{"version":3,"file":"static/js/f86cc440e45b3f1f60d9.bundle.js","mappings":"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","sources":["webpack://Msdyn365.Commerce.Online/./src/common/utilities.ts?0172","webpack://Msdyn365.Commerce.Online/./src/common/get-order-information.tsx?c2e1","webpack://Msdyn365.Commerce.Online/./src/common/get-groups.tsx?699f","webpack://Msdyn365.Commerce.Online/./src/common/get-sales-lines.tsx?10c6","webpack://Msdyn365.Commerce.Online/./src/common/label.tsx?9c2c","webpack://Msdyn365.Commerce.Online/./src/common/buy-selected-component.tsx?9efa","webpack://Msdyn365.Commerce.Online/./src/common/get-sales-line.tsx?61be","webpack://Msdyn365.Commerce.Online/./src/common/address.tsx?e12e"],"sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IAny, ICoreContext, IGeneric, IImageSettings, IModule, ITelemetry } from '@msdyn365-commerce/core';\nimport { SalesLine, TenderType } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { format } from '@msdyn365-commerce-modules/utilities';\nimport groupBy from 'lodash/groupBy';\n\nimport { ISalesLine } from './get-sales-line';\n\nexport interface IModuleComponentProps extends IModule {\n config: {\n imageSettings?: IImageSettings;\n showShippingChargesForLineItems?: boolean;\n };\n}\n\nexport interface IPriceContext {\n id: string;\n typeName: string;\n context: ICoreContext>;\n telemetry: ITelemetry;\n freePriceText: string;\n}\n\nexport const getTenderIdOperationIdMap = (tenderTypes: TenderType[]): object => {\n return tenderTypes.reduce((map, tenderType) => {\n if (tenderType.TenderTypeId) {\n map[tenderType.TenderTypeId] = tenderType.OperationId;\n }\n return map;\n }, {});\n};\n\nexport const countItems = (salesLines: SalesLine[]) => {\n return salesLines.reduce((count, salesLine) => {\n return count + (salesLine.Quantity || 0);\n }, 0);\n};\n\nexport const getSalesLinesByDelivery = (salesLines?: SalesLine[], pickupDeliveryModeCode?: string): SalesLine[] => {\n if (!salesLines || salesLines.length === 0) {\n return [];\n }\n return salesLines.filter(salesLine =>\n // IsPickUp ? getPickUp : getOthers\n pickupDeliveryModeCode && pickupDeliveryModeCode !== ''\n ? salesLine.DeliveryMode === pickupDeliveryModeCode\n : salesLine.DeliveryMode !== pickupDeliveryModeCode\n );\n};\n\nexport const defaultImageSettings: IImageSettings = {\n viewports: {\n xs: { q: 'w=80&h=80&m=6', w: 0, h: 0 },\n lg: { q: 'w=147&h=147&m=6', w: 0, h: 0 }\n },\n lazyload: true,\n cropFocalRegion: true\n};\n\nexport type IDeliveryType = 'pickUp' | 'ship' | 'carryOut' | 'email';\n\nexport type ISalesStatusCode = 'canceled' | 'readyForPickup' | 'pickedUp' | 'processing' | 'shipped' | 'unknown' | 'emailed';\n\nexport const getSalesStatusCode = (deliveryType: string, statusValue?: number, pickupMode?: string): ISalesStatusCode => {\n if (statusValue === 7) {\n return 'canceled';\n }\n\n if (deliveryType === 'pickUp') {\n switch (statusValue) {\n case 3:\n return 'readyForPickup';\n case 4:\n return 'pickedUp';\n default:\n return 'processing';\n }\n } else if (deliveryType === 'ship') {\n switch (statusValue) {\n case 3:\n return 'processing';\n case 4:\n return 'shipped';\n default:\n return 'processing';\n }\n } else if (deliveryType === 'email') {\n switch (statusValue) {\n case 3:\n return 'processing';\n case 4:\n return 'emailed';\n default:\n return 'processing';\n }\n } else if (deliveryType === 'carryOut') {\n return 'processing';\n } else {\n if (pickupMode !== undefined) {\n switch (statusValue) {\n case 3:\n return 'readyForPickup';\n case 4:\n return 'pickedUp';\n default:\n return 'processing';\n }\n }\n\n return 'unknown';\n }\n};\n\nexport type ITrackingId = string | 'unknown';\nexport type IAddressId = string | 'unknown';\n\nexport interface IGroupData {\n deliveryType: IDeliveryType;\n salesStatus: ISalesStatusCode;\n addressId: IAddressId | 'unknown';\n trackingId: ITrackingId | 'unknown';\n count: number;\n salesLines: ISalesLine[];\n}\n\nexport const groupSalesLines = (salesLines: ISalesLine[]): IGroupData[] => {\n const getGroupByDeliveryType = (items: ISalesLine[]) => groupBy(items, item => item.data.deliveryType);\n const getGroupBySalesStatusCode = (items: ISalesLine[]) => groupBy(items, item => item.data.salesStatus);\n const getGroupByTrackingId = (items: ISalesLine[]) => groupBy(items, item => item.data.salesLine.TrackingId || 'unknown');\n const getGroupByAddressId = (items: ISalesLine[]) =>\n groupBy(items, item => (item.data.salesLine.ShippingAddress && item.data.salesLine.ShippingAddress.RecordId) || 'unknown');\n\n const flatGroup: IGroupData[] = [];\n\n // 1) Group by delivery type\n const group = getGroupByDeliveryType(salesLines);\n\n // 2) Group by sales status code\n Object.entries(group).forEach(([deliveryType, groupByDeliveryType]) => {\n // @ts-expect-error\n group[deliveryType] = getGroupBySalesStatusCode(groupByDeliveryType);\n\n Object.entries(group[deliveryType]).forEach(([salesStatus, groupBySalesStatusCode]) => {\n // @ts-expect-error 3) Group by address id\n groupBySalesStatusCode[salesStatus] = getGroupByAddressId(groupBySalesStatusCode);\n\n Object.entries(groupBySalesStatusCode[salesStatus]).forEach(([addressId, groupByAddressId]) => {\n // @ts-expect-error 4) Group by address id\n groupByAddressId[addressId] = getGroupByTrackingId(groupByAddressId);\n\n // @ts-expect-error\n Object.entries(groupByAddressId[addressId]).forEach(([trackingId, groupByTrackingId]) => {\n flatGroup.push({\n // @ts-expect-error\n deliveryType,\n\n // @ts-expect-error\n salesStatus,\n addressId,\n trackingId,\n\n // @ts-expect-error\n count: countItems(groupByTrackingId.map(item => item.data.salesLine)),\n\n // @ts-expect-error\n salesLines: groupByTrackingId\n });\n });\n });\n });\n });\n\n return flatGroup;\n};\n\nexport const getDateTimeslot = (placeHolder: string, startDate: Date | undefined, endDate: Date | undefined, locale: string): string => {\n if (!startDate || !endDate) {\n return '';\n }\n\n const dateOptions: Intl.DateTimeFormatOptions = {\n timeZone: 'UTC'\n };\n const dateformatter = new Intl.DateTimeFormat(locale, dateOptions);\n const date = dateformatter.format(new Date(startDate));\n\n const timeslotOptions: Intl.DateTimeFormatOptions = {\n hour: 'numeric',\n minute: 'numeric',\n hour12: true,\n timeZone: 'UTC'\n };\n const timeslotformatter = new Intl.DateTimeFormat(locale, timeslotOptions);\n const timeslot = format(placeHolder, timeslotformatter.format(new Date(startDate)), timeslotformatter.format(new Date(endDate)));\n return `${date} ${timeslot}`;\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { PriceComponent } from '@msdyn365-commerce/components';\nimport {\n ChannelIdentity,\n Customer,\n Note,\n OrderOriginator,\n OrderShipments,\n OrgUnitLocation,\n SalesOrder\n} from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions, StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport get from 'lodash/get';\nimport QRCode from 'qrcode.react';\nimport * as React from 'react';\n\nimport { countItems, IModuleComponentProps, IPriceContext } from './utilities';\n\n/**\n * Interface for order information input resources.\n */\nexport interface IOrderInformationInputResources {\n receiptEmailMessage?: string;\n orderItemLabel: string;\n orderItemsLabel: string;\n processingLabel: string;\n orderIdLabel: string;\n receiptIdLabel: string;\n confirmationIdLabel: string;\n trackingLabel: string;\n trackingAriaLabel: string;\n trackingComingSoonLabel: string;\n posChannelNameText?: string;\n onlineStoreChannelNameText?: string;\n orderPlacedOnLabel?: string;\n qrCodeSrText?: string;\n callCenterChannelNameText?: string;\n orderPlacedByFullText?: string;\n orderPlacedByYouText?: string;\n orderOnBehalfOfText?: string;\n noteLabel?: string;\n orderDetailsRequestDeliveryDateText?: string;\n}\n\n/**\n * Interface for order information input.\n */\nexport interface IOrderInformationInput {\n moduleName: string;\n channelReferenceId?: string;\n channelName?: string;\n channelAddress?: string;\n showChannelInfo?: boolean;\n receiptEmail?: string;\n createdDate?: string;\n amount?: number;\n priceContext: IPriceContext;\n salesId?: string;\n receiptId?: string;\n hasTrackingInfo?: boolean;\n count?: number;\n resources: IOrderInformationInputResources;\n isSalesInvoice?: boolean;\n shouldShowQrCode?: boolean;\n channelTypeValue?: number;\n originator?: OrderOriginator;\n isYou?: [boolean, boolean]; // deprecated\n isB2bAdmin?: boolean;\n isOnlineStore?: boolean;\n priceCurrency?: string;\n note?: Note;\n customer?: Customer;\n}\n\nconst callCenterChannelTypeValue = 4;\n\n/**\n * Interface for order information.\n */\nexport interface IOrderInformation {\n orderInformationProps: INodeProps;\n channelName: React.ReactNode;\n channelAddress: React.ReactNode;\n placedBy?: React.ReactNode;\n salesId: React.ReactNode;\n receiptId: React.ReactNode;\n receiptEmail: React.ReactNode;\n createdDate: React.ReactNode;\n count: React.ReactNode;\n amount: React.ReactNode;\n channelReferenceId: React.ReactNode;\n note?: React.ReactNode;\n}\n\n/**\n * The order confirmation ID node.\n * @param channelReferenceId - The order confirmation id.\n * @param moduleName - The module name.\n * @param confirmationIdLabel - The confirmation label.\n * @param shouldShowQrCode - Should the view show the QR code.\n * @param qrCodeSrText - The screen reader text of the QR code.\n * @returns The react node for order confirmation ID.\n */\nconst getChannelReference = (\n channelReferenceId: string | undefined,\n moduleName: string,\n confirmationIdLabel: string,\n shouldShowQrCode: boolean | undefined,\n qrCodeSrText?: string\n): React.ReactNode | undefined => {\n const confirmationIdNode: React.ReactNode = (\n \n {`${confirmationIdLabel} `}\n {channelReferenceId}\n \n );\n return (\n channelReferenceId &&\n (shouldShowQrCode !== undefined && shouldShowQrCode ? (\n
\n {confirmationIdNode}\n
\n \n \n {qrCodeSrText}\n \n
\n
\n ) : (\n confirmationIdNode\n ))\n );\n};\n\n/**\n * The order confirmation ID node.\n * @param note - The order confirmation id.\n * @param moduleName - The module name.\n * @param noteLabel - The note label.\n * @returns The react node for order note.\n */\nconst getOrderNote = (moduleName: string, note?: Note, noteLabel?: string): React.ReactNode | undefined => {\n if (note === undefined || StringExtensions.isNullOrWhitespace(note.Description)) {\n return null;\n }\n return (\n
\n
\n
{noteLabel}
\n
\n
{note.Description}
\n
\n );\n};\n\n/**\n * Get Channel name to display on order history.\n * @param channelTypeValue - The channel type.\n * @param moduleName - The module name.\n * @param callCenterChannelNameText - The call center channel name.\n * @param channelAddress - Channel Address.\n * @param posChannelNameText - POS channel name.\n * @param channelName - Channel Name.\n * @param onlineStoreChannelNameText - Online store channel name.\n * @returns The react node for channel name label.\n */\nexport const getChannelName = (\n channelTypeValue: number | undefined,\n moduleName: string,\n callCenterChannelNameText: string | undefined,\n channelAddress: string | undefined,\n posChannelNameText: string | undefined,\n channelName: string | undefined,\n onlineStoreChannelNameText: string | undefined\n): React.ReactNode => {\n let channelNameNode: React.ReactNode;\n if (channelTypeValue === callCenterChannelTypeValue) {\n channelNameNode = {callCenterChannelNameText};\n } else if (channelAddress) {\n const posChannelName = `${posChannelNameText ?? ''} ${channelName ?? ''}`;\n channelNameNode = {posChannelName};\n } else {\n const onlineChannelName = `${onlineStoreChannelNameText ?? ''} ${channelName ?? ''}`;\n channelNameNode = {onlineChannelName};\n }\n return channelNameNode;\n};\n\n/**\n * Get order information.\n * @param {IOrderInformationInput} param0 The input for order information.\n * @returns {IOrderInformation} The order information.\n */\nexport const getOrderInformation = ({\n moduleName,\n channelReferenceId,\n channelName,\n channelAddress,\n channelTypeValue,\n showChannelInfo,\n receiptEmail,\n createdDate,\n amount,\n priceContext,\n isOnlineStore,\n customer,\n originator,\n salesId,\n receiptId,\n count,\n resources: {\n receiptEmailMessage,\n orderItemLabel,\n orderItemsLabel,\n orderIdLabel,\n orderPlacedByFullText,\n orderPlacedByYouText,\n orderOnBehalfOfText,\n receiptIdLabel,\n confirmationIdLabel,\n posChannelNameText,\n onlineStoreChannelNameText,\n orderPlacedOnLabel,\n qrCodeSrText,\n callCenterChannelNameText,\n noteLabel\n },\n isSalesInvoice,\n shouldShowQrCode,\n priceCurrency,\n note\n}: IOrderInformationInput): IOrderInformation => {\n const channelNameNode: React.ReactNode = getChannelName(\n channelTypeValue,\n moduleName,\n callCenterChannelNameText,\n channelAddress,\n posChannelNameText,\n channelName,\n onlineStoreChannelNameText\n );\n\n const orderInformation = {\n orderInformationProps: { className: `${moduleName}__order-information` },\n channelName: showChannelInfo && channelName && channelNameNode,\n channelAddress: showChannelInfo && channelAddress && (\n {channelAddress}\n ),\n placedBy: getPlacedBy(\n moduleName,\n isOnlineStore,\n customer,\n originator,\n orderPlacedByFullText,\n orderPlacedByYouText,\n orderOnBehalfOfText\n ),\n salesId: salesId ? {`${orderIdLabel} ${salesId}`} : '',\n receiptId: receiptId ? (\n {`${receiptIdLabel} ${receiptId}`}\n ) : (\n ''\n ),\n receiptEmail: receiptEmail && (\n \n {receiptEmailMessage}\n {receiptEmail}\n \n ),\n createdDate: !isSalesInvoice && createdDate && (\n \n {orderPlacedOnLabel}\n {` `}\n {createdDate}\n \n ),\n count: !isSalesInvoice && count !== undefined && count > 0 && (\n \n {count === 1 ? `${count} ${orderItemLabel}` : `${count} ${orderItemsLabel}`}\n \n ),\n amount: !isSalesInvoice && (amount || amount === 0) && (\n \n ),\n channelReferenceId: getChannelReference(channelReferenceId, moduleName, confirmationIdLabel, shouldShowQrCode, qrCodeSrText),\n note: getOrderNote(moduleName, note, noteLabel)\n };\n\n return orderInformation;\n};\n\n/**\n * Interface for order information props.\n */\ninterface IProps extends IModuleComponentProps {\n resources: IOrderInformationInputResources;\n customer?: Customer;\n}\n\n/**\n * Retrieves order channel name.\n * @param order - Order info.\n * @param channelIdentities - Channels data.\n * @returns String with the name of the channel or an empty string.\n */\nexport const getOrderChannelName: (order: SalesOrder | OrderShipments, channelIdentities?: ChannelIdentity[]) => string = (\n order: SalesOrder | OrderShipments,\n channelIdentities?: ChannelIdentity[]\n) => {\n const orderChannel = channelIdentities?.find(channel => {\n return channel.RecordId === order.ChannelId;\n });\n\n const channelName = orderChannel?.Name ?? '';\n return channelName;\n};\n\n/**\n * Retrieves order channel type value.\n * @param order - Order info.\n * @param channelIdentities - Channels data.\n * @returns The channel type value of the order.\n */\nexport const getOrderChannelTypeValue: (order: SalesOrder | OrderShipments, channelIdentities?: ChannelIdentity[]) => number | undefined = (\n order: SalesOrder | OrderShipments,\n channelIdentities?: ChannelIdentity[]\n) => {\n const orderChannel = channelIdentities?.find(channel => {\n return channel.RecordId === order.ChannelId;\n });\n\n const channelType = orderChannel?.ChannelType.Value;\n return channelType;\n};\n\n/**\n * Retrieves channel is online store or not.\n * @param channelTypeValue - The channel type.\n * @param channelAddress - Channel Address.\n * @returns {Boolean} that indicates that the channel is in the online store.\n */\nexport const isOnlineStoreChannel = (channelTypeValue: number | undefined, channelAddress: string | undefined): boolean => {\n return channelTypeValue !== callCenterChannelTypeValue && !channelAddress;\n};\n\n/**\n * Retrieves order channel address.\n * @param order - Order info.\n * @param orgUnitLocations - OrgUnitLocation data.\n * @returns String with the address of the channel or an empty string.\n */\nexport const getOrderChannelAddress: (order: SalesOrder | OrderShipments, orgUnitLocations?: OrgUnitLocation[]) => string = (\n order: SalesOrder | OrderShipments,\n orgUnitLocations?: OrgUnitLocation[]\n) => {\n const orderOrgUnitLocation = orgUnitLocations?.find(location => {\n return location.ChannelId === order.ChannelId;\n });\n\n const channelAddress = orderOrgUnitLocation?.Address ?? '';\n return channelAddress;\n};\n\n/**\n * Get order information input.\n * @param {IProps} props The properties.\n * @param {string} moduleName The module name.\n * @param {SalesOrder | OrderShipments} order The sales order or order shipments.\n * @param {IPriceContext} priceContext The price context.\n * @param {ChannelIdentity[]} channelIdentities A list of channel identities.\n * @param {OrgUnitLocation[]} orgUnitLocations A list of organization unit locations.\n * @param {Customer} customer A current customer.\n * @param {OrderOriginator} originator The order originator.\n * @param {boolean} showChannelInfo Should the view show channel information.\n * @param {boolean} isSalesInvoice Is this a sales invoice.\n * @param {boolean} shouldShowQrCode Should the view show QR code.\n * @returns {IOrderInformationInput} The order information input.\n */\nexport const getOrderInformationInput = (\n props: IProps,\n moduleName: string,\n order: SalesOrder | OrderShipments,\n priceContext: IPriceContext,\n channelIdentities?: ChannelIdentity[],\n orgUnitLocations?: OrgUnitLocation[],\n customer?: Customer,\n originator?: OrderOriginator,\n showChannelInfo?: boolean,\n isSalesInvoice?: boolean,\n shouldShowQrCode?: boolean\n): IOrderInformationInput => {\n const {\n resources,\n context: {\n request: {\n apiSettings: { channelId }\n }\n }\n } = props;\n\n // @ts-expect-error OrderShipments doesn't has ChannelId\n const showTrackingInfo = !!order.ChannelId && order.ChannelId === channelId;\n\n // @ts-expect-error OrderShipments doesn't has Notes\n const showNotes = !!order.Notes && order.Notes.length > 0;\n\n const locale = get(props, 'context.request.locale') || 'en-US';\n const count = order.SalesLines && ArrayExtensions.hasElements(order.SalesLines) ? countItems(order.SalesLines) : 0;\n const channelTypeValue = getOrderChannelTypeValue(order, channelIdentities);\n const channelAddress = getOrderChannelAddress(order, orgUnitLocations);\n // @ts-expect-error OrderShipments doesn't has Notes\n const countNote = showNotes && ArrayExtensions.hasElements(order.Notes) ? order.Notes.length : undefined;\n // @ts-expect-error OrderShipments doesn't has Notes\n // eslint-disable-next-line security/detect-object-injection\n const note = countNote !== undefined ? order.Notes[countNote - 1] : undefined;\n\n return {\n moduleName,\n createdDate: (order.CreatedDateTime && new Date(order.CreatedDateTime).toLocaleDateString(locale)) || '',\n salesId: order.SalesId,\n priceCurrency: order.CurrencyCode,\n customer: customer,\n originator: originator,\n isYou: undefined,\n isB2bAdmin: customer?.IsB2bAdmin,\n receiptId: order.ReceiptId,\n showChannelInfo,\n\n // @ts-expect-error OrderShipments doesn't has ReceiptEmail\n receiptEmail: order.ReceiptEmail,\n channelReferenceId: order.ChannelReferenceId,\n channelName: getOrderChannelName(order, channelIdentities),\n channelAddress: channelAddress,\n amount: order.TotalAmount ?? 0,\n priceContext,\n count,\n resources,\n isSalesInvoice,\n shouldShowQrCode,\n channelTypeValue: channelTypeValue,\n isOnlineStore: isOnlineStoreChannel(channelTypeValue, channelAddress),\n note: note\n };\n};\n\nconst getPlacedBy = (\n moduleName: string,\n isOnlineStore: boolean | undefined,\n customer: Customer | undefined,\n originator: OrderOriginator | undefined,\n orderPlacedByFullText: string | undefined,\n orderPlacedByYouText: string | undefined,\n orderOnBehalfOfText: string | undefined\n): React.ReactNode | undefined => {\n let placedByNode: React.ReactNode | undefined;\n\n if (originator) {\n const staffPlacedOrder: boolean = originator.StaffId && originator.StaffName ? true : false;\n const currentCustomerOwnsOrder: boolean =\n originator.CustomerId && originator.CustomerName && customer?.AccountNumber === originator.CustomerId ? true : false;\n\n let placedByName: string | undefined = originator.CustomerName;\n let placedOnBehalfOfName: string | undefined;\n let wasPlacedByCurrentCustomer: boolean = false;\n let wasPlacedOnBehalfOf: boolean = false;\n let wasPlacedOnBehalfOfCurrentCustomer: boolean = false;\n\n if (staffPlacedOrder) {\n // order was placed in on-behalf-of scenario\n if (isOnlineStore) {\n wasPlacedOnBehalfOf = true;\n placedByName = originator.StaffName;\n placedOnBehalfOfName = originator.CustomerName;\n\n if (currentCustomerOwnsOrder) {\n wasPlacedOnBehalfOfCurrentCustomer = true;\n }\n }\n } else {\n // the order was not placed in on-behalf-of scenario.\n // we must check if the current customer created the order or not.\n if (currentCustomerOwnsOrder) {\n wasPlacedByCurrentCustomer = true;\n }\n }\n\n placedByNode = (\n
\n {orderPlacedByFullText} {placedByName || '-'}{' '}\n {placedByName && wasPlacedByCurrentCustomer && ` ${orderPlacedByYouText}`}\n {wasPlacedOnBehalfOf && (\n
\n {orderOnBehalfOfText} {placedOnBehalfOfName || '-'}{' '}\n {placedOnBehalfOfName && wasPlacedOnBehalfOfCurrentCustomer && ` ${orderPlacedByYouText}`}\n
\n )}\n
\n );\n }\n\n return placedByNode;\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { format, INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport classNames from 'classnames';\nimport * as React from 'react';\n\nimport { ISalesLine } from './get-sales-line';\nimport { groupSalesLines, IDeliveryType, ISalesStatusCode } from './utilities';\n\nexport interface IGroupDelivery {\n deliveryProps: INodeProps;\n pickupProps: INodeProps;\n showTimeslot: boolean;\n heading: React.ReactNode;\n count: React.ReactNode;\n processing: React.ReactNode;\n trackingInfo: React.ReactNode;\n address: React.ReactNode;\n shippingItemsToYou?: React.ReactNode;\n pickupDateTimeslot?: React.ReactNode;\n shippedStatusCheck?: React.ReactNode;\n}\n\nexport interface IGroup {\n groupProps: INodeProps;\n salesLinesProps: INodeProps;\n delivery: IGroupDelivery;\n salesLines: ISalesLine[];\n address: React.ReactNode;\n requestDeliveryDate?: React.ReactNode;\n\n // Row data\n data: {\n count: number;\n deliveryType: IDeliveryType;\n salesStatus: ISalesStatusCode;\n };\n isCashAndCarryTransaction?: boolean;\n}\n\nexport interface IGroupsInput {\n moduleName: string;\n salesLines: ISalesLine[];\n resources: {\n orderItemLabel: string;\n orderItemsLabel: string;\n pickupItemsHeader?: string;\n pickingItemsLabel?: string;\n shippingAddressTitle?: string;\n shippingItemToYouLabel?: string;\n shippingItemToOBOCustomerLabel?: string;\n emailItemsHeader?: string;\n emailingItemsLabel?: string;\n };\n showAddress?: boolean;\n isConfirmationView?: boolean;\n showTimeslot?: boolean;\n retailMultiplePickUpOptionEnabled?: boolean;\n isCashAndCarryTransaction?: boolean;\n isSelectionModeEnabled?: boolean;\n isOboRequest?: boolean;\n customerName?: string;\n}\n\nexport interface IGroups {\n groupsProps: INodeProps;\n groups: IGroup[];\n}\n\n/**\n * Creates sales lines node props object.\n * @param moduleName - Module name to use as a class name prefix.\n * @param isSelectionModeEnabled - Specifies if the selection mode is enabled for the sales lines.\n * @returns Sales lines node props with the class name to use for the sales lines container.\n */\nconst getSalesLinesProps: (moduleName: string, isSelectionModeEnabled?: boolean) => INodeProps = (\n moduleName: string,\n isSelectionModeEnabled?: boolean\n): INodeProps => {\n const className = `${moduleName}__sales-lines`;\n const salesLinesProps: INodeProps = {\n className: classNames(\n className,\n isSelectionModeEnabled ? `${className}__selection-global-enabled` : `${className}__selection-global-disabled`\n )\n };\n return salesLinesProps;\n};\n\nexport const getGroups = ({\n moduleName,\n salesLines,\n showAddress,\n showTimeslot,\n isConfirmationView,\n retailMultiplePickUpOptionEnabled,\n isCashAndCarryTransaction,\n isSelectionModeEnabled,\n customerName,\n isOboRequest,\n resources: {\n orderItemLabel,\n orderItemsLabel,\n pickupItemsHeader,\n pickingItemsLabel,\n shippingAddressTitle,\n shippingItemToYouLabel,\n shippingItemToOBOCustomerLabel,\n emailItemsHeader,\n emailingItemsLabel\n }\n}: IGroupsInput): IGroups => {\n const groups = groupSalesLines(salesLines).map(group => {\n const { deliveryType, salesStatus, count, salesLines: _salesLines } = group;\n const itemLabel = count === 1 ? orderItemLabel : orderItemsLabel;\n const pickingItemsLabelText = pickingItemsLabel && format(pickingItemsLabel, count, itemLabel);\n const shippingItemsToText = isOboRequest\n ? shippingItemToOBOCustomerLabel && format(shippingItemToOBOCustomerLabel, count, itemLabel, customerName)\n : shippingItemToYouLabel && format(shippingItemToYouLabel, count, itemLabel);\n const emailingItemsLabelText = emailingItemsLabel && format(emailingItemsLabel, count, itemLabel);\n const multiplePickup = deliveryType === 'ship' ? 'ship' : deliveryType === 'email' ? 'email' : 'pickup';\n const groupProps = { className: `${moduleName}__group-deliveryType-${multiplePickup} salesStatus-${salesStatus}` };\n\n const salesLinesProps = getSalesLinesProps(moduleName, isSelectionModeEnabled);\n const address = _salesLines[0].address;\n const trackingInfo = _salesLines[0].trackingInfo;\n const isProcessing = _salesLines[0].data.salesStatus === 'processing';\n const pickDateTimeslot = _salesLines[0].pickupDateTimeslot;\n const shippedStatusCheck = _salesLines[0].data.salesStatus;\n const multiplePickUp = retailMultiplePickUpOptionEnabled ? 'multiple-pickUp' : '';\n const delivery: IGroupDelivery = {\n deliveryProps: { className: `${moduleName}__group-delivery ${multiplePickUp}` },\n pickupProps: { className: `${moduleName}__delivery-container` },\n heading: (\n \n {isProcessing\n ? isConfirmationView\n ? deliveryType === 'pickUp'\n ? pickupItemsHeader\n : deliveryType === 'ship'\n ? shippingAddressTitle\n : deliveryType === 'email'\n ? emailItemsHeader\n : deliveryType\n : _salesLines[0].deliveryType\n : _salesLines[0].salesStatus}\n \n ),\n processing: isProcessing ? (\n {_salesLines[0].salesStatus}\n ) : (\n undefined\n ),\n count: !isConfirmationView && {`(${count} ${itemLabel})`},\n shippingItemsToYou:\n isConfirmationView && deliveryType === 'ship' ? (\n {shippingItemsToText}\n ) : deliveryType === 'pickUp' ? (\n {pickingItemsLabelText}\n ) : deliveryType === 'email' ? (\n {emailingItemsLabelText}\n ) : (\n {pickingItemsLabelText}\n ),\n trackingInfo,\n address,\n pickupDateTimeslot: pickDateTimeslot,\n showTimeslot: showTimeslot || false,\n shippedStatusCheck\n };\n return {\n groupProps,\n salesLinesProps,\n delivery,\n salesLines: _salesLines,\n address: showAddress && address,\n requestDeliveryDate: _salesLines[0].requestDeliveryDate,\n data: {\n count,\n deliveryType,\n salesStatus\n },\n isCashAndCarryTransaction\n };\n });\n\n return {\n groupsProps: { className: `${moduleName}__groups` },\n groups\n };\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { OrderDetailsProduct } from '@msdyn365-commerce/components';\nimport { IActionContext, IGridSettings, IImageSettings } from '@msdyn365-commerce/core';\nimport {\n ChannelDeliveryOptionConfiguration,\n OrderShipments,\n ProductCatalog,\n ProductDeliveryOptions,\n SalesLine,\n SalesOrder,\n Shipment,\n SimpleProduct\n} from '@msdyn365-commerce/retail-proxy';\nimport { ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\n\nimport { getSalesLine, ISalesLine, ISalesLineResources } from './get-sales-line';\nimport { SalesLineState } from './sales-line-state';\nimport { IModuleComponentProps, IPriceContext } from './utilities';\n\nexport interface IGetSalesLinesInput {\n moduleName: string;\n moduleComponentProps: IModuleComponentProps;\n isCurrentChannel: boolean;\n\n salesLines: SalesLine[];\n products: SimpleProduct[];\n shipments?: Shipment[];\n priceContext: IPriceContext;\n resources: ISalesLineResources;\n actionContext: IActionContext;\n gridSettings: IGridSettings;\n imageSettings?: IImageSettings;\n imageOnly?: boolean;\n salesLineStates?: SalesLineState[];\n showCompleteAddress?: boolean;\n showTimeslot: boolean;\n telemetryContent?: ITelemetryContent;\n retailMultiplePickUpOptionEnabled?: boolean;\n channelDeliveryOptionConfig?: ChannelDeliveryOptionConfiguration;\n productDeliveryOptions?: ProductDeliveryOptions[];\n isSelectionModeEnabled?: boolean;\n orderDetailsProducts?: OrderDetailsProduct[];\n isReorderingEnabled?: boolean;\n isChannelMultipleCatalogsFeatureEnabled?: boolean;\n catalogs?: ProductCatalog[];\n priceCurrency?: string;\n}\n\nexport const getSalesLines = ({\n moduleName,\n moduleComponentProps,\n salesLines,\n products,\n shipments,\n resources,\n isCurrentChannel,\n imageOnly,\n showCompleteAddress,\n showTimeslot,\n telemetryContent,\n retailMultiplePickUpOptionEnabled,\n channelDeliveryOptionConfig,\n productDeliveryOptions,\n isSelectionModeEnabled,\n orderDetailsProducts,\n isReorderingEnabled,\n salesLineStates: productStates,\n isChannelMultipleCatalogsFeatureEnabled,\n catalogs,\n priceCurrency\n}: IGetSalesLinesInput): ISalesLine[] => {\n return salesLines.map((salesLine, index) => {\n const product = products.find(simpleProduct => simpleProduct.RecordId === salesLine.ProductId);\n const shipment =\n product &&\n shipments?.find(currentShipment =>\n currentShipment.ShipmentLines?.find(\n shipmentLine =>\n shipmentLine.ItemId === product.ItemId && shipmentLine.InventoryTransactionId === salesLine.InventoryTransactionId\n )\n );\n const orderDetailsProduct = isSelectionModeEnabled\n ? product && orderDetailsProducts?.find(currentProduct => currentProduct.salesLine.ProductId === product.RecordId)\n : undefined;\n const productState = productStates?.find(value => value.stateId === `${salesLine.LineId ?? ''}-${index}`);\n\n return getSalesLine({\n moduleName,\n moduleComponentProps,\n product,\n shipment,\n salesLine,\n isCurrentChannel,\n resources,\n imageOnly,\n showCompleteAddress,\n showTimeslot,\n telemetryContent,\n retailMultiplePickUpOptionEnabled,\n channelDeliveryOptionConfig,\n productDeliveryOptions,\n isSelectionModeEnabled,\n orderDetailsProduct,\n isReorderingEnabled,\n salesLineState: productState,\n isChannelMultipleCatalogsFeatureEnabled,\n catalogs,\n priceCurrency\n });\n });\n};\n\ninterface IProps extends IModuleComponentProps {\n resources: ISalesLineResources;\n}\n\nexport const getSalesLinesInput = (\n props: IProps,\n moduleName: string,\n order: SalesOrder | OrderShipments,\n products: SimpleProduct[],\n priceContext: IPriceContext,\n showCompleteAddress?: boolean,\n showTimeslot?: boolean,\n telemetryContent?: ITelemetryContent,\n retailMultiplePickUpOptionEnabled?: boolean,\n channelDeliveryOptionConfig?: ChannelDeliveryOptionConfiguration,\n productDeliveryOptions?: ProductDeliveryOptions[] | undefined,\n isSelectionModeEnabled?: boolean | undefined,\n orderDetailsProducts?: OrderDetailsProduct[] | undefined,\n isReorderingEnabled?: boolean,\n isChannelMultipleCatalogsFeatureEnabled?: boolean,\n catalogs?: ProductCatalog[]\n): IGetSalesLinesInput | undefined => {\n if (!order || !order.SalesLines || order.SalesLines.length === 0) {\n return;\n }\n\n const {\n resources,\n config: { imageSettings },\n context: {\n actionContext,\n request: {\n gridSettings,\n apiSettings: { channelId }\n }\n }\n } = props;\n\n const isCurrentChannel = !order.ChannelId || order.ChannelId === channelId;\n\n return {\n moduleName,\n moduleComponentProps: props,\n isCurrentChannel,\n salesLines: order.SalesLines,\n priceCurrency: order.CurrencyCode,\n products,\n shipments: order.Shipments,\n priceContext,\n resources,\n actionContext,\n gridSettings: gridSettings!,\n imageSettings,\n showCompleteAddress,\n showTimeslot: showTimeslot ?? false,\n telemetryContent,\n retailMultiplePickUpOptionEnabled,\n channelDeliveryOptionConfig,\n productDeliveryOptions,\n isSelectionModeEnabled: isSelectionModeEnabled ?? false,\n orderDetailsProducts,\n isReorderingEnabled,\n isChannelMultipleCatalogsFeatureEnabled,\n catalogs\n };\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\ninterface ILabelProps {\n className: string;\n label: string;\n}\n\nexport const Label: React.FC = ({ className, label }) => {label};\n\nexport default Label;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { AddToCartComponent, IAddToCartResources, OrderDetailsProduct } from '@msdyn365-commerce/components';\nimport { getUrlSync, IComponentProps, ICoreContext } from '@msdyn365-commerce/core';\nimport { ArrayExtensions, ObjectExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { Button } from '@msdyn365-commerce-modules/utilities';\nimport React from 'react';\n\n/**\n * The data which the component should operate.\n */\nexport interface IBuySelectedData {\n products: OrderDetailsProduct[];\n}\n\n/**\n * The resources needed to render a buy selected component.\n */\nexport interface IBuySelectedResources {\n orderDetailsUnavailableProductText?: string;\n orderDetailsBuySelectedButtonText?: string;\n orderDetailsBuySelectedButtonAriaLabel?: string;\n orderDetailsBuySelectedAddingToCartErrorNotificationTitle?: string;\n orderDetailsBuySelectedAddingToCartErrorNotificationCloseAriaLabel?: string;\n orderDetailsBuyItAgainLabel?: string;\n orderDetailsBuyItAgainAriaLabel?: string;\n orderDetailsGoToCartText?: string;\n orderDetailsDialogCloseText?: string;\n orderDetailsSingleItemText?: string;\n orderDetailsMultiLineItemFormatText?: string;\n orderDetailsMultiLinesFormatText?: string;\n orderDetailsHeaderMessageText?: string;\n orderDetailsMultiItemsValidationErrorMessage?: string;\n orderDetailsOneErrorText?: string;\n orderDetailsMultiErrorText?: string;\n addedQuantityText?: string;\n originalPriceText?: string;\n currentPriceText?: string;\n freePriceText?: string;\n}\n\n/**\n * Configuration of a buy selected component.\n */\nexport interface IBuySelectedProps extends IComponentProps {\n className: string;\n context: ICoreContext;\n\n resources: IBuySelectedResources;\n\n isIcon?: boolean;\n isReorderingEnabled?: boolean;\n}\n\n/**\n * Get the dialog strings.\n * @param props -- The buy selected props.\n * @returns The add to cart resources.\n */\nexport const getDialogStrings = (props: IBuySelectedProps): IAddToCartResources => {\n return {\n goToCartText: props.resources.orderDetailsGoToCartText ?? '',\n continueShoppingText: props.resources.orderDetailsDialogCloseText ?? '',\n closeNotificationLabel: props.resources.orderDetailsBuySelectedAddingToCartErrorNotificationCloseAriaLabel ?? '',\n headerItemOneText: props.resources.orderDetailsSingleItemText ?? '',\n headerItemFormatText: props.resources.orderDetailsMultiLineItemFormatText ?? '',\n headerLinesFormatText: props.resources.orderDetailsMultiLinesFormatText ?? '',\n headerMessageText: props.resources.orderDetailsHeaderMessageText ?? '',\n freePriceText: props.resources.freePriceText ?? '',\n originalPriceText: props.resources.originalPriceText ?? '',\n currentPriceText: props.resources.currentPriceText ?? '',\n addedQuantityText: props.resources.addedQuantityText ?? '',\n buyAgainNotificationTitle: props.resources.orderDetailsBuySelectedAddingToCartErrorNotificationTitle ?? '',\n buyAgainNotificationCloseAriaLabel: props.resources.orderDetailsBuySelectedAddingToCartErrorNotificationCloseAriaLabel ?? '',\n validationErrorMessage: props.resources.orderDetailsMultiItemsValidationErrorMessage,\n oneErrorText: props.resources.orderDetailsOneErrorText,\n multiErrorsText: props.resources.orderDetailsMultiErrorText\n };\n};\n\n/**\n * Renders a button which adds given products to the cart.\n * @param props - Configuration of the component.\n * @returns A react element or null if no products were given.\n */\nexport const BuySelectedComponent: React.FC = (props: IBuySelectedProps): JSX.Element | null => {\n const products = props.data.products.filter(product => !ObjectExtensions.isNullOrUndefined(product.simpleProduct));\n const buttonLabel = props.isIcon\n ? ''\n : props.resources.orderDetailsBuySelectedButtonText ?? props.resources.orderDetailsBuyItAgainLabel;\n const buttonAriaLabel = props.resources.orderDetailsBuySelectedButtonAriaLabel ?? props.resources.orderDetailsBuyItAgainAriaLabel;\n\n const singleProductCount = 1;\n if (props.data.products.length === singleProductCount && !props.data.products[0].isProductAvailable) {\n // Return disabled button\n return (\n \n {buttonLabel}\n \n );\n }\n\n if (!ArrayExtensions.hasElements(products)) {\n // Return disabled button\n return (\n \n );\n }\n\n const firstProduct: OrderDetailsProduct = products[0];\n\n // Reorder is not enable, buy again button link to product details page.\n if (!props.isReorderingEnabled) {\n const style: React.CSSProperties = {\n opacity: '0.5'\n };\n return (\n \n {buttonLabel}\n \n );\n }\n\n const shouldSkipSiteSettings: boolean = true;\n const dialogStrings: IAddToCartResources = getDialogStrings(props);\n const emailDeliveryModeCode = props.context.actionContext.requestContext.channel?.EmailDeliveryModeCode;\n return (\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 { CartLineItemComponent, OrderDetailsProduct } from '@msdyn365-commerce/components';\nimport MsDyn365, { IGridSettings, IImageSettings, Image, IRequestContext, isChannelTypeB2B } from '@msdyn365-commerce/core';\nimport {\n ChannelDeliveryOptionConfiguration,\n format,\n ProductCatalog,\n ProductDeliveryOptions,\n SalesLine,\n Shipment,\n SimpleProduct\n} from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions, getFallbackImageUrl, getProductPageUrlSync, ObjectExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { INodeProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { Observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport Address from './address';\nimport { BuySelectedComponent } from './buy-selected-component';\nimport LabelComponent from './label';\nimport { SalesLineState } from './sales-line-state';\nimport {\n defaultImageSettings,\n getDateTimeslot,\n getSalesStatusCode,\n IDeliveryType,\n IModuleComponentProps,\n ISalesStatusCode\n} from './utilities';\n\nexport type ISalesStatusStringMap = {\n [x in ISalesStatusCode]: string | undefined;\n};\n\nexport type IDeliveryTypeStringMap = {\n [x in IDeliveryType]: string | undefined;\n};\n\nexport interface ISalesLineResources {\n productDimensionTypeSize: string;\n productDimensionTypeColor: string;\n productDimensionTypeStyle: string;\n productDimensionTypeAmount?: string;\n salesLineQuantityText: string;\n configString: string;\n shipToLabel: string;\n storeLabel: string;\n phoneLabel: string;\n phoneAriaLabel: string;\n buyItAgainAriaLabel: string;\n buyItAgainLabel: string;\n orderStatusReadyForPickup: string;\n orderStatusPickedUp: string;\n orderStatusShipped: string;\n orderStatusCanceled: string;\n orderStatusProcessing: string;\n pickedUpSalesLines: string;\n deliveredSalesLines: string;\n carryOutSalesLines: string;\n trackingLabel: string;\n trackingAriaLabel: string;\n trackingComingSoonLabel: string;\n discountStringText: string;\n orderStatusEmailed: string;\n emailSalesLines: string;\n pickupDateTimeslotText: string;\n pickupTimeslotPlaceHolder: string;\n shippingCharges?: string;\n orderDetailsUnavailableProductText?: string;\n orderDetailsBuySelectedButtonText?: string;\n orderDetailsBuySelectedButtonAriaLabel?: string;\n orderDetailsBuySelectedAddingToCartErrorNotificationTitle?: string;\n orderDetailsBuySelectedAddingToCartErrorNotificationCloseAriaLabel?: string;\n orderDetailsGoToCartText?: string;\n orderDetailsDialogCloseText?: string;\n orderDetailsSelectRadioAriaLabelText?: string;\n orderDetailsSingleItemText?: string;\n orderDetailsMultiLineItemFormatText?: string;\n orderDetailsMultiLinesFormatText?: string;\n orderDetailsHeaderMessageText?: string;\n orderDetailsMultiItemsValidationErrorMessage?: string;\n orderDetailsOneErrorText?: string;\n orderDetailsMultiErrorText?: string;\n addedQuantityText?: string;\n originalPriceText?: string;\n currentPriceText?: string;\n freePriceText?: string;\n orderDetailsConfirmedShipDateText?: string;\n orderDetailsRequestDeliveryDateText?: string;\n orderDetailsAddressText?: string;\n}\n\nexport interface IGetSalesLineInput {\n moduleName: string;\n moduleComponentProps: IModuleComponentProps;\n product?: SimpleProduct;\n shipment?: Shipment;\n salesLine: SalesLine;\n isCurrentChannel: boolean;\n resources: ISalesLineResources;\n imageOnly?: boolean;\n salesLineState?: SalesLineState;\n showCompleteAddress?: boolean;\n showTimeslot: boolean;\n telemetryContent?: ITelemetryContent;\n retailMultiplePickUpOptionEnabled?: boolean;\n channelDeliveryOptionConfig?: ChannelDeliveryOptionConfiguration;\n productDeliveryOptions?: ProductDeliveryOptions[];\n isSelectionModeEnabled?: boolean;\n orderDetailsProduct?: OrderDetailsProduct;\n isReorderingEnabled?: boolean;\n isChannelMultipleCatalogsFeatureEnabled?: boolean;\n catalogs?: ProductCatalog[];\n priceCurrency?: string;\n}\n\nexport interface ISalesLine {\n salesLineProps: INodeProps;\n salesLine: React.ReactNode;\n address?: React.ReactNode;\n buyAgainButton?: React.ReactNode;\n salesStatus: React.ReactNode;\n deliveryType: React.ReactNode;\n trackingInfo: React.ReactNode;\n pickupDateTimeslot: React.ReactNode;\n errors?: React.ReactNode;\n requestDeliveryDate?: React.ReactNode;\n\n // Row data\n data: {\n salesLine: SalesLine;\n product?: SimpleProduct;\n shipment?: Shipment;\n deliveryType: string;\n productUrl: string | undefined;\n salesStatus: ISalesStatusCode;\n isChecked?: boolean;\n };\n}\n\nenum deliveryTypeEnum {\n ship = 'ship',\n email = 'email',\n carryOut = 'carryOut',\n pickUp = 'pickUp'\n}\n\n/**\n * The on select line call back.\n * @param orderDetailsProduct -- The current order details product.\n * @returns The call back method.\n */\nconst onSelectLine = (orderDetailsProduct: OrderDetailsProduct) => () => {\n orderDetailsProduct.isSelected = !orderDetailsProduct.isSelected;\n};\n\n/**\n * Get the checkbox element.\n * @param orderDetailsProduct -- The order details product.\n * @param orderDetailsSelectRadioAriaLabelText -- The aria label text.\n * @param moduleName -- The module name.\n * @returns The checkbox element.\n */\nconst getOrderDetailsSalesLineCheckbox = (\n orderDetailsProduct: OrderDetailsProduct,\n orderDetailsSelectRadioAriaLabelText: string | undefined,\n moduleName: string\n): JSX.Element | null => {\n const checkboxRowAriaLabel = format(orderDetailsSelectRadioAriaLabelText ?? '{0}', orderDetailsProduct.salesLine.ProductId);\n\n return (\n
\n \n
\n );\n};\n\n/**\n * Get tracking information.\n * @param deliveryType -- The delivery type.\n * @param moduleName -- Module name.\n * @param trackingLabel -- Tracking label.\n * @param trackingAriaLabel -- Tracking aria label.\n * @param trackingComingSoonLabel -- Tracking coming soon label.\n * @param shipment -- Shipment.\n * @returns The tracking information.\n */\nexport const getTrackingInfo = (\n deliveryType: string,\n moduleName: string,\n trackingLabel: string,\n trackingAriaLabel: string,\n trackingComingSoonLabel: string,\n shipment: Shipment | undefined\n): false | JSX.Element => {\n return (\n deliveryType === deliveryTypeEnum.ship && (\n \n {trackingLabel}\n {shipment ? (\n \n {shipment.TrackingNumber}\n \n ) : (\n <>{trackingComingSoonLabel}\n )}\n \n )\n );\n};\n\n/**\n * Get pick update date time lot information.\n * @param shouldShowTimeslot -- Should show time slot.\n * @param isDeliveryPickupSame -- Is delivery and pickup the same.\n * @param salesLine -- The sales line.\n * @param pickupTimeslotPlaceHolder -- The pickup time slot place holder.\n * @param moduleName -- The module name.\n * @param locale -- The locale.\n * @param pickupDateTimeslotText -- The pickup date time slot text.\n * @returns The pickup date time slot information.\n */\nexport const getPickupDateTimeslotInfo = (\n shouldShowTimeslot: boolean,\n isDeliveryPickupSame: boolean,\n salesLine: SalesLine,\n pickupTimeslotPlaceHolder: string,\n moduleName: string,\n locale: string,\n pickupDateTimeslotText: string\n): false | JSX.Element => {\n const canShowTimeslot: boolean =\n shouldShowTimeslot &&\n isDeliveryPickupSame &&\n salesLine.PickupTimeslotStartDateTime !== undefined &&\n salesLine.PickupTimeslotEndDateTime !== undefined;\n\n const pickupDateTimeslot = canShowTimeslot\n ? getDateTimeslot(pickupTimeslotPlaceHolder, salesLine.PickupTimeslotStartDateTime, salesLine.PickupTimeslotEndDateTime, locale)\n : '';\n\n return (\n canShowTimeslot && (\n
\n
{pickupDateTimeslotText}
\n
{pickupDateTimeslot}
\n
\n )\n );\n};\n\n/**\n * Get sales status.\n * @param orderStatusCanceled -- Order status canceled.\n * @param orderStatusReadyForPickup -- Order status ready for pick up.\n * @param orderStatusPickedUp -- Order status pick up.\n * @param orderStatusProcessing -- Order status processing.\n * @param orderStatusShipped -- Order status shipped.\n * @param orderStatusEmailed -- Order status emailed.\n * @returns The sales status in string.\n */\nexport const getSalesStatusStringMap = (\n orderStatusCanceled: string | undefined,\n orderStatusReadyForPickup: string | undefined,\n orderStatusPickedUp: string | undefined,\n orderStatusProcessing: string | undefined,\n orderStatusShipped: string | undefined,\n orderStatusEmailed: string | undefined\n): ISalesStatusStringMap => {\n return {\n canceled: orderStatusCanceled,\n readyForPickup: orderStatusReadyForPickup,\n pickedUp: orderStatusPickedUp,\n processing: orderStatusProcessing,\n shipped: orderStatusShipped,\n unknown: undefined,\n emailed: orderStatusEmailed\n };\n};\n\n/**\n * Get delivery type.\n * @param deliveryTypeString -- Delivery type string.\n * @param moduleName -- Module name.\n * @param deliveryTypeClass -- Delivery type class.\n * @param storePickUp -- Store pick up.\n * @param isMultiplePickUpOptionEnabled -- Is multiple pick up enabled.\n * @returns The delivery type react node.\n */\nexport const getDeliveryTypeComp = (\n deliveryTypeString: string | undefined,\n moduleName: string,\n deliveryTypeClass: string | undefined,\n storePickUp: string | null | undefined,\n isMultiplePickUpOptionEnabled: boolean | undefined\n): React.ReactNode => {\n const deliveryTypePickup = deliveryTypeString && (\n \n );\n const deliveryTypeNoPickup = deliveryTypeString && (\n \n );\n\n return isMultiplePickUpOptionEnabled ? deliveryTypePickup : deliveryTypeNoPickup;\n};\n\n/**\n * Renders sales line picture.\n * @param moduleName - Module name.\n * @param requestContext - Request context.\n * @param productName - Product name.\n * @param product - Product data.\n * @param fallbackImageUrl - Fallback image.\n * @param gridSettings - Grid settings.\n * @param imageSettings - Image settings.\n * @param salesLineState - Product state.\n * @returns React node.\n */\nconst getSalesLinePicture = (\n moduleName: string,\n requestContext: IRequestContext,\n productName: string | undefined,\n product: SimpleProduct | undefined,\n fallbackImageUrl: string | undefined,\n gridSettings: IGridSettings,\n imageSettings: IImageSettings | undefined,\n salesLineState?: SalesLineState\n) => {\n return (\n \n {() =>\n !salesLineState?.isHidden && (\n
\n \n
\n )\n }\n
\n );\n};\n\n/**\n * Renders sales line.\n * @param props - Sales line props.\n * @returns React node.\n */\nconst SalesLineComponent: React.FC = (props: IGetSalesLineInput) => {\n const productName = props.product?.Name ?? props.salesLine.Description;\n const requestContext = props.moduleComponentProps.context.actionContext.requestContext;\n\n if (props.imageOnly) {\n const fallbackImageUrl = getFallbackImageUrl(\n props.product?.ItemId,\n requestContext.apiSettings,\n props.moduleComponentProps.context.request.app?.config?.OmniChannelMedia\n );\n return getSalesLinePicture(\n props.moduleName,\n requestContext,\n productName,\n props.product,\n fallbackImageUrl,\n requestContext.gridSettings!,\n props.moduleComponentProps.config.imageSettings,\n props.salesLineState\n );\n }\n\n const orderDetailsProducts = props.orderDetailsProduct ?? new OrderDetailsProduct(props.salesLine, props.product);\n\n const isSelectionModeEnabled = props.isSelectionModeEnabled && orderDetailsProducts.isProductAvailable;\n\n const orderDetailCheckbox =\n isSelectionModeEnabled &&\n getOrderDetailsSalesLineCheckbox(orderDetailsProducts, props.resources.orderDetailsSelectRadioAriaLabelText, props.moduleName);\n\n let productUrl: string | undefined;\n if (!ObjectExtensions.isNullOrUndefined(productName) && !ObjectExtensions.isNullOrUndefined(props.salesLine.ProductId)) {\n productUrl = getProductPageUrlSync(productName, props.salesLine.ProductId, props.moduleComponentProps.context.actionContext);\n\n if (MsDyn365.isBrowser && isChannelTypeB2B(requestContext)) {\n const fullUrl = new URL(productUrl, window.location.href);\n fullUrl.searchParams.set('catalogid', `${props.salesLine.CatalogId ?? 0}`);\n productUrl = fullUrl.href;\n }\n }\n\n const className = `${props.moduleName}__sales-line-checkbox-control`;\n\n return (\n \n {orderDetailCheckbox}\n \n \n );\n};\n\nexport const getSalesLine = (props: IGetSalesLineInput): ISalesLine => {\n const {\n moduleName,\n moduleComponentProps: {\n typeName,\n context,\n config: { imageSettings }\n },\n product,\n shipment,\n salesLine,\n resources: {\n shipToLabel,\n storeLabel,\n phoneLabel,\n phoneAriaLabel,\n buyItAgainLabel,\n buyItAgainAriaLabel,\n orderStatusReadyForPickup,\n orderStatusProcessing,\n orderStatusShipped,\n orderStatusPickedUp,\n orderStatusCanceled,\n orderStatusEmailed,\n pickedUpSalesLines,\n deliveredSalesLines,\n carryOutSalesLines,\n emailSalesLines,\n trackingLabel,\n trackingAriaLabel,\n trackingComingSoonLabel,\n pickupDateTimeslotText,\n pickupTimeslotPlaceHolder,\n orderDetailsUnavailableProductText,\n orderDetailsBuySelectedAddingToCartErrorNotificationTitle,\n orderDetailsBuySelectedAddingToCartErrorNotificationCloseAriaLabel,\n orderDetailsGoToCartText,\n orderDetailsDialogCloseText,\n orderDetailsSingleItemText,\n orderDetailsMultiLineItemFormatText,\n orderDetailsMultiLinesFormatText,\n orderDetailsHeaderMessageText,\n orderDetailsMultiItemsValidationErrorMessage,\n orderDetailsOneErrorText,\n orderDetailsMultiErrorText,\n addedQuantityText,\n originalPriceText,\n currentPriceText,\n freePriceText,\n orderDetailsRequestDeliveryDateText\n },\n channelDeliveryOptionConfig,\n productDeliveryOptions,\n isSelectionModeEnabled,\n orderDetailsProduct,\n isReorderingEnabled\n } = props;\n\n const salesStatusStringMap = getSalesStatusStringMap(\n orderStatusCanceled,\n orderStatusReadyForPickup,\n orderStatusPickedUp,\n orderStatusProcessing,\n orderStatusShipped,\n orderStatusEmailed\n );\n\n const deliveryTypeStringMap: IDeliveryTypeStringMap = {\n pickUp: pickedUpSalesLines,\n ship: deliveredSalesLines,\n carryOut: carryOutSalesLines,\n email: emailSalesLines\n };\n\n const pickupDeliveryModeCode = context.request.channel?.PickupDeliveryModeCode;\n const emailDeliveryModeCode = context.request.channel?.EmailDeliveryModeCode;\n const productName = product?.Name ?? salesLine.Description;\n let productUrl = '';\n if (!ObjectExtensions.isNullOrUndefined(productName) && !ObjectExtensions.isNullOrUndefined(salesLine.ProductId)) {\n productUrl = getProductPageUrlSync(productName, salesLine.ProductId, context.actionContext);\n\n if (MsDyn365.isBrowser) {\n const fullUrl = new URL(productUrl, window.location.href);\n fullUrl.searchParams.set('catalogid', `${salesLine.CatalogId ?? 0}`);\n productUrl = fullUrl.href;\n }\n }\n\n const pickupMode = getPickupModeDesc(product, salesLine.DeliveryMode, productDeliveryOptions, props.retailMultiplePickUpOptionEnabled);\n const deliveryType = getDeliveryType(\n pickupMode,\n salesLine,\n salesLine.DeliveryMode,\n pickupDeliveryModeCode,\n props.retailMultiplePickUpOptionEnabled,\n channelDeliveryOptionConfig,\n emailDeliveryModeCode\n );\n const salesStatus = getSalesStatusCode(deliveryType, salesLine.SalesStatusValue, pickupMode);\n const salesStatusString = salesStatusStringMap[salesStatus];\n\n const deliveryTypeString = getDeliveryTypeString(deliveryType, deliveryTypeStringMap, props.retailMultiplePickUpOptionEnabled);\n const deliveryTypeClass = getDeliveryTypeClassName(deliveryType, deliveryTypeStringMap);\n const storePickUp = getStoreName(props.retailMultiplePickUpOptionEnabled, salesLine, deliveryType);\n const deliveryTypeComp = getDeliveryTypeComp(\n deliveryTypeString,\n moduleName,\n deliveryTypeClass,\n storePickUp,\n props.retailMultiplePickUpOptionEnabled\n );\n const salesStatusComp = salesStatusString && (\n \n );\n\n const trackingInfo = getTrackingInfo(deliveryType, moduleName, trackingLabel, trackingAriaLabel, trackingComingSoonLabel, shipment);\n const orderDetailProducts = orderDetailsProduct ?? new OrderDetailsProduct(salesLine, product, productUrl);\n const orderDetailsBuyItAgainAriaLabel =\n productName && buyItAgainAriaLabel ? (buyItAgainAriaLabel || '').replace('{productName}', productName) : '';\n const pickupDateTimeslotInfo = getPickupDateTimeslotInfo(\n props.showTimeslot,\n deliveryType === pickupMode,\n salesLine,\n pickupTimeslotPlaceHolder,\n moduleName,\n context.request.locale,\n pickupDateTimeslotText\n );\n let buyItAgainLinkClassName = format('{0}__sales-line-btn-buy-it-again-link', moduleName);\n if (isSelectionModeEnabled) {\n buyItAgainLinkClassName = format('{0} {1}-padding', buyItAgainLinkClassName, buyItAgainLinkClassName);\n }\n\n if (imageSettings) {\n imageSettings.cropFocalRegion = true;\n }\n\n const salesLineClassName = `${moduleName}__sales-line`;\n const salesLineFullClassName = classnames(\n salesLineClassName,\n isSelectionModeEnabled ? `${salesLineClassName}__selection-enabled` : `${salesLineClassName}__selection-disabled`,\n props.isSelectionModeEnabled\n ? `${salesLineClassName}__selection-global-enabled`\n : `${salesLineClassName}__selection-global-disabled`,\n orderDetailProducts.isProductAvailable ? `${salesLineClassName}__available-product` : `${salesLineClassName}__unavailable-product`\n );\n\n return {\n data: {\n salesLine,\n productUrl,\n deliveryType,\n salesStatus,\n product,\n shipment,\n isChecked: orderDetailProducts.isSelected\n },\n salesLineProps: { className: salesLineFullClassName },\n salesLine: SalesLineComponent(props),\n address: salesLine.ShippingAddress && (\n \n ),\n requestDeliveryDate:\n salesLine.ShippingAddress && getRequestDeliveryDate(salesLine, moduleName, orderDetailsRequestDeliveryDateText),\n deliveryType: deliveryTypeComp,\n salesStatus: salesStatusComp,\n trackingInfo,\n buyAgainButton: (\n \n ),\n pickupDateTimeslot: pickupDateTimeslotInfo,\n errors: !orderDetailProducts.isProductAvailable && (\n
{props.resources.orderDetailsUnavailableProductText}
\n )\n };\n};\n\nexport const getDeliveryType = (\n pickupMode: string,\n salesLine: SalesLine,\n salesLineDeliveryMode?: string,\n pickupDeliveryModeCode?: string,\n retailMultiplePickupOption?: boolean,\n channelDeliveryOptionConfig?: ChannelDeliveryOptionConfiguration,\n emailDeliveryModeCode?: string\n): string => {\n let isPickupDeliveryMode: boolean;\n\n if (retailMultiplePickupOption) {\n isPickupDeliveryMode =\n salesLineDeliveryMode === channelDeliveryOptionConfig?.PickupDeliveryModeCodes?.find(dM => dM === salesLineDeliveryMode);\n } else {\n isPickupDeliveryMode =\n !!pickupDeliveryModeCode && pickupDeliveryModeCode !== '' && pickupDeliveryModeCode === salesLineDeliveryMode;\n }\n\n return isPickupDeliveryMode\n ? pickupMode\n : emailDeliveryModeCode && emailDeliveryModeCode !== '' && emailDeliveryModeCode === salesLine.DeliveryMode\n ? deliveryTypeEnum.email\n : salesLine.DeliveryMode\n ? deliveryTypeEnum.ship\n : deliveryTypeEnum.carryOut;\n};\n\nexport const getDeliveryTypeString = (\n deliveryType: string,\n deliveryTypeStringMap: IDeliveryTypeStringMap,\n retailMultiplePickupOption?: boolean\n): string | undefined => {\n if (retailMultiplePickupOption) {\n switch (deliveryType) {\n case deliveryTypeEnum.ship:\n case deliveryTypeEnum.carryOut:\n case deliveryTypeEnum.email:\n return deliveryTypeStringMap[deliveryType];\n default:\n return deliveryType;\n }\n } else {\n return deliveryTypeStringMap[deliveryType];\n }\n};\n\nexport const getDeliveryTypeClassName = (\n deliveryType: string,\n deliveryTypeStringMap: IDeliveryTypeStringMap,\n retailMultiplePickupOption?: boolean\n): string | undefined => {\n switch (deliveryType) {\n case deliveryTypeEnum.ship:\n case deliveryTypeEnum.carryOut:\n case deliveryTypeEnum.email:\n return deliveryType;\n default:\n return deliveryTypeEnum.pickUp;\n }\n};\n\nconst defaultDeliveryOption: string = 'pickup';\n\n/**\n * Retrieves the delivery description by product id.\n * @param productRecordId - Product record id.\n * @param salesLineDeliveryMode - Delivery mode from the sales line.\n * @param productDeliveryOptions - Possible delivery options.\n * @returns Delivery option description.\n */\nexport const getDeliveryDescriptionByProductId = (\n productRecordId?: number,\n salesLineDeliveryMode?: string,\n productDeliveryOptions?: ProductDeliveryOptions[]\n): string => {\n if (ObjectExtensions.isNullOrUndefined(productRecordId) || !ArrayExtensions.hasElements(productDeliveryOptions)) {\n return defaultDeliveryOption;\n }\n\n const productDeliveryOption = productDeliveryOptions.find(currentDeliveryOption => {\n return currentDeliveryOption.ProductId === productRecordId;\n });\n\n const deliveryDescription = productDeliveryOption?.DeliveryOptions?.find(option => option.Code === salesLineDeliveryMode)?.Description;\n\n return deliveryDescription ?? defaultDeliveryOption;\n};\n\nexport const getPickupModeDesc = (\n product?: SimpleProduct,\n salesLineDeliveryMode?: string,\n productDeliveryOptions?: ProductDeliveryOptions[],\n retailMultiplePickupOption?: boolean\n): string => {\n return getDeliveryDescriptionByProductId(product?.RecordId, salesLineDeliveryMode, productDeliveryOptions);\n};\n\n/**\n * Get the store name.\n * @param isMultiplePickUpOptionEnabled -- Is mutiple pick up option enabled.\n * @param salesLine -- Sales line.\n * @param deliveryType -- Delivery type.\n * @returns The store name.\n */\nexport const getStoreName = (\n isMultiplePickUpOptionEnabled: boolean | undefined,\n salesLine: SalesLine,\n deliveryType?: string\n): string | undefined | null => {\n if (!isMultiplePickUpOptionEnabled) {\n return null;\n }\n\n switch (deliveryType) {\n case deliveryTypeEnum.ship:\n case deliveryTypeEnum.email:\n case deliveryTypeEnum.carryOut:\n return '';\n default:\n return `, ${salesLine.ShippingAddress?.Name}`;\n }\n};\n\n/**\n * Get pick update date time lot information.\n * @param shouldShowTimeslot -- Should show time slot.\n * @param salesLine -- The sales line.\n * @returns The pickup date time slot information.\n */\nexport const getRequestDeliveryDate = (\n salesLine: SalesLine,\n moduleName: string,\n requestDeliveryDateTitle?: string\n): false | JSX.Element => {\n const canShowRequestDeliveryDate: boolean = salesLine.RequestedDeliveryDate !== undefined && salesLine.RequestedDeliveryDate !== null;\n\n return (\n canShowRequestDeliveryDate && (\n
\n
{requestDeliveryDateTitle}
\n
{salesLine.RequestedDeliveryDate}
\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 { Address as AddressRetail } from '@msdyn365-commerce/retail-proxy';\nimport * as React from 'react';\n\nexport type addressType = 'store' | 'ship';\n\nexport interface IShippingAddressProps {\n moduleName: string;\n address: AddressRetail;\n deliveryType: string;\n showCompleteAddress?: boolean;\n resource: {\n shipToLabel: string;\n storeLabel: string;\n phoneLabel: string;\n phoneAriaLabel: string;\n };\n}\n\nconst Address: React.SFC = ({\n moduleName,\n address,\n deliveryType,\n showCompleteAddress,\n resource: { shipToLabel, storeLabel, phoneLabel }\n}) => (\n
\n
{deliveryType !== 'ship' ? storeLabel : shipToLabel}
\n {address.Name && {address.Name}}\n {showCompleteAddress ? (\n <>\n {address.Street && (\n \n {address.Street}\n {` `}\n \n )}\n {address.City && {address.City}}\n {address.State && {`, ${address.State}`}}\n {address.County && {`, ${address.County}`}}\n {address.ZipCode && {` ${address.ZipCode}`}}\n {address.ThreeLetterISORegionName && (\n {` ${address.ThreeLetterISORegionName}`}\n )}\n {address.Phone && (\n \n {phoneLabel}\n \n )}\n \n ) : (\n address.FullAddress && {address.FullAddress}\n )}\n
\n);\n\nexport default React.memo(Address);\n"],"names":["getTenderIdOperationIdMap","tenderTypes","reduce","map","tenderType","TenderTypeId","OperationId","countItems","salesLines","count","salesLine","Quantity","defaultImageSettings","viewports","xs","q","w","h","lg","lazyload","cropFocalRegion","getSalesStatusCode","deliveryType","statusValue","pickupMode","undefined","groupSalesLines","flatGroup","group","items","groupBy","item","data","Object","entries","forEach","_ref","groupByDeliveryType","salesStatus","getGroupBySalesStatusCode","_ref2","groupBySalesStatusCode","ShippingAddress","RecordId","getGroupByAddressId","_ref3","addressId","groupByAddressId","TrackingId","getGroupByTrackingId","_ref4","trackingId","groupByTrackingId","push","getDateTimeslot","placeHolder","startDate","endDate","locale","date","Intl","DateTimeFormat","timeZone","format","Date","timeslotformatter","hour","minute","hour12","getChannelReference","channelReferenceId","moduleName","confirmationIdLabel","shouldShowQrCode","qrCodeSrText","confirmationIdNode","React","className","QRCode","value","size","id","getOrderNote","note","noteLabel","StringExtensions","isNullOrWhitespace","Description","getOrderInformation","channelName","channelAddress","channelTypeValue","showChannelInfo","receiptEmail","createdDate","amount","priceContext","isOnlineStore","customer","originator","salesId","receiptId","resources","receiptEmailMessage","orderItemLabel","orderItemsLabel","orderIdLabel","orderPlacedByFullText","orderPlacedByYouText","orderOnBehalfOfText","receiptIdLabel","posChannelNameText","onlineStoreChannelNameText","orderPlacedOnLabel","callCenterChannelNameText","isSalesInvoice","priceCurrency","channelNameNode","getChannelName","posChannelName","onlineChannelName","orderInformationProps","placedBy","getPlacedBy","PriceComponent","assign","price","CustomerContextualPrice","currencyCode","getOrderChannelName","order","channelIdentities","_orderChannel$Name","orderChannel","find","channel","ChannelId","Name","getOrderChannelTypeValue","ChannelType","Value","isOnlineStoreChannel","getOrderChannelAddress","orgUnitLocations","_orderOrgUnitLocation","orderOrgUnitLocation","location","Address","getOrderInformationInput","props","_order$TotalAmount","context","request","apiSettings","channelId","showNotes","Notes","length","get","SalesLines","ArrayExtensions","hasElements","countNote","CreatedDateTime","toLocaleDateString","SalesId","CurrencyCode","isYou","isB2bAdmin","IsB2bAdmin","ReceiptId","ReceiptEmail","ChannelReferenceId","TotalAmount","placedByNode","staffPlacedOrder","StaffId","StaffName","currentCustomerOwnsOrder","CustomerId","CustomerName","AccountNumber","placedOnBehalfOfName","placedByName","wasPlacedByCurrentCustomer","wasPlacedOnBehalfOf","wasPlacedOnBehalfOfCurrentCustomer","getGroups","showAddress","showTimeslot","isConfirmationView","retailMultiplePickUpOptionEnabled","isCashAndCarryTransaction","isSelectionModeEnabled","customerName","isOboRequest","pickupItemsHeader","pickingItemsLabel","shippingAddressTitle","shippingItemToYouLabel","shippingItemToOBOCustomerLabel","emailItemsHeader","emailingItemsLabel","groups","_salesLines","itemLabel","pickingItemsLabelText","shippingItemsToText","emailingItemsLabelText","groupProps","salesLinesProps","getSalesLinesProps","classNames","address","trackingInfo","isProcessing","pickDateTimeslot","pickupDateTimeslot","shippedStatusCheck","delivery","deliveryProps","pickupProps","heading","processing","shippingItemsToYou","requestDeliveryDate","groupsProps","getSalesLines","moduleComponentProps","products","shipments","isCurrentChannel","imageOnly","showCompleteAddress","telemetryContent","channelDeliveryOptionConfig","productDeliveryOptions","orderDetailsProducts","isReorderingEnabled","salesLineStates","productStates","isChannelMultipleCatalogsFeatureEnabled","catalogs","index","product","simpleProduct","ProductId","shipment","currentShipment","_currentShipment$Ship","ShipmentLines","shipmentLine","ItemId","InventoryTransactionId","orderDetailsProduct","currentProduct","productState","_salesLine$LineId","stateId","LineId","getSalesLine","salesLineState","getSalesLinesInput","config","imageSettings","actionContext","gridSettings","Shipments","Label","label","BuySelectedComponent","_props$resources$orde10","_props$resources$orde11","_props$context$action","filter","ObjectExtensions","isNullOrUndefined","buttonLabel","isIcon","orderDetailsBuySelectedButtonText","orderDetailsBuyItAgainLabel","buttonAriaLabel","orderDetailsBuySelectedButtonAriaLabel","orderDetailsBuyItAgainAriaLabel","isProductAvailable","orderDetailsUnavailableProductText","title","disabled","firstProduct","style","opacity","Button","href","productUrl","dialogStrings","_props$resources$orde","_props$resources$orde2","_props$resources$orde3","_props$resources$orde4","_props$resources$orde5","_props$resources$orde6","_props$resources$orde7","_props$resources$free","_props$resources$orig","_props$resources$curr","_props$resources$adde","_props$resources$orde8","_props$resources$orde9","goToCartText","orderDetailsGoToCartText","continueShoppingText","orderDetailsDialogCloseText","closeNotificationLabel","orderDetailsBuySelectedAddingToCartErrorNotificationCloseAriaLabel","headerItemOneText","orderDetailsSingleItemText","headerItemFormatText","orderDetailsMultiLineItemFormatText","headerLinesFormatText","orderDetailsMultiLinesFormatText","headerMessageText","orderDetailsHeaderMessageText","freePriceText","originalPriceText","currentPriceText","addedQuantityText","buyAgainNotificationTitle","orderDetailsBuySelectedAddingToCartErrorNotificationTitle","buyAgainNotificationCloseAriaLabel","validationErrorMessage","orderDetailsMultiItemsValidationErrorMessage","oneErrorText","orderDetailsOneErrorText","multiErrorsText","orderDetailsMultiErrorText","getDialogStrings","emailDeliveryModeCode","requestContext","EmailDeliveryModeCode","AddToCartComponent","addToCartText","outOfStockText","addToCartArialLabel","quantity","typeName","navigationUrl","getUrlSync","shouldSkipSiteSettings","isAddEmailDeliveryItemToCart","DeliveryMode","deliveryTypeEnum","onSelectLine","isSelected","SalesLineComponent","_props$product$Name","_props$product","_props$orderDetailsPr","_props$resources$ship","_props$product3","_props$product4","_props$moduleComponen2","productName","_props$product2","_props$moduleComponen","fallbackImageUrl","getFallbackImageUrl","app","OmniChannelMedia","getSalesLinePicture","Observer","_product$PrimaryImage","isHidden","Image","altText","src","PrimaryImageUrl","fallBackSrc","loadFailureBehavior","OrderDetailsProduct","orderDetailCheckbox","getOrderDetailsSalesLineCheckbox","orderDetailsSelectRadioAriaLabelText","checkboxRowAriaLabel","classnames","type","checked","onChange","getProductPageUrlSync","MsDyn365","isBrowser","isChannelTypeB2B","_props$salesLine$Cata","fullUrl","URL","window","searchParams","set","CatalogId","CartLineItemComponent","sizeString","productDimensionTypeSize","colorString","productDimensionTypeColor","styleString","productDimensionTypeStyle","amountString","productDimensionTypeAmount","quantityDisplayString","salesLineQuantityText","configString","discountStringText","inputQuantityAriaLabel","shippingChargesText","shippingCharges","confirmedShipDateLabel","orderDetailsConfirmedShipDateText","requestDeliveryDateLabel","orderDetailsRequestDeliveryDateText","primaryImageUrl","isSalesLine","cartLine","showShippingChargesForLineItems","_context$request$chan","_context$request$chan2","_product$Name","shipToLabel","storeLabel","phoneLabel","phoneAriaLabel","buyItAgainLabel","buyItAgainAriaLabel","orderStatusReadyForPickup","orderStatusProcessing","orderStatusShipped","orderStatusPickedUp","orderStatusCanceled","orderStatusEmailed","pickedUpSalesLines","deliveredSalesLines","carryOutSalesLines","emailSalesLines","trackingLabel","trackingAriaLabel","trackingComingSoonLabel","pickupDateTimeslotText","pickupTimeslotPlaceHolder","salesStatusStringMap","getSalesStatusStringMap","canceled","readyForPickup","pickedUp","shipped","unknown","emailed","deliveryTypeStringMap","pickUp","ship","carryOut","email","pickupDeliveryModeCode","PickupDeliveryModeCode","_salesLine$CatalogId","getPickupModeDesc","getDeliveryType","SalesStatusValue","salesStatusString","deliveryTypeString","getDeliveryTypeString","deliveryTypeClass","getDeliveryTypeClassName","deliveryTypeComp","getDeliveryTypeComp","storePickUp","isMultiplePickUpOptionEnabled","deliveryTypePickup","LabelComponent","deliveryTypeNoPickup","getStoreName","salesStatusComp","getTrackingInfo","TrackingUrl","TrackingNumber","orderDetailProducts","replace","pickupDateTimeslotInfo","getPickupDateTimeslotInfo","shouldShowTimeslot","isDeliveryPickupSame","canShowTimeslot","PickupTimeslotStartDateTime","PickupTimeslotEndDateTime","buyItAgainLinkClassName","salesLineClassName","salesLineFullClassName","isChecked","salesLineProps","resource","getRequestDeliveryDate","buyAgainButton","errors","salesLineDeliveryMode","retailMultiplePickupOption","isPickupDeliveryMode","_channelDeliveryOptio","PickupDeliveryModeCodes","dM","defaultDeliveryOption","getDeliveryDescriptionByProductId","productRecordId","_productDeliveryOptio","productDeliveryOption","currentDeliveryOption","deliveryDescription","DeliveryOptions","option","Code","_salesLine$ShippingAd","requestDeliveryDateTitle","RequestedDeliveryDate","Street","City","State","County","ZipCode","ThreeLetterISORegionName","Phone","FullAddress"],"sourceRoot":""}