{"version":3,"file":"static/js/11.7ed74ad5b404c03f87ad.chunk.js","mappings":"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","sources":["webpack://Msdyn365.Commerce.Online/./src/components/Pagination.tsx?3e26","webpack://Msdyn365.Commerce.Online/./src/modules/ari-search-results/ari-search-results.tsx?ca2c","webpack://Msdyn365.Commerce.Online/./src/modules/ari-search-results/ari-search-results.view.tsx?3734","webpack://Msdyn365.Commerce.Online/./src/modules/ari-search-results/components/AriSearchResultTable.component.tsx?9695","webpack://Msdyn365.Commerce.Online/./src/modules/back-order-list/back-order-list.tsx?459c","webpack://Msdyn365.Commerce.Online/./src/modules/back-order-list/back-order-list.view.tsx?34bd","webpack://Msdyn365.Commerce.Online/./src/modules/back-order-list/components/BackOrderTable.component.tsx?7284","webpack://Msdyn365.Commerce.Online/./src/modules/education-training/components/CourseTable.component.tsx?2e36","webpack://Msdyn365.Commerce.Online/./src/modules/education-training/education-training.tsx?6970","webpack://Msdyn365.Commerce.Online/./src/modules/education-training/education-training.view.tsx?562e","webpack://Msdyn365.Commerce.Online/./src/modules/eve-quick-order/components/EveQuickOrderRow.tsx?3ed0","webpack://Msdyn365.Commerce.Online/./src/modules/eve-quick-order/components/EveQuickOrderButtonRow.tsx?5cf2","webpack://Msdyn365.Commerce.Online/./src/modules/eve-quick-order/components/EveQuickOrderHeader.tsx?251e","webpack://Msdyn365.Commerce.Online/./src/actions/get-price-products-search-results.ts?0f32","webpack://Msdyn365.Commerce.Online/./src/modules/eve-quick-order/eve-quick-order.tsx?26f8","webpack://Msdyn365.Commerce.Online/./src/modules/eve-quick-order/eve-quick-order.view.tsx?4d7f","webpack://Msdyn365.Commerce.Online/./src/modules/gdn-invoice-details/components/gdn-invoice-details-header.tsx?c184","webpack://Msdyn365.Commerce.Online/./src/modules/gdn-invoice-details/components/gdn-invoice-details-payment-summary.tsx?0f36","webpack://Msdyn365.Commerce.Online/./src/modules/gdn-invoice-details/components/gdn-invoice-details-products-table.tsx?20b2","webpack://Msdyn365.Commerce.Online/./src/modules/gdn-invoice-details/gdn-invoice-details.tsx?938e","webpack://Msdyn365.Commerce.Online/./src/modules/gdn-invoice-details/gdn-invoice-details.view.tsx?afb5","webpack://Msdyn365.Commerce.Online/./src/modules/model-viewer/components/AriPartsListTable.component.tsx?cb62","webpack://Msdyn365.Commerce.Online/./src/modules/reports-export/components/render-card.tsx?6b95","webpack://Msdyn365.Commerce.Online/./src/modules/reports-export/reports-export.tsx?1ce9","webpack://Msdyn365.Commerce.Online/./src/modules/reports-export/reports-export.view.tsx?52d4","webpack://Msdyn365.Commerce.Online/./src/themes/gardner-theme/models/SupersessionKey.ts?818f","webpack://Msdyn365.Commerce.Online/./src/utils/getAriModelDetailUrl.ts?5e00","webpack://Msdyn365.Commerce.Online/./src/modules/content-block/components/additional-content.tsx?d5f9","webpack://Msdyn365.Commerce.Online/./src/modules/content-block/components/links.tsx?abbf","webpack://Msdyn365.Commerce.Online/./src/modules/content-block/content-block.tsx?3084","webpack://Msdyn365.Commerce.Online/./src/modules/content-block/content-block.view.tsx?1773","webpack://Msdyn365.Commerce.Online/./src/modules/fabrikam/views/order-history.view.tsx?a21d","webpack://Msdyn365.Commerce.Online/./src/modules/product-specification/components/product-specification-table-stucture.tsx?c1c4","webpack://Msdyn365.Commerce.Online/./src/modules/product-specification/product-specification.tsx?6583","webpack://Msdyn365.Commerce.Online/./src/modules/product-specification/product-specification.view.tsx?7490","webpack://Msdyn365.Commerce.Online/./src/modules/social-share/social-share.tsx?899b","webpack://Msdyn365.Commerce.Online/./src/modules/social-share/social-share.view.tsx?dcdf"],"sourcesContent":["/*--------------------------------------------------------------\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\nimport classNames from 'classnames';\r\nimport * as React from 'react';\r\nimport { UncontrolledTooltip, PaginationItem, PaginationLink, mapToCssModules } from '@msdyn365-commerce-modules/utilities';\r\nimport { IPaginationProps } from './IPaginationProps';\r\n\r\n/**\r\n * Uncontrolled Pagination component.\r\n */\r\nexport default class UncontrolledPagination extends React.PureComponent {\r\n public static defaultProps: Partial = {\r\n tag: 'nav',\r\n listTag: 'ul',\r\n 'aria-label': 'pagination',\r\n items: 0,\r\n itemsPerPage: 25,\r\n startingItem: 0,\r\n page: 1\r\n };\r\n\r\n private static readonly pagesDisplayed: number = 7;\r\n\r\n private maxPages: number;\r\n\r\n private qsps: { [param: string]: string };\r\n\r\n constructor(props: IPaginationProps) {\r\n super(props);\r\n this.maxPages = this.props.items ? Math.ceil(this.props.items / this.props.itemsPerPage! - 1) : 0;\r\n this.qsps = {};\r\n const splitUrl = this.props.url.split('?');\r\n\r\n if (splitUrl[1]) {\r\n const secondSplit = splitUrl[1].split('#');\r\n const parsedQsps = secondSplit[0].split('&');\r\n\r\n for (const qsp of parsedQsps) {\r\n const qspPair = qsp.split('=');\r\n\r\n if (this.props.qsp !== qspPair[0]) {\r\n this.qsps[qspPair[0]] = qspPair[1];\r\n }\r\n }\r\n }\r\n }\r\n\r\n public render(): JSX.Element {\r\n const {\r\n className,\r\n baseUrl,\r\n qsp,\r\n items,\r\n itemsPerPage,\r\n startingItem,\r\n previousText,\r\n nextText,\r\n previousAriaLabel,\r\n nextAriaLabel,\r\n listClassName,\r\n cssModule,\r\n children,\r\n size,\r\n tag: Tag,\r\n listTag: ListTag,\r\n 'aria-label': label,\r\n role,\r\n ...props\r\n }: any = this.props;\r\n\r\n this.maxPages = this.props.items ? Math.ceil(this.props.items / this.props.itemsPerPage!) : 0;\r\n this.qsps = {};\r\n const splitUrl = this.props.url.split('?');\r\n\r\n if (splitUrl[1]) {\r\n const secondSplit = splitUrl[1].split('#');\r\n const parsedQsps = secondSplit[0].split('&');\r\n\r\n for (const activeQsp of parsedQsps) {\r\n const qspPair = activeQsp.split('=');\r\n\r\n if (this.props.qsp !== qspPair[0]) {\r\n this.qsps[qspPair[0]] = qspPair[1];\r\n }\r\n }\r\n }\r\n\r\n const paginationClasses = mapToCssModules(classNames(className), cssModule);\r\n\r\n const listpaginationClasses = mapToCssModules(\r\n classNames(listClassName, 'msc-pagination', {\r\n [`msc-pagination-${size}`]: !!size\r\n }),\r\n cssModule\r\n );\r\n\r\n return (\r\n \r\n \r\n {this._generatePageLinks()}\r\n \r\n \r\n );\r\n }\r\n\r\n private _generatePaginationArrow(next: boolean, disable: boolean, className: string): React.ReactElement {\r\n const tooltipId = next ? this.props.nextId : this.props.prevId;\r\n const ariaDescribedBy = next ? this.props.nextAreaDescribed : this.props.prevAreaDescribed;\r\n const placement = next ? 'right' : 'left';\r\n const tag = disable ? 'span' : 'a';\r\n\r\n return (\r\n \r\n this.props.onPageChange(next ? this.props.page + 1 : this.props.page - 1)}\r\n >\r\n {next ? this.props.nextText : this.props.previousText}\r\n \r\n {tooltipId && (\r\n \r\n {next ? 'next' : 'previous'}\r\n \r\n )}\r\n \r\n );\r\n }\r\n\r\n private _generatePaginationItem(page: number): React.ReactElement {\r\n const active = this.props.page - 1 === page;\r\n page += 1;\r\n\r\n return (\r\n \r\n this.props.onPageChange(page)}>{page}\r\n \r\n );\r\n }\r\n\r\n private _generateEllipse(): React.ReactElement {\r\n return (\r\n \r\n ...\r\n \r\n );\r\n }\r\n\r\n private _generatePageLinks(): React.ReactFragment {\r\n const displayCountSide = 3;\r\n let leftDistance = this.props.page;\r\n let rightDistance = this.maxPages - this.props.page;\r\n const leftEllipse = this.maxPages > UncontrolledPagination.pagesDisplayed && leftDistance > 3;\r\n const rightEllipse = this.maxPages > UncontrolledPagination.pagesDisplayed && rightDistance > 3;\r\n\r\n leftDistance = Math.min(leftDistance, displayCountSide);\r\n rightDistance = Math.min(rightDistance, displayCountSide);\r\n const pages = [];\r\n const ellipseOffset = leftEllipse ? -1 : 0;\r\n const displayedPagesOnLeft = leftDistance + (displayCountSide - rightDistance) + ellipseOffset;\r\n const startingIndex = Math.max(this.props.page - displayedPagesOnLeft, 0);\r\n const endIndex = Math.min(\r\n startingIndex + 5 + (rightEllipse ? 0 : 1) + (leftEllipse ? 0 : 1),\r\n rightEllipse ? this.maxPages - 1 : this.maxPages\r\n );\r\n\r\n if (leftEllipse) {\r\n pages.push(this._generatePaginationItem(0));\r\n pages.push(this._generateEllipse());\r\n }\r\n\r\n for (let i = startingIndex; i < endIndex; i++) {\r\n pages.push(this._generatePaginationItem(i));\r\n }\r\n\r\n if (rightEllipse) {\r\n pages.push(this._generateEllipse());\r\n pages.push(this._generatePaginationItem(this.maxPages - 1));\r\n }\r\n\r\n return (\r\n <>\r\n {this._generatePaginationArrow(false, this.props.page === 1, 'previous')}\r\n {pages}\r\n {this._generatePaginationArrow(true, this.props.page === this.maxPages, 'next')}\r\n \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\nimport * as React from 'react';\r\n\r\nimport { IAriSearchResultsData } from './ari-search-results.data';\r\nimport { IAriSearchResultsProps } from './ari-search-results.props.autogenerated';\r\nimport { IAriModelEntity, IAriServiceModelExtension } from '../../actions/DataServiceEntities.g';\r\nimport { IAriModel } from './interfaces/IAriModel';\r\nimport { AriSearchResultTableComponent, IAriSearchResultTableResources } from './components/AriSearchResultTable.component';\r\nimport { QueryResultSettings } from '@msdyn365-commerce/retail-proxy';\r\nimport { QueryResultSettingsProxy } from '@msdyn365-commerce-modules/retail-actions';\r\nimport searchModelsAction, { SearchModelsInput } from '../../actions/search-models.action';\r\nimport Pagination from '../../components/Pagination';\r\nimport generateAriModelDetailUrl from '../../utils/getAriModelDetailUrl';\r\n/**\r\n * Props for the view component\r\n */\r\nexport interface IAriSearchResultsViewProps extends IAriSearchResultsProps {\r\n modelTable: React.ReactNode;\r\n pagination: React.ReactNode;\r\n}\r\n\r\n/**\r\n * Component state\r\n */\r\ninterface IAriSearchResultsState {\r\n page: number;\r\n models: IAriServiceModelExtension[];\r\n totalCount: number;\r\n}\r\n\r\n/**\r\n *\r\n * AriSearchResults component\r\n * @extends {React.PureComponent>}\r\n */\r\nclass AriSearchResults extends React.PureComponent, IAriSearchResultsState> {\r\n constructor(props: IAriSearchResultsProps) {\r\n super(props);\r\n const queryResultSettings = QueryResultSettingsProxy.fromInputData(props.context.actionContext).QueryResultSettings;\r\n let page = 1;\r\n if (queryResultSettings.Paging?.Skip && queryResultSettings.Paging.Skip > 0) {\r\n page = (this.props.config.itemsPerPage || 10) / queryResultSettings.Paging.Skip;\r\n }\r\n this.state = {\r\n page,\r\n models: this.props.data.ariResults.result?.ariSearchResults.Models || [],\r\n totalCount: this.props.data.ariResults.result?.ariSearchResults.TotalCount || 0\r\n };\r\n this.handlePaginationPageChange = this.handlePaginationPageChange.bind(this);\r\n\r\n void this.props.data.ariResults.then(results => {\r\n const models = results.ariSearchResults.Models;\r\n this.setState({\r\n models: models || [],\r\n totalCount: results.ariSearchResults.TotalCount\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * Generates the id for the product detail page\r\n * @param modelId model id for the page url\r\n * @param brandCode brand code for the page url\r\n * @private\r\n */\r\n private getModelDetailPageUrl(modelId: string, brandCode: string) {\r\n return generateAriModelDetailUrl(modelId, brandCode, this.props.context.actionContext);\r\n }\r\n\r\n /**\r\n * Updates the results of the model when paginating\r\n * @private\r\n */\r\n private updateModelResults() {\r\n // Explicitly setting isRefineEnabled to true as this functionality no longer needed.\r\n // const isRefineEnabled: boolean = this.props.context.request.query?.refine ? true : false;\r\n\r\n const isRefineEnabled = this.props.config.expandResults || false;\r\n\r\n const top = this.props.config.itemsPerPage || 10;\r\n const queryResultSettings: QueryResultSettings = {\r\n Paging: {\r\n Top: top,\r\n Skip: (this.state.page - 1) * top\r\n }\r\n };\r\n const searchTerm = this.props.context.request.query?.q || '';\r\n const {\r\n context: {\r\n request: { apiSettings },\r\n request,\r\n actionContext\r\n }\r\n } = this.props;\r\n const pageType =\r\n this.props.context.request.urlTokens.pageType === 'Category' || (request.query && request.query.categoryId)\r\n ? 'Category'\r\n : 'Search';\r\n const searchModelInput = new SearchModelsInput(searchTerm, queryResultSettings, pageType, apiSettings, isRefineEnabled);\r\n void searchModelsAction(searchModelInput, actionContext).then(result => {\r\n this.setState({\r\n models: result.ariSearchResults.Models || [],\r\n totalCount: result.ariSearchResults.TotalCount\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * Renders the model table\r\n * @param modelsList model list for the table\r\n * @param totalCount total count of models for pagination\r\n * @private\r\n */\r\n private getModelTable(modelsList: IAriModelEntity[], totalCount: number) {\r\n if (!modelsList?.length) {\r\n return null;\r\n }\r\n const modelsListWithPageLinks: IAriModel[] = modelsList.map(model => {\r\n return {\r\n ...model,\r\n detailPageUrl: this.getModelDetailPageUrl(model.Id.toString(), model.BrandCode!) || ''\r\n };\r\n });\r\n\r\n const { modelHeading, manufacturerHeading, tableHeading, descriptionHeading } = this.props.resources;\r\n const ariSearchResultTableResources: IAriSearchResultTableResources = {\r\n modelHeading,\r\n manufacturerHeading,\r\n tableHeading,\r\n descriptionHeading\r\n };\r\n return (\r\n \r\n );\r\n }\r\n\r\n /**\r\n * Handles user pagination\r\n * @param pageNumber page to change to\r\n * @private\r\n */\r\n private handlePaginationPageChange(pageNumber: number) {\r\n this.setState(\r\n {\r\n page: pageNumber\r\n },\r\n () => this.updateModelResults()\r\n );\r\n }\r\n\r\n private generateUrlForPagination() {\r\n const url = this.props.context.request.url;\r\n return url.requestUrl.toString();\r\n }\r\n\r\n /**\r\n * renders the pagination\r\n * @private\r\n */\r\n private renderPagination() {\r\n const {\r\n config: { itemsPerPage },\r\n resources: { previousText, nextText, paginationAriaLabel }\r\n } = this.props;\r\n const totalCount = this.state.totalCount;\r\n\r\n return (\r\n <>\r\n {totalCount > 0 && (\r\n \r\n )}\r\n \r\n );\r\n }\r\n\r\n // private renderExpandOrRefineResults = () => {\r\n // if (MsDyn365.isBrowser && typeof window !== 'undefined') {\r\n // const url = new URL(window.location.href);\r\n // const query = url.searchParams.get('q');\r\n\r\n // if (!query) {\r\n // return null;\r\n // }\r\n\r\n // const trimmedQuery = query.trim();\r\n // const hasMultipleTerms = /\\s|-/g.test(trimmedQuery);\r\n\r\n // if (!hasMultipleTerms) {\r\n // return null;\r\n // }\r\n\r\n // const isRefine = url.searchParams.has('refine');\r\n\r\n // let link;\r\n // if (!isRefine) {\r\n // url.searchParams.set('refine', 'true');\r\n // link = {this.props.resources.expandResultsText};\r\n // } else {\r\n // url.searchParams.delete('refine');\r\n // link = {this.props.resources.refineResultsText};\r\n // }\r\n // return (\r\n // \r\n // {this.props.resources.notFindingText} {link}\r\n // \r\n // );\r\n // }\r\n // return null;\r\n // };\r\n\r\n /**\r\n * Renders a Pagination previous text.\r\n * @param paginationPreviousText - Pagination previous text from resources.\r\n * @returns Previous text and flipper icon.\r\n */\r\n private readonly _renderPrev = (paginationPreviousText: string) => {\r\n return (\r\n
\r\n
\r\n );\r\n };\r\n\r\n /**\r\n * Renders a Pagination next text.\r\n * @param paginationNextText - Pagination next text from resources.\r\n * @returns Next text and flipper icon.\r\n */\r\n private readonly _renderNext = (paginationNextText: string) => {\r\n return (\r\n
\r\n {paginationNextText}\r\n
\r\n );\r\n };\r\n\r\n public render(): JSX.Element | null {\r\n const { models, totalCount } = this.state;\r\n\r\n const viewProps: IAriSearchResultsViewProps = {\r\n ...this.props,\r\n modelTable: this.getModelTable(models, totalCount),\r\n pagination: this.renderPagination()\r\n // notFindingMessage: this.renderExpandOrRefineResults()\r\n };\r\n return this.props.renderView(viewProps);\r\n }\r\n}\r\n\r\nexport default AriSearchResults;\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 * as React from 'react';\r\nimport { IAriSearchResultsViewProps } from './ari-search-results';\r\n\r\nexport default (props: IAriSearchResultsViewProps) => {\r\n const { modelTable, pagination } = props;\r\n return (\r\n
\r\n {modelTable}\r\n {pagination}\r\n {/* {notFindingMessage} */}\r\n
\r\n );\r\n};\r\n","import React from 'react';\r\nimport Table from 'reactstrap/lib/Table';\r\nimport { IAriModel } from '../interfaces/IAriModel';\r\nimport { ListGroup, ListGroupItem, ListGroupItemHeading, ListGroupItemText } from 'reactstrap';\r\n\r\nexport interface IAriSearchResultTableResources {\r\n tableHeading: string;\r\n modelHeading: string;\r\n manufacturerHeading: string;\r\n descriptionHeading: string;\r\n}\r\n\r\ninterface IAriSearchResultTableComponentProps {\r\n searchResults: IAriModel[];\r\n resources: IAriSearchResultTableResources;\r\n totalCount: number;\r\n}\r\n\r\nexport const AriSearchResultTableComponent: React.FC = props => {\r\n const { searchResults, resources, totalCount } = props;\r\n const { tableHeading, modelHeading, manufacturerHeading, descriptionHeading } = resources;\r\n const [outerWidth, setOuterWidth] = React.useState(0);\r\n\r\n React.useEffect(() => {\r\n //Set initial outerWidth\r\n setOuterWidth(window.outerWidth);\r\n //Resize window event handling\r\n window.removeEventListener('resize', () => setOuterWidth(window.outerWidth));\r\n window.addEventListener('resize', () => setOuterWidth(window.outerWidth), { passive: true });\r\n return window.removeEventListener('resize', () => setOuterWidth(window.outerWidth));\r\n });\r\n\r\n return (\r\n
\r\n {outerWidth > 768 ? (\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 {searchResults.map(model => {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n );\r\n })}\r\n \r\n
\r\n {tableHeading} {totalCount} results\r\n
{modelHeading}{manufacturerHeading}{descriptionHeading}
\r\n {model.Name}\r\n {model.Description}{model.Name}
\r\n ) : (\r\n \r\n {searchResults.map(model => {\r\n return (\r\n \r\n \r\n {model.Name}\r\n \r\n \r\n {model.Description}\r\n \r\n \r\n {model.Name}\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.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\nimport * as React from 'react';\r\n\r\nimport { getBackOrderListAsync } from '../../actions/DataActionExtension.g';\r\nimport { IBackOrderListEntity, IGetBackOrderListResponse } from '../../actions/DataServiceEntities.g';\r\nimport { IBackOrderListData } from './back-order-list.data';\r\nimport { IBackOrderListProps } from './back-order-list.props.autogenerated';\r\nimport { QueryResultSettingsProxy } from '@msdyn365-commerce-modules/retail-actions';\r\n// import getBackOrderList, { GetBackorderListInput } from '../../actions/get-backorder-list.action';\r\nimport Pagination from '../../components/Pagination';\r\nimport { BackOrderTableComponent, IBackOrderTableComponentResources } from './components/BackOrderTable.component';\r\nimport { reaction } from 'mobx';\r\nimport { observer } from 'mobx-react';\r\n\r\n/**\r\n * Props for the view component\r\n */\r\nexport interface IBackOrderListViewProps extends IBackOrderListProps {\r\n modelTable: React.ReactNode;\r\n pagination: React.ReactNode;\r\n // selection: React.ReactNode;\r\n}\r\n\r\n/**\r\n * Component state\r\n */\r\ninterface IBackOrderListState {\r\n page: number;\r\n backOrders: IBackOrderListEntity[];\r\n totalCount: number;\r\n availableSortOptions: string[];\r\n sortOrder: string;\r\n selectedSort: string;\r\n loading: boolean;\r\n}\r\n\r\n/**\r\n *\r\n * BackOrderList component\r\n * @extends {React.PureComponent>}\r\n */\r\n@observer\r\nclass BackOrderList extends React.PureComponent, IBackOrderListState> {\r\n private static defaultBackOrderItemsPerPage = 15;\r\n\r\n private readonly numItemsToDisplay = this.props.config.backOrderItemsPerPage || BackOrderList.defaultBackOrderItemsPerPage;\r\n\r\n constructor(props: IBackOrderListProps) {\r\n super(props);\r\n\r\n const queryResultSettings = QueryResultSettingsProxy.fromInputData(props.context.actionContext).QueryResultSettings;\r\n let page = 1;\r\n if (queryResultSettings.Paging?.Skip && queryResultSettings.Paging.Skip > 0) {\r\n page = this.numItemsToDisplay / queryResultSettings.Paging.Skip;\r\n }\r\n this.state = {\r\n page,\r\n backOrders: this.props.data.backOrderResults.result?.backOrderData.BackOrderLines || [],\r\n totalCount: this.props.data.backOrderResults.result?.backOrderData.RecordCount || 0,\r\n availableSortOptions: this.props.data.backOrderResults.result?.backOrderData.AvailableSortOptions || [],\r\n sortOrder: this.props.data.backOrderResults.result?.backOrderData.SortOrder || '',\r\n selectedSort: this.props.data.backOrderResults.result?.backOrderData.SelectedSort || '',\r\n loading: true\r\n };\r\n\r\n this.handlePaginationPageChange = this.handlePaginationPageChange.bind(this);\r\n this.handleSortingTypeChange = this.handleSortingTypeChange.bind(this);\r\n this.setBackOrderListResults = this.setBackOrderListResults.bind(this);\r\n this.updateBackOrderResults = this.updateBackOrderResults.bind(this);\r\n this.toggleSortOrder = this.toggleSortOrder.bind(this);\r\n }\r\n\r\n public componentDidMount(): void {\r\n reaction(\r\n () => this.props.data.backOrderResults.result?.backOrderData,\r\n () => this.setBackOrderListResults(this.props.data.backOrderResults.result!.backOrderData)\r\n );\r\n }\r\n\r\n private setBackOrderListResults(backOrderListResponse: IGetBackOrderListResponse) {\r\n this.setState({\r\n backOrders: backOrderListResponse.BackOrderLines || [],\r\n totalCount: backOrderListResponse.RecordCount || 0,\r\n availableSortOptions: backOrderListResponse.AvailableSortOptions || [],\r\n sortOrder: backOrderListResponse.SortOrder || '',\r\n selectedSort: backOrderListResponse.SelectedSort || '',\r\n loading: false\r\n });\r\n }\r\n\r\n /**\r\n * Updates the results of the model when paginating\r\n * @private\r\n */\r\n private async updateBackOrderResults() {\r\n const top = this.numItemsToDisplay;\r\n const skip = this.state.page * top - top;\r\n const selectedSort = this.state.selectedSort;\r\n const sortOrder = this.state.sortOrder;\r\n const {\r\n context: { actionContext }\r\n } = this.props;\r\n\r\n // const getBackorderListInput = new GetBackorderListInput(request, request.apiSettings, top, skip, selectedSort, sortOrder);\r\n // console.log(getBackorderListInput);\r\n // const res = await getBackOrderList(getBackorderListInput, actionContext);\r\n const res = await getBackOrderListAsync({ callerContext: actionContext }, top, skip, selectedSort, sortOrder);\r\n void this.setBackOrderListResults(res);\r\n // void getBackOrderList(getBackorderListInput, actionContext).then(res => {\r\n // console.log(res);\r\n // this.setBackOrderListResults(res.backOrderData);\r\n // // this.setState({\r\n // // backOrders: res.backOrderData.BackOrderLines || [],\r\n // // totalCount: res.backOrderData.RecordCount || 0,\r\n // // sortOrder: res.backOrderData.SortOrder || '',\r\n // // selectedSort: res.backOrderData.SelectedSort || ''\r\n // // });\r\n // });\r\n }\r\n\r\n /**\r\n * Renders the model table\r\n * @param modelsList model list for the table\r\n * @param totalCount total count of models for pagination\r\n * @private\r\n */\r\n private getModelTable(backOrders: IBackOrderListEntity[], totalCount: number) {\r\n const {\r\n backOrderListTitleText,\r\n backOrderListItemsText,\r\n orderNumberHeadingText,\r\n poNumberHeadingText,\r\n mfrHeadingText,\r\n partNumberHeadingText,\r\n deliveryTypeHeadingText,\r\n qtyHeadingText,\r\n totalHeadingText,\r\n noBackOrdersMessageText,\r\n loadingMessageText,\r\n estShipDateHeadingText\r\n } = this.props.resources;\r\n const backOrdersListResources: IBackOrderTableComponentResources = {\r\n backOrderListTitleText,\r\n backOrderListItemsText,\r\n orderNumberHeadingText,\r\n poNumberHeadingText,\r\n mfrHeadingText,\r\n partNumberHeadingText,\r\n deliveryTypeHeadingText,\r\n qtyHeadingText,\r\n totalHeadingText,\r\n noBackOrdersMessageText,\r\n estShipDateHeadingText,\r\n loadingMessageText\r\n };\r\n\r\n return (\r\n \r\n );\r\n }\r\n\r\n /**\r\n * Handles user pagination\r\n * @param pageNumber page to change to\r\n * @private\r\n */\r\n private handlePaginationPageChange(pageNumber: number) {\r\n this.setState(\r\n {\r\n page: pageNumber\r\n },\r\n () => this.updateBackOrderResults()\r\n );\r\n }\r\n\r\n private generateUrlForPagination() {\r\n const url = this.props.context.request.url;\r\n return url.requestUrl.toString();\r\n }\r\n\r\n /**\r\n * renders the pagination\r\n * @private\r\n */\r\n private renderPagination() {\r\n const {\r\n resources: { previousText, nextText, paginationAriaLabel }\r\n } = this.props;\r\n\r\n if (this.state.totalCount === 0) {\r\n return '';\r\n }\r\n return (\r\n \r\n );\r\n }\r\n\r\n /**\r\n * Renders a Pagination previous text.\r\n * @param paginationPreviousText - Pagination previous text from resources.\r\n * @returns Previous text and flipper icon.\r\n */\r\n private readonly _renderPrev = (paginationPreviousText: string) => {\r\n return (\r\n
\r\n
\r\n );\r\n };\r\n\r\n /**\r\n * Renders a Pagination next text.\r\n * @param paginationNextText - Pagination next text from resources.\r\n * @returns Next text and flipper icon.\r\n */\r\n private readonly _renderNext = (paginationNextText: string) => {\r\n return (\r\n
\r\n {paginationNextText}\r\n
\r\n );\r\n };\r\n\r\n private toggleSortOrder(sortOrder: string): void {\r\n this.setState(\r\n {\r\n sortOrder: sortOrder === 'Ascending' ? 'Descending' : 'Ascending',\r\n page: 1\r\n },\r\n () => this.updateBackOrderResults()\r\n );\r\n }\r\n\r\n private renderSortOrderButton() {\r\n // $msv-ChevronDown: \"\\ea4e\";\r\n // $msv-ChevronUp: \"\\ea78\";\r\n const sortOrder = this.state.sortOrder;\r\n return (\r\n \r\n );\r\n }\r\n\r\n /**\r\n * Handles sort by dropdown changes\r\n * @param pageNumber page to change to\r\n * @private\r\n */\r\n private async handleSortingTypeChange(e: React.ChangeEvent) {\r\n this.setState(\r\n {\r\n selectedSort: e.target.value,\r\n page: 1\r\n },\r\n () => this.updateBackOrderResults()\r\n );\r\n }\r\n\r\n private readonly _renderSortingType = () => {\r\n return (\r\n
\r\n

{this.props.resources.sortingSelectLabelText}

\r\n \r\n {!this.state.selectedSort && }\r\n {this.state.availableSortOptions &&\r\n this.state.availableSortOptions.length > 0 &&\r\n this.state.availableSortOptions.map(sortOptions => (\r\n \r\n ))}\r\n \r\n
\r\n );\r\n };\r\n\r\n public render(): JSX.Element | null {\r\n const { backOrders, totalCount } = this.state;\r\n\r\n const viewProps: IBackOrderListViewProps = {\r\n ...this.props,\r\n // selection: this._renderSortingType(),\r\n modelTable: this.getModelTable(backOrders, totalCount),\r\n pagination: this.renderPagination()\r\n };\r\n return this.props.renderView(viewProps);\r\n }\r\n}\r\n\r\nexport default BackOrderList;\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 * as React from 'react';\r\nimport { IBackOrderListViewProps } from './back-order-list';\r\n\r\nexport default (props: IBackOrderListViewProps) => {\r\n const { modelTable, pagination } = props;\r\n return (\r\n
\r\n {/* {selection} */}\r\n {modelTable}\r\n {pagination}\r\n
\r\n );\r\n};\r\n","/* eslint-disable react/jsx-no-bind */\r\nimport React from 'react';\r\nimport Table from 'reactstrap/lib/Table';\r\nimport { IBackOrderListEntity } from '../../../actions/DataServiceEntities.g';\r\nimport { ListGroup, ListGroupItem, ListGroupItemHeading, ListGroupItemText } from 'reactstrap';\r\nimport { getUrlSync, ICoreContext, IDateFormatOptions } from '@msdyn365-commerce/core';\r\nimport { format } from '@msdyn365-commerce-modules/utilities';\r\nimport { IBackOrderListConfig } from '../back-order-list.props.autogenerated';\r\n\r\nexport interface IBackOrderTableComponentResources {\r\n backOrderListTitleText: string;\r\n backOrderListItemsText: string;\r\n orderNumberHeadingText: string;\r\n poNumberHeadingText: string;\r\n mfrHeadingText: string;\r\n partNumberHeadingText: string;\r\n deliveryTypeHeadingText: string;\r\n qtyHeadingText: string;\r\n totalHeadingText: string;\r\n noBackOrdersMessageText: string;\r\n estShipDateHeadingText: string;\r\n loadingMessageText: string;\r\n}\r\n// Add 'SimpleProduct[]' etc to this\r\n\r\ninterface IBackOrderTableComponentProps {\r\n backOrders: IBackOrderListEntity[];\r\n resources: IBackOrderTableComponentResources;\r\n totalCount: number;\r\n config: IBackOrderListConfig;\r\n backOrderEtaBuffer: number;\r\n ctx: ICoreContext;\r\n sortingDropdown: JSX.Element;\r\n sortOrderButton: JSX.Element;\r\n currencyFormatter: (price: string | number, currencyCode?: string | undefined) => string;\r\n loading: boolean;\r\n}\r\n\r\nexport const BackOrderTableComponent: React.FC = props => {\r\n const {\r\n backOrders,\r\n resources,\r\n totalCount,\r\n backOrderEtaBuffer,\r\n sortOrderButton,\r\n sortingDropdown,\r\n currencyFormatter,\r\n ctx,\r\n config,\r\n loading\r\n } = props;\r\n const {\r\n backOrderListItemsText,\r\n orderNumberHeadingText,\r\n poNumberHeadingText,\r\n mfrHeadingText,\r\n partNumberHeadingText,\r\n deliveryTypeHeadingText,\r\n qtyHeadingText,\r\n totalHeadingText,\r\n noBackOrdersMessageText,\r\n estShipDateHeadingText,\r\n loadingMessageText\r\n } = resources;\r\n\r\n const [outerWidth, setOuterWidth] = React.useState(0);\r\n\r\n React.useEffect(() => {\r\n //Set initial outerWidth\r\n setOuterWidth(window.outerWidth);\r\n //Resize window event handling\r\n const handleResize = () => setOuterWidth(window.outerWidth);\r\n window.addEventListener('resize', handleResize, { passive: true });\r\n\r\n return () => {\r\n window.removeEventListener('resize', handleResize);\r\n };\r\n }, [backOrders]);\r\n\r\n if (outerWidth === 0) {\r\n return null;\r\n }\r\n return (\r\n
\r\n {loading ? (\r\n
\r\n

\r\n

{loadingMessageText}

\r\n
\r\n ) : backOrders.length === 0 ? (\r\n \r\n

{noBackOrdersMessageText}

\r\n
\r\n ) : outerWidth > 768 ? (\r\n <>\r\n
\r\n {totalCount > 0 && (\r\n
\r\n {sortingDropdown}\r\n {sortOrderButton}\r\n
\r\n )}\r\n {format(backOrderListItemsText, totalCount)}\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 \r\n \r\n {backOrders.length > 0 ? (\r\n backOrders.map((order, index) => {\r\n const deliveryType = order.DeliveryType === 'None' ? 'Standard' : order.DeliveryType;\r\n const shipDateString = order.ShippingDate?.toString() ? order.ShippingDate?.toString() : '';\r\n const startIndex = shipDateString.indexOf('(') + 1;\r\n const endIndex = shipDateString.indexOf(')');\r\n const result = parseFloat(shipDateString.substring(startIndex, endIndex));\r\n const estShipDateRes = result ? new Date(result) : new Date();\r\n estShipDateRes.setDate(estShipDateRes.getDate());\r\n\r\n // Retrieve the openOrderDetailsUrl from config or set it to an empty string if not provided\r\n const openOrderDetailsUrl = config.openOrderDetailsUrl\r\n ? getUrlSync(config.openOrderDetailsUrl, props.ctx.actionContext)\r\n : '';\r\n\r\n // Form the link only if openOrderDetailsUrl is provided\r\n const orderDetailsRedirectUrl = openOrderDetailsUrl\r\n ? `${openOrderDetailsUrl}${openOrderDetailsUrl.includes('?') ? '&' : '?'}salesId=${order.SalesId}`\r\n : null;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n {/* {pr.ItemId} */}\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
{orderNumberHeadingText}{poNumberHeadingText}{deliveryTypeHeadingText}{mfrHeadingText}{partNumberHeadingText}{qtyHeadingText}{totalHeadingText}{estShipDateHeadingText}
\r\n {orderDetailsRedirectUrl ? (\r\n {order.SalesId}\r\n ) : (\r\n <>{order.SalesId}\r\n )}\r\n {order.PurchaseOrderNumber}{deliveryType}{order.ManufacturerNumber}{order.ItemId}{order.Quantity}{currencyFormatter(order.Total || 0)}{formatDate(ctx, estShipDateRes, backOrderEtaBuffer)}
{noBackOrdersMessageText}
\r\n \r\n ) : (\r\n \r\n
\r\n
{format(backOrderListItemsText, totalCount)}
\r\n {backOrders.map((order, index) => {\r\n const deliveryType = order.DeliveryType === 'None' ? 'Standard' : order.DeliveryType;\r\n const shipDateString = order.ShippingDate?.toString() ? order.ShippingDate?.toString() : '';\r\n const startIndex = shipDateString.indexOf('(') + 1;\r\n const endIndex = shipDateString.indexOf(')');\r\n const result = parseFloat(shipDateString.substring(startIndex, endIndex));\r\n const estShipDateRes = result ? new Date(result) : new Date();\r\n estShipDateRes.setDate(estShipDateRes.getDate());\r\n return (\r\n \r\n \r\n
\r\n {order.ItemId}\r\n {deliveryType}\r\n
\r\n
\r\n \r\n
\r\n \r\n {`${mfrHeadingText} : `}\r\n {order.ManufacturerNumber}\r\n \r\n \r\n {`${estShipDateHeadingText} : `}\r\n {formatDate(ctx, estShipDateRes, backOrderEtaBuffer)}\r\n \r\n
\r\n
\r\n \r\n
\r\n {order.SalesId}\r\n {order.PurchaseOrderNumber && (\r\n \r\n {`${poNumberHeadingText} `}\r\n {order.PurchaseOrderNumber}\r\n \r\n )}\r\n
\r\n
\r\n \r\n
\r\n \r\n {`${qtyHeadingText} : `}\r\n {order.Quantity}\r\n \r\n \r\n {`${totalHeadingText} : `}\r\n {currencyFormatter(order.Total || 0)}\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/**\r\n * Formats date.\r\n * @param context - Core context.\r\n * @param date - Date to display.\r\n * @returns String value.\r\n */\r\nconst formatDate = (context: ICoreContext, date: Date | undefined, bufferInDays: number) => {\r\n if (date === undefined) {\r\n return '';\r\n }\r\n\r\n // If no date find f&O returns default date.\r\n const defaultDate = new Date(-2208988790000);\r\n if (\r\n date.getFullYear() === defaultDate.getFullYear() &&\r\n date.getMonth() === defaultDate.getMonth() &&\r\n date.getDate() === defaultDate.getDate()\r\n ) {\r\n return 'N/A';\r\n }\r\n\r\n const dateOptions: IDateFormatOptions = { year: 'numeric', month: 'numeric', day: 'numeric' };\r\n date.setTime(date.getTime() + date.getTimezoneOffset() * 60000);\r\n date.setDate(date.getDate() + bufferInDays);\r\n return context.cultureFormatter.formatDate(date, dateOptions);\r\n};\r\n","/* eslint-disable react/jsx-no-bind */\r\nimport React from 'react';\r\nimport Table from 'reactstrap/lib/Table';\r\nimport { ICourseEntity } from '../../../actions/DataServiceEntities.g';\r\nimport { addCourseToCartAsync } from '../../../actions/DataActionExtension.g';\r\nimport { ListGroup, ListGroupItem, ListGroupItemHeading, ListGroupItemText } from 'reactstrap';\r\nimport { ICartState } from '@msdyn365-commerce/global-state';\r\nimport { ICoreContext } from '@msdyn365-commerce/core';\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport { IEducationTrainingViewState } from '../education-training';\r\n\r\nexport interface ICourseTableComponentResources {\r\n courseListHeading: string;\r\n courseListResultsHeading: string;\r\n courseNameHeading: string;\r\n courseDateHeading: string;\r\n courseRegistrationDetailsHeading: string;\r\n courseAddToCartHeading: string;\r\n addToCartButtonLabel: string;\r\n startLabel: string;\r\n endLabel: string;\r\n registrationEndsLabel: string;\r\n maximumAttendeesLabel: string;\r\n currentAttendeesLabel: string;\r\n courseExpiredMessage: string;\r\n courseFullMessage: string;\r\n}\r\n\r\ninterface ICourseTableComponentProps {\r\n courseList: ICourseEntity[];\r\n resources: ICourseTableComponentResources;\r\n totalCount: number;\r\n cart: ICartState | undefined;\r\n channelId: number;\r\n ctx: ICoreContext;\r\n additionalInfo: Msdyn365.RichText | undefined;\r\n viewState: IEducationTrainingViewState;\r\n setLoading: (setLoading: boolean) => void;\r\n}\r\n\r\nexport const CourseTableComponent: React.FC = props => {\r\n const { courseList, resources, totalCount, cart, ctx, additionalInfo, viewState, setLoading } = props;\r\n const {\r\n courseListHeading,\r\n courseListResultsHeading,\r\n courseNameHeading,\r\n courseDateHeading,\r\n courseRegistrationDetailsHeading,\r\n courseAddToCartHeading,\r\n addToCartButtonLabel,\r\n startLabel,\r\n endLabel,\r\n registrationEndsLabel,\r\n maximumAttendeesLabel,\r\n currentAttendeesLabel,\r\n courseExpiredMessage,\r\n courseFullMessage\r\n } = resources;\r\n const [outerWidth, setOuterWidth] = React.useState(0);\r\n const [errMessage, setErrMessage] = React.useState('');\r\n\r\n React.useEffect(() => {\r\n //Set initial outerWidth\r\n setOuterWidth(window.outerWidth);\r\n //Resize window event handling\r\n window.removeEventListener('resize', () => setOuterWidth(window.outerWidth));\r\n window.addEventListener('resize', () => setOuterWidth(window.outerWidth), { passive: true });\r\n return window.removeEventListener('resize', () => setOuterWidth(window.outerWidth));\r\n });\r\n\r\n const fmt: Intl.DateTimeFormatOptions = {\r\n year: 'numeric',\r\n month: 'short',\r\n day: '2-digit',\r\n timeZoneName: 'short',\r\n second: undefined,\r\n hour: 'numeric',\r\n minute: '2-digit'\r\n };\r\n\r\n async function _handleAddToCart(e: React.MouseEvent) {\r\n setLoading(true);\r\n // TODO:Move this function to the parent file. No api calls should be made from display components.\r\n const cartId = cart?.cart.Id;\r\n const target = e.target as HTMLDivElement; // TODO:We don't need to reference elements in react like this. We can use state to have a success message / button without manipulating the element.\r\n\r\n if (!cartId || !target.id) {\r\n setLoading(false);\r\n return;\r\n }\r\n\r\n try {\r\n void (await addCourseToCartAsync({ callerContext: ctx.actionContext }, cartId, target.id));\r\n void (await cart?.refreshCart({})); // @sylver - Added refresh cart here to update the mini cart on action completion.\r\n target.textContent = 'Added to Cart!'; //TODO: Use Resource\r\n target.id = '';\r\n setErrMessage('');\r\n } catch (e) {\r\n setErrMessage((e as { name: string }).name);\r\n } finally {\r\n setLoading(false);\r\n }\r\n }\r\n\r\n return (\r\n
\r\n {' '}\r\n
\r\n {/*TODO: Use BEM CSS */}\r\n {outerWidth > 768 ? (\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 {courseList.map(c => {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n })}\r\n \r\n
\r\n {courseListHeading} ({totalCount} {courseListResultsHeading})
\r\n
\r\n {/*{additionalInfo &&

{additionalInfo}

}*/}\r\n {additionalInfo && }\r\n {errMessage && (\r\n <>\r\n
\r\n

{errMessage}

\r\n \r\n )}\r\n
{courseNameHeading}{courseDateHeading}{courseRegistrationDetailsHeading}{courseAddToCartHeading}
\r\n {c.HRMCourseId} - ${c.GDNCourseFee}\r\n
\r\n {c.Description}\r\n {/*
*/}\r\n {/* {c.Organizer} */}\r\n {/* John Thompson */}\r\n
\r\n {startLabel}\r\n {c.StartDateTime.toLocaleString('en-us', fmt)}
{' '}\r\n {/* TODO: Get locale from context, not hardcode */}\r\n {endLabel}\r\n {c.EndDateTime.toLocaleString('en-us', fmt)}
\r\n {/* Location: */}\r\n {/* {c.Location} */}\r\n {/* Tampa Bay, Florida */}\r\n
\r\n {registrationEndsLabel}\r\n {c.LastDateOfSignup.toLocaleString('en-us', fmt)}\r\n
\r\n {maximumAttendeesLabel}\r\n {c.MaxAttendees}\r\n
\r\n {currentAttendeesLabel}\r\n {c.CurrentAttendees}\r\n
\r\n {c.CourseStatus === 'Expired' ? courseExpiredMessage : ''} {/* TODO: Consider an enum */}\r\n {c.CourseStatus === 'Full' ? courseFullMessage : ''}\r\n {c.CourseStatus === 'Valid' && (\r\n // @ts-ignore\r\n \r\n {addToCartButtonLabel}\r\n \r\n )}\r\n {/* HOP532180054 */} {/*HOP532104757*/}\r\n {/* update ext.HRMCOURSETABLE set HRMCOURSEID = 'HOP532180054' where HRMCOURSEID = 'HOP532180054' */}\r\n
\r\n ) : (\r\n \r\n

\r\n {courseListHeading} ({totalCount} {courseListResultsHeading})\r\n
\r\n
\r\n {additionalInfo &&

{additionalInfo}

}\r\n {errMessage && (\r\n <>\r\n
\r\n

{errMessage}

\r\n \r\n )}\r\n

\r\n {courseList.map(c => {\r\n return (\r\n \r\n {c.HRMCourseId}\r\n {c.Description}\r\n \r\n {startLabel}\r\n {c.StartDateTime.toLocaleString('en-us', fmt)}
\r\n {endLabel}\r\n {c.EndDateTime.toLocaleString('en-us', fmt)}\r\n
\r\n \r\n {registrationEndsLabel}\r\n {c.LastDateOfSignup.toLocaleString('en-us', fmt)}\r\n
\r\n {maximumAttendeesLabel}\r\n {c.MaxAttendees}\r\n
\r\n {currentAttendeesLabel}\r\n {c.CurrentAttendees}\r\n
\r\n \r\n {c.CourseStatus === 'Expired' ? courseExpiredMessage : ''}\r\n {c.CourseStatus === 'Full' ? courseFullMessage : ''}\r\n {c.CourseStatus === 'Valid' && (\r\n // @ts-ignore\r\n
\r\n {addToCartButtonLabel}\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.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\nimport * as React from 'react';\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport { IEducationTrainingData } from './education-training.data';\r\nimport { IEducationTrainingProps } from './education-training.props.autogenerated';\r\nimport { ICourseEntity, ICourseResponseEntity } from '../../actions/DataServiceEntities.g';\r\nimport { QueryResultSettings } from '@msdyn365-commerce/retail-proxy';\r\nimport { QueryResultSettingsProxy } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { getCourseDataAsync } from '../../actions/DataActionExtension.g';\r\nimport Pagination from '../../components/Pagination';\r\nimport { CourseTableComponent, ICourseTableComponentResources } from './components/CourseTable.component';\r\nimport { reaction } from 'mobx';\r\nimport { ICartState } from '@msdyn365-commerce/global-state';\r\nimport { observer } from 'mobx-react';\r\n\r\n/**\r\n * Props for the view component\r\n */\r\nexport interface IEducationTrainingViewProps extends IEducationTrainingProps {\r\n modelTable: React.ReactNode;\r\n pagination: React.ReactNode;\r\n}\r\n\r\n/**\r\n * View state for view component\r\n */\r\nexport interface IEducationTrainingViewState {\r\n isLoading: boolean;\r\n}\r\n\r\n/**\r\n * Component state\r\n */\r\ninterface IEducationTrainingState {\r\n page: number;\r\n courses: ICourseEntity[];\r\n totalCount: number;\r\n cart: ICartState | undefined;\r\n viewState: IEducationTrainingViewState;\r\n}\r\n\r\n/**\r\n *\r\n * EducationTraining component\r\n * @extends {React.PureComponent>}\r\n */\r\n@observer\r\nclass EducationTraining extends React.PureComponent, IEducationTrainingState> {\r\n constructor(props: IEducationTrainingProps) {\r\n super(props);\r\n\r\n const queryResultSettings = QueryResultSettingsProxy.fromInputData(props.context.actionContext).QueryResultSettings;\r\n let page = 1;\r\n if (queryResultSettings.Paging?.Skip && queryResultSettings.Paging.Skip > 0) {\r\n page = (this.props.config.itemsPerPage || 9) / queryResultSettings.Paging.Skip;\r\n }\r\n const viewState = {\r\n isLoading: false\r\n };\r\n this.state = {\r\n page,\r\n courses: this.props.data.courseResults.result?.courseResponse.Courses || [],\r\n totalCount: this.props.data.courseResults.result?.courseResponse.TotalCount || 0,\r\n cart: this.props.data.cart.result,\r\n viewState\r\n };\r\n\r\n this.handlePaginationPageChange = this.handlePaginationPageChange.bind(this);\r\n this.setCourseResults = this.setCourseResults.bind(this);\r\n this.setCartState = this.setCartState.bind(this);\r\n this.setLoading = this.setLoading.bind(this);\r\n }\r\n\r\n public componentDidMount(): void {\r\n reaction(\r\n () => this.props.data.courseResults.result?.courseResponse,\r\n () => this.setCourseResults(this.props.data.courseResults.result!.courseResponse)\r\n );\r\n reaction(\r\n () => this.props.data.cart.result?.cart,\r\n () => this.setCartState(this.props.data.cart.result!)\r\n );\r\n }\r\n\r\n private setCourseResults(courseResponse: ICourseResponseEntity) {\r\n this.setState({\r\n courses: courseResponse.Courses || [],\r\n totalCount: courseResponse.TotalCount\r\n });\r\n }\r\n\r\n private setCartState(cart: ICartState) {\r\n this.setState({\r\n cart: cart\r\n });\r\n }\r\n\r\n public setLoading(setLoading: boolean) {\r\n this.setState(prevState => ({ viewState: { ...prevState.viewState, isLoading: setLoading } }));\r\n }\r\n\r\n /**\r\n * Updates the results of the model when paginating\r\n * @private\r\n */\r\n private updateModelResults() {\r\n const top = this.props.config.itemsPerPage || 9;\r\n const queryResultSettings: QueryResultSettings = {\r\n Paging: {\r\n Top: top,\r\n Skip: this.state.page * top - top\r\n }\r\n };\r\n const {\r\n context: { actionContext }\r\n } = this.props;\r\n\r\n void getCourseDataAsync({ callerContext: actionContext, queryResultSettings: queryResultSettings }).then(result => {\r\n this.setState({\r\n courses: result[0].Courses || [],\r\n totalCount: result[0].TotalCount\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * Renders the model table\r\n * @param modelsList model list for the table\r\n * @param totalCount total count of models for pagination\r\n * @private\r\n */\r\n private getModelTable(\r\n courseList: ICourseEntity[],\r\n additionalInfo: Msdyn365.RichText | undefined,\r\n totalCount: number,\r\n cart: ICartState | undefined,\r\n viewState: IEducationTrainingViewState,\r\n setLoading: (setLoading: boolean) => void\r\n ) {\r\n if (!courseList?.length) {\r\n return null;\r\n }\r\n\r\n const {\r\n courseListHeading,\r\n courseListResultsHeading,\r\n courseNameHeading,\r\n courseDateHeading,\r\n courseRegistrationDetailsHeading,\r\n courseAddToCartHeading,\r\n addToCartButtonLabel,\r\n startLabel,\r\n endLabel,\r\n registrationEndsLabel,\r\n maximumAttendeesLabel,\r\n currentAttendeesLabel,\r\n courseExpiredMessage,\r\n courseFullMessage\r\n } = this.props.resources;\r\n const educationTrainingResources: ICourseTableComponentResources = {\r\n courseListHeading,\r\n courseListResultsHeading,\r\n courseNameHeading,\r\n courseDateHeading,\r\n courseRegistrationDetailsHeading,\r\n courseAddToCartHeading,\r\n addToCartButtonLabel,\r\n startLabel,\r\n endLabel,\r\n registrationEndsLabel,\r\n maximumAttendeesLabel,\r\n currentAttendeesLabel,\r\n courseExpiredMessage,\r\n courseFullMessage\r\n };\r\n return (\r\n \r\n );\r\n }\r\n\r\n /**\r\n * Handles user pagination\r\n * @param pageNumber page to change to\r\n * @private\r\n */\r\n private handlePaginationPageChange(pageNumber: number) {\r\n this.setState(\r\n {\r\n page: pageNumber\r\n },\r\n () => this.updateModelResults()\r\n );\r\n }\r\n\r\n /**\r\n * renders the pagination\r\n * @private\r\n */\r\n private renderPagination() {\r\n const {\r\n config: { itemsPerPage },\r\n resources: { previousText, nextText, paginationAriaLabel }\r\n } = this.props;\r\n if (this.state.totalCount === 0) {\r\n return '';\r\n }\r\n return (\r\n \r\n );\r\n }\r\n\r\n /**\r\n * Renders a Pagination previous text.\r\n * @param paginationPreviousText - Pagination previous text from resources.\r\n * @returns Previous text and flipper icon.\r\n */\r\n private readonly _renderPrev = (paginationPreviousText: string) => {\r\n return (\r\n
this.handlePaginationPageChange(this.state.page - 1)}>\r\n
\r\n );\r\n };\r\n\r\n /**\r\n * Renders a Pagination next text.\r\n * @param paginationNextText - Pagination next text from resources.\r\n * @returns Next text and flipper icon.\r\n */\r\n private readonly _renderNext = (paginationNextText: string) => {\r\n return (\r\n
this.handlePaginationPageChange(this.state.page + 1)}>\r\n {paginationNextText}\r\n
\r\n );\r\n };\r\n\r\n public render(): JSX.Element | null {\r\n const { courses, totalCount, cart } = this.state;\r\n\r\n const viewProps: IEducationTrainingViewProps = {\r\n ...this.props,\r\n modelTable: this.getModelTable(\r\n courses,\r\n this.props.config.additionalInfo,\r\n totalCount,\r\n cart,\r\n this.state.viewState,\r\n this.setLoading\r\n ),\r\n pagination: this.renderPagination()\r\n };\r\n return this.props.renderView(viewProps);\r\n }\r\n}\r\n\r\nexport default EducationTraining;\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 * as React from 'react';\r\nimport { IEducationTrainingViewProps } from './education-training';\r\n\r\nexport default (props: IEducationTrainingViewProps) => {\r\n const { modelTable, pagination } = props;\r\n return (\r\n
\r\n {modelTable}\r\n {pagination}\r\n
\r\n );\r\n};\r\n","import React from 'react';\r\nimport { RowError, SimpleProductExt } from '../eve-quick-order';\r\nimport { IAdvancedNoteEntity, IManufacturerCodeResponseEntity } from '../../../actions/DataServiceEntities.g';\r\nimport { SupersessionKey } from '../../../themes/gardner-theme/models/SupersessionKey';\r\nimport { Tooltip } from 'reactstrap';\r\n\r\nexport interface IEveQuickOrderRowResources {\r\n defaultManufacturerCodeText: string;\r\n deleteText: string;\r\n productEligibilityText: string;\r\n supersededProductText: string;\r\n}\r\n\r\ninterface IEveQuickOrderRowProps {\r\n id: number;\r\n onDelete: (id: number) => void;\r\n onRowChange: (id: number, value: string, quantity: string, manufacturerCode: string) => void;\r\n onAddRows: () => void;\r\n value: string;\r\n quantity: string;\r\n product: SimpleProductExt | null;\r\n availableProducts: SimpleProductExt[] | null;\r\n currencyFormatter: (price: string | number, currencyCode?: string | undefined) => string;\r\n isLastRow: boolean;\r\n rowError: RowError;\r\n onSelectedProductChange: (id: number, selectedProductId: number) => void;\r\n resources: IEveQuickOrderRowResources;\r\n manufacturerCodes: IManufacturerCodeResponseEntity[];\r\n manufacturerCode: string;\r\n advancedNotes: IAdvancedNoteEntity[];\r\n // rowEditing: boolean;\r\n // updateIsEditing: (value: boolean, id: number) => void;\r\n yourPrice: number | null;\r\n}\r\n\r\nexport const EveQuickOrderRow: React.FC = props => {\r\n const {\r\n id,\r\n onDelete,\r\n value,\r\n quantity,\r\n onRowChange,\r\n product,\r\n currencyFormatter,\r\n isLastRow,\r\n onAddRows,\r\n manufacturerCodes,\r\n resources: { defaultManufacturerCodeText, productEligibilityText, supersededProductText },\r\n rowError,\r\n manufacturerCode,\r\n advancedNotes,\r\n // updateIsEditing,\r\n yourPrice\r\n } = props;\r\n\r\n // const handleFocus = () => {\r\n // updateIsEditing(true, id);\r\n // };\r\n\r\n // const handleBlur = (e: React.ChangeEvent) => {\r\n // // const { updateIsEditing, id } = props;\r\n // updateIsEditing(false, id);\r\n // };\r\n\r\n /**\r\n * Emits the row delete function\r\n */\r\n const handleRowDelete = () => onDelete(id);\r\n\r\n /**\r\n * Emits row change when changing value\r\n * @param e\r\n */\r\n const handleValueChange = (e: React.ChangeEvent) => {\r\n onRowChange(id, e.target.value, quantity, manufacturerCode);\r\n };\r\n\r\n /**\r\n * Emits row change when changing quantity\r\n * @param e\r\n */\r\n const handleQuantityChange = (e: React.ChangeEvent) => {\r\n onRowChange(id, value, e.target.value, manufacturerCode);\r\n };\r\n\r\n /**\r\n * Emits add row function\r\n */\r\n const addRows = () => {\r\n onAddRows();\r\n };\r\n\r\n const [isToolTipOpen, setIsToolTipOpen] = React.useState(false);\r\n\r\n /**\r\n * Toggle which updates the tooltip state\r\n * @returns void\r\n */\r\n const toggleTooltip = () => setIsToolTipOpen(!isToolTipOpen);\r\n\r\n const handleManufacturerCodeChange = (e: React.ChangeEvent) => {\r\n onRowChange(id, value, quantity, e.target.value);\r\n };\r\n\r\n /**\r\n * Ticket 8282:\r\n * - The bug caused the tooltip to appear for all products, even when no notes were present, resulting in an empty tooltip on hover.\r\n * - Fixed by ensuring the \"Read Notes\" text and tooltip are only shown for products that have actual notes assigned.\r\n */\r\n\r\n /**\r\n * Gets the row message to display based on row state\r\n */\r\n /**\r\n * Gets the row message to display based on row state\r\n */\r\n const getRowStatusMessage = (product: SimpleProductExt | null): React.ReactElement | null => {\r\n if (product) {\r\n const matchingNotes = advancedNotes.filter(note => note.ItemId === product.ItemId); // Filter notes by ItemId\r\n\r\n const supersessionName = product.ExtensionProperties?.find(ep => ep.Key === SupersessionKey.SupersededName)?.Value?.StringValue;\r\n\r\n return (\r\n <>\r\n

\r\n {`${product.Name} \r\n ${supersessionName ? supersededProductText.replace('{0}', supersessionName) : ''}` || ''}\r\n

\r\n {matchingNotes.length > 0 ? mapNotes(matchingNotes) : null} {/* Display tooltip if there are matching notes */}\r\n \r\n );\r\n }\r\n\r\n switch (rowError) {\r\n case RowError.InvalidQuantity:\r\n return

Invalid Quantity

;\r\n case RowError.ProductNotFound:\r\n return

Product Not Found

;\r\n case RowError.MultipleChoicesAvailable:\r\n return

Please select a manufacturer

;\r\n case RowError.NotEligbile:\r\n return

{productEligibilityText}

;\r\n case RowError.Unavailable:\r\n return

Not Available

;\r\n }\r\n\r\n return null;\r\n };\r\n\r\n /**\r\n * Turn array of IAdvancedNoteEntity into JSX element with Tooltip\r\n *\r\n * @param {IAdvancedNoteEntity[]} notes the array of notes to display in the tooltip\r\n * @return {*}\r\n */\r\n function mapNotes(notes: IAdvancedNoteEntity[]) {\r\n // Filter out notes that have an empty or whitespace-only TextValue\r\n const validNotes = notes.filter(note => note.TextValue && note.TextValue.trim() !== '');\r\n\r\n if (validNotes.length > 0) {\r\n return (\r\n <>\r\n \r\n Read Notes\r\n \r\n \r\n
    \r\n {validNotes.map(note => (\r\n
  • {note.TextValue}
  • \r\n ))}\r\n
\r\n \r\n \r\n );\r\n }\r\n\r\n return null; // Return null if there are no valid notes\r\n }\r\n\r\n const removeSpacesFromItemId = (itemId: string): string => itemId.replace(/\\s/g, '');\r\n\r\n const getAvailability = () => product?.ExtensionProperties?.find(ep => ep.Key === SupersessionKey.Inventory)?.Value?.StringValue || '0';\r\n\r\n return (\r\n <>\r\n
\r\n \r\n {!manufacturerCode && }\r\n {manufacturerCodes &&\r\n manufacturerCodes.length > 0 &&\r\n manufacturerCodes.map(code => (\r\n \r\n ))}\r\n \r\n
\r\n
\r\n
\r\n \r\n {\r\n if (isLastRow && addRows) {\r\n addRows();\r\n }\r\n // handleFocus();\r\n }}\r\n // onBlur={handleBlur}\r\n />\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n {\r\n if (isLastRow && addRows) {\r\n addRows();\r\n }\r\n // handleFocus();\r\n }}\r\n // onBlur={handleBlur}\r\n />\r\n \r\n
\r\n
\r\n
{getRowStatusMessage(product)}
\r\n
{product &&

{currencyFormatter(product.AdjustedPrice)}

}
\r\n
\r\n {product && !yourPrice ? (\r\n
\r\n

\r\n

\r\n ) : (\r\n product &&

{currencyFormatter(yourPrice!)}

\r\n )}\r\n
\r\n\r\n
{product &&

{getAvailability()}

}
\r\n
\r\n \r\n
\r\n \r\n );\r\n};\r\n","import React from 'react';\r\nexport interface IEveQuickOrderButtonRowResources {\r\n addAllToCartText: string;\r\n clearAllText: string;\r\n addMoreRowsText: string;\r\n}\r\n\r\ninterface IEveQuickOrderButtonRowProps {\r\n resources: IEveQuickOrderButtonRowResources;\r\n canAddToCart: boolean;\r\n handleAddToCart: () => void;\r\n handleClearAll: () => void;\r\n isLoading: boolean;\r\n}\r\n\r\nexport const EveQuickOrderButtonRow: React.FC = props => {\r\n const {\r\n resources: { clearAllText, addAllToCartText },\r\n canAddToCart,\r\n handleClearAll,\r\n handleAddToCart,\r\n isLoading\r\n } = props;\r\n const _className = 'qo-button';\r\n\r\n return (\r\n
\r\n \r\n {isLoading ? 'Loading...' : addAllToCartText}\r\n \r\n \r\n
\r\n );\r\n};\r\n","import React from 'react';\r\n\r\nexport interface IEveQuickOrderHeaderResources {\r\n addAllToCartText: string;\r\n clearAllText: string;\r\n}\r\n\r\ninterface IEveQuickOrderHeaderProps {\r\n heading: string;\r\n helpText: string;\r\n resources: IEveQuickOrderHeaderResources;\r\n canAddToCart: number;\r\n handleAddToCart: () => void;\r\n handleClearAll: () => void;\r\n}\r\n\r\nexport const EveQuickOrderHeader: React.FC = props => {\r\n const {\r\n heading,\r\n helpText\r\n // resources: { clearAllText, addAllToCartText },\r\n // canAddToCart,\r\n // handleClearAll,\r\n // handleAddToCart\r\n } = props;\r\n const _className = 'q-header';\r\n\r\n return (\r\n
\r\n
\r\n

{heading}

\r\n {helpText &&

{helpText}

}\r\n
\r\n {/*
\r\n \r\n \r\n
*/}\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\nimport { CacheType, createObservableDataAction, getCatalogId, IAction, IActionContext, IActionInput } from '@msdyn365-commerce/core';\r\nimport { ProductPrice, ProductsDataActions, ProjectionDomain } from '@msdyn365-commerce/retail-proxy';\r\n\r\nimport { ArrayExtensions, QueryResultSettingsProxy } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { SimpleProductExt } from '../modules/eve-quick-order/eve-quick-order';\r\n\r\n/**\r\n * Input class for the GetPriceForProductSearchResult Data Action.\r\n */\r\nexport class PriceForProductSearchResultInput implements IActionInput {\r\n public products: SimpleProductExt[];\r\n\r\n public constructor(products: SimpleProductExt[]) {\r\n this.products = products;\r\n }\r\n\r\n /**\r\n * Get the cache key.\r\n * @returns The cache key.\r\n */\r\n public getCacheKey = (): string => `PriceForProductSearchResult-${JSON.stringify(this.products)}`;\r\n\r\n /**\r\n * Get the cache object type.\r\n * @returns The cache object type.\r\n */\r\n public getCacheObjectType = (): string => 'SimpleProductExt';\r\n\r\n /**\r\n * Define the data cache type.\r\n * @returns The cache type.\r\n */\r\n public dataCacheType = (): CacheType => 'none';\r\n}\r\n\r\n/**\r\n * The createInput method for the GetPriceForProductSearchResultDataAction.\r\n * @param products -- The product search result.\r\n * @returns The input.\r\n */\r\nexport const createActivePriceForProductSearchResultInput = (products: SimpleProductExt[]): PriceForProductSearchResultInput => {\r\n return new PriceForProductSearchResultInput(products);\r\n};\r\n\r\n/**\r\n * The Action Method for the GetPriceForProductSearchResult Data Action\r\n * Gets the active price for product search result via the getActivePrice RetailServer API.\r\n * @param input -- The data input.\r\n * @param context -- The action context.\r\n * @returns The product search result updated with price.\r\n */\r\nexport async function getPriceForProductSearchResultAction(\r\n input: PriceForProductSearchResultInput,\r\n context: IActionContext\r\n): Promise {\r\n let productRecIds: number[];\r\n if (ArrayExtensions.hasElements(input.products)) {\r\n productRecIds = input.products.map(product => product.RecordId);\r\n } else {\r\n return Promise.resolve([]);\r\n }\r\n\r\n const catalogId = getCatalogId(context.requestContext);\r\n\r\n const projectDomain: ProjectionDomain = { ChannelId: +context.requestContext.apiSettings.channelId, CatalogId: catalogId };\r\n const priceZero = 0;\r\n\r\n try {\r\n const productPrices: ProductPrice[] = await ProductsDataActions.getActivePricesAsync(\r\n { callerContext: context, queryResultSettings: QueryResultSettingsProxy.getPagingFromInputDataOrDefaultValue(context) },\r\n projectDomain,\r\n productRecIds,\r\n new Date(),\r\n null,\r\n undefined,\r\n true\r\n );\r\n\r\n const productResults: SimpleProductExt[] = input.products.map(product => {\r\n const activePrice = productPrices.find(price => price.ProductId === product.RecordId);\r\n if (activePrice) {\r\n product.Price = activePrice.CustomerContextualPrice ?? product.Price;\r\n product.BasePrice = Math.max(\r\n activePrice.BasePrice ?? priceZero,\r\n activePrice.TradeAgreementPrice ?? priceZero,\r\n activePrice.AdjustedPrice ?? priceZero\r\n );\r\n }\r\n return product;\r\n });\r\n\r\n return Promise.resolve(productResults);\r\n } catch (error) {\r\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument -- existing error type.\r\n context.telemetry.exception(error);\r\n context.telemetry.debug('[getPriceForProductSearchResultAction]Error executing action');\r\n throw new Error('[getPriceForProductSearchResultAction]Error executing action');\r\n }\r\n}\r\n\r\n/**\r\n * The getPriceForProductSearchResult data action.\r\n */\r\nexport const getPriceForProductSearchResultDataAction = createObservableDataAction({\r\n id: '@msdyn365-commerce-modules/retail-actions/get-price-for-product-search-result',\r\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions -- existing pattern.\r\n action: >getPriceForProductSearchResultAction,\r\n input: createActivePriceForProductSearchResultInput\r\n});\r\n\r\nexport default getPriceForProductSearchResultDataAction;\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 * as React from 'react';\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport { IEveQuickOrderData } from './eve-quick-order.data';\r\nimport { IEveQuickOrderProps } from './eve-quick-order.props.autogenerated';\r\nimport { EveQuickOrderRow, IEveQuickOrderRowResources } from './components/EveQuickOrderRow';\r\nimport { EveQuickOrderButtonRow, IEveQuickOrderButtonRowResources } from './components/EveQuickOrderButtonRow';\r\nimport { debounce } from 'lodash';\r\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { AsyncResult, CommerceProperty, SimpleProduct } from '@msdyn365-commerce/retail-proxy';\r\nimport { EveQuickOrderHeader, IEveQuickOrderHeaderResources } from './components/EveQuickOrderHeader';\r\nimport { IModuleProps, INodeProps } from '@msdyn365-commerce-modules/utilities';\r\nimport classNames from 'classnames';\r\nimport { IOrderUploadItem } from '../order-upload/order-upload';\r\nimport {\r\n getAdvancedNotesAsync,\r\n getInventoryLevelRangesAsync,\r\n getProductsByManufacturerItemIdAsync\r\n} from '../../actions/DataActionExtension.g';\r\nimport {\r\n IAdvancedNoteEntity,\r\n IManufacturerCodeResponseEntity,\r\n IProfileDataMap,\r\n ISearchTextProductMap\r\n} from '../../actions/DataServiceEntities.g';\r\nimport { CommercePropertyValueEnum } from '../allowable-freight/utils/CommercePropertyValueEnum';\r\nimport GetProductEligibilityAction, { GetProductEligibilityInput } from '../../actions/get-product-eligibility.action';\r\nimport { SupersessionKey } from '../../themes/gardner-theme/models/SupersessionKey';\r\nimport { getPriceForProductSearchResultAction, PriceForProductSearchResultInput } from '../../actions/get-price-products-search-results';\r\nexport interface IEveQuickOrderViewProps extends IEveQuickOrderProps {\r\n quickOrderTable: React.ReactElement;\r\n quickOrderHeader: React.ReactElement;\r\n quickOrderWrapper: IModuleProps;\r\n handleUploadedItems: (items: IOrderUploadItem[]) => void;\r\n orderUploadWrapper: INodeProps;\r\n guideText: React.ReactElement | undefined;\r\n}\r\n\r\nexport interface IEveQuickOrderRowData {\r\n id: number;\r\n value: string;\r\n quantity: string;\r\n product: SimpleProductExt | null;\r\n availableProducts: SimpleProductExt[];\r\n rowError: RowError;\r\n manufacturerCode: string;\r\n advancedNotes: IAdvancedNoteEntity[];\r\n}\r\n\r\ninterface IEveQuickOrderState {\r\n rows: IEveQuickOrderRowData[];\r\n // @ts-expect-error\r\n debounce: debounce;\r\n loading: boolean;\r\n // isEditing: boolean;\r\n prices: SimpleProductExt[];\r\n hasUpdated: boolean;\r\n updatedRows: Set;\r\n shouldRowUpdate: boolean;\r\n uploadedItems: boolean;\r\n}\r\n\r\nexport enum RowError {\r\n ProductNotFound,\r\n InvalidQuantity,\r\n MultipleChoicesAvailable,\r\n NotEligbile,\r\n None,\r\n Unavailable\r\n}\r\n\r\nexport interface ISearchTextProductMapExt extends ISearchTextProductMap {\r\n SearchText?: string;\r\n Products?: SimpleProductExt[];\r\n}\r\n\r\nexport interface SimpleProductExt extends SimpleProduct {\r\n IsEligible?: boolean;\r\n IsUnavailable?: boolean;\r\n}\r\n\r\ninterface EligibleItem {\r\n ItemId: string;\r\n IsEligible: boolean;\r\n IsAssorted?: boolean;\r\n}\r\n\r\nexport interface EligibleItems extends Array {}\r\n\r\n/**\r\n * Enables users to quickly order products using item ids\r\n * EveQuickOrder component\r\n * @extends {React.PureComponent>}\r\n */\r\nclass EveQuickOrder extends React.PureComponent, IEveQuickOrderState> {\r\n private _defaultMinQueryLength = 4;\r\n private _manufacturerCodeExtensionPropertyKey = 'ManufacturerCode';\r\n constructor(props: IEveQuickOrderProps) {\r\n super(props);\r\n\r\n this._handleRowDelete = this._handleRowDelete.bind(this);\r\n this._generateRow = this._generateRow.bind(this);\r\n this._renderTable = this._renderTable.bind(this);\r\n this._updateRowValue = this._updateRowValue.bind(this);\r\n this._addTwoRows = this._addTwoRows.bind(this);\r\n this._handleUploadedItems = this._handleUploadedItems.bind(this);\r\n this._tableInit = this._tableInit.bind(this);\r\n this._handleAddToCart = this._handleAddToCart.bind(this);\r\n this._handleSelectedProductChange = this._handleSelectedProductChange.bind(this);\r\n // this._reorderRows = this._reorderRows.bind(this);\r\n // this.updateIsEditing = this.updateIsEditing.bind(this);\r\n\r\n this.state = {\r\n rows: [],\r\n debounce: this._initDebounceFn(),\r\n loading: false,\r\n // isEditing: false,\r\n prices: [],\r\n hasUpdated: false,\r\n updatedRows: new Set(),\r\n shouldRowUpdate: false,\r\n uploadedItems: false\r\n };\r\n }\r\n\r\n public componentDidMount() {\r\n this._tableInit();\r\n }\r\n\r\n /**\r\n * Initialises the table to the module configuration\r\n * @private\r\n */\r\n private _tableInit() {\r\n const {\r\n config: { defaultRows }\r\n } = this.props;\r\n const rows: IEveQuickOrderRowData[] = [];\r\n for (let i = 0; i < defaultRows; i++) {\r\n rows.push(this._generateEmptyRow(i + 1));\r\n }\r\n this.setState({ rows });\r\n }\r\n\r\n /**\r\n * Initializes the debounce function for all input forms\r\n * @private\r\n */\r\n private _initDebounceFn() {\r\n return debounce(async (data: { searchText: string[]; id: number }) => {\r\n // Ticket 7920: Unexpected Quick Order Response\r\n // Find the row that matches the ID to get the previous manufacturer code\r\n const rows = [...this.state.rows];\r\n const idx = rows.findIndex(row => row.id === data.id);\r\n const previousManufacturerCode = rows[idx]?.manufacturerCode || '';\r\n\r\n // Clean the searchText by stripping out any previous manufacturer code\r\n const cleanedSearchText = [this._stripManufacturerFromSearchText(previousManufacturerCode, data.searchText[0])];\r\n\r\n const responseData = await this.getProductSearchResult(cleanedSearchText);\r\n if (ArrayExtensions.hasElements(responseData) && ArrayExtensions.hasElements(responseData[0].Products)) {\r\n const notes = await getAdvancedNotesAsync(\r\n {\r\n callerContext: this.props.context.actionContext\r\n },\r\n [responseData[0].Products[0]?.ItemId!]\r\n );\r\n this._updateRowProduct(data.id, responseData[0].Products, notes || [], cleanedSearchText[0], rows[idx].quantity);\r\n this.setState(prevState => ({\r\n updatedRows: prevState.updatedRows.add(rows[idx].id),\r\n shouldRowUpdate: true\r\n }));\r\n } else {\r\n rows[idx].rowError = this._updateRowErrorState(rows[idx]);\r\n this.setState({ rows, shouldRowUpdate: true });\r\n }\r\n }, 500);\r\n }\r\n\r\n /**\r\n * Adds all valid items to cart\r\n * @private\r\n */\r\n private async _handleAddToCart() {\r\n const products = this.state.rows.filter(row => !!row.product && row.rowError === RowError.None);\r\n // 6321 - Resolve issue when the same item is added to the quick order form more than once\r\n const dummyProducts = [...products];\r\n const combinedProducts = dummyProducts.reduce(\r\n (acc: IEveQuickOrderRowData[], cur: IEveQuickOrderRowData): IEveQuickOrderRowData[] => {\r\n const row = acc.length > 0 && acc.find(({ product }) => product?.ItemId === cur.product?.ItemId);\r\n if (row) {\r\n row.quantity = (parseInt(row.quantity, 10) + parseInt(cur.quantity, 10)).toString();\r\n } else {\r\n acc.push(cur);\r\n }\r\n return acc;\r\n },\r\n []\r\n );\r\n\r\n if (combinedProducts.length) {\r\n const cartState = this.props.data.cart.result;\r\n const input = combinedProducts.map(product => {\r\n return {\r\n product: product.product!,\r\n count: parseInt(product.quantity, 10),\r\n catalogId: 0\r\n };\r\n });\r\n if (cartState) {\r\n if (typeof window !== 'undefined') {\r\n window.scrollTo({ top: 0 });\r\n }\r\n this.setState({ loading: true });\r\n await cartState.addProductsToCart(input);\r\n this.setState({ loading: false });\r\n this._tableInit();\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Gets product by item id\r\n * @param data item ids\r\n * @private\r\n */\r\n private async getProductSearchResult(data: string[]) {\r\n const itemIds = data.map(d => d.toString());\r\n\r\n const {\r\n context: { actionContext }\r\n } = this.props;\r\n const response: ISearchTextProductMapExt[] = await getProductsByManufacturerItemIdAsync(\r\n { callerContext: actionContext, queryResultSettings: { Paging: { Top: 9999 } } },\r\n itemIds,\r\n ''\r\n );\r\n\r\n // Get products eligbility\r\n const list: EligibleItems = [];\r\n let inventoryRanges: AsyncResult | undefined;\r\n if (itemIds.length) {\r\n const cart = this.props.data.cart;\r\n\r\n const newItemIds: string[] = [];\r\n\r\n // get Superseded products\r\n response.forEach(r => {\r\n r.Products?.forEach(p => {\r\n if (p.ItemId) {\r\n newItemIds.push(p.ItemId);\r\n }\r\n });\r\n });\r\n const input = new GetProductEligibilityInput(newItemIds, false, cart?.result?.cart?.Id || '', null, null, null);\r\n const eligibilityData = GetProductEligibilityAction(input, this.props.context.actionContext);\r\n inventoryRanges = getInventoryLevelRangesAsync({ callerContext: this.props.context.actionContext }, newItemIds);\r\n const products = response[0].Products;\r\n await Promise.all([eligibilityData, inventoryRanges]);\r\n\r\n if (eligibilityData?.result?.length && products) {\r\n eligibilityData?.result?.forEach((i: any) => {\r\n const id = this._getExtensionPropertyValueByKey(i.ExtensionProperties, 'ItemId', CommercePropertyValueEnum.string);\r\n list.push({\r\n ItemId: String(id),\r\n IsEligible: i.IsEligible,\r\n IsAssorted: i.IsAssorted\r\n });\r\n });\r\n }\r\n }\r\n response.forEach(pr =>\r\n pr.Products?.forEach(p => {\r\n const eligibilityRecord = list.find(l => l.ItemId === p.ItemId);\r\n if (eligibilityRecord) {\r\n p.IsEligible = eligibilityRecord.IsEligible;\r\n p.IsUnavailable = !eligibilityRecord.IsAssorted;\r\n } else {\r\n p.IsEligible = false;\r\n }\r\n const currentInvString = this.getProductSupersessionProperty(p, SupersessionKey.Inventory) || '0';\r\n const currentInventory = parseInt(currentInvString, 10);\r\n inventoryRanges?.result?.map(ir => {\r\n const tempInvRange = ir.Profile?.find(invP => invP.ItemId === p.ItemId && invP.Code === 'OOS');\r\n if (tempInvRange) {\r\n const OosUpperBound =\r\n tempInvRange.hasOwnProperty('UpperBoundInclusive') && tempInvRange.UpperBoundInclusive !== undefined\r\n ? tempInvRange.UpperBoundInclusive\r\n : 0;\r\n p.IsUnavailable = currentInventory <= OosUpperBound;\r\n }\r\n });\r\n })\r\n );\r\n // response.forEach((p: any) => {\r\n // p.Products.forEach((pr: SimpleProductExt) => {\r\n // list.forEach(i => {\r\n // if (pr?.ItemId === i.ItemId) {\r\n // pr.IsEligible = i.IsEligible;\r\n // }\r\n // });\r\n // });\r\n // });\r\n\r\n return response;\r\n }\r\n\r\n private getProductSupersessionProperty = (product: SimpleProductExt, extensionKey: SupersessionKey) => {\r\n const properties = product.ExtensionProperties;\r\n if (properties) {\r\n return properties.find(pr => pr.Key === extensionKey)?.Value?.StringValue || null;\r\n }\r\n return null;\r\n };\r\n\r\n /**\r\n * Gets manufacturer codes from data\r\n * @private\r\n */\r\n private _getManufacturerCodeList = (row: IEveQuickOrderRowData): IManufacturerCodeResponseEntity[] => {\r\n const codesResults = this.props.data.manufacturerCodes.result ? this.props.data.manufacturerCodes.result : [];\r\n\r\n //@ts-ignore\r\n const manufacturerCodes: IManufacturerCodeResponseEntity[] = codesResults.manufacturerCodes;\r\n\r\n const hiddenManufacturerCodes: string[] = this.props.config.hiddenManufacturerCodes || [];\r\n\r\n if (row.availableProducts.length) {\r\n const availableCodes = row.availableProducts.map(p => this._getManufacturerCodeForRow([p]));\r\n\r\n // filter out hidden manufacturere codes\r\n return manufacturerCodes.filter(\r\n code =>\r\n availableCodes.includes(code.GDNManufacturerCode || '') &&\r\n !hiddenManufacturerCodes.includes(code.GDNManufacturerCode || '')\r\n );\r\n //return manufacturerCodes.filter(code => availableCodes.includes(code.GDNManufacturerCode || ''));\r\n }\r\n\r\n // Filter out hidden manufacturer codes\r\n return manufacturerCodes.filter(code => !hiddenManufacturerCodes.includes(code.GDNManufacturerCode!));\r\n };\r\n\r\n /**\r\n * Renders the header of the page\r\n * @private\r\n */\r\n private _renderHeading() {\r\n const {\r\n resources: { addAllToCartText, clearFormText },\r\n config: { helpText, title }\r\n } = this.props;\r\n const resources: IEveQuickOrderHeaderResources = {\r\n addAllToCartText: addAllToCartText,\r\n clearAllText: clearFormText\r\n };\r\n return (\r\n \r\n );\r\n }\r\n\r\n /**\r\n * Retrieves the value of an extension property using the given key\r\n * @private\r\n * @param {(CommerceProperty[] | undefined)} properties\r\n * @param {string} key\r\n * @param {CommercePropertyValueEnum} valueType\r\n * @memberof EveQuickOrder\r\n * @return the extension property value associated with the given key\r\n */\r\n private _getExtensionPropertyValueByKey = (\r\n properties: CommerceProperty[] | undefined,\r\n key: string,\r\n valueType: CommercePropertyValueEnum\r\n ) => {\r\n const property = properties?.find(p => p.Key === key)?.Value;\r\n\r\n // eslint-disable-next-line security/detect-object-injection\r\n const val = property ? property[valueType] : null;\r\n return val;\r\n };\r\n\r\n /**\r\n * Renders the add to bag and reset form button row\r\n * @private\r\n */\r\n private _renderButtonRow() {\r\n const {\r\n resources: { addAllToCartText, clearFormText, addMoreRowsText }\r\n } = this.props;\r\n const resources: IEveQuickOrderButtonRowResources = {\r\n addAllToCartText: addAllToCartText,\r\n clearAllText: clearFormText,\r\n addMoreRowsText: addMoreRowsText\r\n };\r\n const { courseInCartText, invoiceInCartText } = this.props.resources;\r\n let courseId: string | number | boolean | null | undefined;\r\n if (this.props.data.cart.result?.hasInvoiceLine) {\r\n return (\r\n
\r\n
{invoiceInCartText}
\r\n
\r\n );\r\n }\r\n const cart = this.props.data.cart.result?.cart;\r\n const cartlines = cart?.CartLines;\r\n if (cartlines && cartlines.length) {\r\n courseId = this._getExtensionPropertyValueByKey(cartlines[0].ExtensionProperties, 'CourseId', CommercePropertyValueEnum.string);\r\n }\r\n\r\n if (courseId) {\r\n return (\r\n
\r\n
{courseInCartText}
\r\n
\r\n );\r\n }\r\n\r\n let isRowError: boolean = false;\r\n for (const row of this.state.rows) {\r\n if (row.rowError !== RowError.None) {\r\n isRowError = true;\r\n break;\r\n }\r\n }\r\n\r\n return (\r\n \r\n );\r\n }\r\n\r\n /**\r\n * gets all products\r\n * @private\r\n */\r\n private _getAllAddedProducts() {\r\n return this.state.rows.map(row => row.product?.RecordId).filter(pr => !!pr);\r\n }\r\n\r\n /**\r\n * Generates a row component using row data\r\n * @param row row data to generate from\r\n * @param isLast whether its the last row in the form\r\n * @private\r\n */\r\n private _generateRow(row: IEveQuickOrderRowData, isLast: boolean) {\r\n const resources: IEveQuickOrderRowResources = {\r\n defaultManufacturerCodeText: this.props.resources.defaultDropdownText,\r\n deleteText: this.props.resources.deleteHeading,\r\n productEligibilityText: this.props.resources.productEligibilityText,\r\n supersededProductText: this.props.resources.supersededProductText\r\n };\r\n const matchingProduct = this.state.prices.find(product => product.ItemId === row.product?.ItemId);\r\n const yourPrice = matchingProduct ? matchingProduct.BasePrice : null;\r\n return (\r\n \r\n );\r\n }\r\n\r\n /**\r\n * Handles the product in a row changing\r\n *\r\n * @private\r\n * @param {number} id to change\r\n * @param {number} productId product which has been selected\r\n * @memberof EveQuickOrder\r\n */\r\n private _handleSelectedProductChange(id: number, productId: number) {\r\n const rows = [...this.state.rows];\r\n const idx = rows.findIndex(r => r.id === id);\r\n rows[idx].product = rows[idx].availableProducts.find(pr => pr.RecordId === productId) || rows[idx].product;\r\n\r\n this.setState(prevState => ({\r\n updatedRows: prevState.updatedRows.add(id),\r\n shouldRowUpdate: true\r\n }));\r\n }\r\n\r\n /**\r\n * Handles data from the upload module\r\n * @param items items uploaded\r\n * @private\r\n */\r\n private async _handleUploadedItems(items: IOrderUploadItem[]) {\r\n const itemids = items.map(it => `${it.manufacturer}${it.part_number}`);\r\n // 6251 - Resolve an intermittent issue when upload files are extremely large.\r\n const chunkSize = 50;\r\n const chunks = [];\r\n for (let i = 0; i < itemids.length; i += chunkSize) {\r\n const chunk = itemids.slice(i, i + chunkSize);\r\n chunks.push(chunk);\r\n }\r\n const promises = chunks.map(async chunk => {\r\n return this.getProductSearchResult(chunk);\r\n });\r\n const promiseResult = await Promise.all(promises);\r\n const response: ISearchTextProductMapExt[] = [];\r\n promiseResult.map(res => response.push(...res));\r\n // const response = await this.getProductSearchResult(itemids);\r\n const advancedNotes = await getAdvancedNotesAsync({ callerContext: this.props.context.actionContext }, itemids);\r\n // let rows = [...this.state.rows];\r\n // const idx = rows.findIndex(r => !r.value);\r\n // rows = rows.slice(0, idx);\r\n // let rowId = rows.length ? rows[rows.length - 1].id : 1;\r\n\r\n let rows = [...this.state.rows];\r\n const idx = rows.findIndex(r => !r.value);\r\n rows = rows.slice(0, idx);\r\n let rowId = rows.reduce((max, row) => (row.id > max ? row.id : max), 0) + 1;\r\n\r\n // response.forEach((it, index) => {\r\n // const uploadItem = items.find(item => {\r\n // const partNum = item.part_number.toString().toLowerCase();\r\n // const partNumWithMfr = `${item.manufacturer?.toString().toLowerCase()}${item.part_number?.toString().toLowerCase()}`;\r\n // const searchText = it.SearchText?.toLowerCase();\r\n // return partNum === searchText || partNumWithMfr === searchText;\r\n // });\r\n // const foundProduct = ArrayExtensions.hasElements(it.Products);\r\n // const products = it.Products || [];\r\n // // const eligibleProducts = products.filter(pr => pr.IsEligible);\r\n // // const filteredProducts = products.length > 0 && eligibleProducts.length > 0 ? eligibleProducts : products;\r\n // const manufacturerCode = this._getManufacturerCodeForRow(products);\r\n // // const manufacturerCode = this._getManufacturerCodeForRow(filteredProducts);\r\n // const searchText = it.SearchText || '';\r\n // const qty = uploadItem?.qty || 1;\r\n // rows.push(\r\n // this._generateRowData(\r\n // products,\r\n // // filteredProducts,\r\n // rowId++,\r\n // manufacturerCode,\r\n // searchText,\r\n // advancedNotes || [],\r\n // foundProduct,\r\n // qty\r\n // // items[idx].qty\r\n // )\r\n // );\r\n // });\r\n\r\n // 6321 - Change to iterate through the item data from the form vs the response data to resolve an issue retrieving the correct qty when the same item is added more than once\r\n items.forEach((it, index) => {\r\n const responseMatch = response.find(r => {\r\n const partNum = it.part_number.toString().toLowerCase();\r\n const partNumWithMfr = `${it.manufacturer?.toString().toLowerCase()}${it.part_number?.toString().toLowerCase()}`;\r\n const searchText = r.SearchText?.toLowerCase();\r\n return partNum === searchText || partNumWithMfr === searchText;\r\n });\r\n const foundProduct = ArrayExtensions.hasElements(responseMatch?.Products);\r\n const products = responseMatch?.Products || [];\r\n const manufacturerCode = this._getManufacturerCodeForRow(products);\r\n const searchText = responseMatch?.SearchText || '';\r\n const qty = it.qty || 1;\r\n\r\n const rowData = this._generateRowData(products, rowId++, manufacturerCode, searchText, advancedNotes || [], foundProduct, qty);\r\n // rows.push(\r\n // this._generateRowData(\r\n // products,\r\n // rowId++,\r\n // manufacturerCode,\r\n // searchText,\r\n // advancedNotes || [],\r\n // foundProduct,\r\n // qty\r\n // // items[idx].qty\r\n // )\r\n // );\r\n // Check if the row has an error\r\n if (rowData.rowError !== RowError.None) {\r\n // If there's an error, push to the bottom\r\n rows.push(rowData);\r\n } else {\r\n // Otherwise, push to the front\r\n rows.unshift(rowData);\r\n }\r\n });\r\n while (rows.length < this.props.config.defaultRows) {\r\n rows.push({\r\n ...this._generateEmptyRow(rowId++)\r\n });\r\n }\r\n\r\n this.setState({ rows, hasUpdated: false, uploadedItems: true });\r\n }\r\n\r\n private _generateRowData(\r\n products: SimpleProductExt[],\r\n rowId: number,\r\n manufacturerCode: string,\r\n searchText: string,\r\n advancedNotes: IAdvancedNoteEntity[],\r\n foundProduct: boolean,\r\n quantity: number\r\n ) {\r\n let rowError = RowError.None;\r\n\r\n // if (!this.state.isEditing) {\r\n if (!foundProduct || this.props.config.hiddenManufacturerCodes?.includes(manufacturerCode)) {\r\n rowError = RowError.ProductNotFound;\r\n } else if (products.length > 1 && manufacturerCode === '') {\r\n rowError = RowError.MultipleChoicesAvailable;\r\n } else if (quantity < 1) {\r\n rowError = RowError.InvalidQuantity;\r\n } else if (!products[0].IsEligible) {\r\n rowError = RowError.NotEligbile;\r\n } else if (products[0].IsUnavailable) {\r\n rowError = RowError.Unavailable;\r\n }\r\n // }\r\n\r\n const row: IEveQuickOrderRowData = {\r\n ...this._generateEmptyRow(rowId),\r\n product: foundProduct ? products[0] : null,\r\n availableProducts: products || [],\r\n value: this._stripManufacturerFromSearchText(manufacturerCode, searchText),\r\n quantity: quantity.toString(),\r\n rowError: rowError,\r\n advancedNotes: advancedNotes || [],\r\n manufacturerCode: manufacturerCode\r\n };\r\n\r\n this.setState(prevState => ({\r\n updatedRows: prevState.updatedRows.add(rowId),\r\n shouldRowUpdate: true\r\n }));\r\n return row;\r\n }\r\n\r\n private _stripManufacturerFromSearchText(manufacturerCode: string, searchText: string) {\r\n if (manufacturerCode === '') {\r\n return searchText;\r\n }\r\n // eslint-disable-next-line security/detect-non-literal-regexp\r\n return searchText.replace(new RegExp(manufacturerCode, 'i'), '');\r\n }\r\n\r\n private _getManufacturerCodeForRow(products: SimpleProductExt[]): string {\r\n // 6273 - Auto select KOH when products returned are only MTD or KOH manufacturers\r\n const kohConstant = 'KOH';\r\n const mtdConstant = 'MTD';\r\n const prod = products && products[0];\r\n if (prod && products?.length === 1) {\r\n const mfrCodeVal = this._getExtensionPropertyValueByKey(\r\n prod.ExtensionProperties,\r\n this._manufacturerCodeExtensionPropertyKey,\r\n CommercePropertyValueEnum.string\r\n );\r\n return (mfrCodeVal as string) || '';\r\n } else if (products && products.length > 1) {\r\n // 6273 - Auto select KOH when products returned are only MTD or KOH manufacturers\r\n const onlyKohOrMtd = products.every(\r\n p =>\r\n mtdConstant ===\r\n this._getExtensionPropertyValueByKey(\r\n p.ExtensionProperties,\r\n this._manufacturerCodeExtensionPropertyKey,\r\n CommercePropertyValueEnum.string\r\n ) ||\r\n kohConstant ===\r\n this._getExtensionPropertyValueByKey(\r\n p.ExtensionProperties,\r\n this._manufacturerCodeExtensionPropertyKey,\r\n CommercePropertyValueEnum.string\r\n )\r\n );\r\n return onlyKohOrMtd ? kohConstant : '';\r\n }\r\n return '';\r\n }\r\n\r\n /**\r\n * Renders the quick order table\r\n * @private\r\n */\r\n private _renderTable() {\r\n const {\r\n resources: {\r\n manufacturerCodeTableHeading,\r\n partNumberTableHeading,\r\n quantityTableHeading,\r\n itemNameHeading,\r\n priceHeading,\r\n deleteHeading,\r\n availabilityHeading,\r\n yourPrice\r\n }\r\n } = this.props;\r\n const rows = [\r\n manufacturerCodeTableHeading,\r\n partNumberTableHeading,\r\n quantityTableHeading,\r\n itemNameHeading,\r\n priceHeading,\r\n yourPrice,\r\n availabilityHeading,\r\n deleteHeading\r\n ];\r\n\r\n return (\r\n
\r\n
    \r\n
  • \r\n {rows.map((row, i) => (\r\n
    \r\n {row}\r\n
    \r\n ))}\r\n
  • \r\n {this.state.rows.map((r, i) => {\r\n return (\r\n
  • \r\n {this._generateRow(r, i === this.state.rows.length - 1)}\r\n
  • \r\n );\r\n })}\r\n
  • {this._renderButtonRow()}
  • \r\n
\r\n
\r\n );\r\n }\r\n\r\n // private _reorderRows() {\r\n // const rows = [...this.state.rows];\r\n // // const wereItemsUploaded = this.state.uploadedItems;\r\n\r\n // // if (!wereItemsUploaded) {\r\n // // return rows;\r\n // // }\r\n\r\n // // const errorRows = rows.filter(row => row.rowError !== RowError.None);\r\n // // const nonErrorRows = rows.filter(row => row.rowError === RowError.None);\r\n\r\n // // const sortedItems = [...nonErrorRows, ...errorRows];\r\n\r\n // // this.setState({\r\n // // uploadedItems: false\r\n // // });\r\n // console.log('rows: ', rows);\r\n\r\n // return rows;\r\n // }\r\n\r\n /**\r\n * Handles removing a row\r\n * @param id id to remove\r\n * @private\r\n */\r\n private _handleRowDelete(id: number) {\r\n const rows = [...this.state.rows];\r\n const idx = rows.findIndex(r => r.id === id);\r\n if (idx > -1) {\r\n rows.splice(idx, 1);\r\n const newRowId = rows[rows.length - 1].id + 1;\r\n if (rows.length < this.props.config.defaultRows) {\r\n rows.push(this._generateEmptyRow(newRowId));\r\n }\r\n this.setState({ rows });\r\n }\r\n }\r\n\r\n /**\r\n * Generates an empty row\r\n * @param id id to initialize row with\r\n * @private\r\n */\r\n private _generateEmptyRow(id: number) {\r\n return {\r\n id,\r\n value: '',\r\n quantity: '1',\r\n product: null,\r\n availableProducts: [],\r\n rowError: RowError.None,\r\n manufacturerCode: '',\r\n advancedNotes: []\r\n };\r\n }\r\n\r\n /**\r\n * Updates the product in a row\r\n * @param id id of row to update\r\n * @param products product to add to row\r\n * @private\r\n */\r\n private _updateRowProduct(\r\n id: number,\r\n products: SimpleProductExt[],\r\n notes: IAdvancedNoteEntity[],\r\n searchText: string,\r\n quantity: string\r\n ) {\r\n const rows = [...this.state.rows];\r\n const idx = rows.findIndex(row => row.id === id);\r\n const manufacturerCode = this._getManufacturerCodeForRow(products);\r\n rows[idx] = this._generateRowData(products || [], rows[idx].id, manufacturerCode, searchText, notes, true, Number(quantity));\r\n\r\n this.setState(prevState => ({\r\n rows,\r\n updatedRows: prevState.updatedRows.add(id),\r\n shouldRowUpdate: true\r\n }));\r\n }\r\n\r\n // // 8630: Quick Order screen \"jumping\" around\r\n // private updateIsEditing(value: boolean, id: number) {\r\n // // Update the state and call the callback after the state change is applied\r\n // this.setState({ isEditing: value }, () => {\r\n // // Proceed with row error state update only when isEditing is false\r\n // if (!value) {\r\n // // Only update error state when isEditing is false\r\n // const rows = [...this.state.rows];\r\n // const idx = rows.findIndex(row => row.id === id);\r\n // rows[idx].rowError = this._updateRowErrorState(rows[idx]);\r\n // this.setState({ rows });\r\n // }\r\n // });\r\n // }\r\n\r\n private _updateRowErrorState(row: IEveQuickOrderRowData): RowError {\r\n const {\r\n config: { maxQuantity }\r\n } = this.props;\r\n let rowError: RowError = RowError.None;\r\n // const shouldSetErrorFlag = shouldSetError || false;\r\n\r\n // if (shouldSetErrorFlag) {\r\n if (row.value && !row.product) {\r\n rowError = RowError.ProductNotFound;\r\n } else if (\r\n Number(row.quantity) === 0 ||\r\n Number.isNaN(Number(row.quantity)) ||\r\n Number(row.quantity) < 1 ||\r\n Number(row.quantity) > (maxQuantity || 1000)\r\n ) {\r\n rowError = RowError.InvalidQuantity;\r\n } else if (row.product?.IsEligible === false) {\r\n rowError = RowError.NotEligbile;\r\n } else if (row.product?.IsUnavailable) {\r\n rowError = RowError.Unavailable;\r\n } else if (Number(row.quantity) < 1) {\r\n rowError = RowError.InvalidQuantity;\r\n }\r\n // }\r\n\r\n return rowError;\r\n }\r\n /**\r\n * Updates value or quantity of row\r\n * @param id id of row to update\r\n * @param value value to update\r\n * @param quantity quantity to update\r\n * @param manufacturerCode Selected manufacturer code\r\n * @private\r\n */\r\n private _updateRowValue(id: number, value: string, quantity: string, manufacturerCode: string) {\r\n const rows = [...this.state.rows];\r\n const idx = rows.findIndex(row => row.id === id);\r\n\r\n // Get the hidden manufacturer codes from the configuration\r\n const hiddenManufacturerCodes: string[] = this.props.config.hiddenManufacturerCodes || [];\r\n\r\n // Resolve: 8037\r\n // Check if the first three characters of the value match any hidden manufacturer code as first three characters define the manufacturer code\r\n const partNumberPrefix = value.substring(0, 3).toUpperCase();\r\n if (hiddenManufacturerCodes.includes(partNumberPrefix)) {\r\n rows[idx].product = null;\r\n rows[idx].rowError = RowError.ProductNotFound;\r\n } else {\r\n if (rows[idx].value !== value) {\r\n rows[idx].product = null;\r\n rows[idx].manufacturerCode = 'KOH';\r\n rows[idx].quantity = quantity;\r\n this._getProductByRowQuery(id, value, manufacturerCode);\r\n }\r\n if (rows[idx].quantity !== quantity) {\r\n rows[idx].quantity = quantity;\r\n rows[idx].rowError = this._updateRowErrorState(rows[idx]);\r\n }\r\n if (rows[idx].manufacturerCode !== manufacturerCode) {\r\n rows[idx].manufacturerCode = manufacturerCode;\r\n rows[idx].rowError = this._updateRowErrorState(rows[idx]);\r\n if (rows[idx].availableProducts.length > 1) {\r\n const foundProduct = this._getProductManufacturerById(manufacturerCode, rows[idx].availableProducts);\r\n rows[idx].product = foundProduct;\r\n rows[idx].rowError = this._updateRowErrorState(rows[idx]);\r\n } else if (rows[idx].value !== '') {\r\n this._getProductByRowQuery(id, value, manufacturerCode);\r\n }\r\n }\r\n }\r\n\r\n rows[idx].value = value;\r\n rows[idx].quantity = quantity;\r\n rows[idx].manufacturerCode = manufacturerCode;\r\n this.setState(prevState => ({\r\n rows,\r\n updatedRows: prevState.updatedRows.add(id),\r\n shouldRowUpdate: true\r\n }));\r\n\r\n // const rows = [...this.state.rows];\r\n // const idx = rows.findIndex(row => row.id === id);\r\n // if (rows[idx].value !== value) {\r\n // this._getProductByRowQuery(id, value, manufacturerCode);\r\n // }\r\n // if (rows[idx].quantity !== quantity) {\r\n // rows[idx].quantity = quantity;\r\n // rows[idx].rowError = this._updateRowErrorState(rows[idx]);\r\n // }\r\n // if (rows[idx].manufacturerCode !== manufacturerCode) {\r\n // rows[idx].manufacturerCode = manufacturerCode;\r\n // rows[idx].rowError = this._updateRowErrorState(rows[idx]);\r\n // if (rows[idx].availableProducts.length > 1) {\r\n // const foundProduct = this._getProductManufacturerById(manufacturerCode, rows[idx].availableProducts);\r\n // rows[idx].product = foundProduct;\r\n // rows[idx].rowError = this._updateRowErrorState(rows[idx]);\r\n // } else if (rows[idx].value !== '') {\r\n // this._getProductByRowQuery(id, value, manufacturerCode);\r\n // }\r\n // }\r\n // rows[idx].value = value;\r\n // rows[idx].quantity = quantity;\r\n // rows[idx].manufacturerCode = manufacturerCode;\r\n // this.setState({ rows });\r\n }\r\n\r\n private _getProductManufacturerById(mfrCode: string, products: SimpleProductExt[]) {\r\n let _product = products[0];\r\n products.forEach(pr => {\r\n if (pr.ItemId!.includes(mfrCode)) {\r\n _product = pr;\r\n }\r\n });\r\n return _product;\r\n }\r\n\r\n /**\r\n * Calls the api when a value is updated\r\n * @param id id of row to update\r\n * @param searchText text to search for\r\n * @param manufacturerCode\r\n * @private\r\n */\r\n private _getProductByRowQuery(id: number, searchText: string, manufacturerCode: string) {\r\n // 6297 - Made the searchText length check that it is greater than or equal to the minimum query length so that it makes more sense to the user in site builder.\r\n if (searchText.length > (this.props.config.minQueryLength || this._defaultMinQueryLength)) {\r\n let textToSearch = searchText;\r\n if (manufacturerCode) {\r\n textToSearch = manufacturerCode + textToSearch;\r\n }\r\n this.state.debounce({ searchText: [textToSearch], id });\r\n }\r\n }\r\n\r\n /**\r\n * Adds two blank rows\r\n * @private\r\n */\r\n private _addTwoRows() {\r\n const rows = [...this.state.rows];\r\n\r\n const maxRowId = rows.reduce((max, row) => (row.id > max ? row.id : max), 0);\r\n\r\n const newRowId = maxRowId + 1;\r\n rows.push(this._generateEmptyRow(newRowId));\r\n rows.push(this._generateEmptyRow(newRowId + 1));\r\n\r\n this.setState({ rows });\r\n }\r\n\r\n /**\r\n * Fetches prices for unique products in the current rows.\r\n *\r\n * This function filters the rows to extract unique products based on their RecordId,\r\n * and then calls the `getPriceForProductSearchResultAction` to fetch their prices.\r\n * If successful, it updates the component state with the retrieved prices and flags\r\n * that the state has been updated. Errors encountered during the process are logged\r\n * to the console.\r\n *\r\n * @returns {Promise} Resolves after the state is updated or exits early if no products are present.\r\n */\r\n private async getProductPrices() {\r\n const products = Array.from(\r\n new Map(this.state.rows.filter(row => row.product).map(row => [row.product?.RecordId, row.product!])).values()\r\n );\r\n\r\n if (products.length === 0) {\r\n return;\r\n }\r\n\r\n try {\r\n const input = new PriceForProductSearchResultInput(products);\r\n const res = await getPriceForProductSearchResultAction(input, this.props.context.actionContext);\r\n this.setState({ prices: res, hasUpdated: true });\r\n this.setState(prevState => ({\r\n prices: [...prevState.prices, ...res],\r\n hasUpdated: true\r\n }));\r\n } catch (error) {\r\n console.error('Error fetching product prices:', error);\r\n }\r\n }\r\n\r\n private async getUpdatedProductPrice() {\r\n const updatedRowIds = Array.from(this.state.updatedRows);\r\n if (updatedRowIds.length === 0) {\r\n return;\r\n }\r\n\r\n // Filter rows that have been updated\r\n const updatedRows = this.state.rows.filter(row => updatedRowIds.includes(row.id));\r\n\r\n const updatedProducts = Array.from(\r\n new Map(updatedRows.filter(row => row.product).map(row => [row.product?.RecordId, row.product!])).values()\r\n );\r\n if (updatedProducts.length === 0) {\r\n return;\r\n }\r\n\r\n try {\r\n const input = new PriceForProductSearchResultInput(updatedProducts);\r\n const res = await getPriceForProductSearchResultAction(input, this.props.context.actionContext);\r\n\r\n this.setState(prevState => ({\r\n prices: [...prevState.prices, ...res],\r\n updatedRows: new Set(),\r\n shouldRowUpdate: false\r\n }));\r\n } catch (error) {\r\n console.error('Error fetching product prices:', error);\r\n }\r\n }\r\n\r\n /**\r\n * To handle paragraph change.\r\n * @param event - To handle text change event.\r\n * @name - HandleParagraphChange\r\n * @public\r\n * @returns - The Paragraph value.\r\n */\r\n public handleGuideTextChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.orderUploadGuideText = event.target.value);\r\n\r\n public render(): JSX.Element | null {\r\n const { orderUploadGuideText } = this.props.config;\r\n const guideText = orderUploadGuideText && (\r\n \r\n );\r\n if (!this.state.hasUpdated) {\r\n this.getProductPrices();\r\n }\r\n if (this.state.shouldRowUpdate) {\r\n this.getUpdatedProductPrice();\r\n }\r\n const viewProps: IEveQuickOrderViewProps = {\r\n ...this.props,\r\n handleUploadedItems: this._handleUploadedItems,\r\n quickOrderTable: this._renderTable(),\r\n quickOrderHeader: this._renderHeading(),\r\n quickOrderWrapper: {\r\n className: classNames('eve-quick-order'),\r\n tag: 'div',\r\n moduleProps: this.props\r\n },\r\n orderUploadWrapper: {\r\n tag: 'div',\r\n className: 'qo-order-upload-wrapper'\r\n },\r\n guideText: guideText\r\n };\r\n return this.props.renderView(viewProps);\r\n }\r\n}\r\n\r\nexport default EveQuickOrder;\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 * as React from 'react';\r\nimport { IEveQuickOrderViewProps } from './eve-quick-order';\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\n\r\nexport default (props: IEveQuickOrderViewProps) => {\r\n const {\r\n quickOrderHeader,\r\n quickOrderTable,\r\n quickOrderWrapper,\r\n orderUploadWrapper,\r\n guideText,\r\n handleUploadedItems: onUploadItems,\r\n slots: { orderUpload }\r\n } = props;\r\n\r\n const _renderGuide = (): JSX.Element | null => {\r\n const {\r\n config: { orderUploadHelpLink, orderUploadHelpLinkDisplayText }\r\n } = props;\r\n const className = 'eve-quick-order-order-upload__guide';\r\n return (\r\n
\r\n
{guideText}
\r\n {orderUploadHelpLink && (\r\n \r\n )}\r\n
\r\n );\r\n };\r\n\r\n return (\r\n \r\n {quickOrderHeader}\r\n {quickOrderTable}\r\n \r\n
\r\n
{_renderGuide()}
\r\n
\r\n {orderUpload && React.cloneElement(orderUpload[0] as React.ReactElement, { onUploadItems })}\r\n
\r\n
\r\n
\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\nimport { IComponent, IComponentProps, ICoreContext, msdyn365Commerce } from '@msdyn365-commerce/core';\r\n// import { IInvoiceErrorState, IPayInvoiceResources, PayInvoiceComponent } from '@msdyn365-commerce-modules/invoice';\r\nimport { /*IInvoiceErrorState,*/ IPayInvoiceResources /*, PayInvoiceComponent*/ } from '@msdyn365-commerce-modules/invoice';\r\nimport React from 'react';\r\n\r\nimport { formatShortDate } from '../gdn-invoice-details';\r\n// import { InvoiceDetailsModel } from '../helpers/invoice-data';\r\nimport { IGetGdnInvoiceDetailsResponse } from '../../../actions/DataServiceEntities.g';\r\n\r\nexport interface IInvoiceDetailsHeaderData {\r\n // invoiceDetails: InvoiceDetailsModel;\r\n gdnInvoiceDetails: IGetGdnInvoiceDetailsResponse;\r\n}\r\n\r\nexport interface IInvoiceDetailsHeaderResources extends IPayInvoiceResources {\r\n custNumberLabel: string;\r\n salesOrderNumLabel: string;\r\n purchaseOrderNumLabel: string;\r\n shipToLabel: string;\r\n shipViaLabel: string;\r\n invoiceDateLabel: string;\r\n orderDateLabel: string;\r\n invoiceIdLabel: string;\r\n}\r\n\r\nexport interface IInvoiceDetailsHeaderProps extends IComponentProps {\r\n context: ICoreContext;\r\n className: string;\r\n resources: IInvoiceDetailsHeaderResources;\r\n // onError?(errorState: IInvoiceErrorState, reference?: React.RefObject): void;\r\n}\r\n\r\nexport interface IInvoiceDetailsHeaderComponent extends IComponent {}\r\n\r\nconst InvoiceDetailsHeader: React.FC = (props: IInvoiceDetailsHeaderProps): JSX.Element => {\r\n const {\r\n className,\r\n data: { /*invoiceDetails,*/ gdnInvoiceDetails },\r\n resources\r\n // onError\r\n } = props;\r\n\r\n const {\r\n custNumberLabel,\r\n salesOrderNumLabel,\r\n purchaseOrderNumLabel,\r\n shipToLabel,\r\n shipViaLabel,\r\n invoiceDateLabel,\r\n orderDateLabel\r\n } = resources;\r\n\r\n const invoiceNumberText = resources.invoiceIdLabel.replace('{0}', gdnInvoiceDetails.InvoiceDetails?.InvoiceNumber || '');\r\n const invoiceInfoContainerClassName = `${className}__invoice-info-container`;\r\n const orderInfoContainerClassName = `${invoiceInfoContainerClassName}__order-info-container`;\r\n const orderInfoClassName = `${orderInfoContainerClassName}__order-info`;\r\n const orderMainInfoClassName = `${orderInfoClassName}__main-info`;\r\n const actionsClassName = `${className}__actions`;\r\n const amountSummaryClassName = `${invoiceInfoContainerClassName}__amount-summary`;\r\n const invoiceDate = formatShortDate(props.context, gdnInvoiceDetails.InvoiceDetails?.InvoiceDate);\r\n const orderDate = formatShortDate(props.context, gdnInvoiceDetails.InvoiceDetails?.OrderDate);\r\n // const canPayInvoice = !!gdnInvoiceDetails.InvoiceDetails?.InvoiceAmountMst && gdnInvoiceDetails.InvoiceDetails?.InvoiceAmountMst > 0;\r\n // TODO: Look into why this is not used on invoice\r\n // const canPayInvoice = !!gdnInvoiceDetails.InvoiceDetails?.AmountDue && gdnInvoiceDetails.InvoiceDetails?.AmountDue > 0;\r\n\r\n return (\r\n
\r\n
{invoiceNumberText}
\r\n
\r\n
\r\n
{custNumberLabel}
\r\n
{`${gdnInvoiceDetails?.InvoiceDetails?.CustomerAccount}`}
\r\n
\r\n
\r\n
{salesOrderNumLabel}
\r\n
{`${gdnInvoiceDetails.InvoiceDetails?.SalesOrderNumber}`}
\r\n
\r\n
\r\n
{purchaseOrderNumLabel}
\r\n
{`${gdnInvoiceDetails.InvoiceDetails?.PoNumber}`}
\r\n
\r\n {gdnInvoiceDetails.InvoiceDetails?.DeliveryAddress && (\r\n
\r\n
{shipToLabel}
\r\n
\r\n {`${gdnInvoiceDetails.InvoiceDetails?.DeliveryLocation}`}\r\n
\r\n
{gdnInvoiceDetails.InvoiceDetails?.DeliveryAddress}
\r\n
\r\n
\r\n )}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n {gdnInvoiceDetails.InvoiceDetails?.InvoiceLocation}\r\n
\r\n
\r\n
{gdnInvoiceDetails.InvoiceDetails?.InvoiceAddress}
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
{`${invoiceDateLabel} ${invoiceDate}`}
\r\n
\r\n {`${shipViaLabel} ${gdnInvoiceDetails.InvoiceDetails?.ShipVia}`}\r\n
\r\n
{`${orderDateLabel} ${orderDate}`}
\r\n
\r\n
\r\n
\r\n {/* */}\r\n
\r\n window.print()} />\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport const InvoiceDetailsHeaderComponent: React.FunctionComponent = msdyn365Commerce.createComponent<\r\n // @ts-expect-error\r\n IInvoiceDetailsHeaderComponent\r\n>('InvoiceDetailsHeaderComponent', { component: InvoiceDetailsHeader });\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, ICoreContext, msdyn365Commerce } from '@msdyn365-commerce/core';\r\nimport { ArrayExtensions, ObjectExtensions } from '@msdyn365-commerce-modules/retail-actions';\r\nimport classnames from 'classnames';\r\nimport React from 'react';\r\n\r\nimport { IGetGdnInvoiceDetailsResponse } from '../../../actions/DataServiceEntities.g';\r\nimport { formatShortDate, formatAmount } from '../gdn-invoice-details';\r\n\r\nexport interface IInvoiceDetailsPaymentDetailsData {\r\n gdnInvoiceDetails: IGetGdnInvoiceDetailsResponse;\r\n}\r\n\r\nexport interface IInvoiceDetailsPaymentDetailsResources {\r\n detachText: string;\r\n billToSummaryLabel: string;\r\n invoiceSummaryLabel: string;\r\n orderSummaryLabel: string;\r\n totalPiecesSummaryLabel: string;\r\n termsSummaryLabel: string;\r\n invoiceAmountDueText: string;\r\n invoicePaymentDueDateText: string;\r\n invoicePaymentSubtotal: string;\r\n invoicePaymentTax: string;\r\n invoicePaymentInvoiceTotal: string;\r\n}\r\n\r\nexport interface IInvoiceDetailsPaymentDetailsProps extends IComponentProps {\r\n context: ICoreContext;\r\n className: string;\r\n currencyCode: string;\r\n resources: IInvoiceDetailsPaymentDetailsResources;\r\n}\r\n\r\nexport interface IInvoiceDetailsPaymentDetailsComponent extends IComponent {}\r\n\r\ninterface IInvoicePaymentLineProps {\r\n label: string;\r\n value: number;\r\n className: string;\r\n}\r\n\r\nconst InvoiceDetailsPaymentDetails: React.FC = (\r\n props: IInvoiceDetailsPaymentDetailsProps\r\n): JSX.Element | null => {\r\n const {\r\n className,\r\n context,\r\n data: { gdnInvoiceDetails },\r\n resources,\r\n currencyCode\r\n } = props;\r\n\r\n const {\r\n detachText,\r\n billToSummaryLabel,\r\n invoiceSummaryLabel,\r\n orderSummaryLabel,\r\n totalPiecesSummaryLabel,\r\n termsSummaryLabel,\r\n invoicePaymentInvoiceTotal,\r\n invoiceAmountDueText,\r\n invoicePaymentDueDateText\r\n } = resources;\r\n\r\n const invoiceDetails = gdnInvoiceDetails.InvoiceDetails;\r\n\r\n const lineClassName = `${className}__line`;\r\n\r\n const lines: IInvoicePaymentLineProps[] = [];\r\n if (!ObjectExtensions.isNullOrUndefined(invoiceDetails?.SubTotal)) {\r\n lines.push({\r\n label: resources.invoicePaymentSubtotal,\r\n value: invoiceDetails?.SubTotal || 0,\r\n className: `${lineClassName}-subtotal`\r\n });\r\n }\r\n if (!ObjectExtensions.isNullOrUndefined(invoiceDetails?.Tax)) {\r\n lines.push({\r\n label: resources.invoicePaymentTax,\r\n value: invoiceDetails?.Tax || 0,\r\n className: `${lineClassName}-total-tax`\r\n });\r\n }\r\n\r\n if (!ArrayExtensions.hasElements(lines)) {\r\n return null;\r\n }\r\n\r\n return (\r\n
\r\n
{detachText}
\r\n {lines.map(line => {\r\n return (\r\n
\r\n
{line.label}
\r\n
\r\n {props.context.cultureFormatter.formatCurrency(line.value, currencyCode)}\r\n
\r\n
\r\n );\r\n })}\r\n
\r\n
{`${billToSummaryLabel} ${invoiceDetails?.BillToAccount}`}
\r\n
{`${invoiceSummaryLabel} ${invoiceDetails?.InvoiceNumber}`}
\r\n
{`${orderSummaryLabel} ${invoiceDetails?.SalesOrderNumber}`}
\r\n
{`${totalPiecesSummaryLabel} ${invoiceDetails?.TotalPieces}`}
\r\n
\r\n {`${invoicePaymentInvoiceTotal} ${formatAmount(context, invoiceDetails?.InvoiceAmount, currencyCode)}`}\r\n
\r\n
\r\n
\r\n
\r\n
{termsSummaryLabel}
\r\n
{invoiceDetails?.Terms}
\r\n
\r\n
\r\n
\r\n {/* {`${invoiceAmountDueText} ${formatAmount(context, invoiceDetails?.InvoiceAmountMst, currencyCode)}`} */}\r\n {`${invoiceAmountDueText} ${formatAmount(context, invoiceDetails?.AmountDue, currencyCode)}`}\r\n
\r\n
\r\n
{invoicePaymentDueDateText}
\r\n
\r\n {formatShortDate(context, invoiceDetails?.DueDate)}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport const InvoiceDetailsPaymentDetailsComponent: React.FunctionComponent = msdyn365Commerce.createComponent<\r\n // @ts-expect-error\r\n IInvoiceDetailsPaymentDetailsComponent\r\n>('InvoiceDetailsPaymentDetailsComponent', { component: InvoiceDetailsPaymentDetails });\r\n","import { getProductPageUrlSync, ObjectExtensions } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { ICoreContext } from '@msdyn365-commerce/core';\r\nimport React from 'react';\r\nimport Table from 'reactstrap/lib/Table';\r\nimport { IGdnFreightDetails, IGdnInvoiceDetailsResponseEntity, IGdnInvoiceLineEntity } from '../../../actions/DataServiceEntities.g';\r\nimport { formatAmount } from '../gdn-invoice-details';\r\n\r\nexport interface IProductsTableComponentResources {\r\n itemIdHeading: string;\r\n descriptionHeading: string;\r\n quantityHeading: string;\r\n listPriceHeading: string;\r\n unitPriceHeading: string;\r\n totalHeading: string;\r\n custItemNumLabel: string;\r\n}\r\n\r\ninterface IProductsTableComponentProps {\r\n className: string;\r\n currencyCode: string;\r\n invoiceDetails: IGdnInvoiceDetailsResponseEntity | undefined;\r\n invoiceLines: IGdnInvoiceLineEntity[] | undefined;\r\n ctx: ICoreContext;\r\n resources: IProductsTableComponentResources;\r\n}\r\n\r\nexport const InvoiceDetailsProductsTableComponent: React.FC = props => {\r\n const { className, currencyCode, ctx, invoiceDetails, invoiceLines, resources } = props;\r\n const {\r\n itemIdHeading,\r\n descriptionHeading,\r\n quantityHeading,\r\n listPriceHeading,\r\n unitPriceHeading,\r\n totalHeading,\r\n custItemNumLabel\r\n } = resources;\r\n\r\n const freightList = invoiceDetails?.FreightList;\r\n const combinedFreightList: IGdnFreightDetails[] = [];\r\n if (freightList) {\r\n const reducedFreightList = freightList.reduce((acc, fl) => {\r\n const { FreightAmount, FreightCode, FreightDescription } = fl;\r\n\r\n if (FreightCode && FreightAmount) {\r\n if (!acc[FreightCode]) {\r\n acc[FreightCode] = [];\r\n }\r\n if (acc[FreightCode].length === 0) {\r\n acc[FreightCode].push({\r\n FreightAmount: FreightAmount,\r\n FreightCode: FreightCode,\r\n FreightDescription: FreightDescription\r\n });\r\n } else {\r\n acc[FreightCode][0].FreightAmount += FreightAmount;\r\n }\r\n }\r\n return acc;\r\n }, {});\r\n\r\n for (const code in reducedFreightList) {\r\n if (Object.prototype.hasOwnProperty.call(reducedFreightList, code)) {\r\n const details = reducedFreightList[code];\r\n combinedFreightList.push(...details);\r\n }\r\n }\r\n }\r\n return (\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 \r\n {invoiceLines &&\r\n invoiceLines.map((line, index) => {\r\n let productUrl = '';\r\n if (\r\n !ObjectExtensions.isNullOrUndefined(line?.Description) &&\r\n !ObjectExtensions.isNullOrUndefined(line?.ProductId)\r\n ) {\r\n productUrl = getProductPageUrlSync(line?.Description || '', line?.ProductId || 0, ctx.actionContext);\r\n }\r\n return (\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 {invoiceLines &&\r\n combinedFreightList &&\r\n combinedFreightList.map((line, index) => {\r\n return (\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
{itemIdHeading}{descriptionHeading}{quantityHeading}{listPriceHeading}{unitPriceHeading}{totalHeading}
{index + 1}\r\n \r\n {line.ItemNumber}\r\n {line.CustItemNumber && (\r\n <>\r\n
\r\n {`${custItemNumLabel} ${line.CustItemNumber}`}\r\n \r\n )}\r\n
\r\n
\r\n {line.Description}\r\n {line.Quantity}\r\n {formatAmount(ctx, line.ListPrice, currencyCode)}\r\n \r\n {formatAmount(ctx, line.UnitPrice, currencyCode)}\r\n {formatAmount(ctx, line.Total, currencyCode)}
{invoiceLines.length + index + 1}{line.FreightCode}{line.FreightDescription}\r\n {formatAmount(ctx, line.FreightAmount, currencyCode)}\r\n
\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\nimport { ICoreContext, IDateFormatOptions /*, getUrlSync*/ } from '@msdyn365-commerce/core';\r\n// import { SalesInvoiceLine, SimpleProduct } from '@msdyn365-commerce/retail-proxy';\r\nimport { IInvoiceErrorState /*, InvoiceErrorComponent*/ } from '@msdyn365-commerce-modules/invoice';\r\n// import { getSimpleProductsAction, ProductInput } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { IModuleProps } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { InvoiceDetailsHeaderComponent } from './components/gdn-invoice-details-header';\r\nimport { InvoiceDetailsPaymentDetailsComponent } from './components/gdn-invoice-details-payment-summary';\r\nimport { InvoiceDetailsProductsTableComponent, IProductsTableComponentResources } from './components/gdn-invoice-details-products-table';\r\n// import { InvoiceDetailsModel } from './helpers/invoice-data';\r\nimport { IGdnInvoiceDetailsData } from './gdn-invoice-details.data';\r\nimport { IGdnInvoiceDetailsProps } from './gdn-invoice-details.props.autogenerated';\r\nimport { IGetGdnInvoiceDetailsResponse } from '../../actions/DataServiceEntities.g';\r\n\r\nexport interface IInvoiceDetailsViewState {\r\n // invoiceDetails?: InvoiceDetailsModel;\r\n // payInvoiceErrorModalOpen?: boolean;\r\n errorState?: IInvoiceErrorState;\r\n gdnInvoiceDetails?: IGetGdnInvoiceDetailsResponse;\r\n}\r\n\r\nexport interface IInvoiceDetailsViewProps extends IGdnInvoiceDetailsProps {\r\n moduleProps: IModuleProps;\r\n header: JSX.Element;\r\n products: JSX.Element;\r\n paymentDetails: JSX.Element;\r\n shipmentDetails: JSX.Element;\r\n // payInvoiceError?: JSX.Element;\r\n invoiceDetailsError?: JSX.Element;\r\n}\r\n\r\nexport const formatShortDate = (context: ICoreContext, date: Date | undefined) => {\r\n if (date === undefined) {\r\n return '';\r\n }\r\n const dateOptions: IDateFormatOptions = { year: 'numeric', month: 'numeric', day: 'numeric' };\r\n const newDate = new Date(date);\r\n // Convert time to UTC time in order to match generated invoices\r\n newDate.setTime(newDate.getTime() + newDate.getTimezoneOffset() * 60000);\r\n return context.cultureFormatter.formatDate(newDate.toUTCString(), dateOptions);\r\n};\r\n\r\nexport const formatAmount = (context: ICoreContext, amount: number | undefined, currencyCode: string | undefined) => {\r\n if (amount === undefined) {\r\n return '';\r\n }\r\n return context.cultureFormatter.formatCurrency(amount, currencyCode);\r\n};\r\n\r\nconst CURRENCY_CODE = 'USD';\r\n\r\n/**\r\n * InvoiceDetails component.\r\n * @extends {React.PureComponent>}\r\n */\r\nclass InvoiceDetails extends React.PureComponent, IInvoiceDetailsViewState> {\r\n private static readonly _className: string = 'msc-invoice-details';\r\n\r\n public constructor(props: IGdnInvoiceDetailsProps) {\r\n super(props);\r\n\r\n this.state = { errorState: { errorMessage: '', otherError: '' } };\r\n // this._onAddToCartFailed = this._onAddToCartFailed.bind(this);\r\n // this._setPayInvoiceErrorModalClose = this._setPayInvoiceErrorModalClose.bind(this);\r\n }\r\n\r\n public async componentDidMount(): Promise {\r\n // const invoice = await this.props.data.invoice;\r\n // const invoiceDetails = await this.props.data.invoiceDetails;\r\n const gdnInvoiceDetails = await this.props.data.gdnInvoiceDetails;\r\n\r\n // const products = await this._getProducts(invoiceDetails.SalesInvoiceLine, invoiceDetails.ChannelId);\r\n\r\n // const invoiceDetailsModel = new InvoiceDetailsModel(invoice, invoiceDetails, products);\r\n this.setState({\r\n // invoiceDetails: invoiceDetailsModel,\r\n // payInvoiceErrorModalOpen: false,\r\n errorState: { errorMessage: '', otherError: '' },\r\n gdnInvoiceDetails: gdnInvoiceDetails\r\n });\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n if (!this.state.gdnInvoiceDetails /* && !this.state.invoiceDetails */) {\r\n return null;\r\n }\r\n\r\n const header = this._renderHeader();\r\n const products = this._renderProducts();\r\n const paymentDetails = this._renderPaymentDetails();\r\n // const payInvoiceError = this._renderInvoiceErrors();\r\n const shipmentDetails = this._renderShipmentInformation();\r\n const invoiceDetailsError = !this.state.gdnInvoiceDetails?.ErrorMessage ? (\r\n undefined\r\n ) : (\r\n
{this.props.resources.noInvoiceDetailsFoundErrorMessage}
\r\n );\r\n\r\n const props: IInvoiceDetailsViewProps = {\r\n ...(this.props as IGdnInvoiceDetailsProps),\r\n moduleProps: {\r\n moduleProps: this.props,\r\n className: InvoiceDetails._className\r\n },\r\n header,\r\n products,\r\n paymentDetails,\r\n shipmentDetails,\r\n // payInvoiceError,\r\n invoiceDetailsError\r\n };\r\n\r\n return this.props.renderView(props);\r\n }\r\n\r\n // private async _getProducts(invoiceLines: SalesInvoiceLine[] = [], channelId?: number): Promise {\r\n // const productInputs = invoiceLines\r\n // .filter(product => product.ProductId)\r\n // .map(\r\n // product =>\r\n // new ProductInput(\r\n // product.ProductId!,\r\n // this.props.context.request.apiSettings,\r\n // channelId,\r\n // undefined,\r\n // this.props.context.actionContext.requestContext\r\n // )\r\n // );\r\n // return getSimpleProductsAction(productInputs, this.props.context.actionContext);\r\n // }\r\n\r\n private _renderHeader(): JSX.Element {\r\n // const invoiceDetails = this.state.invoiceDetails!;\r\n const gdnInvoiceDetails = this.state.gdnInvoiceDetails!;\r\n return (\r\n \r\n );\r\n }\r\n\r\n private _renderProducts(): JSX.Element {\r\n const {\r\n itemIdHeading,\r\n descriptionHeading,\r\n quantityHeading,\r\n listPriceHeading,\r\n unitPriceHeading,\r\n totalHeading,\r\n custItemNumLabel\r\n } = this.props.resources;\r\n const gdnInvoiceDetails = this.state.gdnInvoiceDetails!;\r\n const productsTableResources: IProductsTableComponentResources = {\r\n itemIdHeading: itemIdHeading,\r\n descriptionHeading: descriptionHeading,\r\n quantityHeading: quantityHeading,\r\n listPriceHeading: listPriceHeading,\r\n unitPriceHeading: unitPriceHeading,\r\n totalHeading: totalHeading,\r\n custItemNumLabel: custItemNumLabel\r\n };\r\n return (\r\n \r\n );\r\n }\r\n\r\n private _renderPaymentDetails(): JSX.Element {\r\n // const invoiceDetails = this.state.invoiceDetails!;\r\n const gdnInvoiceDetails = this.state.gdnInvoiceDetails!;\r\n return (\r\n <>\r\n \r\n \r\n );\r\n }\r\n\r\n private _renderShipmentInformation(): JSX.Element {\r\n const {\r\n shippingInformationHeadingText,\r\n containerIdLabelText,\r\n weightLabelText,\r\n shippingCarrierLabelText,\r\n trackingLabel,\r\n quantityHeading\r\n } = this.props.resources;\r\n const gdnInvoiceDetails = this.state.gdnInvoiceDetails!;\r\n const shippingInformation = gdnInvoiceDetails.ShippingContainerInformation;\r\n\r\n if (!shippingInformation || shippingInformation.length === 0) {\r\n return <>;\r\n }\r\n\r\n return (\r\n <>\r\n
{shippingInformationHeadingText}
\r\n {shippingInformation.map((c, index) => {\r\n return (\r\n
\r\n
\r\n \r\n {containerIdLabelText}\r\n {c.ContainerId}\r\n \r\n \r\n {weightLabelText}\r\n {c.Weight}\r\n \r\n \r\n {shippingCarrierLabelText}\r\n {c.ShippingCarrier}\r\n \r\n \r\n {trackingLabel}\r\n {c.TrackingNumber}\r\n \r\n
\r\n
\r\n {c.ContainerLinesList?.map((cLines, index) => (\r\n \r\n {`${cLines.ItemId} - ${quantityHeading}: ${cLines.Quantity}`}\r\n
\r\n ))}\r\n
\r\n
\r\n );\r\n })}\r\n \r\n );\r\n }\r\n\r\n // private _onAddToCartFailed(newErrorState: IInvoiceErrorState): void {\r\n // const errorState = { ...newErrorState };\r\n // errorState.errorHost = 'ADDINVOICETOCART';\r\n\r\n // // check for errorcode and otherError which contains the LocalizedMessage from API\r\n // if (\r\n // errorState &&\r\n // errorState.errorCode === 'Microsoft_Dynamics_Commerce_Runtime_InvoiceLineAlreadyExistsInCart' &&\r\n // errorState.otherError\r\n // ) {\r\n // this.setState({ errorState: errorState });\r\n // }\r\n\r\n // this.setState({ payInvoiceErrorModalOpen: true });\r\n // }\r\n\r\n // private _setPayInvoiceErrorModalClose(): void {\r\n // this.setState({ payInvoiceErrorModalOpen: false });\r\n // }\r\n\r\n // private _renderInvoiceErrors(): JSX.Element {\r\n // const {\r\n // resources: {\r\n // payInvoiceErrorDialogHeader,\r\n // payInvoiceErrorDialogBodyErrorTitle,\r\n // payInvoiceErrorDialogBodyErrorDescription,\r\n // payInvoiceErrorDialogFooterGoToCartButtonText,\r\n // payInvoiceErrorDialogFooterCancelButtonText\r\n // }\r\n // } = this.props;\r\n\r\n // const cartUrl = getUrlSync('cart', this.props.context.actionContext) || '';\r\n\r\n // const errorClassName = `${InvoiceDetails._className}__errors`;\r\n\r\n // return (\r\n // \r\n // );\r\n // }\r\n}\r\n\r\nexport default InvoiceDetails;\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 { Module } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { IInvoiceDetailsViewProps } from './gdn-invoice-details';\r\n\r\nexport const InvoiceDetailsView: React.FC = props => {\r\n const { header, products, paymentDetails, shipmentDetails, /*payInvoiceError,*/ invoiceDetailsError } = props;\r\n\r\n return (\r\n \r\n
\r\n {invoiceDetailsError ? (\r\n invoiceDetailsError\r\n ) : (\r\n <>\r\n {header}\r\n {products}\r\n {paymentDetails}\r\n
\r\n {shipmentDetails}\r\n {/* {payInvoiceError} */}\r\n \r\n )}\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default InvoiceDetailsView;\r\n","import React from 'react';\r\nimport Table from 'reactstrap/lib/Table';\r\nimport classnames from 'classnames';\r\nimport { ListGroup, ListGroupItem, ListGroupItemHeading, ListGroupItemText } from 'reactstrap';\r\nimport { IAriServiceAssemblyPartProductCombinations } from '../model-viewer';\r\nimport { ProductSearchResult } from '@msdyn365-commerce/retail-proxy';\r\nimport { CommercePropertyValueEnum } from '../../../modules/allowable-freight/utils/CommercePropertyValueEnum';\r\nimport getExtensionPropertyValueByKey from '../../../utils/getExtensionPropertyValueByKey';\r\n\r\ninterface IAriPArtsListTableProps {\r\n parts: IAriServiceAssemblyPartProductCombinations[];\r\n tableHeadings: string[];\r\n baseClassName: String;\r\n goToId(id: string): void;\r\n addPartToCart(part: ProductSearchResult, partId: string): void;\r\n partIdPrefix: string;\r\n selectedRow: string | undefined;\r\n isAuthenticated: boolean;\r\n requiresAuthentication: boolean;\r\n loginToViewPricingText: string;\r\n unavailableText: string;\r\n addToCartText: string;\r\n signInUrl: string;\r\n isMobile: boolean;\r\n isDrawerOpen: boolean;\r\n closePartDrawer(): void;\r\n priceFormatter: (price: string | number, currencyCode?: string | undefined) => string;\r\n mfrCode: string;\r\n}\r\n\r\n/**\r\n * Component to display a list of parts\r\n * @param props props\r\n */\r\nexport const AriPartsListTableComponent: React.FC = props => {\r\n const {\r\n tableHeadings,\r\n parts,\r\n baseClassName,\r\n goToId,\r\n addPartToCart,\r\n partIdPrefix,\r\n selectedRow,\r\n isAuthenticated,\r\n requiresAuthentication,\r\n loginToViewPricingText,\r\n signInUrl,\r\n isMobile,\r\n isDrawerOpen,\r\n unavailableText,\r\n addToCartText,\r\n closePartDrawer,\r\n priceFormatter\r\n } = props;\r\n\r\n const [yPosition, setYPosition] = React.useState(0);\r\n React.useEffect(() => {\r\n //Scroll event handling\r\n window.removeEventListener('scroll', () => setYPosition(window.pageYOffset));\r\n window.addEventListener('scroll', () => setYPosition(window.pageYOffset), { passive: true });\r\n window.removeEventListener('scroll', () => setYPosition(window.pageYOffset));\r\n return;\r\n });\r\n\r\n const scrollDownClickHandler = (id: string) => {\r\n const element = document.getElementById(id);\r\n return window.scrollTo(0, element ? element.getBoundingClientRect().top : 0);\r\n };\r\n const selectedPartIdName = `${baseClassName}__part-selection-popover`;\r\n return (\r\n <>\r\n
\r\n {!isMobile ? (\r\n \r\n \r\n \r\n {tableHeadings.map(th => (\r\n \r\n ))}\r\n \r\n \r\n \r\n {parts &&\r\n parts.map(part => {\r\n const product = part.Product;\r\n const partId = product && product.ItemId;\r\n if (product?.ItemId === 'HOM538938002') {\r\n debugger;\r\n }\r\n const description = (product && product.Name) || part.Description;\r\n // TODO: Don't use hardcoded key\r\n const currentInvString =\r\n product &&\r\n getExtensionPropertyValueByKey(\r\n product.ExtensionProperties,\r\n 'inventory',\r\n CommercePropertyValueEnum.string\r\n );\r\n let currentInventory = parseInt(currentInvString as string, 10);\r\n if (isNaN(currentInventory)) {\r\n currentInventory = 0;\r\n }\r\n const oosUpperBound = part.Product?.oosUpperBoundLimit || 0;\r\n const canAddToCart = part.Product && currentInventory > oosUpperBound && part.Product?.isEligible;\r\n return (\r\n \r\n \r\n \r\n \r\n {isAuthenticated || !requiresAuthentication ? (\r\n \r\n \r\n \r\n \r\n {canAddToCart ? (\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 \r\n )}\r\n \r\n );\r\n })}\r\n \r\n
{th}
\r\n \r\n {partId || 'N/A'}{description}{currentInventory}{priceFormatter(part.Product?.BasePrice || 0)}{priceFormatter(part.Product?.Price || 0)}\r\n \r\n \r\n {' '}\r\n addPartToCart(part.Product!, part.PartId!)}\r\n >\r\n {addToCartText}\r\n \r\n

\r\n
\r\n {' '}\r\n {currentInventory}{priceFormatter(part.Product?.BasePrice || 0)}\r\n {loginToViewPricingText}\r\n
\r\n ) : (\r\n \r\n {parts &&\r\n parts.map(part => (\r\n \r\n \r\n \r\n {`${tableHeadings[0]}: `}\r\n {part.Tag}\r\n \r\n \r\n {`${tableHeadings[1]}: `}\r\n {`${props.mfrCode}${part.Sku}`}\r\n \r\n \r\n \r\n \r\n {`${tableHeadings[2]}: ${part.Description}`}\r\n \r\n \r\n \r\n {isAuthenticated || requiresAuthentication ? (\r\n
\r\n {`${\r\n tableHeadings[4]\r\n }: ${priceFormatter(part.Product?.Price || 0)}`}\r\n {`${\r\n tableHeadings[3]\r\n }: ${part.Qty === '' ? 0 : parseInt(part.Qty!, 10)}`}\r\n
\r\n ) : (\r\n {loginToViewPricingText}\r\n )}\r\n
\r\n \r\n {isAuthenticated || requiresAuthentication ? (\r\n
\r\n {part.Product ? (\r\n
\r\n \r\n\r\n addPartToCart(part.Product!, part.PartId!)}\r\n >\r\n {addToCartText}\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
\r\n )}\r\n {yPosition <= 0 && (\r\n
scrollDownClickHandler(`${baseClassName}__list`)}>\r\n scroll down\r\n
\r\n )}\r\n
\r\n \r\n
\r\n \r\n \r\n \r\n {tableHeadings.map(th => (\r\n \r\n ))}\r\n \r\n \r\n \r\n
{th}
\r\n
\r\n X\r\n
\r\n
\r\n \r\n \r\n );\r\n};\r\n","import * as React from 'react';\r\n\r\nexport interface IReportsExportCardProps {\r\n rowText: string;\r\n buttonText: string;\r\n className: string;\r\n onClick: (rowText: string) => Promise;\r\n isButtonDisabled: boolean;\r\n dropdown?: React.ReactElement;\r\n}\r\n\r\nexport const RenderCard: React.FC = ({ rowText, buttonText, className, onClick, isButtonDisabled, dropdown }) => {\r\n return (\r\n <>\r\n
{rowText}
\r\n <>\r\n {dropdown ?
{dropdown}
: null}\r\n
\r\n onClick(rowText)}\r\n type={'button'}\r\n >\r\n {buttonText}\r\n \r\n
\r\n \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\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport classnames from 'classnames';\r\nimport MultiSelect from 'react-multi-select-component';\r\nimport ModalBody from 'reactstrap/lib/ModalBody';\r\nimport * as React from 'react';\r\nimport { IModuleProps, Modal, ModalHeader } from '@msdyn365-commerce-modules/utilities';\r\n\r\nimport { IReportsExportData } from './reports-export.data';\r\nimport { IReportsExportProps } from './reports-export.props.autogenerated';\r\nimport { getPriceByManufacturerAsync, getSalesReportAsync } from '../../actions/DataActionExtension.g';\r\nimport { IManufacturerCodeResponseEntity } from '../../actions/DataServiceEntities.g';\r\n\r\nimport { RenderCard } from './components/render-card';\r\n\r\nexport interface IReportsExportViewProps extends IReportsExportProps {\r\n moduleProps: IModuleProps;\r\n heading?: React.ReactNode;\r\n reportsList: React.ReactElement;\r\n modal: React.ReactNode;\r\n}\r\n\r\nexport interface IReportsExportState {\r\n priceByMfrSelectedMfrMultiSelect: Option[];\r\n priceByMfrSelectedMfrCodes: string[];\r\n salesByMfrSelectedMfrMultiSelect: Option[];\r\n salesByMfrSelectedMfrCodes: string[];\r\n salesByPartSelectedPartMultiSelect: Option[];\r\n salesByPartSelectedPartCodes: string[];\r\n salesByPartSelectedSearchType: string;\r\n singleManufacturerPriceType: string;\r\n isModalActive: boolean;\r\n modalMessage: string;\r\n isModalMessageSuccess: boolean;\r\n}\r\n\r\nexport interface Option {\r\n label: string;\r\n value: string;\r\n key?: string;\r\n disabled?: boolean;\r\n}\r\n\r\n/**\r\n *\r\n * ReportsExport component\r\n * @extends {React.PureComponent>}\r\n */\r\nclass ReportsExport extends React.PureComponent, IReportsExportState> {\r\n constructor(props: IReportsExportProps) {\r\n super(props);\r\n\r\n this._setManufacturerCodeState = this._setManufacturerCodeState.bind(this);\r\n this._setSalesByPartSearchTypeState = this._setSalesByPartSearchTypeState.bind(this);\r\n this._setSingleManufacturerPriceTypeState = this._setSingleManufacturerPriceTypeState.bind(this);\r\n this._handleButtonClick = this._handleButtonClick.bind(this);\r\n\r\n this.state = {\r\n priceByMfrSelectedMfrMultiSelect: [],\r\n priceByMfrSelectedMfrCodes: [],\r\n salesByMfrSelectedMfrMultiSelect: [],\r\n salesByMfrSelectedMfrCodes: [],\r\n salesByPartSelectedPartMultiSelect: [],\r\n salesByPartSelectedPartCodes: [],\r\n salesByPartSelectedSearchType: '',\r\n singleManufacturerPriceType: '',\r\n isModalActive: false,\r\n modalMessage: '',\r\n isModalMessageSuccess: false\r\n };\r\n }\r\n\r\n /**\r\n * Gets manufacturer codes from data\r\n * @private\r\n */\r\n private _getManufacturerCodeList = (): IManufacturerCodeResponseEntity[] => {\r\n const codesResults = this.props.data.manufacturerCodes.result ? this.props.data.manufacturerCodes.result : [];\r\n // @ts-ignore\r\n return codesResults.manufacturerCodes;\r\n };\r\n\r\n private _getPartList = () => {\r\n const partList = [\r\n { PartNo: 'Organization', Description: 'Org' },\r\n { PartNo: 'Location', Description: 'Loc' }\r\n ];\r\n // { PartNo: 'ITW00786', Description: '.300x2-1/2 Dr Pin 1516 100 pk' },\r\n // { PartNo: 'ITW00803', Description: '.300x1-1/2 Pin w/washer 100 p' }\r\n return partList;\r\n };\r\n\r\n private _setSalesByPartSearchTypeState(e: React.ChangeEvent) {\r\n const target = e.target as HTMLSelectElement;\r\n this.setState({ salesByPartSelectedSearchType: target.value });\r\n }\r\n\r\n private _setSingleManufacturerPriceTypeState(e: React.ChangeEvent) {\r\n const target = e.target as HTMLSelectElement;\r\n this.setState({ singleManufacturerPriceType: target.value });\r\n }\r\n\r\n private _setManufacturerCodeState(selectedMfrCodes: Option[], reportIdentifier: string) {\r\n const { priceFilesReportText, salesByMfrReportText, salesByPartReportText } = this.props.resources;\r\n const newSelectedMfrCodeList: string[] = [];\r\n selectedMfrCodes.map(code => {\r\n newSelectedMfrCodeList.push(code.value);\r\n });\r\n switch (reportIdentifier) {\r\n case priceFilesReportText:\r\n this.setState({ priceByMfrSelectedMfrMultiSelect: selectedMfrCodes, priceByMfrSelectedMfrCodes: newSelectedMfrCodeList });\r\n break;\r\n case salesByMfrReportText:\r\n this.setState({ salesByMfrSelectedMfrMultiSelect: selectedMfrCodes, salesByMfrSelectedMfrCodes: newSelectedMfrCodeList });\r\n break;\r\n case salesByPartReportText:\r\n this.setState({\r\n salesByPartSelectedPartMultiSelect: selectedMfrCodes,\r\n salesByPartSelectedPartCodes: newSelectedMfrCodeList\r\n });\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n\r\n private _clearSelectedManufacturers(reportIdentifier: string) {\r\n const { priceFilesReportText, salesByMfrReportText, salesByPartReportText } = this.props.resources;\r\n switch (reportIdentifier) {\r\n case priceFilesReportText:\r\n const priceSelectElement: HTMLElement | null = document.getElementById('price-files-select');\r\n if (priceSelectElement) {\r\n (priceSelectElement as HTMLSelectElement).selectedIndex = 0;\r\n }\r\n this.setState({\r\n priceByMfrSelectedMfrMultiSelect: [],\r\n priceByMfrSelectedMfrCodes: [],\r\n singleManufacturerPriceType: ''\r\n });\r\n break;\r\n case salesByMfrReportText:\r\n this.setState({ salesByMfrSelectedMfrMultiSelect: [], salesByMfrSelectedMfrCodes: [] });\r\n break;\r\n case salesByPartReportText:\r\n const salesSelectElement: HTMLElement | null = document.getElementById('sales-searchtype-select');\r\n if (salesSelectElement) {\r\n (salesSelectElement as HTMLSelectElement).selectedIndex = 0;\r\n }\r\n this.setState({\r\n salesByPartSelectedPartMultiSelect: [],\r\n salesByPartSelectedPartCodes: [],\r\n salesByPartSelectedSearchType: ''\r\n });\r\n break;\r\n default:\r\n break;\r\n }\r\n this._renderRow();\r\n }\r\n\r\n private _setMultiSelectRendering(selected: Option[], numOfSelectedManufacturers: string, noSelectedManufacturers: string): string {\r\n let selectedString = numOfSelectedManufacturers;\r\n selected.length\r\n ? (selectedString = selectedString.replace('{0}', `${selected.length}`))\r\n : (selectedString = noSelectedManufacturers);\r\n return selectedString;\r\n }\r\n\r\n private _renderSalesDropdown(): React.ReactElement {\r\n const { organizationDropdownLabel, locationDropdownLabel, pleaseSelectDefaultLabel } = this.props.resources;\r\n const searchTypeList = [organizationDropdownLabel, locationDropdownLabel];\r\n return (\r\n \r\n \r\n {searchTypeList.map(searchType => (\r\n \r\n ))}\r\n \r\n );\r\n }\r\n\r\n private _renderManufacturerDropdown(reportIdentifier: string): React.ReactElement {\r\n const {\r\n config: { allowMultiSelectForManufacturers, allowSelectAllManufacturers },\r\n resources: {\r\n numOfSelectedManufacturers,\r\n noSelectedManufacturers,\r\n selectManufacturersLabel,\r\n numOfSelectedParts,\r\n noSelectedParts,\r\n selectPartsLabel,\r\n salesByMfrReportText,\r\n priceFilesReportText,\r\n pleaseSelectDefaultLabel\r\n }\r\n } = this.props;\r\n\r\n const needManufacturers = reportIdentifier === salesByMfrReportText || reportIdentifier === priceFilesReportText;\r\n const options: Option[] = [];\r\n let noneSelectedLabel = '';\r\n let numOfSelectedLabel = '';\r\n let selectLabel = '';\r\n\r\n if (needManufacturers) {\r\n noneSelectedLabel = noSelectedManufacturers;\r\n numOfSelectedLabel = numOfSelectedManufacturers;\r\n selectLabel = selectManufacturersLabel;\r\n const mfrCodeList = this._getManufacturerCodeList();\r\n if (mfrCodeList) {\r\n mfrCodeList.map(code => {\r\n if (code.GDNManufacturerCode && code.Description) {\r\n const label = `${code.GDNManufacturerCode} - ${code.Description}`;\r\n const value = code.GDNManufacturerCode;\r\n const optionRow = { label: label, value: value };\r\n options.push(optionRow);\r\n }\r\n });\r\n }\r\n } else {\r\n noneSelectedLabel = noSelectedParts;\r\n numOfSelectedLabel = numOfSelectedParts;\r\n selectLabel = selectPartsLabel;\r\n const partList = this._getPartList();\r\n if (partList) {\r\n partList.map(part => {\r\n if (part.PartNo && part.Description) {\r\n const label = `${part.PartNo}`;\r\n const value = part.PartNo;\r\n const optionRow = { label: label, value: value };\r\n options.push(optionRow);\r\n }\r\n });\r\n }\r\n }\r\n\r\n return allowMultiSelectForManufacturers ? (\r\n this._setManufacturerCodeState(selectedCodes, reportIdentifier)}\r\n options={options}\r\n labelledBy={selectLabel}\r\n disableSearch={true}\r\n hasSelectAll={allowSelectAllManufacturers ?? false}\r\n // shouldToggleOnHover={true}\r\n valueRenderer={selected => this._setMultiSelectRendering(selected, numOfSelectedLabel, noneSelectedLabel)}\r\n />\r\n ) : (\r\n \r\n \r\n {options.map(mfr => (\r\n \r\n ))}\r\n \r\n );\r\n }\r\n\r\n private _getMultiSelectValue(reportIdentifier: string) {\r\n const { priceFilesReportText, salesByMfrReportText, salesByPartReportText } = this.props.resources;\r\n switch (reportIdentifier) {\r\n case priceFilesReportText:\r\n return this.state.priceByMfrSelectedMfrMultiSelect;\r\n case salesByMfrReportText:\r\n return this.state.salesByMfrSelectedMfrMultiSelect;\r\n case salesByPartReportText:\r\n return this.state.salesByPartSelectedPartMultiSelect;\r\n default:\r\n return [];\r\n }\r\n }\r\n\r\n private _toggleModalNotificationActive = () =>\r\n this.setState(prevState => {\r\n return {\r\n isModalActive: !prevState.isModalActive\r\n };\r\n });\r\n\r\n private _renderModal = () => {\r\n const { isModalActive, isModalMessageSuccess, modalMessage } = this.state;\r\n const { requestFailed, requestSuccessFul } = this.props.resources;\r\n return (\r\n \r\n \r\n
\r\n
{isModalMessageSuccess ? requestSuccessFul : requestFailed}
\r\n
\r\n \r\n
\r\n {modalMessage}\r\n \r\n );\r\n };\r\n\r\n private async _handleButtonClick(rowText: string) {\r\n const {\r\n config: { allowMultiSelectForManufacturers },\r\n resources: { priceFilesReportText, salesByMfrReportText, salesByPartReportText }\r\n } = this.props;\r\n const { priceByMfrSelectedMfrCodes, salesByPartSelectedSearchType, singleManufacturerPriceType } = this.state;\r\n if (rowText === priceFilesReportText) {\r\n const mfrCodeListString: string = allowMultiSelectForManufacturers\r\n ? priceByMfrSelectedMfrCodes.join(';')\r\n : singleManufacturerPriceType;\r\n void getPriceByManufacturerAsync({ callerContext: this.props.context.actionContext }, mfrCodeListString).then(res => {\r\n this._setModalMessageAndToggle(res.PriceByManufacturerMessage || '', res.DidPriceByManufacturerComplete);\r\n if (res.DidPriceByManufacturerComplete) {\r\n this._clearSelectedManufacturers(rowText);\r\n }\r\n });\r\n } else if (rowText === salesByPartReportText) {\r\n try {\r\n const salesReportResult = await getSalesReportAsync(\r\n { callerContext: this.props.context.actionContext },\r\n salesByPartSelectedSearchType\r\n );\r\n this._setModalMessageAndToggle(salesReportResult.SalesReportMessage || '', salesReportResult.DidSalesReportComplete);\r\n this.setState({ salesByPartSelectedSearchType: '' });\r\n this._clearSelectedManufacturers(rowText);\r\n // void getSalesReportAsync({ callerContext: this.props.context.actionContext }, salesByPartSelectedSearchType).then(res => {\r\n // this.setState({\r\n // modalMessage: res.SalesReportMessage || '',\r\n // isModalMessageSuccess: res.DidSalesReportComplete\r\n // });\r\n // this._toggleModalNotificationActive();\r\n // this.setState({ salesByPartSelectedSearchType: '' });\r\n // });\r\n } catch (ex) {\r\n this._setModalMessageAndToggle((ex as Error).message, false);\r\n this.setState({ salesByPartSelectedSearchType: '' });\r\n }\r\n } else if (rowText === salesByMfrReportText) {\r\n // api call\r\n this._clearSelectedManufacturers(rowText);\r\n console.log('Request Sales by Manufacturer Report.');\r\n } else {\r\n console.log('Error');\r\n }\r\n }\r\n\r\n private _setModalMessageAndToggle(message: string, messageSuccess: boolean) {\r\n const { requestSuccessfulMessageText, requestFailedMessageText } = this.props.resources;\r\n this.setState({\r\n modalMessage: `${messageSuccess ? requestSuccessfulMessageText : requestFailedMessageText} ${message}`,\r\n isModalMessageSuccess: messageSuccess\r\n });\r\n this._toggleModalNotificationActive();\r\n }\r\n\r\n private _renderRow() {\r\n const {\r\n config: { allowMultiSelectForManufacturers },\r\n resources: { priceFilesReportText, salesByPartReportText, requestReportsBtnText, pleaseSelectDefaultLabel }\r\n } = this.props;\r\n const { salesByPartSelectedSearchType, singleManufacturerPriceType } = this.state;\r\n\r\n const rowTextList = [priceFilesReportText, salesByPartReportText];\r\n return (\r\n
\r\n
    \r\n {rowTextList.map((rowText, i) => (\r\n
  • \r\n {rowText === salesByPartReportText ? (\r\n \r\n ) : rowText === priceFilesReportText && !allowMultiSelectForManufacturers ? (\r\n \r\n ) : (\r\n 0 ? false : true}\r\n dropdown={this._renderManufacturerDropdown(rowText)}\r\n />\r\n )}\r\n
  • \r\n ))}\r\n
\r\n
\r\n );\r\n }\r\n\r\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => {\r\n this.props.config.heading.text = event.target.value;\r\n };\r\n\r\n public render(): JSX.Element | null {\r\n const _className = `eve-reports-export-wrapper`;\r\n const {\r\n config: { className = '', heading }\r\n } = this.props;\r\n const viewProps = {\r\n ...this.props,\r\n moduleProps: {\r\n moduleProps: this.props,\r\n className: classnames(_className, className)\r\n },\r\n className,\r\n AccountOrderTemplatesTile: {\r\n moduleProps: this.props,\r\n className: classnames(`${_className}__heading`, className)\r\n },\r\n heading: heading && heading.text && (\r\n \r\n ),\r\n reportsList: this._renderRow(),\r\n modal: this._renderModal()\r\n };\r\n return this.props.renderView(viewProps);\r\n }\r\n}\r\n\r\nexport default ReportsExport;\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 { Module } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\nimport { IReportsExportViewProps } from './reports-export';\r\n\r\nexport default (props: IReportsExportViewProps) => {\r\n const { heading, reportsList, moduleProps, modal } = props;\r\n return (\r\n \r\n {heading}\r\n {modal}\r\n {reportsList}\r\n \r\n );\r\n};\r\n","export enum SupersessionKey {\r\n SupersededId = 'superseded-from-id',\r\n SupersededName = 'superseded-from-name',\r\n Inventory = 'inventory'\r\n}\r\n","import { IActionContext } from '@msdyn365-commerce/core-internal';\r\nimport { getUrlSync } from '@msdyn365-commerce/core';\r\n\r\nexport default function generateAriModelDetailUrl(modelId: string, brandCode: string, actionContext: IActionContext): string {\r\n const _modelDetailModelIdQueryParamKey = 'modelId';\r\n const _modelDetailBrandCodeQueryParamKey = 'brandCode';\r\n const _modelDetailSlug = 'model';\r\n let url = getUrlSync(_modelDetailSlug, actionContext);\r\n if (url) {\r\n url += `${\r\n url.indexOf('?') > -1 ? '&' : '?'\r\n }${_modelDetailModelIdQueryParamKey}=${modelId}&${_modelDetailBrandCodeQueryParamKey}=${brandCode}`;\r\n }\r\n\r\n return url || '';\r\n}\r\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IAdditionalContentData, ILinksData } from '../content-block.props.autogenerated';\n\n/**\n * IContentBlockAdditionalContentProps: Interface for\n * Content Block Additional Content Component props.\n */\nexport interface IContentBlockAdditionalContentProps {\n requestContext: Msdyn365.IRequestContext;\n additionalContent: IAdditionalContentData[] | undefined;\n handleAdditionalTextChange(index: number, event: Msdyn365.ContentEditableEvent): void;\n handleAdditionalParagraphChange(index: number, event: Msdyn365.ContentEditableEvent): void;\n handleAdditionalLinkTextChange(linkIndex: number, index: number, event: Msdyn365.ContentEditableEvent): void;\n}\n\n/**\n * IContentBlockAdditionalContentProps: Interface for\n * Content Block Additional Content view props.\n */\nexport interface IContentBlockAdditionalContentViewProps {\n additionalContentNode: INodeProps;\n additionalContentItems?: IContentBlockAdditionalContentItemViewProps[];\n}\n\n/**\n * IContentBlockAdditionalContentProps: Interface for\n * Content Block Additional Content Item view props.\n */\nexport interface IContentBlockAdditionalContentItemViewProps {\n heading: React.ReactNode;\n text: React.ReactNode;\n links: React.ReactNode;\n additionalContentItemContainer: INodeProps;\n additionalContentItemLinks: INodeProps;\n}\n\n/**\n * Renders additional content heading.\n * @param additionalContentHeading - Additional content heading.\n * @param props - Content Block Additional content component props.\n * @param itemIndex - Item index.\n * @returns Heading Node.\n */\nconst renderHeading = (additionalContentHeading: string, props: IContentBlockAdditionalContentProps, itemIndex: number) => {\n const requestContext = props.requestContext;\n return (\n {\n props.handleAdditionalTextChange(itemIndex, event);\n },\n requestContext\n }}\n />\n );\n};\n\n/**\n * Renders additional content heading.\n * @param additionalContentParagraphText - Additional content paragraph text.\n * @param props - Content Block Additional content component props.\n * @param itemIndex - Item index.\n * @returns Paragraph Node.\n */\nconst renderParagraph = (additionalContentParagraphText: string, props: IContentBlockAdditionalContentProps, itemIndex: number) => {\n const requestContext = props.requestContext;\n return (\n {\n props.handleAdditionalTextChange(itemIndex, event);\n },\n requestContext\n }}\n />\n );\n};\n\n/**\n * Renders additional content heading.\n * @param ctaLink - Additional content link.\n * @param props - Content Block Additional content component props.\n * @param itemIndex - Item index.\n * @param linkIndex - Additional content link index.\n * @returns Link Node.\n */\nconst renderLinks = (ctaLink: ILinksData, props: IContentBlockAdditionalContentProps, itemIndex: number, linkIndex: number) => {\n const editableLink: Msdyn365.ILinksData = {\n ariaLabel: ctaLink.ariaLabel,\n className: 'ms-content-block__details__additional-content-cta-links',\n linkText: ctaLink.linkText,\n linkUrl: ctaLink.linkUrl.destinationUrl,\n openInNewTab: ctaLink.openInNewTab,\n role: 'link'\n };\n const requestContext = props.requestContext;\n return (\n {\n props.handleAdditionalLinkTextChange(linkIndex, itemIndex, event);\n },\n requestContext\n }}\n />\n );\n};\n\n/**\n * Create node for each additonal content item.\n * @param item - Content block additonal content item props.\n * @param props - Content Block Additional content component props.\n * @param itemIndex - Item index.\n * @returns IContentBlockAdditionalContentItemViewProps.\n */\nconst assembleNode = (\n item: IAdditionalContentData,\n props: IContentBlockAdditionalContentProps,\n itemIndex: number\n): IContentBlockAdditionalContentItemViewProps => {\n const headingNode = item.heading && renderHeading(item.heading, props, itemIndex);\n const paragraphNode = item.subtext && renderParagraph(item.subtext, props, itemIndex);\n const linksNode = item.links?.map((ctaLink: ILinksData, index: number) => {\n return renderLinks(ctaLink, props, itemIndex, index);\n });\n\n return {\n heading: headingNode,\n text: paragraphNode,\n links: linksNode,\n additionalContentItemContainer: { className: 'ms-content-block__details__additional-content__container' },\n additionalContentItemLinks: { className: 'ms-content-block__details__additional-content-cta' }\n };\n};\n\n/**\n * ContentBlockAdditionalContent component.\n * @param props - Content Block Additional content component props.\n * @returns Content Block Additional content view props.\n */\nexport const contentBlockAdditionalContent = (\n props: IContentBlockAdditionalContentProps\n): IContentBlockAdditionalContentViewProps | undefined => {\n const { additionalContent } = props;\n if (!additionalContent) {\n return undefined;\n }\n\n const reactNodes: IContentBlockAdditionalContentItemViewProps[] = [];\n additionalContent.map((item, index: number) => {\n return reactNodes.push(assembleNode(item, props, index));\n });\n\n return {\n additionalContentNode: { className: 'ms-content-block__details__additional-content' },\n additionalContentItems: reactNodes\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 Msdyn365 from '@msdyn365-commerce/core';\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent, onTelemetryClick } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ILinksData } from '../content-block.props.autogenerated';\n\nexport interface IContentCardLinks {\n links: ILinksData[];\n requestContext: Msdyn365.IRequestContext;\n telemetryContent: ITelemetryContent;\n role?: string;\n onTextChange?(index: number): (event: Msdyn365.ContentEditableEvent) => void;\n}\n\n/**\n *\n * ContentCardLinks component.\n * @extends {React.PureComponent}\n */\nexport class ContentCardLinks extends React.PureComponent {\n public render(): JSX.Element {\n const editableLinks = this._mapEditableLinks(this.props.links);\n return (\n
\n {editableLinks && editableLinks.length > 0 ? (\n \n ) : null}\n
\n );\n }\n\n private readonly _mapEditableLinks = (linkdata: ILinksData[]): Msdyn365.ILinksData[] | null => {\n if (!linkdata || linkdata.length === 0) {\n return null;\n }\n const editableLinks: Msdyn365.ILinksData[] = [];\n linkdata.forEach((link, index) => {\n // Construct telemetry attribute to render\n const payLoad = getPayloadObject('click', this.props.telemetryContent, '', '');\n const linkText = link.linkText ? link.linkText : '';\n payLoad.contentAction.etext = linkText;\n const attributes = getTelemetryAttributes(this.props.telemetryContent, payLoad);\n const btnClass = index === 0 ? 'msc-cta__primary' : 'msc-cta__secondary';\n const editableLink: Msdyn365.ILinksData = {\n ariaLabel: link.ariaLabel,\n className: btnClass,\n linkText: link.linkText,\n linkUrl: link.linkUrl.destinationUrl,\n openInNewTab: link.openInNewTab,\n role: this.props.role,\n additionalProperties: attributes,\n onClick: onTelemetryClick(this.props.telemetryContent, payLoad, linkText)\n };\n editableLinks.push(editableLink);\n });\n\n return editableLinks;\n };\n}\nexport default ContentCardLinks;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { getTelemetryObject, IModuleProps, INodeProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { contentBlockAdditionalContent, IContentBlockAdditionalContentViewProps } from './components/additional-content';\nimport LinksComponent from './components/links';\nimport { actionableRegion as region, IContentBlockConfig, IContentBlockProps } from './content-block.props.autogenerated';\n\nexport interface IContentBlockViewProps extends IContentBlockProps<{}> {\n title?: React.ReactNode;\n text?: React.ReactNode;\n image?: React.ReactNode;\n links?: React.ReactNode;\n className?: string;\n contentBlockContainer: IModuleProps;\n imageContainer: INodeProps;\n detailsContainer: INodeProps;\n contentBlockAnchorTag?: INodeProps;\n imageLink?: string;\n imageAriaLabel?: string;\n additionalContent?: IContentBlockAdditionalContentViewProps;\n handleAdditionalText?(): void;\n handleAdditionalParagraph?(): void;\n handleAdditionalLinkTextChange?(): void;\n}\n\n/**\n * Site-builder configuration for the module.\n */\nexport interface IContentBlockFullConfig extends IContentBlockConfig {\n // eslint-disable-next-line @typescript-eslint/naming-convention -- This field comes from SDK.\n msdyn365__moduleLayout?: string;\n}\n\n/**\n * ContentCard component.\n * @extends {React.PureComponent}\n */\nexport class ContentBlock extends React.PureComponent> {\n private readonly telemetryContent: ITelemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n\n public render(): JSX.Element | null {\n const { heading, paragraph, image, links, className, imageAriaLabel } = this.props.config;\n const contentBlockTitle = heading && (\n \n );\n\n const contentBlockLinks = links && ArrayExtensions.hasElements(links) && (\n \n );\n const contentBlockText = paragraph && (\n \n );\n\n let contentBlockImageSettings: Msdyn365.IImageSettings | undefined;\n\n if (image && image.imageSettings && !image.imageSettings.backgroundColor && this.props.config.backgroundColor) {\n contentBlockImageSettings = {\n ...image?.imageSettings,\n backgroundColor: this.props.config.backgroundColor\n };\n } else {\n contentBlockImageSettings = image?.imageSettings;\n }\n\n const imageProps = {\n gridSettings: this.props.context.request.gridSettings ?? {},\n imageSettings: contentBlockImageSettings\n };\n\n const contentBlockImage = (\n \n );\n\n const contentBlockContainerStyle: React.CSSProperties | undefined = this.props.config.backgroundColor\n ? { backgroundColor: this.props.config.backgroundColor }\n : undefined;\n\n if (!contentBlockTitle && !contentBlockText && !contentBlockLinks) {\n this.props.context.telemetry.error('Content block content is empty, module wont render.');\n return null;\n }\n const contentBlockviewProps = {\n ...this.props,\n title: contentBlockTitle,\n text: contentBlockText,\n image: contentBlockImage,\n links: contentBlockLinks,\n moduleClass: this.props.config.className,\n contentBlockContainer: {\n moduleProps: this.props,\n className: classnames('ms-content-block', className),\n style: contentBlockContainerStyle\n },\n imageContainer: { className: 'ms-content-block__image' },\n detailsContainer: { className: 'ms-content-block__details' },\n contentBlockAnchorTag: {\n tag: 'a',\n className: 'ms-content-block__link',\n role: 'link'\n },\n imageLink: this._getImageLink(),\n imageAriaLabel,\n additionalContent: contentBlockAdditionalContent({\n requestContext: this.props.context.request,\n additionalContent: this.props.config.additionalContent,\n handleAdditionalTextChange: this.handleAdditionalTextChange,\n handleAdditionalParagraphChange: this.handleAdditionalParagraphChange,\n handleAdditionalLinkTextChange: this.handleAdditionalLinkTextChange\n }),\n handleAdditionalText: this.handleAdditionalTextChange,\n handleAdditionalParagraph: this.handleAdditionalParagraphChange,\n handleAdditionalLinkTextChange: this.handleAdditionalLinkTextChange\n };\n\n return this.props.renderView(contentBlockviewProps) as React.ReactElement;\n }\n\n /**\n * To handle text change.\n * @param event - To handle text change event.\n * @name - HandleTextChange\n * @public\n * @returns - The Text value.\n */\n public handleTextChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.heading!.text = event.target.value);\n\n /**\n * To handle paragraph change.\n * @param event - To handle text change event.\n * @name - HandleParagraphChange\n * @public\n * @returns - The Paragraph value.\n */\n public handleParagraphChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.paragraph = event.target.value);\n\n /**\n * Handle link text change.\n * @param linkIndex - The link index.\n * @returns - Void.\n */\n public handleLinkTextChange = (linkIndex: number) => (event: Msdyn365.ContentEditableEvent) => {\n if (this.props.config.links && this.props.config.links[Number(linkIndex)]) {\n this.props.config.links[Number(linkIndex)].linkText = event.target.value;\n }\n };\n\n public handleAdditionalTextChange(index: number, event: Msdyn365.ContentEditableEvent): void {\n if (this.props.config.additionalContent) {\n this.props.config.additionalContent[Number(index)].heading = event.target.value;\n }\n }\n\n public handleAdditionalLinkTextChange(linkIndex: number, index: number, event: Msdyn365.ContentEditableEvent): void {\n const additionalContentObject =\n (this.props.config.additionalContent &&\n ArrayExtensions.hasElements(this.props.config.additionalContent) &&\n this.props.config.additionalContent[Number(index)]) ||\n {};\n if (additionalContentObject.links) {\n additionalContentObject.links[Number(linkIndex)].linkText = event.target.value;\n }\n }\n\n public handleAdditionalParagraphChange(index: number, event: Msdyn365.ContentEditableEvent): void {\n if (this.props.config.additionalContent) {\n this.props.config.additionalContent[Number(index)].subtext = event.target.value;\n }\n }\n\n private _getImageLink(): string | null {\n const { imageLink, links, actionableRegion } = this.props.config;\n if (actionableRegion === region.imageAndLinks) {\n if (imageLink?.destinationUrl) {\n return imageLink.destinationUrl;\n } else if (links && ArrayExtensions.hasElements(links) && links[0].linkUrl) {\n return links[0].linkUrl.destinationUrl;\n }\n return null;\n }\n return null;\n }\n}\n\nexport default ContentBlock;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IContentBlockAdditionalContentItemViewProps, IContentBlockAdditionalContentViewProps } from './components/additional-content';\nimport { IContentBlockViewProps } from './content-block';\n\n/**\n * Render Additional Content.\n * @param additionalContent - Additional content view props.\n * @returns JSX Element.\n */\nconst renderAdditionalContent = (additionalContent: IContentBlockAdditionalContentViewProps) => {\n return (\n \n {additionalContent.additionalContentItems?.map((item: IContentBlockAdditionalContentItemViewProps) => {\n return (\n <>\n {item.heading}\n \n {item.text}\n {item.links}\n \n \n );\n })}\n \n );\n};\n\nconst ContentBlockView: React.FC = props => {\n const {\n contentBlockContainer,\n imageContainer,\n detailsContainer,\n title,\n text,\n links,\n image,\n contentBlockAnchorTag,\n imageLink,\n imageAriaLabel,\n additionalContent\n } = props;\n\n if (imageLink) {\n return (\n \n \n {image}\n \n \n {title}\n {text}\n {links}\n {additionalContent && renderAdditionalContent(additionalContent)}\n \n \n );\n }\n return (\n \n {image}\n \n {title}\n {text}\n {links}\n {additionalContent && renderAdditionalContent(additionalContent)}\n \n \n );\n};\n\nexport default ContentBlockView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n IGroup,\n IGroupDelivery,\n IGroups,\n IHeader,\n IList,\n IOrderHistoryViewProps,\n IOrderInformation,\n ISalesOrder\n} from '@msdyn365-commerce-modules/order-management';\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport const OrderHistoryOrderInfomation: React.FC = ({\n orderInformationProps,\n salesId,\n receiptId,\n channelName,\n createdDate,\n count,\n amount,\n channelReferenceId\n}) => (\n \n {channelName}\n {salesId}\n {receiptId}\n {createdDate}\n {count}\n {amount}\n {channelReferenceId}\n \n);\n\nexport const OrderHistoryGroupDelivery: React.FC = ({\n deliveryProps,\n heading,\n count,\n processing,\n address,\n trackingInfo\n}) => (\n \n {heading}\n {count}\n {processing}\n {address}\n {trackingInfo}\n \n);\n\nexport const OrderHistoryGroup: React.FC = ({ groupProps, delivery, salesLinesProps, salesLines }) => (\n \n {salesLines && (\n \n {salesLines.map(salesLine => (\n {salesLine.salesLine}\n ))}\n \n )}\n \n);\n\nexport const OrderHistoryGroups: React.FC = ({ groupsProps, groups }) => (\n \n {groups.map((group, index) => (\n \n ))}\n \n);\n\nexport const OrderHistoryHeader: React.FC = ({ headerProps, heading, orderCountLabel, extraActions }) => (\n \n {heading}\n {orderCountLabel}\n {extraActions}\n \n);\n\nexport const OrderHistorySalesOder: React.FC = ({\n salesOrderProps,\n orderInfomation,\n groups,\n orderDetailsLink,\n expandProductsButton\n}) => (\n \n {orderInfomation && }\n {groups && }\n {expandProductsButton}\n {orderDetailsLink}\n \n);\n\nexport const OrderHistoryList: React.FC = ({ listProps, salesOrders }) => (\n \n {salesOrders && salesOrders.map((salesOrder, index) => )}\n \n);\n\nconst OrderHistoryView: React.FC = ({\n orderHistoryProps,\n header,\n alert,\n loading,\n emptyMessage,\n backToShoppingLink,\n list,\n table,\n moreButton\n}) => (\n \n {header && }\n {loading}\n {alert && (\n <>\n {alert}\n {backToShoppingLink}\n \n )}\n {emptyMessage && (\n \n {emptyMessage}\n {backToShoppingLink}\n \n )}\n {list && }\n {table}\n {moreButton && moreButton}\n \n);\n\nexport default OrderHistoryView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { getRichTextHtml } from '@msdyn365-commerce/core';\nimport * as React from 'react';\n\n/**\n * Product specification table row.\n */\nexport interface IProductSpecificationTableRow {\n productName?: string;\n cellData?: React.ReactNode;\n className?: string;\n}\n\n/**\n * Product specification table row component.\n * @param props - For product specification table row.\n * @param props.productName - Product name.\n * @param props.cellData - Cell data.\n * @param props.className - Class name.\n * @returns - Returns JSX element.\n */\nexport const ProductSpecificationTableRow: React.FC = ({ productName, cellData, className }) => (\n \n \n {/* eslint-disable-next-line react/no-danger */}\n \n \n {cellData}\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 Msdyn365 from '@msdyn365-commerce/core';\nimport { AttributeValue } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { Drawer, IModuleProps, INodeProps, Module } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { reaction } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { validateCatalogId } from '@msdyn365-commerce-modules/retail-actions';\nimport { AttributesForSelectedVariantInput, getAttributesForSelectedVariant } from '../..';\nimport { ProductSpecificationTableRow } from './components/product-specification-table-stucture';\nimport { IProductSpecificationData } from './product-specification.data';\nimport { displayStyle, IProductSpecificationProps } from './product-specification.props.autogenerated';\n\n/**\n * Maintain Drawer State.\n */\nexport interface IProductSpecificationState {\n isDrawerOpen: boolean;\n isAdditionalMediaDrawerOpen: boolean;\n drawerListId: number | undefined;\n}\n\n/**\n * Product specification view props.\n */\nexport interface IProductSpecificationViewProps extends IProductSpecificationProps<{}> {\n ProductSpecification: IModuleProps;\n ProductSpecificationTableProps: INodeProps;\n ProductSpecificationTableBodyProps: INodeProps;\n productSpecificationResult?: (JSX.Element | null)[];\n\n title?: React.ReactNode;\n isAccrodion?: boolean;\n handleText?(event: Msdyn365.ContentEditableEvent): void;\n}\n\n/**\n * Check for display style either accordion or table.\n */\nexport interface IProductSpecificationExtentedProps extends IProductSpecificationProps {\n displayStyle?: displayStyle;\n}\n\n/**\n *\n * ProductSpecification component.\n * @extends {React.Component>}\n */\n@observer\nclass ProductSpecification extends React.Component {\n public constructor(props: IProductSpecificationExtentedProps) {\n super(props);\n this.state = {\n isDrawerOpen: false,\n isAdditionalMediaDrawerOpen: false,\n drawerListId: undefined\n };\n }\n\n public async componentDidMount(): Promise {\n const { context, data, telemetry } = this.props;\n const catalogId = Msdyn365.getCatalogId(this.props.context.request);\n validateCatalogId(catalogId);\n reaction(\n () => (data.product.result ? data.product.result.RecordId : null),\n () => {\n if (context && data.product.result) {\n const actionInput = new AttributesForSelectedVariantInput(\n data.product.result.RecordId,\n\n +context.actionContext.requestContext.apiSettings.channelId,\n data.product.result,\n catalogId\n );\n\n getAttributesForSelectedVariant(actionInput, this.props.context.actionContext).catch((error: Error) => {\n telemetry.error(error.message);\n telemetry.debug('Unable to update attributes for Product');\n telemetry.error(error.message);\n });\n }\n }\n );\n }\n\n public shouldComponentUpdate(nextProps: IProductSpecificationExtentedProps, nextState: IProductSpecificationState): boolean {\n if (this.state === nextState && this.props.data === nextProps.data) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element | null {\n let data: IProductSpecificationData;\n try {\n data = this.props.data;\n } catch (error) {\n this.props.telemetry.error(`Something went wrong ------${error}`);\n return
{error}
;\n }\n\n if (!data.productSpecificationData.result || data.productSpecificationData.result.length <= 0) {\n this.props.telemetry.error('Product specification content is empty, module wont render.');\n return null;\n }\n\n const { heading, className } = this.props.config;\n const { productSpecificationData } = this.props.data;\n const isAccrodion = this.props.config.displayStyle === displayStyle.accordion;\n const viewProps = {\n ...this.props,\n handleText: this.handleHeadingChange,\n ProductSpecification: {\n moduleProps: this.props,\n className: classnames('ms-product-specification', className)\n },\n ProductSpecificationTableProps: isAccrodion\n ? {\n moduleProps: this.props,\n className: classnames('ms-product-specification__accordion', className)\n }\n : {\n className: classnames('ms-product-specification__table table-striped table-bordered'),\n tag: 'table'\n },\n isAccrodion,\n ProductSpecificationTableBodyProps: isAccrodion\n ? {}\n : {\n className: '',\n tag: 'tbody'\n },\n title: heading?.text && (\n \n ),\n productSpecificationResult:\n productSpecificationData.result && (isAccrodion ? this._createDrawerBody(data) : this._createTableBody(data))\n } as IProductSpecificationViewProps;\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n /**\n * Handle Heading Text Change.\n * @param event - Current event.\n */\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent): void => {\n this.props.config.heading!.text = event.target.value;\n };\n\n private _createTableBody(content: IProductSpecificationData): (JSX.Element | null)[] {\n const tableRows = content.productSpecificationData.result!.map((product, index) => {\n const cellData: JSX.Element | null = this._renderProductCell(product);\n\n if (!cellData) {\n return null;\n }\n\n return (\n <>\n \n \n );\n });\n\n if (this.props.context.request.app?.config?.OmniChannelMedia && this.props.data.additionalMediaLocations.result?.length) {\n tableRows.push(this._createAdditionalMediaDrawer());\n }\n\n return tableRows;\n }\n\n private _createDrawerBody(content: IProductSpecificationData): (JSX.Element | null)[] {\n const accordionItemContainer: IModuleProps = {\n moduleProps: this.props,\n className: 'ms-product-specification-title'\n };\n\n const drawers = content.productSpecificationData.result!.map(product => {\n const cellData: JSX.Element | null = this._renderProductCell(product);\n if (!cellData) {\n return null;\n }\n return (\n \n \n
{cellData}
\n \n
\n );\n });\n\n if (this.props.context.request.app?.config?.OmniChannelMedia && this.props.data.additionalMediaLocations.result?.length) {\n drawers.push(this._createAdditionalMediaDrawer());\n }\n\n return drawers;\n }\n private _createAdditionalMediaDrawer(): JSX.Element {\n const accordionItemContainer: IModuleProps = {\n moduleProps: this.props,\n className: 'ms-product-specification-title'\n };\n\n return (\n \n {\n this.setState(prevState => ({\n ...prevState,\n isAdditionalMediaDrawerOpen: !prevState.isAdditionalMediaDrawerOpen\n }));\n }}\n >\n
\n \n
\n \n
\n );\n }\n\n private readonly _toggle = (drawerListId: number | undefined) => (): void => {\n if (this.state.drawerListId !== drawerListId) {\n this.setState({ drawerListId, isDrawerOpen: true });\n } else {\n this.setState({ drawerListId: undefined, isDrawerOpen: false });\n }\n };\n\n private _renderProductCell(product: AttributeValue): JSX.Element | null {\n switch (product.DataTypeValue) {\n case 0: // None\n // Return span here instead of null so the row still shows\n return ;\n case 1: // Currency\n return this._renderCurrencyCell(product);\n case 2: // DateTime\n return this._renderDateTimeCell(product);\n case 3: // Decimal\n return this._renderDecimalCell(product);\n case 4: // Integer\n return this._renderIntegerCell(product);\n case 5: // Text\n return this._renderTextCell(product);\n case 6: // TrueFalse\n return this._renderTrueFalseCell(product);\n case 40: // Video\n this.props.telemetry.warning('Got video specification type, not supported yet so skipping line');\n return null;\n case 41: // Image\n this.props.telemetry.warning('Got image specification type, not supported yet so skipping line');\n return null;\n default:\n this.props.telemetry.warning(`Got unknown specification type ${product.DataTypeValue} so skipping line`);\n return null;\n }\n }\n\n private _renderCurrencyCell(product: AttributeValue): JSX.Element | null {\n if (product.CurrencyValue !== null && product.CurrencyValue !== undefined) {\n return (\n \n {product.CurrencyCode}\n {product.CurrencyValue}\n \n );\n }\n\n return null;\n }\n\n private _renderDateTimeCell(product: AttributeValue): JSX.Element | null {\n if (product.DateTimeOffsetValue?.toUTCString) {\n return {product.DateTimeOffsetValue.toUTCString()};\n }\n\n return null;\n }\n\n private _renderIntegerCell(product: AttributeValue): JSX.Element | null {\n if (product.IntegerValue !== null && product.IntegerValue !== undefined) {\n return {product.IntegerValue};\n }\n\n return null;\n }\n\n private _renderDecimalCell(product: AttributeValue): JSX.Element | null {\n if (product.FloatValue !== null && product.FloatValue !== undefined) {\n return {product.FloatValue};\n }\n\n return null;\n }\n\n private _renderTextCell(product: AttributeValue): JSX.Element | null {\n if (product.TextValue !== null && product.TextValue !== undefined) {\n // eslint-disable-next-line react/no-danger\n return ;\n }\n\n return null;\n }\n\n private _renderTrueFalseCell(product: AttributeValue): JSX.Element | null {\n // TODO 20369885 setting to default value is needed to work around a platform bug where\n // config string value does not get its default value.\n if (product.BooleanValue) {\n return {this.props.resources.trueValueText ? this.props.resources.trueValueText : 'Yes'};\n }\n return {this.props.resources.falseValueText ? this.props.resources.falseValueText : 'No'};\n }\n}\n\nexport default ProductSpecification;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ArrayExtensions, ObjectExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IProductSpecificationViewProps } from './product-specification';\n\nconst ProductSpecificationView: React.FC = props => {\n const { ProductSpecification, ProductSpecificationTableProps, ProductSpecificationTableBodyProps, productSpecificationResult } = props;\n const rowdata =\n productSpecificationResult &&\n ArrayExtensions.hasElements(productSpecificationResult) &&\n productSpecificationResult.filter(row => !ObjectExtensions.isNullOrUndefined(row));\n\n return rowdata && ArrayExtensions.hasElements(rowdata) ? (\n \n {props.title}\n \n {rowdata}\n \n \n ) : null;\n};\n\nexport default ProductSpecificationView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { IModuleProps, INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { ISocialShareConfig, ISocialShareProps, orientation } from './social-share.props.autogenerated';\n\nexport interface ISocialShareViewProps extends ISocialShareProps {\n isConsentGiven: boolean;\n SocialShareItemElements: React.ReactNode[];\n SocialShare: IModuleProps;\n SocialShareList: INodeProps;\n SocialShareItem: INodeProps;\n SocialShareItemCustomization: INodeProps;\n}\n\n/**\n *\n * SocialShare component.\n * @extends {React.PureComponent>}\n */\nclass SocialShare extends React.PureComponent> {\n constructor(props: ISocialShareProps) {\n super(props);\n }\n\n public render(): JSX.Element | null {\n const { slots } = this.props;\n\n if (!slots || !ArrayExtensions.hasElements(slots.socialShareItems)) {\n this.props.context.telemetry.error('No social media is enable for sharing, module wont render');\n return null;\n }\n\n const isConsentGiven =\n this.props.context.request &&\n this.props.context.request.cookies &&\n this.props.context.request.cookies.isConsentGiven &&\n this.props.context.request.cookies.isConsentGiven();\n\n if (!isConsentGiven && !this.props.context.request.params.isEditor) {\n return null;\n }\n\n const viewprops = {\n ...this.props,\n SocialShare: {\n moduleProps: this.props,\n className: classnames('ms-social-share', this.props.config.className)\n },\n SocialShareList: {\n 'data-title': this.props.config.caption,\n className: `ms-social-share-ul ${this.props.config.caption && 'caption'} ${\n this.props.config.orientation === orientation.vertical ? 'vertical' : ''\n }`,\n tag: 'ul',\n role: 'group'\n },\n SocialShareItem: {\n className: 'ms-social-share-li',\n tag: 'li',\n tabIndex: '0',\n role: 'link'\n },\n SocialShareItemElements: slots && slots.socialShareItems.length > 0 && slots.socialShareItems\n };\n\n return this.props.renderView(viewprops) as React.ReactElement;\n }\n}\n\nexport default SocialShare;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport React, { ReactNode } from 'react';\n\nimport { ISocialShareViewProps } from './social-share';\n\nexport const SocialShareView: React.FC = props => {\n const { SocialShareList, SocialShareItemElements, SocialShareItem, SocialShare } = props;\n if (SocialShareItemElements.length === 0) {\n props.context.telemetry.error('Social media list is empty, module wont render');\n return null;\n }\n return (\n \n \n {SocialShareItemElements.map((SocialShareElement: ReactNode, index: number) => {\n return (\n \n {SocialShareElement}\n \n );\n })}\n \n \n );\n};\n\nexport default SocialShareView;\n"],"names":["UncontrolledPagination","React","constructor","props","super","this","maxPages","items","Math","ceil","itemsPerPage","qsps","splitUrl","url","split","parsedQsps","qsp","qspPair","render","_this$props","className","baseUrl","startingItem","previousText","nextText","previousAriaLabel","nextAriaLabel","listClassName","cssModule","children","size","tag","Tag","listTag","ListTag","label","role","_objectWithoutProperties","_excluded","activeQsp","paginationClasses","mapToCssModules","classNames","listpaginationClasses","Object","assign","_generatePageLinks","_generatePaginationArrow","next","disable","tooltipId","nextId","prevId","ariaDescribedBy","nextAreaDescribed","prevAreaDescribed","placement","PaginationItem","disabled","PaginationLink","id","previous","onClick","onPageChange","page","UncontrolledTooltip","target","_generatePaginationItem","active","_generateEllipse","leftDistance","rightDistance","leftEllipse","pagesDisplayed","rightEllipse","min","pages","displayedPagesOnLeft","startingIndex","max","endIndex","push","i","defaultProps","AriSearchResults","_queryResultSettings$","_this$props$data$ariR","_this$props$data$ariR2","_renderPrev","paginationPreviousText","_renderNext","paginationNextText","queryResultSettings","QueryResultSettingsProxy","fromInputData","context","actionContext","QueryResultSettings","Paging","Skip","config","state","models","data","ariResults","result","ariSearchResults","Models","totalCount","TotalCount","handlePaginationPageChange","bind","then","results","setState","getModelDetailPageUrl","modelId","brandCode","generateAriModelDetailUrl","updateModelResults","_this$props$context$r","isRefineEnabled","expandResults","top","Top","searchTerm","request","query","q","apiSettings","pageType","urlTokens","categoryId","searchModelInput","SearchModelsInput","searchModelsAction","getModelTable","modelsList","length","modelsListWithPageLinks","map","model","_objectSpread","detailPageUrl","Id","toString","BrandCode","modelHeading","manufacturerHeading","tableHeading","descriptionHeading","resources","ariSearchResultTableResources","AriSearchResultTableComponent","searchResults","pageNumber","generateUrlForPagination","requestUrl","renderPagination","paginationAriaLabel","Pagination","viewProps","modelTable","pagination","renderView","outerWidth","setOuterWidth","window","removeEventListener","addEventListener","passive","Table","colSpan","key","href","Name","Description","ListGroup","ListGroupItem","ListGroupItemHeading","ListGroupItemText","BackOrderList","BackOrderList_1","_this$props$data$back","_this$props$data$back2","_this$props$data$back3","_this$props$data$back4","_this$props$data$back5","numItemsToDisplay","backOrderItemsPerPage","defaultBackOrderItemsPerPage","_renderSortingType","sortingSelectLabelText","name","value","selectedSort","onChange","handleSortingTypeChange","defaultSortingSelectOption","availableSortOptions","sortOptions","backOrders","backOrderResults","backOrderData","BackOrderLines","RecordCount","AvailableSortOptions","sortOrder","SortOrder","SelectedSort","loading","setBackOrderListResults","updateBackOrderResults","toggleSortOrder","componentDidMount","reaction","_this$props$data$back6","backOrderListResponse","async","skip","res","getBackOrderListAsync","callerContext","backOrderListTitleText","backOrderListItemsText","orderNumberHeadingText","poNumberHeadingText","mfrHeadingText","partNumberHeadingText","deliveryTypeHeadingText","qtyHeadingText","totalHeadingText","noBackOrdersMessageText","loadingMessageText","estShipDateHeadingText","backOrdersListResources","BackOrderTableComponent","backOrderEtaBuffer","ctx","sortingDropdown","sortOrderButton","renderSortOrderButton","currencyFormatter","cultureFormatter","formatCurrency","e","__decorate","observer","handleResize","format","order","index","_order$ShippingDate","_order$ShippingDate2","deliveryType","DeliveryType","shipDateString","ShippingDate","startIndex","indexOf","parseFloat","substring","estShipDateRes","Date","setDate","getDate","openOrderDetailsUrl","getUrlSync","orderDetailsRedirectUrl","includes","SalesId","PurchaseOrderNumber","ManufacturerNumber","ItemId","Quantity","Total","formatDate","_order$ShippingDate3","_order$ShippingDate4","date","bufferInDays","undefined","defaultDate","getFullYear","getMonth","setTime","getTime","getTimezoneOffset","year","month","day","CourseTableComponent","courseList","cart","additionalInfo","viewState","setLoading","courseListHeading","courseListResultsHeading","courseNameHeading","courseDateHeading","courseRegistrationDetailsHeading","courseAddToCartHeading","addToCartButtonLabel","startLabel","endLabel","registrationEndsLabel","maximumAttendeesLabel","currentAttendeesLabel","courseExpiredMessage","courseFullMessage","errMessage","setErrMessage","fmt","timeZoneName","second","hour","minute","_handleAddToCart","cartId","addCourseToCartAsync","refreshCart","textContent","isLoading","Msdyn365","text","c","RecId","HRMCourseId","GDNCourseFee","StartDateTime","toLocaleString","EndDateTime","LastDateOfSignup","MaxAttendees","CurrentAttendees","CourseStatus","EducationTraining","_this$props$data$cour","_this$props$data$cour2","courses","courseResults","courseResponse","Courses","setCourseResults","setCartState","_this$props$data$cour3","_this$props$data$cart","prevState","getCourseDataAsync","educationTrainingResources","channelId","EveQuickOrderRow","onDelete","quantity","onRowChange","product","isLastRow","onAddRows","manufacturerCodes","defaultManufacturerCodeText","productEligibilityText","supersededProductText","rowError","manufacturerCode","advancedNotes","yourPrice","addRows","isToolTipOpen","setIsToolTipOpen","toggleTooltip","removeSpacesFromItemId","itemId","replace","code","GDNManufacturerCode","type","onFocus","autoComplete","_product$ExtensionPro","matchingNotes","filter","note","supersessionName","ExtensionProperties","find","ep","Key","SupersessionKey","SupersededName","Value","StringValue","notes","validNotes","TextValue","trim","Tooltip","isOpen","toggle","mapNotes","RowError","InvalidQuantity","ProductNotFound","MultipleChoicesAvailable","NotEligbile","Unavailable","getRowStatusMessage","AdjustedPrice","_product$ExtensionPro2","Inventory","handleRowDelete","xmlns","width","height","fill","viewBox","d","fillRule","getAvailability","EveQuickOrderButtonRow","clearAllText","addAllToCartText","canAddToCart","handleClearAll","handleAddToCart","EveQuickOrderHeader","heading","helpText","PriceForProductSearchResultInput","products","getCacheKey","JSON","stringify","getCacheObjectType","dataCacheType","getPriceForProductSearchResultAction","input","productRecIds","ArrayExtensions","hasElements","Promise","resolve","RecordId","catalogId","getCatalogId","requestContext","projectDomain","ChannelId","CatalogId","productPrices","ProductsDataActions","getPagingFromInputDataOrDefaultValue","productResults","activePrice","price","ProductId","_activePrice$Customer","_activePrice$BasePric","_activePrice$TradeAgr","_activePrice$Adjusted","Price","CustomerContextualPrice","BasePrice","TradeAgreementPrice","error","telemetry","exception","debug","Error","createObservableDataAction","action","EveQuickOrder","_defaultMinQueryLength","_manufacturerCodeExtensionPropertyKey","getProductSupersessionProperty","extensionKey","properties","_properties$find","pr","_getManufacturerCodeList","row","hiddenManufacturerCodes","availableProducts","availableCodes","p","_getManufacturerCodeForRow","_getExtensionPropertyValueByKey","valueType","_properties$find2","property","handleGuideTextChange","event","orderUploadGuideText","_handleRowDelete","_generateRow","_renderTable","_updateRowValue","_addTwoRows","_handleUploadedItems","_tableInit","_handleSelectedProductChange","rows","debounce","_initDebounceFn","prices","hasUpdated","updatedRows","Set","shouldRowUpdate","uploadedItems","defaultRows","_generateEmptyRow","_debounce","_rows$idx","idx","findIndex","previousManufacturerCode","cleanedSearchText","_stripManufacturerFromSearchText","searchText","responseData","getProductSearchResult","Products","_responseData$0$Produ","getAdvancedNotesAsync","_updateRowProduct","add","_updateRowErrorState","combinedProducts","None","reduce","acc","cur","_ref","_cur$product","parseInt","cartState","count","scrollTo","addProductsToCart","itemIds","response","getProductsByManufacturerItemIdAsync","list","inventoryRanges","_cart$result","_eligibilityData$resu","newItemIds","forEach","r","_r$Products","GetProductEligibilityInput","eligibilityData","GetProductEligibilityAction","getInventoryLevelRangesAsync","_eligibilityData$resu2","all","CommercePropertyValueEnum","string","String","IsEligible","IsAssorted","_pr$Products","_inventoryRanges","eligibilityRecord","l","IsUnavailable","currentInvString","currentInventory","ir","_ir$Profile","tempInvRange","Profile","invP","Code","OosUpperBound","hasOwnProperty","UpperBoundInclusive","_renderHeading","clearFormText","title","_getAllAddedProducts","_renderButtonRow","_this$props$data$cart2","addMoreRowsText","courseInCartText","invoiceInCartText","courseId","hasInvoiceLine","cartlines","CartLines","isRowError","_row$product","isLast","defaultDropdownText","deleteText","deleteHeading","matchingProduct","_row$product2","onSelectedProductChange","productId","itemids","it","manufacturer","part_number","chunks","chunk","slice","promises","promiseResult","rowId","responseMatch","_it$manufacturer","_it$part_number","_r$SearchText","partNum","toLowerCase","partNumWithMfr","SearchText","foundProduct","qty","rowData","_generateRowData","unshift","_this$props$config$hi","RegExp","prod","every","manufacturerCodeTableHeading","partNumberTableHeading","quantityTableHeading","itemNameHeading","priceHeading","availabilityHeading","splice","newRowId","Number","_row$product3","_row$product4","maxQuantity","isNaN","partNumberPrefix","toUpperCase","_getProductByRowQuery","_getProductManufacturerById","mfrCode","_product","minQueryLength","textToSearch","Array","from","Map","_row$product5","values","console","updatedRowIds","updatedProducts","_row$product6","guideText","editProps","onEdit","getProductPrices","getUpdatedProductPrice","handleUploadedItems","quickOrderTable","quickOrderHeader","quickOrderWrapper","moduleProps","orderUploadWrapper","onUploadItems","slots","orderUpload","Module","Node","_renderGuide","orderUploadHelpLink","orderUploadHelpLinkDisplayText","ariaLabel","linkUrl","destinationUrl","InvoiceDetailsHeaderComponent","msdyn365Commerce","createComponent","component","_gdnInvoiceDetails$In","_gdnInvoiceDetails$In2","_gdnInvoiceDetails$In3","_gdnInvoiceDetails$In4","_gdnInvoiceDetails$In5","_gdnInvoiceDetails$In6","_gdnInvoiceDetails$In7","_gdnInvoiceDetails$In8","_gdnInvoiceDetails$In9","_gdnInvoiceDetails$In10","_gdnInvoiceDetails$In11","_gdnInvoiceDetails$In12","gdnInvoiceDetails","custNumberLabel","salesOrderNumLabel","purchaseOrderNumLabel","shipToLabel","shipViaLabel","invoiceDateLabel","orderDateLabel","invoiceNumberText","invoiceIdLabel","InvoiceDetails","InvoiceNumber","invoiceInfoContainerClassName","orderInfoContainerClassName","orderInfoClassName","orderMainInfoClassName","actionsClassName","amountSummaryClassName","invoiceDate","formatShortDate","InvoiceDate","orderDate","OrderDate","CustomerAccount","SalesOrderNumber","PoNumber","DeliveryAddress","DeliveryLocation","InvoiceLocation","InvoiceAddress","ShipVia","print","InvoiceDetailsPaymentDetailsComponent","currencyCode","detachText","billToSummaryLabel","invoiceSummaryLabel","orderSummaryLabel","totalPiecesSummaryLabel","termsSummaryLabel","invoicePaymentInvoiceTotal","invoiceAmountDueText","invoicePaymentDueDateText","invoiceDetails","lineClassName","lines","ObjectExtensions","isNullOrUndefined","SubTotal","invoicePaymentSubtotal","Tax","invoicePaymentTax","line","classnames","BillToAccount","TotalPieces","formatAmount","InvoiceAmount","Terms","AmountDue","DueDate","InvoiceDetailsProductsTableComponent","invoiceLines","itemIdHeading","quantityHeading","listPriceHeading","unitPriceHeading","totalHeading","custItemNumLabel","freightList","FreightList","combinedFreightList","reducedFreightList","fl","FreightAmount","FreightCode","FreightDescription","prototype","call","details","productUrl","getProductPageUrlSync","LineNum","ItemNumber","CustItemNumber","ListPrice","UnitPrice","newDate","toUTCString","amount","errorState","errorMessage","otherError","_this$state$gdnInvoic","header","_renderHeader","_renderProducts","paymentDetails","_renderPaymentDetails","shipmentDetails","_renderShipmentInformation","invoiceDetailsError","ErrorMessage","_className","noInvoiceDetailsFoundErrorMessage","typeName","productsTableResources","InvoiceLineDetails","shippingInformationHeadingText","containerIdLabelText","weightLabelText","shippingCarrierLabelText","trackingLabel","shippingInformation","ShippingContainerInformation","_c$ContainerLinesList","ContainerId","Weight","ShippingCarrier","TrackingNumber","ContainerLinesList","cLines","InvoiceDetailsView","AriPartsListTableComponent","tableHeadings","parts","baseClassName","goToId","addPartToCart","partIdPrefix","selectedRow","isAuthenticated","requiresAuthentication","loginToViewPricingText","signInUrl","isMobile","isDrawerOpen","unavailableText","addToCartText","closePartDrawer","priceFormatter","yPosition","setYPosition","pageYOffset","selectedPartIdName","part","_part$Product6","PartId","Sku","Product","Qty","defaultValue","th","_part$Product","_part$Product2","_part$Product3","_part$Product4","_part$Product5","partId","description","getExtensionPropertyValueByKey","oosUpperBound","oosUpperBoundLimit","isEligible","element","document","getElementById","getBoundingClientRect","scrollDownClickHandler","RenderCard","rowText","buttonText","isButtonDisabled","dropdown","ReportsExport","_getPartList","PartNo","_toggleModalNotificationActive","isModalActive","_renderModal","isModalMessageSuccess","modalMessage","requestFailed","requestSuccessFul","Modal","ModalHeader","ModalBody","handleHeadingChange","_setManufacturerCodeState","_setSalesByPartSearchTypeState","_setSingleManufacturerPriceTypeState","_handleButtonClick","priceByMfrSelectedMfrMultiSelect","priceByMfrSelectedMfrCodes","salesByMfrSelectedMfrMultiSelect","salesByMfrSelectedMfrCodes","salesByPartSelectedPartMultiSelect","salesByPartSelectedPartCodes","salesByPartSelectedSearchType","singleManufacturerPriceType","selectedMfrCodes","reportIdentifier","priceFilesReportText","salesByMfrReportText","salesByPartReportText","newSelectedMfrCodeList","_clearSelectedManufacturers","priceSelectElement","selectedIndex","salesSelectElement","_renderRow","_setMultiSelectRendering","selected","numOfSelectedManufacturers","noSelectedManufacturers","selectedString","_renderSalesDropdown","organizationDropdownLabel","locationDropdownLabel","pleaseSelectDefaultLabel","searchTypeList","searchType","_renderManufacturerDropdown","allowMultiSelectForManufacturers","allowSelectAllManufacturers","selectManufacturersLabel","numOfSelectedParts","noSelectedParts","selectPartsLabel","options","noneSelectedLabel","numOfSelectedLabel","selectLabel","mfrCodeList","optionRow","partList","MultiSelect","_getMultiSelectValue","selectedCodes","labelledBy","disableSearch","hasSelectAll","valueRenderer","hidden","mfr","mfrCodeListString","join","getPriceByManufacturerAsync","_setModalMessageAndToggle","PriceByManufacturerMessage","DidPriceByManufacturerComplete","salesReportResult","getSalesReportAsync","SalesReportMessage","DidSalesReportComplete","ex","message","log","messageSuccess","requestSuccessfulMessageText","requestFailedMessageText","requestReportsBtnText","rowTextList","AccountOrderTemplatesTile","reportsList","modal","assembleNode","item","itemIndex","_item$links","headingNode","renderHeading","additionalContentHeading","handleAdditionalTextChange","paragraphNode","subtext","renderParagraph","additionalContentParagraphText","linksNode","links","ctaLink","renderLinks","linkIndex","editableLink","linkText","openInNewTab","link","onTextChange","handleAdditionalLinkTextChange","additionalContentItemContainer","additionalContentItemLinks","contentBlockAdditionalContent","additionalContent","reactNodes","additionalContentNode","additionalContentItems","ContentCardLinks","_mapEditableLinks","linkdata","editableLinks","payLoad","getPayloadObject","telemetryContent","contentAction","etext","attributes","getTelemetryAttributes","btnClass","additionalProperties","onTelemetryClick","ContentBlock","getTelemetryObject","telemetryPageName","friendlyName","handleTextChange","handleParagraphChange","paragraph","handleLinkTextChange","_heading$tag","_this$props$config$im","image","imageAriaLabel","contentBlockTitle","contentBlockLinks","LinksComponent","msdyn365__moduleLayout","contentBlockText","contentBlockImageSettings","imageSettings","backgroundColor","imageProps","gridSettings","contentBlockImage","preserveImageSpace","moduleType","imagePropertyName","moduleId","layout","shouldSkipToMainImage","contentBlockContainerStyle","contentBlockviewProps","moduleClass","contentBlockContainer","style","imageContainer","detailsContainer","contentBlockAnchorTag","imageLink","_getImageLink","handleAdditionalParagraphChange","handleAdditionalText","handleAdditionalParagraph","additionalContentObject","actionableRegion","renderAdditionalContent","_additionalContent$ad","OrderHistoryOrderInfomation","orderInformationProps","salesId","receiptId","channelName","createdDate","channelReferenceId","OrderHistoryGroupDelivery","_ref2","deliveryProps","processing","address","trackingInfo","OrderHistoryGroup","_ref3","groupProps","delivery","salesLinesProps","salesLines","salesLine","LineId","OrderHistoryGroups","_ref4","groupsProps","groups","group","OrderHistoryHeader","_ref5","headerProps","orderCountLabel","extraActions","OrderHistorySalesOder","_ref6","salesOrderProps","orderInfomation","orderDetailsLink","expandProductsButton","OrderHistoryList","_ref7","listProps","salesOrders","salesOrder","_ref8","orderHistoryProps","alert","emptyMessage","backToShoppingLink","table","moreButton","ProductSpecificationTableRow","productName","cellData","scope","dangerouslySetInnerHTML","getRichTextHtml","ProductSpecification","_toggle","drawerListId","isAdditionalMediaDrawerOpen","validateCatalogId","actionInput","AttributesForSelectedVariantInput","getAttributesForSelectedVariant","catch","shouldComponentUpdate","nextProps","nextState","productSpecificationData","isAccrodion","displayStyle","handleText","ProductSpecificationTableProps","ProductSpecificationTableBodyProps","productSpecificationResult","_createDrawerBody","_createTableBody","content","_this$props$data$addi","tableRows","_renderProductCell","app","OmniChannelMedia","additionalMediaLocations","_createAdditionalMediaDrawer","_this$props$context$r2","_this$props$data$addi2","accordionItemContainer","drawers","_product$Name","Drawer","collapseProps","timeout","openGlyph","closeGlyph","glyphPlacement","toggleButtonText","onToggle","additionalDownloadsText","mediaLocation","Uri","download","AltText","DataTypeValue","_renderCurrencyCell","_renderDateTimeCell","_renderDecimalCell","_renderIntegerCell","_renderTextCell","_renderTrueFalseCell","warning","CurrencyValue","CurrencyCode","_product$DateTimeOffs","DateTimeOffsetValue","IntegerValue","FloatValue","BooleanValue","trueValueText","falseValueText","rowdata","SocialShare","socialShareItems","cookies","isConsentGiven","params","isEditor","viewprops","SocialShareList","caption","orientation","SocialShareItem","tabIndex","SocialShareItemElements","SocialShareView","SocialShareElement"],"sourceRoot":""}