CartService
Constructors
constructor
**new CartService**(«destructured»)
Parameters
Properties
__configModule__Record<string, unknown>__container__anyRequired__moduleDeclaration__Record<string, unknown>cartRepository_Repository<Cart> & { findOneWithRelations: Method findOneWithRelations ; findWithRelations: Method findWithRelations }Requiredmanager_EntityManagerRequiredtransactionManager_undefined | EntityManagerRequiredEventsobjectRequiredEvents.CREATEDstringRequiredDefault: "cart.created"
Events.CUSTOMER_UPDATEDstringRequiredDefault: "cart.customer_updated"
Events.UPDATEDstringRequiredDefault: "cart.updated"
Accessors
activeManager_
Protected get**activeManager_**(): EntityManager
Returns
EntityManager
EntityManagerEntityManagerRequiredMethods
addLineItem
**addLineItem**(cartId, lineItem, config?): Promise<void>
Adds a line item to the cart.
Parameters
cartIdstringRequiredconfigobjectRequiredconfig.validateSalesChannelsbooleanRequiredDefault: true
Returns
Promise<void>
PromisePromise<void>RequiredDeprecated
Use addOrUpdateLineItems instead.
addOrUpdateLineItems
**addOrUpdateLineItems**(cartId, lineItems, config?): Promise<void>
Adds or update one or multiple line items to the cart. It also update all existing items in the cart to have has_shipping to false. Finally, the adjustments will be updated.
Parameters
cartIdstringRequiredconfigobjectRequiredconfig.validateSalesChannelsbooleanRequiredDefault: true
Returns
Promise<void>
PromisePromise<void>RequiredaddShippingMethod
**addShippingMethod**(cartOrId, optionId, data?): Promise<[Cart](/references/services/classes/Cart)>
Adds the shipping method to the list of shipping methods associated with the cart. Shipping Methods are the ways that an order is shipped, whereas a Shipping Option is a possible way to ship an order. Shipping Methods may also have additional details in the data field such as an id for a package shop.
Parameters
optionIdstringRequireddataRecord<string, unknown>RequiredDefault: {}
Returns
Promise<Cart>
adjustFreeShipping_
Protected **adjustFreeShipping_**(cart, shouldAdd): Promise<void>
Ensures shipping total on cart is correct in regards to a potential free shipping discount If a free shipping is present, we set shipping methods price to 0 if a free shipping was present, we set shipping methods to original amount
Parameters
shouldAddbooleanRequiredReturns
Promise<void>
PromisePromise<void>RequiredapplyDiscount
**applyDiscount**(cart, discountCode): Promise<void>
Updates the cart's discounts. If discount besides free shipping is already applied, this will be overwritten Throws if discount regions does not include the cart region
Parameters
discountCodestringRequiredReturns
Promise<void>
PromisePromise<void>RequiredapplyDiscounts
**applyDiscounts**(cart, discountCodes): Promise<void>
Updates the cart's discounts. If discount besides free shipping is already applied, this will be overwritten Throws if discount regions does not include the cart region
Parameters
discountCodesstring[]RequiredReturns
Promise<void>
PromisePromise<void>RequiredapplyGiftCard_
Protected **applyGiftCard_**(cart, code): Promise<void>
Parameters
codestringRequiredReturns
Promise<void>
PromisePromise<void>RequiredatomicPhase_
Protected **atomicPhase_**<TypeParameter TResult, TypeParameter TError>(work, isolationOrErrorHandler?, maybeErrorHandlerOrDontFail?): Promise<TResult>
Wraps some work within a transactional block. If the service already has a transaction manager attached this will be reused, otherwise a new transaction manager is created.
TResultobjectRequiredTErrorobjectRequiredParameters
work(transactionManager: EntityManager) => Promise<TResult>RequiredisolationOrErrorHandlerIsolationLevel | (error: TError) => Promise<void | TResult>maybeErrorHandlerOrDontFail(error: TError) => Promise<void | TResult>Returns
Promise<TResult>
PromisePromise<TResult>RequiredauthorizePayment
**authorizePayment**(cartId, context?): Promise<[Cart](/references/services/classes/Cart)>
Authorizes a payment for a cart. Will authorize with chosen payment provider. This will return a payment object, that we will use to update our cart payment with. Additionally, if the payment does not require more or fails, we will set the payment on the cart.
Parameters
cartIdstringRequiredcontextRecord<string, unknown> & { cart_id: string }RequiredReturns
Promise<Cart>
create
**create**(data): Promise<[Cart](/references/services/classes/Cart)>
Creates a cart.
Parameters
Returns
Promise<Cart>
createOrFetchGuestCustomerFromEmail_
Protected **createOrFetchGuestCustomerFromEmail_**(email): Promise<[Customer](/references/services/classes/Customer)>
Creates or fetches a user based on an email.
Parameters
emailstringRequiredReturns
Promise<Customer>
createTaxLines
**createTaxLines**(cartOrId): Promise<void>
Parameters
Returns
Promise<void>
PromisePromise<void>RequireddecorateTotals
**decorateTotals**(cart, totalsConfig?): Promise<[WithRequiredProperty](/references/services/types/WithRequiredProperty)<[Cart](/references/services/classes/Cart), "total">>
Parameters
Default: {}
Returns
Promise<WithRequiredProperty<Cart, "total">>
decorateTotals_
Protected **decorateTotals_**(cart, totalsToSelect, options?): Promise<[Cart](/references/services/classes/Cart)>
Parameters
Returns
Promise<Cart>
Deprecated
Use decorateTotals instead
delete
**delete**(cartId): Promise<[Cart](/references/services/classes/Cart)>
Deletes a cart from the database. Completed carts cannot be deleted.
Parameters
cartIdstringRequiredReturns
Promise<Cart>
deletePaymentSession
**deletePaymentSession**(cartId, providerId): Promise<void>
Removes a payment session from the cart.
Parameters
cartIdstringRequiredproviderIdstringRequiredReturns
Promise<void>
PromisePromise<void>RequireddeleteTaxLines
**deleteTaxLines**(id): Promise<void>
Parameters
idstringRequiredReturns
Promise<void>
PromisePromise<void>RequiredfindCustomShippingOption
**findCustomShippingOption**(cartCustomShippingOptions, optionId): undefined \| [CustomShippingOption](/references/services/classes/CustomShippingOption)
Finds the cart's custom shipping options based on the passed option id. throws if custom options is not empty and no shipping option corresponds to optionId
Parameters
optionIdstringRequiredReturns
undefined | CustomShippingOption
undefined \| CustomShippingOptionundefined | CustomShippingOptiongetTotalsRelations
Private **getTotalsRelations**(config): string[]
Parameters
Returns
string[]
string[]string[]RequiredgetValidatedSalesChannel
Protected **getValidatedSalesChannel**(salesChannelId?): Promise<[SalesChannel](/references/services/classes/SalesChannel)>
Parameters
salesChannelIdstringReturns
Promise<SalesChannel>
list
**list**(selector, config?): Promise<[Cart](/references/services/classes/Cart)[]>
Parameters
Default: {}
Returns
Promise<Cart[]>
onSalesChannelChange
Protected **onSalesChannelChange**(cart, newSalesChannelId): Promise<void>
Remove the cart line item that does not belongs to the newly assigned sales channel
Parameters
newSalesChannelIdstringRequiredReturns
Promise<void>
PromisePromise<void>RequiredrefreshAdjustments_
Protected **refreshAdjustments_**(cart): Promise<void>
Parameters
Returns
Promise<void>
PromisePromise<void>RequiredrefreshPaymentSession
**refreshPaymentSession**(cartId, providerId): Promise<void>
Refreshes a payment session on a cart
Parameters
cartIdstringRequiredproviderIdstringRequiredReturns
Promise<void>
PromisePromise<void>RequiredremoveDiscount
**removeDiscount**(cartId, discountCode): Promise<[Cart](/references/services/classes/Cart)>
Removes a discount based on a discount code.
Parameters
cartIdstringRequireddiscountCodestringRequiredReturns
Promise<Cart>
removeLineItem
**removeLineItem**(cartId, lineItemId): Promise<[Cart](/references/services/classes/Cart)>
Removes a line item from the cart.
Parameters
cartIdstringRequiredlineItemIdstringRequiredReturns
Promise<Cart>
retrieve
**retrieve**(cartId, options?, totalsConfig?): Promise<[Cart](/references/services/classes/Cart)>
Gets a cart by id.
Parameters
cartIdstringRequiredDefault: {}
Default: {}
Returns
Promise<Cart>
retrieveLegacy
Protected **retrieveLegacy**(cartId, options?, totalsConfig?): Promise<[Cart](/references/services/classes/Cart)>
Parameters
cartIdstringRequiredDefault: {}
Default: {}
Returns
Promise<Cart>
Deprecated
retrieveWithTotals
**retrieveWithTotals**(cartId, options?, totalsConfig?): Promise<[WithRequiredProperty](/references/services/types/WithRequiredProperty)<[Cart](/references/services/classes/Cart), "total">>
Parameters
cartIdstringRequiredDefault: {}
Default: {}
Returns
Promise<WithRequiredProperty<Cart, "total">>
setMetadata
**setMetadata**(cartId, key, value): Promise<[Cart](/references/services/classes/Cart)>
Dedicated method to set metadata for a cart. To ensure that plugins does not overwrite each others metadata fields, setMetadata is provided.
Parameters
cartIdstringRequiredkeystringRequiredvaluestring | numberRequiredReturns
Promise<Cart>
setPaymentSession
**setPaymentSession**(cartId, providerId): Promise<void>
Selects a payment session for a cart and creates a payment object in the external provider system
Parameters
cartIdstringRequiredproviderIdstringRequiredReturns
Promise<void>
PromisePromise<void>RequiredsetPaymentSessions
**setPaymentSessions**(cartOrCartId): Promise<void>
Creates, updates and sets payment sessions associated with the cart. The first time the method is called payment sessions will be created for each provider. Additional calls will ensure that payment sessions have correct amounts, currencies, etc. as well as make sure to filter payment sessions that are not available for the cart's region.
Parameters
Returns
Promise<void>
PromisePromise<void>RequiredsetRegion_
Protected **setRegion_**(cart, regionId, countryCode): Promise<void>
Set's the region of a cart.
Parameters
regionIdstringRequiredcountryCodenull | stringRequiredReturns
Promise<void>
PromisePromise<void>RequiredshouldRetryTransaction_
Protected **shouldRetryTransaction_**(err): boolean
Parameters
errRecord<string, unknown> | { code: string }RequiredReturns
boolean
booleanbooleantransformQueryForTotals_
Protected **transformQueryForTotals_**(config): [FindConfig](/references/services/interfaces/FindConfig)<[Cart](/references/services/classes/Cart)> & { totalsToSelect: [TotalField](/references/services/types/TotalField)[] }
Parameters
Returns
FindConfig<Cart> & { totalsToSelect: [TotalField](/references/services/types/TotalField)[] }
FindConfig<Cart> & { totalsToSelect: TotalField[] }FindConfig<Cart> & { totalsToSelect: [TotalField](/references/services/types/TotalField)[] }update
**update**(cartOrId, data): Promise<[Cart](/references/services/classes/Cart)>
Parameters
Returns
Promise<Cart>
updateBillingAddress_
Protected **updateBillingAddress_**(cart, addressOrId, addrRepo): Promise<void>
Updates the cart's billing address.
Parameters
Returns
Promise<void>
PromisePromise<void>RequiredupdateCustomerId_
Protected **updateCustomerId_**(cart, customerId): Promise<void>
Sets the customer id of a cart
Parameters
customerIdstringRequiredReturns
Promise<void>
PromisePromise<void>RequiredupdateLineItem
**updateLineItem**(cartId, lineItemId, update): Promise<[Cart](/references/services/classes/Cart)>
Updates a cart's existing line item.
Parameters
cartIdstringRequiredlineItemIdstringRequiredReturns
Promise<Cart>
updatePaymentSession
**updatePaymentSession**(cartId, update): Promise<[Cart](/references/services/classes/Cart)>
Updates the currently selected payment session.
Parameters
cartIdstringRequiredupdateRecord<string, unknown>RequiredReturns
Promise<Cart>
updateShippingAddress_
Protected **updateShippingAddress_**(cart, addressOrId, addrRepo): Promise<void>
Updates the cart's shipping address.
Parameters
Returns
Promise<void>
PromisePromise<void>RequiredupdateUnitPrices_
Protected **updateUnitPrices_**(cart, regionId?, customer_id?): Promise<void>
Parameters
regionIdstringcustomer_idstringReturns
Promise<void>
PromisePromise<void>RequiredvalidateLineItem
Protected **validateLineItem**(sales_channel_id, lineItem): Promise<boolean>
Check if line item's variant belongs to the cart's sales channel.
Parameters
sales_channel_idobjectRequiredsales_channel_id.sales_channel_idnull | stringRequiredReturns
Promise<boolean>
PromisePromise<boolean>RequiredvalidateLineItemShipping_
Protected **validateLineItemShipping_**(shippingMethods, lineItemShippingProfiledId): boolean
Checks if a given line item has a shipping method that can fulfill it. Returns true if all products in the cart can be fulfilled with the current shipping methods.
Parameters
lineItemShippingProfiledIdstringRequiredReturns
boolean
booleanbooleanwithTransaction
**withTransaction**(transactionManager?): [CartService](/references/services/classes/CartService)
Parameters
transactionManagerEntityManager