{"version":3,"file":"static/js/11.a04a5e31a8428e68ff4b.chunk.js","mappings":"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","sources":["webpack://Msdyn365.Commerce.Online/./src/modules/absolute-checkout-delivery-options/absolute-checkout-delivery-options.props.autogenerated.ts?640a","webpack://Msdyn365.Commerce.Online/./src/modules/absolute-checkout-delivery-options/components/absolute-checkout-delivery-options.description.tsx?575f","webpack://Msdyn365.Commerce.Online/./src/modules/absolute-checkout-delivery-options/components/absolute-checkout-delivery-options.error-message.tsx?2438","webpack://Msdyn365.Commerce.Online/./src/modules/absolute-checkout-delivery-options/components/absolute-checkout-delivery-options.error-title.tsx?5e9e","webpack://Msdyn365.Commerce.Online/./src/modules/absolute-checkout-delivery-options/components/absolute-checkout-delivery-options.radio-button.tsx?a853","webpack://Msdyn365.Commerce.Online/./src/modules/absolute-checkout-delivery-options/absolute-checkout-delivery-options.tsx?1b6e","webpack://Msdyn365.Commerce.Online/./src/modules/absolute-checkout-delivery-options/absolute-checkout-delivery-options.view.tsx?cdde","webpack://Msdyn365.Commerce.Online/./src/modules/absolute-checkout/components/alert.tsx?5647","webpack://Msdyn365.Commerce.Online/./src/modules/absolute-checkout/components/get-invoice-payment-summary.tsx?c6ae","webpack://Msdyn365.Commerce.Online/./src/modules/absolute-checkout/components/get-line-items.tsx?a5d2","webpack://Msdyn365.Commerce.Online/./src/modules/absolute-checkout/components/get-order-summary.tsx?8b1c","webpack://Msdyn365.Commerce.Online/./src/modules/absolute-checkout/components/guided-card.tsx?11a6","webpack://Msdyn365.Commerce.Online/./src/modules/absolute-checkout/components/guided-form.tsx?8cd3","webpack://Msdyn365.Commerce.Online/./src/modules/absolute-checkout/components/place-order-button.tsx?0491","webpack://Msdyn365.Commerce.Online/./src/modules/absolute-checkout/methods/absolute-checkout.ts?9f47","webpack://Msdyn365.Commerce.Online/./src/modules/absolute-checkout/methods/empty-active-cart.ts?fbc6","webpack://Msdyn365.Commerce.Online/./src/modules/absolute-checkout/absolute-checkout.tsx?fdb8","webpack://Msdyn365.Commerce.Online/./src/modules/absolute-checkout/methods/place-order.ts?84a8","webpack://Msdyn365.Commerce.Online/./src/modules/absolute-checkout/absolute-checkout.view.tsx?b102","webpack://Msdyn365.Commerce.Online/./src/modules/absolute-layer-checkout/components/alert.tsx?0cfb","webpack://Msdyn365.Commerce.Online/./src/modules/absolute-layer-checkout/components/get-invoice-payment-summary.tsx?1418","webpack://Msdyn365.Commerce.Online/./src/modules/absolute-layer-checkout/components/get-line-items.tsx?c283","webpack://Msdyn365.Commerce.Online/./src/modules/absolute-layer-checkout/components/price.components.tsx?c8ac","webpack://Msdyn365.Commerce.Online/./src/modules/absolute-layer-checkout/components/order-summary-lineitem.tsx?ac96","webpack://Msdyn365.Commerce.Online/./src/modules/absolute-layer-checkout/components/get-order-summary.tsx?8ba9","webpack://Msdyn365.Commerce.Online/./src/modules/absolute-layer-checkout/components/guided-card.tsx?2f17","webpack://Msdyn365.Commerce.Online/./src/modules/absolute-layer-checkout/components/guided-form.tsx?053b","webpack://Msdyn365.Commerce.Online/./src/modules/absolute-layer-checkout/components/place-order-button.tsx?22f1","webpack://Msdyn365.Commerce.Online/./src/modules/absolute-layer-checkout/methods/absolute-layer-checkout.ts?80fa","webpack://Msdyn365.Commerce.Online/./src/modules/absolute-layer-checkout/methods/empty-active-cart.ts?3ca3","webpack://Msdyn365.Commerce.Online/./src/modules/absolute-layer-checkout/absolute-layer-checkout.tsx?f4b4","webpack://Msdyn365.Commerce.Online/./src/modules/absolute-layer-checkout/methods/place-order.ts?6ef0","webpack://Msdyn365.Commerce.Online/./src/modules/absolute-layer-checkout/absolute-layer-checkout.view.tsx?0c25","webpack://Msdyn365.Commerce.Online/./src/modules/absolute-layer-checkout/components/cartlineitemnick.component.tsx?b736","webpack://Msdyn365.Commerce.Online/./src/modules/arborb2b-cart/components/arborb2b-cart-pick-up-in-store.tsx?3c5c","webpack://Msdyn365.Commerce.Online/./src/modules/arborb2b-cart/components/arborb2b-cart-line-items.tsx?885c","webpack://Msdyn365.Commerce.Online/./src/modules/arborb2b-cart/components/arborb2b-cart-line-groups.tsx?0e05","webpack://Msdyn365.Commerce.Online/./src/modules/arborb2b-cart/utils/get-promotion-in-arborb2b-cart.ts?5086","webpack://Msdyn365.Commerce.Online/./src/modules/arborb2b-cart/arborb2b-cart.tsx?5ad9","webpack://Msdyn365.Commerce.Online/./src/modules/arborb2b-cart/components/arborb2b-cart-line-items-promotion.tsx?bf44","webpack://Msdyn365.Commerce.Online/./src/modules/arborb2b-cart/arborb2b-cart.view.tsx?2ddc","webpack://Msdyn365.Commerce.Online/./src/modules/lli-checkout/components/alert.tsx?5f05","webpack://Msdyn365.Commerce.Online/./src/modules/lli-checkout/components/get-invoice-payment-summary.tsx?a29c","webpack://Msdyn365.Commerce.Online/./src/modules/lli-checkout/components/get-line-items.tsx?4910","webpack://Msdyn365.Commerce.Online/./src/modules/lli-checkout/components/get-order-summary.tsx?41cd","webpack://Msdyn365.Commerce.Online/./src/modules/lli-checkout/components/guided-card.tsx?4453","webpack://Msdyn365.Commerce.Online/./src/modules/lli-checkout/components/guided-form.tsx?bddd","webpack://Msdyn365.Commerce.Online/./src/modules/lli-checkout/components/place-order-button.tsx?e0ec","webpack://Msdyn365.Commerce.Online/./src/modules/lli-checkout/methods/lli-checkout.ts?5125","webpack://Msdyn365.Commerce.Online/./src/modules/lli-checkout/methods/empty-active-cart.ts?1fd1","webpack://Msdyn365.Commerce.Online/./src/modules/lli-checkout/lli-checkout.tsx?182a","webpack://Msdyn365.Commerce.Online/./src/modules/lli-checkout/methods/place-order.ts?c2ac","webpack://Msdyn365.Commerce.Online/./src/modules/lli-checkout/lli-checkout.view.tsx?0ead","webpack://Msdyn365.Commerce.Online/./src/modules/obrien-checkout/components/alert.tsx?894c","webpack://Msdyn365.Commerce.Online/./src/modules/obrien-checkout/components/get-invoice-payment-summary.tsx?0836","webpack://Msdyn365.Commerce.Online/./src/modules/obrien-checkout/components/get-line-items.tsx?0866","webpack://Msdyn365.Commerce.Online/./src/modules/obrien-checkout/components/get-order-summary.tsx?f842","webpack://Msdyn365.Commerce.Online/./src/modules/obrien-checkout/components/guided-card.tsx?3770","webpack://Msdyn365.Commerce.Online/./src/modules/obrien-checkout/components/guided-form.tsx?d98d","webpack://Msdyn365.Commerce.Online/./src/modules/obrien-checkout/components/place-order-button.tsx?381e","webpack://Msdyn365.Commerce.Online/./src/modules/obrien-checkout/methods/obrien-checkout.ts?d74f","webpack://Msdyn365.Commerce.Online/./src/modules/obrien-checkout/methods/empty-active-cart.ts?7563","webpack://Msdyn365.Commerce.Online/./src/modules/obrien-checkout/obrien-checkout.tsx?1474","webpack://Msdyn365.Commerce.Online/./src/modules/obrien-checkout/methods/place-order.ts?a08b","webpack://Msdyn365.Commerce.Online/./src/modules/obrien-checkout/obrien-checkout.view.tsx?6ce7","webpack://Msdyn365.Commerce.Online/./src/validate-cart.ts?cd50","webpack://Msdyn365.Commerce.Online/./src/Common/get-product.ts?0a21","webpack://Msdyn365.Commerce.Online/./src/modules/cart-icon/utils/get-products-in-mini-cart.ts?3c15","webpack://Msdyn365.Commerce.Online/./src/modules/cart-icon/cart-icon.tsx?4ae8","webpack://Msdyn365.Commerce.Online/./src/modules/cart-icon/cart-icon.view.tsx?f9dd","webpack://Msdyn365.Commerce.Online/./src/modules/cart-icon/components/flyout-cart-line-items.tsx?f2c4","webpack://Msdyn365.Commerce.Online/./src/modules/cart/components/cart-line-groups.tsx?f076","webpack://Msdyn365.Commerce.Online/./src/modules/cart/utils/get-promotion-in-cart.ts?4195","webpack://Msdyn365.Commerce.Online/./src/modules/cart/cart.tsx?d4e4","webpack://Msdyn365.Commerce.Online/./src/modules/cart/cart.view.tsx?d8c2","webpack://Msdyn365.Commerce.Online/./src/modules/cart/components/cart-line-items-promotion.tsx?80d9","webpack://Msdyn365.Commerce.Online/./src/modules/cart/components/cart-line-items.tsx?f6b2","webpack://Msdyn365.Commerce.Online/./src/modules/cart/components/cart-pick-up-in-store.tsx?dca8","webpack://Msdyn365.Commerce.Online/../../src/checkout-state-data-action.ts?8344","webpack://Msdyn365.Commerce.Online/../../src/checkout-state.ts?acd8","webpack://Msdyn365.Commerce.Online/../../../src/module-state-manager/module-state.ts?7579","webpack://Msdyn365.Commerce.Online/../../../src/module-state-manager/with-module-state.tsx?61ca","webpack://Msdyn365.Commerce.Online/./src/common/payment-instrument.dropin.style.ts?5102","webpack://Msdyn365.Commerce.Online/./src/common/add-payment-form.tsx?1cf5","webpack://Msdyn365.Commerce.Online/./src/common/error.tsx?096f","webpack://Msdyn365.Commerce.Online/./src/common/iframe.tsx?feca","webpack://Msdyn365.Commerce.Online/./src/common/index.ts?f3e7","webpack://Msdyn365.Commerce.Online/./src/common/payment-instrument-message.ts?53ea","webpack://Msdyn365.Commerce.Online/./src/common/waiting.tsx?8095","webpack://Msdyn365.Commerce.Online/./src/common/with-visibility-observer.tsx?95e4","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-delivery-options/components/checkout-delivery-options.description.tsx?840c","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-delivery-options/components/checkout-delivery-options.error-message.tsx?8ca3","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-delivery-options/components/checkout-delivery-options.error-title.tsx?f7e7","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-delivery-options/components/checkout-delivery-options.radio-button.tsx?9df9","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-delivery-options/checkout-delivery-options.tsx?6764","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-delivery-options/checkout-delivery-options.view.tsx?1e75","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-gift-card/components/get-form.tsx?4540","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-gift-card/components/get-item.tsx?d186","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-gift-card/components/get-list.tsx?a3f3","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-gift-card/components/title.tsx?3b2f","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-gift-card/checkout-gift-card.tsx?8fc3","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-gift-card/checkout-gift-card.view.tsx?d99f","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-loyalty/components/checkout-loyalty-input.tsx?cadb","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-loyalty/components/checkout-loyalty-label.tsx?e02b","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-loyalty/components/checkout-loyalty-text.tsx?895a","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-loyalty/checkout-loyalty.tsx?8b4b","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-loyalty/checkout-loyalty.view.tsx?b79f","webpack://Msdyn365.Commerce.Online/./src/modules/checkout/components/get-invoice-payment-summary.tsx?9549","webpack://Msdyn365.Commerce.Online/./src/modules/checkout/checkout.tsx?6737","webpack://Msdyn365.Commerce.Online/./src/modules/checkout/checkout.view.tsx?e4cc","webpack://Msdyn365.Commerce.Online/./src/modules/checkout/components/alert.tsx?cb1e","webpack://Msdyn365.Commerce.Online/./src/modules/checkout/components/get-line-items.tsx?92f8","webpack://Msdyn365.Commerce.Online/./src/modules/checkout/components/get-order-summary.tsx?4a81","webpack://Msdyn365.Commerce.Online/./src/modules/checkout/components/guided-card.tsx?58e0","webpack://Msdyn365.Commerce.Online/./src/modules/checkout/components/guided-form.tsx?f018","webpack://Msdyn365.Commerce.Online/./src/modules/checkout/components/place-order-button.tsx?9b41","webpack://Msdyn365.Commerce.Online/./src/modules/checkout/methods/checkout.ts?7b6b","webpack://Msdyn365.Commerce.Online/./src/modules/checkout/methods/empty-active-cart.ts?242b","webpack://Msdyn365.Commerce.Online/./src/modules/checkout/methods/place-order.ts?5aa0","webpack://Msdyn365.Commerce.Online/./src/modules/gift-card-balance-check/components/get-form.tsx?e249","webpack://Msdyn365.Commerce.Online/./src/modules/gift-card-balance-check/components/get-item.tsx?4862","webpack://Msdyn365.Commerce.Online/./src/modules/gift-card-balance-check/gift-card-balance-check.tsx?d1f8","webpack://Msdyn365.Commerce.Online/./src/modules/gift-card-balance-check/gift-card-balance-check.view.tsx?a0c9","webpack://Msdyn365.Commerce.Online/./src/modules/header/components/header-preferred-store.tsx?ee9c","webpack://Msdyn365.Commerce.Online/./src/modules/header/components/logo.tsx?f27e","webpack://Msdyn365.Commerce.Online/./src/modules/header/components/nav-icon.tsx?2475","webpack://Msdyn365.Commerce.Online/./src/modules/header/header.tsx?e91a","webpack://Msdyn365.Commerce.Online/./src/modules/header/header.view.tsx?cf0f","webpack://Msdyn365.Commerce.Online/./src/invoice-summary-lineitem.tsx?5f61","webpack://Msdyn365.Commerce.Online/./src/modules/media-gallery/utils/get-valid-product-images.ts?a364","webpack://Msdyn365.Commerce.Online/./src/modules/media-gallery/media-gallery.tsx?24d7","webpack://Msdyn365.Commerce.Online/./src/modules/media-gallery/media-gallery.view.tsx?5061","webpack://Msdyn365.Commerce.Online/./src/order-summary-lineitem.tsx?8a98","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/components/product.component.tsx?fd23","webpack://Msdyn365.Commerce.Online/./src/modules/header/utilities/mock-utilities.ts?d017","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/header.view.tsx?9bd3","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/search-result-container.view.tsx?6e86"],"sourcesContent":["/**\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. See License.txt in the project root for license information.\r\n * IAbsoluteCheckoutDeliveryOptions contentModule Interface Properties\r\n * THIS FILE IS AUTO-GENERATED - MANUAL MODIFICATIONS WILL BE LOST\r\n */\r\n\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\n\r\nexport const enum filterDeliveryModeOption {\r\n none = 'none',\r\n filterOutNonCarrierDeliveryMode = 'filterOutNonCarrierDeliveryMode'\r\n}\r\n\r\nexport const enum useDefaultDeliveryOption {\r\n none = 'none',\r\n displaySelectedDeliveryOption = 'displaySelectedDeliveryOption',\r\n notDisplaySelectedDeliveryOption = 'notDisplaySelectedDeliveryOption'\r\n}\r\n\r\nexport interface IAbsoluteCheckoutDeliveryOptionsConfig extends Msdyn365.IModuleConfig {\r\n heading?: IHeadingData;\r\n filterDeliveryModeOption?: filterDeliveryModeOption;\r\n useDefaultDeliveryOption?: useDefaultDeliveryOption;\r\n className?: string;\r\n shipContent?: Msdyn365.RichText;\r\n}\r\n\r\nexport interface IAbsoluteCheckoutDeliveryOptionsResources {\r\n deliveryOptionsNotFound: string;\r\n genericErrorMessage: string;\r\n errorMessageTitle: string;\r\n ariaLabelText: string;\r\n priceFree: string;\r\n saveBtnLabel: string;\r\n editBtnLabel: string;\r\n cancelBtnLabel: string;\r\n deliveryOptionAriaLabel: string;\r\n}\r\n\r\nexport const enum HeadingTag {\r\n h1 = 'h1',\r\n h2 = 'h2',\r\n h3 = 'h3',\r\n h4 = 'h4',\r\n h5 = 'h5',\r\n h6 = 'h6'\r\n}\r\n\r\nexport interface IHeadingData {\r\n text: string;\r\n tag?: HeadingTag;\r\n}\r\n\r\nexport interface IAbsoluteCheckoutDeliveryOptionsProps extends Msdyn365.IModule {\r\n resources: IAbsoluteCheckoutDeliveryOptionsResources;\r\n config: IAbsoluteCheckoutDeliveryOptionsConfig;\r\n}\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport * as React from 'react';\r\n\r\nexport interface ICheckoutDeliveryOptionsDescriptionProps {\r\n description?: string;\r\n}\r\n\r\n/**\r\n * AddPaymentForm SFC.\r\n * @param root0\r\n * @param root0.description\r\n * @extends {React.FC}\r\n */\r\nconst CheckoutDeliveryOptionsDescription: React.FC = ({\r\n description\r\n}) => {\r\n if (!description) {\r\n return null;\r\n }\r\n\r\n return (\r\n {description}\r\n );\r\n};\r\n\r\nexport default CheckoutDeliveryOptionsDescription;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport * as React from 'react';\r\n\r\nexport interface ICheckoutDeliveryOptionsErrorMessageProps {\r\n message?: string;\r\n}\r\n\r\n/**\r\n * AddPaymentForm SFC.\r\n * @param root0\r\n * @param root0.message\r\n * @extends {React.FC}\r\n */\r\nconst CheckoutDeliveryOptionsErrorMessage: React.FC = ({\r\n message\r\n}) => {\r\n if (!message) {\r\n return null;\r\n }\r\n\r\n return (\r\n

\r\n {message}\r\n

\r\n );\r\n\r\n};\r\n\r\nexport default CheckoutDeliveryOptionsErrorMessage;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport * as React from 'react';\r\n\r\nexport interface ICheckoutDeliveryOptionsErrorTitleProps {\r\n title?: string;\r\n}\r\n\r\n/**\r\n * AddPaymentForm SFC.\r\n * @param root0\r\n * @param root0.title\r\n * @extends {React.FC}\r\n */\r\nconst CheckoutDeliveryOptionsErrorTitle: React.FC = ({\r\n title\r\n}) => {\r\n if (!title) {\r\n return null;\r\n }\r\n\r\n return (\r\n

\r\n {title}\r\n

\r\n );\r\n\r\n};\r\n\r\nexport default CheckoutDeliveryOptionsErrorTitle;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent, TelemetryConstant } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nexport interface ICheckoutDeliveryOptionsRadioButtonProps {\r\n isChecked: boolean;\r\n value?: string;\r\n ariaSetSize: number;\r\n ariaPosInSet: number;\r\n ariaLabel?: string;\r\n telemetryContent?: ITelemetryContent;\r\n onChange(event: React.ChangeEvent): void;\r\n}\r\n\r\n/**\r\n * AddPaymentForm SFC.\r\n * @param root0\r\n * @param root0.isChecked\r\n * @param root0.value\r\n * @param root0.ariaSetSize\r\n * @param root0.ariaPosInSet\r\n * @param root0.ariaLabel\r\n * @param root0.telemetryContent\r\n * @param root0.onChange\r\n * @extends {React.FC}\r\n */\r\nconst CheckoutDeliveryOptionsRadioButton: React.FC = ({\r\n isChecked,\r\n value,\r\n ariaSetSize,\r\n ariaPosInSet,\r\n ariaLabel,\r\n telemetryContent,\r\n onChange\r\n}) => {\r\n if (!value) {\r\n return null;\r\n }\r\n\r\n const payLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.DeliveryOptions);\r\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\nexport default CheckoutDeliveryOptionsRadioButton;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport * as MsDyn365 from '@msdyn365-commerce/core';\r\nimport { PriceComponent } from '@msdyn365-commerce/components';\r\nimport { ICheckoutState } from '@msdyn365-commerce/global-state';\r\nimport { Cart, ChannelDeliveryOptionConfiguration, FilterDeliveryModeOption } from '@msdyn365-commerce/retail-proxy';\r\nimport {\r\n getDeliveryOptionsAsync\r\n} from '@msdyn365-commerce/retail-proxy/dist/DataActions/CartsDataActions.g';\r\nimport {\r\n Address, CartLine, DeliveryOption\r\n} from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\r\nimport { IModuleStateProps, withModuleState } from '@msdyn365-commerce-modules/checkout-utilities';\r\nimport { Button, getTelemetryObject, IModuleProps, INodeProps, ITelemetryContent, Waiting } from '@msdyn365-commerce-modules/utilities';\r\nimport classname from 'classnames';\r\nimport get from 'lodash/get';\r\nimport { action, observable, reaction } from 'mobx';\r\nimport { observer } from 'mobx-react';\r\nimport * as React from 'react';\r\n\r\nimport { IAbsoluteCheckoutDeliveryOptionsData } from './absolute-checkout-delivery-options.data';\r\nimport { filterDeliveryModeOption, IAbsoluteCheckoutDeliveryOptionsProps, useDefaultDeliveryOption } from './absolute-checkout-delivery-options.props.autogenerated';\r\nimport DescriptionComponent from './components/absolute-checkout-delivery-options.description';\r\nimport ErrorMessageComponent from './components/absolute-checkout-delivery-options.error-message';\r\nimport ErrorTitleComponent from './components/absolute-checkout-delivery-options.error-title';\r\nimport RadioButtonComponent from './components/absolute-checkout-delivery-options.radio-button';\r\n\r\nexport interface ICheckoutDeliveryOptionsModuleProps extends IAbsoluteCheckoutDeliveryOptionsProps, IModuleStateProps { }\r\n\r\nexport interface ICheckoutDeliveryOption {\r\n DeliveryOption: INodeProps;\r\n description?: React.ReactNode;\r\n price?: React.ReactNode;\r\n}\r\n\r\nexport interface ICheckoutDeliveryOptionEdit extends ICheckoutDeliveryOption {\r\n code: string;\r\n radioButton?: React.ReactNode;\r\n}\r\n\r\nexport interface ICheckoutDeliveryOptionsList {\r\n DeliveryOptionsList: INodeProps;\r\n list: ICheckoutDeliveryOptionEdit[];\r\n}\r\n\r\nexport interface ICheckoutDeliveryOptionsError {\r\n Error: INodeProps;\r\n title: React.ReactNode;\r\n message: React.ReactNode;\r\n}\r\n\r\nexport interface ICheckoutDeliveryOptionsViewState {\r\n isLoading: boolean;\r\n isError: boolean;\r\n isShowList: boolean;\r\n isShowSelected: boolean;\r\n isShowSaveButton: boolean;\r\n isShowEditButton: boolean;\r\n isShowCancelButton: boolean;\r\n}\r\n\r\nexport interface ICheckoutDeliveryOptionsViewProps extends IAbsoluteCheckoutDeliveryOptionsProps<{}> {\r\n CheckoutDeliveryOptions: IModuleProps;\r\n selectedItemId: string;\r\n deliveryOptionsData: DeliveryOption[];\r\n isLoading: boolean;\r\n errorMessageData: string;\r\n viewState: ICheckoutDeliveryOptionsViewState;\r\n deliveryOptions?: ICheckoutDeliveryOptionsList;\r\n deliveryOptionSelected?: ICheckoutDeliveryOption;\r\n errorMessage?: ICheckoutDeliveryOptionsError;\r\n waiting?: React.ReactNode;\r\n saveButton?: React.ReactNode;\r\n editButton?: React.ReactNode;\r\n cancelButton?: React.ReactNode;\r\n onDeliveryOptionChange(event: React.ChangeEvent): void;\r\n onSave(): void;\r\n onEdit(): void;\r\n onCancel(): void;\r\n shipContent?: string;\r\n}\r\n\r\n/**\r\n *\r\n * CheckoutDeliveryOptions component.\r\n * @extends {React.Component>}\r\n */\r\n// @ts-expect-error\r\n@withModuleState\r\n@observer\r\nclass CheckoutDeliveryOptions extends React.Component {\r\n @observable private selectedItemId: string = '';\r\n\r\n @observable private deliveryOptions: DeliveryOption[] = [];\r\n\r\n @observable private isLoading: boolean = false;\r\n\r\n @observable private errorMessage?: string;\r\n\r\n private cartDeliveryMode?: string;\r\n\r\n private retailMultiplePickUpOptionEnabled?: boolean = false;\r\n\r\n private channelDeliveryOptionConfig?: ChannelDeliveryOptionConfiguration;\r\n\r\n private readonly telemetryContent?: ITelemetryContent;\r\n\r\n private readonly isSelectDefaultOptionEnabled?: boolean;\r\n\r\n constructor(props: ICheckoutDeliveryOptionsModuleProps) {\r\n super(props);\r\n console.log(\"MYDEBUG-ACDO: constructor() called\");\r\n this.telemetryContent = getTelemetryObject(this.props.context.request.telemetryPageName!, this.props.friendlyName, this.props.telemetry);\r\n this.isSelectDefaultOptionEnabled = this.props.config.useDefaultDeliveryOption &&\r\n this.props.config.useDefaultDeliveryOption !== useDefaultDeliveryOption.none;\r\n }\r\n\r\n public async componentDidMount(): Promise {\r\n console.log(\"MYDEBUG-ACDO: componentDidMount() called\");\r\n this.props.data.checkout.then(async () => {\r\n await this.init();\r\n });\r\n\r\n reaction(\r\n () => this.props.data.checkout.result && this.props.data.checkout.result.shippingAddress,\r\n async () => {\r\n await this.loadDeliveryOptions();\r\n this.props.moduleState.setIsCancellable(false);\r\n\r\n if (this.props.data.checkout.result?.shouldEnableSinglePaymentAuthorizationCheckout) {\r\n await this.props.data.checkout.result.updateShouldCollapsePaymentSection({ newShouldCollapsePaymentSection: true });\r\n }\r\n }\r\n );\r\n }\r\n\r\n public shouldComponentUpdate(nextProps: ICheckoutDeliveryOptionsModuleProps,\r\n nextState: ICheckoutDeliveryOptionsViewState): boolean {\r\n console.log(\"MYDEBUG-ACDO: shouldComponentUpdate() called\");\r\n if (this.state === nextState && this.props.data === nextProps.data) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n console.log(\"MYDEBUG-ACDO: render() called\");\r\n if (!this.canShip()) {\r\n this.props.context.telemetry.error('Checkout delivery options content is empty, module wont render');\r\n return null;\r\n }\r\n\r\n const { shipContent } = this.props.config;\r\n\r\n const ShipContent = shipContent && (\r\n ${shipContent}

`}\r\n editProps={{ onEdit: this.handleParagraphChange1, requestContext: this.props.context.request }}\r\n />\r\n );\r\n\r\n const {\r\n moduleState: { isReady, isUpdating, hasError }\r\n } = this.props;\r\n const isError = !this.isLoading && hasError;\r\n const isShowList = !this.isLoading && !hasError && isUpdating && !this.isSelectDefaultOptionEnabled;\r\n const isShowSelected = !this.isLoading && !hasError && isReady;\r\n const multiplePickupStoreSwitchName = 'Dynamics.AX.Application.RetailMultiplePickupDeliveryModeFeature';\r\n this.channelDeliveryOptionConfig = this.props.data.channelDeliveryOptionConfig?.result;\r\n this.retailMultiplePickUpOptionEnabled = this.props.data.featureState?.result\r\n ?.find(feature => feature.Name === multiplePickupStoreSwitchName)?.IsEnabled;\r\n\r\n const { deliveryOptionAriaLabel } = this.props.resources;\r\n\r\n const viewProps = {\r\n ...this.props,\r\n onDeliveryOptionChange: this.onDeliveryOptionChange,\r\n selectedItemId: this.selectedItemId,\r\n deliveryOptionsData: this.deliveryOptions,\r\n isLoading: this.isLoading,\r\n errorMessageData: this.errorMessage,\r\n viewState: {\r\n isLoading: this.isLoading,\r\n isError,\r\n isShowList,\r\n isShowSelected,\r\n isShowSaveButton: isShowList && !this.props.moduleState.hasExternalSubmitGroup,\r\n isShowEditButton: isShowSelected && !this.props.moduleState.hasExternalSubmitGroup,\r\n isShowCancelButton: isShowList && !this.props.moduleState.hasExternalSubmitGroup && !!this.getSavedDeliveryOption()\r\n },\r\n CheckoutDeliveryOptions: {\r\n moduleProps: this.props,\r\n className: classname('ms-checkout-delivery-options', this.props.config.className)\r\n },\r\n deliveryOptions: {\r\n DeliveryOptionsList: {\r\n className: 'ms-checkout-delivery-options__list',\r\n role: 'listbox',\r\n 'aria-label': deliveryOptionAriaLabel },\r\n list: this.getDeliveryOptionList()\r\n },\r\n deliveryOptionSelected: this.getDeliveryOptionSelected(),\r\n errorMessage: this.getErrorMessage(),\r\n waiting: ,\r\n saveButton: this.getSaveButton(),\r\n editButton: this.getEditButton(),\r\n cancelButton: this.getCancelButton(),\r\n onSave: this.onSave,\r\n onEdit: this.onEdit,\r\n onCancel: this.onCancel,\r\n shipContent: ShipContent\r\n };\r\n\r\n return this.props.renderView(viewProps) as React.ReactElement;\r\n }\r\n\r\n public handleParagraphChange1 = (event: MsDyn365.ContentEditableEvent) => this.props.config.shipContent! = event.target.value;\r\n\r\n @action\r\n private readonly init = async (): Promise => {\r\n console.log(\"MYDEBUG-ACDO: @action init() called\");\r\n this.props.moduleState.init({\r\n onEdit: this.isSelectDefaultOptionEnabled ? undefined : this.onEdit,\r\n onCancel: this.isSelectDefaultOptionEnabled ? undefined : this.onCancel,\r\n onSubmit: this.isSelectDefaultOptionEnabled ? undefined : this.onSubmit,\r\n status: (!(this.props.config.useDefaultDeliveryOption === useDefaultDeliveryOption.notDisplaySelectedDeliveryOption) &&\r\n this.canShip()) ? 'updating' : 'disabled'\r\n });\r\n\r\n this.cartDeliveryMode = this.getSavedDeliveryOption();\r\n\r\n await this.loadDeliveryOptions();\r\n };\r\n\r\n private readonly canShip = (): boolean => {\r\n console.log(\"MYDEBUG-ACDO: onShip() called\");\r\n const hasInvoice = this.props.data.checkout.result?.checkoutCart.hasInvoiceLine;\r\n return !hasInvoice && this.getCartLinesForShipping().length > 0;\r\n };\r\n\r\n private readonly isDeliveryModeExists = (deliveryMode: string | undefined): boolean => {\r\n console.log(\"MYDEBUG-ACDO: isDeliveryModeExists() called\");\r\n if (deliveryMode) {\r\n if (this.deliveryOptions.find(deliveryOption => deliveryOption.Code === deliveryMode)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n };\r\n\r\n private readonly getDeliveryOptionSelected = (): ICheckoutDeliveryOption | null => {\r\n console.log(\"MYDEBUG-ACDO: getDeliveryOptionSelected() called\");\r\n const selectedItem = this.deliveryOptions.find(deliveryOption => deliveryOption.Code === this.selectedItemId);\r\n if (!selectedItem) {\r\n this.props.context.telemetry.error('Checkout delivery options content is empty, module wont render');\r\n return null;\r\n }\r\n\r\n const { id, typeName, context } = this.props;\r\n const { priceFree } = this.props.resources;\r\n const price = get(selectedItem, 'ShippingChargeAmount', 0);\r\n\r\n return {\r\n DeliveryOption: { className: 'ms-checkout-delivery-options__option-selected' },\r\n description: ,\r\n price: \r\n };\r\n };\r\n\r\n private readonly getErrorMessage = (): ICheckoutDeliveryOptionsError => {\r\n console.log(\"MYDEBUG-ACDO: getErrorMessage() called\");\r\n const { errorMessageTitle } = this.props.resources;\r\n return {\r\n // @ts-expect-error\r\n CheckoutDeliveryOptionsError: { tag: 'span', className: 'ms-address-form__error', role: 'alert', 'aria-live': 'assertive' },\r\n title: ,\r\n message: \r\n };\r\n };\r\n\r\n private readonly getDeliveryOptionList = (): ICheckoutDeliveryOptionEdit[] => {\r\n console.log(\"MYDEBUG-ACDO: getDeliveryOptionList() called\");\r\n const count = this.deliveryOptions.length;\r\n const { priceFree } = this.props.resources;\r\n const { id, typeName, context } = this.props;\r\n\r\n return this.deliveryOptions.map((deliveryOption: DeliveryOption, index: number) => {\r\n return {\r\n DeliveryOption: { className: 'ms-checkout-delivery-options__option', role: 'option' },\r\n code: deliveryOption.Code || '',\r\n radioButton: (\r\n \r\n ),\r\n description: (\r\n \r\n ),\r\n price: (\r\n \r\n )\r\n };\r\n });\r\n };\r\n\r\n private readonly getSaveButton = (): React.ReactNode => {\r\n console.log(\"MYDEBUG-ACDO: getSaveButton() called\");\r\n const { saveBtnLabel = 'Save' } = this.props.resources;\r\n return (\r\n \r\n {saveBtnLabel}\r\n \r\n );\r\n };\r\n\r\n private readonly getEditButton = (): React.ReactNode => {\r\n console.log(\"MYDEBUG-ACDO: getEditButton() called\");\r\n const { editBtnLabel = 'Change' } = this.props.resources;\r\n return (\r\n \r\n {editBtnLabel}\r\n \r\n );\r\n };\r\n\r\n private readonly getCancelButton = (): React.ReactNode => {\r\n console.log(\"MYDEBUG-ACDO: getCancelButton() called\");\r\n const { cancelBtnLabel = 'Cancel' } = this.props.resources;\r\n return (\r\n \r\n {cancelBtnLabel}\r\n \r\n );\r\n };\r\n\r\n private readonly setError = (errorMessage: string): void => {\r\n console.log(\"MYDEBUG-ACDO: setError() called for \" + errorMessage);\r\n this.props.telemetry.error(errorMessage);\r\n this.props.moduleState.setHasError(true);\r\n this.props.moduleState.onUpdating();\r\n this.errorMessage = errorMessage;\r\n };\r\n\r\n private readonly clearError = (): void => {\r\n console.log(\"MYDEBUG-ACDO: clearError() called\");\r\n this.props.moduleState.setHasError(false);\r\n this.errorMessage = undefined;\r\n };\r\n\r\n private readonly onSave = async (): Promise => {\r\n console.log(\"MYDEBUG-ACDO: onSave() called\");\r\n await this.onSubmit();\r\n };\r\n\r\n private readonly onEdit = async (): Promise => {\r\n console.log(\"MYDEBUG-ACDO: onEdit() called\");\r\n this.onUpdating();\r\n\r\n if (this.props.data.checkout.result?.shouldEnableSinglePaymentAuthorizationCheckout) {\r\n await this.props.data.checkout.result.updateShouldCollapsePaymentSection({ newShouldCollapsePaymentSection: true });\r\n }\r\n };\r\n\r\n private readonly onSubmit = async (): Promise => {\r\n console.log(\"MYDEBUG-ACDO: onSubmit() called\");\r\n await this.updateCartDeliverySpecification(this.selectedItemId);\r\n\r\n if (this.props.data.checkout.result?.shouldEnableSinglePaymentAuthorizationCheckout) {\r\n await this.props.data.checkout.result.updateShouldCollapsePaymentSection({ newShouldCollapsePaymentSection: false });\r\n }\r\n };\r\n\r\n private readonly onCancel = (): void => {\r\n console.log(\"MYDEBUG-ACDO: onCancel() called\");\r\n // Reset to the saved value\r\n const savedDeliveryOption = this.getSavedDeliveryOption();\r\n if (savedDeliveryOption) {\r\n this.selectedItemId = savedDeliveryOption;\r\n this.onReady();\r\n } else {\r\n this.onUpdating();\r\n }\r\n };\r\n\r\n private readonly getSavedDeliveryOption = (): string | undefined => {\r\n console.log(\"MYDEBUG-ACDO: getSavedDeliveryOption() called\");\r\n const cartLinesForShipping = this.getCartLinesForShipping();\r\n return cartLinesForShipping[0] && cartLinesForShipping[0].DeliveryMode;\r\n };\r\n\r\n private readonly updateCartDeliverySpecification = async (deliveryModeId: string): Promise => {\r\n console.log(\"MYDEBUG-ACDO: updateCartDelivrySpecification() called\");\r\n if (deliveryModeId.trim() === '') {\r\n return;\r\n }\r\n\r\n const { resources } = this.props;\r\n const checkoutState = this.props.data.checkout.result as ICheckoutState;\r\n const updateCartDeliverySpecificationInput = {\r\n deliveryModeId,\r\n shippingAddress: checkoutState.shippingAddress,\r\n channelDeliveryOptionConfig: this.retailMultiplePickUpOptionEnabled ? this.channelDeliveryOptionConfig : undefined\r\n };\r\n\r\n this.clearError();\r\n this.onPending();\r\n\r\n await checkoutState.checkoutCart.updateCartDeliverySpecification(updateCartDeliverySpecificationInput)\r\n .then((response) => {\r\n if (response.status === 'FAILED') {\r\n this.setError(resources.genericErrorMessage);\r\n } else {\r\n this.onReady();\r\n this.props.moduleState.setIsCancellable(true);\r\n }\r\n })\r\n .catch(\r\n () => {\r\n this.setError(resources.genericErrorMessage);\r\n }\r\n );\r\n };\r\n\r\n private readonly getCartLinesForShipping = (): CartLine[] => {\r\n console.log(\"MYDEBUG-ACDO: getCartLinesForShipping() called\");\r\n const { request } = this.props.context;\r\n const pickupDeliveryModeCode = request && request.channel && request.channel.PickupDeliveryModeCode;\r\n const emailDeliveryModeCode = request && request.channel && request.channel.EmailDeliveryModeCode;\r\n\r\n return this.retailMultiplePickUpOptionEnabled ? ((this.props.data.checkout.result && this.props.data.checkout.result.checkoutCart.cart.CartLines) || []).filter(\r\n cartLine => ((cartLine.DeliveryMode && cartLine.DeliveryMode !== '') ? (cartLine.DeliveryMode !== this.channelDeliveryOptionConfig?.PickupDeliveryModeCodes?.find(deliveryMode => deliveryMode === cartLine.DeliveryMode) && cartLine.DeliveryMode !== emailDeliveryModeCode) : cartLine)\r\n ) : ((this.props.data.checkout.result && this.props.data.checkout.result.checkoutCart.cart.CartLines) || []).filter(\r\n cartLine => ((cartLine.DeliveryMode && cartLine.DeliveryMode !== '') ? (cartLine.DeliveryMode !== pickupDeliveryModeCode && cartLine.DeliveryMode !== emailDeliveryModeCode) : cartLine)\r\n );\r\n };\r\n\r\n private readonly getDeliveryOptions = async (shippingAddress: Address): Promise => {\r\n console.log(\"MYDEBUG-ACDO: getDeliveryOptions() called\");\r\n if (!this.props.data.checkout.result) {\r\n return;\r\n }\r\n\r\n const { context, resources, config } = this.props;\r\n const cartState = this.props.data.checkout.result?.checkoutCart;\r\n const cartId = (cartState.cart as Cart).Id;\r\n\r\n if (context) {\r\n this.isLoading = true;\r\n this.deliveryOptions = [];\r\n this.selectedItemId = '';\r\n this.clearError();\r\n\r\n try {\r\n\r\n let originalDeliveryMode: string = '';\r\n const shippingCartLines = this.getCartLinesForShipping();\r\n const hasShippingDeliveryLines = (shippingCartLines && shippingCartLines.length > 0 && shippingCartLines[0].DeliveryMode);\r\n if (hasShippingDeliveryLines) {\r\n\r\n // First store the delivery mode, so that we can restore the shipping information.\r\n originalDeliveryMode = shippingCartLines[0].DeliveryMode || '';\r\n\r\n // Clear the delivery information on retail server, so GetDeliveryOptions charge calculation works correctly\r\n const cart = cartState.cart;\r\n await cartState.clearCartLinesDeliveryInformation({ cart });\r\n }\r\n\r\n // TODO: Check if we can move this getDeliveryOptions to checkout state\r\n let deliveryOptionFilter: FilterDeliveryModeOption;\r\n switch (config.filterDeliveryModeOption) {\r\n case filterDeliveryModeOption.none:\r\n deliveryOptionFilter = FilterDeliveryModeOption.None;\r\n break;\r\n case filterDeliveryModeOption.filterOutNonCarrierDeliveryMode:\r\n deliveryOptionFilter = FilterDeliveryModeOption.FilterOutNonCarrierDeliveryMode;\r\n break;\r\n default:\r\n deliveryOptionFilter = FilterDeliveryModeOption.FilterOutNonCarrierDeliveryMode;\r\n }\r\n const response = await getDeliveryOptionsAsync({ callerContext: context.actionContext, queryResultSettings: {} }, cartId, shippingAddress, [], deliveryOptionFilter, true);\r\n\r\n if (hasShippingDeliveryLines) {\r\n await this.updateCartDeliverySpecification(originalDeliveryMode);\r\n }\r\n\r\n if (response && response.length > 0) {\r\n this.deliveryOptions = response;\r\n }\r\n } catch {\r\n this.setError(resources.genericErrorMessage);\r\n }\r\n\r\n if (this.deliveryOptions.length === 0) {\r\n this.setError(resources.deliveryOptionsNotFound);\r\n } else if (this.cartDeliveryMode && this.isDeliveryModeExists(this.cartDeliveryMode)) {\r\n this.selectedItemId = this.cartDeliveryMode;\r\n this.cartDeliveryMode = undefined;\r\n this.onReady();\r\n\r\n // For new checkout flow, when this module is ready, update the flag to call GetCardPaymentAcceptPoint with amountDue.\r\n if (this.props.data.checkout.result.shouldEnableSinglePaymentAuthorizationCheckout) {\r\n await this.props.data.checkout.result.updateShouldCollapsePaymentSection({ newShouldCollapsePaymentSection: false });\r\n }\r\n } else {\r\n this.onUpdating();\r\n this.selectedItemId = this.deliveryOptions.length > 0 ? this.deliveryOptions[0].Code || '' : ''; // By default, select first delivery\r\n }\r\n\r\n this.isLoading = false;\r\n }\r\n };\r\n\r\n private readonly loadDeliveryOptions = async (): Promise => {\r\n console.log(\"MYDEBUG-ACDO: loadDeliveryOptions() called\");\r\n const shippingAddress = this.props.data.checkout.result && this.props.data.checkout.result.shippingAddress;\r\n\r\n if (this.canShip() && shippingAddress) {\r\n await this.getDeliveryOptions(shippingAddress);\r\n\r\n if (this.isSelectDefaultOptionEnabled) {\r\n this.onSubmit();\r\n }\r\n }\r\n };\r\n\r\n private readonly onDeliveryOptionChange = (event: React.ChangeEvent) => {\r\n console.log(\"MYDEBUG-ACDO: onDeliveryOptionChange() called\");\r\n const deliveryModeId = event.currentTarget.value;\r\n this.selectedItemId = deliveryModeId;\r\n };\r\n\r\n private readonly onReady = () => {\r\n console.log(\"MYDEBUG-ACDO: onReady() called\");\r\n if (!(this.props.config.useDefaultDeliveryOption === useDefaultDeliveryOption.notDisplaySelectedDeliveryOption)) {\r\n this.props.moduleState.onReady();\r\n }\r\n };\r\n\r\n private readonly onUpdating = () => {\r\n console.log(\"MYDEBUG-ACDO: onUpdating() called\");\r\n if (!(this.props.config.useDefaultDeliveryOption === useDefaultDeliveryOption.notDisplaySelectedDeliveryOption)) {\r\n this.props.moduleState.onUpdating();\r\n }\r\n };\r\n\r\n private readonly onPending = () => {\r\n console.log(\"MYDEBUG-ACDO: onPending() called\");\r\n if (!this.isSelectDefaultOptionEnabled) {\r\n this.props.moduleState.onPending();\r\n }\r\n };\r\n}\r\n\r\nexport default CheckoutDeliveryOptions;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { ICheckoutDeliveryOption, ICheckoutDeliveryOptionEdit, ICheckoutDeliveryOptionsError, ICheckoutDeliveryOptionsList, ICheckoutDeliveryOptionsViewProps } from './absolute-checkout-delivery-options';\r\n\r\nconst DeliveryOptionList: React.FC = ({\r\n DeliveryOptionsList,\r\n list\r\n}) => {\r\n if (!list || list.length === 0) {\r\n return null;\r\n }\r\n\r\n return (\r\n \r\n {list.map((deliveryOption: ICheckoutDeliveryOptionEdit) => {\r\n return (\r\n {deliveryOption.radioButton}\r\n {deliveryOption.description}\r\n {deliveryOption.price}\r\n );\r\n })}\r\n \r\n );\r\n};\r\n\r\nconst DeliveryOptionSelected: React.FC = ({\r\n DeliveryOption,\r\n description,\r\n price\r\n}) => {\r\n\r\n return (\r\n \r\n {description}\r\n {price}\r\n \r\n );\r\n};\r\n\r\nconst ErrorMessage: React.FC = ({\r\n Error,\r\n title,\r\n message\r\n}) => {\r\n\r\n return (\r\n \r\n {title}\r\n {message}\r\n \r\n );\r\n};\r\n\r\nconst CheckoutDeliveryOptionsView: React.FC = props => {\r\n const { CheckoutDeliveryOptions,\r\n viewState,\r\n deliveryOptions,\r\n deliveryOptionSelected,\r\n errorMessage,\r\n waiting,\r\n saveButton,\r\n editButton,\r\n cancelButton,\r\n shipContent\r\n } = props;\r\n\r\n return (\r\n\r\n // TODO: All wrapper div should be provided by viewProps. Once SDK provide the sln, update markup.\r\n \r\n {shipContent ? (\r\n
{shipContent}
\r\n ) : null}\r\n {viewState.isLoading && waiting}\r\n {viewState.isError && errorMessage && }\r\n {viewState.isShowList && deliveryOptions && }\r\n {viewState.isShowSelected && deliveryOptionSelected && }\r\n {viewState.isShowSaveButton && saveButton}\r\n {viewState.isShowEditButton && editButton}\r\n {viewState.isShowCancelButton && cancelButton}\r\n
\r\n );\r\n};\r\n\r\nexport default CheckoutDeliveryOptionsView;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport * as React from 'react';\r\n\r\ninterface IAlertProps {\r\n message: string;\r\n}\r\n\r\nconst CheckoutAlert: React.FC = ({ message }) => (\r\n

\r\n {message}\r\n

\r\n);\r\n\r\nexport default CheckoutAlert;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { IInvoiceSummaryLines, InvoiceSummary } from '@msdyn365-commerce-modules/invoice-payment-summary';\r\nimport get from 'lodash/get';\r\nimport * as React from 'react';\r\n\r\nimport { IAbsoluteCheckoutData } from '../absolute-checkout.data';\r\nimport { IAbsoluteCheckoutProps } from '../absolute-checkout.props.autogenerated';\r\n\r\nexport interface IInvoicePaymentSummary {\r\n heading?: React.ReactNode;\r\n lines?: IInvoiceSummaryLines;\r\n}\r\nexport const getInvoicePaymentSummary = (input: IAbsoluteCheckoutProps): IInvoicePaymentSummary => {\r\n const {\r\n data: { checkout },\r\n resources: {\r\n totalAmountLabel,\r\n invoiceLabel,\r\n invoiceSummaryTitle\r\n },\r\n context,\r\n typeName,\r\n id,\r\n telemetry\r\n } = input;\r\n\r\n const checkoutCart = get(checkout, 'result.checkoutCart');\r\n const cart = get(checkout, 'result.checkoutCart.cart');\r\n\r\n return {\r\n heading:

\r\n { invoiceSummaryTitle }\r\n

,\r\n lines: checkoutCart?.hasInvoiceLine ? InvoiceSummary({\r\n orderTotalLabel: totalAmountLabel,\r\n invoiceLabel,\r\n cart,\r\n context,\r\n typeName,\r\n telemetry,\r\n id,\r\n checkoutState: checkout.result\r\n }) : undefined\r\n };\r\n\r\n};\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { CartLineItemComponent } from '@msdyn365-commerce/components';\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport { CartLine, OrgUnitLocation, SimpleProduct } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\r\nimport { getProductUrlSync, StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { Button, getPayloadObject, getTelemetryAttributes, INodeProps, ITelemetryContent, TelemetryConstant } from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport get from 'lodash/get';\r\nimport groupBy from 'lodash/groupBy';\r\nimport * as React from 'react';\r\n\r\nimport { IAbsoluteCheckoutData } from '../absolute-checkout.data';\r\nimport { IAbsoluteCheckoutProps } from '../absolute-checkout.props.autogenerated';\r\n\r\ntype deliveryType = 'pickup' | 'ship' | 'email';\r\n\r\nexport interface IPickUpAtStore {\r\n PickUpAtStore: INodeProps;\r\n label: React.ReactNode;\r\n location: React.ReactNode;\r\n}\r\n\r\nexport interface IEmailDelivery {\r\n EmailDelivery: INodeProps;\r\n label: React.ReactNode;\r\n}\r\n\r\nexport interface ILineItem {\r\n LineId: string;\r\n LineItem: INodeProps;\r\n item?: React.ReactNode;\r\n pickUpAtStore?: IPickUpAtStore;\r\n emailDelivery?: IEmailDelivery;\r\n}\r\n\r\nexport interface ILineItemDeliveryGroup {\r\n LineItemDeliveryGroup: INodeProps;\r\n LineItemList: INodeProps;\r\n heading: React.ReactNode;\r\n lineItemWraper?: React.ReactNode;\r\n lineItemWraperIcon?: React.ReactNode;\r\n lineItems: ILineItem[];\r\n}\r\n\r\nexport interface ILineItems {\r\n LineItems: INodeProps;\r\n Header: INodeProps;\r\n heading: React.ReactNode;\r\n editLink: React.ReactNode;\r\n itemsForPickup?: ILineItemDeliveryGroup;\r\n itemsForShip?: ILineItemDeliveryGroup;\r\n itemsForEmail?: ILineItemDeliveryGroup;\r\n itemsGroupWithMulitplePickupMode?: ILineItemDeliveryGroup[];\r\n}\r\n\r\nexport const getLineItems = (input: IAbsoluteCheckoutProps, telemetryContent?: ITelemetryContent): ILineItems | undefined => {\r\n const pickupDeliveryModeCode = get(input, 'context.request.channel.PickupDeliveryModeCode');\r\n const emailDeliveryModeCode = get(input, 'context.request.channel.EmailDeliveryModeCode');\r\n const multiplePickupStoreSwitchName = 'Dynamics.AX.Application.RetailMultiplePickupDeliveryModeFeature';\r\n const { channelDeliveryOptionConfig, featureState } = input.data;\r\n const retailMultiplePickUpOptionEnabled = featureState?.result?.find(feature => feature.Name === multiplePickupStoreSwitchName)?.IsEnabled;\r\n\r\n const _getDeliveryLocation = (cartLine: CartLine): string => {\r\n const orgUnitLocations = get(input, 'data.orgUnitLocations.result');\r\n if (!cartLine.FulfillmentStoreId || !orgUnitLocations) {\r\n return '';\r\n }\r\n\r\n const locationMatch = (orgUnitLocations || []).find((location: OrgUnitLocation): boolean => {\r\n return location.OrgUnitNumber === cartLine.FulfillmentStoreId;\r\n });\r\n\r\n return locationMatch && locationMatch.OrgUnitName;\r\n };\r\n\r\n const _getProduct = (productId: number): SimpleProduct | undefined => {\r\n const products = get(input, 'data.products.result') || [];\r\n return products.find((_product: SimpleProduct) => {\r\n return productId === _product.RecordId;\r\n });\r\n };\r\n\r\n const _getLineItemComponent = (cartLine: CartLine): JSX.Element | undefined => {\r\n const product = cartLine.ProductId && _getProduct(cartLine.ProductId);\r\n const {\r\n id,\r\n typeName,\r\n context,\r\n config: { imageSettings, showShippingChargesForLineItems },\r\n resources: {\r\n quantityDisplayString,\r\n productDimensionTypeColor,\r\n productDimensionTypeSize,\r\n productDimensionTypeStyle,\r\n productDimensionTypeAmount,\r\n configString,\r\n inputQuantityAriaLabel,\r\n discountStringText,\r\n shippingCharges\r\n },\r\n context: {\r\n request: { gridSettings }\r\n }\r\n } = input;\r\n\r\n if (!product) {\r\n return;\r\n }\r\n\r\n return (\r\n \r\n );\r\n };\r\n\r\n const _getPickUpAtStoreComponents = (pickupDeliveryLocation: string): IPickUpAtStore => {\r\n const {\r\n resources: { pickUpAtStoreWithLocationText }\r\n } = input;\r\n\r\n return {\r\n PickUpAtStore: { className: 'ms-checkout__pick-up-at-store' },\r\n label: \r\n {pickUpAtStoreWithLocationText}\r\n ,\r\n location:
\r\n {pickupDeliveryLocation}\r\n
\r\n };\r\n };\r\n\r\n const _getEmailDeliveryComponents = (): IEmailDelivery => {\r\n const {\r\n resources: { emailDeliveryText }\r\n } = input;\r\n\r\n return {\r\n EmailDelivery: { className: 'ms-checkout__email-delivery' },\r\n label: \r\n {emailDeliveryText}\r\n \r\n };\r\n };\r\n\r\n const _getLineItemsComponents = (items: CartLine[]): ILineItem[] => {\r\n return items.map(cartLine => {\r\n const pickupDeliveryLocation = _getDeliveryLocation(cartLine);\r\n const isPickUp = _getCartPickDeliveryMode(cartLine);\r\n const isEmailDelivery = (cartLine.DeliveryMode && cartLine.DeliveryMode !== '') ? cartLine.DeliveryMode === emailDeliveryModeCode : false;\r\n return {\r\n LineId: cartLine.LineId || '',\r\n LineItem: { className: 'ms-checkout__line-item' },\r\n item: _getLineItemComponent(cartLine),\r\n pickUpAtStore: isPickUp ? _getPickUpAtStoreComponents(pickupDeliveryLocation) : undefined,\r\n emailDelivery: isEmailDelivery ? _getEmailDeliveryComponents() : undefined\r\n };\r\n });\r\n };\r\n\r\n const _getCartPickDeliveryMode = (cartLineItem: CartLine): boolean => {\r\n return (!StringExtensions.isNullOrWhitespace(cartLineItem.DeliveryMode)) ? (retailMultiplePickUpOptionEnabled ? cartLineItem.DeliveryMode === channelDeliveryOptionConfig?.result?.PickupDeliveryModeCodes?.find(deliveryMode => deliveryMode === cartLineItem.DeliveryMode) : (cartLineItem.DeliveryMode === pickupDeliveryModeCode)) : false;\r\n };\r\n\r\n const _getCartShipDeliveryMode = (cartLineItem: CartLine): boolean => {\r\n return (!StringExtensions.isNullOrWhitespace(cartLineItem.DeliveryMode)) ? (retailMultiplePickUpOptionEnabled ? cartLineItem.DeliveryMode !== channelDeliveryOptionConfig?.result?.PickupDeliveryModeCodes?.find(deliveryMode => deliveryMode === cartLineItem.DeliveryMode) : (cartLineItem.DeliveryMode !== pickupDeliveryModeCode)) : false;\r\n };\r\n\r\n const _getGroupTitleComponent = (count: number, type: deliveryType): string => {\r\n const {\r\n resources: {\r\n itemLabel,\r\n itemsLabel,\r\n inStorePickUpLabel,\r\n shippingCountCheckoutLineItem\r\n }\r\n } = input;\r\n\r\n let emailDeliveryModeDesc: string = '';\r\n\r\n input.data.deliveryOptions.result?.find(productDeliveryOptions => {\r\n emailDeliveryModeDesc = emailDeliveryModeDesc ? emailDeliveryModeDesc : productDeliveryOptions.DeliveryOptions?.find(deliveryOption => deliveryOption.Code === emailDeliveryModeCode)?.Description!;\r\n });\r\n\r\n const suffix = count > 1 ? itemsLabel : itemLabel;\r\n const title = type === 'ship' ? shippingCountCheckoutLineItem : (type === 'pickup' ? inStorePickUpLabel : `${emailDeliveryModeDesc} (${count} ${suffix})`);\r\n return title.replace('{count}', count.toString()).replace('{suffix}', suffix);\r\n };\r\n\r\n const _countItems = (items: CartLine[]): number => {\r\n return items.reduce((count, item) => {\r\n return count + (item.Quantity || 0);\r\n\r\n }, 0);\r\n };\r\n\r\n const _filterItemsByDiliveryType = (type: deliveryType): CartLine[] => {\r\n const cart = get(input, 'data.checkout.result.checkoutCart.cart');\r\n if (type === 'ship') {\r\n return cart.CartLines.filter((\r\n cartLine: CartLine) => ((cartLine.DeliveryMode && cartLine.DeliveryMode !== '') ? (_getCartShipDeliveryMode(cartLine) && cartLine.DeliveryMode !== emailDeliveryModeCode) : cartLine)\r\n );\r\n } else if (type === 'pickup') {\r\n return cart.CartLines.filter((cartLine: CartLine) => ((cartLine.DeliveryMode && cartLine.DeliveryMode !== '') ? (_getCartPickDeliveryMode(cartLine)) : null)\r\n );\r\n }\r\n return cart.CartLines.filter((cartLine: CartLine) => cartLine.DeliveryMode === emailDeliveryModeCode);\r\n\r\n };\r\n\r\n const _getLineItemsByDeliveryType = (type: deliveryType): ILineItemDeliveryGroup | undefined => {\r\n if ((pickupDeliveryModeCode === '' || pickupDeliveryModeCode === undefined) && (type === 'pickup' || type === 'email')) {\r\n return;\r\n }\r\n\r\n const items = _filterItemsByDiliveryType(type);\r\n\r\n if (items.length === 0) {\r\n return undefined;\r\n }\r\n\r\n const count = _countItems(items);\r\n const title = _getGroupTitleComponent(count, type);\r\n\r\n return {\r\n LineItemDeliveryGroup: { className: classnames('ms-checkout__line-items-delivery-group', type) },\r\n LineItemList: { className: 'ms-checkout__line-items-list' },\r\n heading:
\r\n {title}\r\n
,\r\n lineItems: _getLineItemsComponents(items)\r\n };\r\n };\r\n\r\n const _getLineItems = (): ILineItems | undefined => {\r\n const {\r\n context,\r\n config: { lineItemsHeading },\r\n data: { products },\r\n resources: { editCartText }\r\n } = input;\r\n\r\n const payLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.EditCart);\r\n const attribute = getTelemetryAttributes(telemetryContent!, payLoad);\r\n const cart = get(input, 'data.checkout.result.checkoutCart.cart');\r\n const groupClass = retailMultiplePickUpOptionEnabled ? ' multiple-pickup-enabled' : '';\r\n if (!cart || !cart.CartLines || cart.CartLines.length === 0 || !products) {\r\n return undefined;\r\n }\r\n\r\n return {\r\n LineItems: { className: `ms-checkout__line-items${groupClass}` },\r\n Header: { className: 'ms-checkout__line-items-header' },\r\n heading: lineItemsHeading && lineItemsHeading.text && (\r\n \r\n ),\r\n editLink: (\r\n \r\n {editCartText}\r\n \r\n ),\r\n itemsForPickup: _getLineItemsByDeliveryType('pickup'),\r\n itemsForShip: _getLineItemsByDeliveryType('ship'),\r\n itemsForEmail: _getLineItemsByDeliveryType('email'),\r\n itemsGroupWithMulitplePickupMode: retailMultiplePickUpOptionEnabled ? _getLineItemsByDeliveryTypeWithMulitplePickupMode() : undefined\r\n };\r\n };\r\n\r\n const handleLineItemHeadingChange = (event: Msdyn365.ContentEditableEvent) => {\r\n const {\r\n config: { lineItemsHeading }\r\n } = input;\r\n lineItemsHeading!.text = event.target.value;\r\n };\r\n\r\n const _getGroupTitleComponentWithMultiplePickUp = (count: number, type: deliveryType, deliveryMode?: string, fulFillmentStoreId?: string): string => {\r\n const {\r\n resources: {\r\n itemLabel,\r\n itemsLabel\r\n }\r\n } = input;\r\n\r\n let emailDeliveryModeDesc: string = '';\r\n let pickupDeliveryModeDesc: string = '';\r\n\r\n input.data.deliveryOptions.result?.find(productDeliveryOptions => {\r\n emailDeliveryModeDesc = emailDeliveryModeDesc ? emailDeliveryModeDesc : productDeliveryOptions.DeliveryOptions?.find(deliveryOption => deliveryOption.Code === emailDeliveryModeCode)?.Description!;\r\n });\r\n\r\n input.data.deliveryOptions.result?.find(productDeliveryOptions => {\r\n pickupDeliveryModeDesc = pickupDeliveryModeDesc ? pickupDeliveryModeDesc : productDeliveryOptions.DeliveryOptions?.find(deliveryOption => deliveryOption.Code === deliveryMode)?.Description!;\r\n });\r\n\r\n const pickupTitle: string = `${pickupDeliveryModeDesc}, ${fulFillmentStoreId}`;\r\n const suffix = count > 1 ? itemsLabel : itemLabel;\r\n const title = type === 'ship' ? `(${count} ${suffix})` : (type === 'pickup' ? `${pickupTitle} (${count} ${suffix})` : `${emailDeliveryModeDesc} (${count} ${suffix})`);\r\n return title.replace('{count}', count.toString()).replace('{suffix}', suffix);\r\n };\r\n\r\n const _filterItemsByMultiplePickupMode = (): CartLine[][] => {\r\n const cart = get(input, 'data.checkout.result.checkoutCart.cart');\r\n const getGroupByStorePickup = (items: CartLine[]) => groupBy(items, item => item.FulfillmentStoreId);\r\n const getGroupByDelivery = (items: CartLine[]) => groupBy(items, item => (item.DeliveryMode));\r\n const groupDelivery = getGroupByDelivery(cart.CartLines);\r\n const cartLinesGroup: CartLine[] = [];\r\n const cartLinesGrp: CartLine[][] = [];\r\n\r\n // 1) Group by store and pick up mode\r\n Object.entries(groupDelivery).forEach(([deliveryMode, groupByDeliveryType]) => {\r\n // @ts-expect-error\r\n groupDelivery[deliveryMode] = getGroupByStorePickup(groupByDeliveryType);\r\n cartLinesGroup.push(getGroupByStorePickup(groupByDeliveryType));\r\n });\r\n\r\n Object.keys(cartLinesGroup).forEach(key => {\r\n const cartLines = cartLinesGroup[key];\r\n Object.keys(cartLines).forEach(index => {\r\n const cartLine = cartLines[index];\r\n cartLinesGrp.push(cartLine);\r\n });\r\n });\r\n\r\n return cartLinesGrp;\r\n };\r\n\r\n const _getLineItemsByDeliveryTypeWithMulitplePickupMode = (): ILineItemDeliveryGroup[] | undefined => {\r\n if (pickupDeliveryModeCode === '' || pickupDeliveryModeCode === undefined) {\r\n return;\r\n }\r\n\r\n const {\r\n resources: {\r\n multiplePickUpLabel,\r\n shippingLable\r\n }\r\n } = input;\r\n\r\n const items = _filterItemsByMultiplePickupMode();\r\n\r\n if (items.length === 0) {\r\n return undefined;\r\n }\r\n\r\n const lineItemDeliveryGroup: ILineItemDeliveryGroup[] = [];\r\n items.map(item => {\r\n const count = _countItems(item);\r\n const cartLine = item[0];\r\n const pickupDeliveryLocation = _getDeliveryLocation(cartLine);\r\n const type: deliveryType = cartLine.FulfillmentStoreId && cartLine.DeliveryMode ? 'pickup' : (cartLine.FulfillmentStoreId === '' && cartLine.DeliveryMode === emailDeliveryModeCode ? 'email' : 'ship');\r\n const title = _getGroupTitleComponentWithMultiplePickUp(count, type, cartLine.DeliveryMode, pickupDeliveryLocation);\r\n const groupTitle = type === 'pickup' ? multiplePickUpLabel : (type === 'ship' ? shippingLable : 'email');\r\n const iconClass = `ms-checkout__line-items-group-title-multiple-pickup-${type}icon`;\r\n lineItemDeliveryGroup.push({\r\n LineItemDeliveryGroup: { className: classnames('ms-checkout__line-items-delivery-group multiple-pickup', type) },\r\n LineItemList: { className: 'ms-checkout__line-items-list' },\r\n lineItemWraperIcon:
,\r\n lineItemWraper:
\r\n {groupTitle}\r\n
,\r\n heading:
\r\n {title}\r\n
,\r\n lineItems: _getLineItemsComponents(item)\r\n });\r\n });\r\n\r\n return lineItemDeliveryGroup;\r\n };\r\n\r\n return _getLineItems();\r\n};\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport { IOrderSummaryLines, OrderSummary } from '@msdyn365-commerce-modules/order-summary-utilities';\r\nimport { INodeProps } from '@msdyn365-commerce-modules/utilities';\r\nimport get from 'lodash/get';\r\nimport * as React from 'react';\r\n\r\nimport { IAbsoluteCheckoutData } from '../absolute-checkout.data';\r\nimport { IAbsoluteCheckoutProps } from '../absolute-checkout.props.autogenerated';\r\n\r\nexport interface IOrderSummary {\r\n orderSummaryProps: INodeProps;\r\n heading?: React.ReactNode;\r\n lines?: IOrderSummaryLines;\r\n}\r\nexport const getOrderSummary = (input: IAbsoluteCheckoutProps): IOrderSummary => {\r\n const {\r\n config: { orderSummaryHeading },\r\n data: { checkout },\r\n resources: {\r\n subTotalLabel,\r\n shippingLabel,\r\n taxLabel,\r\n orderTotalLabel,\r\n loyaltyLabel,\r\n giftcardLabel,\r\n totalDiscountsLabel,\r\n freeText,\r\n toBeCalculatedText,\r\n otherCharges\r\n },\r\n context,\r\n typeName,\r\n id,\r\n telemetry\r\n } = input;\r\n\r\n const checkoutState = get(checkout, 'result');\r\n const cart = get(checkout, 'result.checkoutCart.cart');\r\n const showLineItems = cart.CartLines && cart.CartLines.length > 0;\r\n const channelConfiguration = context.request.channel!;\r\n const multiplePickupStoreSwitchName = 'Dynamics.AX.Application.RetailMultiplePickupDeliveryModeFeature';\r\n const { channelDeliveryOptionConfig, featureState } = input.data;\r\n const retailMultiplePickUpOptionEnabled = featureState?.result?.find(feature => feature.Name === multiplePickupStoreSwitchName)?.IsEnabled;\r\n\r\n const handleOrderSummaryHeadingChange = (event: Msdyn365.ContentEditableEvent) => {\r\n const {\r\n config: { orderSummaryHeading }\r\n } = input;\r\n orderSummaryHeading!.text = event.target.value;\r\n };\r\n\r\n return {\r\n orderSummaryProps: { className: 'ms-checkout-guest-profile__selected-item' },\r\n heading: orderSummaryHeading && orderSummaryHeading.text && (\r\n \r\n ),\r\n lines: showLineItems ? OrderSummary({\r\n checkoutState,\r\n cart,\r\n subTotalLabel,\r\n shippingLabel,\r\n taxLabel,\r\n orderTotalLabel,\r\n loyaltyLabel,\r\n giftcardLabel,\r\n totalDiscountsLabel,\r\n freeText,\r\n toBeCalculatedText,\r\n context,\r\n typeName,\r\n id,\r\n channelConfiguration,\r\n telemetry,\r\n otherChargeLabel: otherCharges,\r\n retailMultiplePickUpOptionEnabled,\r\n channelDeliveryOptionConfig: channelDeliveryOptionConfig?.result\r\n }) : undefined\r\n };\r\n\r\n};\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { Heading as HeadingType } from '@msdyn365-commerce-modules/data-types';\r\nimport { Button, getPayloadObject, getTelemetryAttributes, IPayLoad, ITelemetryContent, TelemetryConstant } from '@msdyn365-commerce-modules/utilities';\r\nimport classname from 'classnames';\r\nimport * as React from 'react';\r\nimport ReactDOM from 'react-dom';\r\n\r\nexport interface ICheckoutGuidedCardProps {\r\n step: number;\r\n title?: HeadingType;\r\n disabled?: boolean; // Module is not available\r\n isActive?: boolean; // Step === currentStep\r\n isVisted?: boolean; // Step < currentStep\r\n isExpanded?: boolean;\r\n isReady?: boolean;\r\n isPending?: boolean;\r\n isUpdating?: boolean;\r\n isSubmitting?: boolean;\r\n isCancelAllowed?: boolean;\r\n isMobile?: boolean;\r\n hasInitialized?: boolean;\r\n hasControlGroup?: boolean;\r\n children: React.ReactNode;\r\n resource: {\r\n checkoutStepTitleFormat: string;\r\n saveBtnLabel: string;\r\n changeBtnLabel: string;\r\n cancelBtnLabel: string;\r\n saveAndContinueBtnLabel: string;\r\n };\r\n telemetryContent?: ITelemetryContent;\r\n onEdit?(): void;\r\n onCancel?(): void;\r\n onSubmit?(): void;\r\n onNext(): void;\r\n}\r\n\r\n/**\r\n *\r\n * CheckoutGuidedCard component.\r\n * @extends {React.Component}\r\n */\r\nclass CheckoutGuidedCard extends React.PureComponent {\r\n private readonly editButtonRef: React.RefObject = React.createRef();\r\n\r\n private readonly formCardRef: React.RefObject = React.createRef();\r\n\r\n private readonly payLoad: IPayLoad;\r\n\r\n constructor(props: ICheckoutGuidedCardProps) {\r\n super(props);\r\n this.payLoad = getPayloadObject('click', props.telemetryContent!, '');\r\n }\r\n\r\n public componentDidUpdate(prevProps: ICheckoutGuidedCardProps): void {\r\n /**\r\n * Move to next step when current step is ready.\r\n */\r\n const { isActive, isReady, onNext, isVisted, onEdit } = this.props;\r\n\r\n // Move to next step after completing the current step\r\n if (isActive && isReady) {\r\n onNext();\r\n }\r\n\r\n // Set the focus to Edit button once edit button appear\r\n // (It happens when current step switch to isReady status)\r\n const prevCanEdit = prevProps.isReady && prevProps.isVisted && !!prevProps.onEdit;\r\n const canEdit = isReady && isVisted && !!onEdit;\r\n if (!prevCanEdit && canEdit) {\r\n this.focusOnEditButton();\r\n this.scrollToTitle();\r\n }\r\n\r\n // Set the focus to the first focusable element\r\n // (It happens when current step switch to isUpdating status)\r\n if (prevProps.isReady && !isReady) {\r\n this.focusOnFirstFocusableElement();\r\n }\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n const {\r\n title,\r\n disabled,\r\n isExpanded,\r\n isActive,\r\n isVisted,\r\n children,\r\n isReady,\r\n isPending,\r\n isUpdating,\r\n hasInitialized,\r\n hasControlGroup,\r\n onEdit,\r\n resource\r\n } = this.props;\r\n const { changeBtnLabel } = resource;\r\n\r\n this.payLoad.contentAction.etext = TelemetryConstant.CheckoutChange;\r\n const changeBtnAttributes = getTelemetryAttributes(this.props.telemetryContent!, this.payLoad);\r\n const canEdit = hasControlGroup && isReady && isVisted && onEdit;\r\n\r\n return (\r\n \r\n
\r\n {this.getTitle()}\r\n\r\n {canEdit && (\r\n \r\n {changeBtnLabel}\r\n \r\n )}\r\n
\r\n\r\n \r\n
\r\n {children}\r\n
\r\n\r\n {this.renderFooder()}\r\n
\r\n \r\n );\r\n }\r\n\r\n private readonly renderFooder = (): JSX.Element | null => {\r\n const { isVisted, isReady, isSubmitting, isCancelAllowed, hasControlGroup, onCancel, onSubmit, resource } = this.props;\r\n const { saveBtnLabel, cancelBtnLabel, saveAndContinueBtnLabel } = resource;\r\n\r\n const canSubmit = !isReady && onSubmit;\r\n const canCancel = !isReady && isVisted && isCancelAllowed && onCancel;\r\n\r\n if (!hasControlGroup || (!canSubmit && !canCancel)) {\r\n return null;\r\n }\r\n\r\n this.payLoad.contentAction.etext = isVisted ? TelemetryConstant.Save : TelemetryConstant.SaveContinue;\r\n const saveBtnAttributes = getTelemetryAttributes(this.props.telemetryContent!, this.payLoad);\r\n this.payLoad.contentAction.etext = TelemetryConstant.Cancel;\r\n const cancelBtnAttributes = getTelemetryAttributes(this.props.telemetryContent!, this.payLoad);\r\n\r\n return (\r\n
\r\n {canSubmit && (\r\n \r\n {isVisted && isCancelAllowed ? saveBtnLabel : saveAndContinueBtnLabel}\r\n \r\n )}\r\n {canCancel && (\r\n \r\n {cancelBtnLabel}\r\n \r\n )}\r\n
\r\n );\r\n };\r\n\r\n private readonly focusOnFirstFocusableElement = (): void => {\r\n const node = ReactDOM.findDOMNode(this) as HTMLElement;\r\n const focussableElements = `\r\n a:not([disabled]),\r\n button:not([disabled]),\r\n input[type=submit]:not([disabled]),\r\n input[type=checkbox]:not([disabled]),\r\n input[type=text]:not([disabled]),\r\n input[type=radio]:not([disabled]),\r\n input[type=password]:not([disabled]),\r\n select:not([disabled]),\r\n textarea:not([disabled]),\r\n [tabindex]:not([disabled]):not([tabindex=\"-1\"])\r\n `;\r\n\r\n const child = node && node.querySelector && (node.querySelector(focussableElements) as HTMLElement);\r\n child && child.focus && child.focus();\r\n };\r\n\r\n private readonly focusOnEditButton = (): void => {\r\n // Focus on edit button\r\n const editButton =\r\n this.editButtonRef &&\r\n this.editButtonRef.current &&\r\n this.editButtonRef.current.focus &&\r\n (this.editButtonRef.current as HTMLElement);\r\n editButton && editButton.focus();\r\n };\r\n\r\n private readonly scrollToTitle = (): void => {\r\n // Scroll window to the title of the step that was just completed only in mobile viewport\r\n const formCard = this.props.isMobile && this.formCardRef && this.formCardRef.current && (this.formCardRef.current as HTMLElement);\r\n formCard && formCard.scrollIntoView();\r\n };\r\n\r\n private readonly getTitle = (): JSX.Element => {\r\n const { step, title } = this.props;\r\n const { headingTag: Tag = 'h2', text = '' } = title || {};\r\n return (\r\n \r\n \r\n {step + 1}\r\n .\r\n {' '}\r\n \r\n {text && \r\n {text}\r\n }\r\n \r\n );\r\n };\r\n}\r\n\r\nexport default CheckoutGuidedCard;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { IModuleStateManager } from '@msdyn365-commerce-modules/checkout-utilities';\r\nimport { Heading } from '@msdyn365-commerce-modules/data-types';\r\nimport { ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\r\nimport get from 'lodash/get';\r\nimport { observer } from 'mobx-react';\r\nimport * as React from 'react';\r\n\r\nimport GuidedCard from './guided-card';\r\n\r\nexport interface ICheckoutGuidedFormProps {\r\n items: React.ReactNode[];\r\n moduleState: IModuleStateManager;\r\n disableGuidedCheckoutFlow?: boolean;\r\n isMobile?: boolean;\r\n isEditor?: boolean;\r\n resource: {\r\n checkoutStepTitleFormat: string;\r\n saveBtnLabel: string;\r\n changeBtnLabel: string;\r\n cancelBtnLabel: string;\r\n saveAndContinueBtnLabel: string;\r\n };\r\n telemetryContent?: ITelemetryContent;\r\n}\r\n\r\ninterface ICheckoutGuidedFormState {\r\n currentStep: number;\r\n}\r\n\r\n/**\r\n *\r\n * CheckoutGuidedForm component.\r\n * @extends {React.Component}\r\n */\r\n@observer\r\nclass CheckoutGuidedForm extends React.PureComponent {\r\n public state: ICheckoutGuidedFormState = {\r\n currentStep: 0\r\n };\r\n\r\n public componentDidMount(): void {\r\n /**\r\n * Append child modules.\r\n */\r\n const childIds = this.props.items.map((item: React.ReactNode) => get(item, 'props.id'));\r\n this.props.moduleState.init({ childIds });\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n const { moduleState, items, resource } = this.props;\r\n if (!items || !moduleState) {\r\n return null;\r\n }\r\n\r\n return (\r\n
\r\n {items.map((item: React.ReactNode) => {\r\n const childId = this.getId(item);\r\n const step = this.getStep(childId);\r\n const title = this.getHeading(item);\r\n const state = this.props.moduleState.getModule(childId);\r\n const { isReady, isPending, isUpdating, isDisabled, isCancelAllowed, onEdit, onCancel, onSubmit, hasModuleState, hasInitialized } =\r\n state || ({} as IModuleStateManager);\r\n return (\r\n\r\n \r\n {React.cloneElement(item as React.ReactElement, { enableControl: true })}\r\n \r\n );\r\n })}\r\n
\r\n );\r\n }\r\n\r\n private readonly getEnabledModules = (): string[] => {\r\n const {\r\n moduleState: { childIds, getModule }\r\n } = this.props;\r\n return childIds.filter((childId: string) => {\r\n const state = getModule(childId);\r\n return !!state && !state.isDisabled;\r\n });\r\n };\r\n\r\n private readonly getStep = (id: string): number => {\r\n return this.getEnabledModules().indexOf(id);\r\n };\r\n\r\n private readonly getId = (item: React.ReactNode): string => {\r\n return get(item, 'props.id') || '';\r\n };\r\n\r\n private readonly getHeading = (item: React.ReactNode): Heading => {\r\n return get(item, 'props.config.heading') || '';\r\n };\r\n\r\n private readonly isExpanded = (step: number): boolean => {\r\n if (this.props.isEditor) {\r\n // Editorial mode: Expand all the drawers\r\n return true;\r\n }\r\n return step > -1 && step <= this.state.currentStep;\r\n };\r\n\r\n private readonly isActive = (step: number): boolean => {\r\n return step === this.state.currentStep;\r\n };\r\n\r\n private readonly isVisted = (step: number): boolean => {\r\n return step > -1 && step < this.state.currentStep;\r\n };\r\n\r\n private readonly onNext = (): void => {\r\n this.setState({\r\n currentStep: this.state.currentStep + 1\r\n });\r\n };\r\n}\r\n\r\nexport default CheckoutGuidedForm;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { TelemetryEvent } from '@msdyn365-commerce/core';\r\nimport { Button, getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport React, { useState } from 'react';\r\n\r\ninterface ICheckoutPlaceOrderButtonProps {\r\n canPlaceOrder: boolean;\r\n checkoutBtnText: string;\r\n telemetryContent?: ITelemetryContent;\r\n shouldEnableSinglePaymentAuthorizationCheckout?: boolean;\r\n isPlaceOrderLoading?: boolean;\r\n placeOrder(): Promise;\r\n}\r\n\r\nconst buttonsStates: React.Dispatch>[] = [];\r\n\r\n/**\r\n * On place order function.\r\n * @param isBusy -Check is busy.\r\n * @param canPlaceOrder -Check can place order.\r\n * @param placeOrder -Place order function.\r\n * @returns Set state of button.\r\n */\r\nconst onPlaceOrderHandler = (isBusy: boolean, canPlaceOrder: boolean, placeOrder: () => Promise) => async () => {\r\n if (isBusy || !canPlaceOrder) {\r\n return;\r\n }\r\n buttonsStates.map(buttonSetState => {\r\n buttonSetState(true);\r\n return true;\r\n });\r\n await placeOrder();\r\n buttonsStates.map(buttonSetState => {\r\n buttonSetState(false);\r\n return true;\r\n });\r\n};\r\n\r\nconst CheckoutPlaceOrderButton: React.FC = ({\r\n checkoutBtnText, canPlaceOrder, placeOrder, telemetryContent, shouldEnableSinglePaymentAuthorizationCheckout, isPlaceOrderLoading }) => {\r\n const [isBusy, setIsBusy] = useState(false);\r\n buttonsStates.push(setIsBusy);\r\n const payload = getPayloadObject(TelemetryEvent.Purchase, telemetryContent!, checkoutBtnText, '');\r\n const attributes = getTelemetryAttributes(telemetryContent!, payload);\r\n\r\n if (shouldEnableSinglePaymentAuthorizationCheckout) {\r\n return (\r\n \r\n {checkoutBtnText}\r\n \r\n );\r\n }\r\n\r\n return (\r\n \r\n {checkoutBtnText}\r\n \r\n );\r\n};\r\n\r\nexport default CheckoutPlaceOrderButton;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { IActionContext } from '@msdyn365-commerce/core';\r\nimport { getCheckoutState } from '@msdyn365-commerce/global-state';\r\nimport { checkoutAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/CartsDataActions.g';\r\nimport { getTenderTypesAsync, resolveCardTypesAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/StoreOperationsDataActions.g';\r\nimport {\r\n Address,\r\n CardPaymentAcceptResult,\r\n CardType,\r\n CartTenderLine,\r\n RetailOperation,\r\n SalesOrder,\r\n TenderType,\r\n TokenizedPaymentCard\r\n} from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\r\n\r\nexport const OPERATIONS = {\r\n PayCard: 201,\r\n PayGiftCertificate: 214,\r\n PayLoyalty: 207,\r\n PayCustomerAccount: 202\r\n};\r\n\r\nconst getCardTypeId = async (ctx: IActionContext, cardPrefix = ''): Promise => {\r\n console.log(\"MYDEBUG-AC-AC.ts getCardTypeId() called\");\r\n try {\r\n const response = await resolveCardTypesAsync({ callerContext: ctx }, cardPrefix, CardType.Unknown);\r\n if (response && response.length > 0) {\r\n return response[0].TypeId;\r\n }\r\n } catch (error) {\r\n ctx.telemetry.error('Call to resolveCardTypesAsync failed.', error);\r\n }\r\n return undefined;\r\n};\r\n\r\nconst findTenderIdTypeByOperationId = (tenderTypes: TenderType[], operationId: RetailOperation): string | undefined => {\r\n console.log(\"MYDEBUG-AC-AC.ts findTenderIdTypeByOperationId() called\");\r\n const matchedTenderType = tenderTypes.find(tenderType => tenderType.OperationId === operationId);\r\n if (matchedTenderType) {\r\n return matchedTenderType.TenderTypeId;\r\n }\r\n return;\r\n};\r\n\r\nconst roundNumber = (value: number) => Number(value.toFixed(2));\r\n\r\nasync function getLoyaltyTenderLine(ctx: IActionContext, LoyaltyCardId: string, Amount = 0, Currency = 'USD'): Promise {\r\n console.log(\"MYDEBUG-AC-AC.ts getLoyaltyTenderLine() called\");\r\n const tenderTypes = await getTenderTypesAsync({ callerContext: ctx, queryResultSettings: {} }).catch(error => {\r\n throw error;\r\n });\r\n\r\n if (!tenderTypes) {\r\n throw new Error('Fail to get gift card tender line');\r\n }\r\n\r\n const TenderTypeId = findTenderIdTypeByOperationId(tenderTypes, OPERATIONS.PayLoyalty);\r\n return {\r\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\r\n // @ts-expect-error\r\n '@odata.type': '#Microsoft.Dynamics.Commerce.Runtime.DataModel.CartTenderLine',\r\n\r\n 'Amount@odata.type': '#Decimal',\r\n Currency,\r\n TenderTypeId,\r\n Amount,\r\n LoyaltyCardId\r\n };\r\n}\r\n\r\nasync function getGiftCardTenderLine(\r\n ctx: IActionContext,\r\n GiftCardId = '',\r\n Amount = 0,\r\n Currency = 'USD',\r\n tenderTypeId?: string,\r\n giftCardPin?: string,\r\n giftCardExpirationYear?: number,\r\n giftCardExpirationMonth?: number\r\n): Promise {\r\n console.log(\"MYDEBUG-AC-AC.ts getGiftCardTenderLine() called\");\r\n let TenderTypeId = tenderTypeId;\r\n\r\n if (!TenderTypeId) {\r\n const tenderTypes = await getTenderTypesAsync({ callerContext: ctx, queryResultSettings: {} }).catch(error => {\r\n throw error;\r\n });\r\n if (!tenderTypes) {\r\n throw new Error('Fail to get gift card tender line');\r\n }\r\n TenderTypeId = findTenderIdTypeByOperationId(tenderTypes, OPERATIONS.PayGiftCertificate);\r\n }\r\n\r\n const GiftCardPin = giftCardPin;\r\n const GiftCardExpirationYear = giftCardExpirationYear;\r\n const GiftCardExpirationMonth = giftCardExpirationMonth;\r\n return {\r\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\r\n // @ts-expect-error\r\n '@odata.type': '#Microsoft.Dynamics.Commerce.Runtime.DataModel.CartTenderLine',\r\n 'Amount@odata.type': '#Decimal',\r\n Currency,\r\n TenderTypeId,\r\n Amount,\r\n GiftCardId,\r\n GiftCardPin,\r\n GiftCardExpirationYear,\r\n GiftCardExpirationMonth\r\n };\r\n}\r\n\r\nasync function getCreditCardTenderLine(\r\n ctx: IActionContext,\r\n tokenizedPaymentCard: TokenizedPaymentCard,\r\n cardPrefix = '',\r\n Amount = 0,\r\n Currency = 'USD',\r\n billingAddress?: Address\r\n): Promise {\r\n console.log(\"MYDEBUG-AC-AC.ts getCreditCardTenderLine() called\");\r\n const tenderTypes = await getTenderTypesAsync({ callerContext: ctx, queryResultSettings: {} }).catch(error => {\r\n throw error;\r\n });\r\n\r\n let cartTypeId = tokenizedPaymentCard.CardTypeId;\r\n\r\n if (!cartTypeId) {\r\n cartTypeId = await getCardTypeId(ctx, cardPrefix);\r\n }\r\n\r\n if (!tenderTypes) {\r\n throw new Error('Fail to get card tender type');\r\n }\r\n\r\n if (!cartTypeId) {\r\n throw new Error('Fail to get card type id');\r\n }\r\n\r\n const TenderTypeId = tokenizedPaymentCard.TenderType ?? findTenderIdTypeByOperationId(tenderTypes, OPERATIONS.PayCard);\r\n const cardTenderLine: CartTenderLine = {\r\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\r\n // @ts-expect-error\r\n '@odata.type': '#Microsoft.Dynamics.Commerce.Runtime.DataModel.CartTenderLine',\r\n 'Amount@odata.type': '#Decimal',\r\n Currency,\r\n Amount,\r\n TenderTypeId,\r\n CardTypeId: cartTypeId\r\n };\r\n cardTenderLine.TokenizedPaymentCard = {\r\n ...tokenizedPaymentCard,\r\n CardTypeId: cartTypeId,\r\n\r\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\r\n // @ts-expect-error\r\n '@odata.type': '#Microsoft.Dynamics.Commerce.Runtime.DataModel.TokenizedPaymentCard',\r\n House: tokenizedPaymentCard.House || 'N/A',\r\n ...(tokenizedPaymentCard.CardTokenInfo && {\r\n CardTokenInfo: {\r\n ...tokenizedPaymentCard.CardTokenInfo,\r\n '@odata.type': '#Microsoft.Dynamics.Commerce.Runtime.DataModel.CardTokenInfo'\r\n }\r\n }),\r\n ...(billingAddress && {\r\n Phone: billingAddress.Phone,\r\n Country: billingAddress.ThreeLetterISORegionName,\r\n Address1: billingAddress.Street,\r\n City: billingAddress.City,\r\n State: billingAddress.State,\r\n Zip: billingAddress.ZipCode\r\n })\r\n };\r\n\r\n return cardTenderLine;\r\n}\r\n\r\n/**\r\n * Get credit card tender line.\r\n * @param context - Action context.\r\n * @param amount - Due amount for credit card.\r\n * @param currency - Currency.\r\n * @param cardPaymentAcceptResult - CardPaymentAcceptResult.\r\n * @returns - The credit card tender line.\r\n */\r\nasync function getCreditCardTenderLineForSinglePaymentAuth(\r\n context: IActionContext,\r\n amount = 0,\r\n currency = 'USD',\r\n cardPaymentAcceptResult?: CardPaymentAcceptResult\r\n): Promise {\r\n console.log(\"MYDEBUG-AC-AC.ts getCreditCardTenderLineForSinglePaymentAuth() called\");\r\n const tenderTypes = await getTenderTypesAsync({ callerContext: context, queryResultSettings: {} }).catch(error => {\r\n throw error;\r\n });\r\n\r\n const tenderTypeId = findTenderIdTypeByOperationId(tenderTypes, OPERATIONS.PayCard);\r\n\r\n const cardTenderLine: CartTenderLine = {\r\n // @ts-expect-error -- existing data.\r\n '@odata.type': '#Microsoft.Dynamics.Commerce.Runtime.DataModel.CartTenderLine',\r\n 'Amount@odata.type': '#Decimal',\r\n Currency: currency,\r\n Amount: amount,\r\n TenderTypeId: tenderTypeId,\r\n CardPaymentAcceptResult: cardPaymentAcceptResult\r\n };\r\n\r\n return cardTenderLine;\r\n}\r\n\r\nasync function createCustomerAccountTenderLine(ctx: IActionContext, Amount: number, Currency = 'USD'): Promise {\r\n console.log(\"MYDEBUG-AC-AC.ts createCustomerAccountTenderLine() called\");\r\n const CustomerId = null;\r\n if (!ctx.requestContext.user.isAuthenticated) {\r\n ctx.telemetry.error('A customer id is required to pay with customer account');\r\n }\r\n\r\n const tenderTypes = await getTenderTypesAsync({ callerContext: ctx, queryResultSettings: {} }).catch(error => {\r\n throw error;\r\n });\r\n\r\n if (!tenderTypes) {\r\n ctx.telemetry.error('No tender types found for this channel');\r\n }\r\n\r\n const TenderTypeId = findTenderIdTypeByOperationId(tenderTypes, OPERATIONS.PayCustomerAccount);\r\n if (!TenderTypeId) {\r\n ctx.telemetry.error('No customer account tender type');\r\n }\r\n return {\r\n '@odata.type': '#Microsoft.Dynamics.Commerce.Runtime.DataModel.CartTenderLine',\r\n 'Amount@odata.type': '#Decimal',\r\n Currency,\r\n TenderTypeId,\r\n Amount,\r\n\r\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\r\n // @ts-expect-error\r\n CustomerId\r\n };\r\n}\r\n\r\nexport default async (\r\n ctx: IActionContext,\r\n updatedCartVersion?: number,\r\n isPaymentVerificationRedirection?: boolean\r\n): Promise => {\r\n console.log(\"MYDEBUG-AC-AC.ts export called\");\r\n const checkoutState = await getCheckoutState(ctx).catch(error => {\r\n throw error;\r\n });\r\n\r\n const cartState = checkoutState.checkoutCart;\r\n\r\n const channelConfiguration = ctx.requestContext.channel;\r\n\r\n if (!cartState || Object.keys(cartState).length === 0 || !channelConfiguration) {\r\n throw new Error('Fail to placeOrder');\r\n }\r\n\r\n const {\r\n giftCardExtends,\r\n tokenizedPaymentCard,\r\n cardPrefix,\r\n guestCheckoutEmail,\r\n billingAddress,\r\n loyaltyAmount,\r\n cardPaymentAcceptResult,\r\n shouldEnableSinglePaymentAuthorizationCheckout\r\n } = checkoutState;\r\n const { Currency } = channelConfiguration;\r\n\r\n let amountDue = cartState.cart.AmountDue || 0;\r\n let cartTenderLines;\r\n const getTenderLinePromises = [];\r\n const loyaltyCardNumber = cartState.cart.LoyaltyCardId;\r\n\r\n // Pay by loyalty first\r\n if (loyaltyAmount && loyaltyCardNumber) {\r\n const chargedAmount = roundNumber(Math.min(loyaltyAmount, amountDue));\r\n const loyaltyTenderLinePromise = getLoyaltyTenderLine(ctx, loyaltyCardNumber, chargedAmount, Currency);\r\n getTenderLinePromises.push(loyaltyTenderLinePromise);\r\n amountDue = roundNumber(amountDue - chargedAmount);\r\n }\r\n\r\n // Then by gift card\r\n if (giftCardExtends && giftCardExtends.length > 0) {\r\n giftCardExtends.some(giftCardExtend => {\r\n if (giftCardExtend.Balance && amountDue > 0) {\r\n const chargedAmount = roundNumber(Math.min(giftCardExtend.Balance, amountDue));\r\n const tenderTypeId = giftCardExtend.TenderTypeId;\r\n const giftCardPin = giftCardExtend.Pin;\r\n const giftCardExpirationYear = giftCardExtend.ExpirationDate\r\n ? Number.parseInt(giftCardExtend.ExpirationDate?.split('/')[1], 10)\r\n : undefined;\r\n const giftCardExpirationMonth = giftCardExtend.ExpirationDate\r\n ? Number.parseInt(giftCardExtend.ExpirationDate?.split('/')[0], 10)\r\n : undefined;\r\n const creditCardTenderLinePromise = getGiftCardTenderLine(\r\n ctx,\r\n giftCardExtend.Id,\r\n chargedAmount,\r\n Currency,\r\n tenderTypeId,\r\n giftCardPin,\r\n giftCardExpirationYear,\r\n giftCardExpirationMonth\r\n );\r\n getTenderLinePromises.push(creditCardTenderLinePromise);\r\n amountDue = roundNumber(amountDue - chargedAmount);\r\n }\r\n return amountDue === 0;\r\n });\r\n }\r\n\r\n // Then by customer account\r\n if (checkoutState.customerAccountAmount > 0) {\r\n const chargedAmount = roundNumber(Math.min(checkoutState.customerAccountAmount, amountDue));\r\n const customerAccountTenderLinePromise = createCustomerAccountTenderLine(ctx, chargedAmount, Currency);\r\n getTenderLinePromises.push(customerAccountTenderLinePromise);\r\n amountDue = roundNumber(amountDue - chargedAmount);\r\n }\r\n\r\n // Pay the rest by credit card\r\n if (amountDue > 0) {\r\n let creditCardTenderLinePromise: Promise;\r\n\r\n if (shouldEnableSinglePaymentAuthorizationCheckout) {\r\n creditCardTenderLinePromise = getCreditCardTenderLineForSinglePaymentAuth(ctx, amountDue, Currency, cardPaymentAcceptResult);\r\n } else {\r\n if (!tokenizedPaymentCard) {\r\n throw new Error('Fail to placeOrder: no token found');\r\n }\r\n creditCardTenderLinePromise = getCreditCardTenderLine(\r\n ctx,\r\n tokenizedPaymentCard,\r\n cardPrefix,\r\n amountDue,\r\n Currency,\r\n billingAddress\r\n );\r\n }\r\n\r\n getTenderLinePromises.push(creditCardTenderLinePromise);\r\n }\r\n\r\n if (getTenderLinePromises.length > 0) {\r\n // When payment methods is required\r\n cartTenderLines = await Promise.all(getTenderLinePromises).catch(error => {\r\n throw error;\r\n });\r\n\r\n if (!cartTenderLines || cartTenderLines.length === 0) {\r\n throw new Error('Fail to placeOrder: fail to get cart tender lines');\r\n }\r\n }\r\n\r\n const cartVersion = updatedCartVersion || cartState.cart.Version;\r\n\r\n // Proceed checkout\r\n const salesOrder = await checkoutAsync(\r\n { callerContext: ctx, bypassCache: 'get' },\r\n cartState.cart.Id,\r\n guestCheckoutEmail,\r\n undefined,\r\n undefined,\r\n cartTenderLines || null,\r\n cartVersion\r\n ).catch(async error => {\r\n if (checkoutState.shouldEnableSinglePaymentAuthorizationCheckout) {\r\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- unknown type.\r\n if (error.data?.AdditionalContext) {\r\n await checkoutState.updateShouldCollapsePaymentSection({ newShouldCollapsePaymentSection: true });\r\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- unknown type.\r\n await checkoutState.updateRedirectAdditionalContext({\r\n newRedirectAdditionalContext: error?.data?.AdditionalContext as string\r\n });\r\n } else {\r\n await checkoutState.updateIsCheckoutCallFailed({ newIsCheckoutCallFailed: true });\r\n\r\n if (isPaymentVerificationRedirection) {\r\n await checkoutState.checkoutCart.refreshCart({});\r\n }\r\n }\r\n }\r\n\r\n throw error;\r\n });\r\n\r\n if (!salesOrder) {\r\n throw new Error('Fail to placeOrder: fail to checkout');\r\n }\r\n\r\n return salesOrder;\r\n};\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { IActionContext } from '@msdyn365-commerce/core';\r\nimport { getCartState, getCheckoutState } from '@msdyn365-commerce/global-state';\r\n\r\nasync function emptyActiveCart(ctx: IActionContext): Promise {\r\n let cartState;\r\n let checkoutState;\r\n const lineItemIdsToRemove = [];\r\n\r\n // eslint-disable-next-line no-useless-catch\r\n try {\r\n cartState = await getCartState(ctx);\r\n checkoutState = await getCheckoutState(ctx);\r\n } catch (error) {\r\n throw error;\r\n }\r\n\r\n if (!cartState || !cartState.cart) {\r\n throw new Error('Fail to fetch active cart');\r\n }\r\n\r\n if (!checkoutState || !checkoutState.checkoutCart) {\r\n throw new Error('Fail to fetch checkoutCart cart');\r\n }\r\n\r\n const activeCart = cartState.cart;\r\n const checkoutCart = checkoutState.checkoutCart.cart;\r\n\r\n for (const activeCartLine of activeCart.CartLines || []) {\r\n for (const checkoutCartLine of checkoutCart.CartLines || []) {\r\n if (activeCartLine.LineId && activeCartLine.LineId === checkoutCartLine.LineId) {\r\n lineItemIdsToRemove.push(activeCartLine.LineId);\r\n }\r\n }\r\n }\r\n\r\n // eslint-disable-next-line no-useless-catch\r\n try {\r\n await cartState.removeCartLines({ cartLineIds: lineItemIdsToRemove });\r\n await cartState.removeAllPromoCodes({});\r\n await checkoutState.removeCheckoutCartId({});\r\n } catch (error) {\r\n throw error;\r\n }\r\n}\r\n\r\nexport default emptyActiveCart;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport { Cart, CartLineValidationResults } from '@msdyn365-commerce/retail-proxy';\r\nimport { updateLineDeliverySpecificationsAsync, validateForCheckoutAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/CartsDataActions.g';\r\nimport { DeliveryPreferenceType, LineDeliverySpecification, ReleasedProductType, SimpleProduct }\r\n from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\r\nimport { IModuleStateManager, IModuleStateProps, withModuleState } from '@msdyn365-commerce-modules/checkout-utilities';\r\nimport { ArrayExtensions, getAvailabilitiesForCartLineItems, ProductAvailabilitiesForCartLineItems } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { Button, getPayloadObject, getTelemetryAttributes, getTelemetryObject, IModuleProps, INodeProps, ITelemetryContent, TelemetryConstant, Waiting } from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport isEmpty from 'lodash/isEmpty';\r\nimport { computed, reaction, when } from 'mobx';\r\nimport { observer } from 'mobx-react';\r\nimport * as React from 'react';\r\n\r\nimport { IAbsoluteCheckoutData } from './absolute-checkout.data';\r\nimport { ICheckoutHeadingData, IAbsoluteCheckoutProps } from './absolute-checkout.props.autogenerated';\r\nimport AlertComponent from './components/alert';\r\nimport { getInvoicePaymentSummary, IInvoicePaymentSummary } from './components/get-invoice-payment-summary';\r\nimport { getLineItems, ILineItems } from './components/get-line-items';\r\nimport { getOrderSummary, IOrderSummary } from './components/get-order-summary';\r\nimport GuidedFormComponent from './components/guided-form';\r\nimport PlaceOrderButtonComponent from './components/place-order-button';\r\nimport placeOrder from './methods/place-order';\r\n\r\nexport * from './components/get-line-items';\r\nexport * from './components/get-order-summary';\r\n\r\ntype DeviceType = 'Mobile';\r\n\r\ninterface ICheckoutState {\r\n errorMessage: string;\r\n isValidationPassed: boolean;\r\n isPlaceOrderLoading?: boolean;\r\n}\r\n\r\nexport interface ICheckoutViewProps extends IAbsoluteCheckoutProps {\r\n className: string;\r\n canShow?: boolean;\r\n isEmptyCart?: boolean;\r\n isConsentGiven?: boolean;\r\n hasError?: boolean;\r\n cartStatus?: string;\r\n isMobile?: boolean;\r\n isEditorialMode?: boolean;\r\n backToShoppingUrl?: string;\r\n editCartLink?: string;\r\n hasSalesOrder: boolean;\r\n hasInvoiceLine?: boolean;\r\n\r\n checkoutProps: IModuleProps;\r\n headerProps: INodeProps;\r\n bodyProps: INodeProps;\r\n mainProps: INodeProps;\r\n mainControlProps: INodeProps;\r\n sideProps: INodeProps;\r\n sideControlFirstProps: INodeProps;\r\n sideControlSecondProps: INodeProps;\r\n termsAndConditionsProps: INodeProps;\r\n\r\n guidedForm?: React.ReactNode;\r\n title?: React.ReactNode;\r\n loading?: React.ReactNode;\r\n alert?: React.ReactNode;\r\n orderSummary?: IOrderSummary;\r\n invoicePaymentSummary?: IInvoicePaymentSummary;\r\n lineItems?: ILineItems;\r\n placeOrderButton?: React.ReactNode;\r\n termsAndConditions?: React.ReactNode;\r\n keepShoppingButton?: React.ReactNode;\r\n orderConfirmation?: React.ReactNode;\r\n}\r\n\r\nexport interface ICheckoutModuleProps extends IAbsoluteCheckoutProps, IModuleStateProps { }\r\n\r\n/**\r\n *\r\n * CheckoutContainer component.\r\n * @extends {React.Component}\r\n */\r\n// @ts-expect-error\r\n@withModuleState\r\n@observer\r\nclass Checkout extends React.PureComponent {\r\n\r\n @computed get cartStatus(): Msdyn365.AsyncResultStatus {\r\n console.log(\"MYDEBUG-AC: @computed get cartStatus() called\");\r\n return this.props.data.checkout?.status;\r\n }\r\n\r\n @computed get isEmptyCart(): boolean {\r\n console.log(\"MYDEBUG-AC: @computed get isEmptyCart() called\");\r\n if (this.isEditorialMode) {\r\n // Editorial mode: Ignore empty cart\r\n return false;\r\n }\r\n const cart = this.props.data.checkout?.result?.checkoutCart?.cart;\r\n return this.cartStatus === 'SUCCESS' && !!cart && !isEmpty(cart) && (!cart.CartLines || cart.CartLines.length === 0);\r\n }\r\n\r\n @computed get hasError(): boolean {\r\n console.log(\"MYDEBUG-AC: @computed get hasError() called\");\r\n const cart = this.props.data.checkout?.result?.checkoutCart?.cart;\r\n return this.cartStatus === 'FAILED' || (this.cartStatus === 'SUCCESS' && (!cart || isEmpty(cart)));\r\n }\r\n\r\n @computed get isEditorialMode(): boolean {\r\n console.log(\"MYDEBUG-AC: @computed get isEditorialMode() called\");\r\n return this.props.context.request.params.isEditor;\r\n }\r\n\r\n @computed public get isPaymentVerificationRedirection(): boolean {\r\n console.log(\"MYDEBUG-AC: @computed get isPaymentVerificationRedirection() called\");\r\n const { requestFormData, query } = this.props.context.request;\r\n return !!((requestFormData || (query && query.pv === '1')));\r\n }\r\n\r\n @computed get canPlaceOrder(): boolean {\r\n console.log(\"MYDEBUG-AC: @computed get canPlaceOrder() called\");\r\n const isTermsAndConditionAccepted = this.props.data.checkout.result && this.props.data.checkout.result?.isTermsAndConditionAccepted;\r\n\r\n const shouldEnableSinglePaymentAuthorizationCheckout = this.props.data.checkout.result?.shouldEnableSinglePaymentAuthorizationCheckout ?? false;\r\n\r\n // If isTermsAndConditionAccepted is undefined means TermsAndCondition module is not added to page and we should able to place order.\r\n return this.props.moduleState.isReady &&\r\n (isTermsAndConditionAccepted === undefined ||\r\n isTermsAndConditionAccepted ||\r\n shouldEnableSinglePaymentAuthorizationCheckout) &&\r\n ((this.state.errorMessage === '' || shouldEnableSinglePaymentAuthorizationCheckout) || this.isPaymentVerificationRedirection);\r\n }\r\n\r\n @computed get isCartReady(): boolean {\r\n console.log(\"MYDEBUG-AC: @computed get isCartReady() called\");\r\n return !!this.props.data.checkout.result?.checkoutCart?.cart &&\r\n this.props.data.customerInformation.status !== 'LOADING' &&\r\n this.props.data.featureState.status !== 'LOADING';\r\n }\r\n\r\n public state: ICheckoutState = {\r\n errorMessage: '',\r\n isValidationPassed: false,\r\n isPlaceOrderLoading: false\r\n };\r\n\r\n private readonly telemetryContent: ITelemetryContent = getTelemetryObject(this.props.context.request.telemetryPageName!,\r\n this.props.friendlyName,\r\n this.props.telemetry);\r\n\r\n public componentDidMount(): void {\r\n console.log(\"MYDEBUG-AC: componenetDidMount() called\");\r\n const {\r\n resources: { genericErrorMessage }\r\n } = this.props;\r\n\r\n when(\r\n () => this.hasError,\r\n () => {\r\n this.setState({\r\n errorMessage: genericErrorMessage\r\n });\r\n this.props.context.telemetry.error('Failed to get cart');\r\n }\r\n );\r\n\r\n when(\r\n () => {\r\n return this.isEmptyCart;\r\n },\r\n () => {\r\n this.redirectToCartPage('Cart is empty, but no editCartLink found');\r\n }\r\n );\r\n\r\n when(\r\n () => this.isCartReady,\r\n () => {\r\n this.validateForCheckout();\r\n }\r\n );\r\n\r\n reaction(\r\n () => this.props.moduleState.isReady,\r\n () => {\r\n this.onContainerReady();\r\n }\r\n );\r\n\r\n // Reaction to call place order when isPaymentSectionContainerReady is true for new checkout flow.\r\n reaction(\r\n () => this.props.data.checkout.result?.isPaymentSectionContainerReady,\r\n async (isReady) => {\r\n if (this.props.data.checkout.result?.shouldEnableSinglePaymentAuthorizationCheckout && isReady &&\r\n !this.props.data.checkout.result.redirectAdditionalContext) {\r\n if (!this.state.isPlaceOrderLoading) {\r\n this.setState({ isPlaceOrderLoading: true });\r\n }\r\n\r\n await this.onPlaceOrder();\r\n this.setState({ isPlaceOrderLoading: false });\r\n }\r\n }\r\n );\r\n\r\n // Reaction to enable place order button when isPaymentSectionContainerHasError is true for new checkout flow.\r\n reaction(\r\n () => this.props.data.checkout.result?.isPaymentSectionContainerHasError,\r\n (hasError) => {\r\n if (this.props.data.checkout.result?.shouldEnableSinglePaymentAuthorizationCheckout && hasError) {\r\n this.setState({ isPlaceOrderLoading: false });\r\n }\r\n }\r\n );\r\n\r\n // Reaction to enable place order button when redirection is true for new checkout flow.\r\n reaction(\r\n () => this.canPlaceOrder,\r\n async () => {\r\n if (this.props.data.checkout.result?.shouldEnableSinglePaymentAuthorizationCheckout && this.canPlaceOrder) {\r\n const { requestFormData, query } = this.props.context.request;\r\n const isRedirection = !!((requestFormData && query && query.pv === '1'));\r\n if (isRedirection) {\r\n await this.props.data.checkout.result.updateIsPlaceOrderEnabledInRedirection({\r\n newIsPlaceOrderEnabledInRedirection: true\r\n });\r\n }\r\n }\r\n }\r\n );\r\n }\r\n\r\n // eslint-disable-next-line complexity -- ignore the complexity.\r\n public render(): JSX.Element {\r\n console.log(\"MYDEBUG-AC: render() called\");\r\n const {\r\n moduleState,\r\n config: { className, checkoutHeading, disableGuidedCheckoutFlow },\r\n resources\r\n } = this.props;\r\n const { errorMessage } = this.state;\r\n const { backToShopping, placeOrderText, confirmPaymentText, cookieConsentRequiredMessage, genericErrorMessage } = resources;\r\n const checkoutClass = classnames('ms-checkout', className);\r\n const checkoutInformation = this.getSlotItems('checkoutInformation');\r\n\r\n const isConsentGiven =\r\n this.props.context.request &&\r\n this.props.context.request.cookies &&\r\n this.props.context.request.cookies.isConsentGiven &&\r\n this.props.context.request.cookies.isConsentGiven();\r\n\r\n const isMobile =\r\n this.props.context.request &&\r\n this.props.context.request.device &&\r\n (this.props.context.request.device.Type as DeviceType) === 'Mobile';\r\n\r\n const backToShoppingUrl = Msdyn365.getUrlSync('home', this.props.context.actionContext) || '';\r\n const editCartLink = Msdyn365.getUrlSync('cart', this.props.context.actionContext) || '';\r\n\r\n const termsAndConditions =\r\n this.props.slots.termsAndConditions &&\r\n this.props.slots.termsAndConditions.length > 0 &&\r\n this.props.slots.termsAndConditions[0];\r\n\r\n const payLoad = getPayloadObject('click', this.telemetryContent, TelemetryConstant.BackToShopping);\r\n const backToShoppingAttributes = getTelemetryAttributes(this.telemetryContent, payLoad);\r\n\r\n const hasInvoiceLine = this.props.data.checkout && this.props.data.checkout.result?.checkoutCart.hasInvoiceLine;\r\n const checkoutBtnText = hasInvoiceLine ? confirmPaymentText : placeOrderText;\r\n\r\n let viewProps: ICheckoutViewProps = {\r\n ...this.props,\r\n className: checkoutClass,\r\n isEmptyCart: this.isEmptyCart,\r\n isConsentGiven,\r\n hasError: this.hasError,\r\n hasSalesOrder: this.props.data.checkout && this.props.data.checkout.result !== undefined && this.props.data.checkout.result.salesOrder !== undefined,\r\n hasInvoiceLine,\r\n cartStatus: this.cartStatus,\r\n isMobile,\r\n backToShoppingUrl,\r\n editCartLink,\r\n isEditorialMode: this.isEditorialMode,\r\n orderConfirmation: this.props.slots.orderConfirmation && this.props.slots.orderConfirmation.length > 0 ? this.props.slots.orderConfirmation[0] : undefined,\r\n checkoutProps: { moduleProps: this.props, className: checkoutClass },\r\n headerProps: { className: 'ms-checkout__head' },\r\n bodyProps: { className: 'ms-checkout__body' },\r\n mainProps: { className: 'ms-checkout__main' },\r\n mainControlProps: { className: 'ms-checkout__main-control' },\r\n sideProps: { className: 'ms-checkout__side' },\r\n sideControlFirstProps: { className: 'ms-checkout__side-control-first' },\r\n sideControlSecondProps: { className: 'ms-checkout__side-control-second' },\r\n termsAndConditionsProps: { className: 'ms-checkout__terms-and-conditions' },\r\n title: checkoutHeading && (\r\n this.renderMsdyn365Text(checkoutHeading)\r\n )\r\n };\r\n\r\n if (!isConsentGiven) {\r\n viewProps = {\r\n ...viewProps,\r\n alert: \r\n };\r\n } else if (this.isLoading()) {\r\n viewProps = {\r\n ...viewProps,\r\n loading: \r\n };\r\n } else if (this.hasError) {\r\n viewProps = {\r\n ...viewProps,\r\n alert: \r\n };\r\n } else {\r\n const shouldEnableSinglePaymentAuthorizationCheckout: boolean =\r\n this.props.data.checkout.result?.shouldEnableSinglePaymentAuthorizationCheckout ?? false;\r\n\r\n viewProps = {\r\n ...viewProps,\r\n alert: errorMessage && ,\r\n canShow: true,\r\n guidedForm: checkoutInformation ? (\r\n \r\n ) : (\r\n undefined\r\n ),\r\n orderSummary: getOrderSummary(this.props),\r\n invoicePaymentSummary: getInvoicePaymentSummary(this.props),\r\n lineItems: hasInvoiceLine ? undefined : getLineItems(this.props, this.telemetryContent),\r\n placeOrderButton: (\r\n \r\n ),\r\n termsAndConditions,\r\n keepShoppingButton: backToShoppingUrl && (\r\n \r\n {backToShopping}\r\n \r\n )\r\n };\r\n }\r\n\r\n return this.props.renderView(viewProps) as React.ReactElement;\r\n }\r\n\r\n public renderMsdyn365Text(checkoutHeading: ICheckoutHeadingData): React.ReactNode {\r\n console.log(\"MYDEBUG-AC: renderMsdyn365Text() called\");\r\n return (\r\n \r\n );\r\n }\r\n\r\n public handleCheckoutHeadingChange = (event: Msdyn365.ContentEditableEvent) => this.props.config.checkoutHeading!.text = event.target.value;\r\n\r\n private readonly isLoading = (): boolean => {\r\n console.log(\"MYDEBUG-AC: isLoading() called\");\r\n return !this.cartStatus || this.cartStatus === 'LOADING' || this.isEmptyCart || !this.state.isValidationPassed;\r\n };\r\n\r\n private readonly getSlotItems = (key: string): React.ReactNode[] | undefined => {\r\n console.log(\"MYDEBUG-AC: getSlotItems() called\");\r\n const { slots } = this.props;\r\n return slots && slots[key] && slots[key].length > 0 ? slots[key] : undefined;\r\n };\r\n\r\n /**\r\n * Trigger the payment section container submit when placing order.\r\n */\r\n private readonly triggerPaymentWithPlaceOrder = async (): Promise => {\r\n console.log(\"MYDEBUG-AC: triggerPaymentWithPlaceOrder() called\");\r\n this.setState({ isPlaceOrderLoading: true });\r\n\r\n await this.props.data.checkout.result?.updateShouldTriggerPaymentWithPlaceOrder(\r\n { newShouldTriggerPaymentWithPlaceOrder: !this.props.data.checkout.result.shouldTriggerPaymentWithPlaceOrder });\r\n };\r\n\r\n private readonly onPlaceOrder = async (): Promise => {\r\n console.log(\"MYDEBUG-AC: onPlaceOrder() called\");\r\n const {\r\n resources: { checkoutOutOfStockErrorMessage, genericErrorMessage, invalidCartVersionErrorMessage },\r\n context: { actionContext, app: { config: { enableStockCheck = false } } },\r\n slots: { orderConfirmation },\r\n data: { checkout, products }\r\n } = this.props;\r\n\r\n // If hasInvoiceLine is true, no inventory check\r\n if (!this.props.data.checkout.result?.checkoutCart.hasInvoiceLine && enableStockCheck &&\r\n await this.isOverMaxQuantity((await checkout).checkoutCart.cart, (await products))) {\r\n this.setState({\r\n errorMessage: checkoutOutOfStockErrorMessage\r\n });\r\n this.props.context.telemetry.error(checkoutOutOfStockErrorMessage);\r\n } else {\r\n const hasOrderConfirmation = orderConfirmation && orderConfirmation.length > 0;\r\n\r\n const updatedCartVersion = await this.updateCartLineEmailAddress(this.props.data.checkout.result?.guestCheckoutEmail || '');\r\n\r\n await placeOrder(actionContext, this.props.data.checkout.result, this.props.data.products.result,\r\n !hasOrderConfirmation, updatedCartVersion, this.isPaymentVerificationRedirection).catch(error => {\r\n let errorMessage = genericErrorMessage;\r\n\r\n if (error && error.name === 'Microsoft_Dynamics_Commerce_Runtime_InvalidCartVersion') {\r\n errorMessage = invalidCartVersionErrorMessage;\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- unknown error type.\r\n if (this.props.data.checkout.result?.shouldEnableSinglePaymentAuthorizationCheckout && error.data?.AdditionalContext &&\r\n !this.isPaymentVerificationRedirection) {\r\n return;\r\n }\r\n\r\n this.setState({\r\n errorMessage\r\n });\r\n this.props.telemetry.exception(error);\r\n });\r\n }\r\n };\r\n\r\n // Update receipt email address for electronic cart line\r\n // return the updated cart version\r\n private readonly updateCartLineEmailAddress = async (newGuestCheckoutEmail: string): Promise => {\r\n console.log(\"MYDEBUG-AC: updateCartLineEmailAddress() called\");\r\n const emailDeliveryModeCode = this.props.context.request.channel?.EmailDeliveryModeCode;\r\n\r\n const emailDeliveryCartLines = this.props.data.checkout.result?.checkoutCart.cart.CartLines?.filter(\r\n cartLine => (cartLine.DeliveryMode && cartLine.DeliveryMode !== '' && cartLine.DeliveryMode === emailDeliveryModeCode)\r\n );\r\n\r\n let updatedCartVersion: number | undefined;\r\n if (emailDeliveryCartLines && emailDeliveryCartLines.length > 0) {\r\n const lineDeliverySpecifications: LineDeliverySpecification[] = emailDeliveryCartLines.map(line => {\r\n return { LineId: line.LineId,\r\n DeliverySpecification: {\r\n DeliveryModeId: emailDeliveryModeCode,\r\n DeliveryPreferenceTypeValue: DeliveryPreferenceType.ElectronicDelivery,\r\n ElectronicDeliveryEmailAddress: newGuestCheckoutEmail\r\n }\r\n };\r\n });\r\n\r\n await updateLineDeliverySpecificationsAsync(\r\n { callerContext: this.props.context.actionContext },\r\n (await this.props.data.checkout).checkoutCart.cart.Id,\r\n lineDeliverySpecifications\r\n ).then(updatedCart => {\r\n updatedCartVersion = updatedCart.Version;\r\n }).catch(error => {\r\n this.props.context.actionContext.telemetry.exception(error);\r\n throw new Error('[updateLineDeliverySpecificationsAsync] Unable to update electronic delivery email address in cart');\r\n });\r\n }\r\n\r\n return updatedCartVersion;\r\n };\r\n\r\n /**\r\n * Return true if any product in the cart is over its max quantity.\r\n * @param cart -- The checkout cart.\r\n * @param products -- The checkout products.\r\n * @returns -- Is any product in the cart is over max quantity.\r\n */\r\n private readonly isOverMaxQuantity = async (cart: Cart, products: SimpleProduct[]): Promise => {\r\n console.log(\"MYDEBUG-AC: isOverMaxQuantity() called\");\r\n let isOverMaxQuantity = false;\r\n const emailDeliveryModeCode = this.props.context.request.channel?.EmailDeliveryModeCode;\r\n\r\n await getAvailabilitiesForCartLineItems(\r\n new ProductAvailabilitiesForCartLineItems(this.props.context.actionContext.requestContext.apiSettings),\r\n this.props.context.actionContext\r\n ).then(productInventoryInformation => {\r\n cart.CartLines?.map((cartline) => {\r\n\r\n const cartlineProduct = products.find(product => product.RecordId === cartline.ProductId);\r\n const isServiceItem = cartlineProduct?.ItemTypeValue === ReleasedProductType.Service;\r\n\r\n // If product is service item or cartline is electronic delivery, then no inventory check\r\n if (!isServiceItem && cartline.DeliveryMode !== emailDeliveryModeCode && ArrayExtensions.hasElements(productInventoryInformation)) {\r\n const foundProductAvailability = productInventoryInformation.find((productInventory) => {\r\n return productInventory.ProductAvailableQuantity?.ProductId! === cartline.ProductId;\r\n });\r\n\r\n if (!(foundProductAvailability?.IsProductAvailable && foundProductAvailability.ProductAvailableQuantity.AvailableQuantity !== undefined &&\r\n cartline.Quantity && cartline.Quantity <= foundProductAvailability.ProductAvailableQuantity.AvailableQuantity)) {\r\n isOverMaxQuantity = true;\r\n }\r\n }\r\n });\r\n })\r\n .catch(error => {\r\n this.props.context.actionContext.telemetry.exception(error);\r\n throw new Error('[getAvailabilitiesForCartLineItems] Unable to get availabilities for products in checkout cart');\r\n });\r\n\r\n return isOverMaxQuantity;\r\n };\r\n\r\n private readonly getActiveChildModuleStates = (): IModuleStateManager[] => {\r\n console.log(\"MYDEBUG-AC: getActiveChildModuleStates() called\");\r\n const { childIds, getModule } = this.props.moduleState;\r\n return childIds\r\n .map(getModule)\r\n .filter((state): state is IModuleStateManager => !!state && !state.isDisabled && state.hasModuleState);\r\n };\r\n\r\n private readonly onContainerReady = (): void => {\r\n console.log(\"MYDEBUG-AC: onContainerReady() called\");\r\n this.getActiveChildModuleStates().forEach(state => {\r\n state.isReady && state.onContainerReady && state.onContainerReady();\r\n });\r\n };\r\n\r\n private readonly redirectToCartPage = (notFoundEditCartLinkMessage: string): void => {\r\n console.log(\"MYDEBUG-AC: redirectToCartPage() called\");\r\n const editCartLink = Msdyn365.getUrlSync('cart', this.props.context.actionContext) || '';\r\n if (window && editCartLink) {\r\n window.location.assign(editCartLink);\r\n } else {\r\n this.setState({\r\n errorMessage: this.props.resources.genericErrorMessage\r\n });\r\n this.props.context.telemetry.error(notFoundEditCartLinkMessage);\r\n }\r\n };\r\n\r\n private readonly validateForCheckout = (retry: boolean = true): void => {\r\n console.log(\"MYDEBUG-AC: validateForCheckout() called\");\r\n const notFoundEditCartLinkMessage = 'Cart doesn\\'t pass validation, but no editCartLink found';\r\n const cart = this.props.data.checkout.result!.checkoutCart.cart;\r\n const { Id, Version } = cart;\r\n const isOrderQuantityLimitsFeatureEnabledInHq = this.props.data.featureState.result\r\n ?.find(featureState => featureState.Name === 'Dynamics.AX.Application.RetailDefaultOrderQuantityLimitsFeature')?.IsEnabled || false;\r\n const defaultOrderQuantityLimitsFeatureConfig = this.props.context?.request?.app?.platform?.enableDefaultOrderQuantityLimits;\r\n const customerInfo = this.props.data.customerInformation.result;\r\n\r\n const isOrderQuantityLimitsFeatureEnabledInSiteSettings = defaultOrderQuantityLimitsFeatureConfig === 'all' ||\r\n (customerInfo &&\r\n ((defaultOrderQuantityLimitsFeatureConfig === 'b2b' && customerInfo.IsB2b) ||\r\n (defaultOrderQuantityLimitsFeatureConfig === 'b2c' && !customerInfo.IsB2b)));\r\n if (isOrderQuantityLimitsFeatureEnabledInHq && isOrderQuantityLimitsFeatureEnabledInSiteSettings) {\r\n if (Version && Id) {\r\n validateForCheckoutAsync({ callerContext: this.props.context.actionContext, bypassCache: 'none' }, Id, Version)\r\n .then((result: CartLineValidationResults) => {\r\n if (result.ValidationFailuresByCartLines?.length !== 0) {\r\n this.redirectToCartPage(notFoundEditCartLinkMessage);\r\n } else {\r\n this.setState({ isValidationPassed: true });\r\n }\r\n })\r\n .catch((error) => {\r\n this.props.telemetry.warning(error);\r\n this.props.telemetry.debug('Unable to validate Cart');\r\n if (retry && error.name === 'Microsoft_Dynamics_Commerce_Runtime_InvalidCartVersion') {\r\n const cartState = this.props.data.checkout.result?.checkoutCart;\r\n cartState?.refreshCart({})\r\n .then(() => {\r\n this.validateForCheckout(false);\r\n })\r\n .catch((refreshError: Error) => {\r\n this.props.telemetry.warning(refreshError.message);\r\n this.props.telemetry.debug('Unable to refresh Cart');\r\n });\r\n } else {\r\n this.redirectToCartPage(notFoundEditCartLinkMessage);\r\n }\r\n });\r\n } else {\r\n this.redirectToCartPage(notFoundEditCartLinkMessage);\r\n }\r\n } else {\r\n this.setState({ isValidationPassed: true });\r\n }\r\n };\r\n}\r\n\r\nexport default Checkout;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { getUrlSync, IActionContext } from '@msdyn365-commerce/core';\r\nimport { ICheckoutState } from '@msdyn365-commerce/global-state';\r\nimport { SalesOrder, SimpleProduct } from '@msdyn365-commerce/retail-proxy';\r\n\r\nimport checkout from './absolute-checkout';\r\nimport emptyActiveCart from './empty-active-cart';\r\n\r\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\r\nexport default async (\r\n ctx: IActionContext,\r\n checkoutState: ICheckoutState | undefined,\r\n orderedProducts: SimpleProduct[] | undefined,\r\n redirect: boolean,\r\n updatedCartVersion?: number,\r\n isPaymentVerificationRedirection?: boolean\r\n) => {\r\n console.log(\"MYDEBUG-AC-PO.ts export called\");\r\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\r\n //@ts-ignore\r\n // eslint-disable-next-line no-async-promise-executor\r\n return new Promise(async (resolve: () => void, reject: (reason?: Error) => void) => {\r\n let salesOrder: SalesOrder;\r\n\r\n // Proceed checkout\r\n try {\r\n salesOrder = await checkout(ctx, updatedCartVersion, isPaymentVerificationRedirection);\r\n } catch (error) {\r\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\r\n // @ts-ignore\r\n reject(error);\r\n return;\r\n }\r\n\r\n // Remove purchased items from the active cart\r\n try {\r\n await emptyActiveCart(ctx);\r\n } catch (error) {\r\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\r\n //@ts-ignore\r\n reject(error);\r\n return;\r\n }\r\n\r\n if (redirect) {\r\n // Redirect to the order confirmation page\r\n const orderConfirmationUrl = getUrlSync('orderConfirmation', ctx) || '';\r\n if (!orderConfirmationUrl) {\r\n reject(new Error('Error: No orderConfirmationUrl'));\r\n return;\r\n }\r\n\r\n const separator = orderConfirmationUrl.includes('?') ? '&' : '?';\r\n const url = `${orderConfirmationUrl}${separator}transactionId=${salesOrder.Id}`;\r\n window.location.assign(url);\r\n } else {\r\n if (checkoutState) {\r\n const result = await checkoutState.updateSalesOrder({\r\n newSalesOrder: salesOrder,\r\n newOrderedProducts: orderedProducts || []\r\n });\r\n\r\n if (result.status === 'FAILED') {\r\n reject(new Error('Error: Updating error state failed'));\r\n return;\r\n }\r\n } else {\r\n reject(new Error('Error: No checkout state'));\r\n return;\r\n }\r\n resolve();\r\n }\r\n });\r\n};\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { ICheckoutViewProps, ILineItem, ILineItemDeliveryGroup, ILineItems, IOrderSummary, IPickUpAtStore } from './absolute-checkout';\r\nimport { IEmailDelivery } from './components';\r\nimport { IInvoicePaymentSummary } from './components/get-invoice-payment-summary';\r\n\r\nexport const PickUpAtStoreComponent: React.FC = ({ PickUpAtStore, label, location }) => (\r\n \r\n {label}\r\n {location}\r\n \r\n);\r\n\r\nexport const EmailDeliveryComponent: React.FC = ({ EmailDelivery, label }) => (\r\n \r\n {label}\r\n \r\n);\r\n\r\nexport const LineItemComponent: React.FC = ({ LineItem, item, pickUpAtStore, emailDelivery }) => (\r\n \r\n {item}\r\n {pickUpAtStore && }\r\n {emailDelivery && }\r\n \r\n);\r\n\r\nexport const LineItemGroupComponent: React.FC = ({ LineItemDeliveryGroup, LineItemList, heading, lineItems }) => (\r\n \r\n {heading}\r\n \r\n {lineItems.map(lineItem => (\r\n \r\n ))}\r\n \r\n \r\n);\r\n\r\nexport const LineItemGroupComponentWithMultiplePickUp: React.FC = ({ LineItemDeliveryGroup, LineItemList, heading, lineItems, lineItemWraper, lineItemWraperIcon }) => (\r\n \r\n {lineItemWraperIcon}\r\n {lineItemWraper}\r\n {heading}\r\n \r\n {lineItems.map(lineItem => (\r\n \r\n ))}\r\n \r\n \r\n);\r\n\r\nexport const LineItemComponentWithMultiplePickUp: React.FC = ({ LineItem, item, pickUpAtStore, emailDelivery }) => (\r\n \r\n {item}\r\n {emailDelivery && }\r\n \r\n);\r\n\r\nexport const PickUpAtStoreComponentWithMultiplePickUp: React.FC = ({ PickUpAtStore, label, location }) => (\r\n \r\n {label}\r\n {location}\r\n \r\n);\r\n\r\nexport const LineItemsComponent: React.FC = ({ LineItems, Header, heading, editLink, itemsForPickup, itemsForShip, itemsForEmail, itemsGroupWithMulitplePickupMode }) => (\r\n \r\n \r\n {heading}\r\n {editLink}\r\n \r\n {itemsGroupWithMulitplePickupMode === undefined && itemsForPickup && }\r\n {itemsGroupWithMulitplePickupMode === undefined && itemsForEmail && }\r\n {itemsGroupWithMulitplePickupMode === undefined && itemsForShip && }\r\n {itemsGroupWithMulitplePickupMode !== undefined ? itemsGroupWithMulitplePickupMode.map((item, index) => {\r\n return ;\r\n }) : null}\r\n \r\n);\r\n\r\nconst OrderSummaryComponent: React.FC = ({ heading, lines }) => (\r\n
\r\n {heading}\r\n
\r\n {lines && (\r\n <>\r\n {lines.subtotal}\r\n {lines.shipping}\r\n {lines.otherCharge}\r\n {lines.tax}\r\n {lines.totalDiscounts}\r\n {lines.loyalty}\r\n {lines.giftCard}\r\n {lines.orderTotal}\r\n \r\n )}\r\n
\r\n
\r\n);\r\n\r\nconst PaymentSummaryComponent: React.FC = ({ heading, lines }) => (\r\n
\r\n {heading}\r\n
\r\n {lines && (\r\n <>\r\n {lines.invoices}\r\n {lines.giftCard}\r\n {lines.loyalty}\r\n {lines.orderTotal}\r\n \r\n )}\r\n
\r\n
\r\n);\r\n\r\nconst CheckoutView: React.FC = props => {\r\n const {\r\n canShow,\r\n checkoutProps,\r\n headerProps,\r\n hasSalesOrder,\r\n hasInvoiceLine,\r\n bodyProps,\r\n mainProps,\r\n mainControlProps,\r\n sideProps,\r\n sideControlFirstProps,\r\n sideControlSecondProps,\r\n termsAndConditionsProps,\r\n orderConfirmation,\r\n loading,\r\n alert,\r\n title,\r\n guidedForm,\r\n orderSummary,\r\n invoicePaymentSummary,\r\n lineItems,\r\n placeOrderButton,\r\n termsAndConditions,\r\n keepShoppingButton\r\n } = props;\r\n\r\n return (\r\n \r\n {!hasSalesOrder && \r\n {title}\r\n }\r\n {!hasSalesOrder &&\r\n \r\n {loading}\r\n {alert}\r\n {canShow && (\r\n <>\r\n \r\n {guidedForm}\r\n \r\n {termsAndConditions}\r\n \r\n \r\n {placeOrderButton}\r\n {keepShoppingButton}\r\n \r\n \r\n \r\n {!hasInvoiceLine ? orderSummary && : invoicePaymentSummary && }\r\n \r\n \r\n {termsAndConditions}\r\n \r\n {placeOrderButton}\r\n {keepShoppingButton}\r\n \r\n {lineItems && }\r\n \r\n \r\n {termsAndConditions}\r\n \r\n {placeOrderButton}\r\n {keepShoppingButton}\r\n \r\n \r\n \r\n )}\r\n }\r\n {hasSalesOrder && orderConfirmation}\r\n \r\n );\r\n};\r\n\r\nexport default CheckoutView;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport * as React from 'react';\r\n\r\ninterface IAlertProps {\r\n message: string;\r\n}\r\n\r\nconst CheckoutAlert: React.FC = ({ message }) => (\r\n

\r\n {message}\r\n

\r\n);\r\n\r\nexport default CheckoutAlert;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { IInvoiceSummaryLines, InvoiceSummary } from '@msdyn365-commerce-modules/invoice-payment-summary';\r\nimport get from 'lodash/get';\r\nimport * as React from 'react';\r\n\r\nimport { IAbsoluteLayerCheckoutData } from '../absolute-layer-checkout.data';\r\nimport { IAbsoluteLayerCheckoutProps } from '../absolute-layer-checkout.props.autogenerated';\r\n\r\nexport interface IInvoicePaymentSummary {\r\n heading?: React.ReactNode;\r\n lines?: IInvoiceSummaryLines;\r\n}\r\nexport const getInvoicePaymentSummary = (input: IAbsoluteLayerCheckoutProps): IInvoicePaymentSummary => {\r\n const {\r\n data: { checkout },\r\n resources: { totalAmountLabel, invoiceLabel, invoiceSummaryTitle },\r\n context,\r\n typeName,\r\n id,\r\n telemetry\r\n } = input;\r\n\r\n const checkoutCart = get(checkout, 'result.checkoutCart');\r\n const cart = get(checkout, 'result.checkoutCart.cart');\r\n\r\n return {\r\n heading:

{invoiceSummaryTitle}

,\r\n lines: checkoutCart?.hasInvoiceLine\r\n ? InvoiceSummary({\r\n orderTotalLabel: totalAmountLabel,\r\n invoiceLabel,\r\n cart,\r\n context,\r\n typeName,\r\n telemetry,\r\n id,\r\n checkoutState: checkout.result\r\n })\r\n : undefined\r\n };\r\n};\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { CartLineItemComponentNick } from './cartlineitemnick.component';\r\nimport MsDyn365, * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport { CartLine, OrgUnitLocation, SimpleProduct } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\r\nimport { getProductUrlSync, StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\r\nimport {\r\n Button,\r\n getPayloadObject,\r\n getTelemetryAttributes,\r\n INodeProps,\r\n ITelemetryContent,\r\n TelemetryConstant\r\n} from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport get from 'lodash/get';\r\nimport groupBy from 'lodash/groupBy';\r\nimport * as React from 'react';\r\n\r\nimport { IAbsoluteLayerCheckoutData } from '../absolute-layer-checkout.data';\r\nimport { IAbsoluteLayerCheckoutProps } from '../absolute-layer-checkout.props.autogenerated';\r\n\r\ntype deliveryType = 'pickup' | 'ship' | 'email';\r\n\r\nexport interface IPickUpAtStore {\r\n PickUpAtStore: INodeProps;\r\n label: React.ReactNode;\r\n location: React.ReactNode;\r\n}\r\n\r\nexport interface IEmailDelivery {\r\n EmailDelivery: INodeProps;\r\n label: React.ReactNode;\r\n}\r\n\r\nexport interface ILineItem {\r\n LineId: string;\r\n LineItem: INodeProps;\r\n item?: React.ReactNode;\r\n pickUpAtStore?: IPickUpAtStore;\r\n emailDelivery?: IEmailDelivery;\r\n}\r\n\r\nexport interface ILineItemDeliveryGroup {\r\n LineItemDeliveryGroup: INodeProps;\r\n LineItemList: INodeProps;\r\n heading: React.ReactNode;\r\n lineItemWraper?: React.ReactNode;\r\n lineItemWraperIcon?: React.ReactNode;\r\n lineItems: ILineItem[];\r\n}\r\n\r\nexport interface ILineItems {\r\n LineItems: INodeProps;\r\n Header: INodeProps;\r\n heading: React.ReactNode;\r\n editLink: React.ReactNode;\r\n itemsForPickup?: ILineItemDeliveryGroup;\r\n itemsForShip?: ILineItemDeliveryGroup;\r\n itemsForEmail?: ILineItemDeliveryGroup;\r\n itemsGroupWithMulitplePickupMode?: ILineItemDeliveryGroup[];\r\n}\r\n\r\nexport const getLineItems = (input: IAbsoluteLayerCheckoutProps, telemetryContent?: ITelemetryContent): ILineItems | undefined => {\r\n const pickupDeliveryModeCode = get(input, 'context.request.channel.PickupDeliveryModeCode');\r\n const emailDeliveryModeCode = get(input, 'context.request.channel.EmailDeliveryModeCode');\r\n const multiplePickupStoreSwitchName = 'Dynamics.AX.Application.RetailMultiplePickupDeliveryModeFeature';\r\n const { channelDeliveryOptionConfig, featureState } = input.data;\r\n const retailMultiplePickUpOptionEnabled = featureState?.result?.find(feature => feature.Name === multiplePickupStoreSwitchName)\r\n ?.IsEnabled;\r\n\r\n const _getDeliveryLocation = (cartLine: CartLine): string => {\r\n const orgUnitLocations = get(input, 'data.orgUnitLocations.result');\r\n if (!cartLine.FulfillmentStoreId || !orgUnitLocations) {\r\n return '';\r\n }\r\n\r\n const locationMatch = (orgUnitLocations || []).find((location: OrgUnitLocation): boolean => {\r\n return location.OrgUnitNumber === cartLine.FulfillmentStoreId;\r\n });\r\n\r\n return locationMatch && locationMatch.OrgUnitName;\r\n };\r\n\r\n const _getProduct = (productId: number): SimpleProduct | undefined => {\r\n const products = get(input, 'data.products.result') || [];\r\n return products.find((_product: SimpleProduct) => {\r\n return productId === _product.RecordId;\r\n });\r\n };\r\n\r\n const _getLineItemComponent = (cartLine: CartLine): JSX.Element | undefined => {\r\n const product = cartLine.ProductId && _getProduct(cartLine.ProductId);\r\n const {\r\n id,\r\n typeName,\r\n context,\r\n config: { showShippingChargesForLineItems },\r\n resources: {\r\n quantityDisplayString,\r\n productDimensionTypeColor,\r\n productDimensionTypeSize,\r\n productDimensionTypeStyle,\r\n productDimensionTypeAmount,\r\n configString,\r\n inputQuantityAriaLabel,\r\n discountStringText,\r\n shippingCharges\r\n },\r\n context: {\r\n request: { gridSettings }\r\n }\r\n } = input;\r\n\r\n if (!product) {\r\n return;\r\n }\r\n\r\n let productUrl = getProductUrlSync(product, context.actionContext, undefined);\r\n if (MsDyn365.isBrowser) {\r\n const fullUrl = new URL(productUrl, window.location.href);\r\n fullUrl.searchParams.set('catalogid', `${cartLine.CatalogId ?? 0}`);\r\n productUrl = fullUrl.href;\r\n }\r\n\r\n return (\r\n \r\n );\r\n };\r\n\r\n const _getPickUpAtStoreComponents = (pickupDeliveryLocation: string): IPickUpAtStore => {\r\n const {\r\n resources: { pickUpAtStoreWithLocationText }\r\n } = input;\r\n\r\n return {\r\n PickUpAtStore: { className: 'ms-checkout__pick-up-at-store' },\r\n label: {pickUpAtStoreWithLocationText},\r\n location:
{pickupDeliveryLocation}
\r\n };\r\n };\r\n\r\n const _getEmailDeliveryComponents = (): IEmailDelivery => {\r\n const {\r\n resources: { emailDeliveryText }\r\n } = input;\r\n\r\n return {\r\n EmailDelivery: { className: 'ms-checkout__email-delivery' },\r\n label: {emailDeliveryText}\r\n };\r\n };\r\n\r\n const _getLineItemsComponents = (items: CartLine[]): ILineItem[] => {\r\n return items.map(cartLine => {\r\n const pickupDeliveryLocation = _getDeliveryLocation(cartLine);\r\n const isPickUp = _getCartPickDeliveryMode(cartLine);\r\n const isEmailDelivery =\r\n cartLine.DeliveryMode && cartLine.DeliveryMode !== '' ? cartLine.DeliveryMode === emailDeliveryModeCode : false;\r\n return {\r\n LineId: cartLine.LineId || '',\r\n LineItem: { className: 'ms-checkout__line-item' },\r\n item: _getLineItemComponent(cartLine),\r\n pickUpAtStore: isPickUp ? _getPickUpAtStoreComponents(pickupDeliveryLocation) : undefined,\r\n emailDelivery: isEmailDelivery ? _getEmailDeliveryComponents() : undefined\r\n };\r\n });\r\n };\r\n\r\n const _getCartPickDeliveryMode = (cartLineItem: CartLine): boolean => {\r\n return !StringExtensions.isNullOrWhitespace(cartLineItem.DeliveryMode)\r\n ? retailMultiplePickUpOptionEnabled\r\n ? cartLineItem.DeliveryMode ===\r\n channelDeliveryOptionConfig?.result?.PickupDeliveryModeCodes?.find(\r\n deliveryMode => deliveryMode === cartLineItem.DeliveryMode\r\n )\r\n : cartLineItem.DeliveryMode === pickupDeliveryModeCode\r\n : false;\r\n };\r\n\r\n const _getCartShipDeliveryMode = (cartLineItem: CartLine): boolean => {\r\n return !StringExtensions.isNullOrWhitespace(cartLineItem.DeliveryMode)\r\n ? retailMultiplePickUpOptionEnabled\r\n ? cartLineItem.DeliveryMode !==\r\n channelDeliveryOptionConfig?.result?.PickupDeliveryModeCodes?.find(\r\n deliveryMode => deliveryMode === cartLineItem.DeliveryMode\r\n )\r\n : cartLineItem.DeliveryMode !== pickupDeliveryModeCode\r\n : false;\r\n };\r\n\r\n const _getGroupTitleComponent = (count: number, type: deliveryType): string => {\r\n const {\r\n resources: { itemLabel, itemsLabel, inStorePickUpLabel, shippingCountCheckoutLineItem }\r\n } = input;\r\n\r\n let emailDeliveryModeDesc: string = '';\r\n\r\n input.data.deliveryOptions.result?.find(productDeliveryOptions => {\r\n emailDeliveryModeDesc = emailDeliveryModeDesc\r\n ? emailDeliveryModeDesc\r\n : productDeliveryOptions.DeliveryOptions?.find(deliveryOption => deliveryOption.Code === emailDeliveryModeCode)\r\n ?.Description!;\r\n });\r\n\r\n const suffix = count > 1 ? itemsLabel : itemLabel;\r\n const title =\r\n type === 'ship'\r\n ? shippingCountCheckoutLineItem\r\n : type === 'pickup'\r\n ? inStorePickUpLabel\r\n : `${emailDeliveryModeDesc} (${count} ${suffix})`;\r\n return title.replace('{count}', count.toString()).replace('{suffix}', suffix);\r\n };\r\n\r\n const _countItems = (items: CartLine[]): number => {\r\n return items.reduce((count, item) => {\r\n return count + (item.Quantity || 0);\r\n }, 0);\r\n };\r\n\r\n const _filterItemsByDiliveryType = (type: deliveryType): CartLine[] => {\r\n const cart = get(input, 'data.checkout.result.checkoutCart.cart');\r\n if (type === 'ship') {\r\n return cart.CartLines.filter((cartLine: CartLine) =>\r\n cartLine.DeliveryMode && cartLine.DeliveryMode !== ''\r\n ? _getCartShipDeliveryMode(cartLine) && cartLine.DeliveryMode !== emailDeliveryModeCode\r\n : cartLine\r\n );\r\n } else if (type === 'pickup') {\r\n return cart.CartLines.filter((cartLine: CartLine) =>\r\n cartLine.DeliveryMode && cartLine.DeliveryMode !== '' ? _getCartPickDeliveryMode(cartLine) : null\r\n );\r\n }\r\n return cart.CartLines.filter((cartLine: CartLine) => cartLine.DeliveryMode === emailDeliveryModeCode);\r\n };\r\n\r\n const _getLineItemsByDeliveryType = (type: deliveryType): ILineItemDeliveryGroup | undefined => {\r\n if ((pickupDeliveryModeCode === '' || pickupDeliveryModeCode === undefined) && (type === 'pickup' || type === 'email')) {\r\n return;\r\n }\r\n\r\n const items = _filterItemsByDiliveryType(type);\r\n\r\n if (items.length === 0) {\r\n return undefined;\r\n }\r\n\r\n const count = _countItems(items);\r\n const title = _getGroupTitleComponent(count, type);\r\n\r\n return {\r\n LineItemDeliveryGroup: { className: classnames('ms-checkout__line-items-delivery-group', type) },\r\n LineItemList: { className: 'ms-checkout__line-items-list' },\r\n heading:
{title}
,\r\n lineItems: _getLineItemsComponents(items)\r\n };\r\n };\r\n\r\n const _getLineItems = (): ILineItems | undefined => {\r\n const {\r\n context,\r\n config: { lineItemsHeading },\r\n data: { products },\r\n resources: { editCartText }\r\n } = input;\r\n\r\n const payLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.EditCart);\r\n const attribute = getTelemetryAttributes(telemetryContent!, payLoad);\r\n const cart = get(input, 'data.checkout.result.checkoutCart.cart');\r\n const groupClass = retailMultiplePickUpOptionEnabled ? ' multiple-pickup-enabled' : '';\r\n if (!cart || !cart.CartLines || cart.CartLines.length === 0 || !products) {\r\n return undefined;\r\n }\r\n\r\n return {\r\n LineItems: { className: `ms-checkout__line-items${groupClass}` },\r\n Header: { className: 'ms-checkout__line-items-header' },\r\n heading: lineItemsHeading && lineItemsHeading.text && (\r\n \r\n ),\r\n editLink: (\r\n \r\n {editCartText}\r\n \r\n ),\r\n itemsForPickup: _getLineItemsByDeliveryType('pickup'),\r\n itemsForShip: _getLineItemsByDeliveryType('ship'),\r\n itemsForEmail: _getLineItemsByDeliveryType('email'),\r\n itemsGroupWithMulitplePickupMode: retailMultiplePickUpOptionEnabled\r\n ? _getLineItemsByDeliveryTypeWithMulitplePickupMode()\r\n : undefined\r\n };\r\n };\r\n\r\n const handleLineItemHeadingChange = (event: Msdyn365.ContentEditableEvent) => {\r\n const {\r\n config: { lineItemsHeading }\r\n } = input;\r\n if (lineItemsHeading) {\r\n lineItemsHeading.text = event.target.value;\r\n }\r\n };\r\n\r\n const _getGroupTitleComponentWithMultiplePickUp = (\r\n count: number,\r\n type: deliveryType,\r\n deliveryMode?: string,\r\n fulFillmentStoreId?: string\r\n ): string => {\r\n const {\r\n resources: { itemLabel, itemsLabel }\r\n } = input;\r\n\r\n let emailDeliveryModeDesc: string = '';\r\n let pickupDeliveryModeDesc: string = '';\r\n\r\n input.data.deliveryOptions.result?.find(productDeliveryOptions => {\r\n emailDeliveryModeDesc = emailDeliveryModeDesc\r\n ? emailDeliveryModeDesc\r\n : productDeliveryOptions.DeliveryOptions?.find(deliveryOption => deliveryOption.Code === emailDeliveryModeCode)\r\n ?.Description!;\r\n });\r\n\r\n input.data.deliveryOptions.result?.find(productDeliveryOptions => {\r\n pickupDeliveryModeDesc = pickupDeliveryModeDesc\r\n ? pickupDeliveryModeDesc\r\n : productDeliveryOptions.DeliveryOptions?.find(deliveryOption => deliveryOption.Code === deliveryMode)?.Description!;\r\n });\r\n\r\n const pickupTitle: string = `${pickupDeliveryModeDesc}, ${fulFillmentStoreId}`;\r\n const suffix = count > 1 ? itemsLabel : itemLabel;\r\n const title =\r\n type === 'ship'\r\n ? `(${count} ${suffix})`\r\n : type === 'pickup'\r\n ? `${pickupTitle} (${count} ${suffix})`\r\n : `${emailDeliveryModeDesc} (${count} ${suffix})`;\r\n return title.replace('{count}', count.toString()).replace('{suffix}', suffix);\r\n };\r\n\r\n const _filterItemsByMultiplePickupMode = (): CartLine[][] => {\r\n const cart = get(input, 'data.checkout.result.checkoutCart.cart');\r\n const getGroupByStorePickup = (items: CartLine[]) => groupBy(items, item => item.FulfillmentStoreId);\r\n const getGroupByDelivery = (items: CartLine[]) => groupBy(items, item => item.DeliveryMode);\r\n const groupDelivery = getGroupByDelivery(cart.CartLines);\r\n const cartLinesGroup: CartLine[] = [];\r\n const cartLinesGrp: CartLine[][] = [];\r\n\r\n // 1) Group by store and pick up mode\r\n Object.entries(groupDelivery).forEach(([deliveryMode, groupByDeliveryType]) => {\r\n // @ts-expect-error\r\n groupDelivery[deliveryMode] = getGroupByStorePickup(groupByDeliveryType);\r\n cartLinesGroup.push(getGroupByStorePickup(groupByDeliveryType));\r\n });\r\n\r\n Object.keys(cartLinesGroup).forEach(key => {\r\n const cartLines = cartLinesGroup[key];\r\n Object.keys(cartLines).forEach(index => {\r\n const cartLine = cartLines[index];\r\n cartLinesGrp.push(cartLine);\r\n });\r\n });\r\n\r\n return cartLinesGrp;\r\n };\r\n\r\n const _getLineItemsByDeliveryTypeWithMulitplePickupMode = (): ILineItemDeliveryGroup[] | undefined => {\r\n if (pickupDeliveryModeCode === '' || pickupDeliveryModeCode === undefined) {\r\n return;\r\n }\r\n\r\n const {\r\n resources: { multiplePickUpLabel, shippingLable }\r\n } = input;\r\n\r\n const items = _filterItemsByMultiplePickupMode();\r\n\r\n if (items.length === 0) {\r\n return undefined;\r\n }\r\n\r\n const lineItemDeliveryGroup: ILineItemDeliveryGroup[] = [];\r\n items.map(item => {\r\n const count = _countItems(item);\r\n const cartLine = item[0];\r\n const pickupDeliveryLocation = _getDeliveryLocation(cartLine);\r\n const type: deliveryType =\r\n cartLine.FulfillmentStoreId && cartLine.DeliveryMode\r\n ? 'pickup'\r\n : cartLine.FulfillmentStoreId === '' && cartLine.DeliveryMode === emailDeliveryModeCode\r\n ? 'email'\r\n : 'ship';\r\n const title = _getGroupTitleComponentWithMultiplePickUp(count, type, cartLine.DeliveryMode, pickupDeliveryLocation);\r\n const groupTitle = type === 'pickup' ? multiplePickUpLabel : type === 'ship' ? shippingLable : 'email';\r\n const iconClass = `ms-checkout__line-items-group-title-multiple-pickup-${type}icon`;\r\n lineItemDeliveryGroup.push({\r\n LineItemDeliveryGroup: { className: classnames('ms-checkout__line-items-delivery-group multiple-pickup', type) },\r\n LineItemList: { className: 'ms-checkout__line-items-list' },\r\n lineItemWraperIcon:
,\r\n lineItemWraper:
{groupTitle}
,\r\n heading:
{title}
,\r\n lineItems: _getLineItemsComponents(item)\r\n });\r\n });\r\n\r\n return lineItemDeliveryGroup;\r\n };\r\n\r\n return _getLineItems();\r\n};\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\nimport { IComponent, IComponentProps, msdyn365Commerce } from '@msdyn365-commerce/core';\r\nimport { PriceLine, ProductPrice, SalesAgreementPriceLine } from '@msdyn365-commerce/retail-proxy';\r\nimport { Collapse, format, ICollapseProps } from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport * as React from 'react';\r\n\r\nconst defaultPrice: number = 0;\r\nconst freePrice: number = 0;\r\n\r\n/**\r\n * Interface for price component resources.\r\n * @param {string} priceRangeSeparator - The price range separator.\r\n */\r\nexport interface IPriceComponentResources {\r\n priceRangeSeparator?: string;\r\n salesAgreementPricePrompt?: string;\r\n salesAgreementExpirationDatePrompt?: string;\r\n salesAgreementCommittedQuantityPrompt?: string;\r\n salesAgreementRemainingQuantityPrompt?: string;\r\n}\r\n\r\n/**\r\n * Interface for price component props.\r\n * @param {boolean} isPriceMinMaxEnabled - Whether the price range feature is enabled or not.\r\n * @param {IPriceComponentResources} priceResources - The price range resources.\r\n */\r\nexport interface IPriceComponentProps extends IComponentProps<{ price: ProductPrice }> {\r\n className?: string;\r\n savingsText?: string;\r\n freePriceText?: string;\r\n originalPriceText?: string;\r\n currentPriceText?: string;\r\n isPriceMinMaxEnabled?: boolean;\r\n isSalesAgreementPriceFeatureEnabled?: boolean;\r\n salesAgreementLineId?: number;\r\n priceResources?: IPriceComponentResources;\r\n salesAgreementDetailCollapseProps?: ICollapseProps;\r\n salesAgreementDetailOnClick?(event: React.MouseEvent | React.KeyboardEvent): void;\r\n}\r\n\r\n/**\r\n * The interface of price component.\r\n */\r\nexport interface IPriceComponent extends IComponent {}\r\n\r\nconst priceComponentActions = {};\r\n\r\n/**\r\n * Get the original price from price component props.\r\n * @param props - The IPriceComponentProps.\r\n * @returns The original price.\r\n */\r\nconst getOriginalPrice = (props: IPriceComponentProps): number => {\r\n return Math.max(\r\n props.data.price.BasePrice ?? defaultPrice,\r\n props.data.price.TradeAgreementPrice ?? defaultPrice,\r\n props.data.price.AdjustedPrice ?? defaultPrice\r\n );\r\n};\r\n\r\n/**\r\n * Get the formatted currency.\r\n * @param props - The props.\r\n * @param price - The price.\r\n * @param shouldUseFreePriceText - The shouldUseFreePriceText.\r\n * @returns The formatted currency.\r\n */\r\nconst formatCurrency = (props: IPriceComponentProps, price: number | undefined, shouldUseFreePriceText: boolean | undefined): string => {\r\n if (price === undefined) {\r\n return '';\r\n }\r\n\r\n if (shouldUseFreePriceText && price === freePrice && props.freePriceText) {\r\n return props.freePriceText;\r\n }\r\n\r\n return props.context.cultureFormatter.formatCurrency(price);\r\n};\r\n\r\n/**\r\n * ShowStrikethroughPricing.\r\n * @param props - The props.\r\n * @returns True if showStrikethroughPricing, false otherwise.\r\n */\r\nconst showStrikethroughPricing = (props: IPriceComponentProps): boolean => {\r\n const originalPrice = getOriginalPrice(props);\r\n if (\r\n props.isPriceMinMaxEnabled &&\r\n props.data.price.MaxVariantPrice &&\r\n props.data.price.MinVariantPrice &&\r\n props.data.price.MaxVariantPrice > props.data.price.MinVariantPrice\r\n ) {\r\n return props.data.price.MinVariantPrice < originalPrice;\r\n }\r\n\r\n if (originalPrice && props.data.price.CustomerContextualPrice) {\r\n return originalPrice > props.data.price.CustomerContextualPrice;\r\n }\r\n\r\n return false;\r\n};\r\n\r\n/**\r\n * Render current price.\r\n * @param props - The props.\r\n * @returns The JSX.Element.\r\n */\r\nconst renderCurrentPrice = (props: IPriceComponentProps): JSX.Element => {\r\n const maxVariantPrice: string = formatCurrency(props, props.data.price.MaxVariantPrice, false);\r\n const minVariantPrice: string = formatCurrency(props, props.data.price.MinVariantPrice, false);\r\n if (\r\n props.isPriceMinMaxEnabled &&\r\n props.data.price.MaxVariantPrice &&\r\n props.data.price.MinVariantPrice &&\r\n props.data.price.MaxVariantPrice > props.data.price.MinVariantPrice\r\n ) {\r\n return (\r\n \r\n \r\n {minVariantPrice}\r\n \r\n \r\n {props.priceResources?.priceRangeSeparator}\r\n \r\n \r\n {maxVariantPrice}\r\n \r\n \r\n );\r\n }\r\n\r\n return (\r\n <>\r\n 'value': {formatCurrency(props, props.data.price.CustomerContextualPrice, true)}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Render current price with original price.\r\n * @param props - The props.\r\n * @returns The JSX.Element.\r\n */\r\nconst renderCurrentPriceWithOriginalPrice = (props: IPriceComponentProps): JSX.Element => {\r\n const originalPrice: number = getOriginalPrice(props);\r\n const initialPrice: string = formatCurrency(props, originalPrice, true);\r\n\r\n return (\r\n <>\r\n \r\n {` `}\r\n {props.originalPriceText}\r\n {` `}\r\n {initialPrice}\r\n {` `}\r\n {props.currentPriceText}\r\n {` `}\r\n {renderCurrentPrice(props)}\r\n \r\n \r\n \r\n {props.savingsText && {props.savingsText}}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * The state of sales agreement details.\r\n */\r\nexport interface ISalesAgreementDetailState {\r\n isOpen: boolean;\r\n}\r\n\r\n/**\r\n * The SalesAgreementPrice class.\r\n */\r\n// eslint-disable-next-line react/require-optimization -- Not needed.\r\nclass SalesAgreementPrice extends React.Component {\r\n public constructor(props: IPriceComponentProps) {\r\n super(props);\r\n this._toggle = this._toggle.bind(this);\r\n this.state = {\r\n isOpen: true\r\n } as ISalesAgreementDetailState;\r\n }\r\n\r\n public render(): React.ReactElement {\r\n const priceLines: PriceLine[] = this.props.data.price.AttainablePriceLines ?? [];\r\n const firstPriceLine: SalesAgreementPriceLine = priceLines[0] as SalesAgreementPriceLine;\r\n if (this.props.salesAgreementDetailCollapseProps) {\r\n this.props.salesAgreementDetailCollapseProps.isOpen = this.state.isOpen;\r\n }\r\n return (\r\n \r\n

\r\n {formatCurrency(\r\n this.props,\r\n this.props.data.price.SalesAgreementPrice ?? this.props.data.price.CustomerContextualPrice,\r\n true\r\n )}\r\n

\r\n \r\n {this.props.priceResources?.salesAgreementPricePrompt}\r\n

\r\n \r\n

\r\n \r\n {/* Available date */}\r\n {// eslint-disable-next-line prefer-template -- Copied from other class.\r\n ' · ' +\r\n format(\r\n this.props.priceResources?.salesAgreementExpirationDatePrompt ?? '',\r\n this.props.context.cultureFormatter.formatDate(firstPriceLine.EffectiveDate as Date),\r\n this.props.context.cultureFormatter.formatDate(firstPriceLine.ExpirationDate as Date)\r\n )}\r\n \r\n \r\n {/* Quantity commitment */}\r\n {// eslint-disable-next-line prefer-template -- Copied from other class.\r\n ' · ' +\r\n format(\r\n this.props.priceResources?.salesAgreementCommittedQuantityPrompt ?? '',\r\n firstPriceLine.CommittedQuantity\r\n )}\r\n \r\n \r\n {/* Remaining quantity to qualify */}\r\n {// eslint-disable-next-line prefer-template -- Copied from other class.\r\n ' · ' +\r\n format(\r\n this.props.priceResources?.salesAgreementRemainingQuantityPrompt ?? '',\r\n firstPriceLine.RemainingQuantity\r\n )}\r\n \r\n

\r\n
\r\n
\r\n );\r\n }\r\n\r\n /**\r\n * Callback which toggles collapse mode.\r\n * @param event - The mouse or keyboard event.\r\n */\r\n private _toggle(event: React.MouseEvent | React.KeyboardEvent): void {\r\n event.preventDefault();\r\n console.log(this.state.isOpen);\r\n // eslint-disable-next-line react/no-access-state-in-setstate -- Copied from other class.\r\n this.setState({ isOpen: !this.state.isOpen });\r\n console.log(this.state.isOpen);\r\n }\r\n}\r\n\r\n/**\r\n * Price.\r\n * @param props - The props.\r\n * @returns The JSX.Element.\r\n */\r\nconst Price: React.FC = (props: IPriceComponentProps): JSX.Element | null => {\r\n // CustomerContextualPrice could be zero\r\n if (props.data.price.CustomerContextualPrice === undefined) {\r\n return null;\r\n }\r\n\r\n // Determine if contract price is avaiable/applied by:\r\n // isFeatureEnabled and SA price != 0, for PDP.\r\n // SA line id != 0, for cart line.\r\n if (props.isSalesAgreementPriceFeatureEnabled && props.data.price.SalesAgreementPrice !== 0) {\r\n const salesAgreementPrice = new SalesAgreementPrice(props);\r\n return {salesAgreementPrice.render()};\r\n }\r\n\r\n return (\r\n <>\r\n {showStrikethroughPricing(props) ? renderCurrentPriceWithOriginalPrice(props) : renderCurrentPrice(props)}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * The PriceComponent.\r\n */\r\nexport const PriceComponent: React.FunctionComponent = msdyn365Commerce.createComponent('Price', {\r\n component: Price,\r\n ...priceComponentActions\r\n});\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n//import { PriceComponent } from '@msdyn365-commerce/components';\r\nimport { ICoreContext, ITelemetry } from '@msdyn365-commerce/core';\r\nimport { ICheckoutState, IGiftCardExtend } from '@msdyn365-commerce/global-state';\r\nimport { Cart, ChannelConfiguration, ChannelDeliveryOptionConfiguration } from '@msdyn365-commerce/retail-proxy';\r\nimport * as React from 'react';\r\nimport { PriceComponent } from './price.components';\r\n\r\nexport interface IOrderSummaryProps {\r\n subTotalLabel: string;\r\n shippingLabel: string;\r\n taxLabel: string;\r\n orderTotalLabel: string;\r\n loyaltyLabel?: string;\r\n giftcardLabel?: string;\r\n totalDiscountsLabel: string;\r\n context: ICoreContext;\r\n telemetry: ITelemetry;\r\n cart: Cart;\r\n channelConfiguration: ChannelConfiguration;\r\n id: string;\r\n typeName: string;\r\n otherChargeLabel?: string;\r\n freeText?: string;\r\n toBeCalculatedText?: string;\r\n checkoutState?: ICheckoutState;\r\n retailMultiplePickUpOptionEnabled?: boolean;\r\n channelDeliveryOptionConfig?: ChannelDeliveryOptionConfiguration;\r\n isTaxIncludedInPrice?: boolean;\r\n isShowTaxBreakup?: boolean;\r\n}\r\n\r\nexport interface IOrderSummaryLines {\r\n subtotal: React.ReactNode;\r\n shipping?: React.ReactNode;\r\n otherCharge?: React.ReactNode;\r\n tax: React.ReactNode;\r\n orderTotal: React.ReactNode;\r\n totalDiscounts?: React.ReactNode;\r\n giftCard?: React.ReactNode;\r\n loyalty?: React.ReactNode;\r\n}\r\n\r\ninterface IOrderSummaryLineProps {\r\n label: string;\r\n context: ICoreContext;\r\n telemetry: ITelemetry;\r\n price?: number;\r\n freeText?: string;\r\n toBeCalculatedText?: string;\r\n id: string;\r\n typeName: string;\r\n cssLabel: string;\r\n}\r\n\r\ninterface IShippingOrderLine {\r\n cart: Cart;\r\n channelConfiguration: ChannelConfiguration;\r\n canShip?: boolean;\r\n hasDeliveryMethod?: boolean;\r\n hasShippingMethod?: boolean;\r\n freightFee?: number;\r\n}\r\n\r\nconst OrderSummaryLine: React.FC = ({\r\n price,\r\n label,\r\n context,\r\n id,\r\n typeName,\r\n toBeCalculatedText,\r\n freeText,\r\n cssLabel\r\n}) => {\r\n return (\r\n <>\r\n {label}\r\n {price || price === 0 ? (\r\n \r\n ) : (\r\n {toBeCalculatedText}\r\n )}\r\n \r\n );\r\n};\r\n\r\nconst _buildOrderSummarySection = (\r\n props: IOrderSummaryProps,\r\n price: number | undefined,\r\n cssLabel: string,\r\n label: string = ''\r\n): React.ReactNode => {\r\n return (\r\n \r\n );\r\n};\r\n\r\nconst _computedLoyaltyAmount = (checkoutState: ICheckoutState): number => {\r\n return (checkoutState && checkoutState.loyaltyAmount) || 0;\r\n};\r\n\r\nconst _computeGiftCardAmount = (checkoutState: ICheckoutState, cart: Cart): number => {\r\n const giftCardCounter = (count: number, giftCard: IGiftCardExtend) => {\r\n return count + (giftCard.Balance || 0);\r\n };\r\n const giftCardTotalValue = (checkoutState.giftCardExtends || []).reduce(giftCardCounter, 0);\r\n const amount = (cart.TotalAmount || 0) - _computedLoyaltyAmount(checkoutState);\r\n return Math.min(giftCardTotalValue, amount);\r\n};\r\n\r\nconst getDeliveryConfiguration = (\r\n cart: Cart,\r\n channelConfiguration: ChannelConfiguration,\r\n channelDeliveryOptionConfig?: ChannelDeliveryOptionConfiguration,\r\n retailMultiplePickUpOptionEnabled?: boolean,\r\n isTaxIncludedInPrice?: boolean,\r\n isShowTaxBreakup?: boolean\r\n): IShippingOrderLine => {\r\n const pickupDeliveryModeCode = channelConfiguration && channelConfiguration.PickupDeliveryModeCode;\r\n const emailDeliveryModeCode = channelConfiguration && channelConfiguration.EmailDeliveryModeCode;\r\n const cartLines = cart.CartLines || [];\r\n const deliveryModes = cartLines.map(cartLine => cartLine.DeliveryMode);\r\n const taxOnShippingCharge = cart.TaxOnShippingCharge !== undefined ? cart.TaxOnShippingCharge : 0;\r\n const shippingChargeAmount = cart.ShippingChargeAmount !== undefined ? cart.ShippingChargeAmount : 0;\r\n\r\n // isTaxIncludedInPrice isShowTaxBreakup useProperties\r\n // False False/True shippingChargeAmount\r\n // True True shippingChargeAmount\r\n // True false shippingChargeAmount + taxOnShippingCharge\r\n const freightFee = isTaxIncludedInPrice && !isShowTaxBreakup ? shippingChargeAmount + taxOnShippingCharge : cart.ShippingChargeAmount;\r\n\r\n const canShip = deliveryModes.some(\r\n deliveryMode =>\r\n !(\r\n deliveryMode !== '' &&\r\n (deliveryMode ===\r\n getDeliveryMode(deliveryMode, retailMultiplePickUpOptionEnabled, channelDeliveryOptionConfig, pickupDeliveryModeCode) ||\r\n deliveryMode === emailDeliveryModeCode)\r\n )\r\n );\r\n const hasDeliveryMethod = deliveryModes.some(deliveryMode => !!deliveryMode && deliveryMode !== emailDeliveryModeCode);\r\n const hasShippingMethod = deliveryModes.some(\r\n deliveryMode =>\r\n !!deliveryMode &&\r\n deliveryMode !==\r\n getDeliveryMode(deliveryMode, retailMultiplePickUpOptionEnabled, channelDeliveryOptionConfig, pickupDeliveryModeCode) &&\r\n deliveryMode !== emailDeliveryModeCode\r\n );\r\n return {\r\n canShip,\r\n hasDeliveryMethod,\r\n hasShippingMethod,\r\n freightFee\r\n } as IShippingOrderLine;\r\n};\r\n\r\nconst getDeliveryMode = (\r\n deliveryMode?: string,\r\n featureSate: boolean = false,\r\n channelDeliveryOptionConfig?: ChannelDeliveryOptionConfiguration,\r\n pickupDeliveryMode?: string\r\n) => {\r\n if (!featureSate) {\r\n return pickupDeliveryMode;\r\n }\r\n return channelDeliveryOptionConfig?.PickupDeliveryModeCodes?.find(dM => dM === deliveryMode);\r\n};\r\n\r\nexport const OrderSummary = (props: IOrderSummaryProps) => {\r\n const {\r\n SubtotalAmount,\r\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Existing Property.\r\n SubtotalAmountWithoutTax,\r\n TaxAmount,\r\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Existing Property.\r\n TaxOnNonShippingCharges,\r\n DiscountAmountWithoutTax = 0,\r\n TotalAmount,\r\n OtherChargeAmount\r\n } = props.cart;\r\n\r\n const { canShip, hasDeliveryMethod, hasShippingMethod, freightFee } = getDeliveryConfiguration(\r\n props.cart,\r\n props.channelConfiguration,\r\n props.channelDeliveryOptionConfig,\r\n props.retailMultiplePickUpOptionEnabled,\r\n props.isTaxIncludedInPrice,\r\n props.isShowTaxBreakup\r\n );\r\n\r\n const otherChargeAmount = OtherChargeAmount !== undefined ? OtherChargeAmount : 0;\r\n const taxOnNonShippingCharges = TaxOnNonShippingCharges !== undefined ? TaxOnNonShippingCharges : 0;\r\n const isTaxGreaterThanZero = TaxAmount !== undefined && TaxAmount > 0;\r\n // isTaxIncludedInPrice isShowTaxBreakup useProperties\r\n // False False/True otherChargeAmount\r\n // True True otherChargeAmount\r\n // True false otherChargeAmount+TaxOnNonShippingCharges\r\n\r\n const otherChargeAmountTotal =\r\n props.isTaxIncludedInPrice && !props.isShowTaxBreakup ? otherChargeAmount + taxOnNonShippingCharges : otherChargeAmount;\r\n\r\n const subtotalAmountActual = props.isTaxIncludedInPrice && props.isShowTaxBreakup ? SubtotalAmountWithoutTax : SubtotalAmount;\r\n\r\n const reactNodes: IOrderSummaryLines = {\r\n subtotal: _buildOrderSummarySection(props, subtotalAmountActual, 'sub-total', props.subTotalLabel),\r\n tax: props.isShowTaxBreakup\r\n ? _buildOrderSummarySection(\r\n props,\r\n hasDeliveryMethod || isTaxGreaterThanZero ? TaxAmount : undefined,\r\n 'tax-amount',\r\n props.taxLabel\r\n )\r\n : '',\r\n orderTotal: _buildOrderSummarySection(props, TotalAmount, 'total', props.orderTotalLabel),\r\n otherCharge:\r\n (OtherChargeAmount && _buildOrderSummarySection(props, otherChargeAmountTotal, 'other-charges', props.otherChargeLabel)) ||\r\n undefined\r\n };\r\n\r\n if (canShip) {\r\n reactNodes.shipping = _buildOrderSummarySection(props, hasShippingMethod ? freightFee : undefined, 'shipping', props.shippingLabel);\r\n }\r\n if (props.checkoutState) {\r\n const giftCardAmount = _computeGiftCardAmount(props.checkoutState, props.cart);\r\n const loyaltyAmount = _computedLoyaltyAmount(props.checkoutState);\r\n const totalAmountAfterGiftCard = (TotalAmount || 0) - giftCardAmount - loyaltyAmount;\r\n\r\n if (loyaltyAmount > 0) {\r\n reactNodes.loyalty = _buildOrderSummarySection(props, -loyaltyAmount, 'loyalty', props.loyaltyLabel || 'Loyalty amount');\r\n }\r\n\r\n if (giftCardAmount > 0) {\r\n reactNodes.giftCard = _buildOrderSummarySection(props, -giftCardAmount, 'gift-card', props.giftcardLabel || 'Gift card amount');\r\n }\r\n\r\n reactNodes.orderTotal = _buildOrderSummarySection(\r\n { ...props, freeText: undefined },\r\n totalAmountAfterGiftCard,\r\n 'total',\r\n props.orderTotalLabel\r\n );\r\n }\r\n\r\n if (DiscountAmountWithoutTax > 0) {\r\n reactNodes.totalDiscounts = _buildOrderSummarySection(\r\n props,\r\n -DiscountAmountWithoutTax,\r\n 'total-discounts',\r\n props.totalDiscountsLabel\r\n );\r\n }\r\n\r\n return reactNodes;\r\n};\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport { IOrderSummaryLines, OrderSummary } from './order-summary-lineitem';\r\nimport { INodeProps } from '@msdyn365-commerce-modules/utilities';\r\nimport get from 'lodash/get';\r\nimport * as React from 'react';\r\n\r\nimport { IAbsoluteLayerCheckoutData } from '../absolute-layer-checkout.data';\r\nimport { IAbsoluteLayerCheckoutProps } from '../absolute-layer-checkout.props.autogenerated';\r\n\r\nexport interface IOrderSummary {\r\n orderSummaryProps: INodeProps;\r\n heading?: React.ReactNode;\r\n lines?: IOrderSummaryLines;\r\n}\r\nexport const getOrderSummary = (input: IAbsoluteLayerCheckoutProps): IOrderSummary => {\r\n const {\r\n config: { orderSummaryHeading },\r\n data: { checkout },\r\n resources: {\r\n subTotalLabel,\r\n shippingLabel,\r\n taxLabel,\r\n orderTotalLabel,\r\n loyaltyLabel,\r\n giftcardLabel,\r\n totalDiscountsLabel,\r\n freeText,\r\n toBeCalculatedText,\r\n otherCharges\r\n },\r\n context,\r\n typeName,\r\n id,\r\n telemetry\r\n } = input;\r\n\r\n const checkoutState = get(checkout, 'result');\r\n const cart = get(checkout, 'result.checkoutCart.cart');\r\n const showLineItems = cart.CartLines && cart.CartLines.length > 0;\r\n const channelConfiguration = context.request.channel!;\r\n const multiplePickupStoreSwitchName = 'Dynamics.AX.Application.RetailMultiplePickupDeliveryModeFeature';\r\n const { channelDeliveryOptionConfig, featureState } = input.data;\r\n const retailMultiplePickUpOptionEnabled = featureState?.result?.find(feature => feature.Name === multiplePickupStoreSwitchName)\r\n ?.IsEnabled;\r\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- app configs are of generic type\r\n const isShowOrHideTaxEnabled = context.request.app.config.isEnableShowOrHideSalesTaxECommerceEnabled === true;\r\n\r\n const handleOrderSummaryHeadingChange = (event: Msdyn365.ContentEditableEvent) => {\r\n const {\r\n config: { orderSummaryHeading }\r\n } = input;\r\n if (orderSummaryHeading) {\r\n orderSummaryHeading.text = event.target.value;\r\n }\r\n };\r\n\r\n return {\r\n orderSummaryProps: { className: 'ms-checkout-guest-profile__selected-item' },\r\n heading: orderSummaryHeading && orderSummaryHeading.text && (\r\n \r\n ),\r\n lines: showLineItems\r\n ? OrderSummary({\r\n checkoutState,\r\n cart,\r\n subTotalLabel,\r\n shippingLabel,\r\n taxLabel,\r\n orderTotalLabel,\r\n loyaltyLabel,\r\n giftcardLabel,\r\n totalDiscountsLabel,\r\n freeText,\r\n toBeCalculatedText,\r\n context,\r\n typeName,\r\n id,\r\n channelConfiguration,\r\n telemetry,\r\n otherChargeLabel: otherCharges,\r\n retailMultiplePickUpOptionEnabled,\r\n channelDeliveryOptionConfig: channelDeliveryOptionConfig?.result,\r\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- existing property.\r\n isTaxIncludedInPrice: cart.IsTaxIncludedInPrice,\r\n isShowTaxBreakup: isShowOrHideTaxEnabled\r\n })\r\n : undefined\r\n };\r\n};\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { Heading as HeadingType } from '@msdyn365-commerce-modules/data-types';\r\nimport {\r\n Button,\r\n getPayloadObject,\r\n getTelemetryAttributes,\r\n IPayLoad,\r\n ITelemetryContent,\r\n TelemetryConstant\r\n} from '@msdyn365-commerce-modules/utilities';\r\nimport classname from 'classnames';\r\nimport * as React from 'react';\r\n\r\nexport interface ICheckoutGuidedCardProps {\r\n step: number;\r\n title?: HeadingType;\r\n disabled?: boolean; // Module is not available\r\n isActive?: boolean; // Step === currentStep\r\n isVisted?: boolean; // Step < currentStep\r\n isExpanded?: boolean;\r\n isReady?: boolean;\r\n isPending?: boolean;\r\n isUpdating?: boolean;\r\n isSubmitting?: boolean;\r\n isCancelAllowed?: boolean;\r\n isMobile?: boolean;\r\n hasInitialized?: boolean;\r\n hasControlGroup?: boolean;\r\n children: React.ReactNode;\r\n resource: {\r\n checkoutStepTitleFormat: string;\r\n saveBtnLabel: string;\r\n changeBtnLabel: string;\r\n cancelBtnLabel: string;\r\n saveAndContinueBtnLabel: string;\r\n };\r\n telemetryContent?: ITelemetryContent;\r\n onEdit?(): void;\r\n onCancel?(): void;\r\n onSubmit?(): void;\r\n onNext(): void;\r\n}\r\n\r\n/**\r\n *\r\n * CheckoutGuidedCard component.\r\n * @extends {React.Component}\r\n */\r\nclass CheckoutGuidedCard extends React.PureComponent {\r\n private readonly editButtonRef: React.RefObject = React.createRef();\r\n\r\n private readonly formCardRef: React.RefObject = React.createRef();\r\n\r\n private readonly payLoad: IPayLoad;\r\n\r\n constructor(props: ICheckoutGuidedCardProps) {\r\n super(props);\r\n this.payLoad = getPayloadObject('click', props.telemetryContent!, '');\r\n }\r\n\r\n public componentDidUpdate(prevProps: ICheckoutGuidedCardProps): void {\r\n /**\r\n * Move to next step when current step is ready.\r\n */\r\n const { isActive, isReady, onNext, isVisted, onEdit } = this.props;\r\n\r\n // Move to next step after completing the current step\r\n if (isActive && isReady) {\r\n onNext();\r\n }\r\n\r\n // Set the focus to Edit button once edit button appear\r\n // (It happens when current step switch to isReady status)\r\n const prevCanEdit = prevProps.isReady && prevProps.isVisted && !!prevProps.onEdit;\r\n const canEdit = isReady && isVisted && !!onEdit;\r\n if (!prevCanEdit && canEdit) {\r\n this.focusOnEditButton();\r\n this.scrollToTitle();\r\n }\r\n\r\n // Set the focus to the first focusable element\r\n // (It happens when current step switch to isUpdating status)\r\n if (prevProps.isReady && !isReady) {\r\n this.focusOnFirstFocusableElement();\r\n }\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n const {\r\n title,\r\n disabled,\r\n isExpanded,\r\n isActive,\r\n isVisted,\r\n children,\r\n isReady,\r\n isPending,\r\n isUpdating,\r\n hasInitialized,\r\n hasControlGroup,\r\n onEdit,\r\n resource\r\n } = this.props;\r\n const { changeBtnLabel } = resource;\r\n\r\n this.payLoad.contentAction.etext = TelemetryConstant.CheckoutChange;\r\n const changeBtnAttributes = getTelemetryAttributes(this.props.telemetryContent!, this.payLoad);\r\n const canEdit = hasControlGroup && isReady && isVisted && onEdit;\r\n\r\n return (\r\n \r\n
\r\n {this.getTitle()}\r\n\r\n {canEdit && (\r\n \r\n {changeBtnLabel}\r\n \r\n )}\r\n
\r\n\r\n \r\n
{children}
\r\n\r\n {this.renderFooder()}\r\n
\r\n \r\n );\r\n }\r\n\r\n private readonly renderFooder = (): JSX.Element | null => {\r\n const { isVisted, isReady, isSubmitting, isCancelAllowed, hasControlGroup, onCancel, onSubmit, resource } = this.props;\r\n const { saveBtnLabel, cancelBtnLabel, saveAndContinueBtnLabel } = resource;\r\n\r\n const canSubmit = !isReady && onSubmit;\r\n const canCancel = !isReady && isVisted && isCancelAllowed && onCancel;\r\n\r\n if (!hasControlGroup || (!canSubmit && !canCancel)) {\r\n return null;\r\n }\r\n\r\n this.payLoad.contentAction.etext = isVisted ? TelemetryConstant.Save : TelemetryConstant.SaveContinue;\r\n const saveBtnAttributes = getTelemetryAttributes(this.props.telemetryContent!, this.payLoad);\r\n this.payLoad.contentAction.etext = TelemetryConstant.Cancel;\r\n const cancelBtnAttributes = getTelemetryAttributes(this.props.telemetryContent!, this.payLoad);\r\n\r\n return (\r\n
\r\n {canSubmit && (\r\n \r\n {isVisted && isCancelAllowed ? saveBtnLabel : saveAndContinueBtnLabel}\r\n \r\n )}\r\n {canCancel && (\r\n \r\n {cancelBtnLabel}\r\n \r\n )}\r\n
\r\n );\r\n };\r\n\r\n private readonly focusOnFirstFocusableElement = (): void => {\r\n const node = this.formCardRef.current as HTMLElement;\r\n const focussableElements = `\r\n a:not([disabled]),\r\n button:not([disabled]),\r\n input[type=submit]:not([disabled]),\r\n input[type=checkbox]:not([disabled]),\r\n input[type=text]:not([disabled]),\r\n input[type=radio]:not([disabled]),\r\n input[type=password]:not([disabled]),\r\n select:not([disabled]),\r\n textarea:not([disabled]),\r\n [tabindex]:not([disabled]):not([tabindex=\"-1\"])\r\n `;\r\n\r\n const child = node && node.querySelector && (node.querySelector(focussableElements) as HTMLElement);\r\n child && child.focus && child.focus();\r\n };\r\n\r\n private readonly focusOnEditButton = (): void => {\r\n // Focus on edit button\r\n const editButton =\r\n this.editButtonRef &&\r\n this.editButtonRef.current &&\r\n this.editButtonRef.current.focus &&\r\n (this.editButtonRef.current as HTMLElement);\r\n editButton && editButton.focus();\r\n };\r\n\r\n private readonly scrollToTitle = (): void => {\r\n // Scroll window to the title of the step that was just completed only in mobile viewport\r\n const formCard = this.props.isMobile && this.formCardRef && this.formCardRef.current && (this.formCardRef.current as HTMLElement);\r\n formCard && formCard.scrollIntoView();\r\n };\r\n\r\n private readonly getTitle = (): JSX.Element => {\r\n const { step, title } = this.props;\r\n const { headingTag: Tag = 'h2', text = '' } = title || {};\r\n return (\r\n \r\n \r\n {step + 1}. {` `}\r\n \r\n {text && {text}}\r\n \r\n );\r\n };\r\n}\r\n\r\nexport default CheckoutGuidedCard;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { IModuleStateManager } from '@msdyn365-commerce-modules/checkout-utilities';\r\nimport { Heading } from '@msdyn365-commerce-modules/data-types';\r\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\r\nimport get from 'lodash/get';\r\nimport { computed } from 'mobx';\r\nimport { observer } from 'mobx-react';\r\nimport * as React from 'react';\r\n\r\nimport GuidedCard from './guided-card';\r\n\r\nexport interface ICheckoutGuidedFormProps {\r\n items: React.ReactNode[];\r\n moduleState: IModuleStateManager;\r\n disableGuidedCheckoutFlow?: boolean;\r\n isMobile?: boolean;\r\n isEditor?: boolean;\r\n resource: {\r\n checkoutStepTitleFormat: string;\r\n saveBtnLabel: string;\r\n changeBtnLabel: string;\r\n cancelBtnLabel: string;\r\n saveAndContinueBtnLabel: string;\r\n };\r\n telemetryContent?: ITelemetryContent;\r\n isPaymentVerificationRedirection?: boolean;\r\n shouldEnableSinglePaymentAuthorizationCheckout?: boolean;\r\n hasError?: boolean;\r\n hasShippingAddress?: boolean | undefined;\r\n hasCartDeliveryMode?: boolean | undefined;\r\n hasGuestCheckoutEmail?: boolean | undefined;\r\n isTermsAndConditionAccepted?: boolean | undefined;\r\n}\r\n\r\ninterface ICheckoutGuidedFormState {\r\n currentStep: number;\r\n}\r\n\r\nconst paymentInstrumentModuleId = 'payment-instrument';\r\n\r\n/**\r\n *\r\n * CheckoutGuidedForm component.\r\n * @extends {React.Component}\r\n */\r\n@observer\r\nclass CheckoutGuidedForm extends React.PureComponent {\r\n @computed public get hasMissingInfo(): boolean {\r\n if (\r\n this.props.hasShippingAddress === false ||\r\n this.props.hasCartDeliveryMode === false ||\r\n this.props.hasGuestCheckoutEmail === false ||\r\n this.props.isTermsAndConditionAccepted === false\r\n ) {\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n @computed public get hasOrderError(): boolean {\r\n for (const item of this.props.items) {\r\n const childId = this.getId(item);\r\n const state = this.props.moduleState.getModule(childId);\r\n\r\n const isPaymentSectionContainer = ArrayExtensions.hasElements(\r\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- Explicitly check for null/undefined.\r\n state.childIds?.filter(currentId => currentId?.includes(paymentInstrumentModuleId))\r\n );\r\n\r\n if (!isPaymentSectionContainer && !state.isDisabled && state.hasError) {\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n public state: ICheckoutGuidedFormState = {\r\n currentStep: 0\r\n };\r\n\r\n public componentDidMount(): void {\r\n /**\r\n * Append child modules.\r\n */\r\n const childIds = this.props.items.map((item: React.ReactNode) => get(item, 'props.id'));\r\n this.props.moduleState.init({ childIds });\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n const { moduleState, items, resource } = this.props;\r\n if (!items || !moduleState) {\r\n return null;\r\n }\r\n\r\n const shouldCollapseAfterRedirect =\r\n this.props.isPaymentVerificationRedirection &&\r\n this.props.shouldEnableSinglePaymentAuthorizationCheckout &&\r\n !this.props.hasError &&\r\n !this.hasMissingInfo &&\r\n !this.hasOrderError;\r\n\r\n return (\r\n
\r\n {items.map((item: React.ReactNode) => {\r\n const childId = this.getId(item);\r\n const step = this.getStep(childId);\r\n const title = this.getHeading(item);\r\n const state = this.props.moduleState.getModule(childId);\r\n const {\r\n isReady,\r\n isPending,\r\n isUpdating,\r\n isDisabled,\r\n isCancelAllowed,\r\n onEdit,\r\n onCancel,\r\n onSubmit,\r\n hasModuleState,\r\n hasInitialized\r\n } = state || ({} as IModuleStateManager);\r\n return (\r\n \r\n {React.cloneElement(item as React.ReactElement, { enableControl: true })}\r\n \r\n );\r\n })}\r\n
\r\n );\r\n }\r\n\r\n private readonly getEnabledModules = (): string[] => {\r\n const {\r\n moduleState: { childIds, getModule }\r\n } = this.props;\r\n return childIds.filter((childId: string) => {\r\n const state = getModule(childId);\r\n return !!state && !state.isDisabled;\r\n });\r\n };\r\n\r\n private readonly getStep = (id: string): number => {\r\n return this.getEnabledModules().indexOf(id);\r\n };\r\n\r\n private readonly getId = (item: React.ReactNode): string => {\r\n return get(item, 'props.id') || '';\r\n };\r\n\r\n private readonly getHeading = (item: React.ReactNode): Heading => {\r\n return get(item, 'props.config.heading') || '';\r\n };\r\n\r\n private readonly isExpanded = (step: number): boolean => {\r\n if (this.props.isEditor) {\r\n // Editorial mode: Expand all the drawers\r\n return true;\r\n }\r\n return step > -1 && step <= this.state.currentStep;\r\n };\r\n\r\n private readonly isActive = (step: number): boolean => {\r\n return step === this.state.currentStep;\r\n };\r\n\r\n private readonly isVisted = (step: number): boolean => {\r\n return step > -1 && step < this.state.currentStep;\r\n };\r\n\r\n private readonly onNext = (): void => {\r\n this.setState({\r\n currentStep: this.state.currentStep + 1\r\n });\r\n };\r\n}\r\n\r\nexport default CheckoutGuidedForm;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { TelemetryEvent } from '@msdyn365-commerce/core';\r\nimport { Button, getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport React, { useState } from 'react';\r\n\r\ninterface ICheckoutPlaceOrderButtonProps {\r\n canPlaceOrder: boolean;\r\n checkoutBtnText: string;\r\n telemetryContent?: ITelemetryContent;\r\n shouldEnableSinglePaymentAuthorizationCheckout?: boolean;\r\n isPlaceOrderLoading?: boolean;\r\n isExpressCheckoutApplied?: boolean;\r\n isPaymentVerificationRedirection?: boolean;\r\n placeOrder(): Promise;\r\n}\r\n\r\nconst buttonsStates: React.Dispatch>[] = [];\r\n\r\n/**\r\n * On place order function.\r\n * @param isBusy -Check is busy.\r\n * @param canPlaceOrder -Check can place order.\r\n * @param placeOrder -Place order function.\r\n * @returns Set state of button.\r\n */\r\nconst onPlaceOrderHandler = (isBusy: boolean, canPlaceOrder: boolean, placeOrder: () => Promise) => async () => {\r\n if (isBusy || !canPlaceOrder) {\r\n return;\r\n }\r\n buttonsStates.map(buttonSetState => {\r\n buttonSetState(true);\r\n return true;\r\n });\r\n await placeOrder();\r\n};\r\n\r\nconst CheckoutPlaceOrderButton: React.FC = ({\r\n checkoutBtnText,\r\n canPlaceOrder,\r\n placeOrder,\r\n telemetryContent,\r\n shouldEnableSinglePaymentAuthorizationCheckout,\r\n isPlaceOrderLoading,\r\n isExpressCheckoutApplied,\r\n isPaymentVerificationRedirection\r\n}) => {\r\n const [isBusy, setIsBusy] = useState(false);\r\n buttonsStates.push(setIsBusy);\r\n const payload = getPayloadObject(TelemetryEvent.Purchase, telemetryContent!, checkoutBtnText, '');\r\n const attributes = getTelemetryAttributes(telemetryContent!, payload);\r\n\r\n if (shouldEnableSinglePaymentAuthorizationCheckout && (!isExpressCheckoutApplied || isPaymentVerificationRedirection)) {\r\n return (\r\n \r\n {checkoutBtnText}\r\n \r\n );\r\n }\r\n\r\n return (\r\n \r\n {checkoutBtnText}\r\n \r\n );\r\n};\r\n\r\nexport default CheckoutPlaceOrderButton;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { IActionContext } from '@msdyn365-commerce/core';\r\nimport { getCheckoutState } from '@msdyn365-commerce/global-state';\r\nimport { checkoutAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/CartsDataActions.g';\r\nimport { getTenderTypesAsync, resolveCardTypesAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/StoreOperationsDataActions.g';\r\nimport {\r\n Address,\r\n CardPaymentAcceptResult,\r\n CardType,\r\n CartTenderLine,\r\n RetailOperation,\r\n SalesOrder,\r\n TenderType,\r\n TokenizedPaymentCard\r\n} from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\r\n\r\nexport const OPERATIONS = {\r\n PayCard: 201,\r\n PayGiftCertificate: 214,\r\n PayLoyalty: 207,\r\n PayCustomerAccount: 202\r\n};\r\n\r\nconst getCardTypeId = async (ctx: IActionContext, cardPrefix: string = ''): Promise => {\r\n try {\r\n const response = await resolveCardTypesAsync({ callerContext: ctx }, cardPrefix, CardType.Unknown);\r\n if (response && response.length > 0) {\r\n return response[0].TypeId;\r\n }\r\n } catch (error) {\r\n ctx.telemetry.error('Call to resolveCardTypesAsync failed.', error);\r\n }\r\n return undefined;\r\n};\r\n\r\nconst findTenderIdTypeByOperationId = (tenderTypes: TenderType[], operationId: RetailOperation): string | undefined => {\r\n const matchedTenderType = tenderTypes.find(tenderType => tenderType.OperationId === operationId);\r\n if (matchedTenderType) {\r\n return matchedTenderType.TenderTypeId;\r\n }\r\n return;\r\n};\r\n\r\nconst roundNumber = (value: number) => Number(value.toFixed(2));\r\n\r\nasync function getLoyaltyTenderLine(\r\n ctx: IActionContext,\r\n LoyaltyCardId: string,\r\n Amount: number = 0,\r\n Currency: string = 'USD'\r\n): Promise {\r\n const tenderTypes = await getTenderTypesAsync({ callerContext: ctx, queryResultSettings: {} }).catch(error => {\r\n throw error;\r\n });\r\n\r\n if (!tenderTypes) {\r\n throw new Error('Fail to get gift card tender line');\r\n }\r\n\r\n const TenderTypeId = findTenderIdTypeByOperationId(tenderTypes, OPERATIONS.PayLoyalty);\r\n return {\r\n // @ts-expect-error\r\n '@odata.type': '#Microsoft.Dynamics.Commerce.Runtime.DataModel.CartTenderLine',\r\n\r\n 'Amount@odata.type': '#Decimal',\r\n Currency,\r\n TenderTypeId,\r\n Amount,\r\n LoyaltyCardId\r\n };\r\n}\r\n\r\nasync function getGiftCardTenderLine(\r\n ctx: IActionContext,\r\n GiftCardId: string = '',\r\n Amount: number = 0,\r\n Currency: string = 'USD',\r\n tenderTypeId?: string,\r\n giftCardPin?: string,\r\n giftCardExpirationYear?: number,\r\n giftCardExpirationMonth?: number\r\n): Promise {\r\n let TenderTypeId = tenderTypeId;\r\n\r\n if (!TenderTypeId) {\r\n const tenderTypes = await getTenderTypesAsync({ callerContext: ctx, queryResultSettings: {} }).catch(error => {\r\n throw error;\r\n });\r\n if (!tenderTypes) {\r\n throw new Error('Fail to get gift card tender line');\r\n }\r\n TenderTypeId = findTenderIdTypeByOperationId(tenderTypes, OPERATIONS.PayGiftCertificate);\r\n }\r\n\r\n const GiftCardPin = giftCardPin;\r\n const GiftCardExpirationYear = giftCardExpirationYear;\r\n const GiftCardExpirationMonth = giftCardExpirationMonth;\r\n return {\r\n // @ts-expect-error\r\n '@odata.type': '#Microsoft.Dynamics.Commerce.Runtime.DataModel.CartTenderLine',\r\n 'Amount@odata.type': '#Decimal',\r\n Currency,\r\n TenderTypeId,\r\n Amount,\r\n GiftCardId,\r\n GiftCardPin,\r\n GiftCardExpirationYear,\r\n GiftCardExpirationMonth\r\n };\r\n}\r\n\r\nasync function getCreditCardTenderLine(\r\n ctx: IActionContext,\r\n tokenizedPaymentCard: TokenizedPaymentCard,\r\n cardPrefix: string = '',\r\n Amount: number = 0,\r\n Currency: string = 'USD',\r\n billingAddress?: Address\r\n): Promise {\r\n const tenderTypes = await getTenderTypesAsync({ callerContext: ctx, queryResultSettings: {} }).catch(error => {\r\n throw error;\r\n });\r\n\r\n let cartTypeId = tokenizedPaymentCard.CardTypeId;\r\n\r\n if (!cartTypeId) {\r\n cartTypeId = await getCardTypeId(ctx, cardPrefix);\r\n }\r\n\r\n if (!tenderTypes) {\r\n throw new Error('Fail to get card tender type');\r\n }\r\n\r\n if (!cartTypeId) {\r\n throw new Error('Fail to get card type id');\r\n }\r\n\r\n const TenderTypeId = tokenizedPaymentCard.TenderType ?? findTenderIdTypeByOperationId(tenderTypes, OPERATIONS.PayCard);\r\n const cardTenderLine: CartTenderLine = {\r\n // @ts-expect-error\r\n '@odata.type': '#Microsoft.Dynamics.Commerce.Runtime.DataModel.CartTenderLine',\r\n 'Amount@odata.type': '#Decimal',\r\n Currency,\r\n Amount,\r\n TenderTypeId,\r\n CardTypeId: cartTypeId\r\n };\r\n cardTenderLine.TokenizedPaymentCard = {\r\n ...tokenizedPaymentCard,\r\n CardTypeId: cartTypeId,\r\n\r\n // @ts-expect-error\r\n '@odata.type': '#Microsoft.Dynamics.Commerce.Runtime.DataModel.TokenizedPaymentCard',\r\n House: tokenizedPaymentCard.House || 'N/A',\r\n ...(tokenizedPaymentCard.CardTokenInfo && {\r\n CardTokenInfo: {\r\n ...tokenizedPaymentCard.CardTokenInfo,\r\n '@odata.type': '#Microsoft.Dynamics.Commerce.Runtime.DataModel.CardTokenInfo'\r\n }\r\n }),\r\n ...(billingAddress && {\r\n Phone: billingAddress.Phone,\r\n Country: billingAddress.ThreeLetterISORegionName,\r\n Address1: billingAddress.Street,\r\n City: billingAddress.City,\r\n State: billingAddress.State,\r\n Zip: billingAddress.ZipCode\r\n })\r\n };\r\n\r\n return cardTenderLine;\r\n}\r\n\r\n/**\r\n * Get credit card tender line.\r\n * @param context - Action context.\r\n * @param amount - Due amount for credit card.\r\n * @param currency - Currency.\r\n * @param cardPaymentAcceptResult - CardPaymentAcceptResult.\r\n * @param billingAddress - BillingAddress.\r\n * @returns - The credit card tender line.\r\n */\r\nasync function getCreditCardTenderLineForSinglePaymentAuth(\r\n context: IActionContext,\r\n amount: number = 0,\r\n currency: string = 'USD',\r\n cardPaymentAcceptResult?: CardPaymentAcceptResult,\r\n billingAddress?: Address\r\n): Promise {\r\n const tenderTypes = await getTenderTypesAsync({ callerContext: context, queryResultSettings: {} }).catch(error => {\r\n throw error;\r\n });\r\n\r\n const tenderTypeId = findTenderIdTypeByOperationId(tenderTypes, OPERATIONS.PayCard);\r\n\r\n if (cardPaymentAcceptResult) {\r\n cardPaymentAcceptResult.TokenizedPaymentCard = {\r\n // @ts-expect-error\r\n '@odata.type': '#Microsoft.Dynamics.Commerce.Runtime.DataModel.TokenizedPaymentCard',\r\n House: 'N/A',\r\n ...(billingAddress && {\r\n Phone: billingAddress.Phone,\r\n Country: billingAddress.ThreeLetterISORegionName,\r\n Address1: billingAddress.Street,\r\n City: billingAddress.City,\r\n State: billingAddress.State,\r\n Zip: billingAddress.ZipCode\r\n })\r\n };\r\n }\r\n\r\n const cardTenderLine: CartTenderLine = {\r\n // @ts-expect-error -- existing data.\r\n '@odata.type': '#Microsoft.Dynamics.Commerce.Runtime.DataModel.CartTenderLine',\r\n 'Amount@odata.type': '#Decimal',\r\n Currency: currency,\r\n Amount: amount,\r\n TenderTypeId: tenderTypeId,\r\n CardPaymentAcceptResult: cardPaymentAcceptResult\r\n };\r\n\r\n return cardTenderLine;\r\n}\r\n\r\nasync function createCustomerAccountTenderLine(ctx: IActionContext, Amount: number, Currency: string = 'USD'): Promise {\r\n const CustomerId = null;\r\n if (!ctx.requestContext.user.isAuthenticated) {\r\n ctx.telemetry.error('A customer id is required to pay with customer account');\r\n }\r\n\r\n const tenderTypes = await getTenderTypesAsync({ callerContext: ctx, queryResultSettings: {} }).catch(error => {\r\n throw error;\r\n });\r\n\r\n if (!tenderTypes) {\r\n ctx.telemetry.error('No tender types found for this channel');\r\n }\r\n\r\n const TenderTypeId = findTenderIdTypeByOperationId(tenderTypes, OPERATIONS.PayCustomerAccount);\r\n if (!TenderTypeId) {\r\n ctx.telemetry.error('No customer account tender type');\r\n }\r\n return {\r\n '@odata.type': '#Microsoft.Dynamics.Commerce.Runtime.DataModel.CartTenderLine',\r\n 'Amount@odata.type': '#Decimal',\r\n Currency,\r\n TenderTypeId,\r\n Amount,\r\n\r\n // @ts-expect-error\r\n CustomerId\r\n };\r\n}\r\n\r\nexport default async (\r\n ctx: IActionContext,\r\n updatedCartVersion?: number,\r\n isPaymentVerificationRedirection?: boolean\r\n): Promise => {\r\n const checkoutState = await getCheckoutState(ctx).catch(error => {\r\n throw error;\r\n });\r\n\r\n const cartState = checkoutState.checkoutCart;\r\n\r\n const channelConfiguration = ctx.requestContext.channel;\r\n\r\n if (!cartState || Object.keys(cartState).length === 0 || !channelConfiguration) {\r\n throw new Error('Fail to placeOrder');\r\n }\r\n\r\n const {\r\n giftCardExtends,\r\n tokenizedPaymentCard,\r\n cardPrefix,\r\n guestCheckoutEmail,\r\n billingAddress,\r\n loyaltyAmount,\r\n cardPaymentAcceptResult,\r\n shouldEnableSinglePaymentAuthorizationCheckout,\r\n isExpressCheckoutApplied,\r\n isExpressAddressApplied\r\n } = checkoutState;\r\n const { Currency } = channelConfiguration;\r\n\r\n let amountDue = cartState.cart.AmountDue || 0;\r\n let cartTenderLines;\r\n const getTenderLinePromises = [];\r\n const loyaltyCardNumber = cartState.cart.LoyaltyCardId;\r\n\r\n // Pay by loyalty first\r\n if (loyaltyAmount && loyaltyCardNumber) {\r\n const chargedAmount = roundNumber(Math.min(loyaltyAmount, amountDue));\r\n const loyaltyTenderLinePromise = getLoyaltyTenderLine(ctx, loyaltyCardNumber, chargedAmount, Currency);\r\n getTenderLinePromises.push(loyaltyTenderLinePromise);\r\n amountDue = roundNumber(amountDue - chargedAmount);\r\n\r\n ctx.telemetry.information('Checkout loyalty tender line is added.');\r\n } else {\r\n ctx.telemetry.information('Checkout loyalty tender line is not added when no loyaltyAmount or loyaltyCardNumber.');\r\n }\r\n\r\n // Then by gift card\r\n if (giftCardExtends && giftCardExtends.length > 0) {\r\n giftCardExtends.some(giftCardExtend => {\r\n if (giftCardExtend.Balance && amountDue > 0) {\r\n const chargedAmount = roundNumber(Math.min(giftCardExtend.Balance, amountDue));\r\n const tenderTypeId = giftCardExtend.TenderTypeId;\r\n const giftCardPin = giftCardExtend.Pin;\r\n const giftCardExpirationYear = giftCardExtend.ExpirationDate\r\n ? Number.parseInt(giftCardExtend.ExpirationDate?.split('/')[1], 10)\r\n : undefined;\r\n const giftCardExpirationMonth = giftCardExtend.ExpirationDate\r\n ? Number.parseInt(giftCardExtend.ExpirationDate?.split('/')[0], 10)\r\n : undefined;\r\n const creditCardTenderLinePromise = getGiftCardTenderLine(\r\n ctx,\r\n giftCardExtend.Id,\r\n chargedAmount,\r\n Currency,\r\n tenderTypeId,\r\n giftCardPin,\r\n giftCardExpirationYear,\r\n giftCardExpirationMonth\r\n );\r\n getTenderLinePromises.push(creditCardTenderLinePromise);\r\n amountDue = roundNumber(amountDue - chargedAmount);\r\n\r\n ctx.telemetry.information('Checkout gift card tender line is added.');\r\n } else {\r\n ctx.telemetry.information('Checkout gift card tender line is not added when no balance or no remaining balance.');\r\n }\r\n return amountDue === 0;\r\n });\r\n }\r\n\r\n // Then by customer account\r\n if (checkoutState.customerAccountAmount > 0) {\r\n const chargedAmount = roundNumber(Math.min(checkoutState.customerAccountAmount, amountDue));\r\n const customerAccountTenderLinePromise = createCustomerAccountTenderLine(ctx, chargedAmount, Currency);\r\n getTenderLinePromises.push(customerAccountTenderLinePromise);\r\n amountDue = roundNumber(amountDue - chargedAmount);\r\n\r\n ctx.telemetry.information('Checkout customer account amount tender line is added.');\r\n } else {\r\n ctx.telemetry.information('Checkout customer account amount tender line is not added when customerAccountAmount is 0.');\r\n }\r\n\r\n // Pay the rest by credit card\r\n if (amountDue > 0) {\r\n let creditCardTenderLinePromise: Promise;\r\n\r\n if (\r\n shouldEnableSinglePaymentAuthorizationCheckout &&\r\n (!(isExpressCheckoutApplied && !isExpressAddressApplied) || (isExpressCheckoutApplied && isPaymentVerificationRedirection))\r\n ) {\r\n creditCardTenderLinePromise = getCreditCardTenderLineForSinglePaymentAuth(\r\n ctx,\r\n amountDue,\r\n Currency,\r\n cardPaymentAcceptResult,\r\n billingAddress\r\n );\r\n } else {\r\n if (!tokenizedPaymentCard) {\r\n throw new Error('Fail to placeOrder: no token found');\r\n }\r\n creditCardTenderLinePromise = getCreditCardTenderLine(\r\n ctx,\r\n tokenizedPaymentCard,\r\n cardPrefix,\r\n amountDue,\r\n Currency,\r\n billingAddress\r\n );\r\n }\r\n\r\n getTenderLinePromises.push(creditCardTenderLinePromise);\r\n\r\n ctx.telemetry.information('Checkout credit card tender line is added.');\r\n } else {\r\n ctx.telemetry.information('Checkout credit card tender line is not added when no remaining balance for credit card.');\r\n }\r\n\r\n if (getTenderLinePromises.length > 0) {\r\n // When payment methods is required\r\n cartTenderLines = await Promise.all(getTenderLinePromises).catch(error => {\r\n throw error;\r\n });\r\n\r\n if (!cartTenderLines || cartTenderLines.length === 0) {\r\n throw new Error('Fail to placeOrder: fail to get cart tender lines');\r\n }\r\n } else {\r\n ctx.telemetry.information('TenderLinePromises length is 0.');\r\n }\r\n\r\n const cartVersion = updatedCartVersion || cartState.cart.Version;\r\n\r\n ctx.telemetry.information('Checkout checkoutAsync is called.');\r\n\r\n // Proceed checkout\r\n const salesOrder = await checkoutAsync(\r\n { callerContext: ctx, bypassCache: 'get' },\r\n cartState.cart.Id,\r\n guestCheckoutEmail,\r\n undefined,\r\n undefined,\r\n cartTenderLines || null,\r\n cartVersion\r\n ).catch(async error => {\r\n if (checkoutState.shouldEnableSinglePaymentAuthorizationCheckout) {\r\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- unknown type.\r\n if (error.data?.AdditionalContext) {\r\n ctx.telemetry.warning('CheckoutAsync call failed. AdditionalContext is sent for single payment auth.');\r\n\r\n await checkoutState.updateShouldCollapsePaymentSection({ newShouldCollapsePaymentSection: true });\r\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- unknown type.\r\n await checkoutState.updateRedirectAdditionalContext({\r\n newRedirectAdditionalContext: error?.data?.AdditionalContext as string\r\n });\r\n await checkoutState.updateRedirectPaymentConnectorId({\r\n newRedirectPaymentConnectorId: cardPaymentAcceptResult?.Settings?.PaymentConnectorId as string\r\n });\r\n } else {\r\n ctx.telemetry.warning('CheckoutAsync call failed. AdditionalContext is not sent for single payment auth.');\r\n\r\n await checkoutState.updateIsCheckoutCallFailed({ newIsCheckoutCallFailed: true });\r\n\r\n await checkoutState.updateCheckoutErrorPaymentConnectorId({\r\n newCheckoutErrorPaymentConnectorId: cardPaymentAcceptResult?.Settings?.PaymentConnectorId as string\r\n });\r\n\r\n if (isPaymentVerificationRedirection) {\r\n ctx.telemetry.warning('RefreshCart when isPaymentVerificationRedirection is true.');\r\n\r\n await checkoutState.checkoutCart.refreshCart({});\r\n await checkoutState.updateIsExpressCheckoutApplied({ newIsExpressCheckoutApplied: false });\r\n await checkoutState.updateShouldCollapsePaymentSection({ newShouldCollapsePaymentSection: false });\r\n }\r\n }\r\n }\r\n\r\n throw error;\r\n });\r\n\r\n if (!salesOrder) {\r\n ctx.telemetry.error('Failed to placeOrder: fail to checkout.');\r\n throw new Error('Fail to placeOrder: fail to checkout');\r\n }\r\n\r\n return salesOrder;\r\n};\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { IActionContext } from '@msdyn365-commerce/core';\r\nimport { getCartState, getCheckoutState } from '@msdyn365-commerce/global-state';\r\n\r\nasync function emptyActiveCart(ctx: IActionContext): Promise {\r\n let cartState;\r\n let checkoutState;\r\n const lineItemIdsToRemove = [];\r\n\r\n try {\r\n cartState = await getCartState(ctx);\r\n checkoutState = await getCheckoutState(ctx);\r\n } catch (error) {\r\n throw error;\r\n }\r\n\r\n if (!cartState || !cartState.cart) {\r\n throw new Error('Fail to fetch active cart');\r\n }\r\n\r\n if (!checkoutState || !checkoutState.checkoutCart) {\r\n throw new Error('Fail to fetch checkoutCart cart');\r\n }\r\n\r\n const activeCart = cartState.cart;\r\n const checkoutCart = checkoutState.checkoutCart.cart;\r\n\r\n for (const activeCartLine of activeCart.CartLines || []) {\r\n for (const checkoutCartLine of checkoutCart.CartLines || []) {\r\n if (activeCartLine.LineId && activeCartLine.LineId === checkoutCartLine.LineId) {\r\n lineItemIdsToRemove.push(activeCartLine.LineId);\r\n }\r\n }\r\n }\r\n\r\n try {\r\n await cartState.removeCartLines({ cartLineIds: lineItemIdsToRemove });\r\n await cartState.removeAllPromoCodes({});\r\n await checkoutState.removeCheckoutCartId({});\r\n } catch (error) {\r\n throw error;\r\n }\r\n}\r\n\r\nexport default emptyActiveCart;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport { Cart, CartLineValidationResults } from '@msdyn365-commerce/retail-proxy';\r\nimport {\r\n updateLineDeliverySpecificationsAsync,\r\n validateForCheckoutAsync\r\n} from '@msdyn365-commerce/retail-proxy/dist/DataActions/CartsDataActions.g';\r\nimport {\r\n DeliveryPreferenceType,\r\n LineDeliverySpecification,\r\n SimpleProduct\r\n} from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\r\nimport { IModuleStateManager, IModuleStateProps, withModuleState } from '@msdyn365-commerce-modules/checkout-utilities';\r\nimport {\r\n ArrayExtensions,\r\n getAvailabilitiesForCartLineItems,\r\n IProductInventoryInformation,\r\n ProductAvailabilitiesForCartLineItems,\r\n validateCartLinesInventory\r\n} from '@msdyn365-commerce-modules/retail-actions';\r\nimport {\r\n Button,\r\n getPayloadObject,\r\n getTelemetryAttributes,\r\n getTelemetryObject,\r\n IModuleProps,\r\n INodeProps,\r\n ITelemetryContent,\r\n TelemetryConstant,\r\n Waiting\r\n} from '@msdyn365-commerce-modules/utilities';\r\nimport { ErrorLocation } from '@msdyn365-commerce/global-state';\r\nimport classnames from 'classnames';\r\nimport isEmpty from 'lodash/isEmpty';\r\nimport { action, computed, reaction, when } from 'mobx';\r\nimport { observer } from 'mobx-react';\r\nimport * as React from 'react';\r\n\r\nimport { IAbsoluteLayerCheckoutData } from './absolute-layer-checkout.data';\r\nimport { ICheckoutHeadingData, IAbsoluteLayerCheckoutProps } from './absolute-layer-checkout.props.autogenerated';\r\nimport AlertComponent from './components/alert';\r\nimport { getInvoicePaymentSummary, IInvoicePaymentSummary } from './components/get-invoice-payment-summary';\r\nimport { getLineItems, ILineItems } from './components/get-line-items';\r\nimport { getOrderSummary, IOrderSummary } from './components/get-order-summary';\r\nimport GuidedFormComponent from './components/guided-form';\r\nimport PlaceOrderButtonComponent from './components/place-order-button';\r\nimport placeOrder from './methods/place-order';\r\n\r\nexport * from './components/get-line-items';\r\nexport * from './components/get-order-summary';\r\n\r\n/**\r\n * Device type.\r\n */\r\ntype DeviceType = 'Mobile';\r\n\r\n/**\r\n * The Checkout state.\r\n */\r\ninterface ICheckoutState {\r\n errorMessage: string;\r\n isValidationPassed: boolean;\r\n isPlaceOrderLoading?: boolean;\r\n}\r\n\r\n/**\r\n * The Checkout view props.\r\n * @extends IAbsoluteLayerCheckoutProps\r\n */\r\nexport interface ICheckoutViewProps extends IAbsoluteLayerCheckoutProps {\r\n className: string;\r\n canShow?: boolean;\r\n isEmptyCart?: boolean;\r\n isConsentGiven?: boolean;\r\n hasError?: boolean;\r\n isPaymentVerificationRedirection?: boolean;\r\n shouldEnableSinglePaymentAuthorizationCheckout?: boolean;\r\n cartStatus?: string;\r\n isMobile?: boolean;\r\n isEditorialMode?: boolean;\r\n backToShoppingUrl?: string;\r\n editCartLink?: string;\r\n hasSalesOrder: boolean;\r\n hasInvoiceLine?: boolean;\r\n\r\n checkoutProps: IModuleProps;\r\n headerProps: INodeProps;\r\n bodyProps: INodeProps;\r\n mainProps: INodeProps;\r\n mainControlProps: INodeProps;\r\n sideProps: INodeProps;\r\n sideControlFirstProps: INodeProps;\r\n sideControlSecondProps: INodeProps;\r\n termsAndConditionsProps: INodeProps;\r\n\r\n guidedForm?: React.ReactNode;\r\n title?: React.ReactNode;\r\n loading?: React.ReactNode;\r\n alert?: React.ReactNode;\r\n orderSummary?: IOrderSummary;\r\n invoicePaymentSummary?: IInvoicePaymentSummary;\r\n lineItems?: ILineItems;\r\n placeOrderButton?: React.ReactNode;\r\n termsAndConditions?: React.ReactNode;\r\n keepShoppingButton?: React.ReactNode;\r\n orderConfirmation?: React.ReactNode;\r\n\r\n checkoutExpressPaymentContainer?: React.ReactNode;\r\n}\r\n\r\n/**\r\n * The checkout module props interface.\r\n */\r\nexport interface ICheckoutModuleProps extends IAbsoluteLayerCheckoutProps, IModuleStateProps {}\r\n\r\nconst expressPaymentSectionClassName = 'msc-express-payment-container';\r\n\r\n/**\r\n *\r\n * CheckoutContainer component.\r\n * @extends {React.Component}\r\n */\r\n// @ts-expect-error\r\n@withModuleState\r\n@observer\r\nclass Checkout extends React.PureComponent {\r\n @computed get cartStatus(): Msdyn365.AsyncResultStatus {\r\n return this.props.data.checkout?.status;\r\n }\r\n\r\n @computed get isEmptyCart(): boolean {\r\n if (this.isEditorialMode) {\r\n // Editorial mode: Ignore empty cart\r\n return false;\r\n }\r\n const cart = this.props.data.checkout?.result?.checkoutCart?.cart;\r\n return this.cartStatus === 'SUCCESS' && !!cart && !isEmpty(cart) && (!cart.CartLines || cart.CartLines.length === 0);\r\n }\r\n\r\n @computed get hasError(): boolean {\r\n const cart = this.props.data.checkout?.result?.checkoutCart?.cart;\r\n return this.cartStatus === 'FAILED' || (this.cartStatus === 'SUCCESS' && (!cart || isEmpty(cart)));\r\n }\r\n\r\n @computed get isEditorialMode(): boolean {\r\n return this.props.context.request.params.isEditor;\r\n }\r\n\r\n @computed get canPlaceOrder(): boolean {\r\n const isTermsAndConditionAccepted = this.props.data.checkout.result && this.props.data.checkout.result?.isTermsAndConditionAccepted;\r\n\r\n const shouldEnableSinglePaymentAuthorizationCheckout =\r\n this.props.data.checkout.result?.shouldEnableSinglePaymentAuthorizationCheckout ?? false;\r\n\r\n // If isTermsAndConditionAccepted is undefined means TermsAndCondition module is not added to page and we should able to place order.\r\n return (\r\n this.props.moduleState.isReady &&\r\n (isTermsAndConditionAccepted === undefined || isTermsAndConditionAccepted || shouldEnableSinglePaymentAuthorizationCheckout) &&\r\n (this.state.errorMessage === '' ||\r\n shouldEnableSinglePaymentAuthorizationCheckout ||\r\n (this.props.data.checkout.result?.isPaymentVerificationRedirection ?? false))\r\n );\r\n }\r\n\r\n @computed get isCartReady(): boolean {\r\n return (\r\n !!this.props.data.checkout.result?.checkoutCart?.cart &&\r\n this.props.data.customerInformation.status !== 'LOADING' &&\r\n this.props.data.featureState.status !== 'LOADING'\r\n );\r\n }\r\n\r\n public state: ICheckoutState = {\r\n errorMessage: '',\r\n isValidationPassed: false,\r\n isPlaceOrderLoading: false\r\n };\r\n\r\n private readonly telemetryContent: ITelemetryContent = getTelemetryObject(\r\n this.props.context.request.telemetryPageName!,\r\n this.props.friendlyName,\r\n this.props.telemetry\r\n );\r\n\r\n public componentDidMount(): void {\r\n const {\r\n resources: { genericErrorMessage }\r\n } = this.props;\r\n\r\n when(\r\n () => this.hasError,\r\n () => {\r\n this.setState({\r\n errorMessage: genericErrorMessage\r\n });\r\n this.props.context.telemetry.error('Failed to get cart');\r\n }\r\n );\r\n\r\n when(\r\n () => {\r\n return this.isEmptyCart;\r\n },\r\n () => {\r\n this.redirectToCartPage('Cart is empty, but no editCartLink found');\r\n }\r\n );\r\n\r\n when(\r\n () => this.isCartReady,\r\n () => {\r\n this.validateForCheckout();\r\n }\r\n );\r\n\r\n reaction(\r\n () => this.props.moduleState.isReady,\r\n () => {\r\n this.onContainerReady();\r\n }\r\n );\r\n\r\n // Reaction to call place order when isPaymentSectionContainerReady is true for new checkout flow.\r\n reaction(\r\n () => this.props.data.checkout.result?.isPaymentSectionContainerReady,\r\n async isReady => {\r\n if (\r\n this.props.data.checkout.result?.shouldEnableSinglePaymentAuthorizationCheckout &&\r\n isReady &&\r\n !this.props.data.checkout.result?.redirectAdditionalContext &&\r\n (!this.props.data.checkout.result?.isExpressCheckoutApplied ||\r\n this.props.data.checkout.result?.isPaymentVerificationRedirection)\r\n ) {\r\n if (!this.state.isPlaceOrderLoading) {\r\n this.setState({ isPlaceOrderLoading: true });\r\n }\r\n\r\n this.props.telemetry.information(\r\n 'Call onPlaceOrder as reaction when isPaymentSectionContainerReady is updated for single auth payment.'\r\n );\r\n\r\n await this.onPlaceOrder();\r\n\r\n // If 3D authentication redirection, don't update isPlaceOrderLoading\r\n if (!this.props.data.checkout.result.isPaymentVerificationRequired) {\r\n this.setState({ isPlaceOrderLoading: false });\r\n }\r\n }\r\n }\r\n );\r\n\r\n // Reaction to enable place order button when isPaymentSectionContainerHasError is true for new checkout flow.\r\n reaction(\r\n () => this.props.data.checkout.result?.isPaymentSectionContainerHasError,\r\n hasError => {\r\n if (this.props.data.checkout.result?.shouldEnableSinglePaymentAuthorizationCheckout && hasError) {\r\n this.setState({ isPlaceOrderLoading: false });\r\n\r\n this.props.telemetry.information(\r\n 'Enable place order button as reaction when isPaymentSectionContainerHasError is updated to true for single auth payment.'\r\n );\r\n } else {\r\n this.props.telemetry.information(\r\n 'No reaction when isPaymentSectionContainerHasError is updated to false or not single auth payment.'\r\n );\r\n }\r\n }\r\n );\r\n\r\n reaction(\r\n () => this.props.data.checkout.result?.isBillingAddressHasError,\r\n hasError => {\r\n if (this.props.data.checkout.result?.shouldEnableSinglePaymentAuthorizationCheckout && hasError) {\r\n this.setState({ isPlaceOrderLoading: false });\r\n\r\n this.props.data.checkout.result?.updateIsBillingAddressHasError({ newIsBillingAddressHasError: false });\r\n\r\n this.props.telemetry.information(\r\n 'Enable place order button as reaction when isBillingAddressHasError is updated to true for single auth payment.'\r\n );\r\n } else {\r\n this.props.telemetry.information(\r\n 'No reaction when isBillingAddressHasError is updated to false or not single auth payment.'\r\n );\r\n }\r\n }\r\n );\r\n\r\n // Reaction to enable place order button when redirection is true for new checkout flow.\r\n reaction(\r\n () => this.canPlaceOrder,\r\n async () => {\r\n if (this.props.data.checkout.result?.shouldEnableSinglePaymentAuthorizationCheckout && this.canPlaceOrder) {\r\n if (this.props.data.checkout.result?.isPaymentVerificationRedirection) {\r\n await this.props.data.checkout.result.updateIsPlaceOrderEnabledInRedirection({\r\n newIsPlaceOrderEnabledInRedirection: true\r\n });\r\n\r\n this.props.telemetry.information(\r\n 'Set isPaymentVerificationRedirection to true as reaction when canPlaceOrder is updated to true for single auth payment.'\r\n );\r\n } else {\r\n this.props.telemetry.information(\r\n 'No reaction when canPlaceOrder is updated to true but isPaymentVerificationRedirection is false for single auth payment.'\r\n );\r\n }\r\n } else {\r\n this.props.telemetry.information('No reaction when canPlaceOrder is updated to false or not single auth payment.');\r\n }\r\n }\r\n );\r\n\r\n if (this.props.data.checkout.result?.shouldEnableCheckoutErrorDisplayMessaging) {\r\n // Reaction to update the error message when there is a checkout error.\r\n reaction(\r\n () => this.props.data.checkout.result?.checkoutError,\r\n checkoutError => {\r\n if (checkoutError && checkoutError.errorLocation === ErrorLocation.Checkout && checkoutError.errorMessage) {\r\n this._setErrorMessage(checkoutError.errorMessage);\r\n }\r\n }\r\n );\r\n }\r\n }\r\n\r\n // eslint-disable-next-line complexity -- ignore the complexity.\r\n public render(): JSX.Element {\r\n const {\r\n moduleState,\r\n config: { className, checkoutHeading, disableGuidedCheckoutFlow },\r\n resources,\r\n context: {\r\n request: {\r\n user: { isAuthenticated }\r\n }\r\n }\r\n } = this.props;\r\n const { errorMessage } = this.state;\r\n const { backToShopping, placeOrderText, confirmPaymentText, cookieConsentRequiredMessage, genericErrorMessage } = resources;\r\n const checkoutClass = classnames('ms-checkout', className);\r\n const allCheckoutInformation = this.getSlotItems('checkoutInformation');\r\n\r\n // @ts-expect-error - check the key of slot\r\n const checkoutInformation = allCheckoutInformation?.filter(info => !info?.key.includes('express-payment'));\r\n\r\n // @ts-expect-error - check the key of slot\r\n const checkoutExpressPaymentContainer = allCheckoutInformation?.find(info => info?.key.includes('express-payment'));\r\n\r\n const isConsentGiven =\r\n this.props.context.request &&\r\n this.props.context.request.cookies &&\r\n this.props.context.request.cookies.isConsentGiven &&\r\n this.props.context.request.cookies.isConsentGiven();\r\n\r\n const isMobile =\r\n this.props.context.request &&\r\n this.props.context.request.device &&\r\n (this.props.context.request.device.Type as DeviceType) === 'Mobile';\r\n\r\n const backToShoppingUrl = Msdyn365.getUrlSync('home', this.props.context.actionContext) || '';\r\n const editCartLink = Msdyn365.getUrlSync('cart', this.props.context.actionContext) || '';\r\n\r\n // const termsAndConditions =\r\n // this.props.slots.termsAndConditions && this.props.slots.termsAndConditions.length > 0 && this.props.slots.termsAndConditions[0];\r\n\r\n const payLoad = getPayloadObject('click', this.telemetryContent, TelemetryConstant.BackToShopping);\r\n const backToShoppingAttributes = getTelemetryAttributes(this.telemetryContent, payLoad);\r\n\r\n const hasInvoiceLine = this.props.data.checkout && this.props.data.checkout.result?.checkoutCart.hasInvoiceLine;\r\n const checkoutBtnText = hasInvoiceLine ? confirmPaymentText : placeOrderText;\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- Explicitly check for null/undefined.\r\n const shouldEnableSinglePaymentAuthorizationCheckout =\r\n this.props.data.checkout?.result?.shouldEnableSinglePaymentAuthorizationCheckout ?? false;\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- Explicitly check null/undefined.\r\n const isExpressCheckoutApplied = this.props.data.checkout?.result?.isExpressCheckoutApplied ?? false;\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- Explicitly check null/undefined.\r\n const hasShippingAddress = this.props.data.checkout?.result?.hasShippingAddress;\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- Explicitly check null/undefined.\r\n const hasCartDeliveryMode = this.props.data.checkout?.result?.hasCartDeliveryMode;\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- Explicitly check null/undefined.\r\n const hasGuestCheckoutEmail = this.props.data.checkout?.result?.hasGuestCheckoutEmail;\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- Explicitly check null/undefined.\r\n const isTermsAndConditionAccepted = this.props.data.checkout?.result?.isTermsAndConditionAccepted;\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- Explicitly check null/undefined.\r\n const isPaymentVerificationRedirection = this.props.data.checkout?.result?.isPaymentVerificationRedirection ?? false;\r\n\r\n let hasExpressPaymentContainer = false;\r\n\r\n if (\r\n typeof window !== 'undefined' &&\r\n (document?.getElementsByClassName(expressPaymentSectionClassName) as HTMLCollectionOf)[0]?.style.display === ''\r\n ) {\r\n hasExpressPaymentContainer = true;\r\n }\r\n\r\n let viewProps: ICheckoutViewProps = {\r\n ...this.props,\r\n className: checkoutClass,\r\n isEmptyCart: this.isEmptyCart,\r\n isConsentGiven,\r\n hasError: this.hasError,\r\n isPaymentVerificationRedirection: this.props.data.checkout?.result?.isPaymentVerificationRedirection,\r\n shouldEnableSinglePaymentAuthorizationCheckout,\r\n hasSalesOrder:\r\n this.props.data.checkout &&\r\n this.props.data.checkout.result !== undefined &&\r\n this.props.data.checkout.result.salesOrder !== undefined,\r\n hasInvoiceLine,\r\n cartStatus: this.cartStatus,\r\n isMobile,\r\n backToShoppingUrl,\r\n editCartLink,\r\n isEditorialMode: this.isEditorialMode,\r\n // orderConfirmation:\r\n // this.props.slots.orderConfirmation && this.props.slots.orderConfirmation.length > 0\r\n // ? this.props.slots.orderConfirmation[0]\r\n // : undefined,\r\n checkoutProps: { moduleProps: this.props, className: checkoutClass },\r\n headerProps: { className: 'ms-checkout__head' },\r\n bodyProps: { className: 'ms-checkout__body' },\r\n mainProps: { className: 'ms-checkout__main' },\r\n mainControlProps: { className: 'ms-checkout__main-control' },\r\n sideProps: { className: hasExpressPaymentContainer ? 'ms-checkout__has-express-side' : 'ms-checkout__side' },\r\n sideControlFirstProps: { className: 'ms-checkout__side-control-first' },\r\n sideControlSecondProps: { className: 'ms-checkout__side-control-second' },\r\n termsAndConditionsProps: { className: 'ms-checkout__terms-and-conditions' },\r\n title: checkoutHeading && this.renderMsdyn365Text(checkoutHeading),\r\n checkoutExpressPaymentContainer\r\n };\r\n\r\n if (!isConsentGiven && isAuthenticated) {\r\n viewProps = {\r\n ...viewProps,\r\n alert: \r\n };\r\n } else if (this.isLoading()) {\r\n viewProps = {\r\n ...viewProps,\r\n loading: \r\n };\r\n } else if (this.hasError) {\r\n viewProps = {\r\n ...viewProps,\r\n alert: \r\n };\r\n } else {\r\n viewProps = {\r\n ...viewProps,\r\n alert: errorMessage && ,\r\n canShow: true,\r\n guidedForm: checkoutInformation ? (\r\n \r\n ) : (\r\n undefined\r\n ),\r\n orderSummary: getOrderSummary(this.props),\r\n invoicePaymentSummary: getInvoicePaymentSummary(this.props),\r\n lineItems: hasInvoiceLine ? undefined : getLineItems(this.props, this.telemetryContent),\r\n placeOrderButton: (\r\n \r\n ),\r\n //termsAndConditions,\r\n keepShoppingButton: backToShoppingUrl && (\r\n \r\n {backToShopping}\r\n \r\n )\r\n };\r\n }\r\n\r\n return this.props.renderView(viewProps) as React.ReactElement;\r\n }\r\n\r\n /**\r\n * Renders heading.\r\n * @param checkoutHeading - The checkout heading.\r\n * @returns React node.\r\n */\r\n public renderMsdyn365Text(checkoutHeading: ICheckoutHeadingData): React.ReactNode {\r\n return (\r\n \r\n );\r\n }\r\n\r\n /**\r\n * Event handler for heading change event.\r\n * @param event - The content change event in heading element.\r\n * @returns The new heading value.\r\n */\r\n public handleCheckoutHeadingChange = (event: Msdyn365.ContentEditableEvent) =>\r\n (this.props.config.checkoutHeading!.text = event.target.value);\r\n\r\n /**\r\n * Checks if cart is loading.\r\n * @returns True if is loading, false otherwise.\r\n */\r\n private readonly isLoading = (): boolean => {\r\n return !this.cartStatus || this.cartStatus === 'LOADING' || this.isEmptyCart || !this.state.isValidationPassed;\r\n };\r\n\r\n /**\r\n * Get slot items.\r\n * @param key - The slot key.\r\n * @returns React node or undefined.\r\n */\r\n private readonly getSlotItems = (key: string): React.ReactNode[] | undefined => {\r\n const { slots } = this.props;\r\n return slots && slots[key] && slots[key].length > 0 ? slots[key] : undefined;\r\n };\r\n\r\n /**\r\n * Trigger the payment section container submit when placing order.\r\n */\r\n private readonly triggerPaymentWithPlaceOrder = async (): Promise => {\r\n this.setState({ isPlaceOrderLoading: true });\r\n\r\n await this.props.data.checkout.result?.updateShouldTriggerPaymentWithPlaceOrder({\r\n newShouldTriggerPaymentWithPlaceOrder: !this.props.data.checkout.result.shouldTriggerPaymentWithPlaceOrder\r\n });\r\n };\r\n\r\n /**\r\n * On place order.\r\n * @returns Void promise.\r\n */\r\n private readonly onPlaceOrder = async (): Promise => {\r\n const {\r\n resources: {\r\n checkoutOutOfStockErrorMessage,\r\n genericErrorMessage,\r\n customerCreditLimitExceededErrorMessage,\r\n invalidCartVersionErrorMessage,\r\n missingRequiredCartTenderLinesErrorMessage\r\n },\r\n context: {\r\n actionContext,\r\n app: {\r\n config: { enableStockCheck = false }\r\n }\r\n },\r\n //slots: { orderConfirmation },\r\n data: { checkout, products }\r\n } = this.props;\r\n\r\n this.props.telemetry.information('Checkout onPlaceOrder is called.');\r\n\r\n // If hasInvoiceLine is true, no inventory check\r\n if (\r\n !this.props.data.checkout.result?.checkoutCart.hasInvoiceLine &&\r\n enableStockCheck &&\r\n (await this.isOverMaxQuantity((await checkout).checkoutCart.cart, await products))\r\n ) {\r\n this.setState({\r\n errorMessage: checkoutOutOfStockErrorMessage\r\n });\r\n this.props.context.telemetry.error(checkoutOutOfStockErrorMessage);\r\n } else {\r\n //const hasOrderConfirmation = orderConfirmation && orderConfirmation.length > 0;\r\n\r\n const updatedCartVersion = await this.updateCartLineEmailAddress(this.props.data.checkout.result?.guestCheckoutEmail || '');\r\n\r\n await placeOrder(\r\n actionContext,\r\n this.props.data.checkout.result,\r\n this.props.data.products.result,\r\n //@ts-ignore\r\n !hasOrderConfirmation,\r\n updatedCartVersion,\r\n this.props.data.checkout.result?.isPaymentVerificationRedirection\r\n ).catch(error => {\r\n let errorMessage = genericErrorMessage;\r\n\r\n if (error && error.name === 'Microsoft_Dynamics_Commerce_Runtime_InvalidCartVersion') {\r\n errorMessage = invalidCartVersionErrorMessage;\r\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- unknown error type.\r\n } else if (error && error.name === 'Microsoft_Dynamics_Commerce_Runtime_MissingRequiredCartTenderLines') {\r\n errorMessage = missingRequiredCartTenderLinesErrorMessage;\r\n } else if (\r\n error &&\r\n error.name === 'Microsoft_Dynamics_Commerce_Runtime_CustomerAccountPaymentExceedsAvailableCreditLimit'\r\n ) {\r\n errorMessage = customerCreditLimitExceededErrorMessage;\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- unknown error type.\r\n if (\r\n this.props.data.checkout.result?.shouldEnableSinglePaymentAuthorizationCheckout &&\r\n error.data?.AdditionalContext &&\r\n !this.props.data.checkout.result?.isPaymentVerificationRedirection\r\n ) {\r\n return;\r\n }\r\n\r\n this.setState({\r\n errorMessage\r\n });\r\n this.props.telemetry.exception(error);\r\n });\r\n\r\n await checkout.result?.updateIsPaymentSectionContainerReady({ newIsPaymentSectionContainerReady: false });\r\n }\r\n };\r\n\r\n /**\r\n * Update receipt email address for electronic cart line.\r\n * @param newGuestCheckoutEmail - The guest checkout email.\r\n * @returns The updated cart version.\r\n */\r\n private readonly updateCartLineEmailAddress = async (newGuestCheckoutEmail: string): Promise => {\r\n const emailDeliveryModeCode = this.props.context.request.channel?.EmailDeliveryModeCode;\r\n\r\n const emailDeliveryCartLines = this.props.data.checkout.result?.checkoutCart.cart.CartLines?.filter(\r\n cartLine => cartLine.DeliveryMode && cartLine.DeliveryMode !== '' && cartLine.DeliveryMode === emailDeliveryModeCode\r\n );\r\n\r\n let updatedCartVersion: number | undefined;\r\n if (emailDeliveryCartLines && emailDeliveryCartLines.length > 0) {\r\n const lineDeliverySpecifications: LineDeliverySpecification[] = emailDeliveryCartLines.map(line => {\r\n return {\r\n LineId: line.LineId,\r\n DeliverySpecification: {\r\n DeliveryModeId: emailDeliveryModeCode,\r\n DeliveryPreferenceTypeValue: DeliveryPreferenceType.ElectronicDelivery,\r\n ElectronicDeliveryEmailAddress: newGuestCheckoutEmail\r\n }\r\n };\r\n });\r\n\r\n await updateLineDeliverySpecificationsAsync(\r\n { callerContext: this.props.context.actionContext },\r\n (await this.props.data.checkout).checkoutCart.cart.Id,\r\n lineDeliverySpecifications\r\n )\r\n .then(updatedCart => {\r\n updatedCartVersion = updatedCart.Version;\r\n })\r\n .catch(error => {\r\n this.props.context.actionContext.telemetry.exception(error);\r\n throw new Error('[updateLineDeliverySpecificationsAsync] Unable to update electronic delivery email address in cart');\r\n });\r\n }\r\n\r\n return updatedCartVersion;\r\n };\r\n\r\n /**\r\n * Return true if any product in the cart is over its max quantity.\r\n * @param cart -- The checkout cart.\r\n * @param products -- The checkout products.\r\n * @returns - Is any product in the cart is over max quantity.\r\n */\r\n private readonly isOverMaxQuantity = async (cart: Cart, products: SimpleProduct[]): Promise => {\r\n let isOverMaxQuantity = false;\r\n const emailDeliveryModeCode = this.props.context.request.channel?.EmailDeliveryModeCode;\r\n\r\n await getAvailabilitiesForCartLineItems(\r\n new ProductAvailabilitiesForCartLineItems(this.props.context.actionContext.requestContext.apiSettings),\r\n this.props.context.actionContext\r\n )\r\n .then(productInventoryInformation => {\r\n const productsThatShouldValidateInventory: IProductInventoryInformation[] = [];\r\n\r\n cart.CartLines?.map(cartline => {\r\n const cartlineProduct = products.find(product => product.RecordId === cartline.ProductId);\r\n\r\n // If product is non-stocked or cartline is electronic delivery, then no inventory check\r\n const isStockedItem = cartlineProduct?.Behavior?.IsStockedProduct;\r\n const isEmailDelivery =\r\n cartline.DeliveryMode && cartline.DeliveryMode !== '' ? cartline.DeliveryMode === emailDeliveryModeCode : false;\r\n const shouldSkipInventoryCheck = !isStockedItem || isEmailDelivery;\r\n if (!shouldSkipInventoryCheck && ArrayExtensions.hasElements(productInventoryInformation)) {\r\n const foundProductAvailability = productInventoryInformation.find(productInventory => {\r\n return productInventory.ProductAvailableQuantity?.ProductId! === cartline.ProductId;\r\n });\r\n if (foundProductAvailability) {\r\n productsThatShouldValidateInventory.push(foundProductAvailability);\r\n }\r\n }\r\n });\r\n\r\n const cartLinesInventoryValidation = validateCartLinesInventory(\r\n cart.CartLines ?? [],\r\n productsThatShouldValidateInventory,\r\n this.props.context.actionContext,\r\n products,\r\n emailDeliveryModeCode\r\n );\r\n\r\n // If is invalid then exceeds the available quantity\r\n isOverMaxQuantity = !cartLinesInventoryValidation.isValid;\r\n return isOverMaxQuantity;\r\n })\r\n .catch(error => {\r\n this.props.context.actionContext.telemetry.exception(error);\r\n throw new Error('[getAvailabilitiesForCartLineItems] Unable to get availabilities for products in checkout cart');\r\n });\r\n\r\n return isOverMaxQuantity;\r\n };\r\n\r\n /**\r\n * Gets active child in module state.\r\n * @returns - The module state manager collection.\r\n */\r\n private readonly getActiveChildModuleStates = (): IModuleStateManager[] => {\r\n const { childIds, getModule } = this.props.moduleState;\r\n return childIds\r\n .map(getModule)\r\n .filter((state): state is IModuleStateManager => !!state && !state.isDisabled && state.hasModuleState);\r\n };\r\n\r\n /**\r\n * On container ready.\r\n */\r\n private readonly onContainerReady = (): void => {\r\n this.props.telemetry.information('Checkout onContainerReady is called.');\r\n\r\n this.getActiveChildModuleStates().forEach(state => {\r\n state.isReady && state.onContainerReady && state.onContainerReady();\r\n });\r\n };\r\n\r\n /**\r\n * Redirects to cart page.\r\n * @param notFoundEditCartLinkMessage - Not found edit cart link message.\r\n */\r\n private readonly redirectToCartPage = (notFoundEditCartLinkMessage: string): void => {\r\n const editCartLink = Msdyn365.getUrlSync('cart', this.props.context.actionContext) || '';\r\n if (window && editCartLink) {\r\n window.location.assign(editCartLink);\r\n } else {\r\n this.setState({\r\n errorMessage: this.props.resources.genericErrorMessage\r\n });\r\n this.props.context.telemetry.error(notFoundEditCartLinkMessage);\r\n }\r\n };\r\n\r\n /**\r\n * Validates for checkout.\r\n * @param retry - Retry flag.\r\n */\r\n private readonly validateForCheckout = (retry: boolean = true): void => {\r\n const notFoundEditCartLinkMessage = \"Cart doesn't pass validation, but no editCartLink found\";\r\n const cart = this.props.data.checkout.result!.checkoutCart.cart;\r\n const { Id, Version } = cart;\r\n const isOrderQuantityLimitsFeatureEnabledInHq =\r\n this.props.data.featureState.result?.find(\r\n featureState => featureState.Name === 'Dynamics.AX.Application.RetailDefaultOrderQuantityLimitsFeature'\r\n )?.IsEnabled || false;\r\n const defaultOrderQuantityLimitsFeatureConfig = this.props.context?.request?.app?.platform?.enableDefaultOrderQuantityLimits;\r\n const customerInfo = this.props.data.customerInformation.result;\r\n\r\n const isOrderQuantityLimitsFeatureEnabledInSiteSettings =\r\n defaultOrderQuantityLimitsFeatureConfig === 'all' ||\r\n (customerInfo &&\r\n ((defaultOrderQuantityLimitsFeatureConfig === 'b2b' && customerInfo.IsB2b) ||\r\n (defaultOrderQuantityLimitsFeatureConfig === 'b2c' && !customerInfo.IsB2b)));\r\n if (isOrderQuantityLimitsFeatureEnabledInHq && isOrderQuantityLimitsFeatureEnabledInSiteSettings) {\r\n if (Version && Id) {\r\n validateForCheckoutAsync({ callerContext: this.props.context.actionContext, bypassCache: 'none' }, Id, Version)\r\n .then((result: CartLineValidationResults) => {\r\n if (result.ValidationFailuresByCartLines?.length !== 0) {\r\n this.redirectToCartPage(notFoundEditCartLinkMessage);\r\n } else {\r\n this.setState({ isValidationPassed: true });\r\n }\r\n })\r\n .catch(error => {\r\n this.props.telemetry.warning(error);\r\n this.props.telemetry.debug('Unable to validate Cart');\r\n if (retry && error.name === 'Microsoft_Dynamics_Commerce_Runtime_InvalidCartVersion') {\r\n const cartState = this.props.data.checkout.result?.checkoutCart;\r\n cartState\r\n ?.refreshCart({})\r\n .then(() => {\r\n this.validateForCheckout(false);\r\n })\r\n .catch((refreshError: Error) => {\r\n this.props.telemetry.warning(refreshError.message);\r\n this.props.telemetry.debug('Unable to refresh Cart');\r\n });\r\n } else {\r\n this.redirectToCartPage(notFoundEditCartLinkMessage);\r\n }\r\n });\r\n } else {\r\n this.redirectToCartPage(notFoundEditCartLinkMessage);\r\n }\r\n } else {\r\n this.setState({ isValidationPassed: true });\r\n }\r\n };\r\n\r\n @action\r\n private readonly _setErrorMessage = (errorMessage: string): void => {\r\n this.props.telemetry.error(errorMessage);\r\n this.props.moduleState.setHasError(true);\r\n this.props.moduleState.onUpdating();\r\n this.setState({\r\n errorMessage\r\n });\r\n };\r\n}\r\n\r\nexport default Checkout;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { getUrlSync, IActionContext } from '@msdyn365-commerce/core';\r\nimport { ICheckoutState } from '@msdyn365-commerce/global-state';\r\nimport { SalesOrder, SimpleProduct } from '@msdyn365-commerce/retail-proxy';\r\n\r\nimport checkout from './absolute-layer-checkout';\r\nimport emptyActiveCart from './empty-active-cart';\r\n\r\nexport default async (\r\n ctx: IActionContext,\r\n checkoutState: ICheckoutState | undefined,\r\n orderedProducts: SimpleProduct[] | undefined,\r\n redirect: boolean,\r\n updatedCartVersion?: number,\r\n isPaymentVerificationRedirection?: boolean\r\n) => {\r\n return new Promise(async (resolve: () => void, reject: (reason?: Error) => void) => {\r\n ctx.telemetry.information('Checkout place-order method is triggered.');\r\n\r\n let salesOrder: SalesOrder;\r\n\r\n // Proceed checkout\r\n try {\r\n salesOrder = await checkout(ctx, updatedCartVersion, isPaymentVerificationRedirection);\r\n } catch (error) {\r\n reject(error);\r\n return;\r\n }\r\n\r\n // Remove purchased items from the active cart\r\n try {\r\n ctx.telemetry.information('Checkout emptyActiveCart is called.');\r\n await emptyActiveCart(ctx);\r\n } catch (error) {\r\n reject(error);\r\n return;\r\n }\r\n\r\n if (redirect) {\r\n ctx.telemetry.information('Redirect to order confirmation page.');\r\n\r\n // Redirect to the order confirmation page\r\n const orderConfirmationUrl = getUrlSync('orderConfirmation', ctx) || '';\r\n if (!orderConfirmationUrl) {\r\n reject(new Error('Error: No orderConfirmationUrl'));\r\n return;\r\n }\r\n\r\n const separator = orderConfirmationUrl.includes('?') ? '&' : '?';\r\n const url = `${orderConfirmationUrl}${separator}transactionId=${salesOrder.Id}`;\r\n window.location.assign(url);\r\n } else {\r\n ctx.telemetry.information('Not redirect to order confirmation page.');\r\n\r\n if (checkoutState) {\r\n const result = await checkoutState.updateSalesOrder({\r\n newSalesOrder: salesOrder,\r\n newOrderedProducts: orderedProducts || []\r\n });\r\n\r\n if (result.status === 'FAILED') {\r\n reject(new Error('Error: Updating error state failed'));\r\n return;\r\n }\r\n } else {\r\n reject(new Error('Error: No checkout state'));\r\n return;\r\n }\r\n resolve();\r\n }\r\n });\r\n};\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { Node} from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { ICheckoutViewProps, ILineItem, ILineItemDeliveryGroup, ILineItems, IOrderSummary, IPickUpAtStore } from './absolute-layer-checkout';\r\nimport { IEmailDelivery } from './components';\r\nimport { IInvoicePaymentSummary } from './components/get-invoice-payment-summary';\r\n\r\nexport const PickUpAtStoreComponent: React.FC = ({ PickUpAtStore, label, location }) => (\r\n \r\n {label}\r\n {location}\r\n \r\n);\r\n\r\nexport const EmailDeliveryComponent: React.FC = ({ EmailDelivery, label }) => {label};\r\n\r\nexport const LineItemComponent: React.FC = ({ item }) => (\r\n <>\r\n {item}\r\n \r\n);\r\n\r\nexport const LineItemGroupComponent: React.FC = ({ lineItems }) => (\r\n \r\n \r\n <>\r\n {lineItems.map(lineItem => (\r\n \r\n ))}\r\n \r\n \r\n);\r\n\r\nexport const LineItemGroupComponentWithMultiplePickUp: React.FC = ({\r\n LineItemDeliveryGroup,\r\n LineItemList,\r\n heading,\r\n lineItems,\r\n lineItemWraper,\r\n lineItemWraperIcon\r\n}) => (\r\n \r\n {lineItemWraperIcon}\r\n {lineItemWraper}\r\n {heading}\r\n \r\n {lineItems.map(lineItem => (\r\n \r\n ))}\r\n \r\n \r\n);\r\n\r\nexport const LineItemComponentWithMultiplePickUp: React.FC = ({ LineItem, item, pickUpAtStore, emailDelivery }) => (\r\n \r\n {item}\r\n {emailDelivery && }\r\n \r\n);\r\n\r\nexport const PickUpAtStoreComponentWithMultiplePickUp: React.FC = ({ PickUpAtStore, label, location }) => (\r\n \r\n {label}\r\n {location}\r\n \r\n);\r\n\r\nexport const LineItemsComponent: React.FC = ({\r\n itemsForPickup,\r\n itemsForShip,\r\n itemsForEmail,\r\n itemsGroupWithMulitplePickupMode\r\n}) => (\r\n <>\r\n \r\n {itemsGroupWithMulitplePickupMode === undefined && itemsForPickup && }\r\n {itemsGroupWithMulitplePickupMode === undefined && itemsForEmail && }\r\n {itemsGroupWithMulitplePickupMode === undefined && itemsForShip && }\r\n {itemsGroupWithMulitplePickupMode !== undefined\r\n ? itemsGroupWithMulitplePickupMode.map((item, index) => {\r\n return ;\r\n })\r\n : null}\r\n \r\n);\r\n\r\nconst OrderSummaryComponent: React.FC = ({ lines }) => (\r\n \r\n <>\r\n {lines && (\r\n <>\r\n 'event': 'begin_checkout',\r\n {lines.giftCard}\r\n 'currency': 'USD',\r\n {lines.orderTotal}\r\n \r\n \r\n )}\r\n \r\n \r\n);\r\n\r\nconst PaymentSummaryComponent: React.FC = ({ heading, lines }) => (\r\n
\r\n {heading}\r\n
\r\n {lines && (\r\n <>\r\n {lines.invoices}\r\n {lines.giftCard}\r\n {lines.loyalty}\r\n {lines.orderTotal}\r\n \r\n )}\r\n
\r\n
\r\n);\r\n\r\nconst CheckoutView: React.FC = props => {\r\n const {\r\n \r\n \r\n hasInvoiceLine,\r\n orderSummary,\r\n invoicePaymentSummary,\r\n lineItems,\r\n } = props;\r\n\r\n const scriptHtmlStart = `window.dataLayer.push({`;\r\n \r\n const scriptHtmlEnd = `});`;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default CheckoutView;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\nimport { IComponentProps, IGridSettings, msdyn365Commerce } from '@msdyn365-commerce/core';\r\nimport { ICartState } from '@msdyn365-commerce/global-state';\r\nimport { ChannelDeliveryOptionConfiguration, SimpleProduct } from '@msdyn365-commerce/retail-proxy';\r\nimport { CartLine, ProductCatalog, SalesLine } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\r\n//import { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\r\n//import classNames from 'classnames';\r\nimport * as React from 'react';\r\n\r\n//import { PriceComponent } from './price.components';\r\nimport { \r\n //CartLinePriceEditor, \r\n ICartLinePriceEditorResources } from './cart-line-price-editor';\r\n\r\n/**\r\n * ICartlineResourceString: Interface for specifying the\r\n * resource strings that the component needs.\r\n */\r\nexport interface ICartlineResourceString {\r\n /**\r\n * Display string for discount label.\r\n */\r\n discountStringText: string;\r\n\r\n /**\r\n * String for size key.\r\n */\r\n sizeString: string;\r\n\r\n /**\r\n * String for color key.\r\n */\r\n colorString: string;\r\n\r\n /**\r\n * String associated with the configuration product dimension.\r\n */\r\n configString: string;\r\n\r\n /**\r\n * String for style key.\r\n */\r\n styleString: string;\r\n\r\n /**\r\n * String for amount key.\r\n */\r\n amountString?: string;\r\n\r\n /**\r\n * Display string for quantity label.\r\n */\r\n quantityDisplayString: string;\r\n\r\n /**\r\n * Display string for quantity label.\r\n */\r\n inputQuantityAriaLabel: string;\r\n\r\n /**\r\n * Aria label for the decrement button in quantity component.\r\n */\r\n decrementButtonAriaLabel?: string;\r\n\r\n /**\r\n * Aria label for the increment button in quantity component.\r\n */\r\n incrementButtonAriaLabel?: string;\r\n\r\n /**\r\n * Original text screen reader.\r\n */\r\n originalPriceText: string;\r\n\r\n /**\r\n * Current text screen reader.\r\n */\r\n currentPriceText: string;\r\n\r\n /**\r\n * Shipping Charges Text.\r\n */\r\n shippingChargesText: string;\r\n\r\n priceEditorResources?: ICartLinePriceEditorResources;\r\n\r\n /**\r\n * Sales agreement price prompt text.\r\n */\r\n salesAgreementPricePrompt?: string;\r\n\r\n /**\r\n * Shipping text.\r\n */\r\n shippingText?: string;\r\n}\r\n\r\n/**\r\n * The data about the cart line and products.\r\n */\r\nexport interface ICartLineData {\r\n cartLine: CartLine | SalesLine;\r\n cartState?: ICartState;\r\n product?: SimpleProduct;\r\n catalogs?: ProductCatalog[];\r\n}\r\n\r\nexport type CartLineDisplayMode = 'DEFAULT' | 'COMPACT';\r\n\r\n/**\r\n * ICartLineProps: The props required to render cartLineitem.\r\n */\r\nexport interface ICartLineProps extends IComponentProps {\r\n /**\r\n * The flag to change the quantity component from interactivity to static.\r\n */\r\n disableQuantityInteractivity?: boolean;\r\n\r\n /**\r\n * The primary image url.\r\n */\r\n //primaryImageUrl?: string;\r\n\r\n /**\r\n * The product url.\r\n */\r\n //productUrl?: string;\r\n\r\n /**\r\n * GridSettings for the product image in cartLine.\r\n */\r\n gridSettings: IGridSettings;\r\n\r\n /**\r\n * ImageSettings for the product image in cartLine.\r\n */\r\n //imageSettings: IImageSettings;\r\n\r\n /**\r\n * Boolean flag to indicate if the item is out of stock.\r\n */\r\n isOutOfStock?: boolean;\r\n\r\n /**\r\n * Flag to make quantity section editable.\r\n */\r\n isQuantityEditable?: boolean;\r\n\r\n /**\r\n * Max quantity for line item.\r\n */\r\n maxQuantity?: number;\r\n\r\n /**\r\n * Current quantity for line item.\r\n */\r\n currentQuantity?: number;\r\n\r\n /**\r\n * Resource string for the component.\r\n */\r\n resources: ICartlineResourceString;\r\n\r\n /**\r\n * SalesLine flag.\r\n */\r\n isSalesLine?: boolean;\r\n\r\n /**\r\n * Error message to show in place of quantity.\r\n */\r\n errorMessage?: string;\r\n\r\n /**\r\n * Display mode to use.\r\n */\r\n displayMode?: CartLineDisplayMode;\r\n\r\n /**\r\n * Inventory information label.\r\n */\r\n inventoryInformationLabel?: string;\r\n\r\n /**\r\n * Inventory information class name.\r\n */\r\n inventoryLabelClassName?: string;\r\n\r\n /**\r\n * Flag to show/hide shipping charges for line items.\r\n */\r\n showShippingChargesForLineItems?: boolean;\r\n\r\n /**\r\n * Boolean flag to indicate if cart state status is ready.\r\n */\r\n isCartStateReady?: boolean;\r\n\r\n /**\r\n * Chanel Delivery Option configuration is from api.\r\n */\r\n channelDeliveryOptionConfig?: ChannelDeliveryOptionConfiguration;\r\n\r\n /**\r\n * The telemetry content.\r\n */\r\n telemetryContent?: ITelemetryContent;\r\n\r\n /**\r\n * The cart line index.\r\n */\r\n lineIndex?: number;\r\n\r\n /**\r\n * The cart line delivery location.\r\n */\r\n deliveryLocation?: string;\r\n\r\n /**\r\n * Quantity onChange callback.\r\n */\r\n quantityOnChange?(cartLine: CartLine, newQuantity: number, lineIndex?: number): void;\r\n}\r\n\r\n\r\n\r\n\r\n// eslint-disable-next-line no-redeclare\r\nconst CartLine: React.FC = (props: ICartLineProps) => {\r\n const { product } = props.data;\r\n\r\n \r\n const productName = product?.Name;\r\n const productId = product?.ItemId;\r\n const productNewPrice = product?.Price;\r\n \r\n \r\n return (\r\n <>\r\n \r\n 'item_id': {productId},\r\n 'item_name': {productName},\r\n 'item_brand': 'Absolute Outdoors',\r\n 'price': {productNewPrice},\r\n 'quantity': {props.data.cartLine.Quantity},\r\n \r\n \r\n );\r\n};\r\n\r\n// @ts-expect-error\r\nexport const CartLineItemComponentNick: React.FunctionComponent = msdyn365Commerce.createComponent('CartLineItem', {\r\n component: CartLine,\r\n //...CartLineItemFunctions\r\n});\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { ICartState } from '@msdyn365-commerce/global-state';\r\nimport { CartLine, OrgUnitLocation, ProductDeliveryOptions, SimpleProduct } from '@msdyn365-commerce/retail-proxy';\r\nimport { IStoreSelectorStateManager } from '@msdyn365-commerce-modules/bopis-utilities';\r\nimport { INodeProps } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nexport interface IPickUpInStoreViewProps {\r\n callbacks: {\r\n toggleBopis(isBopisSelected: boolean): void;\r\n };\r\n defaultComponent?: React.ReactNode;\r\n orgUnitName?: string;\r\n isBopisSelected: boolean;\r\n ContainerProps: INodeProps;\r\n deliveryOption?: string;\r\n}\r\n\r\nexport interface IPickUpInStoreProps {\r\n cartline: CartLine;\r\n product: SimpleProduct;\r\n shipitText: string;\r\n pickUpInStoreText: string;\r\n changeStoreText: string;\r\n cartState: ICartState | undefined;\r\n storeSelectorStateManager: IStoreSelectorStateManager | undefined;\r\n orgUnitLocations?: OrgUnitLocation[] | undefined;\r\n deliveryOptions?: ProductDeliveryOptions;\r\n pickupDeliveryModeCode?: string;\r\n storeSelectorModuleId?: string;\r\n locationChangedHandler(): void;\r\n}\r\n\r\nexport const PickUpInStore = (props: IPickUpInStoreProps): IPickUpInStoreViewProps | undefined => {\r\n const _onLocationChangedCallback = async (orgUnitLocation: OrgUnitLocation, cartState: ICartState | undefined, cartline: CartLine, deliveryMode?: string) => {\r\n if (!cartState) {\r\n return Promise.resolve();\r\n }\r\n return cartState.updateCartLinePickupLocation({ cartLineId: cartline.LineId!, location: orgUnitLocation, deliveryMode })\r\n .then(result => {\r\n if (result.status === 'SUCCESS') {\r\n props.locationChangedHandler();\r\n }\r\n })\r\n .catch(error => {});\r\n };\r\n\r\n const _toggleBOPIS = (isBopisSelected: boolean) => {\r\n const { storeSelectorStateManager, product, cartline, cartState, storeSelectorModuleId } = props;\r\n\r\n if (isBopisSelected) {\r\n if (!storeSelectorStateManager) {\r\n return;\r\n }\r\n storeSelectorStateManager.openDialog({\r\n id: storeSelectorModuleId,\r\n product,\r\n alreadySelectedLocation: {\r\n OrgUnitNumber: cartline.FulfillmentStoreId\r\n },\r\n deliveryOptions: props.deliveryOptions,\r\n onLocationSelected: async (orgUnitLocation, deliveryMode: string | undefined) => {\r\n return _onLocationChangedCallback(orgUnitLocation, cartState, cartline, deliveryMode);\r\n }\r\n })\r\n .catch(error => {});\r\n } else {\r\n if (!cartState) {\r\n return;\r\n }\r\n cartline.DeliveryMode = '';\r\n cartline.FulfillmentStoreId = '';\r\n cartline.ShippingAddress = {};\r\n cartState.clearCartLinePickupLocation({ cartLineId: cartline.LineId! })\r\n .then(result => {\r\n if (result.status === 'SUCCESS') {\r\n props.locationChangedHandler();\r\n }\r\n })\r\n .catch(error => {});\r\n }\r\n };\r\n\r\n const _getOrgUnitName = (fulfillmentStoreId: string | undefined, orgUnitLocations: OrgUnitLocation[] | undefined) => {\r\n if (!orgUnitLocations || !fulfillmentStoreId || orgUnitLocations.length === 0) {\r\n return '';\r\n }\r\n\r\n const foundLocation = orgUnitLocations.find(orgUnitLocation => {\r\n return orgUnitLocation.OrgUnitNumber === fulfillmentStoreId;\r\n });\r\n\r\n if (foundLocation) {\r\n return foundLocation.OrgUnitName;\r\n }\r\n return fulfillmentStoreId;\r\n\r\n };\r\n\r\n const _renderShippingMethod = (\r\n cartLine: CartLine,\r\n shipItText: string,\r\n pickupInStoretext: string,\r\n changeStoreText: string,\r\n orgUnitLocations: OrgUnitLocation[] | undefined): JSX.Element => {\r\n\r\n const orgUnitName = _getOrgUnitName(cartLine.FulfillmentStoreId, orgUnitLocations);\r\n const bopisSelected = !!cartLine.FulfillmentStoreId;\r\n\r\n const toggleBOPIS = (isBopisSelected: boolean) => {\r\n return () => {\r\n _toggleBOPIS(isBopisSelected);\r\n };\r\n };\r\n\r\n return (\r\n <>\r\n \r\n \r\n {\r\n cartLine.FulfillmentStoreId ? (\r\n
\r\n \r\n {orgUnitName}\r\n \r\n \r\n
\r\n ) : null\r\n }\r\n \r\n );\r\n };\r\n\r\n const _getDeliveryOption = (pickupStore: IPickUpInStoreProps, deliveryOptions: ProductDeliveryOptions) => {\r\n const delivery = deliveryOptions?.DeliveryOptions?.find(option => option.Code === pickupStore.pickupDeliveryModeCode);\r\n return delivery?.Description;\r\n };\r\n\r\n // If no delivery options present on the product, or none of the delivery options\r\n // match the PickupDeliveryModeCode, that means the item cannot be used for BOPIS\r\n if (!props.deliveryOptions ||\r\n !props.deliveryOptions.DeliveryOptions ||\r\n !props.pickupDeliveryModeCode ||\r\n !props.deliveryOptions.DeliveryOptions.find(option => option.Code === props.pickupDeliveryModeCode)) {\r\n return undefined;\r\n }\r\n\r\n return {\r\n callbacks: {\r\n toggleBopis: _toggleBOPIS\r\n },\r\n defaultComponent: _renderShippingMethod(props.cartline, props.shipitText, props.pickUpInStoreText, props.changeStoreText, props.orgUnitLocations),\r\n orgUnitName: _getOrgUnitName(props.cartline.FulfillmentStoreId, props.orgUnitLocations),\r\n isBopisSelected: !!props.cartline.FulfillmentStoreId,\r\n deliveryOption: _getDeliveryOption(props, props.deliveryOptions),\r\n ContainerProps: {\r\n className: 'msc-cart-line__bopis-container'\r\n }\r\n };\r\n};\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport {\r\n AddToOrderTemplateComponent, AddToWishlistComponent, CartLineItemComponent,\r\n IAddToOrderTemplateDialogResources, ICartlineResourceString, IDuplicateItemsWhenAddingToOrderTemplateDialogResources,\r\n IItemAddedToOrderTemplateDialogResources, IOrderTemplateNameDialogResources, IWishlistActionSuccessResult } from '@msdyn365-commerce/components';\r\nimport { IAny, ICoreContext, IGeneric, IGridSettings, IImageSettings, ITelemetry, TelemetryEvent } from '@msdyn365-commerce/core';\r\nimport { ICartState } from '@msdyn365-commerce/global-state';\r\nimport {\r\n CartLine,\r\n ChannelDeliveryOptionConfiguration,\r\n CommerceList,\r\n Customer,\r\n LineDataValidationFailure,\r\n OrgUnitLocation,\r\n ProductDeliveryOptions,\r\n SimpleProduct\r\n} from '@msdyn365-commerce/retail-proxy';\r\nimport { ProductDimensionType, ReleasedProductType } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\r\nimport { IStoreSelectorStateManager } from '@msdyn365-commerce-modules/bopis-utilities';\r\nimport {\r\n ArrayExtensions,\r\n getInvoiceDetailsPageUrlSync,\r\n getProductUrlSync,\r\n IProductInventoryInformation,\r\n ObjectExtensions,\r\n OrderTemplate\r\n} from '@msdyn365-commerce-modules/retail-actions';\r\nimport { Button, getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport * as React from 'react';\r\n\r\nimport { getProductByProductId } from '@msdyn365-commerce-modules/cart';\r\nimport { IPickUpInStoreViewProps, PickUpInStore } from './arborb2b-cart-pick-up-in-store';\r\n\r\nexport interface ICartLineItemsProps {\r\n cartlines: CartLine[];\r\n cartlinesErrors: LineDataValidationFailure[];\r\n cartState: ICartState | undefined;\r\n orgUnitLocations: OrgUnitLocation[] | undefined;\r\n resources: ICartlineResourceString;\r\n productAvailabilites: IProductInventoryInformation[] | undefined;\r\n products: SimpleProduct[] | undefined;\r\n productDeliveryOptions: ProductDeliveryOptions[] | undefined;\r\n pickupDeliveryModeCode?: string;\r\n\r\n /** GridSettings for the product image in cartline */\r\n gridSettings: IGridSettings;\r\n\r\n /** ImageSettings for the product image in cartline */\r\n imageSettings: IImageSettings;\r\n id: string;\r\n typeName: string;\r\n context: ICoreContext>;\r\n telemetry: ITelemetry;\r\n removeButtonText: string;\r\n addToWishlistButtonText: string;\r\n removeFromWishlistButtonText: string;\r\n shipItText: string;\r\n pickitUpText: string;\r\n changeStoreText: string;\r\n outOfStockText: string;\r\n outOfRangeOneText: string;\r\n outOfRangeFormatText: string;\r\n storeSelectorStateManager: IStoreSelectorStateManager | undefined;\r\n isStockCheckEnabled: boolean;\r\n wishlists: CommerceList[] | undefined;\r\n defaultWishlistName: string;\r\n maxCartlineQuantity: number;\r\n includeErrors?: boolean;\r\n showShippingChargesForLineItems?: boolean;\r\n telemetryContent?: ITelemetryContent;\r\n isQuantityLimitsFeatureEnabled: boolean;\r\n storeSelectorModuleId?: string;\r\n channelDeliveryOptionConfig?: ChannelDeliveryOptionConfiguration;\r\n\r\n addToOrderTemplateDialogResources: IAddToOrderTemplateDialogResources;\r\n createOrderTemplateDialogResources: IOrderTemplateNameDialogResources;\r\n itemAddedToOrderTemplateDialogResources: IItemAddedToOrderTemplateDialogResources;\r\n duplicateItemsWhenAddingToOrderTemplateDialogResources: IDuplicateItemsWhenAddingToOrderTemplateDialogResources;\r\n\r\n addToOrderTemplateButtonText: string;\r\n addToOrderTemplateButtonTooltip: string;\r\n addToOrderTemplateMessage: string;\r\n addItemToOrderTemplateError: string;\r\n orderTemplates: OrderTemplate[] | undefined;\r\n customerInformation: Customer | undefined;\r\n shouldIgnoreWarehouse: boolean | undefined;\r\n\r\n removeItemClickHandler(cartlineToRemove: CartLine): void;\r\n moveToWishlistSuccessHandler(result: IWishlistActionSuccessResult, cartlineId: CartLine): void;\r\n updateCartLinesQuantitySuccessHandler(cartline: CartLine, quantity: number): boolean;\r\n locationChangedHandler(): void;\r\n}\r\n\r\nexport interface ICartlinesViewProps {\r\n cartline: React.ReactNode;\r\n pickUpInStore?: IPickUpInStoreViewProps;\r\n remove: React.ReactNode;\r\n addToWishlist: React.ReactNode | undefined;\r\n addToOrderTemplate: React.ReactNode | undefined;\r\n\r\n error?: string;\r\n cartlineId?: string;\r\n data?: {\r\n product?: SimpleProduct;\r\n cartline: CartLine;\r\n };\r\n}\r\n\r\nconst _getCartItemAvailableQuantity = (isStockCheckEnabled: boolean, productAvailability: IProductInventoryInformation | undefined): number => {\r\n if (!isStockCheckEnabled ||\r\n !productAvailability ||\r\n !productAvailability.ProductAvailableQuantity ||\r\n !productAvailability.IsProductAvailable ||\r\n !productAvailability.ProductAvailableQuantity.AvailableQuantity) {\r\n return 0;\r\n }\r\n\r\n return productAvailability.ProductAvailableQuantity.AvailableQuantity;\r\n};\r\n\r\nconst _getCartItemMaxQuantity = (\r\n maxQuantityByConfig: number,\r\n isStockCheckEnabled: boolean,\r\n availableQuantityInStock: number,\r\n isQuantityLimitsFeatureEnabled: boolean,\r\n maxByQuantityLimitsFeature: number) => {\r\n if (isQuantityLimitsFeatureEnabled) {\r\n let maxByQuantityLimitsFeatureResult = maxByQuantityLimitsFeature;\r\n\r\n // If max by feature in not defined when feature is on then we suggest that there no max by feature\r\n // and consider available qty if stock check enabled and max from config in site settings.\r\n if (!maxByQuantityLimitsFeature) {\r\n maxByQuantityLimitsFeatureResult = maxQuantityByConfig || 10;\r\n }\r\n\r\n return isStockCheckEnabled ? (maxByQuantityLimitsFeatureResult < availableQuantityInStock ? maxByQuantityLimitsFeatureResult : availableQuantityInStock) : maxByQuantityLimitsFeatureResult;\r\n }\r\n if (isStockCheckEnabled) {\r\n return availableQuantityInStock < maxQuantityByConfig ? availableQuantityInStock : maxQuantityByConfig;\r\n }\r\n return maxQuantityByConfig;\r\n\r\n};\r\n\r\nconst _getErrorMessage = (availableQuantityInStock: number, currentQuantity: number, props: ICartLineItemsProps, lineIndex: number, isServiceItem: boolean): string | undefined => {\r\n const finalErrorMessages: string[] = [];\r\n if (props.includeErrors) {\r\n if (props.isStockCheckEnabled && !isServiceItem) {\r\n if (availableQuantityInStock <= 0) {\r\n finalErrorMessages.push(props.outOfStockText);\r\n } else if (availableQuantityInStock < currentQuantity) {\r\n if (availableQuantityInStock === 1) {\r\n finalErrorMessages.push(props.outOfRangeOneText);\r\n } else {\r\n finalErrorMessages.push(props.outOfRangeFormatText.replace('{numLeft}', availableQuantityInStock.toString()));\r\n }\r\n }\r\n }\r\n }\r\n\r\n // Server-side validation\r\n props.cartlinesErrors\r\n .filter(i => i.LineIndex === lineIndex)\r\n .forEach(i => {\r\n if (i.DataValidationFailure?.ErrorContext) {\r\n finalErrorMessages.push(i.DataValidationFailure.ErrorContext);\r\n }\r\n });\r\n\r\n if (finalErrorMessages.length > 0) {\r\n return finalErrorMessages.join(' ');\r\n }\r\n\r\n return undefined;\r\n};\r\n\r\n/**\r\n * On Remove Click functionality.\r\n * @param removeItemClickHandler -Remove item click function.\r\n * @param cartline -CartLine.\r\n * @returns Remove change value.\r\n */\r\nconst onRemoveClickFunction = (removeItemClickHandler: (cartlineToRemove: CartLine) => void, cartline: CartLine) => () => {\r\n removeItemClickHandler(cartline);\r\n};\r\n\r\n// eslint-disable-next-line complexity -- Auto-suppressed.\r\nconst _assembleNode = (\r\n cartline: CartLine,\r\n product: SimpleProduct | undefined,\r\n props: ICartLineItemsProps,\r\n index: number,\r\n foundProductAvailability?: IProductInventoryInformation,\r\n foundProductDeliveryOptions?: ProductDeliveryOptions): ICartlinesViewProps => {\r\n const { imageSettings, gridSettings, id, typeName, context, resources, removeButtonText,\r\n removeItemClickHandler, moveToWishlistSuccessHandler, addToOrderTemplateButtonText, addToOrderTemplateButtonTooltip,\r\n addToOrderTemplateDialogResources, createOrderTemplateDialogResources,\r\n itemAddedToOrderTemplateDialogResources, duplicateItemsWhenAddingToOrderTemplateDialogResources,\r\n addToWishlistButtonText, removeFromWishlistButtonText, orderTemplates, customerInformation,\r\n wishlists, defaultWishlistName, storeSelectorModuleId } = props;\r\n\r\n const isAuthenticated = context.request.user.isAuthenticated;\r\n const nameOfWishlist = wishlists && wishlists.length > 0 && wishlists[0].Name ? wishlists[0].Name : defaultWishlistName;\r\n\r\n const availableQuantityInStock = _getCartItemAvailableQuantity(props.isStockCheckEnabled, foundProductAvailability);\r\n\r\n const maxQuantity = product && _getCartItemMaxQuantity(\r\n props.maxCartlineQuantity,\r\n props.isStockCheckEnabled,\r\n availableQuantityInStock,\r\n props.isQuantityLimitsFeatureEnabled,\r\n product?.Behavior?.MaximumQuantity || 0);\r\n\r\n // Check if the product is service or not by product type\r\n const isServiceItem = product?.ItemTypeValue === ReleasedProductType.Service;\r\n\r\n const errorMessage = ObjectExtensions.isNullOrUndefined(maxQuantity) ? undefined : _getErrorMessage(availableQuantityInStock, cartline.Quantity!, props, index, isServiceItem);\r\n\r\n const onRemoveClickHandler = onRemoveClickFunction(removeItemClickHandler, cartline);\r\n\r\n const payload = getPayloadObject(TelemetryEvent.RemoveFromCart, props.telemetryContent!, removeButtonText, '');\r\n const attributes = getTelemetryAttributes(props.telemetryContent!, payload);\r\n\r\n const inventoryLbl = foundProductAvailability?.StockLevelLabel;\r\n const inventoryCode = foundProductAvailability ? `ms-cart-line__inventory-code-${foundProductAvailability.StockLevelCode?.toLowerCase()}` : undefined;\r\n const productDimension = 4;\r\n const customPriceDimensionType = productDimension as ProductDimensionType.Style;\r\n const isCustomPriceSelected = product?.Dimensions?.find(dimension => dimension.DimensionTypeValue === customPriceDimensionType)?.DimensionValue?.Value === 'Custom';\r\n\r\n return {\r\n data: {\r\n product,\r\n cartline\r\n },\r\n cartlineId: cartline.LineId,\r\n error: errorMessage,\r\n cartline: (\r\n ),\r\n pickUpInStore: product ? (\r\n PickUpInStore({\r\n storeSelectorModuleId,\r\n cartState: props.cartState,\r\n cartline,\r\n product,\r\n shipitText: props.shipItText,\r\n pickUpInStoreText: props.pickitUpText,\r\n changeStoreText: props.changeStoreText,\r\n storeSelectorStateManager: props.storeSelectorStateManager,\r\n orgUnitLocations: props.orgUnitLocations,\r\n deliveryOptions: foundProductDeliveryOptions,\r\n pickupDeliveryModeCode: cartline.DeliveryMode !== (undefined || '') ? cartline.DeliveryMode : props.pickupDeliveryModeCode,\r\n locationChangedHandler: props.locationChangedHandler\r\n })\r\n ) : undefined,\r\n remove: (\r\n \r\n {removeButtonText}\r\n \r\n ),\r\n addToWishlist: (\r\n isAuthenticated && product && !isCustomPriceSelected ? (\r\n \r\n ) : undefined\r\n ),\r\n addToOrderTemplate: (\r\n isAuthenticated && orderTemplates && product ? (\r\n \r\n ) : undefined\r\n )\r\n };\r\n};\r\n\r\nexport const assembleCartlines = (\r\n cartlines: CartLine[],\r\n products: SimpleProduct[] | undefined,\r\n props: ICartLineItemsProps): ICartlinesViewProps[] | null => {\r\n const reactNodes: ICartlinesViewProps[] = [];\r\n\r\n cartlines.map((cartline, index) => {\r\n const product = getProductByProductId(cartline.ProductId, products);\r\n\r\n let foundProductAvailability;\r\n if (props.productAvailabilites && ArrayExtensions.hasElements(props.productAvailabilites)) {\r\n foundProductAvailability = props.productAvailabilites.find((productAvailability) => {\r\n if (props.shouldIgnoreWarehouse) {\r\n return productAvailability.ProductAvailableQuantity?.ProductId === cartline.ProductId;\r\n }\r\n return productAvailability.ProductAvailableQuantity?.ProductId === cartline.ProductId &&\r\n productAvailability.InventLocationId === cartline.WarehouseId;\r\n });\r\n }\r\n let foundProductDeliveryOption;\r\n if (props.productDeliveryOptions && props.productDeliveryOptions.length > 0) {\r\n foundProductDeliveryOption = props.productDeliveryOptions.find((deliveryOption) => {\r\n return deliveryOption && deliveryOption.ProductId === cartline.ProductId;\r\n });\r\n }\r\n reactNodes.push(_assembleNode(cartline, product, props, index, foundProductAvailability, foundProductDeliveryOption));\r\n });\r\n\r\n return reactNodes;\r\n};\r\n\r\n/**\r\n * CartLineItems component.\r\n * @param props\r\n */\r\nexport const CartLineItems = (props: ICartLineItemsProps) => {\r\n const { products, cartlines } = props;\r\n return (\r\n assembleCartlines(cartlines, products, props)\r\n );\r\n};\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { CartLine, SimpleProduct } from '@msdyn365-commerce/retail-proxy';\r\nimport groupBy from 'lodash/groupBy';\r\n\r\nimport { assembleCartlines, ICartLineItemsProps, ICartlinesViewProps } from './arborb2b-cart-line-items';\r\n\r\nconst _assembleGroupCartlines = (cartlines: CartLine[], products: SimpleProduct[] | undefined, props: ICartLineItemsProps): ICartlinesViewProps[][] | null => {\r\n const reactNodes: ICartlinesViewProps[][] = [];\r\n if (!products || products.length === 0) {\r\n props.context.telemetry.error('Products content is empty, module wont render');\r\n return null;\r\n }\r\n\r\n const getGroupByStorePickup = (items: CartLine[]) => groupBy(items, item => item.FulfillmentStoreId);\r\n const getGroupByDelivery = (items: CartLine[]) => groupBy(items, item => (item.DeliveryMode));\r\n const groupDelivery = getGroupByDelivery(cartlines);\r\n const cartLinesGroup: CartLine[] = [];\r\n\r\n // 1) Group by store and pick up mode\r\n Object.entries(groupDelivery).forEach(([deliveryType, groupByDeliveryType]) => {\r\n // @ts-expect-error\r\n groupDelivery[deliveryType] = getGroupByStorePickup(groupByDeliveryType);\r\n cartLinesGroup.push(getGroupByStorePickup(groupByDeliveryType));\r\n });\r\n\r\n // 2) Create cartlines group\r\n Object.keys(cartLinesGroup).forEach(key => {\r\n const cartLines = cartLinesGroup[key];\r\n Object.keys(cartLines).forEach(index => {\r\n const cartLine = cartLines[index];\r\n const carLineViewProps = assembleCartlines(cartLine, products, props);\r\n if (carLineViewProps !== null) {\r\n reactNodes.push(carLineViewProps);\r\n }\r\n });\r\n\r\n });\r\n\r\n return reactNodes;\r\n};\r\n\r\n/**\r\n * CartLine Group component.\r\n * @param props\r\n */\r\nexport const CartLineGroupItems = (props: ICartLineItemsProps) => {\r\n const { products, cartlines } = props;\r\n return (\r\n _assembleGroupCartlines(cartlines, products, props)\r\n );\r\n};\r\n","/* eslint-disable prettier/prettier */\r\n/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { IActionContext } from '@msdyn365-commerce/core';\r\nimport { CartPromotionLine } from '@msdyn365-commerce/retail-proxy';\r\nimport { getPromotionOptionsForCartLineItems, PromotionOptionsForCartLineItems } from '@msdyn365-commerce-modules/retail-actions';\r\n\r\n/**\r\n * IPromotionData entity interface.\r\n */\r\nexport interface IPromotionData {\r\n promotionOptions?: CartPromotionLine[];\r\n}\r\n\r\n/**\r\n * Calls the Retail API and returns a promotion data.\r\n * @param ctx\r\n */\r\nexport async function getPromotionData(ctx: IActionContext): Promise {\r\n const promotionData: IPromotionData = {};\r\n\r\n await getPromotionOptionsForCartLineItems(\r\n new PromotionOptionsForCartLineItems(ctx.requestContext.apiSettings),\r\n ctx\r\n ).then(promotionOptions => {\r\n if (promotionOptions) {\r\n promotionData.promotionOptions = promotionOptions;\r\n }\r\n })\r\n .catch(error => {\r\n ctx.telemetry.exception(error);\r\n return {};\r\n });\r\n\r\n return promotionData;\r\n}\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport {\r\n IAddToOrderTemplateDialogResources, IDuplicateItemsWhenAddingToOrderTemplateDialogResources,\r\n IItemAddedToOrderTemplateDialogResources, ILinesAddedToOrderTemplateDialogResources, IOrderTemplateNameDialogResources,\r\n IWishlistActionSuccessResult, PromoCodeComponent, SaveCartToOrderTemplateComponent } from '@msdyn365-commerce/components';\r\nimport MsDyn365, { getUrlSync, IImageSettings } from '@msdyn365-commerce/core';\r\nimport { ICartState } from '@msdyn365-commerce/global-state';\r\nimport { AsyncResult, CartLine, LineDataValidationFailure, SimpleProduct } from '@msdyn365-commerce/retail-proxy';\r\nimport { AttributeValueBase, ReleasedProductType } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\r\nimport { isCartLineQuantityUpdatedAsync, validateCartAsync } from '@msdyn365-commerce-modules/cart-utilities';\r\nimport { IInvoiceSummaryLines, InvoiceSummary } from '@msdyn365-commerce-modules/invoice-payment-summary';\r\nimport { IOrderSummaryLines, OrderSummary } from '@msdyn365-commerce-modules/order-summary-utilities';\r\nimport { ActiveCartProductsInput, ArrayExtensions, getActiveCartProductsAction, ObjectExtensions } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { Alert, Button, getPayloadObject, getTelemetryAttributes, getTelemetryObject, INodeProps, IPayLoad,\r\n ITelemetryContent, TelemetryConstant, Waiting } from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport { reaction } from 'mobx';\r\nimport { observer } from 'mobx-react';\r\nimport React from 'react';\r\n\r\nimport { IArborb2BCartData } from './arborb2b-cart.data';\r\nimport { IArborb2bCartProps, IArborb2bCartResources } from './arborb2b-cart.props.autogenerated';\r\nimport { CartLineGroupItems } from './components/arborb2b-cart-line-groups';\r\nimport { CartLineItems, ICartlinesViewProps } from './components/arborb2b-cart-line-items';\r\nimport { cartPromotions, ICartLineItemViewProps } from './components/arborb2b-cart-line-items-promotion';\r\nimport { getPromotionData, IPromotionData } from './utils/get-promotion-in-arborb2b-cart';\r\nimport { updateAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ApplicableOperationsDataActions.g';\r\n\r\nexport interface ICartViewProps extends IArborb2bCartProps {\r\n className: string;\r\n title?: React.ReactNode;\r\n CartlinesWrapper: INodeProps;\r\n cartlines?: ICartlinesViewProps[];\r\n cartLinesGroup?: ICartlinesViewProps[][];\r\n cart: ICartState | undefined;\r\n orderSummaryHeading: React.ReactNode;\r\n orderSummaryLineitems?: IOrderSummaryLines;\r\n invoiceSummaryLineitems?: IInvoiceSummaryLines;\r\n OrderSummaryWrapper: INodeProps;\r\n OrderSummaryItems: INodeProps;\r\n OrderSummaryErrors?: IOrderSummaryErrors;\r\n checkoutAsGuestButton: React.ReactNode;\r\n checkoutAsSignInUserButton: React.ReactNode;\r\n storeSelector?: React.ReactNode;\r\n backToShoppingButton: React.ReactNode;\r\n waitingComponent: React.ReactNode;\r\n promotionOptions?: ICartLineItemViewProps;\r\n promoCode: React.ReactNode;\r\n cartLoadingStatus: string;\r\n cartDataResult: boolean;\r\n multiplePickUpEnabled?: boolean;\r\n createTemplateFromCartButton: React.ReactNode;\r\n telemetryContent?: ITelemetryContent;\r\n removeItemClickHandler(cartlineToRemove: CartLine): void;\r\n moveToWishlistSuccessHandler(result: IWishlistActionSuccessResult, cartlineId: CartLine): void;\r\n}\r\n\r\nexport interface IOrderSummaryErrors {\r\n Wrapper: INodeProps;\r\n\r\n header: React.ReactNode;\r\n errors: React.ReactNode[];\r\n}\r\n\r\ninterface ICartComponentState {\r\n showPromotionDialog: boolean;\r\n cartlinesErrors: LineDataValidationFailure[];\r\n promotionData: IPromotionData;\r\n products: SimpleProduct[];\r\n}\r\n\r\n/**\r\n *\r\n * Cart component.\r\n * @extends {React.PureComponent>}\r\n */\r\n@observer\r\nclass Cart extends React.Component> {\r\n\r\n public state: ICartComponentState = {\r\n cartlinesErrors: [],\r\n showPromotionDialog: false,\r\n promotionData: {},\r\n products: []\r\n };\r\n\r\n private readonly telemetryContent: ITelemetryContent;\r\n\r\n private readonly payLoad: IPayLoad;\r\n\r\n private isQuantityLimitsFeatureEnabled: boolean = false;\r\n\r\n private _isMounted: boolean = false;\r\n\r\n private readonly promotionPopupId: string = 'cart-promotion-popup';\r\n AttributeValues: AttributeValueBase[] | undefined;\r\n\r\n constructor(props: IArborb2bCartProps) {\r\n super(props);\r\n this.telemetryContent = getTelemetryObject(this.props.context.request.telemetryPageName!, this.props.friendlyName, this.props.telemetry);\r\n this.payLoad = getPayloadObject('click', this.telemetryContent, '');\r\n this.promotionLinkClick = this.promotionLinkClick.bind(this);\r\n this.promotionCloseButtonclick = this.promotionCloseButtonclick.bind(this);\r\n }\r\n\r\n public async componentDidMount(): Promise {\r\n this._isMounted = true;\r\n const {\r\n config,\r\n context: {\r\n actionContext\r\n }\r\n } = this.props;\r\n\r\n this.isQuantityLimitsFeatureEnabled = await this._getOrderQuantityLimitsFeatureFlag();\r\n if (this.isQuantityLimitsFeatureEnabled) {\r\n await this._validateCart();\r\n }\r\n\r\n try {\r\n const products = await this.props.data.products;\r\n if (this._isMounted) {\r\n this.setState({ products });\r\n }\r\n } catch (error) {\r\n //@ts-ignore\r\n this.props.telemetry.warning(error);\r\n this.props.telemetry.debug('Unable to get cart');\r\n }\r\n\r\n if (config.showAvailablePromotions) {\r\n if (this._isMounted && this.props.data.cart.result?.cart.CartLines) {\r\n this.setState({ promotionData: await getPromotionData(actionContext) });\r\n }\r\n\r\n reaction(\r\n () => this.props.data.cart.result?.cart.CartLines,\r\n async () => {\r\n if (this._isMounted) {\r\n this.setState({ promotionData: await getPromotionData(actionContext) });\r\n }\r\n }\r\n );\r\n }\r\n }\r\n\r\n public componentWillUnmount(): void {\r\n this._isMounted = false;\r\n }\r\n\r\n public shouldComponentUpdate(nextProps: IArborb2bCartProps,\r\n nextState: ICartComponentState): boolean {\r\n if (this.state === nextState && this.props.data === nextProps.data) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n public _addOrUpdateSalesOrderAttributes = (cart: Cart): void => {\r\n // Create the array of attribute and add attributes\r\n const attributeArr: AttributeValueBase[] = [];\r\n let attributeObj = {\r\n // @ts-ignore\r\n '@odata.type': '#Microsoft.Dynamics.Commerce.Runtime.DataModel.AttributeTextValue',\r\n Name: 'Brand',\r\n ExtensionProperties: [],\r\n TextValue: 'OscarBrand-2',\r\n TextValueTranslations: []\r\n };\r\n attributeObj.Name = 'Brand';\r\n attributeArr.push(attributeObj);\r\n \r\n attributeObj = {\r\n // @ts-ignore\r\n '@odata.type': '#Microsoft.Dynamics.Commerce.Runtime.DataModel.AttributeTextValue',\r\n Name: 'Connector',\r\n ExtensionProperties: [],\r\n TextValue: 'OscarConnector-2',\r\n TextValueTranslations: []\r\n };\r\n attributeObj.Name = 'Connector';\r\n attributeArr.push(attributeObj);\r\n \r\n cart.AttributeValues = attributeArr;\r\n //@ts-ignore\r\n updateAsync({ callerContext: this.props.context.actionContext}, cart)\r\n .then(newCart => {\r\n console.log('Success');\r\n //@ts-ignore\r\n this.props.context.actionContext.update(new GetCheckoutCartInput(this.props.context.request.apiSettings), newCart);\r\n })\r\n .catch(error => {\r\n console.log(error);\r\n });\r\n };\r\n\r\n public render(): JSX.Element | null {\r\n const {\r\n data: {\r\n cart: { result: cart },\r\n products: { result: products }\r\n },\r\n context: {\r\n request: {\r\n user: {\r\n isAuthenticated,\r\n signInUrl\r\n }\r\n }\r\n },\r\n resources\r\n } = this.props;\r\n\r\n const guestCheckoutUrl = getUrlSync('checkout', this.props.context.actionContext) || '';\r\n const backToShoppingUrl = getUrlSync('home', this.props.context.actionContext) || '';\r\n const checkoutURL = this._getCheckoutURL(isAuthenticated, guestCheckoutUrl, signInUrl || '');\r\n const isCartEmpty = cart && cart.cart.CartLines && cart.cart.CartLines.length === 0;\r\n const cartLines = this._getCartLines();\r\n const RetailMultiplePickupFeatureState = this.props.data.featureState.result?.find(featureState => featureState.Name === 'Dynamics.AX.Application.RetailMultiplePickupDeliveryModeFeature');\r\n const multiplePickUpEnabled = !cart?.hasInvoiceLine && RetailMultiplePickupFeatureState?.IsEnabled;\r\n const cartLinesGroup = multiplePickUpEnabled ? this._getCartLinesGroup() : null;\r\n\r\n this.payLoad.contentAction.etext = TelemetryConstant.Checkout;\r\n const checkoutBySignInAttributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\r\n this.payLoad.contentAction.etext = TelemetryConstant.GuestCheckout;\r\n const checkoutByGuestAttributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\r\n this.payLoad.contentAction.etext = TelemetryConstant.BackToShopping;\r\n const backtoShoppingAttributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\r\n const hasErrors = cartLines ? cartLines.some(cartline => cartline.error !== undefined) : false;\r\n\r\n const viewProps = {\r\n ...this.props,\r\n className: classnames('ms-cart'),\r\n title:

\r\n {resources.cartTitle}\r\n

,\r\n cart: this.props.data.cart.result,\r\n CartlinesWrapper: { className: 'msc-cartline-wraper' },\r\n OrderSummaryWrapper: { className: cart?.hasInvoiceLine ? 'msc-invoice-summary-wrapper' : 'msc-order-summary-wrapper' },\r\n OrderSummaryItems: { className: cart?.hasInvoiceLine ? 'msc-invoice-summary__items' : 'msc-order-summary__items' },\r\n cartlines: cartLines,\r\n cartLinesGroup,\r\n promoCode: this._getPromoCode(),\r\n promotionOptions: this._getPromotions(),\r\n context: this.props.context,\r\n typeName: this.props.typeName,\r\n telemetry: this.props.telemetry,\r\n id: this.props.id,\r\n multiplePickUpEnabled,\r\n removePromoAriaLabelFormat: resources.removePromoAriaLabelFormat,\r\n orderSummaryHeading: ArrayExtensions.hasElements(cart?.cart.CartLines) ? (\r\n cart?.hasInvoiceLine ?

\r\n { resources.invoiceSummaryTitle }\r\n

:

\r\n { resources.orderSummaryTitle}\r\n

\r\n ) : null,\r\n orderSummaryLineitems: this._getOrderSummaryLineItems(),\r\n invoiceSummaryLineitems: this._getInvoiceSummaryLineItems(),\r\n checkoutAsSignInUserButton: (!isCartEmpty) ? (\r\n \r\n {resources.checkoutButtonTitle}\r\n \r\n ) : null,\r\n checkoutAsGuestButton: (!isCartEmpty && !isAuthenticated) ? (\r\n \r\n {resources.guestCheckoutButtonTitle}\r\n \r\n ) : null,\r\n backToShoppingButton: \r\n {resources.backToShoppingButtonTitle}\r\n ,\r\n createTemplateFromCartButton: (this._displayAddCartToTemplate() && products) ? (\r\n \r\n ) : null,\r\n storeSelector: this.props.slots.storeSelector && this.props.slots.storeSelector.length > 0 ? this.props.slots.storeSelector[0] : null,\r\n removeItemClickHandler: this._removeItemFromCartHandler,\r\n moveToWishlistSuccessHandler: this._moveToWishlistSuccessHandler,\r\n waitingComponent: ,\r\n cartLoadingStatus: this.props.data.cart.status === 'FAILED' ? this.props.resources.cartLoadingErrorMessage : null,\r\n cartDataResult: this.props.data.cart.result && this.props.data.cart.result.isEmpty,\r\n OrderSummaryErrors: this._getOrderSummaryErrors(cartLines),\r\n telemetryContent: this.telemetryContent\r\n };\r\n\r\n return this.props.renderView(viewProps) as React.ReactElement;\r\n }\r\n\r\n private readonly promotionLinkClick = (event: React.MouseEvent) => {\r\n this.setState({\r\n showPromotionDialog: !this.state.showPromotionDialog\r\n });\r\n };\r\n\r\n private readonly promotionCloseButtonclick = () => {\r\n this._hidePromotionDialog();\r\n };\r\n\r\n private _hidePromotionDialog(): void {\r\n this.setState({\r\n showPromotionDialog: false\r\n });\r\n }\r\n\r\n private _displayAddCartToTemplate(): boolean {\r\n const cart = this.props.data.cart?.result;\r\n if (ObjectExtensions.isNullOrUndefined(cart) || cart.hasInvoiceLine) {\r\n return false;\r\n }\r\n\r\n const RetailB2BEcommerceFeatureState = this.props.data.featureState.result?.find(featureState => featureState.Name === 'Dynamics.AX.Application.RetailB2BEcommerceFeature');\r\n if (RetailB2BEcommerceFeatureState?.IsEnabled && this.props.data.customerInformation.result?.IsB2b && this.props.data.orderTemplates.result &&\r\n ArrayExtensions.hasElements(cart.cart?.CartLines) && this.props.data.customerInformation.result) {\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n private _getPromotions(): React.ReactNode {\r\n return (\r\n this.props.config.showAvailablePromotions &&\r\n cartPromotions({\r\n id: this.promotionPopupId,\r\n showPromotionPopup: this.state.showPromotionDialog,\r\n onSeeAllClick: this.promotionLinkClick,\r\n onCloseButtonClick: this.promotionCloseButtonclick,\r\n promotions: this.state.promotionData.promotionOptions,\r\n resources: {\r\n promotionStringHeading: this.props.resources.promotionStringHeading,\r\n promotionLinkText: this.props.resources.promotionLinkText,\r\n promotionPopupHeading: this.props.resources.promotionPopupHeading,\r\n promotionCloseButtonAriaLabel: this.props.resources.promotionCloseButtonAriaLabel\r\n }\r\n })\r\n );\r\n }\r\n\r\n private _getOrderSummaryErrors(cartLines: ICartlinesViewProps[] | null): IOrderSummaryErrors | undefined {\r\n const allErrors = cartLines && cartLines.map(cartline => {\r\n\r\n // Check if the product is service or not by product type\r\n const isServiceItem = cartline.data?.product?.ItemTypeValue === ReleasedProductType.Service;\r\n\r\n if (!isServiceItem && cartline.error) {\r\n const fullError = (cartline.data && cartline.data.product?.Name) ? `${cartline.data.product.Name}: ${cartline.error}` : cartline.error;\r\n\r\n return (\r\n
\r\n {fullError}\r\n
\r\n );\r\n }\r\n\r\n return null;\r\n }).filter((line): line is JSX.Element => !!line) || [];\r\n\r\n return {\r\n Wrapper: {\r\n tag: Alert,\r\n className: 'msc-alert',\r\n isOpen: allErrors.length > 0,\r\n color: 'danger',\r\n assertive: true,\r\n 'aria-label': this.props.resources.outOfStockErrorMessageHeader\r\n },\r\n header: (\r\n \r\n ),\r\n errors: allErrors\r\n };\r\n }\r\n\r\n private _getInvoiceSummaryLineItems(): IInvoiceSummaryLines | undefined {\r\n const {\r\n data: {\r\n cart: { result: cart }\r\n },\r\n telemetry,\r\n resources\r\n } = this.props;\r\n\r\n return cart?.hasInvoiceLine ? (\r\n InvoiceSummary({\r\n orderTotalLabel: resources.totalAmountLabel,\r\n invoiceLabel: resources.invoiceLabel,\r\n cart: cart.cart,\r\n context: this.props.context,\r\n typeName: this.props.typeName,\r\n telemetry,\r\n id: this.props.id\r\n })\r\n ) : undefined;\r\n }\r\n\r\n private _getOrderSummaryLineItems(): IOrderSummaryLines | undefined {\r\n const {\r\n data: {\r\n cart: { result: cart },\r\n channelDeliveryOptionConfig\r\n },\r\n telemetry,\r\n resources\r\n } = this.props;\r\n\r\n const channelConfiguration = this.props.context && this.props.context.request && this.props.context.request.channel;\r\n const multiplePickupStoreSwitchName = 'Dynamics.AX.Application.RetailMultiplePickupDeliveryModeFeature';\r\n const featureState = this.props?.data?.featureState;\r\n const retailMultiplePickUpOptionEnabled = featureState?.result?.find(item => item.Name === multiplePickupStoreSwitchName)?.IsEnabled;\r\n\r\n return channelConfiguration && ArrayExtensions.hasElements(cart?.cart.CartLines) && !cart?.hasInvoiceLine ? (\r\n OrderSummary({\r\n cart: cart!.cart,\r\n subTotalLabel: resources.itemsWithCountLabel,\r\n shippingLabel: resources.estimatedShippingLabel,\r\n otherChargeLabel: resources.otherCharges,\r\n taxLabel: resources.estimatedTaxLabel,\r\n orderTotalLabel: resources.orderTotal,\r\n totalDiscountsLabel: resources.totalDiscountsLabel,\r\n context: this.props.context,\r\n typeName: this.props.typeName,\r\n id: this.props.id,\r\n toBeCalculatedText: resources.yetToBeCalculatedText,\r\n freeText: resources.priceFree,\r\n channelConfiguration,\r\n retailMultiplePickUpOptionEnabled,\r\n channelDeliveryOptionConfig: channelDeliveryOptionConfig?.result,\r\n telemetry\r\n })\r\n ) : undefined;\r\n }\r\n\r\n private _getPromoCode(): React.ReactNode {\r\n const {\r\n data: {\r\n cart: { result: cart }\r\n },\r\n resources\r\n } = this.props;\r\n\r\n return cart && (\r\n \r\n );\r\n }\r\n\r\n private _generateAddToOrderTemplateDialogResources(resources: IArborb2bCartResources): IAddToOrderTemplateDialogResources {\r\n return {\r\n addToOrderTemplateHeader: resources.addToOrderTemplateHeader,\r\n\r\n noOrderTemplatesMessage: resources.noOrderTemplatesMessage,\r\n noOrderTemplatesDescription: resources.noOrderTemplatesDescription,\r\n\r\n createAnOrderTemplateButtonText: resources.createAnOrderTemplateButtonText,\r\n createNewOrderTemplateButtonText: resources.createNewOrderTemplateButtonText,\r\n cancelOrderTemplateCreationButtonText: resources.cancelOrderTemplateCreationButtonText,\r\n\r\n selectTemplatesText: resources.selectTemplatesText,\r\n addToTemplateButtonText: resources.addToTemplateButtonText,\r\n lineItemsText: resources.lineItemsText\r\n };\r\n }\r\n\r\n private _generateItemAddedToOrderTemplateDialogResources(resources: IArborb2bCartResources): IItemAddedToOrderTemplateDialogResources {\r\n return {\r\n viewOrderTemplateButtonText: resources.viewOrderTemplateButtonText,\r\n continueShoppingButtonText: resources.continueShoppingButtonText,\r\n itemAddedToOrderTemplateHeaderItemOneText: resources.itemAddedToOrderTemplateHeaderItemOneText,\r\n itemAddedToOrderTemplateHeaderItemFormatText: resources.itemAddedToOrderTemplateHeaderItemFormatText,\r\n itemAddedToOrderTemplateHeaderMessageText: resources.itemAddedToOrderTemplateHeaderMessageText,\r\n freePriceText: resources.freePriceText,\r\n originalPriceText: resources.originalPriceText,\r\n currentPriceText: resources.currentPriceText\r\n };\r\n }\r\n\r\n private _generateLinesAddedToOrderTemplateDialogResources(resources: IArborb2bCartResources): ILinesAddedToOrderTemplateDialogResources {\r\n return {\r\n viewOrderTemplateButtonText: resources.viewOrderTemplateButtonText,\r\n continueShoppingButtonText: resources.continueShoppingButtonText,\r\n linesAddedToOrderTemplateHeaderItemsOneText: resources.linesAddedToOrderTemplateHeaderItemsOneText,\r\n linesAddedToOrderTemplateHeaderItemsFormatText: resources.linesAddedToOrderTemplateHeaderItemsFormatText,\r\n linesAddedToOrderTemplateHeaderLinesOneText: resources.linesAddedToOrderTemplateHeaderLinesOneText,\r\n linesAddedToOrderTemplateHeaderLinesFormatText: resources.linesAddedToOrderTemplateHeaderLinesFormatText,\r\n linesAddedToOrderTemplateHeaderMessageText: resources.linesAddedToOrderTemplateHeaderMessageText,\r\n linesAddedToOrderTemplateCustomPriceAlertMessageText: resources.linesAddedToOrderTemplateCustomPriceAlertMessageText\r\n };\r\n }\r\n\r\n private _generateDuplicateItemsWhenAddingToOrderTemplateDialogResources(resources: IArborb2bCartResources): IDuplicateItemsWhenAddingToOrderTemplateDialogResources {\r\n return {\r\n duplicatedProductsHeader: resources.duplicatedProductsHeader,\r\n duplicatedProductsDescription: resources.duplicatedProductsDescription,\r\n updateQuantityButtonText: resources.updateQuantityButtonText,\r\n cancelDuplicateItemsButtonText: resources.cancelDuplicateItemsButtonText\r\n };\r\n }\r\n\r\n private _generateOrderTemplateNameDialogResources(resources: IArborb2bCartResources): IOrderTemplateNameDialogResources {\r\n return {\r\n orderTemplateHeaderLabel: resources.createOrderTemplateHeader,\r\n orderTemplateTitleLabel: resources.orderTemplateTitle,\r\n orderTemplateNameAriaLabel: resources.orderTemplateNameAriaLabel,\r\n orderTemplateDescription: resources.createOrderTemplateDescription,\r\n\r\n defaultOrderTemplateName: resources.defaultOrderTemplateName,\r\n\r\n orderTemplateButtonLabel: resources.createOrderTemplateButtonText,\r\n orderTemplateCancelButtonLabel: resources.cancelNewOrderTemplateCreationButtonText\r\n };\r\n }\r\n\r\n private _getCartLines(): ICartlinesViewProps[] | null {\r\n const {\r\n data: {\r\n cart: { result: cart },\r\n wishlists: { result: wishlists },\r\n orderTemplates: { result: orderTemplates },\r\n customerInformation: { result: customerInformation }\r\n },\r\n context: {\r\n request: {\r\n channel: {\r\n PickupDeliveryModeCode\r\n } = { PickupDeliveryModeCode: undefined }\r\n }\r\n },\r\n config,\r\n telemetry,\r\n resources,\r\n modules\r\n } = this.props;\r\n\r\n const imageSettings = this._getImageSettings(config.imageSettings);\r\n\r\n const cartlinesErrors: LineDataValidationFailure[] = this.state.cartlinesErrors;\r\n let storeSelectorId: string = '';\r\n if (modules && Object.keys(modules).length > 0 && modules.storeSelector && modules.storeSelector.length > 0) {\r\n storeSelectorId = modules.storeSelector[0].id;\r\n }\r\n return ArrayExtensions.hasElements(cart?.cart.CartLines) ? (\r\n CartLineItems({\r\n cartlines: cart!.cart.CartLines,\r\n storeSelectorModuleId: storeSelectorId,\r\n cartlinesErrors,\r\n products: this.state.products,\r\n productAvailabilites: this.props.data.productAvailabilites.result,\r\n productDeliveryOptions: this.props.data.deliveryOptions.result,\r\n imageSettings,\r\n isStockCheckEnabled: this.props.context.app.config.enableStockCheck || false,\r\n maxCartlineQuantity: this.props.context.app.config.maxQuantityForCartLineItem,\r\n shouldIgnoreWarehouse: this.props.context.app.config.warehouseAggregation === 'multiple',\r\n gridSettings: this.props.context.request.gridSettings!,\r\n context: this.props.context,\r\n typeName: this.props.typeName,\r\n id: this.props.id,\r\n resources: {\r\n sizeString: resources.productDimensionTypeSize,\r\n colorString: resources.productDimensionTypeColor,\r\n configString: resources.productDimensionTypeConfiguration,\r\n styleString: resources.productDimensionTypeStyle,\r\n amountString: resources.productDimensionTypeAmount,\r\n quantityDisplayString: resources.quantityDisplayText,\r\n inputQuantityAriaLabel: resources.inputQuantityAriaLabel,\r\n decrementButtonAriaLabel: resources.decrementButtonAriaLabel,\r\n incrementButtonAriaLabel: resources.incrementButtonAriaLabel,\r\n discountStringText: resources.discountStringText,\r\n originalPriceText: resources.originalPriceText,\r\n currentPriceText: resources.currentPriceText,\r\n shippingChargesText: resources.shippingCharges\r\n },\r\n telemetry,\r\n addToWishlistButtonText: resources.addToWishlistButtonText,\r\n removeFromWishlistButtonText: resources.removeFromWishlistButtonText,\r\n removeButtonText: resources.removeCartButtonText,\r\n shipItText: resources.shipInsteadDisplayText,\r\n pickitUpText: resources.pickItUpDisplayText,\r\n changeStoreText: resources.changeStoreDisplayText,\r\n storeSelectorStateManager: this.props.data.storeSelectorStateManager.result,\r\n outOfStockText: resources.outOfStockErrorMessage,\r\n outOfRangeOneText: resources.errorMessageOutOfRangeOneLeft,\r\n outOfRangeFormatText: resources.errorMessageOutOfRangeFormat,\r\n cartState: this.props.data.cart.result,\r\n orgUnitLocations: this.props.data.orgUnitLocations.result,\r\n removeItemClickHandler: this._removeItemFromCartHandler,\r\n moveToWishlistSuccessHandler: this._moveToWishlistSuccessHandler,\r\n updateCartLinesQuantitySuccessHandler: this._updateCartlineQuantity,\r\n locationChangedHandler: this._fulfillmentStoreIdUpdated,\r\n wishlists,\r\n defaultWishlistName: resources.defaultWishlistName,\r\n pickupDeliveryModeCode: PickupDeliveryModeCode,\r\n includeErrors: config.showOutOfStockErrors,\r\n showShippingChargesForLineItems: config.showShippingChargesForLineItems,\r\n telemetryContent: this.telemetryContent,\r\n isQuantityLimitsFeatureEnabled: this.isQuantityLimitsFeatureEnabled,\r\n\r\n addToOrderTemplateDialogResources: this._generateAddToOrderTemplateDialogResources(resources),\r\n createOrderTemplateDialogResources: this._generateOrderTemplateNameDialogResources(resources),\r\n itemAddedToOrderTemplateDialogResources: this._generateItemAddedToOrderTemplateDialogResources(resources),\r\n duplicateItemsWhenAddingToOrderTemplateDialogResources: this._generateDuplicateItemsWhenAddingToOrderTemplateDialogResources(resources),\r\n\r\n addToOrderTemplateButtonText: resources.addToOrderTemplateButtonText,\r\n addToOrderTemplateButtonTooltip: resources.addToOrderTemplateButtonTooltip,\r\n addToOrderTemplateMessage: resources.addToOrderTemplateMessage,\r\n addItemToOrderTemplateError: resources.addItemToOrderTemplateError,\r\n orderTemplates,\r\n customerInformation\r\n })\r\n ) : null;\r\n }\r\n\r\n private _getCheckoutURL(isAuthenticated: boolean, guestCheckoutUrl: string, signInUrl: string): string {\r\n if (isAuthenticated) {\r\n return guestCheckoutUrl;\r\n }\r\n\r\n const arborb2bUrlRegExp = new RegExp('^(?:[a-z]+:)?//', 'i');\r\n const isArborb2bUrl = arborb2bUrlRegExp.test(guestCheckoutUrl);\r\n let returnURL = guestCheckoutUrl;\r\n if (MsDyn365.isBrowser && !isArborb2bUrl) {\r\n returnURL = `${window.location.origin}${guestCheckoutUrl}`;\r\n }\r\n\r\n return `${signInUrl}${!signInUrl.includes('?') ? '?' : '&'}ru=${returnURL}`;\r\n }\r\n\r\n private readonly _getImageSettings = (imageSettings: IImageSettings | undefined): IImageSettings => {\r\n return imageSettings || {\r\n viewports: {\r\n xs: { q: 'w=80&h=94&m=6', w: 0, h: 0 },\r\n sm: { q: 'w=148&h=174&m=6', w: 0, h: 0 },\r\n lg: { q: 'w=148&h=174&m=6', w: 0, h: 0 }\r\n },\r\n lazyload: true\r\n };\r\n };\r\n\r\n private readonly _removeItemFromCartHandler = (cartlineToRemove: CartLine) => {\r\n if (this.props.data.cart.result) {\r\n const input = {\r\n cartLineIds: [cartlineToRemove.LineId!.toString()]\r\n };\r\n this.props.data.cart.result.removeCartLines(input)\r\n .then(() => {\r\n this._validateCart()\r\n .catch((error) => {\r\n this.props.telemetry.warning(error);\r\n this.props.telemetry.debug('Unable to validate Cart');\r\n });\r\n })\r\n .catch((error) => {\r\n this.props.telemetry.warning(error);\r\n this.props.telemetry.debug('Unable to Remove Cart Line');\r\n });\r\n }\r\n };\r\n\r\n private readonly _moveToWishlistSuccessHandler = (result: IWishlistActionSuccessResult, cartline?: CartLine) => {\r\n if (result.status === 'ADDED' && cartline) {\r\n this._removeItemFromCartHandler(cartline);\r\n }\r\n };\r\n\r\n private readonly _updateCartlineQuantity = (cartlineToUpdate: CartLine, quantity: number): boolean => {\r\n isCartLineQuantityUpdatedAsync(\r\n this.isQuantityLimitsFeatureEnabled,\r\n this.props.data.cart.result,\r\n this.props.telemetry,\r\n this.state.products,\r\n cartlineToUpdate,\r\n quantity)\r\n .then((isUpdated: boolean) => {\r\n if (isUpdated) {\r\n this._validateCart().catch((error) => {\r\n this.props.telemetry.warning(error);\r\n this.props.telemetry.debug('Unable to validate Cart');\r\n });\r\n }\r\n return isUpdated;\r\n })\r\n .catch(() => {\r\n return false;\r\n });\r\n\r\n return false;\r\n };\r\n\r\n private readonly _fulfillmentStoreIdUpdated = () => {\r\n if (this.isQuantityLimitsFeatureEnabled) {\r\n getActiveCartProductsAction(new ActiveCartProductsInput(), this.props.context.actionContext)\r\n .then(products => {\r\n this.setState({ products });\r\n })\r\n .then(async () => this._validateCart())\r\n .catch((error: Error) => {\r\n this.props.telemetry.warning(error.message);\r\n this.props.telemetry.debug('Unable to validate Cart');\r\n });\r\n }\r\n };\r\n\r\n private async _validateCart(): Promise {\r\n const {\r\n data: { cart },\r\n telemetry,\r\n context\r\n } = this.props;\r\n\r\n const validationResults: LineDataValidationFailure[] | undefined = await validateCartAsync(this.isQuantityLimitsFeatureEnabled,\r\n cart,\r\n telemetry,\r\n context,\r\n true);\r\n\r\n if (validationResults) {\r\n this.setState({ cartlinesErrors: validationResults });\r\n }\r\n\r\n return AsyncResult.resolve();\r\n }\r\n\r\n private async _getOrderQuantityLimitsFeatureFlag(): Promise {\r\n const defaultOrderQuantityLimitsFeatureConfig = this.props.context?.request?.app?.platform?.enableDefaultOrderQuantityLimits;\r\n if (defaultOrderQuantityLimitsFeatureConfig === 'none') {\r\n return false;\r\n }\r\n\r\n try {\r\n const featureStatuses = await this.props.data.featureState;\r\n const isQuantityLimitsFeatureEnabledInHq = featureStatuses\r\n .find(featureState => featureState.Name === 'Dynamics.AX.Application.RetailDefaultOrderQuantityLimitsFeature')?.IsEnabled || false;\r\n if (!isQuantityLimitsFeatureEnabledInHq) {\r\n return false;\r\n }\r\n } catch (error) {\r\n //@ts-ignore\r\n this.props.telemetry.warning(error);\r\n this.props.telemetry.debug('Unable to get feature states');\r\n return false;\r\n }\r\n\r\n if (defaultOrderQuantityLimitsFeatureConfig === 'all') {\r\n return true;\r\n }\r\n try {\r\n const customerInfo = await this.props.data.customerInformation;\r\n return !!customerInfo &&\r\n ((defaultOrderQuantityLimitsFeatureConfig === 'b2b' && customerInfo.IsB2b) ||\r\n (defaultOrderQuantityLimitsFeatureConfig === 'b2c' && !customerInfo.IsB2b));\r\n } catch (error) {\r\n //@ts-ignore\r\n this.props.telemetry.warning(error);\r\n this.props.telemetry.debug('Unable to get customer info');\r\n return false;\r\n }\r\n }\r\n\r\n private _getCartLinesGroup(): ICartlinesViewProps[][] | null {\r\n const {\r\n data: {\r\n cart: { result: cart },\r\n wishlists: { result: wishlists },\r\n orderTemplates: { result: orderTemplates },\r\n customerInformation: { result: customerInformation }\r\n },\r\n context: {\r\n request: {\r\n channel: {\r\n PickupDeliveryModeCode\r\n } = { PickupDeliveryModeCode: undefined }\r\n }\r\n },\r\n config,\r\n telemetry,\r\n resources,\r\n modules\r\n } = this.props;\r\n\r\n const imageSettings = this._getImageSettings(config.imageSettings);\r\n const cartlinesErrors: LineDataValidationFailure[] = this.state.cartlinesErrors;\r\n let storeSelectorId: string = '';\r\n if (modules && Object.keys(modules).length > 0 && modules.storeSelector && modules.storeSelector.length > 0) {\r\n storeSelectorId = modules.storeSelector[0].id;\r\n }\r\n\r\n return this.props.data.products && this.props.data.products.result && cart && cart.cart.CartLines && cart.cart.CartLines.length > 0 && this.props.data.channelDeliveryOptionConfig?.result ? (\r\n CartLineGroupItems({\r\n cartlines: cart.cart.CartLines,\r\n storeSelectorModuleId: storeSelectorId,\r\n cartlinesErrors,\r\n products: this.props.data.products.result,\r\n productAvailabilites: this.props.data.productAvailabilites.result,\r\n productDeliveryOptions: this.props.data.deliveryOptions.result,\r\n imageSettings,\r\n isStockCheckEnabled: this.props.context.app.config.enableStockCheck || false,\r\n maxCartlineQuantity: this.props.context.app.config.maxQuantityForCartLineItem,\r\n gridSettings: this.props.context.request.gridSettings!,\r\n context: this.props.context,\r\n typeName: this.props.typeName,\r\n id: this.props.id,\r\n resources: {\r\n sizeString: resources.productDimensionTypeSize,\r\n colorString: resources.productDimensionTypeColor,\r\n configString: resources.productDimensionTypeConfiguration,\r\n styleString: resources.productDimensionTypeStyle,\r\n amountString: resources.productDimensionTypeAmount,\r\n quantityDisplayString: resources.quantityDisplayText,\r\n inputQuantityAriaLabel: resources.inputQuantityAriaLabel,\r\n decrementButtonAriaLabel: resources.decrementButtonAriaLabel,\r\n incrementButtonAriaLabel: resources.incrementButtonAriaLabel,\r\n discountStringText: resources.discountStringText,\r\n originalPriceText: resources.originalPriceText,\r\n currentPriceText: resources.currentPriceText,\r\n shippingChargesText: resources.shippingCharges\r\n },\r\n telemetry,\r\n addToWishlistButtonText: resources.addToWishlistButtonText,\r\n removeFromWishlistButtonText: resources.removeFromWishlistButtonText,\r\n removeButtonText: resources.removeCartButtonText,\r\n shipItText: resources.shipInsteadDisplayText,\r\n pickitUpText: resources.pickItUpDisplayText,\r\n changeStoreText: resources.changeStoreDisplayText,\r\n storeSelectorStateManager: this.props.data.storeSelectorStateManager.result,\r\n outOfStockText: resources.outOfStockErrorMessage,\r\n outOfRangeOneText: resources.errorMessageOutOfRangeOneLeft,\r\n outOfRangeFormatText: resources.errorMessageOutOfRangeFormat,\r\n cartState: this.props.data.cart.result,\r\n orgUnitLocations: this.props.data.orgUnitLocations.result,\r\n removeItemClickHandler: this._removeItemFromCartHandler,\r\n moveToWishlistSuccessHandler: this._moveToWishlistSuccessHandler,\r\n updateCartLinesQuantitySuccessHandler: this._updateCartlineQuantity,\r\n locationChangedHandler: this._fulfillmentStoreIdUpdated,\r\n wishlists,\r\n defaultWishlistName: resources.defaultWishlistName,\r\n pickupDeliveryModeCode: PickupDeliveryModeCode,\r\n includeErrors: config.showOutOfStockErrors,\r\n showShippingChargesForLineItems: config.showShippingChargesForLineItems,\r\n telemetryContent: this.telemetryContent,\r\n isQuantityLimitsFeatureEnabled: this.isQuantityLimitsFeatureEnabled,\r\n\r\n addToOrderTemplateDialogResources: this._generateAddToOrderTemplateDialogResources(resources),\r\n createOrderTemplateDialogResources: this._generateOrderTemplateNameDialogResources(resources),\r\n itemAddedToOrderTemplateDialogResources: this._generateItemAddedToOrderTemplateDialogResources(resources),\r\n duplicateItemsWhenAddingToOrderTemplateDialogResources: this._generateDuplicateItemsWhenAddingToOrderTemplateDialogResources(resources),\r\n\r\n addToOrderTemplateButtonText: resources.addToOrderTemplateButtonText,\r\n addToOrderTemplateButtonTooltip: resources.addToOrderTemplateButtonTooltip,\r\n addToOrderTemplateMessage: resources.addToOrderTemplateMessage,\r\n addItemToOrderTemplateError: resources.addItemToOrderTemplateError,\r\n orderTemplates,\r\n customerInformation,\r\n channelDeliveryOptionConfig: this.props.data.channelDeliveryOptionConfig?.result,\r\n shouldIgnoreWarehouse: this.props.context.app.config.warehouseAggregation === 'multiple'\r\n })\r\n ) : null;\r\n }\r\n\r\n}\r\n\r\nexport default Cart;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { CartPromotionLine } from '@msdyn365-commerce/retail-proxy';\r\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { INodeProps, Modal, ModalBody, ModalFooter, ModalHeader } from '@msdyn365-commerce-modules/utilities';\r\nimport React from 'react';\r\n\r\nexport interface ICartLineItemPromotion {\r\n id: string;\r\n showPromotionPopup: boolean;\r\n promotions: CartPromotionLine[] | undefined;\r\n resources: ICartLineItemPromotionResourceString;\r\n onSeeAllClick(event: React.MouseEvent): void;\r\n onCloseButtonClick(): void;\r\n}\r\n\r\nexport interface ICartLineItemViewProps {\r\n promotionMessageWrapper: INodeProps;\r\n promotionMessage: React.ReactNode;\r\n promotionSeeAllLink: React.ReactElement;\r\n promotionDialog: React.ReactNode;\r\n}\r\n\r\nexport interface ICartLineItemPromotionResourceString {\r\n promotionLinkText: string;\r\n promotionStringHeading: string;\r\n promotionPopupHeading: string;\r\n promotionCloseButtonAriaLabel: string;\r\n}\r\n\r\nexport const cartPromotions = (props: ICartLineItemPromotion): ICartLineItemViewProps | undefined => {\r\n\r\n const {\r\n id,\r\n showPromotionPopup,\r\n promotions,\r\n resources: {\r\n promotionLinkText,\r\n promotionPopupHeading\r\n },\r\n onCloseButtonClick,\r\n onSeeAllClick\r\n } = props;\r\n\r\n if (!ArrayExtensions.hasElements(promotions)) {\r\n return;\r\n }\r\n\r\n const titleId = `${id}_title`;\r\n const className = 'msc-cart__promotion';\r\n return {\r\n promotionMessageWrapper: {\r\n className: 'msc-cart__promotion'\r\n },\r\n promotionMessage: (\r\n <>\r\n \r\n \r\n {' '}\r\n {props.resources.promotionStringHeading}\r\n \r\n \r\n ),\r\n promotionSeeAllLink: (\r\n \r\n {' '}\r\n {promotionLinkText}\r\n {' '}\r\n ),\r\n promotionDialog: (\r\n \r\n \r\n
\r\n {promotionPopupHeading}\r\n
\r\n
\r\n \r\n
    \r\n {promotions.map(_promotion => {\r\n return (\r\n
  • \r\n {_promotion.Promotion?.OfferName}\r\n {' '}\r\n
  • \r\n );\r\n }\r\n )}\r\n
\r\n
\r\n \r\n
\r\n )\r\n };\r\n};\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { IInvoiceSummaryLines } from '@msdyn365-commerce-modules/invoice-payment-summary';\r\nimport { IOrderSummaryLines } from '@msdyn365-commerce-modules/order-summary-utilities';\r\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { INodeProps, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { ICartViewProps, IOrderSummaryErrors } from './arborb2b-cart';\r\nimport { ICartlinesViewProps } from './components/arborb2b-cart-line-items';\r\nimport { ICartLineItemViewProps } from './components/arborb2b-cart-line-items-promotion';\r\n\r\nconst _renderCartlines = (cartLines: ICartlinesViewProps[] | undefined, cartEmptyText: string, CartlinesWrapper: INodeProps, storeSelector: React.ReactNode | undefined,\r\n backToShoppingButton: React.ReactNode, waitingComponent: React.ReactNode, cartLoadingStatus: string, cartDataResult: boolean): JSX.Element[] | JSX.Element => {\r\n\r\n if (cartLoadingStatus) {\r\n return (<>\r\n {cartLoadingStatus}\r\n );\r\n }\r\n if (cartLines) {\r\n return cartLines.map((cartLine) => {\r\n return (\r\n
\r\n {cartLine.cartline}\r\n {\r\n storeSelector && cartLine.pickUpInStore ? \r\n {cartLine.pickUpInStore.defaultComponent}\r\n : null\r\n }\r\n {\r\n cartLine.addToOrderTemplate ? (\r\n \r\n {cartLine.remove}\r\n {cartLine.addToWishlist}\r\n {cartLine.addToOrderTemplate}\r\n \r\n ) : (\r\n <>\r\n {cartLine.remove}\r\n {cartLine.addToWishlist}\r\n \r\n )\r\n }\r\n
\r\n );\r\n });\r\n }\r\n return (cartDataResult ? (\r\n
\r\n

\r\n {cartEmptyText}\r\n

\r\n {backToShoppingButton}\r\n
\r\n ) : <>\r\n {waitingComponent}\r\n \r\n );\r\n\r\n};\r\n\r\n\r\n\r\n/**\r\n * Method will render error block.\r\n * @param errorData -The order summary errors interface.\r\n * @returns Jsx element.\r\n */\r\nconst _renderErrorBlock = (errorData: IOrderSummaryErrors | undefined): JSX.Element | null => {\r\n if (!errorData || !ArrayExtensions.hasElements(errorData.errors)) {\r\n return null;\r\n }\r\n return (\r\n \r\n {errorData.header}\r\n {errorData.errors}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Method will render invoice summary lines.\r\n * @param invoiceSummaryLines -The invoicesummary lines interface.\r\n * @param OrderSummaryItems -The order summary items props.\r\n * @param props -The cartview props.\r\n * @returns Jsx element.\r\n */\r\nconst _renderInvoiceSummarylines = (invoiceSummaryLines: IInvoiceSummaryLines | undefined, OrderSummaryItems: INodeProps, props: ICartViewProps):\r\nJSX.Element | null => {\r\n if (!invoiceSummaryLines) {\r\n props.context.telemetry.error('InvoiceSummary content is empty, module wont render');\r\n return null;\r\n }\r\n return (\r\n \r\n {invoiceSummaryLines.invoices}\r\n {invoiceSummaryLines.giftCard}\r\n {invoiceSummaryLines.loyalty}\r\n {invoiceSummaryLines.orderTotal}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Method will render order summary lines.\r\n * @param orderSummaryLines -The ordersummary lines interface.\r\n * @param OrderSummaryItems -The order summary items props.\r\n * @param props -The cartview props.\r\n * @returns Jsx element.\r\n */\r\nconst _renderOrderSummarylines = (orderSummaryLines: IOrderSummaryLines | undefined, OrderSummaryItems: INodeProps, props: ICartViewProps):\r\nJSX.Element | null => {\r\n if (!orderSummaryLines) {\r\n //@ts-ignore\r\n props.context.telemetry.error('OrderSummary content is empty, module wont render');\r\n return null;\r\n }\r\n return (\r\n \r\n {props.promoCode}\r\n {orderSummaryLines.subtotal}\r\n {orderSummaryLines.shipping}\r\n {orderSummaryLines.otherCharge}\r\n {orderSummaryLines.tax}\r\n {orderSummaryLines.totalDiscounts ? orderSummaryLines.totalDiscounts : null}\r\n {orderSummaryLines.orderTotal}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Method will render cart promotions.\r\n * @param promotions -The cartline item view props.\r\n * @returns Jsx element.\r\n */\r\nconst _renderPromotions = (promotions: ICartLineItemViewProps): JSX.Element | undefined => {\r\n return (\r\n <>\r\n \r\n {promotions.promotionMessage}\r\n {promotions.promotionSeeAllLink}\r\n {promotions.promotionDialog}\r\n \r\n\r\n \r\n );\r\n\r\n};\r\n\r\n/**\r\n * Method will render cartlines group title.\r\n * @param cartLine -The cartline view props.\r\n * @param titleSeparate -The title separate.\r\n * @returns Jsx element.\r\n */\r\nconst renderCartLinesGroupTitle = (cartLine: ICartlinesViewProps, titleSeparate: string) => {\r\n const isBopisSelected: boolean | undefined = cartLine.pickUpInStore?.isBopisSelected;\r\n return (\r\n <>\r\n \r\n {isBopisSelected ?

\r\n {cartLine.pickUpInStore?.deliveryOption}\r\n {titleSeparate}\r\n {cartLine.pickUpInStore?.orgUnitName}\r\n

: null}\r\n
\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Method will render cartlines groups header title.\r\n * @param pickUpText -The pickup text for group.\r\n * @param shippingText -The shipping text for group.\r\n * @param emailShippingText -The email shipping text for group.\r\n * @param titleSeparate -The title separator.\r\n * @param cartLine -The cartline view props.\r\n * @param emailDeliveryModeCode -The email delivery code from channel.\r\n * @returns Jsx element.\r\n */\r\nconst renderCartLinesGroupHeader = (pickUpText: string, shippingText: string, emailShippingText: string,\r\n titleSeparate: string, cartLine: ICartlinesViewProps, emailDeliveryModeCode?: string) => {\r\n const isBopisSelected: boolean | undefined = cartLine.pickUpInStore?.isBopisSelected;\r\n let groupTitle: string;\r\n\r\n groupTitle = isBopisSelected ? pickUpText : shippingText;\r\n groupTitle = cartLine.data && cartLine.data.cartline.DeliveryMode === emailDeliveryModeCode ? emailShippingText : groupTitle;\r\n\r\n return (\r\n <>\r\n
\r\n

\r\n

\r\n {groupTitle}\r\n

\r\n {renderCartLinesGroupTitle(cartLine, titleSeparate)}\r\n
\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Method will render cartlines in groups.\r\n * @param props -The cartline.\r\n * @returns Jsx element.\r\n */\r\nconst renderCartLinesGroup = (props: ICartViewProps): JSX.Element | undefined => {\r\n if (props.cartLinesGroup && ArrayExtensions.hasElements(props.cartLinesGroup)) {\r\n return (\r\n
\r\n { props.cartLinesGroup.map(cartlines => {\r\n return (
\r\n {renderCartLinesGroupHeader(props.resources.pickUpText, props.resources.shippingText,\r\n props.resources.emailshippingText, props.resources.titleSeparate, cartlines[0],\r\n props.context.actionContext.requestContext.channel?.EmailDeliveryModeCode)}\r\n {_renderCartlines(cartlines, props.resources.emptyCartText, props.CartlinesWrapper, props.storeSelector,\r\n props.backToShoppingButton, props.waitingComponent, props.cartLoadingStatus, props.cartDataResult)}\r\n
);\r\n })}\r\n
\r\n );\r\n }\r\n return (props.cartDataResult ? (\r\n
\r\n
\r\n

\r\n {props.resources.emptyCartText}\r\n

\r\n {props.backToShoppingButton}\r\n
\r\n
\r\n ) : <>\r\n {props.waitingComponent}\r\n \r\n );\r\n\r\n};\r\n\r\nconst CartView: React.FC = (props: ICartViewProps) => (\r\n
\r\n {props.title}\r\n {!props.cart?.hasInvoiceLine && props.promotionOptions && _renderPromotions(props.promotionOptions)}\r\n {props.multiplePickUpEnabled ? renderCartLinesGroup(props) : \r\n {_renderCartlines(props.cartlines, props.resources.emptyCartText, props.CartlinesWrapper, props.storeSelector,\r\n props.backToShoppingButton, props.waitingComponent, props.cartLoadingStatus, props.cartDataResult)}\r\n }\r\n {props.orderSummaryHeading &&\r\n \r\n {props.orderSummaryHeading}\r\n {props.cart?.hasInvoiceLine ? _renderInvoiceSummarylines(props.invoiceSummaryLineitems, props.OrderSummaryItems, props) : _renderOrderSummarylines(props.orderSummaryLineitems, props.OrderSummaryItems, props)}\r\n {_renderErrorBlock(props.OrderSummaryErrors)}\r\n {props.checkoutAsSignInUserButton}\r\n {props.checkoutAsGuestButton}\r\n {props.backToShoppingButton}\r\n {props.createTemplateFromCartButton}\r\n }\r\n {props.storeSelector}\r\n
\r\n);\r\n\r\nexport default CartView;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport * as React from 'react';\r\n\r\ninterface IAlertProps {\r\n message: string;\r\n}\r\n\r\nconst CheckoutAlert: React.FC = ({ message }) => (\r\n

\r\n {message}\r\n

\r\n);\r\n\r\nexport default CheckoutAlert;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { IInvoiceSummaryLines, InvoiceSummary } from '@msdyn365-commerce-modules/invoice-payment-summary';\r\nimport get from 'lodash/get';\r\nimport * as React from 'react';\r\n\r\nimport { ILliCheckoutData } from '../lli-checkout.data';\r\nimport { ILliCheckoutProps } from '../lli-checkout.props.autogenerated';\r\n\r\nexport interface IInvoicePaymentSummary {\r\n heading?: React.ReactNode;\r\n lines?: IInvoiceSummaryLines;\r\n}\r\nexport const getInvoicePaymentSummary = (input: ILliCheckoutProps): IInvoicePaymentSummary => {\r\n const {\r\n data: { checkout },\r\n resources: {\r\n totalAmountLabel,\r\n invoiceLabel,\r\n invoiceSummaryTitle\r\n },\r\n context,\r\n typeName,\r\n id,\r\n telemetry\r\n } = input;\r\n\r\n const checkoutCart = get(checkout, 'result.checkoutCart');\r\n const cart = get(checkout, 'result.checkoutCart.cart');\r\n\r\n return {\r\n heading:

\r\n { invoiceSummaryTitle }\r\n

,\r\n lines: checkoutCart?.hasInvoiceLine ? InvoiceSummary({\r\n orderTotalLabel: totalAmountLabel,\r\n invoiceLabel,\r\n cart,\r\n context,\r\n typeName,\r\n telemetry,\r\n id,\r\n checkoutState: checkout.result\r\n }) : undefined\r\n };\r\n\r\n};\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { CartLineItemComponent } from '@msdyn365-commerce/components';\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport { CartLine, OrgUnitLocation, SimpleProduct } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\r\nimport { getProductUrlSync, StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { Button, getPayloadObject, getTelemetryAttributes, INodeProps, ITelemetryContent, TelemetryConstant } from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport get from 'lodash/get';\r\nimport groupBy from 'lodash/groupBy';\r\nimport * as React from 'react';\r\n\r\nimport { ILliCheckoutData } from '../lli-checkout.data';\r\nimport { ILliCheckoutProps } from '../lli-checkout.props.autogenerated';\r\n\r\ntype deliveryType = 'pickup' | 'ship' | 'email';\r\n\r\nexport interface IPickUpAtStore {\r\n PickUpAtStore: INodeProps;\r\n label: React.ReactNode;\r\n location: React.ReactNode;\r\n}\r\n\r\nexport interface IEmailDelivery {\r\n EmailDelivery: INodeProps;\r\n label: React.ReactNode;\r\n}\r\n\r\nexport interface ILineItem {\r\n LineId: string;\r\n LineItem: INodeProps;\r\n item?: React.ReactNode;\r\n pickUpAtStore?: IPickUpAtStore;\r\n emailDelivery?: IEmailDelivery;\r\n}\r\n\r\nexport interface ILineItemDeliveryGroup {\r\n LineItemDeliveryGroup: INodeProps;\r\n LineItemList: INodeProps;\r\n heading: React.ReactNode;\r\n lineItemWraper?: React.ReactNode;\r\n lineItemWraperIcon?: React.ReactNode;\r\n lineItems: ILineItem[];\r\n}\r\n\r\nexport interface ILineItems {\r\n LineItems: INodeProps;\r\n Header: INodeProps;\r\n heading: React.ReactNode;\r\n editLink: React.ReactNode;\r\n itemsForPickup?: ILineItemDeliveryGroup;\r\n itemsForShip?: ILineItemDeliveryGroup;\r\n itemsForEmail?: ILineItemDeliveryGroup;\r\n itemsGroupWithMulitplePickupMode?: ILineItemDeliveryGroup[];\r\n}\r\n\r\nexport const getLineItems = (input: ILliCheckoutProps, telemetryContent?: ITelemetryContent): ILineItems | undefined => {\r\n const pickupDeliveryModeCode = get(input, 'context.request.channel.PickupDeliveryModeCode');\r\n const emailDeliveryModeCode = get(input, 'context.request.channel.EmailDeliveryModeCode');\r\n const multiplePickupStoreSwitchName = 'Dynamics.AX.Application.RetailMultiplePickupDeliveryModeFeature';\r\n const { channelDeliveryOptionConfig, featureState } = input.data;\r\n const retailMultiplePickUpOptionEnabled = featureState?.result?.find(feature => feature.Name === multiplePickupStoreSwitchName)?.IsEnabled;\r\n\r\n const _getDeliveryLocation = (cartLine: CartLine): string => {\r\n const orgUnitLocations = get(input, 'data.orgUnitLocations.result');\r\n if (!cartLine.FulfillmentStoreId || !orgUnitLocations) {\r\n return '';\r\n }\r\n\r\n const locationMatch = (orgUnitLocations || []).find((location: OrgUnitLocation): boolean => {\r\n return location.OrgUnitNumber === cartLine.FulfillmentStoreId;\r\n });\r\n\r\n return locationMatch && locationMatch.OrgUnitName;\r\n };\r\n\r\n const _getProduct = (productId: number): SimpleProduct | undefined => {\r\n const products = get(input, 'data.products.result') || [];\r\n return products.find((_product: SimpleProduct) => {\r\n return productId === _product.RecordId;\r\n });\r\n };\r\n\r\n const _getLineItemComponent = (cartLine: CartLine): JSX.Element | undefined => {\r\n const product = cartLine.ProductId && _getProduct(cartLine.ProductId);\r\n const {\r\n id,\r\n typeName,\r\n context,\r\n config: { imageSettings, showShippingChargesForLineItems },\r\n resources: {\r\n quantityDisplayString,\r\n productDimensionTypeColor,\r\n productDimensionTypeSize,\r\n productDimensionTypeStyle,\r\n productDimensionTypeAmount,\r\n configString,\r\n inputQuantityAriaLabel,\r\n discountStringText,\r\n shippingCharges\r\n },\r\n context: {\r\n request: { gridSettings }\r\n }\r\n } = input;\r\n\r\n if (!product) {\r\n return;\r\n }\r\n\r\n return (\r\n \r\n );\r\n };\r\n\r\n const _getPickUpAtStoreComponents = (pickupDeliveryLocation: string): IPickUpAtStore => {\r\n const {\r\n resources: { pickUpAtStoreWithLocationText }\r\n } = input;\r\n\r\n return {\r\n PickUpAtStore: { className: 'ms-checkout__pick-up-at-store' },\r\n label: \r\n {pickUpAtStoreWithLocationText}\r\n ,\r\n location:
\r\n {pickupDeliveryLocation}\r\n
\r\n };\r\n };\r\n\r\n const _getEmailDeliveryComponents = (): IEmailDelivery => {\r\n const {\r\n resources: { emailDeliveryText }\r\n } = input;\r\n\r\n return {\r\n EmailDelivery: { className: 'ms-checkout__email-delivery' },\r\n label: \r\n {emailDeliveryText}\r\n \r\n };\r\n };\r\n\r\n const _getLineItemsComponents = (items: CartLine[]): ILineItem[] => {\r\n return items.map(cartLine => {\r\n const pickupDeliveryLocation = _getDeliveryLocation(cartLine);\r\n const isPickUp = _getCartPickDeliveryMode(cartLine);\r\n const isEmailDelivery = (cartLine.DeliveryMode && cartLine.DeliveryMode !== '') ? cartLine.DeliveryMode === emailDeliveryModeCode : false;\r\n return {\r\n LineId: cartLine.LineId || '',\r\n LineItem: { className: 'ms-checkout__line-item' },\r\n item: _getLineItemComponent(cartLine),\r\n pickUpAtStore: isPickUp ? _getPickUpAtStoreComponents(pickupDeliveryLocation) : undefined,\r\n emailDelivery: isEmailDelivery ? _getEmailDeliveryComponents() : undefined\r\n };\r\n });\r\n };\r\n\r\n const _getCartPickDeliveryMode = (cartLineItem: CartLine): boolean => {\r\n return (!StringExtensions.isNullOrWhitespace(cartLineItem.DeliveryMode)) ? (retailMultiplePickUpOptionEnabled ? cartLineItem.DeliveryMode === channelDeliveryOptionConfig?.result?.PickupDeliveryModeCodes?.find(deliveryMode => deliveryMode === cartLineItem.DeliveryMode) : (cartLineItem.DeliveryMode === pickupDeliveryModeCode)) : false;\r\n };\r\n\r\n const _getCartShipDeliveryMode = (cartLineItem: CartLine): boolean => {\r\n return (!StringExtensions.isNullOrWhitespace(cartLineItem.DeliveryMode)) ? (retailMultiplePickUpOptionEnabled ? cartLineItem.DeliveryMode !== channelDeliveryOptionConfig?.result?.PickupDeliveryModeCodes?.find(deliveryMode => deliveryMode === cartLineItem.DeliveryMode) : (cartLineItem.DeliveryMode !== pickupDeliveryModeCode)) : false;\r\n };\r\n\r\n const _getGroupTitleComponent = (count: number, type: deliveryType): string => {\r\n const {\r\n resources: {\r\n itemLabel,\r\n itemsLabel,\r\n inStorePickUpLabel,\r\n shippingCountCheckoutLineItem\r\n }\r\n } = input;\r\n\r\n let emailDeliveryModeDesc: string = '';\r\n\r\n input.data.deliveryOptions.result?.find(productDeliveryOptions => {\r\n emailDeliveryModeDesc = emailDeliveryModeDesc ? emailDeliveryModeDesc : productDeliveryOptions.DeliveryOptions?.find(deliveryOption => deliveryOption.Code === emailDeliveryModeCode)?.Description!;\r\n });\r\n\r\n const suffix = count > 1 ? itemsLabel : itemLabel;\r\n const title = type === 'ship' ? shippingCountCheckoutLineItem : (type === 'pickup' ? inStorePickUpLabel : `${emailDeliveryModeDesc} (${count} ${suffix})`);\r\n return title.replace('{count}', count.toString()).replace('{suffix}', suffix);\r\n };\r\n\r\n const _countItems = (items: CartLine[]): number => {\r\n return items.reduce((count, item) => {\r\n return count + (item.Quantity || 0);\r\n\r\n }, 0);\r\n };\r\n\r\n const _filterItemsByDiliveryType = (type: deliveryType): CartLine[] => {\r\n const cart = get(input, 'data.checkout.result.checkoutCart.cart');\r\n if (type === 'ship') {\r\n return cart.CartLines.filter((\r\n cartLine: CartLine) => ((cartLine.DeliveryMode && cartLine.DeliveryMode !== '') ? (_getCartShipDeliveryMode(cartLine) && cartLine.DeliveryMode !== emailDeliveryModeCode) : cartLine)\r\n );\r\n } else if (type === 'pickup') {\r\n return cart.CartLines.filter((cartLine: CartLine) => ((cartLine.DeliveryMode && cartLine.DeliveryMode !== '') ? (_getCartPickDeliveryMode(cartLine)) : null)\r\n );\r\n }\r\n return cart.CartLines.filter((cartLine: CartLine) => cartLine.DeliveryMode === emailDeliveryModeCode);\r\n\r\n };\r\n\r\n const _getLineItemsByDeliveryType = (type: deliveryType): ILineItemDeliveryGroup | undefined => {\r\n if ((pickupDeliveryModeCode === '' || pickupDeliveryModeCode === undefined) && (type === 'pickup' || type === 'email')) {\r\n return;\r\n }\r\n\r\n const items = _filterItemsByDiliveryType(type);\r\n\r\n if (items.length === 0) {\r\n return undefined;\r\n }\r\n\r\n const count = _countItems(items);\r\n const title = _getGroupTitleComponent(count, type);\r\n\r\n return {\r\n LineItemDeliveryGroup: { className: classnames('ms-checkout__line-items-delivery-group', type) },\r\n LineItemList: { className: 'ms-checkout__line-items-list' },\r\n heading:
\r\n {title}\r\n
,\r\n lineItems: _getLineItemsComponents(items)\r\n };\r\n };\r\n\r\n const _getLineItems = (): ILineItems | undefined => {\r\n const {\r\n context,\r\n config: { lineItemsHeading },\r\n data: { products },\r\n resources: { editCartText }\r\n } = input;\r\n\r\n const payLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.EditCart);\r\n const attribute = getTelemetryAttributes(telemetryContent!, payLoad);\r\n const cart = get(input, 'data.checkout.result.checkoutCart.cart');\r\n const groupClass = retailMultiplePickUpOptionEnabled ? ' multiple-pickup-enabled' : '';\r\n if (!cart || !cart.CartLines || cart.CartLines.length === 0 || !products) {\r\n return undefined;\r\n }\r\n\r\n return {\r\n LineItems: { className: `ms-checkout__line-items${groupClass}` },\r\n Header: { className: 'ms-checkout__line-items-header' },\r\n heading: lineItemsHeading && lineItemsHeading.text && (\r\n \r\n ),\r\n editLink: (\r\n \r\n {editCartText}\r\n \r\n ),\r\n itemsForPickup: _getLineItemsByDeliveryType('pickup'),\r\n itemsForShip: _getLineItemsByDeliveryType('ship'),\r\n itemsForEmail: _getLineItemsByDeliveryType('email'),\r\n itemsGroupWithMulitplePickupMode: retailMultiplePickUpOptionEnabled ? _getLineItemsByDeliveryTypeWithMulitplePickupMode() : undefined\r\n };\r\n };\r\n\r\n const handleLineItemHeadingChange = (event: Msdyn365.ContentEditableEvent) => {\r\n const {\r\n config: { lineItemsHeading }\r\n } = input;\r\n lineItemsHeading!.text = event.target.value;\r\n };\r\n\r\n const _getGroupTitleComponentWithMultiplePickUp = (count: number, type: deliveryType, deliveryMode?: string, fulFillmentStoreId?: string): string => {\r\n const {\r\n resources: {\r\n itemLabel,\r\n itemsLabel\r\n }\r\n } = input;\r\n\r\n let emailDeliveryModeDesc: string = '';\r\n let pickupDeliveryModeDesc: string = '';\r\n\r\n input.data.deliveryOptions.result?.find(productDeliveryOptions => {\r\n emailDeliveryModeDesc = emailDeliveryModeDesc ? emailDeliveryModeDesc : productDeliveryOptions.DeliveryOptions?.find(deliveryOption => deliveryOption.Code === emailDeliveryModeCode)?.Description!;\r\n });\r\n\r\n input.data.deliveryOptions.result?.find(productDeliveryOptions => {\r\n pickupDeliveryModeDesc = pickupDeliveryModeDesc ? pickupDeliveryModeDesc : productDeliveryOptions.DeliveryOptions?.find(deliveryOption => deliveryOption.Code === deliveryMode)?.Description!;\r\n });\r\n\r\n const pickupTitle: string = `${pickupDeliveryModeDesc}, ${fulFillmentStoreId}`;\r\n const suffix = count > 1 ? itemsLabel : itemLabel;\r\n const title = type === 'ship' ? `(${count} ${suffix})` : (type === 'pickup' ? `${pickupTitle} (${count} ${suffix})` : `${emailDeliveryModeDesc} (${count} ${suffix})`);\r\n return title.replace('{count}', count.toString()).replace('{suffix}', suffix);\r\n };\r\n\r\n const _filterItemsByMultiplePickupMode = (): CartLine[][] => {\r\n const cart = get(input, 'data.checkout.result.checkoutCart.cart');\r\n const getGroupByStorePickup = (items: CartLine[]) => groupBy(items, item => item.FulfillmentStoreId);\r\n const getGroupByDelivery = (items: CartLine[]) => groupBy(items, item => (item.DeliveryMode));\r\n const groupDelivery = getGroupByDelivery(cart.CartLines);\r\n const cartLinesGroup: CartLine[] = [];\r\n const cartLinesGrp: CartLine[][] = [];\r\n\r\n // 1) Group by store and pick up mode\r\n Object.entries(groupDelivery).forEach(([deliveryMode, groupByDeliveryType]) => {\r\n // @ts-expect-error\r\n groupDelivery[deliveryMode] = getGroupByStorePickup(groupByDeliveryType);\r\n cartLinesGroup.push(getGroupByStorePickup(groupByDeliveryType));\r\n });\r\n\r\n Object.keys(cartLinesGroup).forEach(key => {\r\n const cartLines = cartLinesGroup[key];\r\n Object.keys(cartLines).forEach(index => {\r\n const cartLine = cartLines[index];\r\n cartLinesGrp.push(cartLine);\r\n });\r\n });\r\n\r\n return cartLinesGrp;\r\n };\r\n\r\n const _getLineItemsByDeliveryTypeWithMulitplePickupMode = (): ILineItemDeliveryGroup[] | undefined => {\r\n if (pickupDeliveryModeCode === '' || pickupDeliveryModeCode === undefined) {\r\n return;\r\n }\r\n\r\n const {\r\n resources: {\r\n multiplePickUpLabel,\r\n shippingLable\r\n }\r\n } = input;\r\n\r\n const items = _filterItemsByMultiplePickupMode();\r\n\r\n if (items.length === 0) {\r\n return undefined;\r\n }\r\n\r\n const lineItemDeliveryGroup: ILineItemDeliveryGroup[] = [];\r\n items.map(item => {\r\n const count = _countItems(item);\r\n const cartLine = item[0];\r\n const pickupDeliveryLocation = _getDeliveryLocation(cartLine);\r\n const type: deliveryType = cartLine.FulfillmentStoreId && cartLine.DeliveryMode ? 'pickup' : (cartLine.FulfillmentStoreId === '' && cartLine.DeliveryMode === emailDeliveryModeCode ? 'email' : 'ship');\r\n const title = _getGroupTitleComponentWithMultiplePickUp(count, type, cartLine.DeliveryMode, pickupDeliveryLocation);\r\n const groupTitle = type === 'pickup' ? multiplePickUpLabel : (type === 'ship' ? shippingLable : 'email');\r\n const iconClass = `ms-checkout__line-items-group-title-multiple-pickup-${type}icon`;\r\n lineItemDeliveryGroup.push({\r\n LineItemDeliveryGroup: { className: classnames('ms-checkout__line-items-delivery-group multiple-pickup', type) },\r\n LineItemList: { className: 'ms-checkout__line-items-list' },\r\n lineItemWraperIcon:
,\r\n lineItemWraper:
\r\n {groupTitle}\r\n
,\r\n heading:
\r\n {title}\r\n
,\r\n lineItems: _getLineItemsComponents(item)\r\n });\r\n });\r\n\r\n return lineItemDeliveryGroup;\r\n };\r\n\r\n return _getLineItems();\r\n};\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport { IOrderSummaryLines, OrderSummary } from '@msdyn365-commerce-modules/order-summary-utilities';\r\nimport { INodeProps } from '@msdyn365-commerce-modules/utilities';\r\nimport get from 'lodash/get';\r\nimport * as React from 'react';\r\n\r\nimport { ILliCheckoutData } from '../lli-checkout.data';\r\nimport { ILliCheckoutProps } from '../lli-checkout.props.autogenerated';\r\n\r\nexport interface IOrderSummary {\r\n orderSummaryProps: INodeProps;\r\n heading?: React.ReactNode;\r\n lines?: IOrderSummaryLines;\r\n}\r\nexport const getOrderSummary = (input: ILliCheckoutProps): IOrderSummary => {\r\n const {\r\n config: { orderSummaryHeading },\r\n data: { checkout },\r\n resources: {\r\n subTotalLabel,\r\n shippingLabel,\r\n taxLabel,\r\n orderTotalLabel,\r\n loyaltyLabel,\r\n giftcardLabel,\r\n totalDiscountsLabel,\r\n freeText,\r\n toBeCalculatedText,\r\n otherCharges\r\n },\r\n context,\r\n typeName,\r\n id,\r\n telemetry\r\n } = input;\r\n\r\n const checkoutState = get(checkout, 'result');\r\n const cart = get(checkout, 'result.checkoutCart.cart');\r\n const showLineItems = cart.CartLines && cart.CartLines.length > 0;\r\n const channelConfiguration = context.request.channel!;\r\n const multiplePickupStoreSwitchName = 'Dynamics.AX.Application.RetailMultiplePickupDeliveryModeFeature';\r\n const { channelDeliveryOptionConfig, featureState } = input.data;\r\n const retailMultiplePickUpOptionEnabled = featureState?.result?.find(feature => feature.Name === multiplePickupStoreSwitchName)?.IsEnabled;\r\n\r\n const handleOrderSummaryHeadingChange = (event: Msdyn365.ContentEditableEvent) => {\r\n const {\r\n config: { orderSummaryHeading }\r\n } = input;\r\n orderSummaryHeading!.text = event.target.value;\r\n };\r\n\r\n return {\r\n orderSummaryProps: { className: 'ms-checkout-guest-profile__selected-item' },\r\n heading: orderSummaryHeading && orderSummaryHeading.text && (\r\n \r\n ),\r\n lines: showLineItems ? OrderSummary({\r\n checkoutState,\r\n cart,\r\n subTotalLabel,\r\n shippingLabel,\r\n taxLabel,\r\n orderTotalLabel,\r\n loyaltyLabel,\r\n giftcardLabel,\r\n totalDiscountsLabel,\r\n freeText,\r\n toBeCalculatedText,\r\n context,\r\n typeName,\r\n id,\r\n channelConfiguration,\r\n telemetry,\r\n otherChargeLabel: otherCharges,\r\n retailMultiplePickUpOptionEnabled,\r\n channelDeliveryOptionConfig: channelDeliveryOptionConfig?.result\r\n }) : undefined\r\n };\r\n\r\n};\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { Heading as HeadingType } from '@msdyn365-commerce-modules/data-types';\r\nimport { Button, getPayloadObject, getTelemetryAttributes, IPayLoad, ITelemetryContent, TelemetryConstant } from '@msdyn365-commerce-modules/utilities';\r\nimport classname from 'classnames';\r\nimport * as React from 'react';\r\nimport ReactDOM from 'react-dom';\r\n\r\nexport interface ICheckoutGuidedCardProps {\r\n step: number;\r\n title?: HeadingType;\r\n disabled?: boolean; // Module is not available\r\n isActive?: boolean; // Step === currentStep\r\n isVisted?: boolean; // Step < currentStep\r\n isExpanded?: boolean;\r\n isReady?: boolean;\r\n isPending?: boolean;\r\n isUpdating?: boolean;\r\n isSubmitting?: boolean;\r\n isCancelAllowed?: boolean;\r\n isMobile?: boolean;\r\n hasInitialized?: boolean;\r\n hasControlGroup?: boolean;\r\n children: React.ReactNode;\r\n resource: {\r\n checkoutStepTitleFormat: string;\r\n saveBtnLabel: string;\r\n changeBtnLabel: string;\r\n cancelBtnLabel: string;\r\n saveAndContinueBtnLabel: string;\r\n };\r\n telemetryContent?: ITelemetryContent;\r\n onEdit?(): void;\r\n onCancel?(): void;\r\n onSubmit?(): void;\r\n onNext(): void;\r\n}\r\n\r\n/**\r\n *\r\n * CheckoutGuidedCard component.\r\n * @extends {React.Component}\r\n */\r\nclass CheckoutGuidedCard extends React.PureComponent {\r\n private readonly editButtonRef: React.RefObject = React.createRef();\r\n\r\n private readonly formCardRef: React.RefObject = React.createRef();\r\n\r\n private readonly payLoad: IPayLoad;\r\n\r\n constructor(props: ICheckoutGuidedCardProps) {\r\n super(props);\r\n this.payLoad = getPayloadObject('click', props.telemetryContent!, '');\r\n }\r\n\r\n public componentDidUpdate(prevProps: ICheckoutGuidedCardProps): void {\r\n /**\r\n * Move to next step when current step is ready.\r\n */\r\n const { isActive, isReady, onNext, isVisted, onEdit } = this.props;\r\n\r\n // Move to next step after completing the current step\r\n if (isActive && isReady) {\r\n onNext();\r\n }\r\n\r\n // Set the focus to Edit button once edit button appear\r\n // (It happens when current step switch to isReady status)\r\n const prevCanEdit = prevProps.isReady && prevProps.isVisted && !!prevProps.onEdit;\r\n const canEdit = isReady && isVisted && !!onEdit;\r\n if (!prevCanEdit && canEdit) {\r\n this.focusOnEditButton();\r\n this.scrollToTitle();\r\n }\r\n\r\n // Set the focus to the first focusable element\r\n // (It happens when current step switch to isUpdating status)\r\n if (prevProps.isReady && !isReady) {\r\n this.focusOnFirstFocusableElement();\r\n }\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n const {\r\n title,\r\n disabled,\r\n isExpanded,\r\n isActive,\r\n isVisted,\r\n children,\r\n isReady,\r\n isPending,\r\n isUpdating,\r\n hasInitialized,\r\n hasControlGroup,\r\n onEdit,\r\n resource\r\n } = this.props;\r\n const { changeBtnLabel } = resource;\r\n\r\n this.payLoad.contentAction.etext = TelemetryConstant.CheckoutChange;\r\n const changeBtnAttributes = getTelemetryAttributes(this.props.telemetryContent!, this.payLoad);\r\n const canEdit = hasControlGroup && isReady && isVisted && onEdit;\r\n\r\n return (\r\n \r\n
\r\n {this.getTitle()}\r\n\r\n {canEdit && (\r\n \r\n {changeBtnLabel}\r\n \r\n )}\r\n
\r\n\r\n \r\n
\r\n {children}\r\n
\r\n\r\n {this.renderFooder()}\r\n
\r\n \r\n );\r\n }\r\n\r\n private readonly renderFooder = (): JSX.Element | null => {\r\n const { isVisted, isReady, isSubmitting, isCancelAllowed, hasControlGroup, onCancel, onSubmit, resource } = this.props;\r\n const { saveBtnLabel, cancelBtnLabel, saveAndContinueBtnLabel } = resource;\r\n\r\n const canSubmit = !isReady && onSubmit;\r\n const canCancel = !isReady && isVisted && isCancelAllowed && onCancel;\r\n\r\n if (!hasControlGroup || (!canSubmit && !canCancel)) {\r\n return null;\r\n }\r\n\r\n this.payLoad.contentAction.etext = isVisted ? TelemetryConstant.Save : TelemetryConstant.SaveContinue;\r\n const saveBtnAttributes = getTelemetryAttributes(this.props.telemetryContent!, this.payLoad);\r\n this.payLoad.contentAction.etext = TelemetryConstant.Cancel;\r\n const cancelBtnAttributes = getTelemetryAttributes(this.props.telemetryContent!, this.payLoad);\r\n\r\n return (\r\n
\r\n {canSubmit && (\r\n \r\n {isVisted && isCancelAllowed ? saveBtnLabel : saveAndContinueBtnLabel}\r\n \r\n )}\r\n {canCancel && (\r\n \r\n {cancelBtnLabel}\r\n \r\n )}\r\n
\r\n );\r\n };\r\n\r\n private readonly focusOnFirstFocusableElement = (): void => {\r\n const node = ReactDOM.findDOMNode(this) as HTMLElement;\r\n const focussableElements = `\r\n a:not([disabled]),\r\n button:not([disabled]),\r\n input[type=submit]:not([disabled]),\r\n input[type=checkbox]:not([disabled]),\r\n input[type=text]:not([disabled]),\r\n input[type=radio]:not([disabled]),\r\n input[type=password]:not([disabled]),\r\n select:not([disabled]),\r\n textarea:not([disabled]),\r\n [tabindex]:not([disabled]):not([tabindex=\"-1\"])\r\n `;\r\n\r\n const child = node && node.querySelector && (node.querySelector(focussableElements) as HTMLElement);\r\n child && child.focus && child.focus();\r\n };\r\n\r\n private readonly focusOnEditButton = (): void => {\r\n // Focus on edit button\r\n const editButton =\r\n this.editButtonRef &&\r\n this.editButtonRef.current &&\r\n this.editButtonRef.current.focus &&\r\n (this.editButtonRef.current as HTMLElement);\r\n editButton && editButton.focus();\r\n };\r\n\r\n private readonly scrollToTitle = (): void => {\r\n // Scroll window to the title of the step that was just completed only in mobile viewport\r\n const formCard = this.props.isMobile && this.formCardRef && this.formCardRef.current && (this.formCardRef.current as HTMLElement);\r\n formCard && formCard.scrollIntoView();\r\n };\r\n\r\n private readonly getTitle = (): JSX.Element => {\r\n const { step, title } = this.props;\r\n const { headingTag: Tag = 'h2', text = '' } = title || {};\r\n return (\r\n \r\n \r\n {step + 1}\r\n .\r\n {' '}\r\n \r\n {text && \r\n {text}\r\n }\r\n \r\n );\r\n };\r\n}\r\n\r\nexport default CheckoutGuidedCard;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { IModuleStateManager } from '@msdyn365-commerce-modules/checkout-utilities';\r\nimport { Heading } from '@msdyn365-commerce-modules/data-types';\r\nimport { ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\r\nimport get from 'lodash/get';\r\nimport { observer } from 'mobx-react';\r\nimport * as React from 'react';\r\n\r\nimport GuidedCard from './guided-card';\r\n\r\nexport interface ICheckoutGuidedFormProps {\r\n items: React.ReactNode[];\r\n moduleState: IModuleStateManager;\r\n disableGuidedCheckoutFlow?: boolean;\r\n isMobile?: boolean;\r\n isEditor?: boolean;\r\n resource: {\r\n checkoutStepTitleFormat: string;\r\n saveBtnLabel: string;\r\n changeBtnLabel: string;\r\n cancelBtnLabel: string;\r\n saveAndContinueBtnLabel: string;\r\n };\r\n telemetryContent?: ITelemetryContent;\r\n}\r\n\r\ninterface ICheckoutGuidedFormState {\r\n currentStep: number;\r\n}\r\n\r\n/**\r\n *\r\n * CheckoutGuidedForm component.\r\n * @extends {React.Component}\r\n */\r\n@observer\r\nclass CheckoutGuidedForm extends React.PureComponent {\r\n public state: ICheckoutGuidedFormState = {\r\n currentStep: 0\r\n };\r\n\r\n public componentDidMount(): void {\r\n /**\r\n * Append child modules.\r\n */\r\n const childIds = this.props.items.map((item: React.ReactNode) => get(item, 'props.id'));\r\n this.props.moduleState.init({ childIds });\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n const { moduleState, items, resource } = this.props;\r\n if (!items || !moduleState) {\r\n return null;\r\n }\r\n\r\n return (\r\n
\r\n {items.map((item: React.ReactNode) => {\r\n const childId = this.getId(item);\r\n const step = this.getStep(childId);\r\n const title = this.getHeading(item);\r\n const state = this.props.moduleState.getModule(childId);\r\n const { isReady, isPending, isUpdating, isDisabled, isCancelAllowed, onEdit, onCancel, onSubmit, hasModuleState, hasInitialized } =\r\n state || ({} as IModuleStateManager);\r\n return (\r\n\r\n \r\n {React.cloneElement(item as React.ReactElement, { enableControl: true })}\r\n \r\n );\r\n })}\r\n
\r\n );\r\n }\r\n\r\n private readonly getEnabledModules = (): string[] => {\r\n const {\r\n moduleState: { childIds, getModule }\r\n } = this.props;\r\n return childIds.filter((childId: string) => {\r\n const state = getModule(childId);\r\n return !!state && !state.isDisabled;\r\n });\r\n };\r\n\r\n private readonly getStep = (id: string): number => {\r\n return this.getEnabledModules().indexOf(id);\r\n };\r\n\r\n private readonly getId = (item: React.ReactNode): string => {\r\n return get(item, 'props.id') || '';\r\n };\r\n\r\n private readonly getHeading = (item: React.ReactNode): Heading => {\r\n return get(item, 'props.config.heading') || '';\r\n };\r\n\r\n private readonly isExpanded = (step: number): boolean => {\r\n if (this.props.isEditor) {\r\n // Editorial mode: Expand all the drawers\r\n return true;\r\n }\r\n return step > -1 && step <= this.state.currentStep;\r\n };\r\n\r\n private readonly isActive = (step: number): boolean => {\r\n return step === this.state.currentStep;\r\n };\r\n\r\n private readonly isVisted = (step: number): boolean => {\r\n return step > -1 && step < this.state.currentStep;\r\n };\r\n\r\n private readonly onNext = (): void => {\r\n this.setState({\r\n currentStep: this.state.currentStep + 1\r\n });\r\n };\r\n}\r\n\r\nexport default CheckoutGuidedForm;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { TelemetryEvent } from '@msdyn365-commerce/core';\r\nimport { Button, getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport React, { useState } from 'react';\r\n\r\ninterface ICheckoutPlaceOrderButtonProps {\r\n canPlaceOrder: boolean;\r\n checkoutBtnText: string;\r\n telemetryContent?: ITelemetryContent;\r\n shouldEnableSinglePaymentAuthorizationCheckout?: boolean;\r\n isPlaceOrderLoading?: boolean;\r\n placeOrder(): Promise;\r\n}\r\n\r\nconst buttonsStates: React.Dispatch>[] = [];\r\n\r\n/**\r\n * On place order function.\r\n * @param isBusy -Check is busy.\r\n * @param canPlaceOrder -Check can place order.\r\n * @param placeOrder -Place order function.\r\n * @returns Set state of button.\r\n */\r\nconst onPlaceOrderHandler = (isBusy: boolean, canPlaceOrder: boolean, placeOrder: () => Promise) => async () => {\r\n if (isBusy || !canPlaceOrder) {\r\n return;\r\n }\r\n buttonsStates.map(buttonSetState => {\r\n buttonSetState(true);\r\n return true;\r\n });\r\n await placeOrder();\r\n buttonsStates.map(buttonSetState => {\r\n buttonSetState(false);\r\n return true;\r\n });\r\n};\r\n\r\nconst CheckoutPlaceOrderButton: React.FC = ({\r\n checkoutBtnText, canPlaceOrder, placeOrder, telemetryContent, shouldEnableSinglePaymentAuthorizationCheckout, isPlaceOrderLoading }) => {\r\n const [isBusy, setIsBusy] = useState(false);\r\n buttonsStates.push(setIsBusy);\r\n const payload = getPayloadObject(TelemetryEvent.Purchase, telemetryContent!, checkoutBtnText, '');\r\n const attributes = getTelemetryAttributes(telemetryContent!, payload);\r\n\r\n if (shouldEnableSinglePaymentAuthorizationCheckout) {\r\n return (\r\n \r\n {checkoutBtnText}\r\n \r\n );\r\n }\r\n\r\n return (\r\n \r\n {checkoutBtnText}\r\n \r\n );\r\n};\r\n\r\nexport default CheckoutPlaceOrderButton;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { IActionContext } from '@msdyn365-commerce/core';\r\nimport { getCheckoutState } from '@msdyn365-commerce/global-state';\r\nimport { checkoutAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/CartsDataActions.g';\r\nimport {\r\n getTenderTypesAsync, resolveCardTypesAsync\r\n} from '@msdyn365-commerce/retail-proxy/dist/DataActions/StoreOperationsDataActions.g';\r\nimport {\r\n Address, CardPaymentAcceptResult, CardType, CartTenderLine, RetailOperation, SalesOrder, TenderType, TokenizedPaymentCard\r\n} from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\r\n\r\nexport const OPERATIONS = {\r\n PayCard: 201,\r\n PayGiftCertificate: 214,\r\n PayLoyalty: 207,\r\n PayCustomerAccount: 202\r\n};\r\n\r\nconst getCardTypeId = async (ctx: IActionContext, cardPrefix: string = ''): Promise => {\r\n try {\r\n const response = await resolveCardTypesAsync({ callerContext: ctx }, cardPrefix, CardType.Unknown);\r\n if (response && response.length > 0) {\r\n return response[0].TypeId;\r\n }\r\n } catch (error) {\r\n ctx.telemetry.error('Call to resolveCardTypesAsync failed.', error);\r\n }\r\n return undefined;\r\n};\r\n\r\nconst findTenderIdTypeByOperationId = (tenderTypes: TenderType[], operationId: RetailOperation): string | undefined => {\r\n const matchedTenderType = tenderTypes.find(tenderType => tenderType.OperationId === operationId);\r\n if (matchedTenderType) {\r\n return matchedTenderType.TenderTypeId;\r\n }\r\n return;\r\n};\r\n\r\nconst roundNumber = (value: number) => Number(value.toFixed(2));\r\n\r\nasync function getLoyaltyTenderLine(\r\n ctx: IActionContext,\r\n LoyaltyCardId: string,\r\n Amount: number = 0,\r\n Currency: string = 'USD'\r\n): Promise {\r\n const tenderTypes = await getTenderTypesAsync({ callerContext: ctx, queryResultSettings: {} }).catch(error => {\r\n throw error;\r\n });\r\n\r\n if (!tenderTypes) {\r\n throw new Error('Fail to get gift card tender line');\r\n }\r\n\r\n const TenderTypeId = findTenderIdTypeByOperationId(tenderTypes, OPERATIONS.PayLoyalty);\r\n return {\r\n // @ts-expect-error\r\n '@odata.type': '#Microsoft.Dynamics.Commerce.Runtime.DataModel.CartTenderLine',\r\n\r\n 'Amount@odata.type': '#Decimal',\r\n Currency,\r\n TenderTypeId,\r\n Amount,\r\n LoyaltyCardId\r\n };\r\n}\r\n\r\nasync function getGiftCardTenderLine(\r\n ctx: IActionContext,\r\n GiftCardId: string = '',\r\n Amount: number = 0,\r\n Currency: string = 'USD',\r\n tenderTypeId?: string,\r\n giftCardPin?: string,\r\n giftCardExpirationYear?: number,\r\n giftCardExpirationMonth?: number\r\n): Promise {\r\n let TenderTypeId = tenderTypeId;\r\n\r\n if (!TenderTypeId) {\r\n const tenderTypes = await getTenderTypesAsync({ callerContext: ctx, queryResultSettings: {} }).catch(error => {\r\n throw error;\r\n });\r\n if (!tenderTypes) {\r\n throw new Error('Fail to get gift card tender line');\r\n }\r\n TenderTypeId = findTenderIdTypeByOperationId(tenderTypes, OPERATIONS.PayGiftCertificate);\r\n }\r\n\r\n const GiftCardPin = giftCardPin;\r\n const GiftCardExpirationYear = giftCardExpirationYear;\r\n const GiftCardExpirationMonth = giftCardExpirationMonth;\r\n return {\r\n // @ts-expect-error\r\n '@odata.type': '#Microsoft.Dynamics.Commerce.Runtime.DataModel.CartTenderLine',\r\n 'Amount@odata.type': '#Decimal',\r\n Currency,\r\n TenderTypeId,\r\n Amount,\r\n GiftCardId,\r\n GiftCardPin,\r\n GiftCardExpirationYear,\r\n GiftCardExpirationMonth\r\n };\r\n}\r\n\r\nasync function getCreditCardTenderLine(\r\n ctx: IActionContext,\r\n tokenizedPaymentCard: TokenizedPaymentCard,\r\n cardPrefix: string = '',\r\n Amount: number = 0,\r\n Currency: string = 'USD',\r\n billingAddress?: Address\r\n): Promise {\r\n const tenderTypes = await getTenderTypesAsync({ callerContext: ctx, queryResultSettings: {} }).catch(error => {\r\n throw error;\r\n });\r\n\r\n let cartTypeId = tokenizedPaymentCard.CardTypeId;\r\n\r\n if (!cartTypeId) {\r\n cartTypeId = await getCardTypeId(ctx, cardPrefix);\r\n }\r\n\r\n if (!tenderTypes) {\r\n throw new Error('Fail to get card tender type');\r\n }\r\n\r\n if (!cartTypeId) {\r\n throw new Error('Fail to get card type id');\r\n }\r\n\r\n const TenderTypeId = tokenizedPaymentCard.TenderType ?? findTenderIdTypeByOperationId(tenderTypes, OPERATIONS.PayCard);\r\n const cardTenderLine: CartTenderLine = {\r\n // @ts-expect-error\r\n '@odata.type': '#Microsoft.Dynamics.Commerce.Runtime.DataModel.CartTenderLine',\r\n 'Amount@odata.type': '#Decimal',\r\n Currency,\r\n Amount,\r\n TenderTypeId,\r\n CardTypeId: cartTypeId\r\n };\r\n cardTenderLine.TokenizedPaymentCard = {\r\n ...tokenizedPaymentCard,\r\n CardTypeId: cartTypeId,\r\n\r\n // @ts-expect-error\r\n '@odata.type': '#Microsoft.Dynamics.Commerce.Runtime.DataModel.TokenizedPaymentCard',\r\n House: tokenizedPaymentCard.House || 'N/A',\r\n ...(tokenizedPaymentCard.CardTokenInfo && {\r\n CardTokenInfo: {\r\n ...tokenizedPaymentCard.CardTokenInfo,\r\n '@odata.type': '#Microsoft.Dynamics.Commerce.Runtime.DataModel.CardTokenInfo'\r\n }\r\n }),\r\n ...(billingAddress && {\r\n Phone: billingAddress.Phone,\r\n Country: billingAddress.ThreeLetterISORegionName,\r\n Address1: billingAddress.Street,\r\n City: billingAddress.City,\r\n State: billingAddress.State,\r\n Zip: billingAddress.ZipCode\r\n })\r\n };\r\n\r\n return cardTenderLine;\r\n}\r\n\r\n/**\r\n * Get credit card tender line.\r\n * @param context - Action context.\r\n * @param amount - Due amount for credit card.\r\n * @param currency - Currency.\r\n * @param cardPaymentAcceptResult - CardPaymentAcceptResult.\r\n * @returns - The credit card tender line.\r\n */\r\nasync function getCreditCardTenderLineForSinglePaymentAuth(\r\n context: IActionContext,\r\n amount: number = 0,\r\n currency: string = 'USD',\r\n cardPaymentAcceptResult?: CardPaymentAcceptResult\r\n): Promise {\r\n const tenderTypes = await getTenderTypesAsync({ callerContext: context, queryResultSettings: {} }).catch(error => {\r\n throw error;\r\n });\r\n\r\n const tenderTypeId = findTenderIdTypeByOperationId(tenderTypes, OPERATIONS.PayCard);\r\n\r\n const cardTenderLine: CartTenderLine = {\r\n // @ts-expect-error -- existing data.\r\n '@odata.type': '#Microsoft.Dynamics.Commerce.Runtime.DataModel.CartTenderLine',\r\n 'Amount@odata.type': '#Decimal',\r\n Currency: currency,\r\n Amount: amount,\r\n TenderTypeId: tenderTypeId,\r\n CardPaymentAcceptResult: cardPaymentAcceptResult\r\n };\r\n\r\n return cardTenderLine;\r\n}\r\n\r\nasync function createCustomerAccountTenderLine(\r\n ctx: IActionContext,\r\n Amount: number,\r\n Currency: string = 'USD'\r\n): Promise {\r\n const CustomerId = null;\r\n if (!ctx.requestContext.user.isAuthenticated) {\r\n ctx.telemetry.error('A customer id is required to pay with customer account');\r\n }\r\n\r\n const tenderTypes = await getTenderTypesAsync({ callerContext: ctx, queryResultSettings: {} }).catch(error => {\r\n throw error;\r\n });\r\n\r\n if (!tenderTypes) {\r\n ctx.telemetry.error('No tender types found for this channel');\r\n }\r\n\r\n const TenderTypeId = findTenderIdTypeByOperationId(tenderTypes, OPERATIONS.PayCustomerAccount);\r\n if (!TenderTypeId) {\r\n ctx.telemetry.error('No customer account tender type');\r\n }\r\n return {\r\n '@odata.type': '#Microsoft.Dynamics.Commerce.Runtime.DataModel.CartTenderLine',\r\n 'Amount@odata.type': '#Decimal',\r\n Currency,\r\n TenderTypeId,\r\n Amount,\r\n\r\n // @ts-expect-error\r\n CustomerId\r\n };\r\n}\r\n\r\nexport default async (ctx: IActionContext, updatedCartVersion?: number, isPaymentVerificationRedirection?: boolean): Promise => {\r\n const checkoutState = await getCheckoutState(ctx).catch(error => {\r\n throw error;\r\n });\r\n\r\n const cartState = checkoutState.checkoutCart;\r\n\r\n const channelConfiguration = ctx.requestContext.channel;\r\n\r\n if (!cartState || Object.keys(cartState).length === 0 || !channelConfiguration) {\r\n throw new Error('Fail to placeOrder');\r\n }\r\n\r\n const {\r\n giftCardExtends,\r\n tokenizedPaymentCard,\r\n cardPrefix,\r\n guestCheckoutEmail,\r\n billingAddress,\r\n loyaltyAmount,\r\n cardPaymentAcceptResult,\r\n shouldEnableSinglePaymentAuthorizationCheckout\r\n } = checkoutState;\r\n const { Currency } = channelConfiguration;\r\n\r\n let amountDue = cartState.cart.AmountDue || 0;\r\n let cartTenderLines;\r\n const getTenderLinePromises = [];\r\n const loyaltyCardNumber = cartState.cart.LoyaltyCardId;\r\n\r\n // Pay by loyalty first\r\n if (loyaltyAmount && loyaltyCardNumber) {\r\n const chargedAmount = roundNumber(Math.min(loyaltyAmount, amountDue));\r\n const loyaltyTenderLinePromise = getLoyaltyTenderLine(ctx, loyaltyCardNumber, chargedAmount, Currency);\r\n getTenderLinePromises.push(loyaltyTenderLinePromise);\r\n amountDue = roundNumber(amountDue - chargedAmount);\r\n }\r\n\r\n // Then by gift card\r\n if (giftCardExtends && giftCardExtends.length > 0) {\r\n giftCardExtends.some(giftCardExtend => {\r\n if (giftCardExtend.Balance && amountDue > 0) {\r\n const chargedAmount = roundNumber(Math.min(giftCardExtend.Balance, amountDue));\r\n const tenderTypeId = giftCardExtend.TenderTypeId;\r\n const giftCardPin = giftCardExtend.Pin;\r\n const giftCardExpirationYear = giftCardExtend.ExpirationDate ? Number.parseInt(giftCardExtend.ExpirationDate?.split('/')[1], 10) : undefined;\r\n const giftCardExpirationMonth = giftCardExtend.ExpirationDate ? Number.parseInt(giftCardExtend.ExpirationDate?.split('/')[0], 10) : undefined;\r\n const creditCardTenderLinePromise = getGiftCardTenderLine(ctx, giftCardExtend.Id, chargedAmount, Currency, tenderTypeId, giftCardPin, giftCardExpirationYear, giftCardExpirationMonth);\r\n getTenderLinePromises.push(creditCardTenderLinePromise);\r\n amountDue = roundNumber(amountDue - chargedAmount);\r\n }\r\n return amountDue === 0;\r\n });\r\n }\r\n\r\n // Then by customer account\r\n if (checkoutState.customerAccountAmount > 0) {\r\n const chargedAmount = roundNumber(Math.min(checkoutState.customerAccountAmount, amountDue));\r\n const customerAccountTenderLinePromise = createCustomerAccountTenderLine(ctx, chargedAmount, Currency);\r\n getTenderLinePromises.push(customerAccountTenderLinePromise);\r\n amountDue = roundNumber(amountDue - chargedAmount);\r\n }\r\n\r\n // Pay the rest by credit card\r\n if (amountDue > 0) {\r\n let creditCardTenderLinePromise: Promise;\r\n\r\n if (shouldEnableSinglePaymentAuthorizationCheckout) {\r\n creditCardTenderLinePromise = getCreditCardTenderLineForSinglePaymentAuth(\r\n ctx,\r\n amountDue,\r\n Currency,\r\n cardPaymentAcceptResult\r\n );\r\n } else {\r\n if (!tokenizedPaymentCard) {\r\n throw new Error('Fail to placeOrder: no token found');\r\n }\r\n creditCardTenderLinePromise = getCreditCardTenderLine(\r\n ctx,\r\n tokenizedPaymentCard,\r\n cardPrefix,\r\n amountDue,\r\n Currency,\r\n billingAddress\r\n );\r\n }\r\n\r\n getTenderLinePromises.push(creditCardTenderLinePromise);\r\n }\r\n\r\n if (getTenderLinePromises.length > 0) {\r\n // When payment methods is required\r\n cartTenderLines = await Promise.all(getTenderLinePromises).catch(error => {\r\n throw error;\r\n });\r\n\r\n if (!cartTenderLines || cartTenderLines.length === 0) {\r\n throw new Error('Fail to placeOrder: fail to get cart tender lines');\r\n }\r\n }\r\n\r\n const cartVersion = updatedCartVersion || cartState.cart.Version;\r\n\r\n console.log(\"CHECKOUT CALL\");\r\n console.log(cartState.cart.Id);\r\n console.log(cartState.attributeValues);\r\n\r\n // Proceed checkout\r\n const salesOrder = await checkoutAsync(\r\n { callerContext: ctx, bypassCache: 'get' },\r\n cartState.cart.Id,\r\n guestCheckoutEmail,\r\n undefined,\r\n undefined,\r\n cartTenderLines || null,\r\n cartVersion\r\n ).catch(async error => {\r\n if (checkoutState.shouldEnableSinglePaymentAuthorizationCheckout) {\r\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- unknown type.\r\n if (error.data?.AdditionalContext) {\r\n await checkoutState.updateShouldCollapsePaymentSection({ newShouldCollapsePaymentSection: true });\r\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- unknown type.\r\n await checkoutState.updateRedirectAdditionalContext({ newRedirectAdditionalContext: error?.data?.AdditionalContext as string });\r\n } else {\r\n await checkoutState.updateIsCheckoutCallFailed({ newIsCheckoutCallFailed: true });\r\n\r\n if (isPaymentVerificationRedirection) {\r\n await checkoutState.checkoutCart.refreshCart({});\r\n }\r\n }\r\n }\r\n\r\n throw error;\r\n });\r\n\r\n if (!salesOrder) {\r\n throw new Error('Fail to placeOrder: fail to checkout');\r\n }\r\n\r\n return salesOrder;\r\n};\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { IActionContext } from '@msdyn365-commerce/core';\r\nimport { getCartState, getCheckoutState } from '@msdyn365-commerce/global-state';\r\n\r\nasync function emptyActiveCart(ctx: IActionContext): Promise {\r\n let cartState;\r\n let checkoutState;\r\n const lineItemIdsToRemove = [];\r\n\r\n try {\r\n cartState = await getCartState(ctx);\r\n checkoutState = await getCheckoutState(ctx);\r\n } catch (error) {\r\n throw error;\r\n }\r\n\r\n if (!cartState || !cartState.cart) {\r\n throw new Error('Fail to fetch active cart');\r\n }\r\n\r\n if (!checkoutState || !checkoutState.checkoutCart) {\r\n throw new Error('Fail to fetch checkoutCart cart');\r\n }\r\n\r\n const activeCart = cartState.cart;\r\n const checkoutCart = checkoutState.checkoutCart.cart;\r\n\r\n for (const activeCartLine of activeCart.CartLines || []) {\r\n for (const checkoutCartLine of checkoutCart.CartLines || []) {\r\n if (activeCartLine.LineId && activeCartLine.LineId === checkoutCartLine.LineId) {\r\n lineItemIdsToRemove.push(activeCartLine.LineId);\r\n }\r\n }\r\n }\r\n\r\n try {\r\n await cartState.removeCartLines({ cartLineIds: lineItemIdsToRemove });\r\n await cartState.removeAllPromoCodes({});\r\n await checkoutState.removeCheckoutCartId({});\r\n } catch (error) {\r\n throw error;\r\n }\r\n}\r\n\r\nexport default emptyActiveCart;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport { Cart, CartLineValidationResults } from '@msdyn365-commerce/retail-proxy';\r\nimport { updateLineDeliverySpecificationsAsync, validateForCheckoutAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/CartsDataActions.g';\r\nimport { DeliveryPreferenceType, LineDeliverySpecification, ReleasedProductType, SimpleProduct }\r\n from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\r\nimport { IModuleStateManager, IModuleStateProps, withModuleState } from '@msdyn365-commerce-modules/checkout-utilities';\r\nimport { ArrayExtensions, getAvailabilitiesForCartLineItems, ProductAvailabilitiesForCartLineItems } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { Button, getPayloadObject, getTelemetryAttributes, getTelemetryObject, IModuleProps, INodeProps, ITelemetryContent, TelemetryConstant, Waiting } from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport isEmpty from 'lodash/isEmpty';\r\nimport { computed, reaction, when } from 'mobx';\r\nimport { observer } from 'mobx-react';\r\nimport * as React from 'react';\r\n\r\nimport { ILliCheckoutData } from './lli-checkout.data';\r\nimport { ICheckoutHeadingData, ILliCheckoutProps } from './lli-checkout.props.autogenerated';\r\nimport AlertComponent from './components/alert';\r\nimport { getInvoicePaymentSummary, IInvoicePaymentSummary } from './components/get-invoice-payment-summary';\r\nimport { getLineItems, ILineItems } from './components/get-line-items';\r\nimport { getOrderSummary, IOrderSummary } from './components/get-order-summary';\r\nimport GuidedFormComponent from './components/guided-form';\r\nimport PlaceOrderButtonComponent from './components/place-order-button';\r\nimport placeOrder from './methods/place-order';\r\n\r\nexport * from './components/get-line-items';\r\nexport * from './components/get-order-summary';\r\n\r\ntype DeviceType = 'Mobile';\r\n\r\ninterface ICheckoutState {\r\n errorMessage: string;\r\n isValidationPassed: boolean;\r\n isPlaceOrderLoading?: boolean;\r\n}\r\n\r\nexport interface ICheckoutViewProps extends ILliCheckoutProps {\r\n className: string;\r\n canShow?: boolean;\r\n isEmptyCart?: boolean;\r\n isConsentGiven?: boolean;\r\n hasError?: boolean;\r\n cartStatus?: string;\r\n isMobile?: boolean;\r\n isEditorialMode?: boolean;\r\n backToShoppingUrl?: string;\r\n editCartLink?: string;\r\n hasSalesOrder: boolean;\r\n hasInvoiceLine?: boolean;\r\n\r\n checkoutProps: IModuleProps;\r\n headerProps: INodeProps;\r\n bodyProps: INodeProps;\r\n mainProps: INodeProps;\r\n mainControlProps: INodeProps;\r\n sideProps: INodeProps;\r\n sideControlFirstProps: INodeProps;\r\n sideControlSecondProps: INodeProps;\r\n termsAndConditionsProps: INodeProps;\r\n\r\n guidedForm?: React.ReactNode;\r\n title?: React.ReactNode;\r\n loading?: React.ReactNode;\r\n alert?: React.ReactNode;\r\n orderSummary?: IOrderSummary;\r\n invoicePaymentSummary?: IInvoicePaymentSummary;\r\n lineItems?: ILineItems;\r\n placeOrderButton?: React.ReactNode;\r\n termsAndConditions?: React.ReactNode;\r\n keepShoppingButton?: React.ReactNode;\r\n orderConfirmation?: React.ReactNode;\r\n}\r\n\r\nexport interface ICheckoutModuleProps extends ILliCheckoutProps, IModuleStateProps { }\r\n\r\n/**\r\n *\r\n * CheckoutContainer component.\r\n * @extends {React.Component}\r\n */\r\n// @ts-expect-error\r\n@withModuleState\r\n@observer\r\nclass Checkout extends React.PureComponent {\r\n\r\n @computed get cartStatus(): Msdyn365.AsyncResultStatus {\r\n console.log(\"MYDEBUG-lli: @computed get cartStatus() called\");\r\n return this.props.data.checkout?.status;\r\n }\r\n\r\n @computed get isEmptyCart(): boolean {\r\n console.log(\"MYDEBUG-lli: @computed get isEmptyCart() called\");\r\n if (this.isEditorialMode) {\r\n // Editorial mode: Ignore empty cart\r\n return false;\r\n }\r\n const cart = this.props.data.checkout?.result?.checkoutCart?.cart;\r\n return this.cartStatus === 'SUCCESS' && !!cart && !isEmpty(cart) && (!cart.CartLines || cart.CartLines.length === 0);\r\n }\r\n\r\n @computed get hasError(): boolean {\r\n console.log(\"MYDEBUG-lli: @computed get hasError() called\");\r\n const cart = this.props.data.checkout?.result?.checkoutCart?.cart;\r\n return this.cartStatus === 'FAILED' || (this.cartStatus === 'SUCCESS' && (!cart || isEmpty(cart)));\r\n }\r\n\r\n @computed get isEditorialMode(): boolean {\r\n console.log(\"MYDEBUG-lli: @computed get isEditorialMode() called\");\r\n return this.props.context.request.params.isEditor;\r\n }\r\n\r\n @computed public get isPaymentVerificationRedirection(): boolean {\r\n console.log(\"MYDEBUG-lli: @computed get isPaymentVerificationRedirection() called\");\r\n const { requestFormData, query } = this.props.context.request;\r\n return !!((requestFormData || (query && query.pv === '1')));\r\n }\r\n\r\n @computed get canPlaceOrder(): boolean {\r\n console.log(\"MYDEBUG-lli: @computed get canPlaceOrder() called\");\r\n const isTermsAndConditionAccepted = this.props.data.checkout.result && this.props.data.checkout.result?.isTermsAndConditionAccepted;\r\n\r\n const shouldEnableSinglePaymentAuthorizationCheckout = this.props.data.checkout.result?.shouldEnableSinglePaymentAuthorizationCheckout ?? false;\r\n\r\n // If isTermsAndConditionAccepted is undefined means TermsAndCondition module is not added to page and we should able to place order.\r\n return this.props.moduleState.isReady &&\r\n (isTermsAndConditionAccepted === undefined ||\r\n isTermsAndConditionAccepted ||\r\n shouldEnableSinglePaymentAuthorizationCheckout) &&\r\n ((this.state.errorMessage === '' || shouldEnableSinglePaymentAuthorizationCheckout) || this.isPaymentVerificationRedirection);\r\n }\r\n\r\n @computed get isCartReady(): boolean {\r\n console.log(\"MYDEBUG-lli: @computed get isCartReady() called\");\r\n return !!this.props.data.checkout.result?.checkoutCart?.cart &&\r\n this.props.data.customerInformation.status !== 'LOADING' &&\r\n this.props.data.featureState.status !== 'LOADING';\r\n }\r\n\r\n public state: ICheckoutState = {\r\n errorMessage: '',\r\n isValidationPassed: false,\r\n isPlaceOrderLoading: false\r\n };\r\n\r\n private readonly telemetryContent: ITelemetryContent = getTelemetryObject(this.props.context.request.telemetryPageName!,\r\n this.props.friendlyName,\r\n this.props.telemetry);\r\n\r\n public componentDidMount(): void {\r\n console.log(\"MYDEBUG-lli: componentDidMount() called\");\r\n const {\r\n resources: { genericErrorMessage }\r\n } = this.props;\r\n\r\n when(\r\n () => this.hasError,\r\n () => {\r\n console.log(\"MYDEBUG-lli: when (this.hasError) tripped\");\r\n this.setState({\r\n errorMessage: genericErrorMessage\r\n });\r\n this.props.context.telemetry.error('Failed to get cart');\r\n }\r\n );\r\n\r\n when(\r\n () => this.isEmptyCart,\r\n () => {\r\n console.log(\"MYDEBUG-lli: when (this.isEmptyCart) tripped\");\r\n this.redirectToCartPage('Cart is empty, but no editCartLink found');\r\n }\r\n );\r\n\r\n when(\r\n () => this.isCartReady,\r\n () => {\r\n console.log(\"MYDEBUG-lli: when (this.isCartReady) tripped\");\r\n this.validateForCheckout();\r\n }\r\n );\r\n\r\n reaction(\r\n () => this.props.moduleState.isReady,\r\n () => {\r\n console.log(\"MYDEBUG-lli: reaction (this.props.moduleState.isReady) tripped\");\r\n this.onContainerReady();\r\n }\r\n );\r\n\r\n // Reaction to call place order when isPaymentSectionContainerReady is true for new checkout flow.\r\n reaction(\r\n () => this.props.data.checkout.result?.isPaymentSectionContainerReady,\r\n async (isReady) => {\r\n console.log(\"MYDEBUG-lli: reaction (this.props.data.checkout.result?.isPaymentSectionContainerReady) tripped\");\r\n if (this.props.data.checkout.result?.shouldEnableSinglePaymentAuthorizationCheckout && isReady &&\r\n !this.props.data.checkout.result.redirectAdditionalContext) {\r\n if (!this.state.isPlaceOrderLoading) {\r\n this.setState({ isPlaceOrderLoading: true });\r\n }\r\n\r\n await this.onPlaceOrder();\r\n this.setState({ isPlaceOrderLoading: false });\r\n }\r\n }\r\n );\r\n\r\n // Reaction to enable place order button when isPaymentSectionContainerHasError is true for new checkout flow.\r\n reaction(\r\n () => this.props.data.checkout.result?.isPaymentSectionContainerHasError,\r\n (hasError) => {\r\n console.log(\"MYDEBUG-lli: reaction (this.props.data.checkout.result?.isPaymentSectionContainerHasError) tripped\");\r\n if (this.props.data.checkout.result?.shouldEnableSinglePaymentAuthorizationCheckout && hasError) {\r\n this.setState({ isPlaceOrderLoading: false });\r\n }\r\n }\r\n );\r\n\r\n // Reaction to enable place order button when redirection is true for new checkout flow.\r\n reaction(\r\n () => this.canPlaceOrder,\r\n async () => {\r\n console.log(\"MYDEBUG-lli: reaction (this.canPlaceOrder) tripped\");\r\n if (this.props.data.checkout.result?.shouldEnableSinglePaymentAuthorizationCheckout && this.canPlaceOrder) {\r\n const { requestFormData, query } = this.props.context.request;\r\n const isRedirection = !!((requestFormData && query && query.pv === '1'));\r\n if (isRedirection) {\r\n await this.props.data.checkout.result.updateIsPlaceOrderEnabledInRedirection({\r\n newIsPlaceOrderEnabledInRedirection: true\r\n });\r\n }\r\n }\r\n }\r\n );\r\n }\r\n\r\n // eslint-disable-next-line complexity -- ignore the complexity.\r\n public render(): JSX.Element {\r\n console.log(\"MYDEBUG-lli: render() called\");\r\n const {\r\n moduleState,\r\n config: { className, checkoutHeading, disableGuidedCheckoutFlow },\r\n resources\r\n } = this.props;\r\n const { errorMessage } = this.state;\r\n const { backToShopping, placeOrderText, confirmPaymentText, cookieConsentRequiredMessage, genericErrorMessage } = resources;\r\n const checkoutClass = classnames('ms-checkout', className);\r\n const checkoutInformation = this.getSlotItems('checkoutInformation');\r\n\r\n const isConsentGiven =\r\n this.props.context.request &&\r\n this.props.context.request.cookies &&\r\n this.props.context.request.cookies.isConsentGiven &&\r\n this.props.context.request.cookies.isConsentGiven();\r\n\r\n const isMobile =\r\n this.props.context.request &&\r\n this.props.context.request.device &&\r\n (this.props.context.request.device.Type as DeviceType) === 'Mobile';\r\n\r\n const backToShoppingUrl = Msdyn365.getUrlSync('home', this.props.context.actionContext) || '';\r\n const editCartLink = Msdyn365.getUrlSync('cart', this.props.context.actionContext) || '';\r\n\r\n const termsAndConditions =\r\n this.props.slots.termsAndConditions &&\r\n this.props.slots.termsAndConditions.length > 0 &&\r\n this.props.slots.termsAndConditions[0];\r\n\r\n const payLoad = getPayloadObject('click', this.telemetryContent, TelemetryConstant.BackToShopping);\r\n const backToShoppingAttributes = getTelemetryAttributes(this.telemetryContent, payLoad);\r\n\r\n const hasInvoiceLine = this.props.data.checkout && this.props.data.checkout.result?.checkoutCart.hasInvoiceLine;\r\n const checkoutBtnText = hasInvoiceLine ? confirmPaymentText : placeOrderText;\r\n\r\n let viewProps: ICheckoutViewProps = {\r\n ...this.props,\r\n className: checkoutClass,\r\n isEmptyCart: this.isEmptyCart,\r\n isConsentGiven,\r\n hasError: this.hasError,\r\n hasSalesOrder: this.props.data.checkout && this.props.data.checkout.result !== undefined && this.props.data.checkout.result.salesOrder !== undefined,\r\n hasInvoiceLine,\r\n cartStatus: this.cartStatus,\r\n isMobile,\r\n backToShoppingUrl,\r\n editCartLink,\r\n isEditorialMode: this.isEditorialMode,\r\n orderConfirmation: this.props.slots.orderConfirmation && this.props.slots.orderConfirmation.length > 0 ? this.props.slots.orderConfirmation[0] : undefined,\r\n checkoutProps: { moduleProps: this.props, className: checkoutClass },\r\n headerProps: { className: 'ms-checkout__head' },\r\n bodyProps: { className: 'ms-checkout__body' },\r\n mainProps: { className: 'ms-checkout__main' },\r\n mainControlProps: { className: 'ms-checkout__main-control' },\r\n sideProps: { className: 'ms-checkout__side' },\r\n sideControlFirstProps: { className: 'ms-checkout__side-control-first' },\r\n sideControlSecondProps: { className: 'ms-checkout__side-control-second' },\r\n termsAndConditionsProps: { className: 'ms-checkout__terms-and-conditions' },\r\n title: checkoutHeading && (\r\n this.renderMsdyn365Text(checkoutHeading)\r\n )\r\n };\r\n\r\n if (!isConsentGiven) {\r\n viewProps = {\r\n ...viewProps,\r\n alert: \r\n };\r\n } else if (this.isLoading()) {\r\n viewProps = {\r\n ...viewProps,\r\n loading: \r\n };\r\n } else if (this.hasError) {\r\n viewProps = {\r\n ...viewProps,\r\n alert: \r\n };\r\n } else {\r\n const shouldEnableSinglePaymentAuthorizationCheckout: boolean =\r\n this.props.data.checkout.result?.shouldEnableSinglePaymentAuthorizationCheckout ?? false;\r\n\r\n viewProps = {\r\n ...viewProps,\r\n alert: errorMessage && ,\r\n canShow: true,\r\n guidedForm: checkoutInformation ? (\r\n \r\n ) : (\r\n undefined\r\n ),\r\n orderSummary: getOrderSummary(this.props),\r\n invoicePaymentSummary: getInvoicePaymentSummary(this.props),\r\n lineItems: hasInvoiceLine ? undefined : getLineItems(this.props, this.telemetryContent),\r\n placeOrderButton: (\r\n \r\n ),\r\n termsAndConditions,\r\n keepShoppingButton: backToShoppingUrl && (\r\n \r\n {backToShopping}\r\n \r\n )\r\n };\r\n }\r\n\r\n return this.props.renderView(viewProps) as React.ReactElement;\r\n }\r\n\r\n public renderMsdyn365Text(checkoutHeading: ICheckoutHeadingData): React.ReactNode {\r\n console.log(\"MYDEBUG-lli: renderMsdyn365Text() called\");\r\n return (\r\n \r\n );\r\n }\r\n\r\n public handleCheckoutHeadingChange = (event: Msdyn365.ContentEditableEvent) => this.props.config.checkoutHeading!.text = event.target.value;\r\n\r\n private readonly isLoading = (): boolean => {\r\n console.log(\"MYDEBUG-lli: isLoading() called\");\r\n return !this.cartStatus || this.cartStatus === 'LOADING' || this.isEmptyCart || !this.state.isValidationPassed;\r\n };\r\n\r\n private readonly getSlotItems = (key: string): React.ReactNode[] | undefined => {\r\n console.log(\"MYDEBUG-lli: getSlotItems() called\");\r\n const { slots } = this.props;\r\n return slots && slots[key] && slots[key].length > 0 ? slots[key] : undefined;\r\n };\r\n\r\n /**\r\n * Trigger the payment section container submit when placing order.\r\n */\r\n private readonly triggerPaymentWithPlaceOrder = async (): Promise => {\r\n console.log(\"MYDEBUG-lli: triggerPaymentWithPlaceOrder() called\");\r\n this.setState({ isPlaceOrderLoading: true });\r\n\r\n await this.props.data.checkout.result?.updateShouldTriggerPaymentWithPlaceOrder(\r\n { newShouldTriggerPaymentWithPlaceOrder: !this.props.data.checkout.result.shouldTriggerPaymentWithPlaceOrder });\r\n };\r\n\r\n private readonly onPlaceOrder = async (): Promise => {\r\n console.log(\"MYDEBUG-lli: onPlaceOrder() called\");\r\n const {\r\n resources: { checkoutOutOfStockErrorMessage, genericErrorMessage, invalidCartVersionErrorMessage },\r\n context: { actionContext, app: { config: { enableStockCheck = false } } },\r\n slots: { orderConfirmation },\r\n data: { checkout, products }\r\n } = this.props;\r\n\r\n // If hasInvoiceLine is true, no inventory check\r\n if (!this.props.data.checkout.result?.checkoutCart.hasInvoiceLine && enableStockCheck &&\r\n await this.isOverMaxQuantity((await checkout).checkoutCart.cart, (await products))) {\r\n this.setState({\r\n errorMessage: checkoutOutOfStockErrorMessage\r\n });\r\n this.props.context.telemetry.error(checkoutOutOfStockErrorMessage);\r\n } else {\r\n const hasOrderConfirmation = orderConfirmation && orderConfirmation.length > 0;\r\n\r\n const updatedCartVersion = await this.updateCartLineEmailAddress(this.props.data.checkout.result?.guestCheckoutEmail || '');\r\n\r\n await placeOrder(actionContext, this.props.data.checkout.result, this.props.data.products.result,\r\n !hasOrderConfirmation, updatedCartVersion, this.isPaymentVerificationRedirection).catch(error => {\r\n let errorMessage = genericErrorMessage;\r\n\r\n if (error && error.name === 'Microsoft_Dynamics_Commerce_Runtime_InvalidCartVersion') {\r\n errorMessage = invalidCartVersionErrorMessage;\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- unknown error type.\r\n if (this.props.data.checkout.result?.shouldEnableSinglePaymentAuthorizationCheckout && error.data?.AdditionalContext &&\r\n !this.isPaymentVerificationRedirection) {\r\n return;\r\n }\r\n\r\n this.setState({\r\n errorMessage\r\n });\r\n this.props.telemetry.exception(error);\r\n });\r\n }\r\n };\r\n\r\n // Update receipt email address for electronic cart line\r\n // return the updated cart version\r\n private readonly updateCartLineEmailAddress = async (newGuestCheckoutEmail: string): Promise => {\r\n console.log(\"MYDEBUG-lli: updateCartLineEmailAddress() called\");\r\n const emailDeliveryModeCode = this.props.context.request.channel?.EmailDeliveryModeCode;\r\n\r\n const emailDeliveryCartLines = this.props.data.checkout.result?.checkoutCart.cart.CartLines?.filter(\r\n cartLine => (cartLine.DeliveryMode && cartLine.DeliveryMode !== '' && cartLine.DeliveryMode === emailDeliveryModeCode)\r\n );\r\n\r\n let updatedCartVersion: number | undefined;\r\n if (emailDeliveryCartLines && emailDeliveryCartLines.length > 0) {\r\n const lineDeliverySpecifications: LineDeliverySpecification[] = emailDeliveryCartLines.map(line => {\r\n return { LineId: line.LineId,\r\n DeliverySpecification: {\r\n DeliveryModeId: emailDeliveryModeCode,\r\n DeliveryPreferenceTypeValue: DeliveryPreferenceType.ElectronicDelivery,\r\n ElectronicDeliveryEmailAddress: newGuestCheckoutEmail\r\n }\r\n };\r\n });\r\n\r\n await updateLineDeliverySpecificationsAsync(\r\n { callerContext: this.props.context.actionContext },\r\n (await this.props.data.checkout).checkoutCart.cart.Id,\r\n lineDeliverySpecifications\r\n ).then(updatedCart => {\r\n updatedCartVersion = updatedCart.Version;\r\n }).catch(error => {\r\n this.props.context.actionContext.telemetry.exception(error);\r\n throw new Error('[updateLineDeliverySpecificationsAsync] Unable to update electronic delivery email address in cart');\r\n });\r\n }\r\n\r\n return updatedCartVersion;\r\n };\r\n\r\n /**\r\n * Return true if any product in the cart is over its max quantity.\r\n * @param cart -- The checkout cart.\r\n * @param products -- The checkout products.\r\n * @returns -- Is any product in the cart is over max quantity.\r\n */\r\n private readonly isOverMaxQuantity = async (cart: Cart, products: SimpleProduct[]): Promise => {\r\n console.log(\"MYDEBUG-lli: isOverMaxQuantity() called\");\r\n let isOverMaxQuantity = false;\r\n const emailDeliveryModeCode = this.props.context.request.channel?.EmailDeliveryModeCode;\r\n\r\n await getAvailabilitiesForCartLineItems(\r\n new ProductAvailabilitiesForCartLineItems(this.props.context.actionContext.requestContext.apiSettings),\r\n this.props.context.actionContext\r\n ).then(productInventoryInformation => {\r\n cart.CartLines?.map((cartline) => {\r\n\r\n const cartlineProduct = products.find(product => product.RecordId === cartline.ProductId);\r\n const isServiceItem = cartlineProduct?.ItemTypeValue === ReleasedProductType.Service;\r\n\r\n // If product is service item or cartline is electronic delivery, then no inventory check\r\n if (!isServiceItem && cartline.DeliveryMode !== emailDeliveryModeCode && ArrayExtensions.hasElements(productInventoryInformation)) {\r\n const foundProductAvailability = productInventoryInformation.find((productInventory) => {\r\n return productInventory.ProductAvailableQuantity?.ProductId! === cartline.ProductId;\r\n });\r\n\r\n if (!(foundProductAvailability?.IsProductAvailable && foundProductAvailability.ProductAvailableQuantity.AvailableQuantity !== undefined &&\r\n cartline.Quantity && cartline.Quantity <= foundProductAvailability.ProductAvailableQuantity.AvailableQuantity)) {\r\n isOverMaxQuantity = true;\r\n }\r\n }\r\n });\r\n })\r\n .catch(error => {\r\n this.props.context.actionContext.telemetry.exception(error);\r\n throw new Error('[getAvailabilitiesForCartLineItems] Unable to get availabilities for products in checkout cart');\r\n });\r\n\r\n return isOverMaxQuantity;\r\n };\r\n\r\n private readonly getActiveChildModuleStates = (): IModuleStateManager[] => {\r\n console.log(\"MYDEBUG-lli: getActiveChildModuleStates() called\");\r\n const { childIds, getModule } = this.props.moduleState;\r\n return childIds\r\n .map(getModule)\r\n .filter((state): state is IModuleStateManager => !!state && !state.isDisabled && state.hasModuleState);\r\n };\r\n\r\n private readonly onContainerReady = (): void => {\r\n console.log(\"MYDEBUG-lli: onContainerReady() called\");\r\n this.getActiveChildModuleStates().forEach(state => {\r\n state.isReady && state.onContainerReady && state.onContainerReady();\r\n });\r\n };\r\n\r\n private readonly redirectToCartPage = (notFoundEditCartLinkMessage: string): void => {\r\n console.log(\"MYDEBUG-lli: redirectToCartPage() called\");\r\n const editCartLink = Msdyn365.getUrlSync('cart', this.props.context.actionContext) || '';\r\n if (window && editCartLink) {\r\n window.location.assign(editCartLink);\r\n } else {\r\n this.setState({\r\n errorMessage: this.props.resources.genericErrorMessage\r\n });\r\n this.props.context.telemetry.error(notFoundEditCartLinkMessage);\r\n }\r\n };\r\n\r\n private readonly validateForCheckout = (retry: boolean = true): void => {\r\n console.log(\"MYDEBUG-lli: validateForCheckout() called\");\r\n const notFoundEditCartLinkMessage = 'Cart doesn\\'t pass validation, but no editCartLink found';\r\n const cart = this.props.data.checkout.result!.checkoutCart.cart;\r\n const { Id, Version } = cart;\r\n const isOrderQuantityLimitsFeatureEnabledInHq = this.props.data.featureState.result\r\n ?.find(featureState => featureState.Name === 'Dynamics.AX.Application.RetailDefaultOrderQuantityLimitsFeature')?.IsEnabled || false;\r\n const defaultOrderQuantityLimitsFeatureConfig = this.props.context?.request?.app?.platform?.enableDefaultOrderQuantityLimits;\r\n const customerInfo = this.props.data.customerInformation.result;\r\n\r\n const isOrderQuantityLimitsFeatureEnabledInSiteSettings = defaultOrderQuantityLimitsFeatureConfig === 'all' ||\r\n (customerInfo &&\r\n ((defaultOrderQuantityLimitsFeatureConfig === 'b2b' && customerInfo.IsB2b) ||\r\n (defaultOrderQuantityLimitsFeatureConfig === 'b2c' && !customerInfo.IsB2b)));\r\n if (isOrderQuantityLimitsFeatureEnabledInHq && isOrderQuantityLimitsFeatureEnabledInSiteSettings) {\r\n if (Version && Id) {\r\n validateForCheckoutAsync({ callerContext: this.props.context.actionContext, bypassCache: 'none' }, Id, Version)\r\n .then((result: CartLineValidationResults) => {\r\n if (result.ValidationFailuresByCartLines?.length !== 0) {\r\n this.redirectToCartPage(notFoundEditCartLinkMessage);\r\n } else {\r\n this.setState({ isValidationPassed: true });\r\n }\r\n })\r\n .catch((error) => {\r\n this.props.telemetry.warning(error);\r\n this.props.telemetry.debug('Unable to validate Cart');\r\n if (retry && error.name === 'Microsoft_Dynamics_Commerce_Runtime_InvalidCartVersion') {\r\n const cartState = this.props.data.checkout.result?.checkoutCart;\r\n cartState?.refreshCart({})\r\n .then(() => {\r\n this.validateForCheckout(false);\r\n })\r\n .catch((refreshError: Error) => {\r\n this.props.telemetry.warning(refreshError.message);\r\n this.props.telemetry.debug('Unable to refresh Cart');\r\n });\r\n } else {\r\n this.redirectToCartPage(notFoundEditCartLinkMessage);\r\n }\r\n });\r\n } else {\r\n this.redirectToCartPage(notFoundEditCartLinkMessage);\r\n }\r\n } else {\r\n this.setState({ isValidationPassed: true });\r\n }\r\n };\r\n}\r\n\r\nexport default Checkout;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { getUrlSync, IActionContext } from '@msdyn365-commerce/core';\r\nimport { ICheckoutState } from '@msdyn365-commerce/global-state';\r\nimport { SalesOrder, SimpleProduct } from '@msdyn365-commerce/retail-proxy';\r\n\r\nimport checkout from './lli-checkout';\r\nimport emptyActiveCart from './empty-active-cart';\r\n\r\nexport default async (ctx: IActionContext, checkoutState: ICheckoutState | undefined, orderedProducts: SimpleProduct[] | undefined,\r\n redirect: boolean, updatedCartVersion?: number, isPaymentVerificationRedirection?: boolean) => {\r\n return new Promise(async (resolve: () => void, reject: (reason?: Error) => void) => {\r\n let salesOrder: SalesOrder;\r\n\r\n // Proceed checkout\r\n try {\r\n salesOrder = await checkout(ctx, updatedCartVersion, isPaymentVerificationRedirection);\r\n } catch (error) {\r\n reject(error); return;\r\n }\r\n\r\n // Remove purchased items from the active cart\r\n try {\r\n await emptyActiveCart(ctx);\r\n } catch (error) {\r\n reject(error); return;\r\n }\r\n\r\n if (redirect) {\r\n // Redirect to the order confirmation page\r\n const orderConfirmationUrl = getUrlSync('orderConfirmation', ctx) || '';\r\n if (!orderConfirmationUrl) {\r\n reject(new Error('Error: No orderConfirmationUrl')); return;\r\n }\r\n\r\n const separator = orderConfirmationUrl.includes('?') ? '&' : '?';\r\n const url = `${orderConfirmationUrl}${separator}transactionId=${salesOrder.Id}`;\r\n window.location.assign(url);\r\n } else {\r\n if (checkoutState) {\r\n const result = await checkoutState.updateSalesOrder({ newSalesOrder: salesOrder, newOrderedProducts: orderedProducts || [] });\r\n\r\n if (result.status === 'FAILED') {\r\n reject(new Error('Error: Updating error state failed')); return;\r\n }\r\n } else {\r\n reject(new Error('Error: No checkout state')); return;\r\n }\r\n resolve();\r\n }\r\n });\r\n};\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { ICheckoutViewProps, ILineItem, ILineItemDeliveryGroup, ILineItems, IOrderSummary, IPickUpAtStore } from './lli-checkout';\r\nimport { IEmailDelivery } from './components';\r\nimport { IInvoicePaymentSummary } from './components/get-invoice-payment-summary';\r\n\r\nexport const PickUpAtStoreComponent: React.FC = ({ PickUpAtStore, label, location }) => (\r\n \r\n {label}\r\n {location}\r\n \r\n);\r\n\r\nexport const EmailDeliveryComponent: React.FC = ({ EmailDelivery, label }) => (\r\n \r\n {label}\r\n \r\n);\r\n\r\nexport const LineItemComponent: React.FC = ({ LineItem, item, pickUpAtStore, emailDelivery }) => (\r\n \r\n {item}\r\n {pickUpAtStore && }\r\n {emailDelivery && }\r\n \r\n);\r\n\r\nexport const LineItemGroupComponent: React.FC = ({ LineItemDeliveryGroup, LineItemList, heading, lineItems }) => (\r\n \r\n {heading}\r\n \r\n {lineItems.map(lineItem => (\r\n \r\n ))}\r\n \r\n \r\n);\r\n\r\nexport const LineItemGroupComponentWithMultiplePickUp: React.FC = ({ LineItemDeliveryGroup, LineItemList, heading, lineItems, lineItemWraper, lineItemWraperIcon }) => (\r\n \r\n {lineItemWraperIcon}\r\n {lineItemWraper}\r\n {heading}\r\n \r\n {lineItems.map(lineItem => (\r\n \r\n ))}\r\n \r\n \r\n);\r\n\r\nexport const LineItemComponentWithMultiplePickUp: React.FC = ({ LineItem, item, pickUpAtStore, emailDelivery }) => (\r\n \r\n {item}\r\n {emailDelivery && }\r\n \r\n);\r\n\r\nexport const PickUpAtStoreComponentWithMultiplePickUp: React.FC = ({ PickUpAtStore, label, location }) => (\r\n \r\n {label}\r\n {location}\r\n \r\n);\r\n\r\nexport const LineItemsComponent: React.FC = ({ LineItems, Header, heading, editLink, itemsForPickup, itemsForShip, itemsForEmail, itemsGroupWithMulitplePickupMode }) => (\r\n \r\n \r\n {heading}\r\n {editLink}\r\n \r\n {itemsGroupWithMulitplePickupMode === undefined && itemsForPickup && }\r\n {itemsGroupWithMulitplePickupMode === undefined && itemsForEmail && }\r\n {itemsGroupWithMulitplePickupMode === undefined && itemsForShip && }\r\n {itemsGroupWithMulitplePickupMode !== undefined ? itemsGroupWithMulitplePickupMode.map((item, index) => {\r\n return ;\r\n }) : null}\r\n \r\n);\r\n\r\nconst OrderSummaryComponent: React.FC = ({ heading, lines }) => (\r\n
\r\n {heading}\r\n
\r\n {lines && (\r\n <>\r\n {lines.subtotal}\r\n {lines.shipping}\r\n {lines.otherCharge}\r\n {lines.tax}\r\n {lines.totalDiscounts}\r\n {lines.loyalty}\r\n {lines.giftCard}\r\n {lines.orderTotal}\r\n \r\n )}\r\n
\r\n
\r\n);\r\n\r\nconst PaymentSummaryComponent: React.FC = ({ heading, lines }) => (\r\n
\r\n {heading}\r\n
\r\n {lines && (\r\n <>\r\n {lines.invoices}\r\n {lines.giftCard}\r\n {lines.loyalty}\r\n {lines.orderTotal}\r\n \r\n )}\r\n
\r\n
\r\n);\r\n\r\nconst CheckoutView: React.FC = props => {\r\n const {\r\n canShow,\r\n checkoutProps,\r\n headerProps,\r\n hasSalesOrder,\r\n hasInvoiceLine,\r\n bodyProps,\r\n mainProps,\r\n mainControlProps,\r\n sideProps,\r\n sideControlFirstProps,\r\n sideControlSecondProps,\r\n termsAndConditionsProps,\r\n orderConfirmation,\r\n loading,\r\n alert,\r\n title,\r\n guidedForm,\r\n orderSummary,\r\n invoicePaymentSummary,\r\n lineItems,\r\n placeOrderButton,\r\n termsAndConditions,\r\n keepShoppingButton\r\n } = props;\r\n\r\n return (\r\n \r\n {!hasSalesOrder && \r\n {title}\r\n }\r\n {!hasSalesOrder &&\r\n \r\n {loading}\r\n {alert}\r\n {canShow && (\r\n <>\r\n \r\n {guidedForm}\r\n \r\n {termsAndConditions}\r\n \r\n \r\n {placeOrderButton}\r\n {keepShoppingButton}\r\n \r\n \r\n \r\n {!hasInvoiceLine ? orderSummary && : invoicePaymentSummary && }\r\n \r\n \r\n {termsAndConditions}\r\n \r\n {placeOrderButton}\r\n {keepShoppingButton}\r\n \r\n {lineItems && }\r\n \r\n \r\n {termsAndConditions}\r\n \r\n {placeOrderButton}\r\n {keepShoppingButton}\r\n \r\n \r\n \r\n )}\r\n }\r\n {hasSalesOrder && orderConfirmation}\r\n \r\n );\r\n};\r\n\r\nexport default CheckoutView;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport * as React from 'react';\r\n\r\ninterface IAlertProps {\r\n message: string;\r\n}\r\n\r\nconst CheckoutAlert: React.FC = ({ message }) => (\r\n

\r\n {message}\r\n

\r\n);\r\n\r\nexport default CheckoutAlert;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { IInvoiceSummaryLines, InvoiceSummary } from '@msdyn365-commerce-modules/invoice-payment-summary';\r\nimport get from 'lodash/get';\r\nimport * as React from 'react';\r\n\r\nimport { IObrienCheckoutData } from '../obrien-checkout.data';\r\nimport { IObrienCheckoutProps } from '../obrien-checkout.props.autogenerated';\r\n\r\nexport interface IInvoicePaymentSummary {\r\n heading?: React.ReactNode;\r\n lines?: IInvoiceSummaryLines;\r\n}\r\nexport const getInvoicePaymentSummary = (input: IObrienCheckoutProps): IInvoicePaymentSummary => {\r\n const {\r\n data: { checkout },\r\n resources: {\r\n totalAmountLabel,\r\n invoiceLabel,\r\n invoiceSummaryTitle\r\n },\r\n context,\r\n typeName,\r\n id,\r\n telemetry\r\n } = input;\r\n\r\n const checkoutCart = get(checkout, 'result.checkoutCart');\r\n const cart = get(checkout, 'result.checkoutCart.cart');\r\n\r\n return {\r\n heading:

\r\n { invoiceSummaryTitle }\r\n

,\r\n lines: checkoutCart?.hasInvoiceLine ? InvoiceSummary({\r\n orderTotalLabel: totalAmountLabel,\r\n invoiceLabel,\r\n cart,\r\n context,\r\n typeName,\r\n telemetry,\r\n id,\r\n checkoutState: checkout.result\r\n }) : undefined\r\n };\r\n\r\n};\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { CartLineItemComponent } from '@msdyn365-commerce/components';\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport { CartLine, OrgUnitLocation, SimpleProduct } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\r\nimport { getProductUrlSync, StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { Button, getPayloadObject, getTelemetryAttributes, INodeProps, ITelemetryContent, TelemetryConstant } from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport get from 'lodash/get';\r\nimport groupBy from 'lodash/groupBy';\r\nimport * as React from 'react';\r\n\r\nimport { IObrienCheckoutData } from '../obrien-checkout.data';\r\nimport { IObrienCheckoutProps } from '../obrien-checkout.props.autogenerated';\r\n\r\ntype deliveryType = 'pickup' | 'ship' | 'email';\r\n\r\nexport interface IPickUpAtStore {\r\n PickUpAtStore: INodeProps;\r\n label: React.ReactNode;\r\n location: React.ReactNode;\r\n}\r\n\r\nexport interface IEmailDelivery {\r\n EmailDelivery: INodeProps;\r\n label: React.ReactNode;\r\n}\r\n\r\nexport interface ILineItem {\r\n LineId: string;\r\n LineItem: INodeProps;\r\n item?: React.ReactNode;\r\n pickUpAtStore?: IPickUpAtStore;\r\n emailDelivery?: IEmailDelivery;\r\n}\r\n\r\nexport interface ILineItemDeliveryGroup {\r\n LineItemDeliveryGroup: INodeProps;\r\n LineItemList: INodeProps;\r\n heading: React.ReactNode;\r\n lineItemWraper?: React.ReactNode;\r\n lineItemWraperIcon?: React.ReactNode;\r\n lineItems: ILineItem[];\r\n}\r\n\r\nexport interface ILineItems {\r\n LineItems: INodeProps;\r\n Header: INodeProps;\r\n heading: React.ReactNode;\r\n editLink: React.ReactNode;\r\n itemsForPickup?: ILineItemDeliveryGroup;\r\n itemsForShip?: ILineItemDeliveryGroup;\r\n itemsForEmail?: ILineItemDeliveryGroup;\r\n itemsGroupWithMulitplePickupMode?: ILineItemDeliveryGroup[];\r\n}\r\n\r\nexport const getLineItems = (input: IObrienCheckoutProps, telemetryContent?: ITelemetryContent): ILineItems | undefined => {\r\n const pickupDeliveryModeCode = get(input, 'context.request.channel.PickupDeliveryModeCode');\r\n const emailDeliveryModeCode = get(input, 'context.request.channel.EmailDeliveryModeCode');\r\n const multiplePickupStoreSwitchName = 'Dynamics.AX.Application.RetailMultiplePickupDeliveryModeFeature';\r\n const { channelDeliveryOptionConfig, featureState } = input.data;\r\n const retailMultiplePickUpOptionEnabled = featureState?.result?.find(feature => feature.Name === multiplePickupStoreSwitchName)?.IsEnabled;\r\n\r\n const _getDeliveryLocation = (cartLine: CartLine): string => {\r\n const orgUnitLocations = get(input, 'data.orgUnitLocations.result');\r\n if (!cartLine.FulfillmentStoreId || !orgUnitLocations) {\r\n return '';\r\n }\r\n\r\n const locationMatch = (orgUnitLocations || []).find((location: OrgUnitLocation): boolean => {\r\n return location.OrgUnitNumber === cartLine.FulfillmentStoreId;\r\n });\r\n\r\n return locationMatch && locationMatch.OrgUnitName;\r\n };\r\n\r\n const _getProduct = (productId: number): SimpleProduct | undefined => {\r\n const products = get(input, 'data.products.result') || [];\r\n return products.find((_product: SimpleProduct) => {\r\n return productId === _product.RecordId;\r\n });\r\n };\r\n\r\n const _getLineItemComponent = (cartLine: CartLine): JSX.Element | undefined => {\r\n const product = cartLine.ProductId && _getProduct(cartLine.ProductId);\r\n const {\r\n id,\r\n typeName,\r\n context,\r\n config: { imageSettings, showShippingChargesForLineItems },\r\n resources: {\r\n quantityDisplayString,\r\n productDimensionTypeColor,\r\n productDimensionTypeSize,\r\n productDimensionTypeStyle,\r\n productDimensionTypeAmount,\r\n configString,\r\n inputQuantityAriaLabel,\r\n discountStringText,\r\n shippingCharges\r\n },\r\n context: {\r\n request: { gridSettings }\r\n }\r\n } = input;\r\n\r\n if (!product) {\r\n return;\r\n }\r\n\r\n return (\r\n \r\n );\r\n };\r\n\r\n const _getPickUpAtStoreComponents = (pickupDeliveryLocation: string): IPickUpAtStore => {\r\n const {\r\n resources: { pickUpAtStoreWithLocationText }\r\n } = input;\r\n\r\n return {\r\n PickUpAtStore: { className: 'ms-checkout__pick-up-at-store' },\r\n label: \r\n {pickUpAtStoreWithLocationText}\r\n ,\r\n location:
\r\n {pickupDeliveryLocation}\r\n
\r\n };\r\n };\r\n\r\n const _getEmailDeliveryComponents = (): IEmailDelivery => {\r\n const {\r\n resources: { emailDeliveryText }\r\n } = input;\r\n\r\n return {\r\n EmailDelivery: { className: 'ms-checkout__email-delivery' },\r\n label: \r\n {emailDeliveryText}\r\n \r\n };\r\n };\r\n\r\n const _getLineItemsComponents = (items: CartLine[]): ILineItem[] => {\r\n return items.map(cartLine => {\r\n const pickupDeliveryLocation = _getDeliveryLocation(cartLine);\r\n const isPickUp = _getCartPickDeliveryMode(cartLine);\r\n const isEmailDelivery = (cartLine.DeliveryMode && cartLine.DeliveryMode !== '') ? cartLine.DeliveryMode === emailDeliveryModeCode : false;\r\n return {\r\n LineId: cartLine.LineId || '',\r\n LineItem: { className: 'ms-checkout__line-item' },\r\n item: _getLineItemComponent(cartLine),\r\n pickUpAtStore: isPickUp ? _getPickUpAtStoreComponents(pickupDeliveryLocation) : undefined,\r\n emailDelivery: isEmailDelivery ? _getEmailDeliveryComponents() : undefined\r\n };\r\n });\r\n };\r\n\r\n const _getCartPickDeliveryMode = (cartLineItem: CartLine): boolean => {\r\n return (!StringExtensions.isNullOrWhitespace(cartLineItem.DeliveryMode)) ? (retailMultiplePickUpOptionEnabled ? cartLineItem.DeliveryMode === channelDeliveryOptionConfig?.result?.PickupDeliveryModeCodes?.find(deliveryMode => deliveryMode === cartLineItem.DeliveryMode) : (cartLineItem.DeliveryMode === pickupDeliveryModeCode)) : false;\r\n };\r\n\r\n const _getCartShipDeliveryMode = (cartLineItem: CartLine): boolean => {\r\n return (!StringExtensions.isNullOrWhitespace(cartLineItem.DeliveryMode)) ? (retailMultiplePickUpOptionEnabled ? cartLineItem.DeliveryMode !== channelDeliveryOptionConfig?.result?.PickupDeliveryModeCodes?.find(deliveryMode => deliveryMode === cartLineItem.DeliveryMode) : (cartLineItem.DeliveryMode !== pickupDeliveryModeCode)) : false;\r\n };\r\n\r\n const _getGroupTitleComponent = (count: number, type: deliveryType): string => {\r\n const {\r\n resources: {\r\n itemLabel,\r\n itemsLabel,\r\n inStorePickUpLabel,\r\n shippingCountCheckoutLineItem\r\n }\r\n } = input;\r\n\r\n let emailDeliveryModeDesc: string = '';\r\n\r\n input.data.deliveryOptions.result?.find(productDeliveryOptions => {\r\n emailDeliveryModeDesc = emailDeliveryModeDesc ? emailDeliveryModeDesc : productDeliveryOptions.DeliveryOptions?.find(deliveryOption => deliveryOption.Code === emailDeliveryModeCode)?.Description!;\r\n });\r\n\r\n const suffix = count > 1 ? itemsLabel : itemLabel;\r\n const title = type === 'ship' ? shippingCountCheckoutLineItem : (type === 'pickup' ? inStorePickUpLabel : `${emailDeliveryModeDesc} (${count} ${suffix})`);\r\n return title.replace('{count}', count.toString()).replace('{suffix}', suffix);\r\n };\r\n\r\n const _countItems = (items: CartLine[]): number => {\r\n return items.reduce((count, item) => {\r\n return count + (item.Quantity || 0);\r\n\r\n }, 0);\r\n };\r\n\r\n const _filterItemsByDiliveryType = (type: deliveryType): CartLine[] => {\r\n const cart = get(input, 'data.checkout.result.checkoutCart.cart');\r\n if (type === 'ship') {\r\n return cart.CartLines.filter((\r\n cartLine: CartLine) => ((cartLine.DeliveryMode && cartLine.DeliveryMode !== '') ? (_getCartShipDeliveryMode(cartLine) && cartLine.DeliveryMode !== emailDeliveryModeCode) : cartLine)\r\n );\r\n } else if (type === 'pickup') {\r\n return cart.CartLines.filter((cartLine: CartLine) => ((cartLine.DeliveryMode && cartLine.DeliveryMode !== '') ? (_getCartPickDeliveryMode(cartLine)) : null)\r\n );\r\n }\r\n return cart.CartLines.filter((cartLine: CartLine) => cartLine.DeliveryMode === emailDeliveryModeCode);\r\n\r\n };\r\n\r\n const _getLineItemsByDeliveryType = (type: deliveryType): ILineItemDeliveryGroup | undefined => {\r\n if ((pickupDeliveryModeCode === '' || pickupDeliveryModeCode === undefined) && (type === 'pickup' || type === 'email')) {\r\n return;\r\n }\r\n\r\n const items = _filterItemsByDiliveryType(type);\r\n\r\n if (items.length === 0) {\r\n return undefined;\r\n }\r\n\r\n const count = _countItems(items);\r\n const title = _getGroupTitleComponent(count, type);\r\n\r\n return {\r\n LineItemDeliveryGroup: { className: classnames('ms-checkout__line-items-delivery-group', type) },\r\n LineItemList: { className: 'ms-checkout__line-items-list' },\r\n heading:
\r\n {title}\r\n
,\r\n lineItems: _getLineItemsComponents(items)\r\n };\r\n };\r\n\r\n const _getLineItems = (): ILineItems | undefined => {\r\n const {\r\n context,\r\n config: { lineItemsHeading },\r\n data: { products },\r\n resources: { editCartText }\r\n } = input;\r\n\r\n const payLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.EditCart);\r\n const attribute = getTelemetryAttributes(telemetryContent!, payLoad);\r\n const cart = get(input, 'data.checkout.result.checkoutCart.cart');\r\n const groupClass = retailMultiplePickUpOptionEnabled ? ' multiple-pickup-enabled' : '';\r\n if (!cart || !cart.CartLines || cart.CartLines.length === 0 || !products) {\r\n return undefined;\r\n }\r\n\r\n return {\r\n LineItems: { className: `ms-checkout__line-items${groupClass}` },\r\n Header: { className: 'ms-checkout__line-items-header' },\r\n heading: lineItemsHeading && lineItemsHeading.text && (\r\n \r\n ),\r\n editLink: (\r\n \r\n {editCartText}\r\n \r\n ),\r\n itemsForPickup: _getLineItemsByDeliveryType('pickup'),\r\n itemsForShip: _getLineItemsByDeliveryType('ship'),\r\n itemsForEmail: _getLineItemsByDeliveryType('email'),\r\n itemsGroupWithMulitplePickupMode: retailMultiplePickUpOptionEnabled ? _getLineItemsByDeliveryTypeWithMulitplePickupMode() : undefined\r\n };\r\n };\r\n\r\n const handleLineItemHeadingChange = (event: Msdyn365.ContentEditableEvent) => {\r\n const {\r\n config: { lineItemsHeading }\r\n } = input;\r\n lineItemsHeading!.text = event.target.value;\r\n };\r\n\r\n const _getGroupTitleComponentWithMultiplePickUp = (count: number, type: deliveryType, deliveryMode?: string, fulFillmentStoreId?: string): string => {\r\n const {\r\n resources: {\r\n itemLabel,\r\n itemsLabel\r\n }\r\n } = input;\r\n\r\n let emailDeliveryModeDesc: string = '';\r\n let pickupDeliveryModeDesc: string = '';\r\n\r\n input.data.deliveryOptions.result?.find(productDeliveryOptions => {\r\n emailDeliveryModeDesc = emailDeliveryModeDesc ? emailDeliveryModeDesc : productDeliveryOptions.DeliveryOptions?.find(deliveryOption => deliveryOption.Code === emailDeliveryModeCode)?.Description!;\r\n });\r\n\r\n input.data.deliveryOptions.result?.find(productDeliveryOptions => {\r\n pickupDeliveryModeDesc = pickupDeliveryModeDesc ? pickupDeliveryModeDesc : productDeliveryOptions.DeliveryOptions?.find(deliveryOption => deliveryOption.Code === deliveryMode)?.Description!;\r\n });\r\n\r\n const pickupTitle: string = `${pickupDeliveryModeDesc}, ${fulFillmentStoreId}`;\r\n const suffix = count > 1 ? itemsLabel : itemLabel;\r\n const title = type === 'ship' ? `(${count} ${suffix})` : (type === 'pickup' ? `${pickupTitle} (${count} ${suffix})` : `${emailDeliveryModeDesc} (${count} ${suffix})`);\r\n return title.replace('{count}', count.toString()).replace('{suffix}', suffix);\r\n };\r\n\r\n const _filterItemsByMultiplePickupMode = (): CartLine[][] => {\r\n const cart = get(input, 'data.checkout.result.checkoutCart.cart');\r\n const getGroupByStorePickup = (items: CartLine[]) => groupBy(items, item => item.FulfillmentStoreId);\r\n const getGroupByDelivery = (items: CartLine[]) => groupBy(items, item => (item.DeliveryMode));\r\n const groupDelivery = getGroupByDelivery(cart.CartLines);\r\n const cartLinesGroup: CartLine[] = [];\r\n const cartLinesGrp: CartLine[][] = [];\r\n\r\n // 1) Group by store and pick up mode\r\n Object.entries(groupDelivery).forEach(([deliveryMode, groupByDeliveryType]) => {\r\n // @ts-expect-error\r\n groupDelivery[deliveryMode] = getGroupByStorePickup(groupByDeliveryType);\r\n cartLinesGroup.push(getGroupByStorePickup(groupByDeliveryType));\r\n });\r\n\r\n Object.keys(cartLinesGroup).forEach(key => {\r\n const cartLines = cartLinesGroup[key];\r\n Object.keys(cartLines).forEach(index => {\r\n const cartLine = cartLines[index];\r\n cartLinesGrp.push(cartLine);\r\n });\r\n });\r\n\r\n return cartLinesGrp;\r\n };\r\n\r\n const _getLineItemsByDeliveryTypeWithMulitplePickupMode = (): ILineItemDeliveryGroup[] | undefined => {\r\n if (pickupDeliveryModeCode === '' || pickupDeliveryModeCode === undefined) {\r\n return;\r\n }\r\n\r\n const {\r\n resources: {\r\n multiplePickUpLabel,\r\n shippingLable\r\n }\r\n } = input;\r\n\r\n const items = _filterItemsByMultiplePickupMode();\r\n\r\n if (items.length === 0) {\r\n return undefined;\r\n }\r\n\r\n const lineItemDeliveryGroup: ILineItemDeliveryGroup[] = [];\r\n items.map(item => {\r\n const count = _countItems(item);\r\n const cartLine = item[0];\r\n const pickupDeliveryLocation = _getDeliveryLocation(cartLine);\r\n const type: deliveryType = cartLine.FulfillmentStoreId && cartLine.DeliveryMode ? 'pickup' : (cartLine.FulfillmentStoreId === '' && cartLine.DeliveryMode === emailDeliveryModeCode ? 'email' : 'ship');\r\n const title = _getGroupTitleComponentWithMultiplePickUp(count, type, cartLine.DeliveryMode, pickupDeliveryLocation);\r\n const groupTitle = type === 'pickup' ? multiplePickUpLabel : (type === 'ship' ? shippingLable : 'email');\r\n const iconClass = `ms-checkout__line-items-group-title-multiple-pickup-${type}icon`;\r\n lineItemDeliveryGroup.push({\r\n LineItemDeliveryGroup: { className: classnames('ms-checkout__line-items-delivery-group multiple-pickup', type) },\r\n LineItemList: { className: 'ms-checkout__line-items-list' },\r\n lineItemWraperIcon:
,\r\n lineItemWraper:
\r\n {groupTitle}\r\n
,\r\n heading:
\r\n {title}\r\n
,\r\n lineItems: _getLineItemsComponents(item)\r\n });\r\n });\r\n\r\n return lineItemDeliveryGroup;\r\n };\r\n\r\n return _getLineItems();\r\n};\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport { IOrderSummaryLines, OrderSummary } from '@msdyn365-commerce-modules/order-summary-utilities';\r\nimport { INodeProps } from '@msdyn365-commerce-modules/utilities';\r\nimport get from 'lodash/get';\r\nimport * as React from 'react';\r\n\r\nimport { IObrienCheckoutData } from '../obrien-checkout.data';\r\nimport { IObrienCheckoutProps } from '../obrien-checkout.props.autogenerated';\r\n\r\nexport interface IOrderSummary {\r\n orderSummaryProps: INodeProps;\r\n heading?: React.ReactNode;\r\n lines?: IOrderSummaryLines;\r\n}\r\nexport const getOrderSummary = (input: IObrienCheckoutProps): IOrderSummary => {\r\n const {\r\n config: { orderSummaryHeading },\r\n data: { checkout },\r\n resources: {\r\n subTotalLabel,\r\n shippingLabel,\r\n taxLabel,\r\n orderTotalLabel,\r\n loyaltyLabel,\r\n giftcardLabel,\r\n totalDiscountsLabel,\r\n freeText,\r\n toBeCalculatedText,\r\n otherCharges\r\n },\r\n context,\r\n typeName,\r\n id,\r\n telemetry\r\n } = input;\r\n\r\n const checkoutState = get(checkout, 'result');\r\n const cart = get(checkout, 'result.checkoutCart.cart');\r\n const showLineItems = cart.CartLines && cart.CartLines.length > 0;\r\n const channelConfiguration = context.request.channel!;\r\n const multiplePickupStoreSwitchName = 'Dynamics.AX.Application.RetailMultiplePickupDeliveryModeFeature';\r\n const { channelDeliveryOptionConfig, featureState } = input.data;\r\n const retailMultiplePickUpOptionEnabled = featureState?.result?.find(feature => feature.Name === multiplePickupStoreSwitchName)?.IsEnabled;\r\n\r\n const handleOrderSummaryHeadingChange = (event: Msdyn365.ContentEditableEvent) => {\r\n const {\r\n config: { orderSummaryHeading }\r\n } = input;\r\n orderSummaryHeading!.text = event.target.value;\r\n };\r\n\r\n return {\r\n orderSummaryProps: { className: 'ms-checkout-guest-profile__selected-item' },\r\n heading: orderSummaryHeading && orderSummaryHeading.text && (\r\n \r\n ),\r\n lines: showLineItems ? OrderSummary({\r\n checkoutState,\r\n cart,\r\n subTotalLabel,\r\n shippingLabel,\r\n taxLabel,\r\n orderTotalLabel,\r\n loyaltyLabel,\r\n giftcardLabel,\r\n totalDiscountsLabel,\r\n freeText,\r\n toBeCalculatedText,\r\n context,\r\n typeName,\r\n id,\r\n channelConfiguration,\r\n telemetry,\r\n otherChargeLabel: otherCharges,\r\n retailMultiplePickUpOptionEnabled,\r\n channelDeliveryOptionConfig: channelDeliveryOptionConfig?.result\r\n }) : undefined\r\n };\r\n\r\n};\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { Heading as HeadingType } from '@msdyn365-commerce-modules/data-types';\r\nimport { Button, getPayloadObject, getTelemetryAttributes, IPayLoad, ITelemetryContent, TelemetryConstant } from '@msdyn365-commerce-modules/utilities';\r\nimport classname from 'classnames';\r\nimport * as React from 'react';\r\nimport ReactDOM from 'react-dom';\r\n\r\nexport interface ICheckoutGuidedCardProps {\r\n step: number;\r\n title?: HeadingType;\r\n disabled?: boolean; // Module is not available\r\n isActive?: boolean; // Step === currentStep\r\n isVisted?: boolean; // Step < currentStep\r\n isExpanded?: boolean;\r\n isReady?: boolean;\r\n isPending?: boolean;\r\n isUpdating?: boolean;\r\n isSubmitting?: boolean;\r\n isCancelAllowed?: boolean;\r\n isMobile?: boolean;\r\n hasInitialized?: boolean;\r\n hasControlGroup?: boolean;\r\n children: React.ReactNode;\r\n resource: {\r\n checkoutStepTitleFormat: string;\r\n saveBtnLabel: string;\r\n changeBtnLabel: string;\r\n cancelBtnLabel: string;\r\n saveAndContinueBtnLabel: string;\r\n };\r\n telemetryContent?: ITelemetryContent;\r\n onEdit?(): void;\r\n onCancel?(): void;\r\n onSubmit?(): void;\r\n onNext(): void;\r\n}\r\n\r\n/**\r\n *\r\n * CheckoutGuidedCard component.\r\n * @extends {React.Component}\r\n */\r\nclass CheckoutGuidedCard extends React.PureComponent {\r\n private readonly editButtonRef: React.RefObject = React.createRef();\r\n\r\n private readonly formCardRef: React.RefObject = React.createRef();\r\n\r\n private readonly payLoad: IPayLoad;\r\n\r\n constructor(props: ICheckoutGuidedCardProps) {\r\n super(props);\r\n this.payLoad = getPayloadObject('click', props.telemetryContent!, '');\r\n }\r\n\r\n public componentDidUpdate(prevProps: ICheckoutGuidedCardProps): void {\r\n /**\r\n * Move to next step when current step is ready.\r\n */\r\n const { isActive, isReady, onNext, isVisted, onEdit } = this.props;\r\n\r\n // Move to next step after completing the current step\r\n if (isActive && isReady) {\r\n onNext();\r\n }\r\n\r\n // Set the focus to Edit button once edit button appear\r\n // (It happens when current step switch to isReady status)\r\n const prevCanEdit = prevProps.isReady && prevProps.isVisted && !!prevProps.onEdit;\r\n const canEdit = isReady && isVisted && !!onEdit;\r\n if (!prevCanEdit && canEdit) {\r\n this.focusOnEditButton();\r\n this.scrollToTitle();\r\n }\r\n\r\n // Set the focus to the first focusable element\r\n // (It happens when current step switch to isUpdating status)\r\n if (prevProps.isReady && !isReady) {\r\n this.focusOnFirstFocusableElement();\r\n }\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n const {\r\n title,\r\n disabled,\r\n isExpanded,\r\n isActive,\r\n isVisted,\r\n children,\r\n isReady,\r\n isPending,\r\n isUpdating,\r\n hasInitialized,\r\n hasControlGroup,\r\n onEdit,\r\n resource\r\n } = this.props;\r\n const { changeBtnLabel } = resource;\r\n\r\n this.payLoad.contentAction.etext = TelemetryConstant.CheckoutChange;\r\n const changeBtnAttributes = getTelemetryAttributes(this.props.telemetryContent!, this.payLoad);\r\n const canEdit = hasControlGroup && isReady && isVisted && onEdit;\r\n\r\n return (\r\n \r\n
\r\n {this.getTitle()}\r\n\r\n {canEdit && (\r\n \r\n {changeBtnLabel}\r\n \r\n )}\r\n
\r\n\r\n \r\n
\r\n {children}\r\n
\r\n\r\n {this.renderFooder()}\r\n
\r\n \r\n );\r\n }\r\n\r\n private readonly renderFooder = (): JSX.Element | null => {\r\n const { isVisted, isReady, isSubmitting, isCancelAllowed, hasControlGroup, onCancel, onSubmit, resource } = this.props;\r\n const { saveBtnLabel, cancelBtnLabel, saveAndContinueBtnLabel } = resource;\r\n\r\n const canSubmit = !isReady && onSubmit;\r\n const canCancel = !isReady && isVisted && isCancelAllowed && onCancel;\r\n\r\n if (!hasControlGroup || (!canSubmit && !canCancel)) {\r\n return null;\r\n }\r\n\r\n this.payLoad.contentAction.etext = isVisted ? TelemetryConstant.Save : TelemetryConstant.SaveContinue;\r\n const saveBtnAttributes = getTelemetryAttributes(this.props.telemetryContent!, this.payLoad);\r\n this.payLoad.contentAction.etext = TelemetryConstant.Cancel;\r\n const cancelBtnAttributes = getTelemetryAttributes(this.props.telemetryContent!, this.payLoad);\r\n\r\n return (\r\n
\r\n {canSubmit && (\r\n \r\n {isVisted && isCancelAllowed ? saveBtnLabel : saveAndContinueBtnLabel}\r\n \r\n )}\r\n {canCancel && (\r\n \r\n {cancelBtnLabel}\r\n \r\n )}\r\n
\r\n );\r\n };\r\n\r\n private readonly focusOnFirstFocusableElement = (): void => {\r\n const node = ReactDOM.findDOMNode(this) as HTMLElement;\r\n const focussableElements = `\r\n a:not([disabled]),\r\n button:not([disabled]),\r\n input[type=submit]:not([disabled]),\r\n input[type=checkbox]:not([disabled]),\r\n input[type=text]:not([disabled]),\r\n input[type=radio]:not([disabled]),\r\n input[type=password]:not([disabled]),\r\n select:not([disabled]),\r\n textarea:not([disabled]),\r\n [tabindex]:not([disabled]):not([tabindex=\"-1\"])\r\n `;\r\n\r\n const child = node && node.querySelector && (node.querySelector(focussableElements) as HTMLElement);\r\n child && child.focus && child.focus();\r\n };\r\n\r\n private readonly focusOnEditButton = (): void => {\r\n // Focus on edit button\r\n const editButton =\r\n this.editButtonRef &&\r\n this.editButtonRef.current &&\r\n this.editButtonRef.current.focus &&\r\n (this.editButtonRef.current as HTMLElement);\r\n editButton && editButton.focus();\r\n };\r\n\r\n private readonly scrollToTitle = (): void => {\r\n // Scroll window to the title of the step that was just completed only in mobile viewport\r\n const formCard = this.props.isMobile && this.formCardRef && this.formCardRef.current && (this.formCardRef.current as HTMLElement);\r\n formCard && formCard.scrollIntoView();\r\n };\r\n\r\n private readonly getTitle = (): JSX.Element => {\r\n const { step, title } = this.props;\r\n const { headingTag: Tag = 'h2', text = '' } = title || {};\r\n return (\r\n \r\n \r\n {step + 1}\r\n .\r\n {' '}\r\n \r\n {text && \r\n {text}\r\n }\r\n \r\n );\r\n };\r\n}\r\n\r\nexport default CheckoutGuidedCard;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { IModuleStateManager } from '@msdyn365-commerce-modules/checkout-utilities';\r\nimport { Heading } from '@msdyn365-commerce-modules/data-types';\r\nimport { ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\r\nimport get from 'lodash/get';\r\nimport { observer } from 'mobx-react';\r\nimport * as React from 'react';\r\n\r\nimport GuidedCard from './guided-card';\r\n\r\nexport interface ICheckoutGuidedFormProps {\r\n items: React.ReactNode[];\r\n moduleState: IModuleStateManager;\r\n disableGuidedCheckoutFlow?: boolean;\r\n isMobile?: boolean;\r\n isEditor?: boolean;\r\n resource: {\r\n checkoutStepTitleFormat: string;\r\n saveBtnLabel: string;\r\n changeBtnLabel: string;\r\n cancelBtnLabel: string;\r\n saveAndContinueBtnLabel: string;\r\n };\r\n telemetryContent?: ITelemetryContent;\r\n}\r\n\r\ninterface ICheckoutGuidedFormState {\r\n currentStep: number;\r\n}\r\n\r\n/**\r\n *\r\n * CheckoutGuidedForm component.\r\n * @extends {React.Component}\r\n */\r\n@observer\r\nclass CheckoutGuidedForm extends React.PureComponent {\r\n public state: ICheckoutGuidedFormState = {\r\n currentStep: 0\r\n };\r\n\r\n public componentDidMount(): void {\r\n /**\r\n * Append child modules.\r\n */\r\n const childIds = this.props.items.map((item: React.ReactNode) => get(item, 'props.id'));\r\n this.props.moduleState.init({ childIds });\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n const { moduleState, items, resource } = this.props;\r\n if (!items || !moduleState) {\r\n return null;\r\n }\r\n\r\n return (\r\n
\r\n {items.map((item: React.ReactNode) => {\r\n const childId = this.getId(item);\r\n const step = this.getStep(childId);\r\n const title = this.getHeading(item);\r\n const state = this.props.moduleState.getModule(childId);\r\n const { isReady, isPending, isUpdating, isDisabled, isCancelAllowed, onEdit, onCancel, onSubmit, hasModuleState, hasInitialized } =\r\n state || ({} as IModuleStateManager);\r\n return (\r\n\r\n \r\n {React.cloneElement(item as React.ReactElement, { enableControl: true })}\r\n \r\n );\r\n })}\r\n
\r\n );\r\n }\r\n\r\n private readonly getEnabledModules = (): string[] => {\r\n const {\r\n moduleState: { childIds, getModule }\r\n } = this.props;\r\n return childIds.filter((childId: string) => {\r\n const state = getModule(childId);\r\n return !!state && !state.isDisabled;\r\n });\r\n };\r\n\r\n private readonly getStep = (id: string): number => {\r\n return this.getEnabledModules().indexOf(id);\r\n };\r\n\r\n private readonly getId = (item: React.ReactNode): string => {\r\n return get(item, 'props.id') || '';\r\n };\r\n\r\n private readonly getHeading = (item: React.ReactNode): Heading => {\r\n return get(item, 'props.config.heading') || '';\r\n };\r\n\r\n private readonly isExpanded = (step: number): boolean => {\r\n if (this.props.isEditor) {\r\n // Editorial mode: Expand all the drawers\r\n return true;\r\n }\r\n return step > -1 && step <= this.state.currentStep;\r\n };\r\n\r\n private readonly isActive = (step: number): boolean => {\r\n return step === this.state.currentStep;\r\n };\r\n\r\n private readonly isVisted = (step: number): boolean => {\r\n return step > -1 && step < this.state.currentStep;\r\n };\r\n\r\n private readonly onNext = (): void => {\r\n this.setState({\r\n currentStep: this.state.currentStep + 1\r\n });\r\n };\r\n}\r\n\r\nexport default CheckoutGuidedForm;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { TelemetryEvent } from '@msdyn365-commerce/core';\r\nimport { Button, getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport React, { useState } from 'react';\r\n\r\ninterface ICheckoutPlaceOrderButtonProps {\r\n canPlaceOrder: boolean;\r\n checkoutBtnText: string;\r\n telemetryContent?: ITelemetryContent;\r\n shouldEnableSinglePaymentAuthorizationCheckout?: boolean;\r\n isPlaceOrderLoading?: boolean;\r\n placeOrder(): Promise;\r\n}\r\n\r\nconst buttonsStates: React.Dispatch>[] = [];\r\n\r\n/**\r\n * On place order function.\r\n * @param isBusy -Check is busy.\r\n * @param canPlaceOrder -Check can place order.\r\n * @param placeOrder -Place order function.\r\n * @returns Set state of button.\r\n */\r\nconst onPlaceOrderHandler = (isBusy: boolean, canPlaceOrder: boolean, placeOrder: () => Promise) => async () => {\r\n if (isBusy || !canPlaceOrder) {\r\n return;\r\n }\r\n buttonsStates.map(buttonSetState => {\r\n buttonSetState(true);\r\n return true;\r\n });\r\n await placeOrder();\r\n buttonsStates.map(buttonSetState => {\r\n buttonSetState(false);\r\n return true;\r\n });\r\n};\r\n\r\nconst CheckoutPlaceOrderButton: React.FC = ({\r\n checkoutBtnText, canPlaceOrder, placeOrder, telemetryContent, shouldEnableSinglePaymentAuthorizationCheckout, isPlaceOrderLoading }) => {\r\n const [isBusy, setIsBusy] = useState(false);\r\n buttonsStates.push(setIsBusy);\r\n const payload = getPayloadObject(TelemetryEvent.Purchase, telemetryContent!, checkoutBtnText, '');\r\n const attributes = getTelemetryAttributes(telemetryContent!, payload);\r\n\r\n if (shouldEnableSinglePaymentAuthorizationCheckout) {\r\n return (\r\n \r\n {checkoutBtnText}\r\n \r\n );\r\n }\r\n\r\n return (\r\n \r\n {checkoutBtnText}\r\n \r\n );\r\n};\r\n\r\nexport default CheckoutPlaceOrderButton;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { IActionContext } from '@msdyn365-commerce/core';\r\nimport { getCheckoutState } from '@msdyn365-commerce/global-state';\r\nimport { checkoutAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/CartsDataActions.g';\r\nimport { getTenderTypesAsync, resolveCardTypesAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/StoreOperationsDataActions.g';\r\nimport {\r\n Address,\r\n CardPaymentAcceptResult,\r\n CardType,\r\n CartTenderLine,\r\n RetailOperation,\r\n SalesOrder,\r\n TenderType,\r\n TokenizedPaymentCard\r\n} from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\r\n\r\nexport const OPERATIONS = {\r\n PayCard: 201,\r\n PayGiftCertificate: 214,\r\n PayLoyalty: 207,\r\n PayCustomerAccount: 202\r\n};\r\n\r\nconst getCardTypeId = async (ctx: IActionContext, cardPrefix = ''): Promise => {\r\n console.log(\"MYDEBUG-AC-AC.ts getCardTypeId() called\");\r\n try {\r\n const response = await resolveCardTypesAsync({ callerContext: ctx }, cardPrefix, CardType.Unknown);\r\n if (response && response.length > 0) {\r\n return response[0].TypeId;\r\n }\r\n } catch (error) {\r\n ctx.telemetry.error('Call to resolveCardTypesAsync failed.', error);\r\n }\r\n return undefined;\r\n};\r\n\r\nconst findTenderIdTypeByOperationId = (tenderTypes: TenderType[], operationId: RetailOperation): string | undefined => {\r\n console.log(\"MYDEBUG-AC-AC.ts findTenderIdTypeByOperationId() called\");\r\n const matchedTenderType = tenderTypes.find(tenderType => tenderType.OperationId === operationId);\r\n if (matchedTenderType) {\r\n return matchedTenderType.TenderTypeId;\r\n }\r\n return;\r\n};\r\n\r\nconst roundNumber = (value: number) => Number(value.toFixed(2));\r\n\r\nasync function getLoyaltyTenderLine(ctx: IActionContext, LoyaltyCardId: string, Amount = 0, Currency = 'USD'): Promise {\r\n console.log(\"MYDEBUG-AC-AC.ts getLoyaltyTenderLine() called\");\r\n const tenderTypes = await getTenderTypesAsync({ callerContext: ctx, queryResultSettings: {} }).catch(error => {\r\n throw error;\r\n });\r\n\r\n if (!tenderTypes) {\r\n throw new Error('Fail to get gift card tender line');\r\n }\r\n\r\n const TenderTypeId = findTenderIdTypeByOperationId(tenderTypes, OPERATIONS.PayLoyalty);\r\n return {\r\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\r\n // @ts-expect-error\r\n '@odata.type': '#Microsoft.Dynamics.Commerce.Runtime.DataModel.CartTenderLine',\r\n\r\n 'Amount@odata.type': '#Decimal',\r\n Currency,\r\n TenderTypeId,\r\n Amount,\r\n LoyaltyCardId\r\n };\r\n}\r\n\r\nasync function getGiftCardTenderLine(\r\n ctx: IActionContext,\r\n GiftCardId = '',\r\n Amount = 0,\r\n Currency = 'USD',\r\n tenderTypeId?: string,\r\n giftCardPin?: string,\r\n giftCardExpirationYear?: number,\r\n giftCardExpirationMonth?: number\r\n): Promise {\r\n console.log(\"MYDEBUG-AC-AC.ts getGiftCardTenderLine() called\");\r\n let TenderTypeId = tenderTypeId;\r\n\r\n if (!TenderTypeId) {\r\n const tenderTypes = await getTenderTypesAsync({ callerContext: ctx, queryResultSettings: {} }).catch(error => {\r\n throw error;\r\n });\r\n if (!tenderTypes) {\r\n throw new Error('Fail to get gift card tender line');\r\n }\r\n TenderTypeId = findTenderIdTypeByOperationId(tenderTypes, OPERATIONS.PayGiftCertificate);\r\n }\r\n\r\n const GiftCardPin = giftCardPin;\r\n const GiftCardExpirationYear = giftCardExpirationYear;\r\n const GiftCardExpirationMonth = giftCardExpirationMonth;\r\n return {\r\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\r\n // @ts-expect-error\r\n '@odata.type': '#Microsoft.Dynamics.Commerce.Runtime.DataModel.CartTenderLine',\r\n 'Amount@odata.type': '#Decimal',\r\n Currency,\r\n TenderTypeId,\r\n Amount,\r\n GiftCardId,\r\n GiftCardPin,\r\n GiftCardExpirationYear,\r\n GiftCardExpirationMonth\r\n };\r\n}\r\n\r\nasync function getCreditCardTenderLine(\r\n ctx: IActionContext,\r\n tokenizedPaymentCard: TokenizedPaymentCard,\r\n cardPrefix = '',\r\n Amount = 0,\r\n Currency = 'USD',\r\n billingAddress?: Address\r\n): Promise {\r\n console.log(\"MYDEBUG-AC-AC.ts getCreditCardTenderLine() called\");\r\n const tenderTypes = await getTenderTypesAsync({ callerContext: ctx, queryResultSettings: {} }).catch(error => {\r\n throw error;\r\n });\r\n\r\n let cartTypeId = tokenizedPaymentCard.CardTypeId;\r\n\r\n if (!cartTypeId) {\r\n cartTypeId = await getCardTypeId(ctx, cardPrefix);\r\n }\r\n\r\n if (!tenderTypes) {\r\n throw new Error('Fail to get card tender type');\r\n }\r\n\r\n if (!cartTypeId) {\r\n throw new Error('Fail to get card type id');\r\n }\r\n\r\n const TenderTypeId = tokenizedPaymentCard.TenderType ?? findTenderIdTypeByOperationId(tenderTypes, OPERATIONS.PayCard);\r\n const cardTenderLine: CartTenderLine = {\r\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\r\n // @ts-expect-error\r\n '@odata.type': '#Microsoft.Dynamics.Commerce.Runtime.DataModel.CartTenderLine',\r\n 'Amount@odata.type': '#Decimal',\r\n Currency,\r\n Amount,\r\n TenderTypeId,\r\n CardTypeId: cartTypeId\r\n };\r\n cardTenderLine.TokenizedPaymentCard = {\r\n ...tokenizedPaymentCard,\r\n CardTypeId: cartTypeId,\r\n\r\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\r\n // @ts-expect-error\r\n '@odata.type': '#Microsoft.Dynamics.Commerce.Runtime.DataModel.TokenizedPaymentCard',\r\n House: tokenizedPaymentCard.House || 'N/A',\r\n ...(tokenizedPaymentCard.CardTokenInfo && {\r\n CardTokenInfo: {\r\n ...tokenizedPaymentCard.CardTokenInfo,\r\n '@odata.type': '#Microsoft.Dynamics.Commerce.Runtime.DataModel.CardTokenInfo'\r\n }\r\n }),\r\n ...(billingAddress && {\r\n Phone: billingAddress.Phone,\r\n Country: billingAddress.ThreeLetterISORegionName,\r\n Address1: billingAddress.Street,\r\n City: billingAddress.City,\r\n State: billingAddress.State,\r\n Zip: billingAddress.ZipCode\r\n })\r\n };\r\n\r\n return cardTenderLine;\r\n}\r\n\r\n/**\r\n * Get credit card tender line.\r\n * @param context - Action context.\r\n * @param amount - Due amount for credit card.\r\n * @param currency - Currency.\r\n * @param cardPaymentAcceptResult - CardPaymentAcceptResult.\r\n * @returns - The credit card tender line.\r\n */\r\nasync function getCreditCardTenderLineForSinglePaymentAuth(\r\n context: IActionContext,\r\n amount = 0,\r\n currency = 'USD',\r\n cardPaymentAcceptResult?: CardPaymentAcceptResult\r\n): Promise {\r\n console.log(\"MYDEBUG-AC-AC.ts getCreditCardTenderLineForSinglePaymentAuth() called\");\r\n const tenderTypes = await getTenderTypesAsync({ callerContext: context, queryResultSettings: {} }).catch(error => {\r\n throw error;\r\n });\r\n\r\n const tenderTypeId = findTenderIdTypeByOperationId(tenderTypes, OPERATIONS.PayCard);\r\n\r\n const cardTenderLine: CartTenderLine = {\r\n // @ts-expect-error -- existing data.\r\n '@odata.type': '#Microsoft.Dynamics.Commerce.Runtime.DataModel.CartTenderLine',\r\n 'Amount@odata.type': '#Decimal',\r\n Currency: currency,\r\n Amount: amount,\r\n TenderTypeId: tenderTypeId,\r\n CardPaymentAcceptResult: cardPaymentAcceptResult\r\n };\r\n\r\n return cardTenderLine;\r\n}\r\n\r\nasync function createCustomerAccountTenderLine(ctx: IActionContext, Amount: number, Currency = 'USD'): Promise {\r\n console.log(\"MYDEBUG-AC-AC.ts createCustomerAccountTenderLine() called\");\r\n const CustomerId = null;\r\n if (!ctx.requestContext.user.isAuthenticated) {\r\n ctx.telemetry.error('A customer id is required to pay with customer account');\r\n }\r\n\r\n const tenderTypes = await getTenderTypesAsync({ callerContext: ctx, queryResultSettings: {} }).catch(error => {\r\n throw error;\r\n });\r\n\r\n if (!tenderTypes) {\r\n ctx.telemetry.error('No tender types found for this channel');\r\n }\r\n\r\n const TenderTypeId = findTenderIdTypeByOperationId(tenderTypes, OPERATIONS.PayCustomerAccount);\r\n if (!TenderTypeId) {\r\n ctx.telemetry.error('No customer account tender type');\r\n }\r\n return {\r\n '@odata.type': '#Microsoft.Dynamics.Commerce.Runtime.DataModel.CartTenderLine',\r\n 'Amount@odata.type': '#Decimal',\r\n Currency,\r\n TenderTypeId,\r\n Amount,\r\n\r\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\r\n // @ts-expect-error\r\n CustomerId\r\n };\r\n}\r\n\r\nexport default async (\r\n ctx: IActionContext,\r\n updatedCartVersion?: number,\r\n isPaymentVerificationRedirection?: boolean\r\n): Promise => {\r\n console.log(\"MYDEBUG-AC-AC.ts export called\");\r\n const checkoutState = await getCheckoutState(ctx).catch(error => {\r\n throw error;\r\n });\r\n\r\n const cartState = checkoutState.checkoutCart;\r\n\r\n const channelConfiguration = ctx.requestContext.channel;\r\n\r\n if (!cartState || Object.keys(cartState).length === 0 || !channelConfiguration) {\r\n throw new Error('Fail to placeOrder');\r\n }\r\n\r\n const {\r\n giftCardExtends,\r\n tokenizedPaymentCard,\r\n cardPrefix,\r\n guestCheckoutEmail,\r\n billingAddress,\r\n loyaltyAmount,\r\n cardPaymentAcceptResult,\r\n shouldEnableSinglePaymentAuthorizationCheckout\r\n } = checkoutState;\r\n const { Currency } = channelConfiguration;\r\n\r\n let amountDue = cartState.cart.AmountDue || 0;\r\n let cartTenderLines;\r\n const getTenderLinePromises = [];\r\n const loyaltyCardNumber = cartState.cart.LoyaltyCardId;\r\n\r\n // Pay by loyalty first\r\n if (loyaltyAmount && loyaltyCardNumber) {\r\n const chargedAmount = roundNumber(Math.min(loyaltyAmount, amountDue));\r\n const loyaltyTenderLinePromise = getLoyaltyTenderLine(ctx, loyaltyCardNumber, chargedAmount, Currency);\r\n getTenderLinePromises.push(loyaltyTenderLinePromise);\r\n amountDue = roundNumber(amountDue - chargedAmount);\r\n }\r\n\r\n // Then by gift card\r\n if (giftCardExtends && giftCardExtends.length > 0) {\r\n giftCardExtends.some(giftCardExtend => {\r\n if (giftCardExtend.Balance && amountDue > 0) {\r\n const chargedAmount = roundNumber(Math.min(giftCardExtend.Balance, amountDue));\r\n const tenderTypeId = giftCardExtend.TenderTypeId;\r\n const giftCardPin = giftCardExtend.Pin;\r\n const giftCardExpirationYear = giftCardExtend.ExpirationDate\r\n ? Number.parseInt(giftCardExtend.ExpirationDate?.split('/')[1], 10)\r\n : undefined;\r\n const giftCardExpirationMonth = giftCardExtend.ExpirationDate\r\n ? Number.parseInt(giftCardExtend.ExpirationDate?.split('/')[0], 10)\r\n : undefined;\r\n const creditCardTenderLinePromise = getGiftCardTenderLine(\r\n ctx,\r\n giftCardExtend.Id,\r\n chargedAmount,\r\n Currency,\r\n tenderTypeId,\r\n giftCardPin,\r\n giftCardExpirationYear,\r\n giftCardExpirationMonth\r\n );\r\n getTenderLinePromises.push(creditCardTenderLinePromise);\r\n amountDue = roundNumber(amountDue - chargedAmount);\r\n }\r\n return amountDue === 0;\r\n });\r\n }\r\n\r\n // Then by customer account\r\n if (checkoutState.customerAccountAmount > 0) {\r\n const chargedAmount = roundNumber(Math.min(checkoutState.customerAccountAmount, amountDue));\r\n const customerAccountTenderLinePromise = createCustomerAccountTenderLine(ctx, chargedAmount, Currency);\r\n getTenderLinePromises.push(customerAccountTenderLinePromise);\r\n amountDue = roundNumber(amountDue - chargedAmount);\r\n }\r\n\r\n // Pay the rest by credit card\r\n if (amountDue > 0) {\r\n let creditCardTenderLinePromise: Promise;\r\n\r\n if (shouldEnableSinglePaymentAuthorizationCheckout) {\r\n creditCardTenderLinePromise = getCreditCardTenderLineForSinglePaymentAuth(ctx, amountDue, Currency, cardPaymentAcceptResult);\r\n } else {\r\n if (!tokenizedPaymentCard) {\r\n throw new Error('Fail to placeOrder: no token found');\r\n }\r\n creditCardTenderLinePromise = getCreditCardTenderLine(\r\n ctx,\r\n tokenizedPaymentCard,\r\n cardPrefix,\r\n amountDue,\r\n Currency,\r\n billingAddress\r\n );\r\n }\r\n\r\n getTenderLinePromises.push(creditCardTenderLinePromise);\r\n }\r\n\r\n if (getTenderLinePromises.length > 0) {\r\n // When payment methods is required\r\n cartTenderLines = await Promise.all(getTenderLinePromises).catch(error => {\r\n throw error;\r\n });\r\n\r\n if (!cartTenderLines || cartTenderLines.length === 0) {\r\n throw new Error('Fail to placeOrder: fail to get cart tender lines');\r\n }\r\n }\r\n\r\n const cartVersion = updatedCartVersion || cartState.cart.Version;\r\n\r\n // Proceed checkout\r\n const salesOrder = await checkoutAsync(\r\n { callerContext: ctx, bypassCache: 'get' },\r\n cartState.cart.Id,\r\n guestCheckoutEmail,\r\n undefined,\r\n undefined,\r\n cartTenderLines || null,\r\n cartVersion\r\n ).catch(async error => {\r\n if (checkoutState.shouldEnableSinglePaymentAuthorizationCheckout) {\r\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- unknown type.\r\n if (error.data?.AdditionalContext) {\r\n await checkoutState.updateShouldCollapsePaymentSection({ newShouldCollapsePaymentSection: true });\r\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- unknown type.\r\n await checkoutState.updateRedirectAdditionalContext({\r\n newRedirectAdditionalContext: error?.data?.AdditionalContext as string\r\n });\r\n } else {\r\n await checkoutState.updateIsCheckoutCallFailed({ newIsCheckoutCallFailed: true });\r\n\r\n if (isPaymentVerificationRedirection) {\r\n await checkoutState.checkoutCart.refreshCart({});\r\n }\r\n }\r\n }\r\n\r\n throw error;\r\n });\r\n\r\n if (!salesOrder) {\r\n throw new Error('Fail to placeOrder: fail to checkout');\r\n }\r\n\r\n return salesOrder;\r\n};\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { IActionContext } from '@msdyn365-commerce/core';\r\nimport { getCartState, getCheckoutState } from '@msdyn365-commerce/global-state';\r\n\r\nasync function emptyActiveCart(ctx: IActionContext): Promise {\r\n let cartState;\r\n let checkoutState;\r\n const lineItemIdsToRemove = [];\r\n\r\n // eslint-disable-next-line no-useless-catch\r\n try {\r\n cartState = await getCartState(ctx);\r\n checkoutState = await getCheckoutState(ctx);\r\n } catch (error) {\r\n throw error;\r\n }\r\n\r\n if (!cartState || !cartState.cart) {\r\n throw new Error('Fail to fetch active cart');\r\n }\r\n\r\n if (!checkoutState || !checkoutState.checkoutCart) {\r\n throw new Error('Fail to fetch checkoutCart cart');\r\n }\r\n\r\n const activeCart = cartState.cart;\r\n const checkoutCart = checkoutState.checkoutCart.cart;\r\n\r\n for (const activeCartLine of activeCart.CartLines || []) {\r\n for (const checkoutCartLine of checkoutCart.CartLines || []) {\r\n if (activeCartLine.LineId && activeCartLine.LineId === checkoutCartLine.LineId) {\r\n lineItemIdsToRemove.push(activeCartLine.LineId);\r\n }\r\n }\r\n }\r\n\r\n // eslint-disable-next-line no-useless-catch\r\n try {\r\n await cartState.removeCartLines({ cartLineIds: lineItemIdsToRemove });\r\n await cartState.removeAllPromoCodes({});\r\n await checkoutState.removeCheckoutCartId({});\r\n } catch (error) {\r\n throw error;\r\n }\r\n}\r\n\r\nexport default emptyActiveCart;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport { Cart, CartLineValidationResults } from '@msdyn365-commerce/retail-proxy';\r\nimport { updateLineDeliverySpecificationsAsync, validateForCheckoutAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/CartsDataActions.g';\r\nimport { DeliveryPreferenceType, LineDeliverySpecification, ReleasedProductType, SimpleProduct }\r\n from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\r\nimport { IModuleStateManager, IModuleStateProps, withModuleState } from '@msdyn365-commerce-modules/checkout-utilities';\r\nimport { ArrayExtensions, getAvailabilitiesForCartLineItems, ProductAvailabilitiesForCartLineItems } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { Button, getPayloadObject, getTelemetryAttributes, getTelemetryObject, IModuleProps, INodeProps, ITelemetryContent, TelemetryConstant, Waiting } from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport isEmpty from 'lodash/isEmpty';\r\nimport { computed, reaction, when } from 'mobx';\r\nimport { observer } from 'mobx-react';\r\nimport * as React from 'react';\r\n\r\n//@ts-ignore\r\nimport ReCAPTCHA from 'react-google-recaptcha';\r\n\r\n// This is the production key\r\nconst TEST_SITE_KEY = \"6LcClc0ZAAAAAKoN2AsxwRRd4GMtD_yUG5AwXEhl\";\r\n// This is the test key\r\n//const TEST_SITE_KEY = \"6LeIxAcTAAAAAJcZVRqyHh71UMIEGNQ_MXjiZKhI\";\r\nconst DELAY = 1500;\r\n\r\nimport { IObrienCheckoutData } from './obrien-checkout.data';\r\nimport { ICheckoutHeadingData, IObrienCheckoutProps } from './obrien-checkout.props.autogenerated';\r\nimport AlertComponent from './components/alert';\r\nimport { getInvoicePaymentSummary, IInvoicePaymentSummary } from './components/get-invoice-payment-summary';\r\nimport { getLineItems, ILineItems } from './components/get-line-items';\r\nimport { getOrderSummary, IOrderSummary } from './components/get-order-summary';\r\nimport GuidedFormComponent from './components/guided-form';\r\nimport PlaceOrderButtonComponent from './components/place-order-button';\r\nimport placeOrder from './methods/place-order';\r\n\r\nexport * from './components/get-line-items';\r\nexport * from './components/get-order-summary';\r\n\r\ntype DeviceType = 'Mobile';\r\n\r\ninterface ICheckoutState {\r\n errorMessage: string;\r\n isValidationPassed: boolean;\r\n isPlaceOrderLoading?: boolean;\r\n}\r\n\r\nexport interface ICheckoutViewProps extends IObrienCheckoutProps {\r\n className: string;\r\n canShow?: boolean;\r\n isEmptyCart?: boolean;\r\n isConsentGiven?: boolean;\r\n hasError?: boolean;\r\n cartStatus?: string;\r\n isMobile?: boolean;\r\n isEditorialMode?: boolean;\r\n backToShoppingUrl?: string;\r\n editCartLink?: string;\r\n hasSalesOrder: boolean;\r\n hasInvoiceLine?: boolean;\r\n\r\n checkoutProps: IModuleProps;\r\n headerProps: INodeProps;\r\n bodyProps: INodeProps;\r\n mainProps: INodeProps;\r\n mainControlProps: INodeProps;\r\n sideProps: INodeProps;\r\n sideControlFirstProps: INodeProps;\r\n sideControlSecondProps: INodeProps;\r\n termsAndConditionsProps: INodeProps;\r\n\r\n guidedForm?: React.ReactNode;\r\n title?: React.ReactNode;\r\n loading?: React.ReactNode;\r\n alert?: React.ReactNode;\r\n orderSummary?: IOrderSummary;\r\n invoicePaymentSummary?: IInvoicePaymentSummary;\r\n lineItems?: ILineItems;\r\n placeOrderButton?: React.ReactNode;\r\n termsAndConditions?: React.ReactNode;\r\n keepShoppingButton?: React.ReactNode;\r\n orderConfirmation?: React.ReactNode;\r\n}\r\n\r\nexport interface ICheckoutModuleProps extends IObrienCheckoutProps, IModuleStateProps { }\r\n\r\n/**\r\n *\r\n * CheckoutContainer component.\r\n * @extends {React.Component}\r\n */\r\n// @ts-expect-error\r\n@withModuleState\r\n@observer\r\nclass Checkout extends React.PureComponent {\r\n\r\n constructor(props: any) {\r\n super(props);\r\n\r\n this.state = {\r\n //@ts-ignore\r\n callback: \"not fired\",\r\n value: null,\r\n load: false,\r\n expired: \"false\"\r\n };\r\n \r\n }\r\n\r\n handleChange = (value: null) => {\r\n console.log(\"Captcha value:\", value);\r\n this.setState({ value });\r\n // if value is null recaptcha expired\r\n if (value === null) this.setState({ expired: \"true\" });\r\n };\r\n\r\n asyncScriptOnLoad = () => {\r\n this.setState({ callback: \"called!\" });\r\n };\r\n \r\n\r\n @computed get cartStatus(): Msdyn365.AsyncResultStatus {\r\n console.log(\"MYDEBUG-AC: @computed get cartStatus() called\");\r\n return this.props.data.checkout?.status;\r\n }\r\n\r\n @computed get isEmptyCart(): boolean {\r\n console.log(\"MYDEBUG-AC: @computed get isEmptyCart() called\");\r\n if (this.isEditorialMode) {\r\n // Editorial mode: Ignore empty cart\r\n return false;\r\n }\r\n const cart = this.props.data.checkout?.result?.checkoutCart?.cart;\r\n return this.cartStatus === 'SUCCESS' && !!cart && !isEmpty(cart) && (!cart.CartLines || cart.CartLines.length === 0);\r\n }\r\n\r\n @computed get hasError(): boolean {\r\n console.log(\"MYDEBUG-AC: @computed get hasError() called\");\r\n const cart = this.props.data.checkout?.result?.checkoutCart?.cart;\r\n return this.cartStatus === 'FAILED' || (this.cartStatus === 'SUCCESS' && (!cart || isEmpty(cart)));\r\n }\r\n\r\n @computed get isEditorialMode(): boolean {\r\n console.log(\"MYDEBUG-AC: @computed get isEditorialMode() called\");\r\n return this.props.context.request.params.isEditor;\r\n }\r\n\r\n @computed public get isPaymentVerificationRedirection(): boolean {\r\n console.log(\"MYDEBUG-AC: @computed get isPaymentVerificationRedirection() called\");\r\n const { requestFormData, query } = this.props.context.request;\r\n return !!((requestFormData || (query && query.pv === '1')));\r\n }\r\n\r\n @computed get canPlaceOrder(): boolean {\r\n console.log(\"MYDEBUG-AC: @computed get canPlaceOrder() called\");\r\n const isTermsAndConditionAccepted = this.props.data.checkout.result && this.props.data.checkout.result?.isTermsAndConditionAccepted;\r\n\r\n const shouldEnableSinglePaymentAuthorizationCheckout = this.props.data.checkout.result?.shouldEnableSinglePaymentAuthorizationCheckout ?? false;\r\n\r\n // If isTermsAndConditionAccepted is undefined means TermsAndCondition module is not added to page and we should able to place order.\r\n return this.props.moduleState.isReady &&\r\n (isTermsAndConditionAccepted === undefined ||\r\n isTermsAndConditionAccepted ||\r\n shouldEnableSinglePaymentAuthorizationCheckout) &&\r\n ((this.state.errorMessage === '' || shouldEnableSinglePaymentAuthorizationCheckout) || this.isPaymentVerificationRedirection);\r\n }\r\n\r\n @computed get isCartReady(): boolean {\r\n console.log(\"MYDEBUG-AC: @computed get isCartReady() called\");\r\n return !!this.props.data.checkout.result?.checkoutCart?.cart &&\r\n this.props.data.customerInformation.status !== 'LOADING' &&\r\n this.props.data.featureState.status !== 'LOADING';\r\n }\r\n\r\n public state: ICheckoutState = {\r\n errorMessage: '',\r\n isValidationPassed: false,\r\n isPlaceOrderLoading: false\r\n };\r\n\r\n private readonly telemetryContent: ITelemetryContent = getTelemetryObject(this.props.context.request.telemetryPageName!,\r\n this.props.friendlyName,\r\n this.props.telemetry);\r\n\r\n public componentDidMount(): void {\r\n console.log(\"MYDEBUG-AC: componenetDidMount() called\");\r\n const {\r\n resources: { genericErrorMessage }\r\n } = this.props;\r\n\r\n setTimeout(() => {\r\n this.setState({ load: true });\r\n }, DELAY);\r\n\r\n\r\n when(\r\n () => this.hasError,\r\n () => {\r\n this.setState({\r\n errorMessage: genericErrorMessage\r\n });\r\n this.props.context.telemetry.error('Failed to get cart');\r\n }\r\n );\r\n\r\n when(\r\n () => {\r\n return this.isEmptyCart;\r\n },\r\n () => {\r\n this.redirectToCartPage('Cart is empty, but no editCartLink found');\r\n }\r\n );\r\n\r\n when(\r\n () => this.isCartReady,\r\n () => {\r\n this.validateForCheckout();\r\n }\r\n );\r\n\r\n reaction(\r\n () => this.props.moduleState.isReady,\r\n () => {\r\n this.onContainerReady();\r\n }\r\n );\r\n\r\n // Reaction to call place order when isPaymentSectionContainerReady is true for new checkout flow.\r\n reaction(\r\n () => this.props.data.checkout.result?.isPaymentSectionContainerReady,\r\n async (isReady) => {\r\n if (this.props.data.checkout.result?.shouldEnableSinglePaymentAuthorizationCheckout && isReady &&\r\n !this.props.data.checkout.result.redirectAdditionalContext) {\r\n if (!this.state.isPlaceOrderLoading) {\r\n this.setState({ isPlaceOrderLoading: true });\r\n }\r\n\r\n await this.onPlaceOrder();\r\n this.setState({ isPlaceOrderLoading: false });\r\n }\r\n }\r\n );\r\n\r\n // Reaction to enable place order button when isPaymentSectionContainerHasError is true for new checkout flow.\r\n reaction(\r\n () => this.props.data.checkout.result?.isPaymentSectionContainerHasError,\r\n (hasError) => {\r\n if (this.props.data.checkout.result?.shouldEnableSinglePaymentAuthorizationCheckout && hasError) {\r\n this.setState({ isPlaceOrderLoading: false });\r\n }\r\n }\r\n );\r\n\r\n // Reaction to enable place order button when redirection is true for new checkout flow.\r\n reaction(\r\n () => this.canPlaceOrder,\r\n async () => {\r\n if (this.props.data.checkout.result?.shouldEnableSinglePaymentAuthorizationCheckout && this.canPlaceOrder) {\r\n const { requestFormData, query } = this.props.context.request;\r\n const isRedirection = !!((requestFormData && query && query.pv === '1'));\r\n if (isRedirection) {\r\n await this.props.data.checkout.result.updateIsPlaceOrderEnabledInRedirection({\r\n newIsPlaceOrderEnabledInRedirection: true\r\n });\r\n }\r\n }\r\n }\r\n );\r\n }\r\n\r\n // eslint-disable-next-line complexity -- ignore the complexity.\r\n public render(): JSX.Element {\r\n\r\n //@ts-ignore\r\n const { value, load } = this.state || {};\r\n\r\n\r\n console.log(\"MYDEBUG-AC: render() called\");\r\n const {\r\n moduleState,\r\n config: { className, checkoutHeading, disableGuidedCheckoutFlow },\r\n resources\r\n } = this.props;\r\n const { errorMessage } = this.state;\r\n const { backToShopping, placeOrderText, confirmPaymentText, cookieConsentRequiredMessage, genericErrorMessage } = resources;\r\n const checkoutClass = classnames('ms-checkout', className);\r\n const checkoutInformation = this.getSlotItems('checkoutInformation');\r\n\r\n const isConsentGiven =\r\n this.props.context.request &&\r\n this.props.context.request.cookies &&\r\n this.props.context.request.cookies.isConsentGiven &&\r\n this.props.context.request.cookies.isConsentGiven();\r\n\r\n const isMobile =\r\n this.props.context.request &&\r\n this.props.context.request.device &&\r\n (this.props.context.request.device.Type as DeviceType) === 'Mobile';\r\n\r\n const backToShoppingUrl = Msdyn365.getUrlSync('home', this.props.context.actionContext) || '';\r\n const editCartLink = Msdyn365.getUrlSync('cart', this.props.context.actionContext) || '';\r\n\r\n const termsAndConditions =\r\n this.props.slots.termsAndConditions &&\r\n this.props.slots.termsAndConditions.length > 0 &&\r\n this.props.slots.termsAndConditions[0];\r\n\r\n const payLoad = getPayloadObject('click', this.telemetryContent, TelemetryConstant.BackToShopping);\r\n const backToShoppingAttributes = getTelemetryAttributes(this.telemetryContent, payLoad);\r\n\r\n const hasInvoiceLine = this.props.data.checkout && this.props.data.checkout.result?.checkoutCart.hasInvoiceLine;\r\n const checkoutBtnText = hasInvoiceLine ? confirmPaymentText : placeOrderText;\r\n\r\n let viewProps: ICheckoutViewProps = {\r\n ...this.props,\r\n className: checkoutClass,\r\n isEmptyCart: this.isEmptyCart,\r\n isConsentGiven,\r\n hasError: this.hasError,\r\n hasSalesOrder: this.props.data.checkout && this.props.data.checkout.result !== undefined && this.props.data.checkout.result.salesOrder !== undefined,\r\n hasInvoiceLine,\r\n cartStatus: this.cartStatus,\r\n isMobile,\r\n backToShoppingUrl,\r\n editCartLink,\r\n isEditorialMode: this.isEditorialMode,\r\n orderConfirmation: this.props.slots.orderConfirmation && this.props.slots.orderConfirmation.length > 0 ? this.props.slots.orderConfirmation[0] : undefined,\r\n checkoutProps: { moduleProps: this.props, className: checkoutClass },\r\n headerProps: { className: 'ms-checkout__head' },\r\n bodyProps: { className: 'ms-checkout__body' },\r\n mainProps: { className: 'ms-checkout__main' },\r\n mainControlProps: { className: 'ms-checkout__main-control' },\r\n sideProps: { className: 'ms-checkout__side' },\r\n sideControlFirstProps: { className: 'ms-checkout__side-control-first' },\r\n sideControlSecondProps: { className: 'ms-checkout__side-control-second' },\r\n termsAndConditionsProps: { className: 'ms-checkout__terms-and-conditions' },\r\n title: checkoutHeading && (\r\n this.renderMsdyn365Text(checkoutHeading)\r\n )\r\n };\r\n\r\n if (!isConsentGiven) {\r\n viewProps = {\r\n ...viewProps,\r\n alert: \r\n };\r\n } else if (this.isLoading()) {\r\n viewProps = {\r\n ...viewProps,\r\n loading: \r\n };\r\n } else if (this.hasError) {\r\n viewProps = {\r\n ...viewProps,\r\n alert: \r\n };\r\n } else {\r\n const shouldEnableSinglePaymentAuthorizationCheckout: boolean =\r\n this.props.data.checkout.result?.shouldEnableSinglePaymentAuthorizationCheckout ?? false;\r\n\r\n viewProps = {\r\n ...viewProps,\r\n alert: errorMessage && ,\r\n canShow: true,\r\n guidedForm: checkoutInformation ? (\r\n \r\n ) : (\r\n undefined\r\n ),\r\n orderSummary: getOrderSummary(this.props),\r\n invoicePaymentSummary: getInvoicePaymentSummary(this.props),\r\n lineItems: hasInvoiceLine ? undefined : getLineItems(this.props, this.telemetryContent),\r\n placeOrderButton: (\r\n <>\r\n {load && (\r\n
\r\n

Please confirm you are human to place order

\r\n \r\n
\r\n )}\r\n {(value !== null) && (\r\n \r\n )}\r\n \r\n ),\r\n termsAndConditions,\r\n keepShoppingButton: backToShoppingUrl && (\r\n \r\n {backToShopping}\r\n \r\n )\r\n };\r\n }\r\n\r\n return this.props.renderView(viewProps) as React.ReactElement;\r\n }\r\n\r\n public renderMsdyn365Text(checkoutHeading: ICheckoutHeadingData): React.ReactNode {\r\n console.log(\"MYDEBUG-AC: renderMsdyn365Text() called\");\r\n return (\r\n \r\n );\r\n }\r\n\r\n public handleCheckoutHeadingChange = (event: Msdyn365.ContentEditableEvent) => this.props.config.checkoutHeading!.text = event.target.value;\r\n\r\n private readonly isLoading = (): boolean => {\r\n console.log(\"MYDEBUG-AC: isLoading() called\");\r\n return !this.cartStatus || this.cartStatus === 'LOADING' || this.isEmptyCart || !this.state.isValidationPassed;\r\n };\r\n\r\n private readonly getSlotItems = (key: string): React.ReactNode[] | undefined => {\r\n console.log(\"MYDEBUG-AC: getSlotItems() called\");\r\n const { slots } = this.props;\r\n return slots && slots[key] && slots[key].length > 0 ? slots[key] : undefined;\r\n };\r\n\r\n /**\r\n * Trigger the payment section container submit when placing order.\r\n */\r\n private readonly triggerPaymentWithPlaceOrder = async (): Promise => {\r\n console.log(\"MYDEBUG-AC: triggerPaymentWithPlaceOrder() called\");\r\n this.setState({ isPlaceOrderLoading: true });\r\n\r\n await this.props.data.checkout.result?.updateShouldTriggerPaymentWithPlaceOrder(\r\n { newShouldTriggerPaymentWithPlaceOrder: !this.props.data.checkout.result.shouldTriggerPaymentWithPlaceOrder });\r\n };\r\n\r\n private readonly onPlaceOrder = async (): Promise => {\r\n console.log(\"MYDEBUG-AC: onPlaceOrder() called\");\r\n const {\r\n resources: { checkoutOutOfStockErrorMessage, genericErrorMessage, invalidCartVersionErrorMessage },\r\n context: { actionContext, app: { config: { enableStockCheck = false } } },\r\n slots: { orderConfirmation },\r\n data: { checkout, products }\r\n } = this.props;\r\n\r\n // If hasInvoiceLine is true, no inventory check\r\n if (!this.props.data.checkout.result?.checkoutCart.hasInvoiceLine && enableStockCheck &&\r\n await this.isOverMaxQuantity((await checkout).checkoutCart.cart, (await products))) {\r\n this.setState({\r\n errorMessage: checkoutOutOfStockErrorMessage\r\n });\r\n this.props.context.telemetry.error(checkoutOutOfStockErrorMessage);\r\n } else {\r\n const hasOrderConfirmation = orderConfirmation && orderConfirmation.length > 0;\r\n\r\n const updatedCartVersion = await this.updateCartLineEmailAddress(this.props.data.checkout.result?.guestCheckoutEmail || '');\r\n\r\n await placeOrder(actionContext, this.props.data.checkout.result, this.props.data.products.result,\r\n !hasOrderConfirmation, updatedCartVersion, this.isPaymentVerificationRedirection).catch(error => {\r\n let errorMessage = genericErrorMessage;\r\n\r\n if (error && error.name === 'Microsoft_Dynamics_Commerce_Runtime_InvalidCartVersion') {\r\n errorMessage = invalidCartVersionErrorMessage;\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- unknown error type.\r\n if (this.props.data.checkout.result?.shouldEnableSinglePaymentAuthorizationCheckout && error.data?.AdditionalContext &&\r\n !this.isPaymentVerificationRedirection) {\r\n return;\r\n }\r\n\r\n this.setState({\r\n errorMessage\r\n });\r\n this.props.telemetry.exception(error);\r\n });\r\n }\r\n };\r\n\r\n // Update receipt email address for electronic cart line\r\n // return the updated cart version\r\n private readonly updateCartLineEmailAddress = async (newGuestCheckoutEmail: string): Promise => {\r\n console.log(\"MYDEBUG-AC: updateCartLineEmailAddress() called\");\r\n const emailDeliveryModeCode = this.props.context.request.channel?.EmailDeliveryModeCode;\r\n\r\n const emailDeliveryCartLines = this.props.data.checkout.result?.checkoutCart.cart.CartLines?.filter(\r\n cartLine => (cartLine.DeliveryMode && cartLine.DeliveryMode !== '' && cartLine.DeliveryMode === emailDeliveryModeCode)\r\n );\r\n\r\n let updatedCartVersion: number | undefined;\r\n if (emailDeliveryCartLines && emailDeliveryCartLines.length > 0) {\r\n const lineDeliverySpecifications: LineDeliverySpecification[] = emailDeliveryCartLines.map(line => {\r\n return { LineId: line.LineId,\r\n DeliverySpecification: {\r\n DeliveryModeId: emailDeliveryModeCode,\r\n DeliveryPreferenceTypeValue: DeliveryPreferenceType.ElectronicDelivery,\r\n ElectronicDeliveryEmailAddress: newGuestCheckoutEmail\r\n }\r\n };\r\n });\r\n\r\n await updateLineDeliverySpecificationsAsync(\r\n { callerContext: this.props.context.actionContext },\r\n (await this.props.data.checkout).checkoutCart.cart.Id,\r\n lineDeliverySpecifications\r\n ).then(updatedCart => {\r\n updatedCartVersion = updatedCart.Version;\r\n }).catch(error => {\r\n this.props.context.actionContext.telemetry.exception(error);\r\n throw new Error('[updateLineDeliverySpecificationsAsync] Unable to update electronic delivery email address in cart');\r\n });\r\n }\r\n\r\n return updatedCartVersion;\r\n };\r\n\r\n /**\r\n * Return true if any product in the cart is over its max quantity.\r\n * @param cart -- The checkout cart.\r\n * @param products -- The checkout products.\r\n * @returns -- Is any product in the cart is over max quantity.\r\n */\r\n private readonly isOverMaxQuantity = async (cart: Cart, products: SimpleProduct[]): Promise => {\r\n console.log(\"MYDEBUG-AC: isOverMaxQuantity() called\");\r\n let isOverMaxQuantity = false;\r\n const emailDeliveryModeCode = this.props.context.request.channel?.EmailDeliveryModeCode;\r\n\r\n await getAvailabilitiesForCartLineItems(\r\n new ProductAvailabilitiesForCartLineItems(this.props.context.actionContext.requestContext.apiSettings),\r\n this.props.context.actionContext\r\n ).then(productInventoryInformation => {\r\n cart.CartLines?.map((cartline) => {\r\n\r\n const cartlineProduct = products.find(product => product.RecordId === cartline.ProductId);\r\n const isServiceItem = cartlineProduct?.ItemTypeValue === ReleasedProductType.Service;\r\n\r\n // If product is service item or cartline is electronic delivery, then no inventory check\r\n if (!isServiceItem && cartline.DeliveryMode !== emailDeliveryModeCode && ArrayExtensions.hasElements(productInventoryInformation)) {\r\n const foundProductAvailability = productInventoryInformation.find((productInventory) => {\r\n return productInventory.ProductAvailableQuantity?.ProductId! === cartline.ProductId;\r\n });\r\n\r\n if (!(foundProductAvailability?.IsProductAvailable && foundProductAvailability.ProductAvailableQuantity.AvailableQuantity !== undefined &&\r\n cartline.Quantity && cartline.Quantity <= foundProductAvailability.ProductAvailableQuantity.AvailableQuantity)) {\r\n isOverMaxQuantity = true;\r\n }\r\n }\r\n });\r\n })\r\n .catch(error => {\r\n this.props.context.actionContext.telemetry.exception(error);\r\n throw new Error('[getAvailabilitiesForCartLineItems] Unable to get availabilities for products in checkout cart');\r\n });\r\n\r\n return isOverMaxQuantity;\r\n };\r\n\r\n private readonly getActiveChildModuleStates = (): IModuleStateManager[] => {\r\n console.log(\"MYDEBUG-AC: getActiveChildModuleStates() called\");\r\n const { childIds, getModule } = this.props.moduleState;\r\n return childIds\r\n .map(getModule)\r\n .filter((state): state is IModuleStateManager => !!state && !state.isDisabled && state.hasModuleState);\r\n };\r\n\r\n private readonly onContainerReady = (): void => {\r\n console.log(\"MYDEBUG-AC: onContainerReady() called\");\r\n this.getActiveChildModuleStates().forEach(state => {\r\n state.isReady && state.onContainerReady && state.onContainerReady();\r\n });\r\n };\r\n\r\n private readonly redirectToCartPage = (notFoundEditCartLinkMessage: string): void => {\r\n console.log(\"MYDEBUG-AC: redirectToCartPage() called\");\r\n const editCartLink = Msdyn365.getUrlSync('cart', this.props.context.actionContext) || '';\r\n if (window && editCartLink) {\r\n window.location.assign(editCartLink);\r\n } else {\r\n this.setState({\r\n errorMessage: this.props.resources.genericErrorMessage\r\n });\r\n this.props.context.telemetry.error(notFoundEditCartLinkMessage);\r\n }\r\n };\r\n\r\n private readonly validateForCheckout = (retry: boolean = true): void => {\r\n console.log(\"MYDEBUG-AC: validateForCheckout() called\");\r\n const notFoundEditCartLinkMessage = 'Cart doesn\\'t pass validation, but no editCartLink found';\r\n const cart = this.props.data.checkout.result!.checkoutCart.cart;\r\n const { Id, Version } = cart;\r\n const isOrderQuantityLimitsFeatureEnabledInHq = this.props.data.featureState.result\r\n ?.find(featureState => featureState.Name === 'Dynamics.AX.Application.RetailDefaultOrderQuantityLimitsFeature')?.IsEnabled || false;\r\n const defaultOrderQuantityLimitsFeatureConfig = this.props.context?.request?.app?.platform?.enableDefaultOrderQuantityLimits;\r\n const customerInfo = this.props.data.customerInformation.result;\r\n\r\n const isOrderQuantityLimitsFeatureEnabledInSiteSettings = defaultOrderQuantityLimitsFeatureConfig === 'all' ||\r\n (customerInfo &&\r\n ((defaultOrderQuantityLimitsFeatureConfig === 'b2b' && customerInfo.IsB2b) ||\r\n (defaultOrderQuantityLimitsFeatureConfig === 'b2c' && !customerInfo.IsB2b)));\r\n if (isOrderQuantityLimitsFeatureEnabledInHq && isOrderQuantityLimitsFeatureEnabledInSiteSettings) {\r\n if (Version && Id) {\r\n validateForCheckoutAsync({ callerContext: this.props.context.actionContext, bypassCache: 'none' }, Id, Version)\r\n .then((result: CartLineValidationResults) => {\r\n if (result.ValidationFailuresByCartLines?.length !== 0) {\r\n this.redirectToCartPage(notFoundEditCartLinkMessage);\r\n } else {\r\n this.setState({ isValidationPassed: true });\r\n }\r\n })\r\n .catch((error) => {\r\n this.props.telemetry.warning(error);\r\n this.props.telemetry.debug('Unable to validate Cart');\r\n if (retry && error.name === 'Microsoft_Dynamics_Commerce_Runtime_InvalidCartVersion') {\r\n const cartState = this.props.data.checkout.result?.checkoutCart;\r\n cartState?.refreshCart({})\r\n .then(() => {\r\n this.validateForCheckout(false);\r\n })\r\n .catch((refreshError: Error) => {\r\n this.props.telemetry.warning(refreshError.message);\r\n this.props.telemetry.debug('Unable to refresh Cart');\r\n });\r\n } else {\r\n this.redirectToCartPage(notFoundEditCartLinkMessage);\r\n }\r\n });\r\n } else {\r\n this.redirectToCartPage(notFoundEditCartLinkMessage);\r\n }\r\n } else {\r\n this.setState({ isValidationPassed: true });\r\n }\r\n };\r\n}\r\n\r\nexport default Checkout;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { getUrlSync, IActionContext } from '@msdyn365-commerce/core';\r\nimport { ICheckoutState } from '@msdyn365-commerce/global-state';\r\nimport { SalesOrder, SimpleProduct } from '@msdyn365-commerce/retail-proxy';\r\n\r\nimport checkout from './obrien-checkout';\r\nimport emptyActiveCart from './empty-active-cart';\r\n\r\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\r\nexport default async (\r\n ctx: IActionContext,\r\n checkoutState: ICheckoutState | undefined,\r\n orderedProducts: SimpleProduct[] | undefined,\r\n redirect: boolean,\r\n updatedCartVersion?: number,\r\n isPaymentVerificationRedirection?: boolean\r\n) => {\r\n console.log(\"MYDEBUG-AC-PO.ts export called\");\r\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\r\n //@ts-ignore\r\n // eslint-disable-next-line no-async-promise-executor\r\n return new Promise(async (resolve: () => void, reject: (reason?: Error) => void) => {\r\n let salesOrder: SalesOrder;\r\n\r\n // Proceed checkout\r\n try {\r\n salesOrder = await checkout(ctx, updatedCartVersion, isPaymentVerificationRedirection);\r\n } catch (error) {\r\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\r\n // @ts-ignore\r\n reject(error);\r\n return;\r\n }\r\n\r\n // Remove purchased items from the active cart\r\n try {\r\n await emptyActiveCart(ctx);\r\n } catch (error) {\r\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\r\n //@ts-ignore\r\n reject(error);\r\n return;\r\n }\r\n\r\n if (redirect) {\r\n // Redirect to the order confirmation page\r\n const orderConfirmationUrl = getUrlSync('orderConfirmation', ctx) || '';\r\n if (!orderConfirmationUrl) {\r\n reject(new Error('Error: No orderConfirmationUrl'));\r\n return;\r\n }\r\n\r\n const separator = orderConfirmationUrl.includes('?') ? '&' : '?';\r\n const url = `${orderConfirmationUrl}${separator}transactionId=${salesOrder.Id}`;\r\n window.location.assign(url);\r\n } else {\r\n if (checkoutState) {\r\n const result = await checkoutState.updateSalesOrder({\r\n newSalesOrder: salesOrder,\r\n newOrderedProducts: orderedProducts || []\r\n });\r\n\r\n if (result.status === 'FAILED') {\r\n reject(new Error('Error: Updating error state failed'));\r\n return;\r\n }\r\n } else {\r\n reject(new Error('Error: No checkout state'));\r\n return;\r\n }\r\n resolve();\r\n }\r\n });\r\n};\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { ICheckoutViewProps, ILineItem, ILineItemDeliveryGroup, ILineItems, IOrderSummary, IPickUpAtStore } from './obrien-checkout';\r\nimport { IEmailDelivery } from './components';\r\nimport { IInvoicePaymentSummary } from './components/get-invoice-payment-summary';\r\n\r\nexport const PickUpAtStoreComponent: React.FC = ({ PickUpAtStore, label, location }) => (\r\n \r\n {label}\r\n {location}\r\n \r\n);\r\n\r\nexport const EmailDeliveryComponent: React.FC = ({ EmailDelivery, label }) => (\r\n \r\n {label}\r\n \r\n);\r\n\r\nexport const LineItemComponent: React.FC = ({ LineItem, item, pickUpAtStore, emailDelivery }) => (\r\n \r\n {item}\r\n {pickUpAtStore && }\r\n {emailDelivery && }\r\n \r\n);\r\n\r\nexport const LineItemGroupComponent: React.FC = ({ LineItemDeliveryGroup, LineItemList, heading, lineItems }) => (\r\n \r\n {heading}\r\n \r\n {lineItems.map(lineItem => (\r\n \r\n ))}\r\n \r\n \r\n);\r\n\r\nexport const LineItemGroupComponentWithMultiplePickUp: React.FC = ({ LineItemDeliveryGroup, LineItemList, heading, lineItems, lineItemWraper, lineItemWraperIcon }) => (\r\n \r\n {lineItemWraperIcon}\r\n {lineItemWraper}\r\n {heading}\r\n \r\n {lineItems.map(lineItem => (\r\n \r\n ))}\r\n \r\n \r\n);\r\n\r\nexport const LineItemComponentWithMultiplePickUp: React.FC = ({ LineItem, item, pickUpAtStore, emailDelivery }) => (\r\n \r\n {item}\r\n {emailDelivery && }\r\n \r\n);\r\n\r\nexport const PickUpAtStoreComponentWithMultiplePickUp: React.FC = ({ PickUpAtStore, label, location }) => (\r\n \r\n {label}\r\n {location}\r\n \r\n);\r\n\r\nexport const LineItemsComponent: React.FC = ({ LineItems, Header, heading, editLink, itemsForPickup, itemsForShip, itemsForEmail, itemsGroupWithMulitplePickupMode }) => (\r\n \r\n \r\n {heading}\r\n {editLink}\r\n \r\n {itemsGroupWithMulitplePickupMode === undefined && itemsForPickup && }\r\n {itemsGroupWithMulitplePickupMode === undefined && itemsForEmail && }\r\n {itemsGroupWithMulitplePickupMode === undefined && itemsForShip && }\r\n {itemsGroupWithMulitplePickupMode !== undefined ? itemsGroupWithMulitplePickupMode.map((item, index) => {\r\n return ;\r\n }) : null}\r\n \r\n);\r\n\r\nconst OrderSummaryComponent: React.FC = ({ heading, lines }) => (\r\n
\r\n {heading}\r\n
\r\n {lines && (\r\n <>\r\n {lines.subtotal}\r\n {lines.shipping}\r\n {lines.otherCharge}\r\n {lines.tax}\r\n {lines.totalDiscounts}\r\n {lines.loyalty}\r\n {lines.giftCard}\r\n {lines.orderTotal}\r\n \r\n )}\r\n
\r\n
\r\n);\r\n\r\nconst PaymentSummaryComponent: React.FC = ({ heading, lines }) => (\r\n
\r\n {heading}\r\n
\r\n {lines && (\r\n <>\r\n {lines.invoices}\r\n {lines.giftCard}\r\n {lines.loyalty}\r\n {lines.orderTotal}\r\n \r\n )}\r\n
\r\n
\r\n);\r\n\r\nconst CheckoutView: React.FC = props => {\r\n const {\r\n canShow,\r\n checkoutProps,\r\n headerProps,\r\n hasSalesOrder,\r\n hasInvoiceLine,\r\n bodyProps,\r\n mainProps,\r\n mainControlProps,\r\n sideProps,\r\n sideControlFirstProps,\r\n sideControlSecondProps,\r\n termsAndConditionsProps,\r\n orderConfirmation,\r\n loading,\r\n alert,\r\n title,\r\n guidedForm,\r\n orderSummary,\r\n invoicePaymentSummary,\r\n lineItems,\r\n placeOrderButton,\r\n termsAndConditions,\r\n keepShoppingButton\r\n } = props;\r\n\r\n return (\r\n \r\n {!hasSalesOrder && \r\n {title}\r\n }\r\n {!hasSalesOrder &&\r\n \r\n {loading}\r\n {alert}\r\n {canShow && (\r\n <>\r\n \r\n {guidedForm}\r\n \r\n {termsAndConditions}\r\n \r\n \r\n {placeOrderButton}\r\n {keepShoppingButton}\r\n \r\n \r\n \r\n {!hasInvoiceLine ? orderSummary && : invoicePaymentSummary && }\r\n \r\n \r\n {termsAndConditions}\r\n \r\n {/* {placeOrderButton} */}\r\n {/* {keepShoppingButton} */}\r\n \r\n {lineItems && }\r\n \r\n \r\n {termsAndConditions}\r\n \r\n {placeOrderButton}\r\n {keepShoppingButton}\r\n \r\n \r\n \r\n )}\r\n }\r\n {hasSalesOrder && orderConfirmation}\r\n \r\n );\r\n};\r\n\r\nexport default CheckoutView;\r\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ICoreContext } from '@msdyn365-commerce/core';\nimport { ICartActionResult, ICartState } from '@msdyn365-commerce/global-state';\nimport {\n AsyncResult,\n CartLine,\n CartLineValidationResults,\n CartsDataActions,\n LineDataValidationFailure,\n SimpleProduct\n} from '@msdyn365-commerce/retail-proxy';\nimport { ITelemetry } from '@msdyn365-commerce/telemetry-internal';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\n\n/**\n * Validate the cart.\n * @param isQuantityLimitsFeatureEnabled -- Is the quantity limits feature enabled.\n * @param cart -- The cart state to validate.\n * @param telemetry -- The telemetry.\n * @param propsContext -- The props context.\n * @param shouldRetry -- Should retry.\n * @returns A list of line data validation failures.\n */\nexport async function validateCartAsync(\n isQuantityLimitsFeatureEnabled: boolean | undefined,\n cart: AsyncResult,\n telemetry: ITelemetry,\n propsContext: ICoreContext,\n shouldRetry: boolean = true\n): Promise {\n if (!isQuantityLimitsFeatureEnabled) {\n return AsyncResult.resolve();\n }\n\n let cartResult: ICartState;\n let cartVersion: number | undefined;\n try {\n cartResult = await cart;\n cartVersion = cartResult.cart.Version;\n } catch (error) {\n telemetry.warning(error);\n telemetry.debug('Unable to get cart or cart version.');\n return AsyncResult.resolve();\n }\n\n if (cartVersion) {\n try {\n const validationResult: CartLineValidationResults = await CartsDataActions.validateForCheckoutAsync(\n { callerContext: propsContext.actionContext, bypassCache: 'none' },\n cartResult.cart.Id,\n cartVersion\n );\n\n return await AsyncResult.resolve(validationResult.ValidationFailuresByCartLines ?? []);\n } catch (error) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- error type is not defined.\n if (shouldRetry && error.name === 'Microsoft_Dynamics_Commerce_Runtime_InvalidCartVersion') {\n try {\n await cartResult.refreshCart({});\n } catch (refreshError) {\n telemetry.warning(refreshError);\n telemetry.debug('Unable to refresh Cart');\n return AsyncResult.resolve();\n }\n try {\n await validateCartAsync(isQuantityLimitsFeatureEnabled, cart, telemetry, propsContext, false);\n return AsyncResult.resolve();\n } catch (validateError) {\n telemetry.warning(validateError);\n telemetry.debug('Unable to validate Cart');\n return AsyncResult.resolve();\n }\n }\n\n telemetry.warning(error);\n telemetry.debug('Unable to validate Cart');\n return AsyncResult.resolve();\n }\n } else {\n telemetry.warning('Cart version not found for Cart validation request.');\n return AsyncResult.resolve();\n }\n}\n\n/**\n * Check if cart line quantity update is success.\n * @param isQuantityLimitsFeatureEnabled -- Is quantity limits feature enabled.\n * @param cartResult -- The cart result.\n * @param telemetry -- The telemetry.\n * @param products -- The products.\n * @param cartLineToUpdate -- The cart line to update.\n * @param quantity -- The quantity.\n * @returns Boolean to indicate if the cart line quantity is updated.\n */\nexport async function isCartLineQuantityUpdatedAsync(\n isQuantityLimitsFeatureEnabled: boolean | undefined,\n cartResult: ICartState | undefined,\n telemetry: ITelemetry,\n products: SimpleProduct[] | undefined,\n cartLineToUpdate: CartLine,\n quantity: number\n): Promise {\n if (cartResult) {\n let isUsingDefaultOrderSettingsMax: boolean = false;\n if (ArrayExtensions.hasElements(products) && isQuantityLimitsFeatureEnabled) {\n const modifiedProduct: SimpleProduct | undefined = products.find(\n (product: SimpleProduct) => product.RecordId === cartLineToUpdate.ProductId\n );\n isUsingDefaultOrderSettingsMax = !!modifiedProduct && !!modifiedProduct.Behavior?.MaximumQuantity;\n } else {\n isUsingDefaultOrderSettingsMax = false;\n }\n\n const input = {\n cartLineId: cartLineToUpdate.LineId!.toString(),\n newQuantity: quantity,\n additionalProperties: { isUsingDefaultOrderSettingsMax }\n };\n\n try {\n const updateLineResult: ICartActionResult = await cartResult.updateCartLineQuantity(input);\n return await AsyncResult.resolve(updateLineResult.status === 'SUCCESS');\n } catch (error) {\n telemetry.warning((error as Error).message);\n telemetry.debug('Unable to update Cart Line quantity');\n }\n }\n\n return AsyncResult.resolve(false);\n}\n\n/**\n * Update cart line with cart action result.\n * @param isQuantityLimitsFeatureEnabled -- Is quantity limits feature enabled.\n * @param cartResult -- The cart result.\n * @param telemetry -- The telemetry.\n * @param products -- The products.\n * @param cartLineToUpdate -- The cart line to update.\n * @param quantity -- The quantity.\n * @returns Boolean to indicate if the cart line quantity is updated.\n */\nexport async function cartLineQuantityUpdatedAsync(\n isQuantityLimitsFeatureEnabled: boolean | undefined,\n cartResult: ICartState | undefined,\n telemetry: ITelemetry,\n products: SimpleProduct[] | undefined,\n cartLineToUpdate: CartLine,\n quantity: number\n): Promise {\n if (cartResult) {\n let isUsingDefaultOrderSettingsMax: boolean = false;\n if (ArrayExtensions.hasElements(products) && isQuantityLimitsFeatureEnabled) {\n const modifiedProduct: SimpleProduct | undefined = products.find(\n (product: SimpleProduct) => product.RecordId === cartLineToUpdate.ProductId\n );\n isUsingDefaultOrderSettingsMax = !!modifiedProduct && !!modifiedProduct.Behavior?.MaximumQuantity;\n } else {\n isUsingDefaultOrderSettingsMax = false;\n }\n\n const input = {\n cartLineId: cartLineToUpdate.LineId!.toString(),\n newQuantity: quantity,\n additionalProperties: { isUsingDefaultOrderSettingsMax }\n };\n\n try {\n const updateLineResult: ICartActionResult = await cartResult.updateCartLineQuantity(input);\n return await AsyncResult.resolve(updateLineResult);\n } catch (error) {\n telemetry.warning((error as Error).message);\n telemetry.debug('Unable to update Cart Line quantity');\n }\n }\n\n return AsyncResult.resolve();\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ICartState } from '@msdyn365-commerce/global-state';\nimport { SimpleProduct } from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\n\n/**\n * Find the product in array of products considering product id.\n * @param productId - The searched product id.\n * @param products - The array of products in which search is executed.\n * @returns - The found product.\n */\nexport function getProductByProductId(productId: number | undefined, products?: SimpleProduct[]): SimpleProduct | undefined {\n if (productId !== undefined && ArrayExtensions.hasElements(products)) {\n return products.find(product => {\n return productId === product.RecordId;\n });\n }\n\n return undefined;\n}\n\n/**\n * Find the product in array of products considering product id and product behavior's warehouse.\n * @param productId - The searched product id.\n * @param products - The array of products in which search is executed.\n * @param warehouseId - Warehouse id of cartLine.\n * @param cartState - The cart start in case cart line has no warehouse.\n * @returns - The found product.\n */\nexport function getProductByProductIdAndWarehouse(\n productId: number | undefined,\n products?: SimpleProduct[],\n warehouseId?: string,\n cartState?: ICartState\n): SimpleProduct | undefined {\n const targetWarehouseValue = warehouseId ?? cartState?.cart.WarehouseId;\n\n if (productId !== undefined && ArrayExtensions.hasElements(products)) {\n return products.find(product => {\n return productId === product.RecordId && product.Behavior?.InventoryLocationId === targetWarehouseValue;\n });\n }\n\n return undefined;\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IActionContext } from '@msdyn365-commerce/core';\nimport { ICartState } from '@msdyn365-commerce/global-state';\nimport { ProductDeliveryOptions, SimpleProduct } from '@msdyn365-commerce/retail-proxy';\nimport {\n ActiveCartProductsInput,\n getActiveCartProductsAction,\n getAvailabilitiesForCartLineItems,\n getDeliveryOptionsForCartLineItems,\n IProductInventoryInformation,\n ProductAvailabilitiesForCartLineItems,\n ProductDeliveryOptionsForCartLineItems\n} from '@msdyn365-commerce-modules/retail-actions';\n\n/**\n * IMiniCartData entity interface.\n */\nexport interface IMiniCartData {\n products?: SimpleProduct[];\n productAvailabilites?: IProductInventoryInformation[];\n deliveryOptions?: ProductDeliveryOptions[];\n}\n\nexport const createInput = () => {\n return new ActiveCartProductsInput();\n};\n\n/**\n * Calls the Retail API and returns a mini cart data.\n * @param ctx\n * @param cartState\n */\nexport async function getMiniCartData(ctx: IActionContext, cartState: ICartState): Promise {\n const miniCartData: IMiniCartData = {};\n\n const cart = cartState.cart;\n\n // If there are cart lines, make call to get products\n // If there are invocie linese, then there is no products, so don't make call to get products\n if (cart && cart.CartLines && cart.CartLines.length > 0 && !cartState.hasInvoiceLine) {\n await getActiveCartProductsAction(new ActiveCartProductsInput(), ctx)\n .then(products => {\n if (products) {\n miniCartData.products = products;\n }\n })\n .catch(error => {\n ctx.telemetry.exception(error);\n throw new Error('[getActiveCartWithProdcuts]Unable to hydrate cart with product information');\n });\n\n await getAvailabilitiesForCartLineItems(new ProductAvailabilitiesForCartLineItems(ctx.requestContext.apiSettings), ctx)\n .then(availableQuantity => {\n if (availableQuantity) {\n miniCartData.productAvailabilites = availableQuantity;\n }\n })\n .catch(error => {\n ctx.telemetry.exception(error);\n throw new Error('[getActiveCartWithProdcuts]Unable to hydrate cart with product information');\n });\n\n await getDeliveryOptionsForCartLineItems(new ProductDeliveryOptionsForCartLineItems(ctx.requestContext.apiSettings), ctx)\n .then(deliveryOptions => {\n if (deliveryOptions) {\n miniCartData.deliveryOptions = deliveryOptions;\n }\n })\n .catch(error => {\n ctx.telemetry.exception(error);\n throw new Error('[getActiveCartWithProdcuts]Unable to hydrate cart with product information');\n });\n }\n\n return miniCartData;\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { AddToCartBehavior, CartIconComponent } from '@msdyn365-commerce/components';\nimport { getUrlSync, IDictionary, IImageSettings, msdyn365Commerce, TelemetryEvent } from '@msdyn365-commerce/core';\nimport { CartLine, ChannelDeliveryOptionConfiguration, LineDataValidationFailure, OrgUnitLocation } from '@msdyn365-commerce/retail-proxy';\nimport { validateCartAsync } from '@msdyn365-commerce-modules/cart-utilities';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n Button,\n getPayloadObject,\n getTelemetryAttributes,\n getTelemetryObject,\n INodeProps,\n ITelemetryContent,\n TelemetryConstant,\n UncontrolledTooltip\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { reaction } from 'mobx';\nimport { observer } from 'mobx-react';\nimport React from 'react';\n\nimport { ICartIconData } from './cart-icon.data';\nimport { cartLinesSortOrder, ICartIconProps } from './cart-icon.props.autogenerated';\nimport { FlyoutCartLineItems, IFlyoutCartLineItemViewProps } from './components/flyout-cart-line-items';\nimport { getMiniCartData, IMiniCartData } from './utils/get-products-in-mini-cart';\n\nexport interface IMiniCartState {\n miniCartData: IMiniCartData;\n orgUnitLocations?: OrgUnitLocation[];\n isQuantityLimitsFeatureEnabled: boolean;\n isCartValid: boolean;\n}\n\nexport interface ICartIconViewProps extends ICartIconProps {\n className: string;\n cartIcon: React.ReactNode;\n FlyoutContainer?: INodeProps;\n CartlinesWrapper: INodeProps;\n miniCartWrapper: INodeProps;\n miniCartItemWrapper: INodeProps;\n cartlines?: IFlyoutCartLineItemViewProps[];\n flyoutTitle: React.ReactNode;\n totalPrice: React.ReactNode;\n checkoutAsGuestButton?: React.ReactNode;\n checkoutAsSignInUserButton?: React.ReactNode;\n goToCartButton?: React.ReactNode;\n waitingComponent?: React.ReactNode;\n isCartLoading: boolean;\n\n removeItemClickHandler(cartlineToRemove: CartLine): void;\n}\n\n/**\n *\n * Cart component.\n * @extends {React.PureComponent>}\n */\n@observer\nclass CartIcon extends React.Component, IMiniCartState> {\n private readonly telemetryContent: ITelemetryContent;\n\n private readonly checkoutBySignInAttributes: IDictionary | undefined;\n\n private readonly checkoutByGuestAttributes: IDictionary | undefined;\n\n private readonly viewShoppingBagAttributes: IDictionary | undefined;\n\n private retailMultiplePickUpOptionEnabled?: boolean = false;\n\n private channelDeliveryOptionConfig?: ChannelDeliveryOptionConfiguration;\n\n private lastValidatedCartVersion: number | undefined;\n\n constructor(props: ICartIconProps) {\n super(props);\n this.state = {\n miniCartData: {},\n isCartValid: true,\n isQuantityLimitsFeatureEnabled: false\n };\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n const payload = getPayloadObject(TelemetryEvent.CheckOut, this.telemetryContent, TelemetryConstant.Checkout);\n this.checkoutBySignInAttributes = getTelemetryAttributes(this.telemetryContent, payload);\n\n payload.contentAction.etext = TelemetryConstant.GuestCheckout;\n this.checkoutByGuestAttributes = getTelemetryAttributes(this.telemetryContent, payload);\n\n payload.contentAction.etext = TelemetryConstant.ViewShoppingBag;\n this.viewShoppingBagAttributes = getTelemetryAttributes(this.telemetryContent, payload);\n }\n\n public async componentDidMount(): Promise {\n const context = this.props.context.actionContext;\n\n reaction(\n () => this.props.data.cart.result?.cart.CartLines,\n async () => {\n this.setState({\n miniCartData: await getMiniCartData(context, this.props.data.cart.result!)\n });\n }\n );\n\n this.setState({\n orgUnitLocations: this.props.data.orgUnitLocations?.result\n });\n await this._setOrderQuantityLimitsFeatureFlag();\n this._validateCart();\n }\n\n public componentDidUpdate(prevProps: ICartIconProps): void {\n this._validateCart();\n }\n\n public shouldComponentUpdate(nextProps: ICartIconProps, nextState: IMiniCartState): boolean {\n if (this.state === nextState && this.props.data === nextProps.data) {\n return false;\n }\n return true;\n }\n\n // eslint-disable-next-line complexity -- disabling the complexity for this method for now as its causing lot of other warnings\n public render(): JSX.Element | null {\n const {\n id,\n typeName,\n config: { enableHoverCart, isAnonymousCheckout },\n context: {\n request: {\n user: { isAuthenticated, signInUrl }\n }\n },\n context,\n resources\n } = this.props;\n\n const cart = (this.props.data.cart && this.props.data.cart.result) || undefined;\n const guestCheckoutUrl = getUrlSync('checkout', this.props.context.actionContext) || '';\n const cartUrl = getUrlSync('cart', this.props.context.actionContext) || '';\n const checkoutURL = this._getCheckoutURL(isAuthenticated, guestCheckoutUrl, signInUrl || '');\n const isCartEmpty = cart && cart.cart.CartLines && cart.cart.CartLines.length === 0;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- check config.\n const shouldShowMiniCart =\n cart?.isProductAddedToCart && this.props.context.app.config.addToCartBehavior === AddToCartBehavior.showMiniCart;\n const hasInvoiceLine = cart?.hasInvoiceLine;\n const cartLines = this._getCartLines();\n const hasError = !this.state.isCartValid || (cartLines ? cartLines.some(cartline => cartline.hasError) : false);\n const includeFlyout = this.props.data.cart && this.props.data.cart.status === 'SUCCESS' && enableHoverCart;\n const totalItemsInCart = cart?.totalItemsInCart ? cart.totalItemsInCart : 0;\n const goToCartButtonText = resources.goToCartButtonTitle.replace('{count}', totalItemsInCart.toString());\n const flyoutTitle = resources.flyoutTitle;\n const flyoutTooltip = {\n tag: UncontrolledTooltip,\n shouldShowMiniCart,\n placement: 'bottom-end',\n hideArrow: true,\n className: 'ms-cart-icon__flyout-container',\n trigger: 'hover',\n displayMode: 'FLYOUT',\n target: id,\n shouldShowCloseButton: true,\n cartPageUrl: cartUrl\n };\n\n // If there are invoice lines, don't update mini cart price\n const price = (cart && !cart.hasInvoiceLine && cart.cart.TotalAmount) || undefined;\n const priceString = price\n ? resources.totalPriceFormatString.replace('{price}', context.cultureFormatter.formatCurrency(price))\n : '';\n const multiplePickupStoreSwitchName = 'Dynamics.AX.Application.RetailMultiplePickupDeliveryModeFeature';\n this.channelDeliveryOptionConfig = this.props.data.channelDeliveryOptionConfig?.result;\n this.retailMultiplePickUpOptionEnabled = this.props.data.featureState?.result?.find(\n feature => feature.Name === multiplePickupStoreSwitchName\n )?.IsEnabled;\n\n const viewProps = {\n ...this.props,\n cartIcon: (\n \n ),\n cartlines: cartLines,\n FlyoutContainer: includeFlyout ? flyoutTooltip : undefined,\n CartlinesWrapper: {\n className: 'ms-cart-icon__cart-lines'\n },\n miniCartWrapper: {\n className: classnames('ms-cart-icon'),\n id: this.props.id\n },\n miniCartItemWrapper: {\n className: classnames('msc-cart-lines-item')\n },\n\n // If there are invoice lines, don't update mini cart checkout button\n // Checkout button will display by default to maintain backward compatibility. When Anonymous user checkout is enabled &&\n // user is authenticated then we will show the checkout button otherwise we will show the guest checkout button.\n checkoutAsSignInUserButton:\n !isCartEmpty && !hasInvoiceLine && (!isAnonymousCheckout || isAuthenticated) ? (\n \n {resources.checkoutButtonTitle}\n \n ) : null,\n checkoutAsGuestButton:\n isAnonymousCheckout && !isCartEmpty && !isAuthenticated ? (\n \n {resources.guestCheckoutButtonTitle}\n \n ) : null,\n goToCartButton: (\n \n {goToCartButtonText}\n \n ),\n flyoutTitle: {flyoutTitle},\n totalPrice:
{priceString}
\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n private _validateCart(): void {\n const {\n data: { cart }\n } = this.props;\n const cartVersion = cart.result?.cart?.Version ?? undefined;\n if (this.lastValidatedCartVersion === cartVersion) {\n return;\n }\n\n this.lastValidatedCartVersion = cartVersion; // This field is populated to block concurrent requests\n validateCartAsync(this.state.isQuantityLimitsFeatureEnabled, cart, this.props.telemetry, this.props.context)\n .then((result: LineDataValidationFailure[] | undefined) => {\n this.setState({ isCartValid: !ArrayExtensions.hasElements(result) });\n })\n .catch(() => {\n this.setState({ isCartValid: false });\n });\n }\n\n private _getCheckoutURL(isAuthenticated: boolean, guestCheckoutUrl: string, signInUrl: string): string {\n if (isAuthenticated) {\n return guestCheckoutUrl;\n }\n\n const absoluteUrlRegExp = new RegExp('^(?:[a-z]+:)?//', 'i');\n const isAbsoluteUrl = absoluteUrlRegExp.test(guestCheckoutUrl);\n let returnURL = guestCheckoutUrl;\n if (msdyn365Commerce.isBrowser && !isAbsoluteUrl) {\n returnURL = `${window.location.origin}${guestCheckoutUrl}`;\n }\n\n return `${signInUrl}${!signInUrl.includes('?') ? '?' : '&'}ru=${returnURL}`;\n }\n\n /**\n * Sort cartline items.\n * @param cartlines - Cartlines to be sorted.\n * @param sortOrder - Ascending or descending.\n * @returns - Sorted cartlines.\n */\n private readonly getSortedCartLines = (cartlines: CartLine[], sortOrder?: cartLinesSortOrder): CartLine[] => {\n const lines: CartLine[] = [...cartlines];\n const zero: number = 0;\n\n if (sortOrder === cartLinesSortOrder.descending) {\n return lines.sort((item1, item2) => (item2.LineNumber ?? zero) - (item1.LineNumber ?? zero));\n }\n return lines.sort((item1, item2) => (item1.LineNumber ?? zero) - (item2.LineNumber ?? zero));\n };\n\n private _getCartLines(): IFlyoutCartLineItemViewProps[] | null {\n const {\n context: {\n request: { channel: { PickupDeliveryModeCode } = { PickupDeliveryModeCode: undefined } }\n },\n config,\n telemetry,\n resources\n } = this.props;\n\n const imageSettings = this._getImageSettings(config.imageSettings);\n const cart = this.props.data.cart && this.props.data.cart.result;\n\n // Cart-icon could be placed in each page\n // so we check cart content to reduce number of RS calls\n return this.state.miniCartData.products && cart && cart.cart.CartLines && cart.cart.CartLines.length > 0\n ? FlyoutCartLineItems({\n cartlines: this.getSortedCartLines(cart.cart.CartLines, config.cartLinesSortOrder),\n products: this.state.miniCartData.products,\n productAvailabilites: this.state.miniCartData.productAvailabilites,\n productDeliveryOptions: this.state.miniCartData.deliveryOptions,\n imageSettings,\n outOfStockThreshold: this.props.context.app.config.outOfStockThreshold || 0,\n isStockCheckEnabled: this.props.context.app.config.enableStockCheck || false,\n maxCartlineQuantity: this.props.context.app.config.maxQuantityForCartLineItem,\n gridSettings: this.props.context.request.gridSettings!,\n context: this.props.context,\n typeName: this.props.typeName,\n id: this.props.id,\n resources: {\n sizeString: resources.productDimensionTypeSize,\n colorString: resources.productDimensionTypeColor,\n configString: resources.productDimensionTypeConfiguration,\n styleString: resources.productDimensionTypeStyle,\n quantityDisplayString: resources.quantityDisplayText,\n salesAgreementPricePrompt: resources.salesAgreementPricePrompt,\n inputQuantityAriaLabel: '', // Not used\n discountStringText: '', // Not used\n originalPriceText: '',\n currentPriceText: '',\n shippingChargesText: '',\n shippingText: resources.shippingText\n },\n telemetry,\n removeButtonText: resources.removeCartButtonText,\n outOfStockText: '', // Not used\n outOfRangeOneText: '', // Not used\n outOfRangeFormatText: '', // Not used\n cartState: cart,\n orgUnitLocations: this.state.orgUnitLocations,\n removeItemClickHandler: this._removeItemFromCartHandler,\n pickupDeliveryModeCode: PickupDeliveryModeCode,\n telemetryContent: this.telemetryContent,\n channelDeliveryOptionConfig: this.retailMultiplePickUpOptionEnabled ? this.channelDeliveryOptionConfig : undefined,\n isQuantityLimitsFeatureEnabled: this.state.isQuantityLimitsFeatureEnabled\n })\n : null;\n }\n\n private readonly _getImageSettings = (imageSettings: IImageSettings | undefined): IImageSettings => {\n return (\n imageSettings || {\n viewports: {\n xs: { q: 'w=80&h=94&m=6', w: 0, h: 0 },\n sm: { q: 'w=148&h=174&m=6', w: 0, h: 0 },\n lg: { q: 'w=148&h=174&m=6', w: 0, h: 0 }\n },\n lazyload: true\n }\n );\n };\n\n private readonly _removeItemFromCartHandler = (cartlineToRemove: CartLine) => {\n if (this.props.data.cart.result) {\n const input = {\n cartLineIds: [cartlineToRemove.LineId!.toString()]\n };\n this.props.data.cart.result.removeCartLines(input).catch(error => {\n this.props.telemetry.warning(error);\n this.props.telemetry.debug('Unable to Remove Cart Line');\n });\n }\n };\n\n private async _setOrderQuantityLimitsFeatureFlag(): Promise {\n const defaultOrderQuantityLimitsFeatureConfig = this.props.context?.request?.app?.platform?.enableDefaultOrderQuantityLimits;\n if (!defaultOrderQuantityLimitsFeatureConfig || defaultOrderQuantityLimitsFeatureConfig === 'none') {\n this.setState({ isQuantityLimitsFeatureEnabled: false });\n return;\n }\n try {\n const featureStatuses = await this.props.data.featureState;\n const isQuantityLimitsFeatureEnabledInHq =\n featureStatuses.find(\n featureState => featureState.Name === 'Dynamics.AX.Application.RetailDefaultOrderQuantityLimitsFeature'\n )?.IsEnabled || false;\n if (!isQuantityLimitsFeatureEnabledInHq) {\n this.setState({ isQuantityLimitsFeatureEnabled: false });\n return;\n }\n } catch (error) {\n this.props.telemetry.warning(error);\n this.props.telemetry.debug('Unable to get feature states');\n this.setState({ isQuantityLimitsFeatureEnabled: false });\n return;\n }\n if (defaultOrderQuantityLimitsFeatureConfig === 'all') {\n this.setState({ isQuantityLimitsFeatureEnabled: true });\n } else {\n this.props.data.customerInformation\n .then(customerInfo => {\n const result =\n !!customerInfo &&\n ((defaultOrderQuantityLimitsFeatureConfig === 'b2b' && customerInfo.IsB2b) ||\n (defaultOrderQuantityLimitsFeatureConfig === 'b2c' && !customerInfo.IsB2b));\n this.setState({ isQuantityLimitsFeatureEnabled: result });\n })\n .catch(error => {\n this.props.telemetry.warning(error);\n this.props.telemetry.debug('Unable to get customer info');\n });\n }\n }\n}\n\nexport default CartIcon;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ICartIconViewProps } from './cart-icon';\nimport { IFlyoutCartLineItemViewProps } from './components/flyout-cart-line-items';\n\nconst _renderCartlines = (cartLines: IFlyoutCartLineItemViewProps[] | undefined, props: ICartIconViewProps): JSX.Element[] | null => {\n if (!cartLines) {\n props.context.telemetry.error('Cartlines content is empty, module wont render');\n return null;\n }\n return cartLines.map((cartLine, index) => {\n return (\n \n {cartLine.cartline}\n {cartLine.storeLocation}\n {cartLine.remove}\n \n );\n });\n};\n\nconst CartIconView: React.FC = (props: ICartIconViewProps) => (\n \n {props.cartIcon}\n {props.FlyoutContainer ? (\n \n {props.flyoutTitle}\n {_renderCartlines(props.cartlines, props)}\n {props.totalPrice}\n {props.checkoutAsSignInUserButton}\n {props.checkoutAsGuestButton}\n {props.goToCartButton}\n \n ) : (\n false\n )}\n \n);\n\nexport default CartIconView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { CartLineItemComponent, ICartlineResourceString } from '@msdyn365-commerce/components';\nimport MsDyn365, { ICoreContext, IGridSettings, IImageSettings, ITelemetry } from '@msdyn365-commerce/core';\nimport { ICartState } from '@msdyn365-commerce/global-state';\nimport {\n CartLine,\n ChannelDeliveryOptionConfiguration,\n OrgUnitLocation,\n ProductAvailableQuantity,\n ProductDeliveryOptions,\n SimpleProduct\n} from '@msdyn365-commerce/retail-proxy';\nimport { ReleasedProductType } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { getProductUrlSync, IProductInventoryInformation } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n Button,\n getPayloadObject,\n getTelemetryAttributes,\n ITelemetryContent,\n TelemetryConstant\n} from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { getProductByProductId, getProductByProductIdAndWarehouse } from '../../../Common/get-product';\n\nexport interface IFlyoutCartLineItemsProps {\n cartlines: CartLine[];\n cartState: ICartState | undefined;\n orgUnitLocations: OrgUnitLocation[] | undefined;\n resources: ICartlineResourceString;\n productAvailabilites: IProductInventoryInformation[] | undefined;\n products: SimpleProduct[] | undefined;\n productDeliveryOptions: ProductDeliveryOptions[] | undefined;\n pickupDeliveryModeCode?: string;\n\n /**\n * GridSettings for the product image in cartline\n */\n gridSettings: IGridSettings;\n\n /**\n * ImageSettings for the product image in cartline\n */\n imageSettings: IImageSettings;\n id: string;\n typeName: string;\n context: ICoreContext;\n telemetry: ITelemetry;\n removeButtonText: string;\n outOfStockText: string;\n outOfRangeOneText: string;\n outOfRangeFormatText: string;\n maxCartlineQuantity: number;\n channelDeliveryOptionConfig?: ChannelDeliveryOptionConfiguration;\n isQuantityLimitsFeatureEnabled: boolean;\n\n outOfStockThreshold: number;\n isStockCheckEnabled: boolean;\n telemetryContent?: ITelemetryContent;\n removeItemClickHandler(cartlineToRemove: CartLine): void;\n}\n\nexport interface IFlyoutCartLineItemViewProps {\n cartline: React.ReactNode;\n remove: React.ReactNode;\n storeLocation: React.ReactNode;\n hasError: boolean;\n\n data: {\n product: SimpleProduct;\n cartline: CartLine;\n };\n}\n\nconst _getCartItemAvailableQuantity = (\n isStockCheckEnabled: boolean,\n outOfStockThreshold: number,\n productAvailability?: ProductAvailableQuantity\n): number => {\n if (isStockCheckEnabled) {\n if (\n !productAvailability ||\n !productAvailability.AvailableQuantity ||\n productAvailability.AvailableQuantity <= 0 ||\n productAvailability.AvailableQuantity <= outOfStockThreshold\n ) {\n return 0;\n }\n return productAvailability.AvailableQuantity - outOfStockThreshold;\n }\n\n return 0;\n};\n\nconst _getCartItemMaxQuantity = (\n maxQuantityByConfig: number,\n isStockCheckEnabled: boolean,\n availableQuantityInStock: number,\n isQuantityLimitsFeatureEnabled: boolean,\n maxByQuantityLimitsFeature: number\n) => {\n if (isQuantityLimitsFeatureEnabled) {\n let maxByQuantityLimitsFeatureResult = maxByQuantityLimitsFeature;\n\n // If max by feature in not defined when feature is on then we suggest that there is no max by feature\n // and consider available qty if stock check enabled and max from config in site settings.\n if (!maxByQuantityLimitsFeature) {\n maxByQuantityLimitsFeatureResult = maxQuantityByConfig || 10;\n }\n\n return isStockCheckEnabled\n ? maxByQuantityLimitsFeatureResult < availableQuantityInStock\n ? maxByQuantityLimitsFeatureResult\n : availableQuantityInStock\n : maxByQuantityLimitsFeatureResult;\n }\n if (isStockCheckEnabled) {\n return availableQuantityInStock < maxQuantityByConfig ? availableQuantityInStock : maxQuantityByConfig;\n }\n return maxQuantityByConfig;\n};\n\n/**\n * On Remove Click functionality.\n * @param removeItemClickHandler -Remove item click function.\n * @param cartline -CartLine.\n * @returns Remove change value.\n */\nconst onRemoveClickFunction = (removeItemClickHandler: (cartlineToRemove: CartLine) => void, cartline: CartLine) => () => {\n removeItemClickHandler(cartline);\n};\nconst _assembleNode = (\n cartline: CartLine,\n product: SimpleProduct,\n props: IFlyoutCartLineItemsProps,\n index: number,\n foundProductAvailability?: ProductAvailableQuantity,\n foundProductDeliveryOptions?: ProductDeliveryOptions\n): IFlyoutCartLineItemViewProps => {\n const { imageSettings, gridSettings, id, typeName, context, resources, removeButtonText, removeItemClickHandler } = props;\n\n const availableQuantityInStock = _getCartItemAvailableQuantity(\n props.isStockCheckEnabled,\n props.outOfStockThreshold,\n foundProductAvailability\n );\n const maxQuantity =\n product &&\n _getCartItemMaxQuantity(\n props.maxCartlineQuantity,\n props.isStockCheckEnabled,\n availableQuantityInStock,\n props.isQuantityLimitsFeatureEnabled,\n product?.Behavior?.MaximumQuantity || 0\n );\n\n // Check if the product is service or not by product type\n const isServiceItem = product.ItemTypeValue === ReleasedProductType.Service;\n\n const onRemoveClickHandler = onRemoveClickFunction(removeItemClickHandler, cartline);\n const payLoad = getPayloadObject('click', props.telemetryContent!, TelemetryConstant.RemoveCartItem);\n const removeCartItemAttribute = getTelemetryAttributes(props.telemetryContent!, payLoad);\n\n let productUrl = getProductUrlSync(product, props.context.actionContext, undefined);\n if (MsDyn365.isBrowser) {\n const fullUrl = new URL(productUrl, window.location.href);\n fullUrl.searchParams.set('catalogid', `${cartline.CatalogId ?? 0}`);\n productUrl = fullUrl.href;\n }\n\n return {\n data: {\n product,\n cartline\n },\n hasError: !isServiceItem && props.isStockCheckEnabled ? cartline.Quantity! > maxQuantity : false,\n cartline: (\n \n ),\n remove: (\n \n {removeButtonText}\n \n ),\n storeLocation: _renderStoreLocation(cartline, props)\n };\n};\n\nconst _renderDeliveryLocation = (cartLine: CartLine | null | undefined, props: IFlyoutCartLineItemsProps): string | undefined => {\n let deliverylocation;\n if (cartLine && cartLine.FulfillmentStoreId) {\n const orgUnitName = _getOrgUnitName(cartLine.FulfillmentStoreId, props.orgUnitLocations);\n\n let foundProductDeliveryOption;\n if (props.productDeliveryOptions && props.productDeliveryOptions.length > 0) {\n foundProductDeliveryOption = props.productDeliveryOptions.find(deliveryOption => {\n return deliveryOption && deliveryOption.ProductId === cartLine.ProductId;\n });\n }\n const delivery = foundProductDeliveryOption?.DeliveryOptions?.find(option => option.Code === cartLine.DeliveryMode);\n const location = delivery?.Description;\n\n // eslint-disable-next-line @typescript-eslint/restrict-plus-operands\n if (location) {\n deliverylocation = `${location}, ${orgUnitName}`;\n } else {\n deliverylocation = `${orgUnitName}`;\n }\n } else {\n deliverylocation = props.resources.shippingText;\n }\n return deliverylocation;\n};\n\nconst _renderStoreLocation = (cartLine: CartLine | null | undefined, props: IFlyoutCartLineItemsProps): JSX.Element | null => {\n if (cartLine && cartLine.FulfillmentStoreId) {\n const orgUnitName = _getOrgUnitName(cartLine.FulfillmentStoreId, props.orgUnitLocations);\n\n if (orgUnitName) {\n return (\n
\n {orgUnitName}\n
\n );\n }\n }\n\n return null;\n};\n\nconst _getOrgUnitName = (fulfillmentStoreId: string | undefined, orgUnitLocations: OrgUnitLocation[] | undefined) => {\n if (!orgUnitLocations || !fulfillmentStoreId || orgUnitLocations.length === 0) {\n return '';\n }\n\n const foundLocation = orgUnitLocations.find(orgUnitLocation => {\n return orgUnitLocation.OrgUnitNumber === fulfillmentStoreId;\n });\n\n if (foundLocation) {\n return foundLocation.OrgUnitName;\n }\n return fulfillmentStoreId;\n};\n\nconst _assembleCartlines = (\n cartlines: CartLine[],\n products: SimpleProduct[] | undefined,\n props: IFlyoutCartLineItemsProps\n): IFlyoutCartLineItemViewProps[] | null => {\n const reactNodes: IFlyoutCartLineItemViewProps[] = [];\n\n if (!products || products.length === 0) {\n props.context.telemetry.error('Cartlines content is empty, module wont render');\n return null;\n }\n\n cartlines.map((cartline, index) => {\n let product;\n if (props.isQuantityLimitsFeatureEnabled) {\n // When feature is enabled the same products could have different quantity limits in Behavior so we need\n // to check productId and WarehouseId for identification.\n product = getProductByProductIdAndWarehouse(cartline.ProductId, products, cartline.WarehouseId, props.cartState);\n } else {\n product = getProductByProductId(cartline.ProductId, products);\n }\n let foundProductAvailability;\n if (props.productAvailabilites && props.productAvailabilites.length > 0) {\n foundProductAvailability = props.productAvailabilites.find(productAvailability => {\n return productAvailability.ProductAvailableQuantity?.ProductId! === cartline.ProductId;\n });\n }\n let foundProductDeliveryOption;\n if (props.productDeliveryOptions && props.productDeliveryOptions.length > 0) {\n foundProductDeliveryOption = props.productDeliveryOptions.find(deliveryOption => {\n return deliveryOption && deliveryOption.ProductId === cartline.ProductId;\n });\n }\n if (product) {\n reactNodes.push(\n _assembleNode(\n cartline,\n product,\n props,\n index,\n foundProductAvailability?.ProductAvailableQuantity,\n foundProductDeliveryOption\n )\n );\n }\n });\n\n return reactNodes;\n};\n\n/**\n * CartLineItems component.\n */\n\nexport const FlyoutCartLineItems = (props: IFlyoutCartLineItemsProps) => {\n const { products, cartlines } = props;\n return _assembleCartlines(cartlines, products, props);\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { CartLine, SimpleProduct } from '@msdyn365-commerce/retail-proxy';\nimport groupBy from 'lodash/groupBy';\n\nimport { assembleCartlines, ICartLineItemsProps, ICartlinesViewProps } from './cart-line-items';\n\nconst _assembleGroupCartlines = (\n cartlines: CartLine[],\n products: SimpleProduct[] | undefined,\n props: ICartLineItemsProps\n): ICartlinesViewProps[][] | null => {\n const reactNodes: ICartlinesViewProps[][] = [];\n if (!products || products.length === 0) {\n props.context.telemetry.error('Products content is empty, module wont render');\n return null;\n }\n\n const getGroupByStorePickup = (items: CartLine[]) => groupBy(items, item => item.FulfillmentStoreId);\n const getGroupByDelivery = (items: CartLine[]) => groupBy(items, item => item.DeliveryMode);\n const groupDelivery = getGroupByDelivery(cartlines);\n const cartLinesGroup: CartLine[] = [];\n\n // 1) Group by store and pick up mode\n Object.entries(groupDelivery).forEach(([deliveryType, groupByDeliveryType]) => {\n // @ts-expect-error\n groupDelivery[deliveryType] = getGroupByStorePickup(groupByDeliveryType);\n cartLinesGroup.push(getGroupByStorePickup(groupByDeliveryType));\n });\n\n // 2) Create cartlines group\n Object.keys(cartLinesGroup).forEach(key => {\n const cartLines = cartLinesGroup[key];\n Object.keys(cartLines).forEach(index => {\n const cartLine = cartLines[index];\n const carLineViewProps = assembleCartlines(cartLine, products, props);\n if (carLineViewProps !== null) {\n reactNodes.push(carLineViewProps);\n }\n });\n });\n\n return reactNodes;\n};\n\n/**\n * CartLine Group component.\n * @param props\n */\nexport const CartLineGroupItems = (props: ICartLineItemsProps) => {\n const { products, cartlines } = props;\n return _assembleGroupCartlines(cartlines, products, props);\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IActionContext } from '@msdyn365-commerce/core';\nimport { CartPromotionLine } from '@msdyn365-commerce/retail-proxy';\nimport { getPromotionOptionsForCartLineItems, PromotionOptionsForCartLineItems } from '@msdyn365-commerce-modules/retail-actions';\n\n/**\n * IPromotionData entity interface.\n */\nexport interface IPromotionData {\n promotionOptions?: CartPromotionLine[];\n}\n\n/**\n * Calls the Retail API and returns a promotion data.\n * @param ctx\n */\nexport async function getPromotionData(ctx: IActionContext): Promise {\n const promotionData: IPromotionData = {};\n\n await getPromotionOptionsForCartLineItems(new PromotionOptionsForCartLineItems(ctx.requestContext.apiSettings), ctx)\n .then(promotionOptions => {\n if (promotionOptions) {\n promotionData.promotionOptions = promotionOptions;\n }\n })\n .catch(error => {\n ctx.telemetry.exception(error);\n return {};\n });\n\n return promotionData;\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n IAddToOrderTemplateDialogResources,\n IDuplicateItemsWhenAddingToOrderTemplateDialogResources,\n IItemAddedToOrderTemplateDialogResources,\n ILinesAddedToOrderTemplateDialogResources,\n IOrderTemplateNameDialogResources,\n IWishlistActionSuccessResult,\n PromoCodeComponent,\n SaveCartToOrderTemplateComponent\n} from '@msdyn365-commerce/components';\nimport MsDyn365, { getUrlSync, IImageSettings } from '@msdyn365-commerce/core';\nimport { ICartActionResult, ICartState } from '@msdyn365-commerce/global-state';\nimport { AsyncResult, CartLine, LineDataValidationFailure } from '@msdyn365-commerce/retail-proxy';\nimport { ReleasedProductType } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { cartLineQuantityUpdatedAsync, validateCartAsync } from '@msdyn365-commerce-modules/cart-utilities';\nimport { IInvoiceSummaryLines, InvoiceSummary } from '@msdyn365-commerce-modules/invoice-payment-summary';\nimport { IOrderSummaryLines, OrderSummary } from '@msdyn365-commerce-modules/order-summary-utilities';\nimport {\n ActiveCartProductsInput,\n ArrayExtensions,\n getActiveCartProductsAction,\n ICartLineInventoryValidationResult,\n ObjectExtensions,\n validateCartLinesInventory\n} from '@msdyn365-commerce-modules/retail-actions';\nimport {\n Alert,\n Button,\n getPayloadObject,\n getTelemetryAttributes,\n getTelemetryObject,\n INodeProps,\n IPayLoad,\n ITelemetryContent,\n TelemetryConstant,\n Waiting\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { reaction } from 'mobx';\nimport { observer } from 'mobx-react';\nimport React from 'react';\n\nimport { ICartData } from './cart.data';\nimport { ICartProps, ICartResources } from './cart.props.autogenerated';\nimport { CartLineGroupItems } from './components/cart-line-groups';\nimport { CartLineItems, ICartlinesViewProps } from './components/cart-line-items';\nimport { cartPromotions, ICartLineItemViewProps } from './components/cart-line-items-promotion';\nimport { getPromotionData, IPromotionData } from './utils/get-promotion-in-cart';\n\n/**\n * Cart view props interface.\n */\nexport interface ICartViewProps extends ICartProps {\n className: string;\n title?: React.ReactNode;\n CartlinesWrapper: INodeProps;\n cartlines?: ICartlinesViewProps[];\n cartLinesGroup?: ICartlinesViewProps[][];\n cart: ICartState | undefined;\n orderSummaryHeading: React.ReactNode;\n orderSummaryLineitems?: IOrderSummaryLines;\n invoiceSummaryLineitems?: IInvoiceSummaryLines;\n OrderSummaryWrapper: INodeProps;\n OrderSummaryItems: INodeProps;\n OrderSummaryErrors?: IOrderSummaryErrors;\n checkoutAsGuestButton: React.ReactNode;\n checkoutAsSignInUserButton: React.ReactNode;\n storeSelector?: React.ReactNode;\n expressCheckoutButton?: React.ReactNode[];\n ExpressCheckoutSectionWrapper: INodeProps;\n backToShoppingButton: React.ReactNode;\n waitingComponent: React.ReactNode;\n promotionOptions?: ICartLineItemViewProps;\n promoCode: React.ReactNode;\n cartLoadingStatus: string;\n cartDataResult: boolean;\n multiplePickUpEnabled?: boolean;\n createTemplateFromCartButton: React.ReactNode;\n telemetryContent?: ITelemetryContent;\n removeItemClickHandler(cartlineToRemove: CartLine): void;\n moveToWishlistSuccessHandler(result: IWishlistActionSuccessResult, cartlineId: CartLine): void;\n}\n\n/**\n * Order summary errors interface.\n */\nexport interface IOrderSummaryErrors {\n Wrapper: INodeProps;\n header: React.ReactNode;\n errors: React.ReactNode[];\n}\n\n/**\n * Cart component state interface.\n */\ninterface ICartComponentState {\n showPromotionDialog: boolean;\n cartlinesErrors: LineDataValidationFailure[];\n promotionData: IPromotionData;\n isCartValid: boolean;\n}\n\n/**\n * Cart component.\n * @extends {React.PureComponent>}\n */\n@observer\nclass Cart extends React.Component> {\n public state: ICartComponentState;\n\n private readonly telemetryContent: ITelemetryContent;\n\n private readonly payLoad: IPayLoad;\n\n private isQuantityLimitsFeatureEnabled: boolean = false;\n\n private _isMounted: boolean = false;\n\n private readonly promotionPopupId: string = 'cart-promotion-popup';\n\n public constructor(props: ICartProps) {\n super(props);\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n this.payLoad = getPayloadObject('click', this.telemetryContent, '');\n this.promotionLinkClick = this.promotionLinkClick.bind(this);\n this.promotionCloseButtonclick = this.promotionCloseButtonclick.bind(this);\n this.state = {\n cartlinesErrors: [],\n showPromotionDialog: false,\n promotionData: {},\n isCartValid: true\n };\n }\n\n /**\n * Component did mount function.\n */\n public async componentDidMount(): Promise {\n this._isMounted = true;\n const {\n config,\n context: { actionContext }\n } = this.props;\n\n this.isQuantityLimitsFeatureEnabled = await this.getOrderQuantityLimitsFeatureFlag();\n if (this.isQuantityLimitsFeatureEnabled) {\n await this.validateCart();\n }\n\n if (config.showAvailablePromotions) {\n if (this._isMounted && this.props.data.cart.result?.cart.CartLines) {\n this.setState({ promotionData: await getPromotionData(actionContext) });\n }\n\n reaction(\n () => this.props.data.cart.result?.cart.CartLines,\n async () => {\n if (this._isMounted) {\n this.setState({ promotionData: await getPromotionData(actionContext) });\n }\n }\n );\n }\n }\n\n /**\n * Component will unmount function.\n */\n public componentWillUnmount(): void {\n this._isMounted = false;\n }\n\n /**\n * Should component update function.\n * @param nextProps - Next props.\n * @param nextState - Next state.\n * @returns True if component should update, false otherwise.\n */\n public shouldComponentUpdate(nextProps: ICartProps, nextState: ICartComponentState): boolean {\n if (this.state === nextState && this.props.data === nextProps.data) {\n return false;\n }\n return true;\n }\n\n /* eslint-disable complexity -- Disabling complexity for render method */\n public render(): JSX.Element | null {\n const {\n data: {\n cart: { result: cart },\n products: { result: products }\n },\n context: {\n request: {\n user: { isAuthenticated, signInUrl }\n }\n },\n resources\n } = this.props;\n\n const guestCheckoutUrl = getUrlSync('checkout', this.props.context.actionContext) || '';\n const backToShoppingUrl = getUrlSync('home', this.props.context.actionContext) || '';\n const checkoutURL = this.getCheckoutURL(isAuthenticated, guestCheckoutUrl, signInUrl || '');\n const isCartEmpty = cart && cart.cart.CartLines && cart.cart.CartLines.length === 0;\n const cartLines = this._getCartLines();\n const emailDeliveryModeCode = this.props.context.request.channel?.EmailDeliveryModeCode;\n const validInventoryAcrossCartLines = validateCartLinesInventory(\n cart?.cart.CartLines ?? [],\n this.props.data.productAvailabilites.result ?? [],\n this.props.context.actionContext,\n products ?? [],\n emailDeliveryModeCode\n );\n\n const hasError =\n !validInventoryAcrossCartLines?.isValid ||\n (!validInventoryAcrossCartLines && !this.state.isCartValid) ||\n (cartLines ? cartLines.some(cartline => cartline.hasError) : false);\n const RetailMultiplePickupFeatureState = this.props.data.featureState.result?.find(\n featureState => featureState.Name === 'Dynamics.AX.Application.RetailMultiplePickupDeliveryModeFeature'\n );\n const multiplePickUpEnabled = !cart?.hasInvoiceLine && RetailMultiplePickupFeatureState?.IsEnabled;\n const cartLinesGroup = multiplePickUpEnabled ? this.getCartLinesGroup() : null;\n this.payLoad.contentAction.etext = TelemetryConstant.Checkout;\n const checkoutBySignInAttributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\n this.payLoad.contentAction.etext = TelemetryConstant.GuestCheckout;\n const checkoutByGuestAttributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\n this.payLoad.contentAction.etext = TelemetryConstant.BackToShopping;\n const backtoShoppingAttributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\n\n // If there's inventory issues across multiple cart lines then update the error and display as part of the order summary\n if (validInventoryAcrossCartLines && !validInventoryAcrossCartLines.isValid) {\n if (multiplePickUpEnabled && cartLinesGroup !== null) {\n for (const cartLineGroup of cartLinesGroup) {\n this._updateCartLineErrorForInvalidInventory(cartLineGroup, validInventoryAcrossCartLines);\n }\n }\n\n this._updateCartLineErrorForInvalidInventory(cartLines, validInventoryAcrossCartLines);\n }\n\n const viewProps = {\n ...this.props,\n className: classnames('ms-cart'),\n title:

{resources.cartTitle}

,\n cart: this.props.data.cart.result,\n CartlinesWrapper: { className: 'msc-cartline-wraper' },\n OrderSummaryWrapper: { className: cart?.hasInvoiceLine ? 'msc-invoice-summary-wrapper' : 'msc-order-summary-wrapper' },\n OrderSummaryItems: { className: cart?.hasInvoiceLine ? 'msc-invoice-summary__items' : 'msc-order-summary__items' },\n cartlines: cartLines,\n cartLinesGroup,\n promoCode: this._getPromoCode(),\n promotionOptions: this._getPromotions(),\n context: this.props.context,\n typeName: this.props.typeName,\n telemetry: this.props.telemetry,\n id: this.props.id,\n multiplePickUpEnabled,\n removePromoAriaLabelFormat: resources.removePromoAriaLabelFormat,\n orderSummaryHeading: ArrayExtensions.hasElements(cart?.cart.CartLines) ? (\n cart?.hasInvoiceLine ? (\n

{resources.invoiceSummaryTitle}

\n ) : (\n

{resources.orderSummaryTitle}

\n )\n ) : null,\n orderSummaryLineitems: this._getOrderSummaryLineItems(),\n invoiceSummaryLineitems: this._getInvoiceSummaryLineItems(),\n checkoutAsSignInUserButton: !isCartEmpty ? (\n \n {resources.checkoutButtonTitle}\n \n ) : null,\n checkoutAsGuestButton:\n !isCartEmpty && !isAuthenticated && this.props.config.showGuestCheckoutButton ? (\n \n {resources.guestCheckoutButtonTitle}\n \n ) : null,\n expressCheckoutButton: !isCartEmpty ? this.props.slots.paymentExpress : null,\n ExpressCheckoutSectionWrapper: { className: 'msc-express-payment-container-in-cart-page' },\n backToShoppingButton: (\n \n {resources.backToShoppingButtonTitle}\n \n ),\n createTemplateFromCartButton:\n this._displayAddCartToTemplate() && products ? (\n \n ) : null,\n storeSelector:\n this.props.slots.storeSelector && this.props.slots.storeSelector.length > 0 ? this.props.slots.storeSelector[0] : null,\n removeItemClickHandler: this.removeItemFromCartHandler,\n moveToWishlistSuccessHandler: this.moveToWishlistSuccessHandler,\n waitingComponent: ,\n cartLoadingStatus: this.props.data.cart.status === 'FAILED' ? this.props.resources.cartLoadingErrorMessage : null,\n cartDataResult: this.props.data.cart.result && this.props.data.cart.result.isEmpty,\n OrderSummaryErrors: this._getOrderSummaryErrors(cartLines),\n telemetryContent: this.telemetryContent\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n /* eslint-enable complexity -- Disabling complexity for render method */\n\n /**\n * Promotion click event handler.\n * @param event - The mouse event.\n */\n private readonly promotionLinkClick = (event: React.MouseEvent) => {\n this.setState({\n showPromotionDialog: !this.state.showPromotionDialog\n });\n };\n\n /**\n * Promotion close button click.\n */\n private readonly promotionCloseButtonclick = () => {\n this._hidePromotionDialog();\n };\n\n /**\n * Hide promotion dialog.\n */\n private _hidePromotionDialog(): void {\n this.setState({\n showPromotionDialog: false\n });\n }\n\n /**\n * Display add to cart template.\n * @returns True if should display, false otherwise.\n */\n private _displayAddCartToTemplate(): boolean {\n const cart = this.props.data.cart?.result;\n if (ObjectExtensions.isNullOrUndefined(cart) || cart.hasInvoiceLine) {\n return false;\n }\n\n const RetailB2BEcommerceFeatureState = this.props.data.featureState.result?.find(\n featureState => featureState.Name === 'Dynamics.AX.Application.RetailB2BEcommerceFeature'\n );\n if (\n RetailB2BEcommerceFeatureState?.IsEnabled &&\n this.props.data.customerInformation.result?.IsB2b &&\n this.props.data.orderTemplates.result &&\n ArrayExtensions.hasElements(cart.cart?.CartLines) &&\n this.props.data.customerInformation.result\n ) {\n return true;\n }\n\n return false;\n }\n\n /**\n * Get promotions.\n * @returns React node with the promotions.\n */\n private _getPromotions(): React.ReactNode {\n return (\n this.props.config.showAvailablePromotions &&\n cartPromotions({\n id: this.promotionPopupId,\n showPromotionPopup: this.state.showPromotionDialog,\n onSeeAllClick: this.promotionLinkClick,\n onCloseButtonClick: this.promotionCloseButtonclick,\n promotions: this.state.promotionData.promotionOptions,\n resources: {\n promotionStringHeading: this.props.resources.promotionStringHeading,\n promotionLinkText: this.props.resources.promotionLinkText,\n promotionPopupHeading: this.props.resources.promotionPopupHeading,\n promotionCloseButtonAriaLabel: this.props.resources.promotionCloseButtonAriaLabel\n }\n })\n );\n }\n\n /**\n * Add error message in cart line in case the quantity exceeds the current inventory.\n * @param cartLines - The cart lines.\n * @param cartLineInventoryValidationResult - The cart line inventory result.\n */\n private _updateCartLineErrorForInvalidInventory(\n cartLines: ICartlinesViewProps[] | null,\n cartLineInventoryValidationResult: ICartLineInventoryValidationResult\n ) {\n const { resources } = this.props;\n\n if (\n ArrayExtensions.hasElements(cartLines) &&\n !cartLineInventoryValidationResult.isValid &&\n ArrayExtensions.hasElements(cartLineInventoryValidationResult.productIdWithErrors)\n ) {\n for (const productIdWithError of cartLineInventoryValidationResult.productIdWithErrors) {\n const cartLine = cartLines?.find(element => element.data?.cartline.ProductId === productIdWithError);\n if (cartLine) {\n cartLine.error = resources.outOfStockErrorMessage;\n cartLine.hasError = true;\n }\n }\n }\n }\n\n /**\n * Get order summary errors.\n * @param cartLines - The cart lines.\n * @returns Order summary errors.\n */\n private _getOrderSummaryErrors(cartLines: ICartlinesViewProps[] | null): IOrderSummaryErrors | undefined {\n const allErrors =\n (cartLines &&\n cartLines\n .map(cartline => {\n // Check if the product is service or not by product type\n const isServiceItem = cartline.data?.product?.ItemTypeValue === ReleasedProductType.Service;\n\n if (!isServiceItem && cartline.error) {\n const fullError =\n cartline.data && cartline.data.product?.Name\n ? `${cartline.data.product.Name}: ${cartline.error}`\n : cartline.error;\n\n return
{fullError}
;\n }\n\n return null;\n })\n .filter((line): line is JSX.Element => !!line)) ||\n [];\n\n return {\n Wrapper: {\n tag: Alert,\n className: 'msc-alert',\n isOpen: allErrors.length > 0,\n color: 'danger',\n assertive: true,\n 'aria-label': this.props.resources.outOfStockErrorMessageHeader\n },\n header: (\n \n ),\n errors: allErrors\n };\n }\n\n /**\n * Gets invoice summary line items.\n * @returns Invoice summary lines.\n */\n private _getInvoiceSummaryLineItems(): IInvoiceSummaryLines | undefined {\n const {\n data: {\n cart: { result: cart }\n },\n telemetry,\n resources\n } = this.props;\n\n return cart?.hasInvoiceLine\n ? InvoiceSummary({\n orderTotalLabel: resources.totalAmountLabel,\n invoiceLabel: resources.invoiceLabel,\n cart: cart.cart,\n context: this.props.context,\n typeName: this.props.typeName,\n telemetry,\n id: this.props.id\n })\n : undefined;\n }\n\n /**\n * Gets order summary line items.\n * @returns Order summary lines.\n */\n private _getOrderSummaryLineItems(): IOrderSummaryLines | undefined {\n const {\n data: {\n cart: { result: cart },\n channelDeliveryOptionConfig\n },\n telemetry,\n resources\n } = this.props;\n\n const channelConfiguration = this.props.context && this.props.context.request && this.props.context.request.channel;\n const multiplePickupStoreSwitchName = 'Dynamics.AX.Application.RetailMultiplePickupDeliveryModeFeature';\n const featureState = this.props?.data?.featureState;\n const retailMultiplePickUpOptionEnabled = featureState?.result?.find(item => item.Name === multiplePickupStoreSwitchName)\n ?.IsEnabled;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- app configs are of generic type\n const isShowOrHideTaxEnabled = this.props.context.request.app.config?.isEnableShowOrHideSalesTaxECommerceEnabled === true;\n\n return channelConfiguration && ArrayExtensions.hasElements(cart?.cart.CartLines) && !cart?.hasInvoiceLine\n ? OrderSummary({\n cart: cart!.cart,\n subTotalLabel: resources.itemsWithCountLabel,\n shippingLabel: resources.estimatedShippingLabel,\n otherChargeLabel: resources.otherCharges,\n taxLabel: resources.estimatedTaxLabel,\n orderTotalLabel: resources.orderTotal,\n totalDiscountsLabel: resources.totalDiscountsLabel,\n context: this.props.context,\n typeName: this.props.typeName,\n id: this.props.id,\n toBeCalculatedText: resources.yetToBeCalculatedText,\n freeText: resources.priceFree,\n channelConfiguration,\n retailMultiplePickUpOptionEnabled,\n channelDeliveryOptionConfig: channelDeliveryOptionConfig?.result,\n telemetry,\n isTaxIncludedInPrice: cart!.cart.IsTaxIncludedInPrice,\n isShowTaxBreakup: isShowOrHideTaxEnabled\n })\n : undefined;\n }\n\n /**\n * Gets promo code.\n * @returns React node with the promo code.\n */\n private _getPromoCode(): React.ReactNode {\n const {\n data: {\n cart: { result: cart }\n },\n resources\n } = this.props;\n\n return (\n cart && (\n \n )\n );\n }\n\n /**\n * Generate add to order template dialog resources.\n * @param resources - The resources.\n * @returns IAddToOrderTemplateDialogResources.\n */\n private _generateAddToOrderTemplateDialogResources(resources: ICartResources): IAddToOrderTemplateDialogResources {\n return {\n addToOrderTemplateHeader: resources.addToOrderTemplateHeader,\n\n noOrderTemplatesMessage: resources.noOrderTemplatesMessage,\n noOrderTemplatesDescription: resources.noOrderTemplatesDescription,\n\n createAnOrderTemplateButtonText: resources.createAnOrderTemplateButtonText,\n createNewOrderTemplateButtonText: resources.createNewOrderTemplateButtonText,\n cancelOrderTemplateCreationButtonText: resources.cancelOrderTemplateCreationButtonText,\n\n selectTemplatesText: resources.selectTemplatesText,\n addToTemplateButtonText: resources.addToTemplateButtonText,\n lineItemsText: resources.lineItemsText\n };\n }\n\n /**\n * Generate item added to order template dialog resources.\n * @param resources - The resources.\n * @returns IItemAddedToOrderTemplateDialogResources.\n */\n private _generateItemAddedToOrderTemplateDialogResources(resources: ICartResources): IItemAddedToOrderTemplateDialogResources {\n return {\n viewOrderTemplateButtonText: resources.viewOrderTemplateButtonText,\n continueShoppingButtonText: resources.continueShoppingButtonText,\n itemAddedToOrderTemplateHeaderItemOneText: resources.itemAddedToOrderTemplateHeaderItemOneText,\n itemAddedToOrderTemplateHeaderItemFormatText: resources.itemAddedToOrderTemplateHeaderItemFormatText,\n itemAddedToOrderTemplateHeaderMessageText: resources.itemAddedToOrderTemplateHeaderMessageText,\n freePriceText: resources.freePriceText,\n originalPriceText: resources.originalPriceText,\n currentPriceText: resources.currentPriceText\n };\n }\n\n /**\n * Generate lines added to order template dialog resources.\n * @param resources - The resources.\n * @returns ILinesAddedToOrderTemplateDialogResources.\n */\n private _generateLinesAddedToOrderTemplateDialogResources(resources: ICartResources): ILinesAddedToOrderTemplateDialogResources {\n return {\n viewOrderTemplateButtonText: resources.viewOrderTemplateButtonText,\n continueShoppingButtonText: resources.continueShoppingButtonText,\n linesAddedToOrderTemplateHeaderItemsOneText: resources.linesAddedToOrderTemplateHeaderItemsOneText,\n linesAddedToOrderTemplateHeaderItemsFormatText: resources.linesAddedToOrderTemplateHeaderItemsFormatText,\n linesAddedToOrderTemplateHeaderLinesOneText: resources.linesAddedToOrderTemplateHeaderLinesOneText,\n linesAddedToOrderTemplateHeaderLinesFormatText: resources.linesAddedToOrderTemplateHeaderLinesFormatText,\n linesAddedToOrderTemplateHeaderMessageText: resources.linesAddedToOrderTemplateHeaderMessageText,\n linesAddedToOrderTemplateCustomPriceAlertMessageText: resources.linesAddedToOrderTemplateCustomPriceAlertMessageText\n };\n }\n\n /**\n * Generate duplicate items when adding to order template dialog resources.\n * @param resources - The resources.\n * @returns IDuplicateItemsWhenAddingToOrderTemplateDialogResources.\n */\n private _generateDuplicateItemsWhenAddingToOrderTemplateDialogResources(\n resources: ICartResources\n ): IDuplicateItemsWhenAddingToOrderTemplateDialogResources {\n return {\n duplicatedProductsHeader: resources.duplicatedProductsHeader,\n duplicatedProductsDescription: resources.duplicatedProductsDescription,\n updateQuantityButtonText: resources.updateQuantityButtonText,\n cancelDuplicateItemsButtonText: resources.cancelDuplicateItemsButtonText\n };\n }\n\n /**\n * Generate order template name dialog resources.\n * @param resources - The resources.\n * @returns IOrderTemplateNameDialogResources.\n */\n private _generateOrderTemplateNameDialogResources(resources: ICartResources): IOrderTemplateNameDialogResources {\n return {\n orderTemplateHeaderLabel: resources.createOrderTemplateHeader,\n orderTemplateTitleLabel: resources.orderTemplateTitle,\n orderTemplateNameAriaLabel: resources.orderTemplateNameAriaLabel,\n orderTemplateDescription: resources.createOrderTemplateDescription,\n\n defaultOrderTemplateName: resources.defaultOrderTemplateName,\n\n orderTemplateButtonLabel: resources.createOrderTemplateButtonText,\n orderTemplateCancelButtonLabel: resources.cancelNewOrderTemplateCreationButtonText\n };\n }\n\n /**\n * Gets the cart lines view props.\n * @returns ICartlinesViewProps [].\n */\n private _getCartLines(): ICartlinesViewProps[] | null {\n const {\n data: {\n cart: { result: cart },\n wishlists: { result: wishlists },\n orderTemplates: { result: orderTemplates },\n customerInformation: { result: customerInformation }\n },\n context: {\n request: { channel: { PickupDeliveryModeCode } = { PickupDeliveryModeCode: undefined } }\n },\n config,\n telemetry,\n resources,\n modules\n } = this.props;\n\n const imageSettings = this.getImageSettings(config.imageSettings);\n\n const RetailMultiplePickupFeatureState = this.props.data.featureState.result?.find(\n featureState => featureState.Name === 'Dynamics.AX.Application.RetailMultiplePickupDeliveryModeFeature'\n );\n const multiplePickUpEnabled = RetailMultiplePickupFeatureState?.IsEnabled;\n\n const cartlinesErrors: LineDataValidationFailure[] = this.state.cartlinesErrors;\n let storeSelectorId: string = '';\n if (modules && Object.keys(modules).length > 0 && modules.storeSelector && modules.storeSelector.length > 0) {\n storeSelectorId = modules.storeSelector[0].id;\n }\n return ArrayExtensions.hasElements(cart?.cart.CartLines)\n ? CartLineItems({\n cartlines: cart!.cart.CartLines,\n storeSelectorModuleId: storeSelectorId,\n cartlinesErrors,\n products: this.props.data.products.result,\n productAvailabilites: this.props.data.productAvailabilites.result,\n productDeliveryOptions: this.props.data.deliveryOptions.result,\n catalogs: this.props.data.catalogs?.result,\n imageSettings,\n isStockCheckEnabled: this.props.context.app.config.enableStockCheck || false,\n maxCartlineQuantity: this.props.context.app.config.maxQuantityForCartLineItem,\n shouldIgnoreWarehouse: this.props.context.app.config.warehouseAggregation === 'multiple',\n gridSettings: this.props.context.request.gridSettings!,\n context: this.props.context,\n typeName: this.props.typeName,\n id: this.props.id,\n retailMulitplePickupFeatureState: multiplePickUpEnabled,\n resources: {\n sizeString: resources.productDimensionTypeSize,\n colorString: resources.productDimensionTypeColor,\n configString: resources.productDimensionTypeConfiguration,\n styleString: resources.productDimensionTypeStyle,\n amountString: resources.productDimensionTypeAmount,\n quantityDisplayString: resources.quantityDisplayText,\n inputQuantityAriaLabel: resources.inputQuantityAriaLabel,\n decrementButtonAriaLabel: resources.decrementButtonAriaLabel,\n incrementButtonAriaLabel: resources.incrementButtonAriaLabel,\n discountStringText: resources.discountStringText,\n originalPriceText: resources.originalPriceText,\n currentPriceText: resources.currentPriceText,\n shippingChargesText: resources.shippingCharges,\n salesAgreementPricePrompt: resources.salesAgreementPricePrompt,\n priceEditorResources: {\n ...resources\n }\n },\n telemetry,\n addToWishlistButtonText: resources.addToWishlistButtonText,\n removeFromWishlistButtonText: resources.removeFromWishlistButtonText,\n removeButtonText: resources.removeCartButtonText,\n shipItText: resources.shipInsteadDisplayText,\n pickitUpText: resources.pickItUpDisplayText,\n changeStoreText: resources.changeStoreDisplayText,\n storeSelectorStateManager: this.props.data.storeSelectorStateManager.result,\n outOfStockText: resources.outOfStockErrorMessage,\n outOfRangeOneText: resources.errorMessageOutOfRangeOneLeft,\n outOfRangeFormatText: resources.errorMessageOutOfRangeFormat,\n cartState: this.props.data.cart.result,\n orgUnitLocations: this.props.data.orgUnitLocations.result,\n removeItemClickHandler: this.removeItemFromCartHandler,\n moveToWishlistSuccessHandler: this.moveToWishlistSuccessHandler,\n updateCartLinesQuantitySuccessHandler: this.updateCartlineQuantity,\n locationChangedHandler: this.fulfillmentStoreIdUpdated,\n wishlists,\n defaultWishlistName: resources.defaultWishlistName,\n pickupDeliveryModeCode: PickupDeliveryModeCode,\n includeErrors: config.showOutOfStockErrors,\n showShippingChargesForLineItems: config.showShippingChargesForLineItems,\n telemetryContent: this.telemetryContent,\n isQuantityLimitsFeatureEnabled: this.isQuantityLimitsFeatureEnabled,\n\n addToOrderTemplateDialogResources: this._generateAddToOrderTemplateDialogResources(resources),\n createOrderTemplateDialogResources: this._generateOrderTemplateNameDialogResources(resources),\n itemAddedToOrderTemplateDialogResources: this._generateItemAddedToOrderTemplateDialogResources(resources),\n duplicateItemsWhenAddingToOrderTemplateDialogResources: this._generateDuplicateItemsWhenAddingToOrderTemplateDialogResources(\n resources\n ),\n\n addToOrderTemplateButtonText: resources.addToOrderTemplateButtonText,\n addToOrderTemplateButtonTooltip: resources.addToOrderTemplateButtonTooltip,\n addToOrderTemplateMessage: resources.addToOrderTemplateMessage,\n addItemToOrderTemplateError: resources.addItemToOrderTemplateError,\n orderTemplates,\n customerInformation,\n productAvailability: this.props.data.productAvailabilites\n })\n : null;\n }\n\n /**\n * Gets the checkout URL.\n * @param isAuthenticated - Is authenticated flag.\n * @param guestCheckoutUrl - Guest checkout URL.\n * @param signInUrl -The sign in URL.\n * @returns The checkout URL.\n */\n private getCheckoutURL(isAuthenticated: boolean, guestCheckoutUrl: string, signInUrl: string): string {\n if (isAuthenticated) {\n return guestCheckoutUrl;\n }\n\n const absoluteUrlRegExp = new RegExp('^(?:[a-z]+:)?//', 'i');\n const isAbsoluteUrl = absoluteUrlRegExp.test(guestCheckoutUrl);\n let returnURL = guestCheckoutUrl;\n if (MsDyn365.isBrowser && !isAbsoluteUrl) {\n returnURL = `${window.location.origin}${guestCheckoutUrl}`;\n }\n\n return `${signInUrl}${!signInUrl.includes('?') ? '?' : '&'}ru=${returnURL}`;\n }\n\n /**\n * Gets the image settings.\n * @param imageSettings - Image settings.\n * @returns IImageSettings.\n */\n private readonly getImageSettings = (imageSettings: IImageSettings | undefined): IImageSettings => {\n return (\n imageSettings || {\n viewports: {\n xs: { q: 'w=80&h=94&m=6', w: 0, h: 0 },\n sm: { q: 'w=148&h=174&m=6', w: 0, h: 0 },\n lg: { q: 'w=148&h=174&m=6', w: 0, h: 0 }\n },\n lazyload: true\n }\n );\n };\n\n /**\n * Remove item from cart handler.\n * @param cartlineToRemove - The cart line to remove.\n */\n private readonly removeItemFromCartHandler = (cartlineToRemove: CartLine) => {\n if (this.props.data.cart.result) {\n const input = {\n cartLineIds: [cartlineToRemove.LineId!.toString()]\n };\n this.props.data.cart.result\n .removeCartLines(input)\n .then(() => {\n this.validateCart().catch(error => {\n this.props.telemetry.warning(error);\n this.props.telemetry.debug('Unable to validate Cart');\n });\n })\n .catch(error => {\n this.props.telemetry.warning(error);\n this.props.telemetry.debug('Unable to Remove Cart Line');\n });\n }\n };\n\n /**\n * Move to wish list handler.\n * @param result - The wish list action success result.\n * @param cartline - The cart line.\n */\n private readonly moveToWishlistSuccessHandler = (result: IWishlistActionSuccessResult, cartline?: CartLine) => {\n if (result.status === 'ADDED' && cartline) {\n this.removeItemFromCartHandler(cartline);\n }\n };\n\n /**\n * Updates the cart line quantity.\n * @param cartlineToUpdate - The cart line.\n * @param quantity - The quantity.\n * @param lineIndex - The line index.\n * @returns True if the cart line was updated, false otherwise.\n */\n private readonly updateCartlineQuantity = (cartlineToUpdate: CartLine, quantity: number, lineIndex?: number): boolean => {\n cartLineQuantityUpdatedAsync(\n this.isQuantityLimitsFeatureEnabled,\n this.props.data.cart.result,\n this.props.telemetry,\n this.props.data.products.result,\n cartlineToUpdate,\n quantity\n )\n .then((cartActionResult: ICartActionResult | undefined): boolean => {\n if (cartActionResult?.status === 'SUCCESS') {\n this.validateCart().catch(error => {\n this.props.telemetry.warning((error as Error).message);\n this.props.telemetry.debug('Unable to validate Cart');\n });\n\n return true;\n }\n\n if (!ObjectExtensions.isNullOrUndefined(cartActionResult)) {\n // Show update line error message.\n const lineUpdateFailure: LineDataValidationFailure = {\n LineIndex: ObjectExtensions.isNullOrUndefined(lineIndex) ? 0 : lineIndex,\n DataValidationFailure: {\n ErrorContext: ArrayExtensions.hasElements(cartActionResult.validationResults)\n ? cartActionResult.validationResults[0].ErrorContext\n : '',\n LocalizedMessage: cartActionResult.errorDetails?.LocalizedMessage\n }\n };\n\n this.setState((previousState: Readonly) => {\n const currentErrors: LineDataValidationFailure[] = previousState.cartlinesErrors.filter(\n error => error.LineIndex !== lineIndex\n );\n currentErrors.push(lineUpdateFailure);\n return { cartlinesErrors: currentErrors };\n });\n }\n\n return false;\n })\n .catch(() => {\n return false;\n });\n\n return false;\n };\n\n /**\n * Fulfillment store id is updated.\n */\n private readonly fulfillmentStoreIdUpdated = () => {\n if (this.isQuantityLimitsFeatureEnabled) {\n // Refresh products (in props.data) based on latest cart.\n getActiveCartProductsAction(new ActiveCartProductsInput(), this.props.context.actionContext)\n .then(async () => this.validateCart())\n .catch((error: Error) => {\n this.props.telemetry.warning(error.message);\n this.props.telemetry.debug('Unable to validate Cart');\n });\n }\n };\n\n /**\n * Validates cart.\n * @returns Void promise.\n */\n private async validateCart(): Promise {\n const {\n data: { cart },\n telemetry,\n context\n } = this.props;\n\n const validationResults: LineDataValidationFailure[] | undefined = await validateCartAsync(\n this.isQuantityLimitsFeatureEnabled,\n cart,\n telemetry,\n context,\n true\n );\n\n if (validationResults) {\n const isValid = !ArrayExtensions.hasElements(validationResults);\n this.setState({\n cartlinesErrors: validationResults,\n isCartValid: isValid\n });\n } else {\n this.setState({ isCartValid: true });\n }\n\n return AsyncResult.resolve();\n }\n\n /**\n * Get order quantity limit feature flag.\n * @returns True if flag is enabled, false otherwise.\n */\n private async getOrderQuantityLimitsFeatureFlag(): Promise {\n const defaultOrderQuantityLimitsFeatureConfig = this.props.context?.request?.app?.platform?.enableDefaultOrderQuantityLimits;\n if (defaultOrderQuantityLimitsFeatureConfig === 'none') {\n return false;\n }\n\n try {\n const featureStatuses = await this.props.data.featureState;\n const isQuantityLimitsFeatureEnabledInHq =\n featureStatuses.find(\n featureState => featureState.Name === 'Dynamics.AX.Application.RetailDefaultOrderQuantityLimitsFeature'\n )?.IsEnabled || false;\n if (!isQuantityLimitsFeatureEnabledInHq) {\n return false;\n }\n } catch (error) {\n this.props.telemetry.warning(error);\n this.props.telemetry.debug('Unable to get feature states');\n return false;\n }\n\n if (defaultOrderQuantityLimitsFeatureConfig === 'all') {\n return true;\n }\n try {\n const customerInfo = await this.props.data.customerInformation;\n return (\n !!customerInfo &&\n ((defaultOrderQuantityLimitsFeatureConfig === 'b2b' && customerInfo.IsB2b) ||\n (defaultOrderQuantityLimitsFeatureConfig === 'b2c' && !customerInfo.IsB2b))\n );\n } catch (error) {\n this.props.telemetry.warning(error);\n this.props.telemetry.debug('Unable to get customer info');\n return false;\n }\n }\n\n /**\n * Gets the cart lines group.\n * @returns ICartlinesViewProps [][].\n */\n private getCartLinesGroup(): ICartlinesViewProps[][] | null {\n const {\n data: {\n cart: { result: cart },\n wishlists: { result: wishlists },\n orderTemplates: { result: orderTemplates },\n customerInformation: { result: customerInformation }\n },\n context: {\n request: { channel: { PickupDeliveryModeCode } = { PickupDeliveryModeCode: undefined } }\n },\n config,\n telemetry,\n resources,\n modules\n } = this.props;\n\n const imageSettings = this.getImageSettings(config.imageSettings);\n const cartlinesErrors: LineDataValidationFailure[] = this.state.cartlinesErrors;\n let storeSelectorId: string = '';\n if (modules && Object.keys(modules).length > 0 && modules.storeSelector && modules.storeSelector.length > 0) {\n storeSelectorId = modules.storeSelector[0].id;\n }\n\n const RetailMultiplePickupFeatureState = this.props.data.featureState.result?.find(\n featureState => featureState.Name === 'Dynamics.AX.Application.RetailMultiplePickupDeliveryModeFeature'\n );\n const multiplePickUpEnabled = RetailMultiplePickupFeatureState?.IsEnabled;\n\n return this.props.data.products &&\n this.props.data.products.result &&\n cart &&\n cart.cart.CartLines &&\n cart.cart.CartLines.length > 0 &&\n this.props.data.channelDeliveryOptionConfig?.result\n ? CartLineGroupItems({\n cartlines: cart.cart.CartLines,\n storeSelectorModuleId: storeSelectorId,\n cartlinesErrors,\n products: this.props.data.products.result,\n productAvailabilites: this.props.data.productAvailabilites.result,\n productDeliveryOptions: this.props.data.deliveryOptions.result,\n catalogs: this.props.data.catalogs?.result,\n imageSettings,\n isStockCheckEnabled: this.props.context.app.config.enableStockCheck || false,\n maxCartlineQuantity: this.props.context.app.config.maxQuantityForCartLineItem,\n gridSettings: this.props.context.request.gridSettings!,\n context: this.props.context,\n retailMulitplePickupFeatureState: multiplePickUpEnabled,\n typeName: this.props.typeName,\n id: this.props.id,\n resources: {\n sizeString: resources.productDimensionTypeSize,\n colorString: resources.productDimensionTypeColor,\n configString: resources.productDimensionTypeConfiguration,\n styleString: resources.productDimensionTypeStyle,\n amountString: resources.productDimensionTypeAmount,\n quantityDisplayString: resources.quantityDisplayText,\n inputQuantityAriaLabel: resources.inputQuantityAriaLabel,\n decrementButtonAriaLabel: resources.decrementButtonAriaLabel,\n incrementButtonAriaLabel: resources.incrementButtonAriaLabel,\n discountStringText: resources.discountStringText,\n originalPriceText: resources.originalPriceText,\n currentPriceText: resources.currentPriceText,\n shippingChargesText: resources.shippingCharges,\n salesAgreementPricePrompt: resources.salesAgreementPricePrompt,\n priceEditorResources: {\n ...resources\n }\n },\n telemetry,\n addToWishlistButtonText: resources.addToWishlistButtonText,\n removeFromWishlistButtonText: resources.removeFromWishlistButtonText,\n removeButtonText: resources.removeCartButtonText,\n shipItText: resources.shipInsteadDisplayText,\n pickitUpText: resources.pickItUpDisplayText,\n changeStoreText: resources.changeStoreDisplayText,\n storeSelectorStateManager: this.props.data.storeSelectorStateManager.result,\n outOfStockText: resources.outOfStockErrorMessage,\n outOfRangeOneText: resources.errorMessageOutOfRangeOneLeft,\n outOfRangeFormatText: resources.errorMessageOutOfRangeFormat,\n cartState: this.props.data.cart.result,\n orgUnitLocations: this.props.data.orgUnitLocations.result,\n removeItemClickHandler: this.removeItemFromCartHandler,\n moveToWishlistSuccessHandler: this.moveToWishlistSuccessHandler,\n updateCartLinesQuantitySuccessHandler: this.updateCartlineQuantity,\n locationChangedHandler: this.fulfillmentStoreIdUpdated,\n wishlists,\n defaultWishlistName: resources.defaultWishlistName,\n pickupDeliveryModeCode: PickupDeliveryModeCode,\n includeErrors: config.showOutOfStockErrors,\n showShippingChargesForLineItems: config.showShippingChargesForLineItems,\n telemetryContent: this.telemetryContent,\n isQuantityLimitsFeatureEnabled: this.isQuantityLimitsFeatureEnabled,\n\n addToOrderTemplateDialogResources: this._generateAddToOrderTemplateDialogResources(resources),\n createOrderTemplateDialogResources: this._generateOrderTemplateNameDialogResources(resources),\n itemAddedToOrderTemplateDialogResources: this._generateItemAddedToOrderTemplateDialogResources(resources),\n duplicateItemsWhenAddingToOrderTemplateDialogResources: this._generateDuplicateItemsWhenAddingToOrderTemplateDialogResources(\n resources\n ),\n\n addToOrderTemplateButtonText: resources.addToOrderTemplateButtonText,\n addToOrderTemplateButtonTooltip: resources.addToOrderTemplateButtonTooltip,\n addToOrderTemplateMessage: resources.addToOrderTemplateMessage,\n addItemToOrderTemplateError: resources.addItemToOrderTemplateError,\n orderTemplates,\n customerInformation,\n channelDeliveryOptionConfig: this.props.data.channelDeliveryOptionConfig?.result,\n shouldIgnoreWarehouse: this.props.context.app.config.warehouseAggregation === 'multiple',\n productAvailability: this.props.data.productAvailabilites,\n productPickUpOptions: this.props.data.cartLinesPickUpOptions?.result\n })\n : null;\n }\n}\n\nexport default Cart;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport MsDyn365 from '@msdyn365-commerce/core';\nimport { IInvoiceSummaryLines } from '@msdyn365-commerce-modules/invoice-payment-summary';\nimport { IOrderSummaryLines } from '@msdyn365-commerce-modules/order-summary-utilities';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { INodeProps, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ICartViewProps, IOrderSummaryErrors } from './cart';\nimport { ICartlinesViewProps } from './components/cart-line-items';\nimport { ICartLineItemViewProps } from './components/cart-line-items-promotion';\n\nconst _renderCartlines = (\n cartLines: ICartlinesViewProps[] | undefined,\n cartEmptyText: string,\n CartlinesWrapper: INodeProps,\n storeSelector: React.ReactNode | undefined,\n backToShoppingButton: React.ReactNode,\n waitingComponent: React.ReactNode,\n cartLoadingStatus: string,\n cartDataResult: boolean\n): JSX.Element[] | JSX.Element => {\n if (cartLoadingStatus) {\n return <>{cartLoadingStatus};\n }\n if (cartLines) {\n return cartLines.map(cartLine => {\n return (\n
\n {cartLine.cartline}\n {storeSelector && cartLine.pickUpInStore ? (\n {cartLine.pickUpInStore.defaultComponent}\n ) : null}\n {cartLine.addToOrderTemplate ? (\n \n {cartLine.remove}\n {cartLine.addToWishlist}\n {cartLine.addToOrderTemplate}\n \n ) : (\n <>\n {cartLine.remove}\n {cartLine.addToWishlist}\n \n )}\n
\n );\n });\n }\n return cartDataResult ? (\n
\n

{cartEmptyText}

\n {backToShoppingButton}\n
\n ) : (\n <>{waitingComponent}\n );\n};\n\n/**\n * Method will render error block.\n * @param errorData -The order summary errors interface.\n * @returns Jsx element.\n */\nconst _renderErrorBlock = (errorData: IOrderSummaryErrors | undefined): JSX.Element | null => {\n if (!errorData || !ArrayExtensions.hasElements(errorData.errors)) {\n return null;\n }\n return (\n \n {errorData.header}\n {errorData.errors}\n \n );\n};\n\n/**\n * Method will render invoice summary lines.\n * @param invoiceSummaryLines -The invoicesummary lines interface.\n * @param OrderSummaryItems -The order summary items props.\n * @param props -The cartview props.\n * @returns Jsx element.\n */\nconst _renderInvoiceSummarylines = (\n invoiceSummaryLines: IInvoiceSummaryLines | undefined,\n OrderSummaryItems: INodeProps,\n props: ICartViewProps\n): JSX.Element | null => {\n if (!invoiceSummaryLines) {\n props.context.telemetry.error('InvoiceSummary content is empty, module wont render');\n return null;\n }\n return (\n \n {invoiceSummaryLines.invoices}\n {invoiceSummaryLines.giftCard}\n {invoiceSummaryLines.loyalty}\n {invoiceSummaryLines.orderTotal}\n \n );\n};\n\n/**\n * Method will render order summary lines.\n * @param orderSummaryLines -The ordersummary lines interface.\n * @param OrderSummaryItems -The order summary items props.\n * @param props -The cartview props.\n * @returns Jsx element.\n */\nconst _renderOrderSummarylines = (\n orderSummaryLines: IOrderSummaryLines | undefined,\n OrderSummaryItems: INodeProps,\n props: ICartViewProps\n): JSX.Element | null => {\n if (!orderSummaryLines) {\n props.context.telemetry.error('OrderSummary content is empty, module wont render');\n return null;\n }\n return (\n \n {props.promoCode}\n {orderSummaryLines.subtotal}\n {orderSummaryLines.shipping}\n {orderSummaryLines.otherCharge}\n {orderSummaryLines.tax}\n {orderSummaryLines.totalDiscounts ? orderSummaryLines.totalDiscounts : null}\n {orderSummaryLines.orderTotal}\n \n );\n};\n\n/**\n * Method will render cart promotions.\n * @param promotions -The cartline item view props.\n * @returns Jsx element.\n */\nconst _renderPromotions = (promotions: ICartLineItemViewProps): JSX.Element | undefined => {\n return (\n <>\n \n {promotions.promotionMessage}\n {promotions.promotionSeeAllLink}\n {promotions.promotionDialog}\n \n \n );\n};\n\n/**\n * Method will render cartlines group title.\n * @param cartLine -The cartline view props.\n * @param titleSeparate -The title separate.\n * @returns Jsx element.\n */\nconst renderCartLinesGroupTitle = (cartLine: ICartlinesViewProps, titleSeparate: string) => {\n const isBopisSelected: boolean | undefined = cartLine.pickUpInStore?.isBopisSelected;\n return (\n <>\n \n {isBopisSelected ? (\n

\n {cartLine.pickUpInStore?.deliveryOption}\n {titleSeparate}\n {cartLine.pickUpInStore?.orgUnitName}\n

\n ) : null}\n
\n \n );\n};\n\n/**\n * Method will render cartlines groups header title.\n * @param pickUpText -The pickup text for group.\n * @param shippingText -The shipping text for group.\n * @param emailShippingText -The email shipping text for group.\n * @param titleSeparate -The title separator.\n * @param cartLine -The cartline view props.\n * @param emailDeliveryModeCode -The email delivery code from channel.\n * @returns Jsx element.\n */\nconst renderCartLinesGroupHeader = (\n pickUpText: string,\n shippingText: string,\n emailShippingText: string,\n titleSeparate: string,\n cartLine: ICartlinesViewProps,\n emailDeliveryModeCode?: string\n) => {\n const isBopisSelected: boolean | undefined = cartLine.pickUpInStore?.isBopisSelected;\n let groupTitle: string;\n\n groupTitle = isBopisSelected ? pickUpText : shippingText;\n groupTitle = cartLine.data && cartLine.data.cartline.DeliveryMode === emailDeliveryModeCode ? emailShippingText : groupTitle;\n\n return (\n <>\n
\n

\n

{groupTitle}

\n {renderCartLinesGroupTitle(cartLine, titleSeparate)}\n
\n \n );\n};\n\n/**\n * Method will render cartlines in groups.\n * @param props -The cartline.\n * @returns Jsx element.\n */\nconst renderCartLinesGroup = (props: ICartViewProps): JSX.Element | undefined => {\n if (props.cartLinesGroup && ArrayExtensions.hasElements(props.cartLinesGroup)) {\n return (\n
\n {props.cartLinesGroup.map(cartlines => {\n return (\n
\n {renderCartLinesGroupHeader(\n props.resources.pickUpText,\n props.resources.shippingText,\n props.resources.emailshippingText,\n props.resources.titleSeparate,\n cartlines[0],\n props.context.actionContext.requestContext.channel?.EmailDeliveryModeCode\n )}\n {_renderCartlines(\n cartlines,\n props.resources.emptyCartText,\n props.CartlinesWrapper,\n props.storeSelector,\n props.backToShoppingButton,\n props.waitingComponent,\n props.cartLoadingStatus,\n props.cartDataResult\n )}\n
\n );\n })}\n
\n );\n }\n return props.cartDataResult ? (\n
\n
\n

{props.resources.emptyCartText}

\n {props.backToShoppingButton}\n
\n
\n ) : (\n <>{props.waitingComponent}\n );\n};\n\nconst CartView: React.FC = (props: ICartViewProps) => (\n
\n {props.title}\n {!props.cart?.hasInvoiceLine && props.promotionOptions && _renderPromotions(props.promotionOptions)}\n {props.multiplePickUpEnabled ? (\n renderCartLinesGroup(props)\n ) : (\n \n {_renderCartlines(\n props.cartlines,\n props.resources.emptyCartText,\n props.CartlinesWrapper,\n props.storeSelector,\n props.backToShoppingButton,\n props.waitingComponent,\n props.cartLoadingStatus,\n props.cartDataResult\n )}\n \n )}\n {props.orderSummaryHeading && (\n \n {props.orderSummaryHeading}\n {props.cart?.hasInvoiceLine\n ? _renderInvoiceSummarylines(props.invoiceSummaryLineitems, props.OrderSummaryItems, props)\n : _renderOrderSummarylines(props.orderSummaryLineitems, props.OrderSummaryItems, props)}\n {_renderErrorBlock(props.OrderSummaryErrors)}\n {props.checkoutAsSignInUserButton}\n {props.checkoutAsGuestButton}\n {props.expressCheckoutButton && ArrayExtensions.hasElements(props.expressCheckoutButton) ? (\n {props.expressCheckoutButton}\n ) : null}\n {props.backToShoppingButton}\n {props.createTemplateFromCartButton}\n \n )}\n {props.storeSelector}\n
\n);\n\nexport default CartView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { CartPromotionLine } from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { INodeProps, Modal, ModalBody, ModalFooter, ModalHeader } from '@msdyn365-commerce-modules/utilities';\nimport React from 'react';\n\nexport interface ICartLineItemPromotion {\n id: string;\n showPromotionPopup: boolean;\n promotions: CartPromotionLine[] | undefined;\n resources: ICartLineItemPromotionResourceString;\n onSeeAllClick(event: React.MouseEvent): void;\n onCloseButtonClick(): void;\n}\n\nexport interface ICartLineItemViewProps {\n promotionMessageWrapper: INodeProps;\n promotionMessage: React.ReactNode;\n promotionSeeAllLink: React.ReactElement;\n promotionDialog: React.ReactNode;\n}\n\nexport interface ICartLineItemPromotionResourceString {\n promotionLinkText: string;\n promotionStringHeading: string;\n promotionPopupHeading: string;\n promotionCloseButtonAriaLabel: string;\n}\n\nexport const cartPromotions = (props: ICartLineItemPromotion): ICartLineItemViewProps | undefined => {\n const {\n id,\n showPromotionPopup,\n promotions,\n resources: { promotionLinkText, promotionPopupHeading },\n onCloseButtonClick,\n onSeeAllClick\n } = props;\n\n if (!ArrayExtensions.hasElements(promotions)) {\n return;\n }\n\n const titleId = `${id}_title`;\n const className = 'msc-cart__promotion';\n return {\n promotionMessageWrapper: {\n className: 'msc-cart__promotion'\n },\n promotionMessage: (\n <>\n \n {props.resources.promotionStringHeading}\n \n ),\n promotionSeeAllLink: (\n \n {` `}\n {promotionLinkText} {` `}\n \n ),\n promotionDialog: (\n \n \n
\n {promotionPopupHeading}\n
\n
\n \n
    \n {promotions.map(_promotion => {\n return (\n
  • \n {_promotion.Promotion?.OfferName} {` `}\n
  • \n );\n })}\n
\n
\n \n
\n )\n };\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n AddToOrderTemplateComponent,\n AddToWishlistComponent,\n CartLineItemComponent,\n IAddToOrderTemplateDialogResources,\n ICartlineResourceString,\n IDuplicateItemsWhenAddingToOrderTemplateDialogResources,\n IItemAddedToOrderTemplateDialogResources,\n IOrderTemplateNameDialogResources,\n IWishlistActionSuccessResult\n} from '@msdyn365-commerce/components';\nimport MsDyn365, { IAny, ICoreContext, IGeneric, IGridSettings, IImageSettings, ITelemetry, TelemetryEvent } from '@msdyn365-commerce/core';\nimport { ICartState } from '@msdyn365-commerce/global-state';\nimport {\n AsyncResult,\n CartLine,\n ChannelDeliveryOptionConfiguration,\n CommerceList,\n Customer,\n LineDataValidationFailure,\n OrgUnitLocation,\n ProductDeliveryOptions,\n SimpleProduct\n} from '@msdyn365-commerce/retail-proxy';\nimport { ProductCatalog, ProductDimensionType, ReleasedProductType } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { IStoreSelectorStateManager } from '@msdyn365-commerce-modules/bopis-utilities';\nimport {\n ArrayExtensions,\n getInvoiceDetailsPageUrlSync,\n getProductUrlSync,\n IProductInventoryInformation,\n ObjectExtensions,\n OrderTemplate\n} from '@msdyn365-commerce-modules/retail-actions';\nimport { Button, getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { getProductByProductId, getProductByProductIdAndWarehouse } from '../../../Common/get-product';\nimport { IPickUpInStoreViewProps, PickUpInStore } from './cart-pick-up-in-store';\n\nexport interface ICartLineItemsProps {\n cartlines: CartLine[];\n cartlinesErrors: LineDataValidationFailure[];\n cartState: ICartState | undefined;\n orgUnitLocations: OrgUnitLocation[] | undefined;\n resources: ICartlineResourceString;\n productAvailabilites: IProductInventoryInformation[] | undefined;\n products: SimpleProduct[] | undefined;\n productDeliveryOptions: ProductDeliveryOptions[] | undefined;\n pickupDeliveryModeCode?: string;\n catalogs?: ProductCatalog[];\n retailMulitplePickupFeatureState?: boolean;\n\n /* GridSettings for the product image in cartline */\n gridSettings: IGridSettings;\n\n /* ImageSettings for the product image in cartline */\n imageSettings: IImageSettings;\n id: string;\n typeName: string;\n context: ICoreContext>;\n telemetry: ITelemetry;\n removeButtonText: string;\n addToWishlistButtonText: string;\n removeFromWishlistButtonText: string;\n shipItText: string;\n pickitUpText: string;\n changeStoreText: string;\n outOfStockText: string;\n outOfRangeOneText: string;\n outOfRangeFormatText: string;\n storeSelectorStateManager: IStoreSelectorStateManager | undefined;\n isStockCheckEnabled: boolean;\n wishlists: CommerceList[] | undefined;\n defaultWishlistName: string;\n maxCartlineQuantity: number;\n includeErrors?: boolean;\n showShippingChargesForLineItems?: boolean;\n telemetryContent?: ITelemetryContent;\n isQuantityLimitsFeatureEnabled: boolean;\n storeSelectorModuleId?: string;\n channelDeliveryOptionConfig?: ChannelDeliveryOptionConfiguration;\n\n addToOrderTemplateDialogResources: IAddToOrderTemplateDialogResources;\n createOrderTemplateDialogResources: IOrderTemplateNameDialogResources;\n itemAddedToOrderTemplateDialogResources: IItemAddedToOrderTemplateDialogResources;\n duplicateItemsWhenAddingToOrderTemplateDialogResources: IDuplicateItemsWhenAddingToOrderTemplateDialogResources;\n\n addToOrderTemplateButtonText: string;\n addToOrderTemplateButtonTooltip: string;\n addToOrderTemplateMessage: string;\n addItemToOrderTemplateError: string;\n orderTemplates: OrderTemplate[] | undefined;\n customerInformation: Customer | undefined;\n shouldIgnoreWarehouse: boolean | undefined;\n productAvailability?: AsyncResult;\n productPickUpOptions?: ProductDeliveryOptions[] | undefined;\n\n removeItemClickHandler(cartlineToRemove: CartLine): void;\n moveToWishlistSuccessHandler(result: IWishlistActionSuccessResult, cartlineId: CartLine): void;\n updateCartLinesQuantitySuccessHandler(cartline: CartLine, quantity: number, lineIndex?: number): boolean;\n locationChangedHandler(): void;\n}\n\nexport interface ICartlinesViewProps {\n cartline: React.ReactNode;\n pickUpInStore?: IPickUpInStoreViewProps;\n remove: React.ReactNode;\n addToWishlist: React.ReactNode | undefined;\n addToOrderTemplate: React.ReactNode | undefined;\n\n error?: string;\n cartlineId?: string;\n hasError?: boolean;\n data?: {\n product?: SimpleProduct;\n cartline: CartLine;\n };\n}\n\nconst _getCartItemAvailableQuantity = (\n isStockCheckEnabled: boolean,\n productAvailability: IProductInventoryInformation | undefined\n): number => {\n if (\n !isStockCheckEnabled ||\n !productAvailability ||\n !productAvailability.ProductAvailableQuantity ||\n !productAvailability.IsProductAvailable ||\n !productAvailability.ProductAvailableQuantity.AvailableQuantity\n ) {\n return 0;\n }\n\n return productAvailability.ProductAvailableQuantity.AvailableQuantity;\n};\n\nconst _getCartItemMaxQuantity = (\n maxQuantityByConfig: number,\n isStockCheckEnabled: boolean,\n availableQuantityInStock: number,\n isQuantityLimitsFeatureEnabled: boolean,\n maxByQuantityLimitsFeature: number\n) => {\n if (isQuantityLimitsFeatureEnabled) {\n let maxByQuantityLimitsFeatureResult = maxByQuantityLimitsFeature;\n\n // If max by feature in not defined when feature is on then we suggest that there no max by feature\n // and consider available qty if stock check enabled and max from config in site settings.\n if (!maxByQuantityLimitsFeature) {\n maxByQuantityLimitsFeatureResult = maxQuantityByConfig || 10;\n }\n\n return isStockCheckEnabled\n ? maxByQuantityLimitsFeatureResult < availableQuantityInStock\n ? maxByQuantityLimitsFeatureResult\n : availableQuantityInStock\n : maxByQuantityLimitsFeatureResult;\n }\n if (isStockCheckEnabled) {\n return availableQuantityInStock < maxQuantityByConfig ? availableQuantityInStock : maxQuantityByConfig;\n }\n return maxQuantityByConfig;\n};\n\nconst _getErrorMessage = (\n availableQuantityInStock: number,\n currentQuantity: number,\n props: ICartLineItemsProps,\n lineIndex: number,\n shouldSkipStockCheck: boolean,\n cartLine: CartLine\n): string | undefined => {\n const finalErrorMessages: string[] = [];\n\n const isLoadingDeliveryOptions = props.productAvailability?.status === 'LOADING';\n if (isLoadingDeliveryOptions) {\n return undefined;\n }\n\n let foundProductAvailability;\n if (props.productAvailabilites && ArrayExtensions.hasElements(props.productAvailabilites)) {\n foundProductAvailability = props.productAvailabilites.find(productAvailability => {\n if (props.shouldIgnoreWarehouse) {\n return productAvailability.ProductAvailableQuantity.ProductId === cartLine.ProductId;\n }\n return (\n productAvailability.ProductAvailableQuantity.ProductId === cartLine.ProductId &&\n productAvailability.InventLocationId === cartLine.WarehouseId\n );\n });\n if (foundProductAvailability === undefined) {\n return undefined;\n }\n }\n\n if (props.includeErrors && props.isStockCheckEnabled && !shouldSkipStockCheck) {\n if (availableQuantityInStock <= 0) {\n finalErrorMessages.push(props.outOfStockText);\n } else if (availableQuantityInStock < currentQuantity) {\n if (availableQuantityInStock === 1) {\n finalErrorMessages.push(props.outOfRangeOneText);\n } else {\n finalErrorMessages.push(props.outOfRangeFormatText.replace('{numLeft}', availableQuantityInStock.toString()));\n }\n }\n }\n\n // Server-side validation\n props.cartlinesErrors\n .filter(i => i.LineIndex === lineIndex)\n .forEach(i => {\n if (i.DataValidationFailure?.LocalizedMessage ?? i.DataValidationFailure?.ErrorResourceId) {\n finalErrorMessages.push(i.DataValidationFailure?.LocalizedMessage ?? i.DataValidationFailure?.ErrorResourceId ?? '');\n }\n });\n\n if (finalErrorMessages.length > 0) {\n return finalErrorMessages.join(' ');\n }\n\n return undefined;\n};\n\n/**\n * On Remove Click functionality.\n * @param removeItemClickHandler -Remove item click function.\n * @param cartline -CartLine.\n * @returns Remove change value.\n */\nconst onRemoveClickFunction = (removeItemClickHandler: (cartlineToRemove: CartLine) => void, cartline: CartLine) => () => {\n removeItemClickHandler(cartline);\n};\n\n// eslint-disable-next-line complexity -- Auto-suppressed.\nconst _assembleNode = (\n cartline: CartLine,\n product: SimpleProduct | undefined,\n props: ICartLineItemsProps,\n index: number,\n foundProductAvailability?: IProductInventoryInformation,\n productPickUpOptions?: ProductDeliveryOptions\n): ICartlinesViewProps => {\n const {\n imageSettings,\n gridSettings,\n id,\n typeName,\n context,\n resources,\n removeButtonText,\n removeItemClickHandler,\n moveToWishlistSuccessHandler,\n addToOrderTemplateButtonText,\n addToOrderTemplateButtonTooltip,\n addToOrderTemplateDialogResources,\n createOrderTemplateDialogResources,\n itemAddedToOrderTemplateDialogResources,\n duplicateItemsWhenAddingToOrderTemplateDialogResources,\n addToWishlistButtonText,\n removeFromWishlistButtonText,\n orderTemplates,\n customerInformation,\n wishlists,\n defaultWishlistName,\n storeSelectorModuleId\n } = props;\n\n const isAuthenticated = context.request.user.isAuthenticated;\n const nameOfWishlist = wishlists && wishlists.length > 0 && wishlists[0].Name ? wishlists[0].Name : defaultWishlistName;\n const availableQuantityInStock = _getCartItemAvailableQuantity(props.isStockCheckEnabled, foundProductAvailability);\n\n const maxQuantity =\n product &&\n _getCartItemMaxQuantity(\n props.maxCartlineQuantity,\n props.isStockCheckEnabled,\n availableQuantityInStock,\n props.isQuantityLimitsFeatureEnabled,\n product?.Behavior?.MaximumQuantity || 0\n );\n\n // Skip stock check if the cart line is a service item or an invoice line\n const shouldSkipStockCheck = product?.ItemTypeValue === ReleasedProductType.Service || !!cartline.IsInvoiceLine;\n\n const errorMessage = ObjectExtensions.isNullOrUndefined(maxQuantity)\n ? undefined\n : _getErrorMessage(availableQuantityInStock, cartline.Quantity!, props, index, shouldSkipStockCheck, cartline);\n\n const onRemoveClickHandler = onRemoveClickFunction(removeItemClickHandler, cartline);\n\n const payload = getPayloadObject(TelemetryEvent.RemoveFromCart, props.telemetryContent!, removeButtonText, '');\n const attributes = getTelemetryAttributes(props.telemetryContent!, payload);\n\n const inventoryLbl = foundProductAvailability?.StockLevelLabel;\n const inventoryCode = foundProductAvailability\n ? `ms-cart-line__inventory-code-${foundProductAvailability.StockLevelCode?.toLowerCase()}`\n : undefined;\n const productDimension = 4;\n const customPriceDimensionType = productDimension as ProductDimensionType.Style;\n const isCustomPriceSelected =\n product?.Dimensions?.find(dimension => dimension.DimensionTypeValue === customPriceDimensionType)?.DimensionValue?.Value ===\n 'Custom';\n\n let productUrl: string | undefined;\n if (product) {\n productUrl = getProductUrlSync(product, props.context.actionContext, undefined);\n\n if (MsDyn365.isBrowser) {\n const fullUrl = new URL(productUrl, window.location.href);\n fullUrl.searchParams.set('catalogid', `${cartline.CatalogId ?? 0}`);\n productUrl = fullUrl.href;\n }\n } else {\n productUrl = getInvoiceDetailsPageUrlSync(cartline.Description || '', props.context.actionContext);\n }\n\n return {\n data: {\n product,\n cartline\n },\n cartlineId: cartline.LineId,\n error: errorMessage,\n hasError: !shouldSkipStockCheck && props.isStockCheckEnabled ? cartline.Quantity! > (maxQuantity ?? 0) : false,\n cartline: (\n \n ),\n pickUpInStore: product\n ? PickUpInStore({\n storeSelectorModuleId,\n cartState: props.cartState,\n cartline,\n product,\n shipitText: props.shipItText,\n pickUpInStoreText: props.pickitUpText,\n changeStoreText: props.changeStoreText,\n storeSelectorStateManager: props.storeSelectorStateManager,\n orgUnitLocations: props.orgUnitLocations,\n deliveryOptions: productPickUpOptions,\n pickupDeliveryModeCode:\n cartline.DeliveryMode !== (undefined || '') ? cartline.DeliveryMode : props.pickupDeliveryModeCode,\n retailMulitplePickupFeatureState: props.retailMulitplePickupFeatureState,\n channelDeliveryOptionConfig: props.channelDeliveryOptionConfig,\n locationChangedHandler: props.locationChangedHandler\n })\n : undefined,\n remove: (\n \n ),\n addToWishlist:\n isAuthenticated && product && !isCustomPriceSelected ? (\n \n ) : (\n undefined\n ),\n addToOrderTemplate:\n isAuthenticated && orderTemplates && product ? (\n \n ) : (\n undefined\n )\n };\n};\n\nexport const assembleCartlines = (\n cartlines: CartLine[],\n products: SimpleProduct[] | undefined,\n props: ICartLineItemsProps\n): ICartlinesViewProps[] | null => {\n const reactNodes: ICartlinesViewProps[] = [];\n\n cartlines.map((cartline, index) => {\n let product;\n if (props.isQuantityLimitsFeatureEnabled) {\n // When feature is enabled the same products could have different quantity limits in Behavior so we need\n // to check productId and WarehouseId for identification.\n product = getProductByProductIdAndWarehouse(cartline.ProductId, products, cartline.WarehouseId, props.cartState);\n } else {\n product = getProductByProductId(cartline.ProductId, products);\n }\n let foundProductAvailability;\n if (props.productAvailabilites && ArrayExtensions.hasElements(props.productAvailabilites)) {\n foundProductAvailability = props.productAvailabilites.find(productAvailability => {\n if (props.shouldIgnoreWarehouse) {\n return productAvailability.ProductAvailableQuantity?.ProductId === cartline.ProductId;\n }\n return (\n productAvailability.ProductAvailableQuantity?.ProductId === cartline.ProductId &&\n productAvailability.InventLocationId?.toUpperCase() === cartline.WarehouseId?.toUpperCase()\n );\n });\n }\n\n let productPickUpOptions;\n if (props.productPickUpOptions !== undefined && ArrayExtensions.hasElements(props.productPickUpOptions)) {\n productPickUpOptions = props.productPickUpOptions.find(deliveryOption => {\n return deliveryOption && deliveryOption.ProductId === cartline.ProductId;\n });\n }\n reactNodes.push(_assembleNode(cartline, product, props, index, foundProductAvailability, productPickUpOptions));\n });\n\n return reactNodes;\n};\n\n/**\n * CartLineItems component.\n * @param props\n */\nexport const CartLineItems = (props: ICartLineItemsProps) => {\n const { products, cartlines } = props;\n return assembleCartlines(cartlines, products, props);\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ICartState } from '@msdyn365-commerce/global-state';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n CartLine,\n ChannelDeliveryOptionConfiguration,\n DeliveryOption,\n OrgUnitLocation,\n ProductDeliveryOptions,\n SimpleProduct\n} from '@msdyn365-commerce/retail-proxy';\nimport { IStoreSelectorStateManager } from '@msdyn365-commerce-modules/bopis-utilities';\nimport { INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface IPickUpInStoreViewProps {\n callbacks: {\n toggleBopis(isBopisSelected: boolean): void;\n };\n defaultComponent?: React.ReactNode;\n orgUnitName?: string;\n isBopisSelected: boolean;\n ContainerProps: INodeProps;\n deliveryOption?: string;\n}\n\nexport interface IPickUpInStoreProps {\n cartline: CartLine;\n product: SimpleProduct;\n shipitText: string;\n pickUpInStoreText: string;\n changeStoreText: string;\n cartState: ICartState | undefined;\n storeSelectorStateManager: IStoreSelectorStateManager | undefined;\n orgUnitLocations?: OrgUnitLocation[] | undefined;\n deliveryOptions?: ProductDeliveryOptions;\n pickupDeliveryModeCode?: string;\n storeSelectorModuleId?: string;\n channelDeliveryOptionConfig?: ChannelDeliveryOptionConfiguration;\n retailMulitplePickupFeatureState?: boolean;\n locationChangedHandler(): void;\n}\n\nexport const PickUpInStore = (props: IPickUpInStoreProps): IPickUpInStoreViewProps | undefined => {\n const _onLocationChangedCallback = async (\n orgUnitLocation: OrgUnitLocation,\n cartState: ICartState | undefined,\n cartline: CartLine,\n deliveryMode?: string\n ) => {\n if (!cartState) {\n return Promise.resolve();\n }\n return cartState\n .updateCartLinePickupLocation({ cartLineId: cartline.LineId!, location: orgUnitLocation, deliveryMode })\n .then(result => {\n if (result.status === 'SUCCESS') {\n props.locationChangedHandler();\n }\n })\n .catch(error => {});\n };\n\n const _toggleBOPIS = (isBopisSelected: boolean) => {\n const { storeSelectorStateManager, product, cartline, cartState, storeSelectorModuleId } = props;\n\n if (isBopisSelected) {\n if (!storeSelectorStateManager) {\n return;\n }\n storeSelectorStateManager\n .openDialog({\n id: storeSelectorModuleId,\n product,\n alreadySelectedLocation: {\n OrgUnitNumber: cartline.FulfillmentStoreId\n },\n deliveryOptions: props.deliveryOptions,\n onLocationSelected: async (orgUnitLocation, deliveryMode: string | undefined) => {\n return _onLocationChangedCallback(orgUnitLocation, cartState, cartline, deliveryMode);\n }\n })\n .catch(error => {});\n } else {\n if (!cartState) {\n return;\n }\n cartline.DeliveryMode = '';\n cartline.FulfillmentStoreId = '';\n cartline.ShippingAddress = {};\n cartState\n .clearCartLinePickupLocation({ cartLineId: cartline.LineId! })\n .then(result => {\n if (result.status === 'SUCCESS') {\n props.locationChangedHandler();\n }\n })\n .catch(error => {});\n }\n };\n\n const _getOrgUnitName = (fulfillmentStoreId: string | undefined, orgUnitLocations: OrgUnitLocation[] | undefined) => {\n if (!orgUnitLocations || !fulfillmentStoreId || orgUnitLocations.length === 0) {\n return '';\n }\n\n const foundLocation = orgUnitLocations.find(orgUnitLocation => {\n return orgUnitLocation.OrgUnitNumber === fulfillmentStoreId;\n });\n\n if (foundLocation) {\n return foundLocation.OrgUnitName;\n }\n return fulfillmentStoreId;\n };\n\n const _renderShippingMethod = (\n cartLine: CartLine,\n shipItText: string,\n pickupInStoretext: string,\n changeStoreText: string,\n orgUnitLocations: OrgUnitLocation[] | undefined\n ): JSX.Element => {\n const orgUnitName = _getOrgUnitName(cartLine.FulfillmentStoreId, orgUnitLocations);\n const bopisSelected = !!cartLine.FulfillmentStoreId;\n\n const toggleBOPIS = (isBopisSelected: boolean) => {\n return () => {\n _toggleBOPIS(isBopisSelected);\n };\n };\n\n return (\n <>\n \n \n {cartLine.FulfillmentStoreId ? (\n
\n {orgUnitName}\n \n
\n ) : null}\n \n );\n };\n\n const _getDeliveryOption = (pickupStore: IPickUpInStoreProps, deliveryOptions: ProductDeliveryOptions) => {\n const delivery = deliveryOptions?.DeliveryOptions?.find(option => option.Code === pickupStore.pickupDeliveryModeCode);\n return delivery?.Description;\n };\n\n /**\n * Method to check if we have atleast one common delivery code between product and channel.\n * @param productdeliveryOptions - Product DeliveryOption List.\n * @param storePickUpOptionList - Channel DeliveryOption List.\n * @returns Boolean flag.\n */\n const matchDeliveryOptions = (\n productdeliveryOptions: DeliveryOption[] | undefined,\n storePickUpOptionList: string[] | undefined\n ): boolean => {\n const deliveryOption: string[] = [];\n productdeliveryOptions?.map(delivery => {\n const pickup = storePickUpOptionList?.find(deliveryCode => deliveryCode === delivery.Code);\n if (pickup) {\n deliveryOption.push(pickup);\n }\n return deliveryOption;\n });\n\n return ArrayExtensions.hasElements(deliveryOption);\n };\n\n // If no delivery options present on the product, or none of the delivery options\n // match the PickupDeliveryModeCode, that means the item cannot be used for BOPIS\n if (!props.deliveryOptions || !props.deliveryOptions.DeliveryOptions) {\n return undefined;\n }\n\n if (props.retailMulitplePickupFeatureState && props.channelDeliveryOptionConfig) {\n if (!matchDeliveryOptions(props.deliveryOptions.DeliveryOptions, props.channelDeliveryOptionConfig?.PickupDeliveryModeCodes)) {\n return undefined;\n }\n } else if (\n !props.pickupDeliveryModeCode ||\n !props.deliveryOptions.DeliveryOptions.find(option => option.Code === props.pickupDeliveryModeCode)\n ) {\n return undefined;\n }\n\n return {\n callbacks: {\n toggleBopis: _toggleBOPIS\n },\n defaultComponent: _renderShippingMethod(\n props.cartline,\n props.shipitText,\n props.pickUpInStoreText,\n props.changeStoreText,\n props.orgUnitLocations\n ),\n orgUnitName: _getOrgUnitName(props.cartline.FulfillmentStoreId, props.orgUnitLocations),\n isBopisSelected: !!props.cartline.FulfillmentStoreId,\n deliveryOption: _getDeliveryOption(props, props.deliveryOptions),\n ContainerProps: {\n className: 'msc-cart-line__bopis-container'\n }\n };\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n CacheType,\n createObservableDataAction,\n IAction,\n IActionContext,\n IActionInput,\n IAny,\n ICommerceApiSettings,\n ICreateActionContext,\n IGeneric\n} from '@msdyn365-commerce/core';\nimport { buildCacheKey } from '@msdyn365-commerce-modules/retail-actions';\n\nimport { CheckoutState } from './checkout-state';\n\n/**\n * CheckoutState - action input.\n */\nexport class CheckoutStateInput implements IActionInput {\n private readonly apiSettings: ICommerceApiSettings;\n\n constructor(apiSettings: ICommerceApiSettings) {\n this.apiSettings = apiSettings;\n }\n\n public getCacheKey = () => buildCacheKey('CheckoutState', this.apiSettings);\n\n public getCacheObjectType = () => 'CheckoutState';\n\n public dataCacheType = (): CacheType => 'request';\n}\n\n/**\n * CheckoutState - action.\n * @param input\n * @param ctx\n */\nexport async function checkoutStateAction(input: CheckoutStateInput, ctx: IActionContext): Promise {\n return new CheckoutState();\n}\n\n/**\n * CheckoutState - create new input for create action.\n * @param inputData\n */\nconst createInput = (inputData: ICreateActionContext>): IActionInput => {\n return new CheckoutStateInput(inputData.requestContext.apiSettings);\n};\n\n/**\n * CheckoutState - create action.\n */\nexport const checkoutStateActionDataAction = createObservableDataAction({\n action: >checkoutStateAction,\n input: createInput\n});\n\nexport default checkoutStateActionDataAction;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IGiftCardExtend } from '@msdyn365-commerce/global-state';\nimport { Address, GiftCard, TenderLine, TokenizedPaymentCard } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { action, computed, observable } from 'mobx';\n\n/**\n * State information related to what is needed to succesfully perform a checkout.\n */\nexport class CheckoutState {\n @observable private _tokenizedPaymentCard: TokenizedPaymentCard | undefined;\n\n @computed public get tokenizedPaymentCard(): Readonly | undefined {\n return this._tokenizedPaymentCard;\n }\n\n @observable private _tenderLine: TenderLine | undefined;\n\n @computed public get tenderLine(): Readonly | undefined {\n return this._tenderLine;\n }\n\n @observable private _billingAddress: Address | undefined;\n\n @computed public get billingAddress(): Readonly
| undefined {\n return this._billingAddress;\n }\n\n @observable private _shippingAddress: Address | undefined;\n\n @computed public get shippingAddress(): Readonly
| undefined {\n return this._shippingAddress;\n }\n\n @observable private _cardPrefix: string | undefined;\n\n @computed public get cardPrefix(): Readonly | undefined {\n return this._cardPrefix;\n }\n\n @observable private _giftCards: GiftCard[] = [];\n\n @computed public get giftCards(): readonly GiftCard[] {\n return this._giftCards;\n }\n\n @observable private _giftCardExtends: IGiftCardExtend[] = [];\n\n @computed public get giftCardExtends(): readonly IGiftCardExtend[] {\n return this._giftCardExtends;\n }\n\n @observable private _loyaltyCardNumber?: string;\n\n @computed public get loyaltyCardNumber(): Readonly | undefined {\n return this._loyaltyCardNumber;\n }\n\n @observable private _loyaltyAmount: number = 0;\n\n @computed public get loyaltyAmount(): Readonly | number {\n return this._loyaltyAmount;\n }\n\n @observable private _guestCheckoutEmail: string = '';\n\n @computed public get guestCheckoutEmail(): Readonly | string {\n return this._guestCheckoutEmail;\n }\n\n @observable private _isTermsAndConditionAccepted: boolean = false;\n\n @computed public get isTermsAndConditionAccepted(): Readonly | boolean {\n return this._isTermsAndConditionAccepted;\n }\n\n @observable private _customerAccountAmount: number = 0;\n\n @computed public get customerAccountAmount(): Readonly | number {\n return this._customerAccountAmount;\n }\n\n @action\n public updateTokenizedPaymentCard(newTokenizedPaymentCard: TokenizedPaymentCard): void {\n this._tokenizedPaymentCard = newTokenizedPaymentCard;\n }\n\n @action\n public updateTenderLine(newTenderLine: TenderLine | undefined): void {\n this._tenderLine = newTenderLine;\n }\n\n @action\n public updateShippingAddress(newShippingAddress: Address): void {\n this._shippingAddress = newShippingAddress;\n }\n\n @action\n public updateBillingAddress(newBillingAddress: Address): void {\n this._billingAddress = newBillingAddress;\n }\n\n @action\n public updateCardPrefix(newCardPrefix: string): void {\n this._cardPrefix = newCardPrefix;\n }\n\n @action\n public removeGiftCard(giftCardNumber: string): void {\n this._giftCards = this._giftCards.filter(giftCard => giftCard.Id !== giftCardNumber);\n }\n\n @action\n public removeGiftCardExtend(giftCardNumber: string): void {\n this._giftCardExtends = this._giftCardExtends.filter(giftCard => giftCard.Id !== giftCardNumber);\n }\n\n @action\n public addGiftCard(giftCard: GiftCard): void {\n this._giftCards = [giftCard, ...this._giftCards];\n }\n\n @action\n public addGiftCardExtend(giftCard: IGiftCardExtend): void {\n this._giftCardExtends = [giftCard, ...this._giftCards];\n }\n\n @action\n public updateLoyaltyCardNumber(newLoyaltyCardNumber: string): void {\n this._loyaltyCardNumber = newLoyaltyCardNumber;\n }\n\n @action\n public updateLoyaltyAmount(newAmount: number): void {\n this._loyaltyAmount = newAmount;\n }\n\n @action\n public updateGuestCheckoutEmail(newGuestCheckoutEmail: string): void {\n this._guestCheckoutEmail = newGuestCheckoutEmail;\n }\n\n @action\n public updateTermsAndConditionsAcceptance(newIsTermsAndConditionAccepted: boolean): void {\n this._isTermsAndConditionAccepted = newIsTermsAndConditionAccepted;\n }\n\n @action\n public updateCustomerAccountAmount(newAmount: number): void {\n this._customerAccountAmount = newAmount;\n }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { CacheType, IActionContext, IActionInput } from '@msdyn365-commerce/core';\n\nimport { IModuleStates } from './module-state.data';\n\n/**\n * GetModulesInput.\n */\nexport class ModuleStatesCacheKey implements IActionInput {\n public getCacheKey = () => 'ModuleState';\n\n public getCacheObjectType = () => 'ModuleState';\n\n public dataCacheType = (): CacheType => 'none';\n}\n\nexport function getModuleStates(ctx: IActionContext): IModuleStates {\n const cacheKey = new ModuleStatesCacheKey();\n\n let moduleStates = ctx.get(cacheKey.getCacheObjectType(), cacheKey.getCacheKey());\n if (moduleStates) {\n return moduleStates;\n }\n ctx.update(cacheKey, {});\n moduleStates = ctx.get(cacheKey.getCacheObjectType(), cacheKey.getCacheKey());\n return moduleStates;\n}\n\nexport function updateModuleStates(value: IModuleStates, ctx: IActionContext): void {\n const cacheKey = new ModuleStatesCacheKey();\n ctx.update(cacheKey, value);\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IModule } from '@msdyn365-commerce/core';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport isMatch from 'lodash/isMatch';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { getModuleStates, updateModuleStates } from './module-state';\nimport { IModuleState, IModuleStateManager, IModuleStateProps, IModuleStates } from './module-state.data';\n\nexport interface IProps extends IModule, IModuleStateProps {\n enableControl?: boolean;\n}\n\nconst sectionContainerModuleId = 'section-container';\nconst paymentInstrumentModuleId = 'payment-instrument';\n\nconst withModuleState =

(WrappedComponent: React.ComponentType

): React.ComponentType

=> {\n /**\n *\n * ModuleState component.\n * @extends {React.Component

}\n */\n @observer\n class ModuleState extends React.Component

{\n constructor(props: P) {\n super(props);\n this.initializeState();\n }\n\n public shouldComponentUpdate(nextProps: IModuleStateProps): boolean {\n if (this.props === nextProps) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element | null {\n const { id } = this.props;\n return ;\n }\n\n private readonly initializeState = (): void => {\n const { id, typeName, context } = this.props;\n const states = getModuleStates(context.actionContext);\n if (!states) {\n this.props.telemetry.error('withModuleState initializeState() - states not found');\n return;\n }\n\n if (states[id]) {\n // State has been initialized\n return;\n }\n\n updateModuleStates(\n {\n ...states,\n [id]: {\n id,\n typeName,\n hasInitialized: false,\n hasError: false,\n isRequired: true,\n isCancellable: true,\n isSubmitContainer: false,\n status: undefined,\n childIds: []\n }\n },\n context.actionContext\n );\n };\n\n /**\n * GetModuleStateManager\n * Get module state manager by id.\n * @param id\n */\n private readonly getModuleStateManager = (id: string): IModuleStateManager => {\n const moduleState = this.get()[id];\n return {\n ...moduleState!,\n hasInitialized: this.validate(id, { hasInitialized: true }, true), // All has initialized is initialized\n hasError: this.validate(id, { hasError: true }), // Partial has error is error\n isReady: this.validate(id, { status: 'ready' }, true, true), // All ready is ready (exclued disabled and skipped)\n isUpdating: this.validate(id, { status: 'updating' }), // Partial updating is updating\n isPending: this.validate(id, { status: 'pending' }), // Partial pending is pending\n isSkipped: this.validate(id, { status: 'skipped' }, true, true), // All skipped is skipped (exclued disabled)\n isDisabled: this.validate(id, { status: 'disabled' }, true), // All disabled is disabled\n isCancelAllowed: this.validate(id, { isCancellable: true }, true, true), // Partial not allowed is not allowed\n shouldSubmitContainer: this.validate(id, { isSubmitContainer: true }), // Partial submit is submit.\n hasExternalSubmitGroup: this.hasExternalSubmitGroup(),\n hasModuleState: this.hasModuleState(id),\n setIsRequired: (value: boolean): void => {\n this.update(id, { isRequired: value });\n },\n setIsCancellable: (value: boolean): void => {\n this.update(id, { isCancellable: value });\n },\n setIsSubmitContainer: (value: boolean): void => {\n this.update(id, { isSubmitContainer: value });\n },\n setHasError: (value: boolean): void => {\n this.update(id, { hasError: value });\n },\n onReady: (): void => {\n this.update(id, { status: 'ready' });\n },\n onUpdating: (): void => {\n this.update(id, { status: 'updating' });\n },\n onPending: (): void => {\n this.update(id, { status: 'pending' });\n },\n onSkip: (): void => {\n this.update(id, { status: 'skipped' });\n },\n onDisable: (): void => {\n this.update(id, { status: 'disabled' });\n },\n getModule: (moduleId: string): IModuleStateManager => this.getModuleStateManager(moduleId),\n getModuleByTypeName: (typeName: string): IModuleStateManager => this.getModuleStateManagerByTypeName(typeName),\n init: (options?: Partial): void => {\n if (moduleState?.hasInitialized) {\n // State has been initialized\n return;\n }\n this.update(id, {\n hasInitialized: true,\n ...options\n });\n }\n };\n };\n\n /**\n * GetModuleStateManagerByTypeName\n * Get module state manager by type name.\n * @param typeName\n */\n private readonly getModuleStateManagerByTypeName = (typeName: string): IModuleStateManager => {\n const moduleStates = getModuleStates(this.props.context.actionContext);\n const moduleState = Object.values(moduleStates).find(_moduleState => _moduleState?.typeName === typeName);\n return this.getModuleStateManager((moduleState && moduleState.id) || '');\n };\n\n /**\n * Get\n * Get all module states.\n */\n private readonly get = (): IModuleStates => {\n return getModuleStates(this.props.context.actionContext);\n };\n\n /**\n * Update\n * Update module state.\n * @param id\n * @param value\n */\n private readonly update = (id: string, value: Partial): void => {\n // Console.log('withModuleState - update', id, value);\n const modules = this.get();\n if (!modules[id]) {\n this.props.telemetry.error(`withModuleState update() - Module state with id ${id} is not found.`);\n return;\n }\n modules[id] = {\n ...modules[id]!,\n ...value\n };\n };\n\n private readonly _validateLeaf = (id: string, source: Partial): boolean => {\n const modules = this.get();\n const module = modules[id];\n if (!module) {\n return false;\n }\n return isMatch(module, source);\n };\n\n private readonly _validateContainer = (\n id: string,\n source: Partial,\n allMatched?: boolean,\n skipSkippableItem?: boolean\n ): boolean => {\n const modules = this.get();\n const module = modules[id];\n if (!module) {\n // Module doesn't has module state\n return !!allMatched;\n }\n\n if (skipSkippableItem && (module.status === 'disabled' || module.status === 'skipped')) {\n // Skip disabled or skipped modules\n return !!allMatched;\n }\n\n // It is leaf module\n if (!module.childIds || module.childIds.length === 0) {\n return this._validateLeaf(id, source);\n }\n\n let childIds = module.childIds;\n\n if (this.props.context.app.config.shouldEnableSinglePaymentAuthorizationCheckout) {\n // For new checkout flow, we bypass the isReady check for payment section container to enable the place order button.\n childIds = childIds.filter(childId => !this._isPaymentSectionContainer(childId));\n }\n\n // It is container module\n const method = allMatched ? 'every' : 'some';\n return childIds[method](childId => this._validateContainer(childId, source, allMatched, skipSkippableItem));\n };\n\n /**\n * Check if it is a section container with payment module.\n * @param moduleId -- The id of the module.\n * @returns If it is a section container with payment module.\n */\n private readonly _isPaymentSectionContainer = (moduleId: string): boolean => {\n if (!moduleId.includes(sectionContainerModuleId)) {\n return false;\n }\n\n const modules = this.get();\n const module = modules[moduleId];\n\n if (module && ArrayExtensions.hasElements(module.childIds.filter(childId => childId.includes(paymentInstrumentModuleId)))) {\n return true;\n }\n\n return false;\n };\n\n /**\n * Validate\n * Validate current module and all its child module match the provided condition.\n * @param id\n * @param source\n * @param allMatched\n * @param skipSkippableItem\n */\n private readonly validate = (\n id: string,\n source: Partial,\n allMatched?: boolean,\n skipSkippableItem?: boolean\n ): boolean => {\n const modules = this.get();\n const module = modules[id];\n if (!module) {\n return false;\n }\n\n // It is leaf module\n if (!module.childIds || module.childIds.length === 0) {\n return this._validateLeaf(id, source);\n }\n\n // It is container module\n return this._validateContainer(id, source, allMatched, skipSkippableItem);\n };\n\n /**\n * HasExternalSubmitGroup\n * Module will use external submit group.\n */\n private readonly hasExternalSubmitGroup = (): boolean => {\n return !!this.props.enableControl;\n };\n\n /**\n * HasModuleState\n * Module is using module state manager.\n * @param id\n */\n private readonly hasModuleState = (id: string): boolean => {\n const modules = this.get();\n const module = modules[id];\n return !!module;\n };\n }\n\n return ModuleState;\n};\n\nexport default withModuleState;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\n// eslint-disable-next-line import/no-anonymous-default-export -- Existing code.\nexport default `\n .adyen-dropin {\n font-family: -apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif;\n font-weight: normal;\n font-size: 16px;\n line-height: 21px;\n margin-left: -7px;\n text-transform: none;\n }\n\n /* Card pannel */\n\n .adyen-checkout__payment-method--next-selected,\n .adyen-checkout__payment-method:last-child {\n background-color: transparent;\n background: none !important;\n border: none;\n }\n\n .adyen-checkout__payment-method__name {\n color: #1D1D1D;\n font-weight: normal;\n }\n\n .adyen-checkout__label__text--error,\n .adyen-checkout__helper-text,\n .adyen-checkout__label__text {\n color: #1D1D1D;\n font-size: 18px;\n line-height: 24px;\n padding-bottom: 4px;\n }\n\n .adyen-checkout__error-text {\n color: #A80000;\n font-size: 16px;\n line-height: 21px;\n }\n\n .adyen-checkout__input {\n background: white;\n box-shadow: none;\n border: none;\n border-radius: 0;\n box-shadow: none;\n color: #1D1D1D;\n height: 42px;\n padding: 5px 8px;\n }\n\n .adyen-checkout__input--focus,\n .adyen-checkout__input--focus:hover,\n .adyen-checkout__input:active,\n .adyen-checkout__input:active:hover,\n .adyen-checkout__input:focus,\n .adyen-checkout__input:focus:hover {\n border: 1px dashed #fff;\n outline: 1px dashed #000;\n box-shadow: none;\n }\n\n .adyen-checkout__input:hover {\n border: none;\n }\n\n .adyen-checkout__input--error,\n .adyen-checkout__input--error:hover,\n .adyen-checkout__input--invalid,\n .adyen-checkout__input--invalid:hover {\n border: none;\n border-left: 2px solid #A80000;\n color: #A80000;\n }\n\n .adyen-checkout__label--focused .adyen-checkout__label__text {\n color: inherit;\n }\n`;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Button } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { Iframe } from './iframe';\nimport defaultPaymentConnectorDropinStyle from './payment-instrument.dropin.style';\nimport defaultPaymentConnectorPaypalStyle from './payment-instrument.paypal.style';\nimport defaultPaymentConnectorStyle from './payment-instrument.style';\n\n/**\n * Interface for add payment form.\n */\nexport interface IAddPaymentFormProps {\n acceptPageUrl?: string;\n acceptPageContent?: string;\n iframeRef?: React.RefObject