Salesforce test class references for commerce cloud
TaxCartCalculatorSampleTest:
https://github.com/forcedotcom/commerce-extensibility/blob/main/commerce/domain/tax/cart/calculator/classes/TaxCartCalculatorSampleTest.cls#L124
// This tax calculator extension class makes a call to an external service to retrieve tax
// information for a cart item and its adjustments and saves it to a cart data transfer object
// (DTO). For a tax calculator extension to be processed by the checkout flow, you must implement the
// CartExtension.TaxCartCalculator class.
//
// You need to have a good reason to use this extention point. For example, if you need to use cart custom fields in your calculation.
// Always check that commercestoretax.TaxService extention point isn't enough for you before extending the TaxCartCalculator.
// Extending commercestoretax.TaxService is required if you deal with subscription products and the TaxCartCalculator must call the commercestoretax.TaxService
// if overriden.
//
// Disclaimer: the code listed here is a sample that hasn't been tested for production use. Always test your code before releasing to production.
public with sharing class TaxCartCalculatorSample extends CartExtension.TaxCartCalculator {
// Disclaimer: the code listed here is a sample that hasn't been tested for production use. Always test your code before releasing to production.
public virtual override void calculate(CartExtension.CartCalculateCalculatorRequest request) {
try {
CartExtension.Cart cart = request.getCart();
CartExtension.CartDeliveryGroupList cartDeliveryGroups = cart.getCartDeliveryGroups();
Integer cartItemIdSeq = 0;
// Cart might have multiple delivery groups, you should handle that
CartExtension.CartDeliveryGroup cartDeliveryGroup = cartDeliveryGroups.get(0);
// Map cart ID to cart item with type Product.
CartExtension.CartItemList cartItemCollection = cart.getCartItems();
// The cartItemCollection contains both products and shipping cart items.
Map<String, CartExtension.CartItem> cartItemById = new Map<String, CartExtension.CartItem>();
Iterator<CartExtension.CartItem> cartItemCollectionIterator = cartItemCollection.iterator();
while (cartItemCollectionIterator.hasNext()) {
CartExtension.CartItem cartItem = cartItemCollectionIterator.next();
String cartItemId = (cartItem.getId() == null) ? String.valueOf(++cartItemIdSeq) : cartItem.getId();
cartItemById.put(cartItemId, cartItem);
}
// Get the tax rates and tax amounts from an external service for all given products
Map<String, TaxData> dataFromExternalService = getTaxesFromStaticResponse(
cartItemById,
CartDeliveryGroup.getDeliverToAddress().getState(),
CartDeliveryGroup.getDeliverToAddress().getCountry(),
cart.getTaxType());
for (String cartItemId : dataFromExternalService.keySet()) {
TaxData taxDetailsToCartId = dataFromExternalService.get(cartItemId);
CartExtension.CartItem cartItem = cartItemById.get(cartItemId);
addTaxesToCartItem(cartItem, taxDetailsToCartId);
}
} catch (Exception e) {
// For testing purposes, this example treats exceptions as user errors, which means they are
// displayed to the buyer user. In production, you probably want exceptions to be admin-type
// errors. In that case, throw the exception here and make sure that a notification system is
// in place to let the admin know that the error occurred. See the README section about error
// handling for details about how to create that notification.
throw new CalloutException('There was a problem with the request.');
}
return;
}
private void addTaxesToCartItem(CartExtension.CartItem cartItem, TaxData taxData) {
if (cartItem.getCartTaxes().size() > 0) {
// this sample always has at most one, your integration might have several
cartItem.getCartTaxes().remove(cartItem.getCartTaxes().get(0));
}
if (cartItem.getCartTaxes() == null || cartItem.getCartTaxes().isEmpty()) {
cartItem.setNetUnitPrice(taxData.getNetUnitPrice());
cartItem.setGrossUnitPrice(taxData.getGrossUnitPrice());
CartExtension.CartTaxList cartTaxCollection = cartItem.getCartTaxes();
CartExtension.CartTax cartTax = new CartExtension.CartTax(
CartExtension.TaxTypeEnum.ESTIMATED,
taxData.getAmount(),
taxData.getTaxName());
cartTax.setTaxRate(String.valueOf(taxData.getRate()));
cartTaxCollection.add(cartTax);
}
}
private Map<String, TaxData> getTaxesFromStaticResponse(Map<String, CartExtension.CartItem> cartItemsMap, String state, String country, CartExtension.TaxLocaleTypeEnum taxType) {
Double taxRate = 0.15;
Map<String, TaxData> taxDetailsFromExternalService = new Map<String, TaxData>();
for (String cartItemIdOrDeliveryGroupId : cartItemsMap.keySet()) {
CartExtension.CartItem cartItem = cartItemsMap.get(cartItemIdOrDeliveryGroupId);
String cartItemId = (cartItem.getId()==null) ? cartItemIdOrDeliveryGroupId : cartItem.getId();
Double amount = cartItem.getTotalPriceAfterAllAdjustments()==null ? cartItem.getTotalListPrice() : cartItem.getTotalPriceAfterAllAdjustments();
Double quantity = cartItem.getQuantity();
Double netUnitPrice = 0.00;
Double grossUnitPrice = 0.00;
// always remember to round correctly for the currency
Double cartItemTax = amount * taxRate;
if(taxType == CartExtension.TaxLocaleTypeEnum.GROSS) {
grossUnitPrice = amount / quantity;
netUnitPrice = (amount - cartItemTax) / quantity;
} else {
grossUnitPrice = (amount + cartItemTax) / quantity;
netUnitPrice = amount / quantity;
}
taxDetailsFromExternalService.put(cartItemId, new TaxData(
(Decimal) taxRate,
(Decimal) cartItemTax,
'GST',
(Decimal) grossUnitPrice,
(Decimal) netUnitPrice));
}
return taxDetailsFromExternalService;
}
// Structure to store the tax data retrieved from external service. This class simplifies our
// ability to access the data when storing it in Salesforce's CartTaxDto.
class TaxData {
private Decimal rate;
private Decimal amount;
private String taxName;
private Decimal grossUnitPrice;
private Decimal netUnitPrice;
public TaxData(
Decimal rateObj,
Decimal amountObj,
String taxNameObj,
Decimal grossUnitPriceObj,
Decimal netUnitPriceObj
) {
rate = rateObj;
amount = amountObj;
taxName = taxNameObj;
grossUnitPrice = grossUnitPriceObj;
netUnitPrice = netUnitPriceObj;
}
public Decimal getRate() {
return rate;
}
public Decimal getAmount() {
return amount;
}
public String getTaxName() {
return taxName;
}
public Decimal getGrossUnitPrice() {
return grossUnitPrice;
}
public Decimal getNetUnitPrice() {
return netUnitPrice;
}
}
}
/**
* @description A Sample unit test for TaxCartCalculatorSample.
*/
@IsTest
public inherited sharing class TaxCartCalculatorSampleTest {
private static final String CART_NAME = 'My Cart';
private static final String ACCOUNT_NAME = 'My Account';
private static final String WEBSTORE_NAME = 'My WebStore';
private static final String DELIVERYGROUP_NAME = 'My Delivery Group';
private static final String CART_ITEM1_NAME = 'My Cart Item 1';
private static final String CART_ITEM2_NAME = 'My Cart Item 2';
private static final String CART_ITEM3_NAME = 'My Cart Item 3';
private static final String SKU1_NAME = 'My SKU 1';
private static final String SKU2_NAME = 'My SKU 2';
private static final String SKU3_NAME = 'My SKU 3';
private static final Decimal ESTIMATED_PRICE = 350.00;
private static final Decimal ACTUAL_PRICE_SKU1 = 100.00;
private static final Decimal ACTUAL_PRICE_SKU2 = 200.00;
private static final Decimal ACTUAL_PRICE_SKU3 = 300.00;
@IsTest
static void testCalculate_withEmptyDeliveryAddress() {
// Arrange
CartExtension.Cart cart = arrangeAndLoadCartWithSpecifiedStatusAndThreeItems(CartExtension.CartStatusEnum.ACTIVE);
CartExtension.CartCalculateCalculatorRequest request = new CartExtension.CartCalculateCalculatorRequest(cart, CartExtension.OptionalBuyerActionDetails.empty());
TaxCartCalculatorSample calculator = new TaxCartCalculatorSample();
// Act
Test.startTest();
calculator.calculate(request);
Test.stopTest();
// Assert
cart = request.getCart();
CartExtension.CartItemList cartItemCollection = cart.getCartItems();
Assert.areEqual(0, cartItemCollection.get(0).getCartTaxes().size());
}
@IsTest
static void testCalculate_withEmptyCartItems() {
// Arrange
CartExtension.Cart cart = arrangeAndLoadCartWithNoCartItems(CartExtension.CartStatusEnum.ACTIVE);
CartExtension.CartDeliveryGroup deliveryGroup = cart.getCartDeliveryGroups().get(0);
deliveryGroup.setDeliverToStreet('newStreet');
deliveryGroup.setDeliverToCity('newCity');
deliveryGroup.setDeliverToState('Washington');
deliveryGroup.setDeliverToCountry('US');
deliveryGroup.setDeliverToPostalCode('987654');
deliveryGroup.setDeliverToLatitude(48.1);
deliveryGroup.setDeliverToLongitude(33.2);
deliveryGroup.setDeliverToGeocodeAccuracy(null);
CartExtension.CartCalculateCalculatorRequest request = new CartExtension.CartCalculateCalculatorRequest(cart, CartExtension.OptionalBuyerActionDetails.empty());
TaxCartCalculatorSample calculator = new TaxCartCalculatorSample();
// Act
Test.startTest();
calculator.calculate(request);
Test.stopTest();
// Assert
cart = request.getCart();
CartExtension.CartItemList cartItemCollection = cart.getCartItems();
Assert.areEqual(0, cartItemCollection.size());
}
@IsTest
static void testCalculate_withZeroPrice() {
// Arrange
CartExtension.Cart cart = arrangeAndLoadCartWithSpecifiedStatus(CartExtension.CartStatusEnum.ACTIVE);
CartExtension.CartDeliveryGroup deliveryGroup = cart.getCartDeliveryGroups().get(0);
deliveryGroup.setDeliverToStreet('newStreet');
deliveryGroup.setDeliverToCity('newCity');
deliveryGroup.setDeliverToState('Washington');
deliveryGroup.setDeliverToCountry('US');
deliveryGroup.setDeliverToPostalCode('987654');
deliveryGroup.setDeliverToLatitude(48.1);
deliveryGroup.setDeliverToLongitude(33.2);
deliveryGroup.setDeliverToGeocodeAccuracy(null);
CartExtension.CartCalculateCalculatorRequest request = new CartExtension.CartCalculateCalculatorRequest(cart, CartExtension.OptionalBuyerActionDetails.empty());
TaxCartCalculatorSample calculator = new TaxCartCalculatorSample();
CartExtension.CartValidationOutputList cartValidationOutputCollection = cart.getCartValidationOutputs();
CartExtension.CartValidationOutput cvo = new CartExtension.CartValidationOutput(
CartExtension.CartValidationOutputTypeEnum.TAXES, CartExtension.CartValidationOutputLevelEnum.ERROR);
cartValidationOutputCollection.add(cvo);
// Act
Test.startTest();
calculator.calculate(request);
Test.stopTest();
// Assert
cart = request.getCart();
CartExtension.CartItemList cartItemCollection = cart.getCartItems();
Assert.areEqual(0, cart.getCartValidationOutputs().size());
Iterator<CartExtension.CartItem> cartItemCollectionIterator = cartItemCollection.iterator();
while (cartItemCollectionIterator.hasNext()) {
CartExtension.CartItem cartItem = cartItemCollectionIterator.next();
Assert.areEqual(0.00, cartItem.getNetUnitPrice());
Assert.areEqual(0.00, cartItem.getGrossUnitPrice());
}
}
@IsTest
static void testCalculate_withDeliveryAddress() {
// Arrange
CartExtension.Cart cart = arrangeAndLoadCartWithSpecifiedStatus(CartExtension.CartStatusEnum.ACTIVE);
CartExtension.CartDeliveryGroup deliveryGroup = cart.getCartDeliveryGroups().get(0);
deliveryGroup.setDeliverToStreet('newStreet');
deliveryGroup.setDeliverToCity('newCity');
deliveryGroup.setDeliverToState('Washington');
deliveryGroup.setDeliverToCountry('US');
deliveryGroup.setDeliverToPostalCode('987654');
deliveryGroup.setDeliverToLatitude(48.1);
deliveryGroup.setDeliverToLongitude(33.2);
deliveryGroup.setDeliverToGeocodeAccuracy(null);
cart.getCartItems().get(0).setTotalPrice(100.00);
CartExtension.CartCalculateCalculatorRequest request = new CartExtension.CartCalculateCalculatorRequest(cart, CartExtension.OptionalBuyerActionDetails.empty());
TaxCartCalculatorSample calculator = new TaxCartCalculatorSample();
// Act
Test.startTest();
calculator.calculate(request);
Test.stopTest();
// Assert
cart = request.getCart();
CartExtension.CartItemList cartItemCollection = cart.getCartItems();
Iterator<CartExtension.CartItem> cartItemCollectionIterator = cartItemCollection.iterator();
while (cartItemCollectionIterator.hasNext()) {
CartExtension.CartItem cartItem = cartItemCollectionIterator.next();
Assert.areEqual(100.00, cartItem.getNetUnitPrice());
Assert.areEqual(108.00, cartItem.getGrossUnitPrice());
}
}
@IsTest
static void testCalculate_withShippingChargeItem() {
// Arrange
CartExtension.Cart cart = arrangeAndLoadCartWithShippingChargeItem(CartExtension.CartStatusEnum.ACTIVE);
CartExtension.CartDeliveryGroup deliveryGroup = cart.getCartDeliveryGroups().get(0);
deliveryGroup.setDeliverToStreet('newStreet');
deliveryGroup.setDeliverToCity('newCity');
deliveryGroup.setDeliverToState('Washington');
deliveryGroup.setDeliverToCountry('US');
deliveryGroup.setDeliverToPostalCode('987654');
deliveryGroup.setDeliverToLatitude(48.1);
deliveryGroup.setDeliverToLongitude(33.2);
deliveryGroup.setDeliverToGeocodeAccuracy(null);
cart.getCartItems().get(0).setTotalPrice(100.00);
CartExtension.CartCalculateCalculatorRequest request = new CartExtension.CartCalculateCalculatorRequest(cart, CartExtension.OptionalBuyerActionDetails.empty());
TaxCartCalculatorSample calculator = new TaxCartCalculatorSample();
// Act
Test.startTest();
calculator.calculate(request);
Test.stopTest();
// Assert
cart = request.getCart();
CartExtension.CartItemList cartItemCollection = cart.getCartItems();
Assert.areEqual(2, cartItemCollection.size());
}
@IsTest
static void testCalculate_withNetPrice() {
// Arrange
CartExtension.Cart cart = arrangeAndLoadCartWithSpecifiedStatus(CartExtension.CartStatusEnum.ACTIVE);
CartExtension.CartDeliveryGroup deliveryGroup = cart.getCartDeliveryGroups().get(0);
deliveryGroup.setDeliverToStreet('newStreet');
deliveryGroup.setDeliverToCity('newCity');
deliveryGroup.setDeliverToState('Washington');
deliveryGroup.setDeliverToCountry('US');
deliveryGroup.setDeliverToPostalCode('987654');
deliveryGroup.setDeliverToLatitude(48.1);
deliveryGroup.setDeliverToLongitude(33.2);
deliveryGroup.setDeliverToGeocodeAccuracy(null);
cart.getCartItems().get(0).setTotalPrice(100.00);
cart.getCartItems().get(0).setNetUnitPrice(200.00);
CartExtension.CartCalculateCalculatorRequest request = new CartExtension.CartCalculateCalculatorRequest(cart, CartExtension.OptionalBuyerActionDetails.empty());
TaxCartCalculatorSample calculator = new TaxCartCalculatorSample();
// Act
Test.startTest();
calculator.calculate(request);
Test.stopTest();
// Assert
cart = request.getCart();
CartExtension.CartItemList cartItemCollection = cart.getCartItems();
Iterator<CartExtension.CartItem> cartItemCollectionIterator = cartItemCollection.iterator();
while (cartItemCollectionIterator.hasNext()) {
CartExtension.CartItem cartItem = cartItemCollectionIterator.next();
Assert.areEqual(100.00, cartItem.getNetUnitPrice());
Assert.areEqual(108.00, cartItem.getGrossUnitPrice());
}
}
@IsTest
static void testCalculate_withPriceAdjustments() {
// Arrange
CartExtension.Cart cart = arrangeAndLoadCartWithAdjustments(CartExtension.CartStatusEnum.ACTIVE);
CartExtension.CartDeliveryGroup deliveryGroup = cart.getCartDeliveryGroups().get(0);
deliveryGroup.setDeliverToStreet('newStreet');
deliveryGroup.setDeliverToCity('newCity');
deliveryGroup.setDeliverToState('Washington');
deliveryGroup.setDeliverToCountry('US');
deliveryGroup.setDeliverToPostalCode('987654');
deliveryGroup.setDeliverToLatitude(48.1);
deliveryGroup.setDeliverToLongitude(33.2);
deliveryGroup.setDeliverToGeocodeAccuracy(null);
CartExtension.CartItemPriceAdjustment newItemPriceAdjustment = new CartExtension.CartItemPriceAdjustment
(CartExtension.CartAdjustmentTargetTypeEnum.ITEM, 1,
CartExtension.PriceAdjustmentSourceEnum.PROMOTION,
CartExtension.AdjustmentTypeEnum.ADJUSTMENT_AMOUNT, -2, '0c8RO0000005qNPYAY');
newItemPriceAdjustment.setPriority(2);
newItemPriceAdjustment.setAdjustmentValue(3);
CartExtension.CartItemPriceAdjustmentList cartItemPriceAdjustments = cart.getCartItems().get(0).getCartItemPriceAdjustments();
cartItemPriceAdjustments.add(newItemPriceAdjustment);
cart.getCartItems().get(0).setTotalPrice(100.00);
cart.getCartItems().get(0).setNetUnitPrice(200.00);
CartExtension.CartCalculateCalculatorRequest request = new CartExtension.CartCalculateCalculatorRequest(cart, CartExtension.OptionalBuyerActionDetails.empty());
TaxCartCalculatorSample calculator = new TaxCartCalculatorSample();
// Act
Test.startTest();
calculator.calculate(request);
Test.stopTest();
// Assert
cart = request.getCart();
CartExtension.CartItemList cartItemCollection = cart.getCartItems();
Iterator<CartExtension.CartItem> cartItemCollectionIterator = cartItemCollection.iterator();
while (cartItemCollectionIterator.hasNext()) {
CartExtension.CartItem cartItem = cartItemCollectionIterator.next();
Assert.areEqual(33.666666666666664, cartItem.getNetUnitPrice());
Assert.areEqual(36.36, cartItem.getGrossUnitPrice());
}
}
/**
* @description Create and return a WebCart with the specified status and 3 items.
*
* @param cartStatus The status of the cart.
*
* @return <<CartExtension.Cart>>
*/
private static ID arrangeCartWithSpecifiedStatus(CartExtension.CartStatusEnum cartStatus) {
Account account = new Account(Name = ACCOUNT_NAME);
insert account;
WebStore webStore = new WebStore(Name = WEBSTORE_NAME, OptionsCartCalculateEnabled = true);
insert webStore;
WebCart webCart = new WebCart(
Name = CART_NAME,
WebStoreId = webStore.Id,
AccountId = account.Id,
Status = cartStatus.name());
insert webCart;
return webCart.Id;
}
private static List<ID> arrangeThreeCartItems(ID cartId) {
CartDeliveryGroup deliveryGroup = new CartDeliveryGroup(Name = DELIVERYGROUP_NAME, CartId = cartId);
insert deliveryGroup;
CartItem cartItem1 = new CartItem(
Name = CART_ITEM1_NAME,
CartId = cartId,
CartDeliveryGroupId = deliveryGroup.Id,
Quantity = 3,
SKU = SKU1_NAME,
Type = CartExtension.SalesItemTypeEnum.PRODUCT.name());
insert cartItem1;
CartItem cartItem2 = new CartItem(
Name = CART_ITEM2_NAME,
CartId = cartId,
CartDeliveryGroupId = deliveryGroup.Id,
Quantity = 3,
SKU = SKU2_NAME,
Type = CartExtension.SalesItemTypeEnum.PRODUCT.name());
insert cartItem2;
CartItem cartItem3 = new CartItem(
Name = CART_ITEM3_NAME,
CartId = cartId,
CartDeliveryGroupId = deliveryGroup.Id,
Quantity = 3,
SKU = SKU3_NAME,
Type = CartExtension.SalesItemTypeEnum.PRODUCT.name());
insert cartItem3;
return new List<ID>{cartItem1.Id, cartItem2.Id, cartItem3.Id};
}
private static CartExtension.Cart arrangeAndLoadCartWithSpecifiedStatusAndThreeItems(CartExtension.CartStatusEnum cartStatus) {
Id cartId = arrangeCartWithSpecifiedStatus(cartStatus);
arrangeThreeCartItems(cartId);
return CartExtension.CartTestUtil.getCart(cartId);
}
private static List<ID> arrangeOneCartItemsWithShippingChargeType(ID cartId) {
CartDeliveryGroup deliveryGroup = new CartDeliveryGroup(Name = DELIVERYGROUP_NAME, CartId = cartId);
insert deliveryGroup;
CartItem cartItem1 = new CartItem(
Name = CART_ITEM1_NAME,
CartId = cartId,
CartDeliveryGroupId = deliveryGroup.Id,
Quantity = 3,
SKU = SKU1_NAME,
Type = CartExtension.SalesItemTypeEnum.CHARGE.name());
insert cartItem1;
CartItem cartItem2 = new CartItem(
Name = CART_ITEM2_NAME,
CartId = cartId,
CartDeliveryGroupId = deliveryGroup.Id,
Quantity = 3,
SKU = SKU2_NAME,
Type = CartExtension.SalesItemTypeEnum.PRODUCT.name());
insert cartItem2;
return new List<ID>{cartItem1.Id, cartItem2.Id};
}
private static CartExtension.Cart arrangeAndLoadCartWithShippingChargeItem(CartExtension.CartStatusEnum cartStatus) {
Id cartId = arrangeCartWithSpecifiedStatus(cartStatus);
arrangeOneCartItemsWithShippingChargeType(cartId);
return CartExtension.CartTestUtil.getCart(cartId);
}
private static List<ID> arrangeOneCartItemWithPriceAdjustments(ID cartId) {
CartDeliveryGroup deliveryGroup = new CartDeliveryGroup(Name = DELIVERYGROUP_NAME, CartId = cartId);
insert deliveryGroup;
CartItem cartItem = new CartItem(
Name = CART_ITEM1_NAME,
CartId = cartId,
CartDeliveryGroupId = deliveryGroup.Id,
Quantity = 3,
SKU = SKU1_NAME,
Type = CartExtension.SalesItemTypeEnum.PRODUCT.name());
insert cartItem;
return new List<ID>{cartItem.Id};
}
private static CartExtension.Cart arrangeAndLoadCartWithAdjustments(CartExtension.CartStatusEnum cartStatus) {
Id cartId = arrangeCartWithSpecifiedStatus(cartStatus);
arrangeOneCartItemWithPriceAdjustments(cartId);
return CartExtension.CartTestUtil.getCart(cartId);
}
private static List<ID> arrangeDeliveryGroup(ID cartId) {
CartDeliveryGroup deliveryGroup = new CartDeliveryGroup(Name = DELIVERYGROUP_NAME, CartId = cartId);
insert deliveryGroup;
return new List<ID>{};
}
private static CartExtension.Cart arrangeAndLoadCartWithNoCartItems(CartExtension.CartStatusEnum cartStatus) {
Id cartId = arrangeCartWithSpecifiedStatus(cartStatus);
arrangeDeliveryGroup(cartId);
return CartExtension.CartTestUtil.getCart(cartId);
}
private static CartExtension.Cart arrangeAndLoadCartWithSpecifiedStatus(CartExtension.CartStatusEnum cartStatus) {
Id cartId = arrangeCartWithSpecifiedStatus(cartStatus);
arrangeCartItemsWithDeliveryAddress(cartId);
return CartExtension.CartTestUtil.getCart(cartId);
}
private static List<ID> arrangeCartItemsWithDeliveryAddress(ID cartId) {
CartDeliveryGroup deliveryGroup = new CartDeliveryGroup(Name = DELIVERYGROUP_NAME, CartId = cartId);
insert deliveryGroup;
CartItem cartItem1 = new CartItem(
Name = CART_ITEM1_NAME,
CartId = cartId,
CartDeliveryGroupId = deliveryGroup.Id,
Quantity = 1,
SKU = SKU1_NAME,
Type = CartExtension.SalesItemTypeEnum.PRODUCT.name());
insert cartItem1;
return new List<ID>{cartItem1.Id};
}
}