@pmcretail/mapper-library 0.0.44 → 0.0.46
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +24 -24
- package/bundles/pmcretail-mapper-library.umd.js +4373 -4105
- package/bundles/pmcretail-mapper-library.umd.js.map +1 -1
- package/esm2015/lib/RJ-mapper.class.js +877 -875
- package/esm2015/lib/TransactionDocumentBuilder.js +1244 -1240
- package/esm2015/lib/WebReturn-mapper.class.js +326 -324
- package/esm2015/lib/WebReturnMagentoV2Rest.class.js +262 -0
- package/esm2015/lib/WebReturnSalesforceMapper.class.js +409 -410
- package/esm2015/lib/basket.service.js +527 -516
- package/esm2015/lib/mapper-library.component.js +26 -26
- package/esm2015/lib/mapper-library.model.js +40 -39
- package/esm2015/lib/mapper-library.module.js +21 -21
- package/esm2015/lib/number-util.service.js +42 -40
- package/esm2015/pmcretail-mapper-library.js +4 -4
- package/esm2015/public-api.js +10 -9
- package/fesm2015/pmcretail-mapper-library.js +3733 -3458
- package/fesm2015/pmcretail-mapper-library.js.map +1 -1
- package/lib/RJ-mapper.class.d.ts +80 -79
- package/lib/RJ-mapper.class.d.ts.map +1 -1
- package/lib/TransactionDocumentBuilder.d.ts +271 -270
- package/lib/TransactionDocumentBuilder.d.ts.map +1 -1
- package/lib/WebReturn-mapper.class.d.ts +27 -26
- package/lib/WebReturn-mapper.class.d.ts.map +1 -1
- package/lib/WebReturnMagentoV2Rest.class.d.ts +29 -0
- package/lib/WebReturnMagentoV2Rest.class.d.ts.map +1 -0
- package/lib/WebReturnSalesforceMapper.class.d.ts +35 -34
- package/lib/WebReturnSalesforceMapper.class.d.ts.map +1 -1
- package/lib/basket.service.d.ts +105 -104
- package/lib/basket.service.d.ts.map +1 -1
- package/lib/mapper-library.component.d.ts +8 -8
- package/lib/mapper-library.model.d.ts +694 -693
- package/lib/mapper-library.model.d.ts.map +1 -1
- package/lib/mapper-library.module.d.ts +7 -7
- package/lib/number-util.service.d.ts +13 -12
- package/lib/number-util.service.d.ts.map +1 -1
- package/package.json +2 -2
- package/pmcretail-mapper-library.d.ts +5 -5
- package/public-api.d.ts +6 -5
- package/public-api.d.ts.map +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pmcretail-mapper-library.umd.js","sources":["../../../projects/mapper-library/src/lib/mapper-library.component.ts","../../../projects/mapper-library/src/lib/mapper-library.module.ts","../../../projects/mapper-library/src/lib/mapper-library.model.ts","../../../node_modules/tslib/tslib.es6.mjs","../../../projects/mapper-library/src/lib/basket.service.ts","../../../projects/mapper-library/src/lib/number-util.service.ts","../../../projects/mapper-library/src/lib/TransactionDocumentBuilder.ts","../../../projects/mapper-library/src/lib/RJ-mapper.class.ts","../../../projects/mapper-library/src/lib/WebReturn-mapper.class.ts","../../../projects/mapper-library/src/lib/WebReturnSalesforceMapper.class.ts","../../../projects/mapper-library/src/public-api.ts","../../../projects/mapper-library/src/pmcretail-mapper-library.ts"],"sourcesContent":["import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'lib-mapper-library',\n template: `\n <p>\n mapper-library works!\n </p>\n `,\n styles: [\n ]\n})\nexport class MapperLibraryComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit(): void {\n }\n\n}\n","import { NgModule } from '@angular/core';\nimport { MapperLibraryComponent } from './mapper-library.component';\n\n\n\n@NgModule({\n declarations: [\n MapperLibraryComponent\n ],\n imports: [\n ],\n exports: [\n MapperLibraryComponent\n ]\n})\nexport class MapperLibraryModule { }\n","\n\nexport enum TRANSACTION_TYPE {\n SALE = \"SALE\",\n REFUND = \"REFUND\",\n SALE_REFUND = \"SALE_REFUND\",\n SALE_EXCHANGE = \"SALE_EXCHANGE\",\n VOID = \"VOID\",\n WEB_RETURNS = \"WEB_RETURNS\"\n}\n\nexport interface ItemDiscount {\n trnDiscountsPortion: number;\n trnPromotionsPortion: number;\n refundPortion: number;\n currentRefundPortion?: number;\n}\n\nexport enum DELIVERY_METHODS {\n DELIVERY = 1,\n DROP_SHIP = 2,\n COLLECT_FROM_STORE = 3,\n SHIP_TO_STORE = 4\n}\n\nexport interface ProductChange {\n itemLineId?: number;\n SKU: string;\n quantity: number;\n selectedPrice?: number;\n lineDiscount?: LineDiscount;\n linePromotions?: LinePromotions;\n exchange?: Exchange;\n refundedQuantity?: number; // contains quantity of both full priced and promotional quantities\n refundPromotionalQuantity?: number; // promotional quantity\n refunded?: boolean;\n refundedTotal?: number;\n refundedReason?: string;\n refundedReasonDescription?: string;\n isChecked?: boolean;\n sealed?: boolean;\n isLastExchanged?: boolean;\n}\n\n/**\n * Product\n */\nexport interface Product extends ProductChange {\n itemLineId?: number;\n status: number;\n subGroup: number;\n brand: string;\n currency: string;\n category: string;\n countryofOrigin: string;\n productId: string;\n productType: number;\n name?: string;\n imageUrls: [string];\n isImageFailToLoad?: boolean;\n size: string;\n type: string;\n season: number;\n productGroup: number;\n styleCode: string;\n nodeStructure: NodeStructure[];\n barcode: string;\n price: Price[];\n colour: string;\n description: string;\n totalLinePrice: number;\n total: number;\n addedInBasket?: boolean;\n selectedVAT?: number;\n selectedVATCode?: string;\n selectedRRPPrice?: number;\n lineDiscount?: LineDiscount;\n exchange?: Exchange;\n // refundedQuantity?: number;\n // refunded?: boolean;\n // refundedTotal?: number;\n // refundedReasonDescription?:string;\n // isChecked?:boolean;\n refundPromotionalQuantity?: number; // promotional quantity\n exchangeReason?: string;\n exchangeQuantity?: number;\n itemDiscounts: ItemDiscount;\n\n giftCardNumberIssued?: string;\n giftCardAmount?: number;\n giftCardRecipientEmail?: string;\n giftCardExpiryDate?: string;\n giftCardRecipientName?: string;\n giftCard?: boolean;\n\n discountable: boolean;\n // sealed?:boolean;\n excludePromotion: boolean;\n categories: Categories[];\n descriptions: Descriptions[];\n barcodes: string[];\n\n //New Feilds\n externalId: string;\n createdDate: string;\n updatedDate: string;\n createdBy: string;\n updatedBy: string;\n attributes: CoreAttribute[];\n id: string;\n long_description: string;\n\n // Mixed Sales fields\n isWebOrder?: boolean,\n fullfilmentId: string,\n fullfilmentLocationName?: string,\n deliveryMethod?: string,\n deliveryGroup?: string,\n selectedInventory?: InventoryInfo;\n leadTime?: leadTime\n}\nexport interface leadTime {\n type: string,\n value: string\n}\n\nexport interface Exchange {\n exchangeId: number,\n lineItemId: number,\n reason: string,\n quantity: number,\n newItems: Product[];\n}\n\nexport interface Categories {\n id: string;\n parentId: string;\n name: string;\n categoryId: string;\n status: boolean;\n}\n\nexport interface Descriptions {\n name: string;\n countryCode: string;\n value: string;\n}\n\nexport interface CoreAttribute {\n name: string;\n value: string;\n searchable: boolean;\n countryCode: string;\n}\n\n/**\n * Basket\n */\n\nexport interface Basket {\n subsidiaryId?: string;\n products: Product[];\n transactionDiscount: any[];\n quantity: number;\n total: number;\n saleTotal: number;\n discountTotal?: number;\n transactionId?: string;\n offlineTransactionId?: string;\n baseCurrency: string;\n basketTotal?: number;\n refundTotal?: number;\n transactionPromotion?: TransactionPromotion[];\n customer?: any;\n exchange?: Exchange[];\n inStoreFlag?: boolean\n}\n\n\n\n/**\n * Price\n */\nexport interface Price {\n VAT: number;\n VATCode: string;\n salesPrice: number;\n currencyCode: string;\n RRPPrice: number;\n}\n\n/**\n * Node structure\n */\ninterface NodeStructure {\n status: boolean;\n name: string;\n nodeType: string;\n isOverride: boolean;\n nodeId: string;\n parentId: string;\n}\n\n/**\n * Line Discount\n */\nexport interface LineDiscount {\n itemLineId: string,\n discountAmount: number,\n discountType: string,\n // reasonCode: string,\n name?: string,\n unitPrice: number,\n discountedLinePrice?: number,\n priceManagerOverride?: UserOverride,\n priceOverrideReasonCode?: string,\n priceOverrideReasonName?: string,\n priceOverrideAmount?: number,\n percentageDiscountManagerOverride?: UserOverride,\n percentageDiscountReasonCode?: string,\n percentageDiscountReasonName?: string,\n percentageDiscountValue?: number\n}\n\n/**\n * User Override\n */\nexport interface UserOverride {\n userId: string,\n automaticApprove: string,\n originalUserId: string\n}\n\n/**\n* line Promotions\n*/\nexport interface LinePromotions {\n\n trigger: Trigger[],\n itemLineId: number,\n promotionId: string,\n displayText: string,\n promotionType: string,\n promotionAmount: number,\n name: string,\n promotionInfo: string,\n promotionLinePrice: number\n refunded?: boolean;\n}\n\n/**\n* trigger\n*/\nexport interface Trigger {\n itemLineId: string;\n quantity?: number;\n totalQuantity?: number;\n linePromotionAmount?:number; // promotion amount applied accross the line\n promotionAmount?:number; // promotion amount applied on 1 unit\n refundedReason?: string;\n refundedReasonDescription?:string;\n promotionId?:string;\n}\n\n/**\n* Transaction Promotion\n*/\nexport interface TransactionPromotion {\n displayText: string;\n name: string;\n promotionAmount: number;\n promotionId: string;\n promotionInfo: string;\n promotionType: string;\n itemLineIds: number[];\n type?:string;\n subLevelType?:PROMOTION_LEVEL\n trigger?:Trigger[];\n couponCode?:string;\n}\n\nexport interface RefundProductChange {\n itemLineId?: number;\n refundedQuantity?: number;\n refundedPromotionalQuantity?: number;\n refundTotal?: number;\n refundedReason?: string;\n refundedReasonDescription?: string;\n refundWithPromotion: boolean;\n isLastExchanged?: boolean;\n}\n\nexport interface InventoryInfo {\n storeName: string,\n storeId: string,\n quantityAvailable: number,\n quantityRequired: number\n}\n\nexport interface InventoryRequestInfo extends InventoryInfo {\n requestedQuantity: number,\n requestedAction: DELIVERY_METHODS\n}\n\nexport interface DeliveryInfo {\n groups: DeliveryGroupInfo[]\n}\n\nexport interface DeliveryGroupInfo {\n groupNumber: number;\n items: Product[];\n estimate?: Estimate;\n}\n\nexport interface Estimate {\n type: string,\n value: string\n}\n\nexport interface TransactionDocument {\n transactionId?: string;\n subsidiaryId?: string;\n offlineTransactionId?:string;\n transactionRef?: string;\n dateTime?: string;\n orgCode: string;\n storeId: string;\n storeNodeId:string;\n storeNodeStructure:string;\n deviceId: string;\n terminalId:string;\n initiatingModule :string;\n export:boolean;\n userId?: string;\n userName?:string;\n customer?: Customer;\n basket: any;\n basketSummary: BasketSummary;\n // lineDiscount: LineDiscount[];\n baseCurrency: string;\n splitPayment?:boolean;\n isPaymentCompleted?:boolean;\n paymentDetails?: any;\n type?: string;\n operationStatus?: string;\n createdAt?: string;\n updatedAt?: string;\n transCompletedAt?: string;\n id?: string;\n saleTotal?: number;\n reasonCode?: string;\n reasonDescription?: string;\n override?: UserOverride;\n originalTransId?:string;\n originalExternalId?: string;\n apiResponse?: APIResponse; // TODO add handler as per export provider\n unreferencedRefund?:boolean;\n giftedReceipt?:boolean;\n currentTransactionDetails?:any;\n isChecked?:boolean;\n externalTransactionDetails?: externalTransactionDetails[];\n refundRequest?: any[];\n isInStoreOrder?: boolean; \n}\n\nexport interface APIResponse\n{\n internalId?:number;\n tranid?:string\n}\n\nexport interface CurrentTransactionDetails{\n products: Product[];\n lineDiscount?:LineDiscount[];\n linePromotion?:LinePromotions[];\n transactionPromotion?:TransactionPromotion[];\n transactionDiscount?:TransactionDiscount[];\n basketSummary?:BasketSummary; \n taxBreakdown?:TaxBreakdown; \n totalTaxSummary?:TotalTaxSummary[];\n}\nexport interface BasketSummary {\n totalItems?: number;\n saleTotal?: number;\n VATTotal?: number;\n discountTotal?: number;\n basketTotal?: number;\n refundTotal?:number;\n shippingTotal?: number;\n basketTotalWithShippingTotal?: number;\n inStore?: BasketSummaryDetails;\n webOrder?: BasketSummaryDetails;\n cnc?: BasketSummaryDetails;\n}\n\nexport interface BasketSummaryDetails {\n totalItems?: number;\n saleTotal?: number;\n VATTotal?: number;\n discountTotal?: number;\n basketTotal?: number;\n refundTotal?:number;\n shippingTotal?: number;\n basketTotalWithShippingTotal?: number;\n}\n\nexport interface TransactionDiscount{\n discountAmount:number;\n discountType:String;\n reasonCode:string;\n override?: UserOverride;\n itemLineIds?:number[];\n}\n\nexport interface TBasket {\n products: TProduct[];\n lineDiscount:LineDiscount[];\n exchange:Exchange[];\n linePromotion:LinePromotions[];\n transactionPromotion?:TransactionPromotion[];\n transactionDiscount?:TransactionDiscount[];\n taxBreakdown?:TaxBreakdown;\n totalTaxSummary?:TotalTaxSummary[];\n\n \n}\n\nexport interface TExchange{\n exchangeId?:number,\n lineItemId?: number,\n reason?: string,\n quantity?: number,\n newItems?:TNewItems[];\n }\n \n export interface TNewItems{\n lineItemId:number,\n Quantity:number\n }\n\nexport interface TProduct {\n itemLineId: string;\n SKU: string;\n description: string;\n imageUrls: [string];\n price: number;\n taxCode?: string;\n taxPercent?: string;\n quantity: number;\n refundedQuantity?: number;\n refundedPromotionalQuantity?:number;\n refunded?: boolean;\n refundedTotal?: number;\n refundedReason?:string;\n refundedReasonDescription?:string;\n selectedRRPPrice?: number;\n totalLinePrice: number;\n barCode?: string;\n barcodes?: string[];\n flagged?: boolean;\n exchange?:Exchange;\n excludePromotion:boolean;\n discountable?:boolean;\n\n itemDiscounts?:ItemDiscounts;\n isLastExchanged?: boolean;\n\n // Mixed Sales fields\n fullfilmentId:string,\n fullfilmentLocationName:string,\n deliveryMethod?:string,\n deliveryGroup?:string,\n giftCardNumberIssued?: string,\n giftCardAmount?: number,\n giftCardRecipientEmail?: string,\n giftCardExpiryDate?: string ,\n giftCardRecipientName?: string,\n giftCard?:boolean,\n currency?:string,\n isWebOrder?:boolean,\n leadTime?: leadTime\n \n // currenttransaction doc changes\n lineDiscount?:any\n\n attributes?:CoreAttribute[];\n}\n\nexport interface ItemDiscounts{\n trnDiscountsPortion:number;\n trnPromotionsPortion:number;\n refundPortion:number;\n}\n\n\n\nexport interface Customer {\n id: string;\n title?: string;\n firstName: string;\n lastName: string;\n email: string;\n postCode: string;\n telephone?: string;\n billingAddress?: Address | Address[];\n shippingAddress?: Address | Address[];\n shipmentDetails?: ShipmentDetails[];\n addressDetail?: string;\n noCustomerSelected?: boolean;\n externalId?: string; \n}\n\nexport interface Address \n{\n id?: string;\n countryCode?: string;\n address1?: string;\n address2?: string;\n address3?: string;\n city?: string;\n county?: string;\n postCode?: string;\n country?: string;\n }\n\n export interface ShipmentDetails {\n id?: string,\n deliveryGroup?: string,\n}\n\nexport interface PaymentDetails {\n cardNumber?: any;\n sqNo?:number;\n result?: string;\n currency: string;\n amount: string;\n authcode?: string;\n pan?: string;\n cardType?: string;\n transactionDate?: string;\n mid?: string;\n tid?: string;\n cvm?: string;\n hostReferenceId?: string;\n aid?: string;\n receiptNo?: string;\n expirydate?: string;\n transactionReference: string;\n applicationVersion?: string;\n entryMethod?:string;\n transactionType:string;\n totalamount:string;\n paymentType?:string;\n}\n\nexport interface TaxBreakdown\n{\n taxLines : TaxLine[],\n totalTaxableAmount: number;\n}\n\nexport interface TotalTaxSummary{\n VATCode:string,\n VAT : number;\n PreTaxSum: number\n TaxSum: number\n TXrateSum: number\n}\n\nexport interface TaxLine\n{\n itemLineId: number,\n taxableAmount: number,\n taxLineTotal: number,\n VAT: number,\n VATCode : string,\n PreTax: number\n}\n\nexport enum DISCOUNTTYPE {\n PERCENT = 'Percent',\n AMOUNT = 'AMOUNT'\n}\n\nexport interface TransactionInfo {\n shippingId?: string,\n externalShippingId?: string\n}\n\nexport interface externalTransactionDetails {\n uniqueId?: string,\n providerType?: string,\n details?: TransactionInfo\n}\n\nexport enum INITIATING_MODULE {\n EBASKET = \"eBasket\"\n}\n\nexport interface pendingMethod {\n _type?: string;\n type?: string;\n message?: string;\n path?: string;\n details?: ShipmentId;\n}\n\nexport interface ShipmentId {\n shipmentId?: string;\n}\n\nexport interface CustomerAddress {\n _type?: string;\n email?: string;\n address1?: string;\n city?: string;\n country_code?: string;\n first_name?: string;\n full_name?: string;\n id?: string;\n last_name?: string;\n phone?: string;\n salutation?: string;\n c_area?: string;\n c_email?: string;\n c_phoneWhatsApp?: string;\n c_strValue?: string;\n postal_code?: string;\n}\n\nexport interface CustomerInfo {\n _type?: string;\n customer_id?: string;\n email?: string;\n}\n\nexport interface GroupedTaxItem {\n _type?: string;\n tax_rate?: number;\n tax_value?: number;\n}\n\nexport interface additionalNotes {\n _type?: string;\n link?: string;\n}\n\nexport interface ProductItem {\n _type?: string;\n adjusted_tax?: number;\n base_price?: number;\n bonus_product_line_item?: boolean;\n gift?: boolean;\n item_id?: string;\n item_text?: string;\n price?: number;\n price_adjustments?: PriceAdjustment[];\n price_after_item_discount?: number;\n price_after_order_discount?: number;\n product_id?: string;\n product_name?: string;\n quantity?: number;\n shipment_id?: string;\n tax?: number;\n tax_basis?: number;\n tax_class_id?: string;\n tax_rate?: number;\n c_osuObjectData?:string;\n}\n\nexport interface ShippingMethod {\n _type?: string;\n description?: string;\n id?: string;\n name?: string;\n price?: number;\n c_approachingThresholdMessage?: string;\n c_estimatedArrivalTime?: string;\n c_isEmail?: boolean;\n c_storePickupEnabled?: boolean;\n c_thresholdValue?: number;\n} \n\nexport interface shipment {\n _type?: string;\n adjusted_merchandize_total_tax?: number;\n adjusted_shipping_total_tax?: number;\n gift?: boolean;\n merchandize_total_tax?: number;\n product_sub_total?: number;\n product_total?: number;\n shipment_id?: string;\n shipment_total?: number;\n shipping_address?: CustomerAddress;\n shipping_method?: ShippingMethod;\n shipping_status?: string;\n shipping_total?: number;\n shipping_total_tax?: number;\n tax_total?: number;\n c_fromStoreId?: string;\n}\n\nexport interface ShippingItem {\n _type?: string;\n adjusted_tax?: number;\n base_price?: number;\n item_id?: string;\n item_text?: string;\n price?: number;\n price_after_item_discount?: number;\n shipment_id?: string;\n tax?: number;\n tax_basis?: number;\n tax_class_id?: string;\n tax_rate?: number;\n}\n\nexport interface AppliedDiscount {\n _type?: string,\n amount?: number,\n percentage?: number,\n type?: string\n}\n\nexport interface PriceAdjustment {\n _type?: string,\n applied_discount?: AppliedDiscount,\n coupon_code?: string,\n creation_date?: string,\n custom?: boolean,\n item_text?: string,\n last_modified?: string,\n manual?: boolean,\n price?: number\n price_adjustment_id?: string,\n promotion_id?: string,\n promotion_link?: string\n}\n\nexport interface OrderDetails {\n _v?: string;\n _type?: string;\n _resource_state?: string;\n _flash?: pendingMethod[];\n adjusted_merchandize_total_tax?: number;\n adjusted_shipping_total_tax?: number;\n agent_basket?: boolean;\n basket_id?: string;\n billing_address?: CustomerAddress;\n channel_type?: string;\n creation_date?: string;\n currency?: string;\n customer_info?: CustomerInfo;\n grouped_tax_items?: GroupedTaxItem[];\n last_modified?: string;\n merchandize_total_tax?: number;\n notes?: additionalNotes;\n order_price_adjustments?: PriceAdjustment[],\n order_no?: string;\n order_total?: number;\n product_items?: ProductItem[];\n product_sub_total?: number;\n product_total?: number;\n shipments?: shipment[];\n shipping_items?: ShippingItem[];\n shipping_total?: number;\n shipping_total_tax?: number;\n taxation?: string;\n tax_rounded_at_group?: boolean;\n tax_total?: number;\n c_isInStoreOrder?: boolean;\n}\n\nexport enum PROVIDERS {\n SALESFORCE = \"Salesforce\"\n}\n\nexport enum PROMOTION_LEVEL\n{\n LINE=\"LINE\",\n TRANSACTION=\"TRANSACTION\"\n}\n\nexport enum PROMOTION_TYPE\n{\n COUPON=\"COUPON\"\n}\n\n","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nvar ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n var r, s = 0;\n function next() {\n while (r = env.stack.pop()) {\n try {\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n if (r.dispose) {\n var result = r.dispose.call(r.value);\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n else s |= 1;\n }\n catch (e) {\n fail(e);\n }\n }\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\n });\n }\n return path;\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __esDecorate,\n __runInitializers,\n __propKey,\n __setFunctionName,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n __rewriteRelativeImportExtension,\n};\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { DELIVERY_METHODS } from './mapper-library.model';\nimport { Basket, DeliveryGroupInfo, DeliveryInfo, Product, TransactionPromotion } from './mapper-library.model';\nimport { TransactionDiscount } from './mapper-library.model';\nimport { NumberUtilService } from './number-util.service';\n\nexport class BasketService {\n currentBasket: Basket = {\n products: [],\n transactionDiscount: [],\n quantity: 0,\n total: 0,\n saleTotal: 0,\n baseCurrency: ''\n };\n\n private basketSource = new BehaviorSubject<any>(null);\n basket = this.basketSource.asObservable();\n\n private productSource = new BehaviorSubject<any>(null);\n product = this.productSource.asObservable();\n\n private peerSource = new BehaviorSubject<boolean>(false);\n peerSync = this.peerSource.asObservable();\n\n private scanSource = new BehaviorSubject<boolean>(false);\n scanner = this.scanSource.asObservable();\n\n private _isMixedBasketSales: boolean | undefined;\n public get isMixedBasketSales(): any {\n return this._isMixedBasketSales;\n }\n public set isMixedBasketSales(v: any) {\n this._isMixedBasketSales = v;\n }\n\n\n constructor(private numberUtilService: NumberUtilService) { }\n\n updateBasket(basket: Basket) {\n this.currentBasket = basket;\n this.isMixedBasketSales = this.filterProductListWithWebOrder(true).length > 0;\n this.basketSource.next(basket);\n }\n\n /**\n * calculates the total basket value and quantity\n * @param null\n * @returns void\n */\n updateBasketTotal(basketDetails: { quantity: number; total: number; products: any; transactionId: any; basketTotal: any; }, basketState: { updateBasket: (arg0: any) => void; }) {\n basketDetails.quantity = 0;\n basketDetails.total = 0;\n for (const p of basketDetails.products) {\n basketDetails.quantity = basketDetails.quantity + p.quantity;\n basketDetails.total =\n this.numberUtilService.trimTo2Decimal(basketDetails.total) +\n this.numberUtilService.trimTo2Decimal(p.total);\n }\n console.log(\n \"e:basket :basket service : basketDetails updated values for transaction id\",\n basketDetails.transactionId,\n JSON.stringify(basketDetails)\n );\n basketDetails.basketTotal = basketDetails.total;\n basketState.updateBasket(basketDetails);\n }\n\n /**\n * add Line promotion\n * @param null\n * @returns basketDetails\n */\n addlinePromotion(promotionList: { result: { linePromotions: string | any[]; }; }, basketDetails: { products: any; }) {\n console.log(\n \"e:basket :basket Service : promotionList and basketDetails for linePromotions\",\n JSON.stringify(promotionList),\n JSON.stringify(basketDetails)\n );\n if (\n promotionList &&\n promotionList.result &&\n promotionList.result.linePromotions &&\n promotionList.result.linePromotions.length > 0\n ) {\n for (var element of basketDetails.products) {\n for (var promotionelement of promotionList.result.linePromotions) {\n if (\n element.itemLineId.toString() ===\n promotionelement.itemLineId.toString()\n ) {\n element.linePromotions = promotionelement;\n }\n }\n }\n }\n return basketDetails;\n }\n\n /**\n * add Transaction promotion\n * @param null\n * @returns basketDetails\n */\n\n addTransactionPromotion(promotionList: { result: { transactionPromotion: any }; }, basketdetails: Basket) {\n console.log(\n \"e:basket :basket Service : promotionList and basketDetails for transactionPromotion\",\n JSON.stringify(promotionList),\n JSON.stringify(basketdetails),\n JSON.stringify(basketdetails.transactionPromotion)\n );\n if (\n promotionList &&\n promotionList.result &&\n promotionList.result.transactionPromotion &&\n promotionList.result.transactionPromotion.length > 0\n ) {\n promotionList.result.transactionPromotion.forEach((tPromotion: any) => {\n let transactionPromotionEntryUpdated: any = Object.assign(\n {},\n tPromotion\n );\n\n transactionPromotionEntryUpdated.itemLineIds = basketdetails.products.map(\n (product) => {\n return product.itemLineId;\n }\n );\n\n if (!basketdetails.transactionPromotion) {\n basketdetails.transactionPromotion = [];\n }\n basketdetails.transactionPromotion.push(\n transactionPromotionEntryUpdated\n );\n\n basketdetails = this.transactionPromotionProductPortionCalc(\n basketdetails,\n transactionPromotionEntryUpdated\n );\n });\n }\n console.log(\n \"basket details in refund calculation file\",\n JSON.stringify(basketdetails)\n );\n return basketdetails;\n }\n\n updateProductTotalForSummary(basketDetails: { total: string | number; quantity: string | number; products: any; }) {\n /*sale- product refundedQuantity = undefined\n partial refund - product refundedQuantity is > 0\n total refund - proudct refundedQuantity is > 0\n exchange - exchange product refundedQuantity is > 0 \n new product refundedQuantity = undefined \n old product without exchange refundedQuantity = 0\n unreference refund-product refundedQuantity is > 0 */\n\n basketDetails.total = 0;\n basketDetails.quantity = 0;\n for (var product of basketDetails.products) {\n if (product.linePromotions) {\n product.total = product.linePromotions.promotionLinePrice;\n } else if (product.lineDiscount && !product.linePromotions) {\n product.total = product.lineDiscount.discountedLinePrice;\n } else {\n product.total = product.totalLinePrice;\n }\n product.total =\n product.total -\n Math.abs(product.refundedTotal ? product.refundedTotal : 0);\n\n basketDetails.total += product.total;\n basketDetails.quantity =\n basketDetails.quantity +\n (product.quantity -\n (product.refundedQuantity ? product.refundedQuantity : 0));\n console.log(\n \"e-basket:ExchangeSummaryScreen:update basketdetails total :\" +\n basketDetails.total +\n \" Product line ID : \" +\n product.itemLineId +\n \" product total : \" +\n product.total,\n \"quantity : \" + basketDetails.quantity\n );\n }\n return this.updateBasketTotalForSummary(basketDetails);\n }\n\n updateBasketTotalForSummary(basketDetails: any) {\n basketDetails.basketTotal = basketDetails.total;\n console.info(\n \"ebasket : basket Service : update Basket Total for transaction transactionDiscount \",\n JSON.stringify(basketDetails.transactionDiscount)\n );\n\n console.info(\n \"ebasket : basket Service : update Basket Total for transaction transactionPromotion \",\n JSON.stringify(basketDetails.transactionPromotion)\n );\n\n basketDetails = this.updateTransactionPromotion(basketDetails);\n basketDetails = this.updateTransactionDiscount(basketDetails);\n basketDetails.basketTotal = Number(basketDetails.basketTotal.toFixed(2));\n\n console.info(\n \"ebasket : basket Service : update Basket Total: basketTotal after promotion applied for basketTotal\",\n basketDetails.basketTotal\n );\n return basketDetails;\n }\n\n updateTransactionDiscount(basketDetails: { transactionDiscount: any[]; basketTotal: number; }) {\n if (\n basketDetails.transactionDiscount &&\n basketDetails.transactionDiscount.length > 0\n ) {\n const discountTotal = basketDetails.transactionDiscount.reduce(\n (n: any, { discountAmount }: any) => n + discountAmount,\n 0\n );\n console.log(\"ebasket : basket Service : discountTotal \", discountTotal);\n basketDetails.basketTotal =\n basketDetails.basketTotal - Math.abs(discountTotal);\n }\n return basketDetails;\n }\n\n updateTransactionPromotion(basketDetails: { transactionPromotion: any[]; basketTotal: number; }) {\n if (\n basketDetails.transactionPromotion &&\n basketDetails.transactionPromotion.length > 0\n ) {\n const discountTotal = basketDetails.transactionPromotion.reduce(\n (n: any, { promotionAmount }: any) => n + promotionAmount,\n 0\n );\n basketDetails.basketTotal =\n basketDetails.basketTotal - Math.abs(discountTotal);\n }\n return basketDetails;\n }\n\n updateBasketTotalWithoutDiscount(basket: Basket): Basket {\n basket.total = 0;\n basket.quantity = 0;\n\n for (var product of basket.products) {\n if (product.linePromotions) {\n product.total = product.linePromotions.promotionLinePrice;\n } else if (product.lineDiscount && !product.linePromotions) {\n product.total = product.lineDiscount.discountedLinePrice || 0;\n } else {\n product.total = product.totalLinePrice;\n }\n\n product.total =\n product.total -\n Math.abs(product.refundedTotal ? product.refundedTotal : 0);\n basket.total += product.total;\n basket.quantity =\n basket.quantity +\n (product.quantity -\n (product.refundedQuantity ? product.refundedQuantity : 0));\n\n console.log(\n \"e-basket:basket service:update basketdetails total :\" +\n JSON.stringify(basket) +\n basket.total +\n \" Product line ID : \" +\n product.itemLineId +\n \" product total : \" +\n product.total\n );\n }\n\n basket.basketTotal = basket.total;\n return basket;\n }\n\n updateBasketTotalWithDiscounts(basket: any): Basket {\n console.log(\n \"e:basket :RefundBasketScreen : this.basketDetails new values\",\n basket,\n JSON.stringify(basket.basketTotal)\n );\n if (basket.transactionPromotion && basket.transactionPromotion.length > 0) {\n const discountTotal = basket.transactionPromotion.reduce(\n (n: any, { promotionAmount }: any) => n + promotionAmount,\n 0\n );\n basket.basketTotal = basket.basketTotal - discountTotal;\n }\n if (basket.transactionDiscount && basket.transactionDiscount.length > 0) {\n const discountTotal = basket.transactionDiscount.reduce(\n (n: any, { discountAmount }: any) => n + discountAmount,\n 0\n );\n\n basket.basketTotal = basket.basketTotal - discountTotal;\n }\n console.log(\n \"e:basket :RefundBasketScreen : basket new values\",\n JSON.stringify(basket)\n );\n\n return basket;\n }\n\n transactionDiscountAndPromotionProductortionCalculation(basket: Basket) {\n if (basket.transactionDiscount && basket.transactionDiscount.length > 0) {\n basket.transactionDiscount.forEach(\n (discount) =>\n (basket = this.transactionDiscountProductPortionCalc(\n basket,\n discount\n ))\n );\n }\n\n if (basket.transactionPromotion && basket.transactionPromotion.length > 0) {\n basket.transactionPromotion.forEach((promotion) => {\n basket = this.transactionPromotionProductPortionCalc(basket, promotion);\n });\n }\n console.log(\n \"ebasket: basket item discount protion calculation\",\n basket,\n basket.products\n );\n return basket;\n }\n\n transactionPromotionProductPortionCalc(\n basket: any,\n promotion: any\n ) {\n let total = 0;\n let percentage = 0;\n {\n basket.products.forEach((p:any) => {\n if (promotion.itemLineIds.includes(p.itemLineId)) {\n p = this.validateProductItemDiscount(p);\n const productContributionInTotal =\n this.numberUtilService.trimTo2Decimal2(p.itemDiscounts.trnDiscountsPortion) +\n this.numberUtilService.trimTo2Decimal2(p.itemDiscounts.trnPromotionsPortion) -\n this.numberUtilService.trimTo2Decimal2(p.itemDiscounts.refundPortion);\n total += (p.total - this.numberUtilService.trimTo2Decimal2(productContributionInTotal));\n }\n });\n console.log(\n `ebasket: trnsactionPromotion: ${JSON.stringify(\n promotion\n )}, selected products total: ${total}`\n );\n basket.products.forEach((product: any) => {\n product = this.validateProductItemDiscount(product);\n\n const productContributionInTotal =\n this.numberUtilService.trimTo2Decimal2(product.itemDiscounts.trnDiscountsPortion) +\n this.numberUtilService.trimTo2Decimal2(product.itemDiscounts.trnPromotionsPortion) -\n this.numberUtilService.trimTo2Decimal2(product.itemDiscounts.refundPortion);\n\n if (promotion.itemLineIds.includes(product.itemLineId)) {\n percentage = ((product.total - this.numberUtilService.trimTo2Decimal2(productContributionInTotal)) / total) * 100;\n product.itemDiscounts.trnPromotionsPortion +=\n (promotion.promotionAmount * percentage) / 100;\n product.itemDiscounts.trnPromotionsPortion = this.numberUtilService.trimTo2Decimal2(product.itemDiscounts.trnPromotionsPortion);\n }\n });\n }\n return basket;\n }\n\n transactionDiscountProductPortionCalc(\n basket: any,\n discount: any\n ) {\n let total = 0;\n let percentage = 0;\n\n basket.products.forEach((p: any) => {\n if (discount.itemLineIds.includes(p.itemLineId)) {\n p = this.validateProductItemDiscount(p);\n const productContributionInTotal =\n this.numberUtilService.trimTo2Decimal2(p.itemDiscounts.trnDiscountsPortion) +\n this.numberUtilService.trimTo2Decimal2(p.itemDiscounts.trnPromotionsPortion) -\n this.numberUtilService.trimTo2Decimal2(p.itemDiscounts.refundPortion);\n\n\n total += (p.total - this.numberUtilService.trimTo2Decimal2(productContributionInTotal));\n }\n });\n\n console.log(\n `ebasket: trnsactionDiscount: ${JSON.stringify(\n discount\n )}, selected products total: ${total}`\n );\n\n basket.products.forEach((product:any) => {\n product = this.validateProductItemDiscount(product);\n console.log(product.discountable, \"ebasket : basket service : discountable in basket service\");\n\n const productContributionInTotal =\n this.numberUtilService.trimTo2Decimal2(product.itemDiscounts.trnDiscountsPortion) +\n this.numberUtilService.trimTo2Decimal2(product.itemDiscounts.trnPromotionsPortion) -\n this.numberUtilService.trimTo2Decimal2(product.itemDiscounts.refundPortion);\n\n if (discount.itemLineIds.includes(product.itemLineId) && product.discountable == true) {\n percentage = ((product.total - this.numberUtilService.trimTo2Decimal2(productContributionInTotal)) / total) * 100;\n product.itemDiscounts.trnDiscountsPortion +=\n (discount.discountAmount * percentage) / 100;\n product.itemDiscounts.trnDiscountsPortion = this.numberUtilService.trimTo2Decimal2(product.itemDiscounts.trnDiscountsPortion)\n }\n });\n return basket;\n }\n\n public validateProductItemDiscount(product: Product) {\n if (!product.itemDiscounts) {\n product.itemDiscounts = {\n trnDiscountsPortion: 0,\n trnPromotionsPortion: 0,\n refundPortion: 0,\n };\n }\n return product;\n }\n\n markProduct(product: Product) {\n this.productSource.next(product);\n }\n stopPeerSyncProcess(peerSync: boolean) {\n this.peerSource.next(peerSync);\n }\n\n scanStart(isScanning: boolean) {\n this.scanSource.next(isScanning);\n }\n\n promotionRemainingCalculation(promotion: TransactionPromotion[]) {\n var promotionValue = 0;\n promotion.forEach((element) => {\n promotionValue += element.promotionAmount;\n });\n return promotionValue;\n }\n\n discountRemainingCalculation(discount: TransactionDiscount[]) {\n var discountValue = 0;\n discount.forEach((element) => {\n discountValue += element.discountAmount;\n });\n return discountValue;\n }\n\n discountRefundedCalculation(discount: TransactionDiscount[]) {\n var discountValue = 0;\n discount.forEach((element) => {\n if (element.discountAmount < 0) {\n discountValue += element.discountAmount;\n }\n });\n return discountValue;\n }\n\n generateNewItemLineId(products: Product[]) {\n let largestNumber: any = 0;\n\n if (products.length > 0) {\n let itemLineIdArray = products.map((product) => {\n return product.itemLineId;\n });\n\n largestNumber = itemLineIdArray.reduce((a :any, b:any) => Math.max(a, b));\n }\n\n return largestNumber + 1;\n }\n\n updateBasketProductDataAsPerQuantity(\n product: any,\n quantity: number\n ): Product {\n\n console.log(`ebasket: updateBasketProductDataAsPerQuantity : ${quantity} product: ${JSON.stringify(product)}`);\n product.quantity = quantity;\n if (product.hasOwnProperty(\"lineDiscount\")) {\n // && this.product.quantity !== this.productDetailForm.controls.quantity.value\n product.lineDiscount.discountedLinePrice = Number(\n this.numberUtilService.getFlooredFixed(\n product.lineDiscount.unitPrice * quantity,\n 2\n )\n );\n product.lineDiscount.discountAmount =\n product.totalLinePrice - product.lineDiscount.discountedLinePrice;\n } else {\n product.totalLinePrice =\n quantity * this.numberUtilService.trimTo2Decimal(product.selectedPrice);\n }\n if (product.lineDiscount) {\n product.total = product.lineDiscount.discountedLinePrice;\n } else {\n product.total = product.totalLinePrice;\n }\n console.log(`ebasket: updateBasketProductDataAsPerQuantity : ${quantity} product: ${JSON.stringify(product)}`);\n\n return product;\n }\n\n filterProductListWithWebOrder(isWebOrder: boolean): Product[] {\n console.log(\"ebasket: filterProductListWithWebOrder hit\", JSON.stringify(this.currentBasket.products));\n if (isWebOrder)\n return this.currentBasket.products.filter((x) => x.isWebOrder);\n else {\n return this.currentBasket.products.filter((x) => !x.isWebOrder);\n }\n }\n\n filterProductListWithDelivery(): Product[] {\n console.log(\"ebasket: filterProductListWithDelivery hit\", JSON.stringify(this.currentBasket.products));\n return this.currentBasket.products.filter((x) => x.deliveryMethod === DELIVERY_METHODS.DELIVERY.toString());\n }\n\n filterProductListWithDeliveryGroup(group: string, products: Product[]): Product[] {\n console.log(\"ebasket: filterProductListWithDeliveryGroup hit\", JSON.stringify(products));\n return products.filter((x) => x.deliveryGroup === group);\n }\n\n generateNewDeliveryGroupNumber(products: Product[]) {\n let largestNumber = 0;\n\n if (products.length > 0) {\n let deliveryGroupArr = products.map((product) => {\n if (product.deliveryGroup) {\n return parseInt(product.deliveryGroup);\n }\n return 0;\n });\n\n largestNumber = deliveryGroupArr.reduce((a, b) => Math.max(a, b));\n }\n\n return (largestNumber + 1).toString();\n }\n\n getDeliveryGroupNumbers(products: Product[]) {\n console.log(\"getDeliveryGroupNumbers initiating : \", JSON.stringify(products));\n\n let uniqueAndsortedResult: number[] = [];\n\n if (products.length > 0) {\n let deliveryGroupArr = products.map((product) => {\n if (product.deliveryGroup) {\n return parseInt(product.deliveryGroup);\n }\n else if (product.deliveryMethod === \"1\") {\n return 1;\n }\n return 0;\n });\n\n uniqueAndsortedResult = Array.from(new Set(deliveryGroupArr)).sort((a, b) => a - b);\n console.log(\"getDeliveryGroupNumbers : \", JSON.stringify(uniqueAndsortedResult));\n }\n return uniqueAndsortedResult;\n }\n\n updateProductsWithNewDeliveryGroupNumber(products: Product[]) {\n console.log(\"updateProductsWithNewDeliveryGroupNumber initiating : \", JSON.stringify(products));\n\n let newGroupNumber = this.generateNewDeliveryGroupNumber(this.currentBasket.products);\n if (products.length > 0) {\n this.currentBasket.products.forEach(cBProducts => {\n products.forEach(element => {\n if (cBProducts.itemLineId === element.itemLineId) {\n cBProducts.deliveryGroup = newGroupNumber;\n }\n\n });\n });\n\n }\n\n this.updateBasket(this.currentBasket);\n return;\n }\n\n calculateEstimatedTime(products: any[]) {\n try {\n let time;\n let estmatedTime: number = 0;\n let estimatedDays: string = \"Hours\";\n products.forEach((element: { leadTime: { type: string; value: any; }; }) => {\n\n if (element.leadTime.type.toLocaleLowerCase() === \"weeks\") {\n time = Number(element.leadTime.value) * 24 * 7;\n estmatedTime = Math.max(estmatedTime, time);\n estimatedDays = (estmatedTime === time) ? element.leadTime.type : estimatedDays\n console.log(\"week\", estmatedTime, estimatedDays);\n\n } else if (element.leadTime.type.toLocaleLowerCase() === \"days\") {\n time = Number(element.leadTime.value) * 24;\n estmatedTime = Math.max(estmatedTime, time);\n estimatedDays = (estmatedTime === time) ? element.leadTime.type : estimatedDays\n\n console.log(\"days\", estmatedTime, estimatedDays);\n\n }\n else if (element.leadTime.type.toLocaleLowerCase() === \"months\") {\n time = Number(element.leadTime.value) * 24 * 30;\n estmatedTime = Math.max(estmatedTime, time);\n estimatedDays = (estmatedTime === time) ? element.leadTime.type : estimatedDays\n\n console.log(\"months\", estmatedTime, estimatedDays);\n\n }\n else if (element.leadTime.type.toLocaleLowerCase() === \"years\") {\n time = Number(element.leadTime.value) * 24 * 365;\n estmatedTime = Math.max(estmatedTime, time);\n estimatedDays = (estmatedTime === time) ? element.leadTime.type : estimatedDays\n\n console.log(\"years\", estmatedTime, estimatedDays);\n\n } else {\n time = Number(element.leadTime.value);\n estmatedTime = Math.max(estmatedTime, time);\n estimatedDays = (estmatedTime === time) ? element.leadTime.type : estimatedDays;\n console.log(\"hours\", estmatedTime, estimatedDays);\n\n }\n });\n\n if (estimatedDays.toLocaleLowerCase() === \"days\") {\n estmatedTime = estmatedTime / 24;\n } else if (estimatedDays.toLocaleLowerCase() === \"weeks\") {\n estmatedTime = estmatedTime / (24 * 7);\n } else if (estimatedDays.toLocaleLowerCase() === \"months\") {\n estmatedTime = estmatedTime / (24 * 30);\n } else if (estimatedDays.toLocaleLowerCase() === \"years\") {\n estmatedTime = estmatedTime / (24 * 365);\n }\n\n let estimate = {\n value: estmatedTime.toString(),\n type: estimatedDays\n }\n return estimate;\n } catch (error) {\n console.log(\"error in calculateEstimatedTime\", error);\n }\n return 0;\n }\n\n updateProductsWithDeliveryGroupNumber(oldGroup: string, newGroup: string) {\n console.log(\"updateProductsWithDeliveryGroupNumber initiating\");\n\n this.currentBasket.products.forEach(cBProducts => {\n if (cBProducts.deliveryGroup === oldGroup) {\n cBProducts.deliveryGroup = newGroup;\n }\n\n });\n\n this.updateBasket(this.currentBasket);\n return;\n }\n\n getDeliveryInfo(): any {\n console.log(\"getDeliveryGroupInfor initiating\");\n try {\n let groupInfo: DeliveryInfo = {\n groups: []\n }\n\n this.getDeliveryGroupNumbers(this.currentBasket.products).forEach((groupNumber) => {\n let group: any = {\n groupNumber: groupNumber,\n items: [],\n estimate: {\n type: \"Hours\",\n value: \"0\"\n }\n }\n this.currentBasket.products.forEach(cBProducts => {\n if (cBProducts.deliveryGroup === groupNumber.toString()) {\n group.items.push(cBProducts);\n }\n });\n\n group.estimate = this.calculateEstimatedTime(group.items);\n\n groupInfo.groups.push(group);\n\n });\n\n return groupInfo;\n }\n catch (error) {\n console.log(\"error\", error);\n }\n }\n}\n","import { CurrencyPipe } from \"@angular/common\";\nimport { Injectable } from \"@angular/core\";\n\n@Injectable({\n providedIn: \"root\",\n})\nexport class NumberUtilService {\n constructor( private cp: CurrencyPipe) {}\n\n trimTo2Decimal(no: number) {\n //return Math.floor(no * 100) / 100;\n return no;\n }\n\n trimTo2Decimal2(no: number) {\n // SEAM-11411 - Had to change 2nd param to 3 to fix rounding issue (FIXME - Needs a new story for refactoring)\n return Number(this.getFlooredFixed(no, 3));\n }\n\n getFlooredFixed(v, d) {\n return (Math.floor(v * Math.pow(10, d)) / Math.pow(10, d)).toFixed(d);\n }\n\n AppendWithCurrencySymbol(numValue: any, currencyCode: string): string {\n let returnValue: any = \"\";\n if (numValue) {\n const numb: number = parseFloat(numValue.toString().replace(',',''));\n returnValue = this.cp.transform(\n Number(numValue).toFixed(2),\n currencyCode.toLocaleUpperCase(),\n \"symbol\"\n );\n console.log(\"AppendWithCurrencySymbol :\" + returnValue);\n } else {\n returnValue = this.cp.transform(\n \"0.00\",\n currencyCode.toLocaleUpperCase(),\n \"symbol\"\n );\n }\n return returnValue;\n }\n}\n","import { CurrencyPipe } from \"@angular/common\";\nimport { BasketSummary, CurrentTransactionDetails, Customer, DELIVERY_METHODS, ItemDiscounts, TaxBreakdown, TaxLine, TBasket, TotalTaxSummary, TProduct, TransactionDocument } from \"./mapper-library.model\";\nimport { TRANSACTION_TYPE, Basket, LineDiscount, LinePromotions, Product, UserOverride } from \"./mapper-library.model\";\nimport { BasketService } from \"./basket.service\";\nimport { NumberUtilService } from \"./number-util.service\";\n\n/**\n * Transaction document builder\n */\nexport class TransactionDocumentBuilder {\n private transactionDocument: TransactionDocument;\n private numberUtilService: NumberUtilService;\n private storeInfo : any;\n \n constructor(\n transactionDoc?: TransactionDocument,\n private currencyPipe?: CurrencyPipe,\n private basketService?: BasketService | any,\n ) {\n this.numberUtilService = new NumberUtilService(currencyPipe);\n this.basketService = new BasketService(this.numberUtilService);\n this.storeInfo = JSON.parse(localStorage.getItem('storeInfo') || '{}');\n if (transactionDoc) {\n this.transactionDocument = transactionDoc;\n } else {\n this.transactionDocument = {\n transactionId: \"\",\n offlineTransactionId: \"\",\n transactionRef: \"\",\n dateTime: \"\",\n orgCode: \"\",\n storeId: \"\",\n storeNodeId: \"\",\n storeNodeStructure: \"\",\n deviceId: \"\",\n terminalId: \"\",\n userId: \"\",\n initiatingModule : \"eBasket\",\n export: false,\n basket: {} as TBasket,\n basketSummary: {} as BasketSummary,\n baseCurrency: \"\",\n type: \"\",\n operationStatus: \"\",\n createdAt: \"\",\n updatedAt: \"\",\n id: \"\",\n currentTransactionDetails: {} as CurrentTransactionDetails,\n saleTotal: 0,\n };\n }\n }\n\n /**\n * Transactions ref\n * @returns ref\n */\n transactionRef(): TransactionDocumentBuilder {\n const storeDetails = JSON.parse(localStorage.getItem('storeInfo') || '{}');\n const date = new Date();\n const random = (((1 + Math.random()) * 0x10000) | 0)\n .toString(16)\n .substring(1);\n this.transactionDocument.transactionRef =\n storeDetails.orgCode + storeDetails.storeId + date.toISOString() + random;\n console.log(\"ebasket: transaction ref created\", this.transactionDocument.transactionRef)\n return this;\n }\n\n /**\n * Transactions id\n * @param transactionID\n * @returns id\n */\n transactionId(transactionID: string, isOnline: boolean = true): TransactionDocumentBuilder {\n if (isOnline) {\n this.transactionDocument.transactionId = transactionID;\n }\n return this;\n }\n\n /**\n * Transactions id\n * @param transactionID\n * @returns id\n */\n offlineTransactionId(transactionID: string, isOnline: any): TransactionDocumentBuilder {\n if (!isOnline) {\n this.transactionDocument.offlineTransactionId = transactionID;\n }\n return this;\n }\n\n /**\n * storeNode Id\n * @param storeNodeId\n * @returns id\n */\n storeNodeId(storeNodeId: string): TransactionDocumentBuilder {\n this.transactionDocument.storeNodeId = storeNodeId;\n return this;\n }\n\n /**\n* storeNode structure\n* @param storeNodeStructure\n* @returns id\n*/\n storeNodeStructure(storeNodeStructure: string): TransactionDocumentBuilder {\n this.transactionDocument.storeNodeStructure = storeNodeStructure;\n return this;\n }\n\n /**\n * Orgs code\n * @param orgCode\n * @returns code\n */\n orgCode(orgCode: any): TransactionDocumentBuilder {\n this.transactionDocument.orgCode = orgCode;\n return this;\n }\n /**\n * Stores id\n * @param storeId\n * @returns id\n */\n storeId(storeId: any): TransactionDocumentBuilder {\n this.transactionDocument.storeId = storeId;\n return this;\n }\n /**\n * Dates time\n * @returns time\n */\n dateTime(): TransactionDocumentBuilder {\n const date = new Date();\n this.transactionDocument.dateTime = date.toISOString();\n return this;\n }\n /**\n * Devices id\n * @param deviceId\n * @returns id\n */\n deviceId(deviceId: any): TransactionDocumentBuilder {\n this.transactionDocument.deviceId = deviceId;\n\n return this;\n }\n\n /**\n * terminal id\n * @param terminalId\n * @returns id\n */\n terminalId(terminalId: any): TransactionDocumentBuilder {\n this.transactionDocument.terminalId = terminalId;\n return this;\n }\n\n\n\n\n\n /**\n * saleExport\n * @param saleExport\n * @returns id\n */\n export(saleExport: any): TransactionDocumentBuilder {\n this.transactionDocument.export = saleExport;\n return this;\n }\n\n\n\n /* customer(): TransactionDocumentBuilder {\n const user = JSON.parse(localStorage.getItem('userDetails'));\n this.transactionDocument.customer = user;\n return this;\n } */\n /**\n * Baskets transaction document builder\n * @param basketDetails\n * @returns basket\n */\n basket(basketDetails: Basket): TransactionDocumentBuilder {\n console.log(\"ebasket: basket details update in transaction document\", JSON.stringify(basketDetails));\n\n this.transactionDocument.subsidiaryId = basketDetails.subsidiaryId || (localStorage.getItem('subsidiaryId') || '');\n this.transactionDocument.basket.products = [] as TProduct[];\n this.transactionDocument.basket.lineDiscount = [];\n this.transactionDocument.basket.linePromotion = [];\n this.transactionDocument.basket.transactionPromotion = [];\n basketDetails.products.forEach((product: any, index) => {\n const p = {} as TProduct;\n p.itemDiscounts = {} as ItemDiscounts;\n p.SKU = product.SKU;\n p.excludePromotion = product.excludePromotion;\n p.barCode = product.barcode;\n p.barcodes = product.barcodes;\n p.description = product.description;\n p.itemLineId = product.itemLineId ? product.itemLineId.toString() : \"\" + (index + 1);\n p.price = product.selectedPrice;\n p.quantity = product.quantity;\n p.totalLinePrice = product.quantity * product.selectedPrice;\n p.imageUrls = product.imageUrls;\n p.selectedRRPPrice = product.selectedRRPPrice;\n\n //inventory fields\n \n p.fullfilmentId = product.fullfilmentId? product.fullfilmentId: this.storeInfo.storeId;\n\n p.fullfilmentLocationName = product.fullfilmentLocationName;\n p.deliveryGroup = product.deliveryGroup;\n p.leadTime = product.leadTime;\n p.deliveryMethod = product.deliveryMethod;\n\n p.giftCard = product.giftCard;\n p.giftCardExpiryDate = product.giftCardExpiryDate;\n p.giftCardNumberIssued = product.giftCardNumberIssued;\n p.giftCardRecipientEmail = product.giftCardRecipientEmail;\n p.giftCardRecipientName = product.giftCardRecipientName;\n\n if (product.refundedQuantity > 0) {\n p.refundedQuantity = product.refundedQuantity;\n p.refundedPromotionalQuantity = product.refundPromotionalQuantity;\n p.refunded = product.refunded;\n p.refundedReasonDescription = product.refundedReasonDescription;\n p.refundedReason = product.refundedReason;\n if (!p.refundedReasonDescription) {\n p.refundedReasonDescription = p.refundedReason;\n }\n p.refundedTotal = product.refundedTotal;\n p.isLastExchanged = product.isLastExchanged;\n }\n\n if (product.exchange) {\n p.exchange = product.exchange;\n }\n if (product.lineDiscount) {\n p.lineDiscount = product.lineDiscount;\n }\n p.itemDiscounts = product.itemDiscounts as ItemDiscounts;\n this.transactionDocument.basket.products.push(p);\n this.lineDiscount(basketDetails);\n });\n console.info(\"ebasket: transactiondocument basket details updated\", JSON.stringify(this.transactionDocument.basket));\n\n return this;\n }\n\n /**\n * current transaction Details Total(New Products)\n * @returns currentTransactionDetails\n */\n\n currentTransactionDetails(basket: Basket): TransactionDocumentBuilder {\n console.log(\"ebasket: current transaction details for exchanges\", basket);\n this.transactionDocument.currentTransactionDetails.products = [] as Product[];\n this.transactionDocument.currentTransactionDetails.linePromotion = [] as LinePromotions[];\n this.transactionDocument.currentTransactionDetails.lineDiscount = [] as LineDiscount[];\n this.transactionDocument.currentTransactionDetails.transactionDiscount = [];\n this.transactionDocument.currentTransactionDetails.products = basket.products;\n this.transactionDocument.currentTransactionDetails.products = this.transactionDocument.currentTransactionDetails.products.filter(\n ( proj: { refundedQuantity: number; }) => proj.refundedQuantity != 0\n );\n\n this.transactionDocument.currentTransactionDetails.products.forEach((product: { refundedQuantity: any; quantity: any; totalLinePrice: number; refundedTotal: number; total: any; refunded: boolean; linePromotions: any; lineDiscount: any; }) => {\n if (product.refundedQuantity) {\n product.quantity = product.refundedQuantity;\n // updating total line price with actual price to be refunded including the refunding qty\n product.totalLinePrice = Math.abs(product.refundedTotal);\n product.total = product.totalLinePrice;\n if (product.quantity === product.refundedQuantity) {\n product.refunded = true;\n }\n }\n //Updating line promotions and line discounts \n if (product.linePromotions && !product.refundedQuantity) {\n this.transactionDocument.currentTransactionDetails.linePromotion.push(product.linePromotions)\n }\n if (product.lineDiscount && !product.refundedQuantity) {\n this.transactionDocument.currentTransactionDetails.lineDiscount.push(product.lineDiscount)\n }\n });\n\n console.log(\"ebasket: current transaction details after removing old products\", this.transactionDocument.currentTransactionDetails.products);\n\n if (basket.transactionDiscount && basket.transactionDiscount.length > 0) {\n this.transactionDocument.currentTransactionDetails.transactionDiscount.push(...basket.transactionDiscount);\n }\n this.transactionDocument.currentTransactionDetails.basketSummary = {} as BasketSummary;\n\n this.transactionDocument.currentTransactionDetails.basketSummary.saleTotal = this.numberUtilService.trimTo2Decimal2(this.updateSaleTotal(this.transactionDocument.currentTransactionDetails));\n this.transactionDocument.currentTransactionDetails.basketSummary.totalItems = basket.quantity;\n\n\n this.transactionDocument.currentTransactionDetails.basketSummary.basketTotal = basket.basketTotal;\n this.transactionDocument.currentTransactionDetails.basketSummary.refundTotal = this.updateCurrentTransactionDetailsRefundTotal();\n // For partial refund discount is updatied in total line price so discountTotal will always be zero & in case of exchange discount total is calculated\n\n if (this.transactionDocument.type === TRANSACTION_TYPE.SALE_EXCHANGE) {\n this.transactionDocument.currentTransactionDetails.basketSummary.discountTotal = this.numberUtilService.trimTo2Decimal2(this.updateCurrentTransactionDetailsDiscountTotal());\n } else {\n if (this.transactionDocument.currentTransactionDetails.transactionDiscount && this.transactionDocument.currentTransactionDetails.transactionDiscount.length > 0) {\n let discountTotal = 0;\n this.transactionDocument.currentTransactionDetails.transactionDiscount.forEach((discount: { discountAmount: number; }) => {\n discountTotal += discount.discountAmount;\n });\n this.transactionDocument.currentTransactionDetails.basketSummary.discountTotal = Math.abs(discountTotal);\n } else {\n this.transactionDocument.currentTransactionDetails.basketSummary.discountTotal = 0;\n }\n }\n\n console.log(\"ebasket:this.transactionDocument.currentTransactionDetails\", JSON.stringify(this.transactionDocument.currentTransactionDetails));\n return this;\n }\n\n\n /**\n * current transaction Tax Total\n * @returns Tax Total\n */\n\n updateCurrentTransactionDetailsTaxBreakdown(basketDetails: Basket): TransactionDocumentBuilder {\n let transactionDiscountTotal = 0;\n let taxBreakdown: TaxBreakdown = {\n taxLines: [],\n totalTaxableAmount: 0,\n };\n\n if (this.transactionDocument.currentTransactionDetails.transactionDiscount && this.transactionDocument.currentTransactionDetails.transactionDiscount.length > 0) {\n this.transactionDocument.currentTransactionDetails.transactionDiscount.forEach((discount: { discountAmount: number; }) => {\n transactionDiscountTotal += discount.discountAmount;\n });\n }\n\n if (this.transactionDocument.currentTransactionDetails.products && this.transactionDocument.currentTransactionDetails.products.length > 0) {\n this.transactionDocument.currentTransactionDetails.products.forEach((product: { itemLineId: any; selectedVAT: any; selectedVATCode: any; total: any; refundedQuantity: number; itemDiscounts: { currentRefundPortion: number; trnDiscountsPortion: number; trnPromotionsPortion: number; }; }) => {\n let taxLine: TaxLine = {\n itemLineId: product.itemLineId,\n VAT: product.selectedVAT ? product.selectedVAT : 0,\n VATCode: product.selectedVATCode,\n taxLineTotal: 0,\n taxableAmount: product.total,\n PreTax: 0\n\n };\n console.info(\"Product contribution : item line ID :current transaction Details\",\n product.itemLineId, \"tax line :\", JSON.stringify(taxLine), JSON.stringify(basketDetails.basketTotal));\n\n //step 1\n // if Transaction Discount and/or promotion applied, find net selling price of each product as taxableamount\n\n //If transaction discount/promotion is applied taxable amount should be deducting transaction promotion and transaction disacount portion\n if (product.refundedQuantity && product.refundedQuantity > 0) {\n\n taxLine.taxableAmount = -Math.abs(taxLine.taxableAmount - product.itemDiscounts.currentRefundPortion);\n } else {\n taxLine.taxableAmount = taxLine.taxableAmount - product.itemDiscounts.trnDiscountsPortion - product.itemDiscounts.trnPromotionsPortion;\n }\n\n //step 2 - find pre tax\n taxLine.PreTax = this.numberUtilService.trimTo2Decimal2((taxLine.taxableAmount * 100) / (100 + taxLine.VAT));\n\n //step 3 - Update taxbreakdown\n taxBreakdown.totalTaxableAmount += taxLine.taxableAmount;\n taxLine.taxableAmount = this.numberUtilService.trimTo2Decimal2(taxLine.taxableAmount);\n \n // step 4 - update tax Line total\n taxLine.taxLineTotal = this.numberUtilService.trimTo2Decimal2(taxLine.taxableAmount - taxLine.PreTax);\n taxBreakdown.taxLines.push(taxLine);\n });\n }\n\n taxBreakdown.totalTaxableAmount = this.numberUtilService.trimTo2Decimal2(taxBreakdown.totalTaxableAmount);\n this.transactionDocument.currentTransactionDetails.taxBreakdown = taxBreakdown;\n if (this.transactionDocument.currentTransactionDetails.taxBreakdown && this.transactionDocument.currentTransactionDetails.taxBreakdown.taxLines && this.transactionDocument.currentTransactionDetails.taxBreakdown.taxLines.length > 0) {\n this.transactionDocument.currentTransactionDetails.basketSummary.VATTotal = this.numberUtilService.trimTo2Decimal2(this.transactionDocument.currentTransactionDetails.taxBreakdown.taxLines.reduce(\n (n: any, { taxLineTotal }: any) => n + taxLineTotal,\n 0\n ));\n }\n else {\n this.transactionDocument.currentTransactionDetails.basketSummary.VATTotal = 0.00;\n }\n\n console.log(\"eBasket:after calculating tax currenttransactionDetails\", this.transactionDocument.currentTransactionDetails)\n return this;\n }\n\n updateCurrentTransactionDetailsTotalTaxSummary(): TransactionDocumentBuilder {\n \n console.log(\"Total Tax Summery Request :\", JSON.stringify(this.transactionDocument.currentTransactionDetails.taxBreakdown));\n\n let totalTaxSummaryArray: TotalTaxSummary[] = []\n let totalTaxSummaryGroup = []\n\n console.log(\"Tax Lines for Total Tax Summery :\", JSON.stringify(this.transactionDocument.currentTransactionDetails.taxBreakdown.taxLines));\n\n this.transactionDocument.currentTransactionDetails.taxBreakdown.taxLines.forEach((element: { VATCode: any; VAT: any; PreTax: any; taxLineTotal: any; }) => {\n let TaxSummary: TotalTaxSummary = {\n VATCode:\"\",\n VAT: -12345,\n PreTaxSum: 0,\n TaxSum: 0,\n TXrateSum: 0\n };\n TaxSummary.VATCode=element.VATCode;\n TaxSummary.VAT = element.VAT; \n \n TaxSummary.PreTaxSum = this.numberUtilService.trimTo2Decimal2(element.PreTax); \n TaxSummary.TaxSum = this.numberUtilService.trimTo2Decimal2(element.taxLineTotal);\n TaxSummary.TXrateSum = this.numberUtilService.trimTo2Decimal2(TaxSummary.PreTaxSum + TaxSummary.TaxSum); \n totalTaxSummaryArray.push(TaxSummary);\n })\n\n console.log(\"Total Tax Summery Without Grouped : \", JSON.stringify(totalTaxSummaryArray));\n \n totalTaxSummaryGroup = totalTaxSummaryArray.reduce((preparedArray:any,currentObj:any) => {\n let ind = preparedArray.findIndex((x: { VAT: any; }) => x.VAT === currentObj.VAT);\n if(ind === -1){\n preparedArray.push(currentObj)\n }else {\n preparedArray[ind].VATCode = currentObj.VATCode;\n preparedArray[ind].VAT = currentObj.VAT;\n preparedArray[ind].PreTaxSum += currentObj.PreTaxSum;\n preparedArray[ind].TaxSum += currentObj.TaxSum;\n preparedArray[ind].TXrateSum += currentObj.TXrateSum;\n }\n return preparedArray;\n },[])\n // listOfTags.map(x => unique.filter(a => a.label == x.label && a.color == x.color).length > 0 ? null : unique.push(x));\n\n console.log(\"Total Tax Summer Group :\", JSON.stringify(totalTaxSummaryGroup));\n\n this.transactionDocument.currentTransactionDetails.totalTaxSummary = totalTaxSummaryGroup;\n return this;\n\n }\n\n /**\n * current transaction Disocunt Total\n * @returns Discount Total\n */\n updateCurrentTransactionDetailsDiscountTotal() {\n let refundTotal = this.transactionDocument.currentTransactionDetails.basketSummary.refundTotal ? this.transactionDocument.currentTransactionDetails.basketSummary.refundTotal : 0;\n\n console.log(\"e-basket: transaction builder updateCurrentTransactionDetailsDiscountTotal: discountTotal\", refundTotal, this.transactionDocument.currentTransactionDetails.basketSummary.basketTotal, this.transactionDocument.currentTransactionDetails.basketSummary.saleTotal);\n const discountTotal =\n Math.abs(\n Math.abs(this.transactionDocument.currentTransactionDetails.basketSummary.saleTotal) -\n (Math.abs(this.transactionDocument.currentTransactionDetails.basketSummary.basketTotal) + Math.abs(refundTotal))\n );\n console.log(\"e-basket: transaction builder updateCurrentTransactionDetailsDiscountTotal: discountTotal\", discountTotal)\n return Number(discountTotal.toFixed(2));\n }\n\n /**\n * current transaction Refund Total\n * @returns Refund Total\n */\n updateCurrentTransactionDetailsRefundTotal() {\n let totalRefund = 0;\n for (let index = 0; index < this.transactionDocument.currentTransactionDetails.products.length; index++) {\n const product: Product = this.transactionDocument.currentTransactionDetails.products[index];\n if (product.refundedTotal) {\n totalRefund = totalRefund + product.refundedTotal;\n }\n console.log(\"ebasket : transaction Service: totalRefund for Current TransactionDetails\" + totalRefund)\n }\n return totalRefund;\n }\n\n\n\n /**\n * Baskets summary\n * @param basketDetails\n * @returns summary\n */\n basketSummary(basketDetails: Basket): TransactionDocumentBuilder {\n this.transactionDocument.basketSummary.basketTotal = this.numberUtilService.trimTo2Decimal(basketDetails.basketTotal);\n\n this.transactionDocument.basketSummary.saleTotal = this.numberUtilService.trimTo2Decimal2(this.updateSaleTotal(\n basketDetails\n ));\n this.transactionDocument.basketSummary.refundTotal = this.getRefundTotal();\n if (\n this.transactionDocument.basket.lineDiscount ||\n this.transactionDocument.basket.linePromotion\n ) {\n this.transactionDocument.basketSummary.discountTotal = this.numberUtilService.trimTo2Decimal2(this.updateDiscountTotal());\n }\n this.transactionDocument.basketSummary.totalItems = basketDetails.quantity;\n\n\n if (this.transactionDocument.basket.taxBreakdown) {\n this.transactionDocument.basketSummary.VATTotal = this.numberUtilService.trimTo2Decimal2(this.transactionDocument.basket.taxBreakdown.taxLines.reduce(\n (n: any, { taxLineTotal }: any) => n + taxLineTotal,\n 0\n ));\n }\n else {\n this.transactionDocument.basketSummary.VATTotal = 0.00;\n }\n\n console.info(\"ebasket: basketsummary updated in transaction document: \", JSON.stringify(this.transactionDocument.basketSummary));\n return this;\n }\n\n /**\n * Line Discount\n * @param basketDetails\n * @returns line Discount\n */\n lineDiscount(basketDetails: Basket): TransactionDocumentBuilder {\n this.transactionDocument.basket.lineDiscount = [];\n for (let index = 0; index < basketDetails.products.length; index++) {\n const element = basketDetails.products[index];\n if (element.lineDiscount) {\n this.transactionDocument.basket.lineDiscount.push(element.lineDiscount);\n this.transactionDocument.basket.lineDiscount = this.transactionDocument.basket.lineDiscount.reduce(\n (acc: any[], val: { itemLineId: any; }) => {\n if (!acc.find((el: { itemLineId: any; }) => el.itemLineId === val.itemLineId)) {\n acc.push(val);\n }\n return acc;\n },\n []\n );\n }\n\n // console.info(\n // \"e-basket :line discount updated in transaction document\",\n // this.transactionDocument.basket.lineDiscount\n // );\n }\n return this;\n }\n\n /**\n * exchange\n * @param basketDetails\n * @returns exchange \n */\n exchange(basketDetails: Basket): TransactionDocumentBuilder {\n this.transactionDocument.basket.exchange = basketDetails.exchange && basketDetails.exchange.length > 0 ? [...basketDetails.exchange] : [];\n for (let index = 0; index < basketDetails.products.length; index++) {\n\n const element: any = basketDetails.products[index];\n if (element.exchange != undefined) {\n const isPresent = this.transactionDocument.basket.exchange.some((el: { exchangeId: any; }) => el.exchangeId === element.exchange.exchangeId);\n if (!isPresent) {\n let exchangeItems = [];\n for (let j = 0; j < element.exchange.newItems.length; j++) {\n const item = element.exchange.newItems[j];\n let newItems: any = { lineItemId: item.itemLineId, Quantity: item.quantity }\n exchangeItems.push(newItems);\n }\n element.exchange.newItems = [...exchangeItems];\n this.transactionDocument.basket.exchange.push(element.exchange);\n }\n }\n console.log(\n \"e-basket :TransactionDocumentBuilder: this.transactionDocument.basket exchange\",\n JSON.stringify(this.transactionDocument.basket.exchange)\n );\n }\n\n return this;\n }\n\n /**\n * add previous exchange data\n * @param originalTransactionDocument\n * @returns line Promotions\n */\n addExchangeData(originalTransactionDocument: TransactionDocument): TransactionDocumentBuilder {\n this.transactionDocument.basket.exchange = originalTransactionDocument.basket.exchange ? [...originalTransactionDocument.basket.exchange] : null;\n return this;\n }\n\n /**\n * line Promotions\n * @param basketDetails\n * @returns line Promotions\n */\n linePromotion(basketDetails: Basket): TransactionDocumentBuilder {\n this.transactionDocument.basket.linePromotion = [];\n for (let index = 0; index < basketDetails.products.length; index++) {\n const element = basketDetails.products[index];\n if (element.linePromotions) {\n this.transactionDocument.basket.linePromotion.push(\n element.linePromotions\n );\n this.transactionDocument.basket.linePromotion = this.transactionDocument.basket.linePromotion.reduce(\n (acc: any[], val: { itemLineId: any; }) => {\n if (!acc.find((el: { itemLineId: any; }) => el.itemLineId === val.itemLineId)) {\n acc.push(val);\n }\n return acc;\n },\n []\n );\n }\n }\n return this;\n }\n\n /**\n * transaction Promotion\n * @param basketDetails\n * @returns transaction Promotion\n */\n transactionPromotion(basketDetails: Basket): TransactionDocumentBuilder {\n if (basketDetails.transactionPromotion) {\n this.transactionDocument.basket.transactionPromotion =\n basketDetails.transactionPromotion;\n // for (let index = 0; index < basketDetails.TransactionDiscount.length; index++) {\n // this.transactionDocument.basket.transactionPromotion.push(element.linePromotions)\n // this.transactionDocument.basket.transactionPromotion = this.transactionDocument.basket.linePromotions.reduce((acc, val) => {\n // if (!acc.find(el => el.itemLineId === val.itemLineId)) {\n // acc.push(val);\n // }\n // return acc;\n // }, []);\n // }\n console.log(\n \"e-basket :TransactionDocumentBuilder: this.transactionDocument.basket.transactionPromotion\",\n JSON.stringify(this.transactionDocument.basket.transactionPromotion)\n );\n }\n return this;\n }\n\n transactionDiscount(basketDetails: Basket): TransactionDocumentBuilder {\n if (basketDetails.transactionDiscount) {\n this.transactionDocument.basket.transactionDiscount =\n basketDetails.transactionDiscount;\n\n console.log(\n \"e-basket :TransactionDocumentBuilder: transaction Discount\",\n JSON.stringify(this.transactionDocument.basket.transactionDiscount)\n );\n }\n return this;\n }\n\n /**\n * Payments details\n * @param paymentDetails\n * @returns\n */\n paymentDetails(paymentDetails: any) {\n console.info(\"ebasket : payment details after transaction completed\",JSON.stringify(paymentDetails));\n \n this.transactionDocument.paymentDetails = paymentDetails;\n return this;\n }\n\n\n /**\n * Payments details\n * @param paymentDetails\n * @returns\n */\n splitPayment(splitPayment: boolean) { \n this.transactionDocument.splitPayment = splitPayment;\n return this;\n } \n\n /**\n * Payments details\n * @param paymentDetails\n * @returns\n */\n isPaymentCompleted(isPaymentCompleted: boolean) {\n this.transactionDocument.isPaymentCompleted = isPaymentCompleted;\n return this;\n } \n \n\n\n\n /**\n * Bases currency\n * @param currency\n * @returns currency\n */\n baseCurrency(currency: any): TransactionDocumentBuilder {\n this.transactionDocument.baseCurrency = currency;\n return this;\n }\n\n /**\n * gift option at\n * @returns at\n */\n giftOption(gift: any): TransactionDocumentBuilder {\n console.log(\n \"e-basket :TransactionDocumentBuilder: this.transactionDocument.giftoption\",\n gift\n );\n if (gift) {\n this.transactionDocument.giftedReceipt = gift;\n }\n return this;\n }\n /**\n\n/**\n * manual Discount\n * @param discountData\n * @returns\n */\n\n // manualDiscount(discountData : basketDiscount):TransactionDocumentBuilder {\n // let saleTotal = this.transactionDocument.basketSummary.basketTotal;\n // if(discountData.discountType =='Percent'){\n // this.transactionDocument.basketSummary.basketTotal = saleTotal-(saleTotal*(discountData.discountAmount/100));\n // discountData.discountAmount = -1*(saleTotal-this.transactionDocument.basketSummary.basketTotal);\n // }else {\n // this.transactionDocument.basketSummary.basketTotal =saleTotal-discountData.discountAmount;\n // discountData.discountAmount = -1*discountData.discountAmount;\n // }\n // this.transactionDocument.transactionDiscount.push(discountData);\n // return this;\n\n // }\n\n /**\n * Types transaction document builder\n * @param t\n * @returns type\n */\n type(t: any): TransactionDocumentBuilder {\n this.transactionDocument.type = t;\n return this;\n }\n /**\n * Operations status\n * @param o\n * @returns status\n */\n operationStatus(o: any): TransactionDocumentBuilder {\n this.transactionDocument.operationStatus = o;\n return this;\n }\n /**\n * Created at\n * @returns at\n */\n createdAt(): TransactionDocumentBuilder {\n const date = new Date();\n this.transactionDocument.createdAt = date.toISOString();\n this.transactionDocument.updatedAt = date.toISOString();\n return this;\n }\n /**\n * Updated at\n * @returns at\n */\n updatedAt(): TransactionDocumentBuilder {\n const date = new Date();\n this.transactionDocument.updatedAt = date.toISOString();\n return this;\n }\n /**\n * transsaction completion at\n * @returns transaction completion date\n */\n transactionCompletedAt(): TransactionDocumentBuilder {\n const date = new Date();\n this.transactionDocument.transCompletedAt = date.toISOString();\n return this;\n }\n /**\n * Builds transaction document builder\n * @returns build\n */\n build(): TransactionDocument {\n return this.transactionDocument;\n }\n\n /**\n * Sales total in refund\n * @param saleTotal\n * @returns total in refund\n */\n saleTotalInRefund(saleTotal: number): TransactionDocumentBuilder {\n this.transactionDocument.saleTotal = saleTotal;\n return this;\n }\n\n /**\n * Gets basket details\n * @returns basket details\n */\n getBasketDetails(): Basket {\n console.info(\"ebasket: Getting Basket for transactionDocument\", JSON.stringify(this.transactionDocument));\n\n let basket: Basket = {\n subsidiaryId : this.transactionDocument.subsidiaryId,\n transactionDiscount: this.transactionDocument.basket.transactionDiscount,\n transactionPromotion: this.transactionDocument.basket.transactionPromotion,\n transactionId: this.transactionDocument.transactionId,\n offlineTransactionId: this.transactionDocument.offlineTransactionId,\n total: this.transactionDocument.basketSummary.basketTotal,\n basketTotal: this.transactionDocument.basketSummary.basketTotal,\n discountTotal: this.transactionDocument.basketSummary.discountTotal,\n saleTotal: this.transactionDocument.basketSummary.saleTotal,\n refundTotal: this.transactionDocument.basketSummary.refundTotal,\n quantity: this.transactionDocument.basketSummary.totalItems,\n products: [],\n baseCurrency: this.transactionDocument.baseCurrency,\n customer: this.transactionDocument.customer,\n };\n\n basket.products = [] as Product[];\n this.transactionDocument.basket.products.forEach((product: { SKU: any; barCode: any; barcodes: any; description: any; imageUrls: any; totalLinePrice: any; itemLineId: any; excludePromotion: any; price: any; quantity: any; selectedRRPPrice: any; fullfilmentId: any; fullfilmentLocationName: any; deliveryGroup: string; leadTime: any; deliveryMethod: any; giftCard: any; giftCardExpiryDate: any; giftCardNumberIssued: any; giftCardRecipientEmail: any; giftCardRecipientName: any; refundedTotal: any; refundedQuantity: number; refundedReasonDescription: any; refundedReason: any; refundedPromotionalQuantity: any; isLastExchanged: any; }, index: any) => {\n console.log(JSON.stringify(product), \"ebasket: basket detail update in basket\");\n const p = {} as any;\n p.SKU = product.SKU;\n p.barcode = product.barCode;\n p.barcodes = product.barcodes;\n\n p.description = product.description;\n p.imageUrls = product.imageUrls;\n p.currency = this.transactionDocument.baseCurrency;\n p.totalLinePrice = product.totalLinePrice;\n p.itemLineId = Number(product.itemLineId);\n p.excludePromotion = product.excludePromotion;\n\n p.selectedPrice = product.price;\n p.quantity = product.quantity;\n p.total = product.totalLinePrice;\n p.selectedRRPPrice = product.selectedRRPPrice;\n\n p.fullfilmentId = product.fullfilmentId;\n p.fullfilmentLocationName = product.fullfilmentLocationName;\n p.deliveryGroup = product.deliveryGroup || \"1\";\n p.leadTime = product.leadTime;\n p.deliveryMethod = product.deliveryMethod || DELIVERY_METHODS.COLLECT_FROM_STORE.toString();\n\n if(p.fullfilmentId != this.transactionDocument.storeId)\n {\n p.isWebOrder = true;\n }\n \n p.giftCard = product.giftCard;\n p.giftCardExpiryDate = product.giftCardExpiryDate;\n p.giftCardNumberIssued = product.giftCardNumberIssued;\n p.giftCardRecipientEmail = product.giftCardRecipientEmail;\n p.giftCardRecipientName = product.giftCardRecipientName;\n \n if (\n this.transactionDocument.basket.lineDiscount &&\n this.transactionDocument.basket.lineDiscount.length > 0\n ) {\n this.transactionDocument.basket.lineDiscount.forEach((lineDiscount: { itemLineId: { toString: () => any; }; discountedLinePrice: any; }) => {\n if (product.itemLineId === lineDiscount.itemLineId.toString()) {\n p.lineDiscount = lineDiscount;\n p.total = lineDiscount.discountedLinePrice;\n }\n });\n }\n\n if (\n this.transactionDocument.basket.linePromotion &&\n this.transactionDocument.basket.linePromotion.length > 0\n ) {\n this.transactionDocument.basket.linePromotion.forEach((linePromotion: { itemLineId: { toString: () => any; }; promotionLinePrice: any; }) => {\n if (product.itemLineId === linePromotion.itemLineId.toString()) {\n p.linePromotions = linePromotion;\n p.total = linePromotion.promotionLinePrice;\n }\n });\n }\n\n if (\n this.transactionDocument.basket.taxBreakdown &&\n this.transactionDocument.basket.taxBreakdown.taxLines.length > 0\n ) {\n this.transactionDocument.basket.taxBreakdown.taxLines.forEach((taxLine: { itemLineId: { toString: () => any; }; VAT: any; VATCode: any; }) => {\n if (product.itemLineId && product.itemLineId === taxLine.itemLineId.toString()) {\n p.selectedVAT = taxLine.VAT;\n p.selectedVATCode = taxLine.VATCode;\n }\n });\n }\n\n if (this.transactionDocument.type === TRANSACTION_TYPE.REFUND) {\n p.total = product.refundedTotal;\n } else if ((this.transactionDocument.type === TRANSACTION_TYPE.SALE_REFUND || TRANSACTION_TYPE.SALE_EXCHANGE) && product.refundedQuantity > 0) {\n p.refundedReasonDescription = product.refundedReasonDescription;\n p.refundedReason = product.refundedReason;\n if (!p.refundedReasonDescription) {\n p.refundedReasonDescription = p.refundedReason;\n }\n p.refundedQuantity = product.refundedQuantity;\n p.refundPromotionalQuantity = product.refundedPromotionalQuantity;\n p.refundedTotal = product.refundedTotal;\n p.total -= Math.abs(p.refundedTotal);\n p.isLastExchanged = product.isLastExchanged;\n }\n\n if (this.transactionDocument.type === TRANSACTION_TYPE.REFUND) {\n if (p.total > 0) {\n p.total *= -1;\n }\n }\n\n basket.products.push(p);\n\n });\n\n basket = this.getTransactionDiscountAndTransactionPromotionPortion(basket);\n basket.total = (basket.basketTotal || 0) + this.getTotalDiscountWithTransactionDiscountsAndPromotions(basket);\n if (this.transactionDocument.type === TRANSACTION_TYPE.SALE_REFUND) {\n basket.quantity = this.getRefundedTotalWithQuantity(basket);\n }\n console.info(\"ebasket: Basket created successfully\", JSON.stringify(basket))\n return basket;\n }\n\n /**\n * Gets basket details\n * @returns refund basket details\n */\n // getRefundBasketDetails(): Basket {\n // let basket: Basket = {\n // subsidiaryId : this.transactionDocument.subsidiaryId,\n // transactionDiscount: this.transactionDocument.basket.transactionDiscount,\n // transactionPromotion: this.transactionDocument.basket.transactionPromotion,\n // transactionId: this.transactionDocument.transactionId,\n // total: this.transactionDocument.basketSummary.basketTotal,\n // basketTotal: this.transactionDocument.basketSummary.basketTotal,\n // discountTotal: this.transactionDocument.basketSummary.discountTotal,\n // saleTotal: this.transactionDocument.basketSummary.saleTotal,\n // quantity: this.transactionDocument.basketSummary.totalItems,\n // products: [],\n // baseCurrency: this.transactionDocument.baseCurrency,\n // customer: this.transactionDocument.customer,\n // };\n\n // basket.products = [] as Product[];\n // this.transactionDocument.basket.products.forEach((product: { SKU: any; barCode: any; barcodes: any; description: any; imageUrls: any; totalLinePrice: any; itemLineId: any; excludePromotion: any; price: number; quantity: any; selectedRRPPrice: any; fullfilmentId: any; fullfilmentLocationName: any; deliveryGroup: string; leadTime: any; deliveryMethod: any; giftCard: any; giftCardExpiryDate: any; giftCardNumberIssued: any; giftCardRecipientEmail: any; giftCardRecipientName: any; itemDiscounts: any; refundedPromotionalQuantity: any; refundedQuantity: number; refunded: any; isLastExchanged: any; exchange: any; refundedTotal: number; }, index: any) => {\n // const p = {} as Product;\n // p.SKU = product.SKU;\n // p.barcode = product.barCode;\n // p.barcodes = product.barcodes;\n\n // p.description = product.description;\n // p.imageUrls = product.imageUrls;\n // p.currency = this.transactionDocument.baseCurrency;\n // p.totalLinePrice = product.totalLinePrice;\n // p.itemLineId = Number(product.itemLineId);\n // p.excludePromotion = product.excludePromotion;\n\n // p.selectedPrice = product.price;\n // p.quantity = product.quantity;\n // p.total = product.totalLinePrice;\n // p.selectedRRPPrice = product.selectedRRPPrice;\n\n // p.fullfilmentId = product.fullfilmentId;\n // p.fullfilmentLocationName = product.fullfilmentLocationName;\n // p.deliveryGroup = product.deliveryGroup || \"1\";\n // p.leadTime = product.leadTime;\n // p.deliveryMethod = product.deliveryMethod || DELIVERY_METHODS.COLLECT_FROM_STORE.toString();\n\n // p.giftCard = product.giftCard;\n // p.giftCardExpiryDate = product.giftCardExpiryDate;\n // p.giftCardNumberIssued = product.giftCardNumberIssued;\n // p.giftCardRecipientEmail = product.giftCardRecipientEmail;\n // p.giftCardRecipientName = product.giftCardRecipientName;\n \n \n // if(p.fullfilmentId != this.transactionDocument.storeId)\n // {\n // p.isWebOrder = true;\n // }\n \n // if (product.itemDiscounts) {\n // p.itemDiscounts = product.itemDiscounts as ItemDiscount;\n // }\n\n // // if(!p.itemDiscounts){\n // // console.log(p.itemDiscounts);\n\n // // this.basketService.transactionDiscountAndPromotionProductortionCalculation(basket);\n // // }\n // p.refundPromotionalQuantity = product.refundedPromotionalQuantity ? product.refundedPromotionalQuantity : 0;\n\n // if (product.refundedQuantity) {\n // p.quantity = p.quantity - product.refundedQuantity;\n // p.totalLinePrice = (p.quantity * product.price);\n // p.total = p.totalLinePrice;\n // // p.refundPromotionalQuantity = product.refundedPromotionalQuantity;\n // p.refunded = product.refunded;\n // p.isLastExchanged = product.isLastExchanged;\n // }\n // if (product.exchange) {\n // p.exchange = product.exchange;\n // }\n\n // if (\n // this.transactionDocument.basket.lineDiscount &&\n // this.transactionDocument.basket.lineDiscount.length > 0\n // ) {\n\n // this.transactionDocument.basket.lineDiscount.forEach((lineDiscount: { itemLineId: { toString: () => any; }; discountedLinePrice: any; }) => {\n\n // if (product.itemLineId === lineDiscount.itemLineId.toString() && product.refundedQuantity > 0) {\n // p.lineDiscount = Object.assign({}, lineDiscount);\n // p.lineDiscount.discountedLinePrice = p.lineDiscount.unitPrice * p.quantity\n // p.lineDiscount.discountAmount = p.total - p.lineDiscount.discountedLinePrice\n // p.total = p.lineDiscount.discountedLinePrice;\n // } else if (product.itemLineId === lineDiscount.itemLineId.toString()) {\n // p.lineDiscount = lineDiscount;\n // p.total = lineDiscount.discountedLinePrice\n // }\n // });\n // }\n\n // if (\n // this.transactionDocument.basket.linePromotion &&\n // this.transactionDocument.basket.linePromotion.length > 0\n // ) {\n // this.transactionDocument.basket.linePromotion.forEach((linePromotion: { itemLineId: { toString: () => any; }; refunded: any; }) => {\n // if (product.itemLineId === linePromotion.itemLineId.toString() && !linePromotion.refunded) {\n // p.linePromotions = linePromotion;\n // p.total = p.linePromotions.promotionLinePrice;\n // p.total = p.total - (product.refundedTotal ? Math.abs(product.refundedTotal) : 0);\n // }\n // });\n // }\n\n // p.refundedQuantity = 0;\n // p.refundedTotal = 0;\n\n // if (\n // this.transactionDocument.basket.taxBreakdown &&\n // this.transactionDocument.basket.taxBreakdown.taxLines.length > 0\n // ) {\n // this.transactionDocument.basket.taxBreakdown.taxLines.forEach((taxLine: { itemLineId: { toString: () => any; }; VAT: any; VATCode: any; }) => {\n // if (product.itemLineId === taxLine.itemLineId.toString()) {\n // p.selectedVAT = taxLine.VAT;\n // p.selectedVATCode = taxLine.VATCode;\n // }\n // });\n // }\n\n // if (p.quantity > 0) {\n // basket.products.push(p);\n // }\n // });\n // // product.itemDiscounts\n // if (!basket.products[0].hasOwnProperty('itemDiscounts')) {\n // basket = this.getTransactionDiscountAndTransactionPromotionPortion(basket);\n\n // }\n\n // console.log(\"ebasket : TransactionDocumentBuilder :new created refunded basket\", JSON.stringify(basket))\n // basket.quantity = basket.products.reduce(\n // (n: any, { quantity }: any) => n + quantity,\n // 0\n // );\n // basket.total = this.getTotalWithLineDiscountAndLinePromotionApplied(basket);\n // basket.basketTotal = basket.total;\n // basket.basketTotal = basket.basketTotal - this.getTotalDiscountWithTransactionDiscountsAndPromotions(basket);\n // console.log(\n // \"ebasket : TransactionDocumentBuilder : update Basket Total: after promotion :basketTotal\",\n // basket.basketTotal\n // );\n\n // console.log(\n // \"e:basket :TransactionDocumentBuilder : basketDetails updated values\",\n // JSON.stringify(basket)\n // );\n // return basket;\n // }\n\n\n getTransactionDiscountAndTransactionPromotionPortion(basket:any) {\n if (\n basket.transactionDiscount &&\n basket.transactionDiscount.length > 0\n ) {\n basket.transactionDiscount.forEach((discount: { itemLineIds: any; }) => {\n if (!discount.itemLineIds) {\n discount.itemLineIds = basket.products.map((product: { itemLineId: any; }) => {\n return product.itemLineId\n });\n }\n basket = this.basketService.transactionDiscountProductPortionCalc(basket, discount);\n });\n }\n if (\n basket.transactionPromotion &&\n basket.transactionPromotion.length > 0\n ) {\n basket.transactionPromotion.forEach((tPromotion: { itemLineIds: any; }) => {\n if (!tPromotion.itemLineIds) {\n const filteredData = basket.products.filter(\n (item: { excludePromotion: boolean; }) => {\n return item.excludePromotion === false;\n });\n\n tPromotion.itemLineIds =\n filteredData.map((product: { itemLineId: any; }) => {\n return product.itemLineId\n });\n }\n basket = this.basketService.transactionPromotionProductPortionCalc(basket, tPromotion);\n });\n }\n\n return basket;\n }\n\n\n getTotalDiscountWithTransactionDiscountsAndPromotions(basketDetails: any) {\n\n let discountTotal = 0;\n if (\n basketDetails.transactionPromotion &&\n basketDetails.transactionPromotion.length > 0\n ) {\n discountTotal += basketDetails.transactionPromotion.reduce(\n (n: any, { promotionAmount }: any) => n + promotionAmount,\n 0\n );\n }\n if (\n basketDetails.transactionDiscount &&\n basketDetails.transactionDiscount.length > 0\n ) {\n\n discountTotal += basketDetails.transactionDiscount.reduce(\n (n: any, { discountAmount }: any) => n + discountAmount,\n 0\n );\n\n\n }\n console.log(\"ebasket : TransactionDocumentBuilder : Transaction discount Total:\", discountTotal);\n\n return discountTotal;\n }\n\n\n appendCurrencySymbol(currency: number, value: number) {\n // value=this.decimalpipe.transform(value,'1.2');\n if (value >= 0) {\n const returnval = currency + value;\n console.log(returnval, \"ebasket: add currency with value\");\n return returnval;\n } else {\n const returnval = \"-\" + (currency + value * -1);\n console.log(returnval, \"-(currency+(value*-1))\");\n return returnval;\n }\n }\n\n // /**\n // * Updates total refund\n // * @returns total refund\n // */\n // updateTotalRefund(): TransactionDocumentBuilder {\n // this.transactionDocument.basket.products.forEach((product) => {\n // product.refundedQuantity = product.quantity;\n // product.refundedTotal = product.totalLinePrice * -1;\n // console.log(\n // \"ebasket: Transaction price override :\",\n // this.transactionDocument.basket.lineDiscount\n // );\n\n // if (\n // this.transactionDocument.basket.linePromotion &&\n // this.transactionDocument.basket.linePromotion.length > 0\n // ) {\n // this.transactionDocument.basket.linePromotion.forEach((linePromotion) => {\n // console.log(\n // \"Promotion: basket linePromotion : \",\n // this.transactionDocument.basket.linePromotion\n // );\n // console.log(\n // \"linePromotion.itemLineId.toString() : \",\n // linePromotion.itemLineId.toString()\n // );\n // console.log(\n // \"condition : \" +\n // (product.itemLineId === linePromotion.itemLineId.toString())\n // );\n\n // if (product.itemLineId === linePromotion.itemLineId.toString()) {\n // product.refundedTotal =\n // linePromotion.promotionLinePrice * -1;\n // }\n // });\n // } else\n // if (\n // this.transactionDocument.basket.lineDiscount &&\n // this.transactionDocument.basket.lineDiscount.length > 0\n // ) {\n // this.transactionDocument.basket.lineDiscount.forEach((lineDiscount) => {\n // console.log(\n // \"product.itemLineId : \" +\n // this.transactionDocument.basket.lineDiscount\n // );\n // console.log(\n // \"lineDiscount.itemLineId.toString() : \" +\n // lineDiscount.itemLineId.toString()\n // );\n // console.log(\n // \"condition : \" +\n // (product.itemLineId === lineDiscount.itemLineId.toString())\n // );\n\n // if (product.itemLineId === lineDiscount.itemLineId.toString()) {\n // product.refundedTotal = lineDiscount.unitPrice * product.refundedQuantity * -1;\n // }\n // });\n // }\n\n // console.log(\"Product description :\" + product.description);\n // console.log(\"Product total :\" + product.refundedTotal);\n // // product.displayrefundedamount=this.appendCurrencySymbol(CURRENCY[this.transactionDocument.baseCurrency],product.refundedTotal);\n // // console.log(product.displayrefundedamount,\"displayrefundedamount\");\n // product.refunded = true;\n // });\n // const baskettotal = (this.transactionDocument.basketSummary.basketTotal *= -1);\n // // this.transactionDocument.basketSummary.displaybaskettotal=this.appendCurrencySymbol(CURRENCY[this.transactionDocument.baseCurrency], baskettotal);\n // const saletotal = (this.transactionDocument.basketSummary.saleTotal *= -1);\n // // this.transactionDocument.basketSummary.displaysaletotal = this.appendCurrencySymbol(CURRENCY[this.transactionDocument.baseCurrency], saletotal);\n // (this.transactionDocument.basketSummary.VATTotal *= -1);\n // return this;\n // }\n\n /**\n * Sale Total\n * @param basketDetails\n * @returns Sale Total\n */\n updateSaleTotal(basketDetails: { products: any[]; }) {\n const saleTotal = basketDetails.products.reduce(\n (n: any, { totalLinePrice }: any) => n + totalLinePrice,\n 0\n );\n return saleTotal\n }\n\n getTotalWithLineDiscountAndLinePromotionApplied(basketDetails: { products: any; }): number {\n let saletotal: number = 0.0;\n for (let product of basketDetails.products) {\n // if (product.linePromotions) {\n // saletotal += product.linePromotions.promotionLinePrice;\n // } else if (\n // product.lineDiscount &&\n // !product.linePromotions\n // ) {\n // saletotal +=\n // product.quantity * Number(product.lineDiscount.unitPrice.toFixed(2));\n // } else {\n // saletotal +=\n // product.quantity * Number(product.selectedPrice.toFixed(2));\n // }\n saletotal += product.total;\n console.log(\n \"e-basket:update product Total:\" + saletotal,\n JSON.stringify(product)\n );\n }\n return saletotal;\n }\n\n getRefundedTotalWithQuantity(basketDetails: { products: string | any[]; }): number {\n let quantity = 0;\n for (let index = 0; index < basketDetails.products.length; index++) {\n const product: any = basketDetails.products[index];\n\n if (!product.refundedReasonDescription) {\n\n quantity = quantity + product.quantity;\n\n } else {\n quantity = quantity + (product.quantity - product.refundedQuantity);\n\n // basketDetails.total = basketDetails.total + product.refundedTotal;\n\n }\n }\n return quantity;\n\n }\n\n /**\n * Discount Total\n * @returns Discount Total\n */\n updateDiscountTotal() {\n let refundTotal = this.transactionDocument.basketSummary.refundTotal ? this.transactionDocument.basketSummary.refundTotal : 0;\n console.info(\"e-basket: transaction builder: refundTotal\", JSON.stringify(refundTotal),\n JSON.stringify(this.transactionDocument.basketSummary));\n const discountTotal =\n Math.abs(\n Math.abs(this.transactionDocument.basketSummary.saleTotal) -\n (\n Math.abs(this.transactionDocument.basketSummary.basketTotal) + Math.abs(refundTotal)\n )\n );\n console.log(\"e-basket: transaction builder: discountTotal\", JSON.stringify(discountTotal))\n return Number(discountTotal.toFixed(2));\n }\n\n updateReasonCode(reasonCode: {\n code: string;\n name: string;\n }): TransactionDocumentBuilder {\n this.transactionDocument.reasonCode = reasonCode.code;\n this.transactionDocument.reasonDescription = reasonCode.name;\n return this;\n }\n\n updateManagerOverride(\n useroverride: UserOverride\n ): TransactionDocumentBuilder {\n this.transactionDocument.override = useroverride;\n return this;\n }\n\n updateUserID(\n userID: string\n ): TransactionDocumentBuilder {\n this.transactionDocument.userId = userID;\n return this;\n }\n\n updateUserName(name: any) : TransactionDocumentBuilder {\n this.transactionDocument.userName = name;\n return this;\n\n }\n \n addCustomerDetails(customerDetail: Customer): TransactionDocumentBuilder {\n this.transactionDocument.customer = customerDetail;\n return this;\n }\n\n updateTaxBreakdown(basketDetails: Basket): TransactionDocumentBuilder {\n // let transactionDiscountTotal = 0;\n let taxBreakdown: TaxBreakdown = {\n taxLines: [],\n totalTaxableAmount: 0,\n };\n\n\n\n // if (this.transactionDocument.basket.transactionDiscount && this.transactionDocument.basket.transactionDiscount.length > 0) {\n // this.transactionDocument.basket.transactionDiscount.forEach((discount) => {\n // transactionDiscountTotal += discount.discountAmount;\n // });\n // }\n\n // if (this.transactionDocument.basket.transactionPromotion && this.transactionDocument.basket.transactionPromotion.length > 0) {\n // this.transactionDocument.basket.transactionPromotion.forEach(\n // (promotion) => {\n // transactionDiscountTotal += promotion.promotionAmount;\n // }\n // );\n // }\n\n basketDetails.products.forEach((product: any) => {\n let taxLine: TaxLine = {\n itemLineId: product.itemLineId,\n VAT: product.selectedVAT ? product.selectedVAT : 0,\n VATCode: product.selectedVATCode,\n taxLineTotal: 0,\n taxableAmount: product.total,\n PreTax: 0\n };\n console.info(\"Product contribution : item line ID :\", product.itemLineId,\n \"tax line :\", JSON.stringify(taxLine));\n\n // step 1\n // if Transaction Discount and/or promotion applied, find net selling price of each product as taxableamount\n // if (transactionDiscountTotal > 0) {\n product = this.basketService.validateProductItemDiscount(product);\n\n const productContributionInTotal =\n product.itemDiscounts.trnDiscountsPortion +\n product.itemDiscounts.trnPromotionsPortion -\n product.itemDiscounts.refundPortion;\n // tp+td-rp;\n\n console.info(\"Product contribution : item line ID :\", product.itemLineId,\n \"contribution :\", JSON.stringify(productContributionInTotal));\n // calculate net selling price after applying transaction discount as per product contribution\n taxLine.taxableAmount -= productContributionInTotal;\n // }\n\n //step 2 - find pre tax\n taxLine.PreTax = this.numberUtilService.trimTo2Decimal2((taxLine.taxableAmount * 100) / (100 + taxLine.VAT));\n\n //step 3 - Update taxbreakdown\n taxBreakdown.totalTaxableAmount += taxLine.taxableAmount;\n taxLine.taxableAmount = this.numberUtilService.trimTo2Decimal2(taxLine.taxableAmount);\n \n // step 4 - update tax Line total\n taxLine.taxLineTotal = this.numberUtilService.trimTo2Decimal2(taxLine.taxableAmount - taxLine.PreTax);\n taxBreakdown.taxLines.push(taxLine);\n });\n\n taxBreakdown.totalTaxableAmount = this.numberUtilService.trimTo2Decimal2(taxBreakdown.totalTaxableAmount);\n this.transactionDocument.basket.taxBreakdown = taxBreakdown;\n return this;\n }\n\n updateTotalTaxSummary(): TransactionDocumentBuilder {\n\n console.log(\"Total Tax Summery Request :\", JSON.stringify(this.transactionDocument.basket.taxBreakdown));\n\n\n let totalTaxSummaryArray: TotalTaxSummary[] = []\n let totalTaxSummaryGroup = []\n\n console.log(\"Tax Lines for Total Tax Summery :\", JSON.stringify(this.transactionDocument.basket.taxBreakdown.taxLines));\n\n\n this.transactionDocument.basket.taxBreakdown.taxLines.forEach((element: { VATCode: any; VAT: any; PreTax: any; taxLineTotal: any; }) => {\n let TaxSummary: TotalTaxSummary = {\n VATCode: \"\",\n VAT: -12345,\n PreTaxSum: 0,\n TaxSum: 0,\n TXrateSum: 0\n \n };\n TaxSummary.VATCode = element.VATCode;\n TaxSummary.VAT = element.VAT; \n TaxSummary.PreTaxSum = this.numberUtilService.trimTo2Decimal2(element.PreTax);\n TaxSummary.TaxSum = this.numberUtilService.trimTo2Decimal2(element.taxLineTotal);\n TaxSummary.TXrateSum = this.numberUtilService.trimTo2Decimal2(TaxSummary.PreTaxSum + TaxSummary.TaxSum); \n totalTaxSummaryArray.push(TaxSummary);\n })\n\n console.log(\"Total Tax Summery Without Grouped : \", JSON.stringify(totalTaxSummaryArray));\n \n totalTaxSummaryGroup = totalTaxSummaryArray.reduce((preparedArray:any,currentObj) => {\n\n let ind = preparedArray.findIndex((x: { VAT: any; }) => x.VAT === currentObj.VAT);\n if(ind === -1){\n preparedArray.push(currentObj)\n }else {\n preparedArray[ind].VATCode = currentObj.VATCode;\n preparedArray[ind].VAT = currentObj.VAT;\n preparedArray[ind].PreTaxSum += currentObj.PreTaxSum;\n preparedArray[ind].TaxSum += currentObj.TaxSum;\n preparedArray[ind].TXrateSum += currentObj.TXrateSum;\n }\n return preparedArray;\n },[])\n \n console.log(\"Total Tax Summer Group :\",totalTaxSummaryGroup);\n\n\n this.transactionDocument.basket.totalTaxSummary = totalTaxSummaryGroup;\n\n return this;\n\n }\n\n\n /**\n * TransactionId\n * @returns OriginalTransactionId\n */\n addOriginalTransId(tranDoc:TransactionDocument): TransactionDocumentBuilder {\n if (this.transactionDocument.type === TRANSACTION_TYPE.REFUND || this.transactionDocument.type === TRANSACTION_TYPE.SALE_REFUND || this.transactionDocument.type === TRANSACTION_TYPE.SALE_EXCHANGE) {\n this.transactionDocument.originalTransId = tranDoc.transactionId;\n if(tranDoc.apiResponse && tranDoc.apiResponse.internalId)\n {\n this.transactionDocument.originalExternalId = tranDoc.apiResponse.internalId.toString();\n }\n }\n return this;\n }\n\n /**\n * unreferenced Refund\n * @returns boolean value\n */\n addUnreferencedRefund(): TransactionDocumentBuilder {\n this.transactionDocument.unreferencedRefund = true;\n return this;\n }\n\n getRefundTotal() {\n let totalRefund = 0;\n for (let index = 0; index < this.transactionDocument.basket.products.length; index++) {\n const product: TProduct = this.transactionDocument.basket.products[index];\n if (product.refundedTotal) {\n totalRefund = totalRefund + product.refundedTotal;\n }\n console.log(\"ebasket : transaction Service: totalRefund\" + totalRefund)\n }\n return totalRefund;\n }\n\n docId(docId: any): TransactionDocumentBuilder {\n this.transactionDocument.id = docId;\n return this;\n }\n}\n","import { DISCOUNTTYPE, LineDiscount, TProduct, TransactionDiscount, TransactionDocument, TRANSACTION_TYPE } from \"./mapper-library.model\"\nimport { TransactionDocumentBuilder } from \"./TransactionDocumentBuilder\";\nexport class RJMapperBuilderClass {\n\n private transactionDocument: TransactionDocument;\n private deviceId: any;\n private transactionNumber: any;\n private manifestVersion: any;\n private databaseSchemaVersion: any;\n private basketType: any;\n private xmlSchemaVersion: any;\n private majorVersion: any;\n private minorVersion: any;\n private externalState: any;\n private cashierId: any;\n private companyId: any;\n private terminalNumber: any;\n private taxMethodId: any;\n private tradingRegionId: any;\n private basketCurrencyId: any;\n private basketCountryId: any;\n private basketLanguageId: any;\n private itemCount = 0;\n private largestNumber = 0;\n private branchId: any;\n private createdAt: any;\n private updatedAt :any;\n private salesPersonName: any;\n private rjObject: any = {}\n\n constructor(transactionDoc?: TransactionDocument) {\n if (transactionDoc) {\n this.transactionDocument = transactionDoc;\n } else {\n this.transactionDocument = {\n transactionId: \"\",\n offlineTransactionId: \"\",\n transactionRef: \"\",\n dateTime: \"\",\n orgCode: \"\",\n storeId: \"\",\n storeNodeId: \"\",\n storeNodeStructure: \"\",\n deviceId: \"\",\n terminalId: \"\",\n userId: \"\",\n initiatingModule: \"eBasket\",\n export: false,\n basket: {} as any,\n basketSummary: {} as any,\n baseCurrency: \"\",\n type: \"\",\n operationStatus: \"\",\n createdAt: \"\",\n updatedAt: \"\",\n id: \"\",\n currentTransactionDetails: {} as any,\n saleTotal: 0,\n };\n }\n this.initilizeItemCount();\n this.setLineNumberForProducts();\n this.createdAt = this.getDate(this.transactionDocument.createdAt);\n this.updatedAt = this.getDate(this.transactionDocument.updatedAt);\n }\n\n getPosbasketInfo() {\n this.rjObject['Keyword'] = this.generateKeyword();\n this.rjObject['ID'] = this.generateId(this.createdAt);\n this.rjObject['XMLSchemaVersion'] = '2';\n this.rjObject['LastUpdated'] = this.updatedAt;\n this.rjObject['MajorVersion'] = this.majorVersion;\n this.rjObject['MinorVersion'] = this.minorVersion;\n this.rjObject['ManifestVersion'] = this.manifestVersion;\n this.rjObject['DatabaseSchemaVersion'] = this.databaseSchemaVersion;\n this.rjObject['BasketType'] = this.basketType;\n this.rjObject['State'] = this.getState();\n this.rjObject['ExternalState'] = this.externalState;\n\n return this;\n }\n\n\n getheaderInfo() {\n this.rjObject['Header'] = {};\n this.rjObject['Header'].TimeZoneOffset = this.convertToString(this.generateTimezoneoffset(this.transactionDocument.createdAt));\n this.rjObject['Header'].DateTimeCreated = this.createdAt;\n this.rjObject['Header'].OriginatedBy = {};\n this.rjObject['Header'].OriginatedBy.DeviceID = this.deviceId;\n this.rjObject['Header'].OriginatedBy.CashierID = this.cashierId;\n this.rjObject['Header'].OriginatedBy.CompanyID = this.companyId;\n this.rjObject['Header'].OriginatedBy.StoreID = this.transactionDocument.storeId;\n this.rjObject['Header'].OriginatedBy.BranchID = this.branchId;\n this.rjObject['Header'].OriginatedBy.TerminalNumber = this.terminalNumber;\n this.rjObject['Header'].OriginatedBy.TransactionNumber = this.transactionNumber;\n this.rjObject['Header'].TaxMethodID = this.taxMethodId;\n this.rjObject['Header'].DynamicStockLookup = this.generateDynamicStockLookUp();\n this.rjObject['Header'].BasketLanguageID = this.basketLanguageId; //todo\n this.rjObject['Header'].BasketCountryID = this.basketCountryId; //todo\n this.rjObject['Header'].BasketCurrencyID = this.transactionDocument.baseCurrency;\n this.rjObject['Header'].TradingRegionID = this.tradingRegionId;\n this.rjObject['Header'].Eurozone = \" \";//unknown\n this.rjObject['Header'].EuroBaseExchangeRate = \"\"; //unknown\n this.rjObject['Header'].PrintableName = this.transactionDocument.userName; //unknown\n\n return this;\n }\n\n rjMapper() {\n var transactionDiscount:any = [] ;\n if (this.transactionDocument.basket.transactionDiscount && this.transactionDocument.basket.transactionDiscount.length > 0) {\n transactionDiscount = this.transactionDocument.basket.transactionDiscount\n }\n if (this.transactionDocument.type === TRANSACTION_TYPE.SALE) {\n this.rjObject['ProductSale'] = [];\n this.rjObject['ModifierItem'] = [];\n\n this.transactionDocument.basket.products.forEach((element: any) => {\n let lineDiscount = [];\n if (this.transactionDocument.basket.lineDiscount && this.transactionDocument.basket.lineDiscount.length > 0) {\n lineDiscount = this.transactionDocument.basket.lineDiscount.filter((x: any) => x.itemLineId === element.itemLineId);\n if (lineDiscount.length > 0) {\n const index = this.transactionDocument.basket.lineDiscount.indexOf(lineDiscount[0]);\n if (index > -1) {\n this.transactionDocument.basket.lineDiscount.splice(index, 1);\n }\n }\n }\n let data = this.addProduct(element, (lineDiscount.length > 0 ? lineDiscount[0] : null),(transactionDiscount.length > 0 ? transactionDiscount : null));\n this.rjObject['ProductSale'].push(data);\n this.getModifierItem(lineDiscount.length > 0 ? lineDiscount[0] : null, element.itemLineId);\n });\n let transactionPromotion = [];\n if (this.transactionDocument.basket.transactionPromotion && this.transactionDocument.basket.transactionPromotion.length > 0) {\n transactionPromotion = this.transactionDocument.basket.transactionPromotion;\n this.getTransactionPromotion(transactionPromotion);\n }\n } else if (this.transactionDocument.type === TRANSACTION_TYPE.REFUND) {\n this.rjObject['ProductReturn'] = [];\n this.rjObject['ModifierItem'] = []; \n this.transactionDocument.basket.products.forEach((element: any) => {\n let data = this.returnProduct(element, (element.hasOwnProperty('lineDiscount') ? element.lineDiscount : null),(transactionDiscount.length > 0 ? transactionDiscount : null));\n this.rjObject['ProductReturn'].push(data);\n this.getModifierItem(element.lineDiscount, element.itemLineId);\n });\n } else if (this.transactionDocument.type === TRANSACTION_TYPE.SALE_REFUND) {\n this.rjObject['ProductReturn'] = [];\n this.rjObject['ModifierItem'] = [];\n \n let transactionDoc: any = new TransactionDocumentBuilder().basket(this.transactionDocument.currentTransactionDetails).build();\n transactionDoc.basket.products.forEach((element: any) => {\n let data = this.returnProduct(element, (element.hasOwnProperty('lineDiscount') ? element.lineDiscount : null),(transactionDiscount.length > 0 ? transactionDiscount : null));\n let obj = {\n \"OriginalReceiptSupplied\": 0,\n \"OriginalBranchID\": 0,\n \"OriginalTerminalNumber\": 0,\n \"OriginalTransactionNumber\": 0,\n \"OriginalCashierNumber\": 0\n };\n data['Return'] = {...data['Return'], ...obj};\n this.rjObject['ProductReturn'].push(data);\n this.getModifierItem(element.lineDiscount, element.itemLineId);\n })\n } else if (this.transactionDocument.type === TRANSACTION_TYPE.SALE_EXCHANGE) {\n this.rjObject['ProductReturn'] = [];\n this.rjObject['ProductSale'] = [];\n this.rjObject['ModifierItem'] = [];\n \n let transactionDoc: any = new TransactionDocumentBuilder().basket(this.transactionDocument.currentTransactionDetails).build();\n transactionDoc.basket.products.forEach((element: any) => {\n if (element.refundedQuantity > 0) {\n let returnProduct = this.returnProduct(element, (element.hasOwnProperty('lineDiscount') ? element.lineDiscount : null),(transactionDiscount.length > 0 ? transactionDiscount : null));\n let obj = {\n \"OriginalReceiptSupplied\": 0,\n \"OriginalBranchID\": 0,\n \"OriginalTerminalNumber\": 0,\n \"OriginalTransactionNumber\": 0,\n \"OriginalCashierNumber\": 0\n };\n returnProduct['Return'] = {...returnProduct['Return'], ...obj};\n this.rjObject['ProductReturn'].push(returnProduct);\n } else {\n let addProduct = this.addProduct(element, (element.hasOwnProperty('lineDiscount') ? element.lineDiscount : null) ,(transactionDiscount.length > 0 ? transactionDiscount : null));\n this.rjObject['ProductSale'].push(addProduct);\n }\n this.getModifierItem(element.lineDiscount, element.itemLineId);\n })\n\n }\n return this;\n }\n\n getBasketDiscount() {\n if (!this.transactionDocument.basket.transactionDiscount) return this;\n this.rjObject['BasketDiscount'] = [];\n this.transactionDocument.basket.transactionDiscount.forEach((element: any) => {\n let obj: any = {}\n obj['XMLSchemaVersion'] = this.xmlSchemaVersion;\n obj['DeviceID']=this.deviceId;\n obj['DateTimeCreated']=this.updatedAt;\n obj['NetValue'] = this.convertToString(element.discountAmount * -1);\n obj['EffectiveNetValue'] =this.convertToString( element.discountAmount * -1);\n obj['Description'] = element.reasonDisplayText;\n obj['UserID'] = this.transactionDocument.userName;\n obj['ReasonCodeID'] = element.reasonCode;\n obj['DiscountType'] = this.convertToString(element.discountType.toUpperCase() == DISCOUNTTYPE.PERCENT.toUpperCase() ? 0 : 1); \n obj['RoundingRule'] = this.convertToString(2);\n obj['ModifiedLineNumber'] = element.itemLineIds; \n obj['LineNumber'] = this.convertToString(this.generateLineNumber()); \n obj['DiscountedValue'] = this.transactionDocument.basketSummary.basketTotal + this.transactionDocument.basketSummary.discountTotal;\n if(element.discountType.toUpperCase() == DISCOUNTTYPE.PERCENT.toUpperCase()){\n obj['DiscountPercentage'] = this.convertToString((element.discountAmount / this.transactionDocument.basketSummary.basketTotal).toFixed(1))\n }\n if(this.transactionDocument.type === 'REFUND'){\n obj['NetValue'] = this.convertToString(element.discountAmount < 0 ? -element.discountAmount : element.discountAmount);\n obj['EffectiveNetValue'] =this.convertToString( element.discountAmount < 0 ? -element.discountAmount : element.discountAmount);\n }\n\n this.rjObject['BasketDiscount'].push(obj);\n });\n return this;\n }\n\n getModifierItem(data: any, lineNo: any) {\n if (data && lineNo) {\n let obj: any = {};\n obj.XMLSchemaVersion = 1;\n obj.LineNumber = this.generateLineNumber();\n obj.NetValue = 0;\n obj.EffectiveNetValue = 0;\n obj.Description = data.percentageDiscountReasonName ? data.percentageDiscountReasonName : data.priceOverrideReasonName;\n obj.DeviceID = this.deviceId;\n obj.UserID = this.transactionDocument.userName;\n obj.DateTimeCreated = this.updatedAt;\n obj.AuthorisingUserID = this.transactionDocument.userName;\n obj.ReasonCodeID = data.percentageDiscountReasonCode ? data.percentageDiscountReasonCode : data.priceOverrideReasonCode;\n obj.ModifiedLineNumber = lineNo;\n obj.ModifiedIndex = 1;\n\n this.rjObject['ModifierItem'].push(obj);\n }\n }\n\n getTrailerInfo() {\n this.rjObject['Trailer'] = {};\n this.rjObject.Trailer.DateTimeCompleted = this.updatedAt;\n this.rjObject.Trailer.CompletedBy = {};\n this.rjObject.Trailer.CompletedBy.DeviceID = this.deviceId;\n this.rjObject.Trailer.CompletedBy.CashierID = this.cashierId;\n this.rjObject.Trailer.CompletedBy.StoreID = this.transactionDocument.storeId;\n this.rjObject.Trailer.CompletedBy.BranchID = this.branchId;\n this.rjObject.Trailer.CompletedBy.TerminalNumber = this.terminalNumber;\n this.rjObject.Trailer.CompletedBy.TransactionNumber = this.transactionNumber;\n this.rjObject.Trailer.Total = this.convertToString(this.transactionDocument.basketSummary.basketTotal * 100);\n this.rjObject.Trailer.ItemCount = this.itemCount; //gives total count for product\n this.rjObject.Trailer.ItemQuantity = this.convertToString(this.transactionDocument.basketSummary.totalItems);\n this.rjObject.Trailer.NetItemQuantity = this.convertToString(this.transactionDocument.basketSummary.totalItems);\n this.rjObject.Trailer.TaxTotal = this.convertToString(this.removeDecimal(this.transactionDocument.basketSummary.VATTotal));\n this.rjObject.Trailer.SequenceDeviceID = this.deviceId;\n this.rjObject.Trailer.SequenceNumber = 'snsn' //static for now\n\n this.rjObject['Trailer']['TaxItem'] = [];\n this.transactionDocument.basket.taxBreakdown.taxLines.forEach((element: any) => {\n let obj: any = {};\n\n obj['XMLSchemaVersion'] = this.xmlSchemaVersion;\n obj['TaxRate'] = this.convertToString(element.VATCode);\n obj['TaxableTotal'] = this.convertToString(this.removeDecimal(element.taxableAmount));\n obj['TaxTotal'] = this.convertToString(this.removeDecimal(this.removeDecimal(element.taxLineTotal)));\n obj['TaxDescription'] = this.convertToString(element.VATCode);\n obj['TaxIncluded'] = '1';\n obj['TaxPercentage'] = this.addDecimal(element.VAT.toFixed(2)).toFixed(2);\n\n this.rjObject['Trailer']['TaxItem'].push(obj)\n });\n if (this.transactionDocument.basket.linePromotion.length > 0 || this.transactionDocument.basket.linePromotion.length > 0) {\n this.rjObject['Trailer']['PromotionItem'] = [];\n if (this.transactionDocument.basket.linePromotion.length > 0) {\n this.transactionDocument.basket.linePromotion.forEach((element: any) => {\n let obj: any = {};\n\n obj['PromotionID'] = element.promotionId;\n obj['PromotionSaving'] = element.promotionAmount < 0 ? element.promotionAmount : -element.promotionAmount;\n obj['PromotionQuantity'] = \"1\";\n obj['PromotionDescription'] = element.displayText;\n obj['PromotionHit'] = {}\n obj['PromotionHit']['XMLSchemaVersion'] = this.xmlSchemaVersion;\n obj['PromotionHit']['HitNumber'] = \"1\";\n obj['PromotionHit']['HitQuantity'] = \"1\";\n obj['PromotionHit']['HitSaving'] = element.promotionAmount < 0 ? element.promotionAmount : -element.promotionAmount;\n obj['PromotionHit']['PromotionTrigger'] = {};\n let product = this.transactionDocument.basket.products.find((item: any) => item.itemLineId == element.itemLineId);\n obj['PromotionHit']['PromotionTrigger']['XMLSchemaVersion'] = this.xmlSchemaVersion;\n obj['PromotionHit']['PromotionTrigger']['ProductID'] = product.SKU;\n obj['PromotionHit']['PromotionTrigger']['UnitValue'] = this.convertToString(element.promotionLinePrice / product.quantity);\n obj['PromotionHit']['PromotionTrigger']['LineNumber'] = this.getNumber(product.SKU);\n obj['PromotionHit']['PromotionTrigger']['Quantity'] = this.convertToString(product.quantity.toFixed(1));\n obj['PromotionHit']['PromotionTrigger']['TaxCode'] = this.transactionDocument.basket.taxBreakdown.taxLines.find((item: any) => item.itemLineId == element.itemLineId).VATCode;\n this.rjObject['Trailer']['PromotionItem'].push(obj);\n });\n }\n\n if (this.transactionDocument.basket.transactionPromotion.length > 0) {\n\n this.transactionDocument.basket.transactionPromotion.forEach((element: any) => {\n let obj: any = {};\n obj['PromotionID'] = element.promotionId;\n obj['PromotionSaving'] = element.promotionAmount < 0 ? element.promotionAmount : -element.promotionAmount;\n obj['PromotionQuantity'] = \"1\";\n obj['PromotionDescription'] = element.displayText;\n obj['PromotionHit'] = {}\n obj['PromotionHit']['XMLSchemaVersion'] = this.xmlSchemaVersion;\n obj['PromotionHit']['HitNumber'] = \"1\";\n obj['PromotionHit']['HitQuantity'] = \"1\";\n obj['PromotionHit']['HitSaving'] = element.promotionAmount < 0 ? element.promotionAmount : -element.promotionAmount;\n obj['PromotionHit']['PromotionTrigger'] = [];\n this.transactionDocument.basket.products.forEach((product: any) => {\n let promotionTrigger = {};\n element.itemLineIds.forEach((itemLineId: any) => {\n if (JSON.stringify(itemLineId) === product.itemLineId) {\n promotionTrigger['XMLSchemaVersion'] = this.xmlSchemaVersion;\n promotionTrigger['ProductID'] = product.SKU;\n promotionTrigger['UnitValue'] = this.convertToString(element.promotionLinePrice / product.quantity);\n promotionTrigger['LineNumber'] = this.getNumber(product.SKU);\n promotionTrigger['Quantity'] = this.convertToString(product.quantity);\n promotionTrigger['TaxCode'] = this.transactionDocument.basket.taxBreakdown.taxLines.find((item: any) => item.itemLineId == product.itemLineId).VATCode;\n obj['PromotionHit']['PromotionTrigger'].push(promotionTrigger);\n }\n });\n });\n this.rjObject['Trailer']['PromotionItem'].push(obj);\n });\n }\n }\n return this;\n }\n\n getTenderInfo() {\n if (this.transactionDocument.paymentDetails && this.transactionDocument.paymentDetails.length > 0) {\n this.transactionDocument.paymentDetails.forEach((element: any) => {\n if(element.externalTenderKey){\n this.rjObject[element.externalTenderKey] = [];\n if (element.paymentType.toUpperCase() === 'GIFT CARD') {\n let obj = {\n XMLSchemaVersion: this.xmlSchemaVersion,\n LineNumber: this.generateLineNumber(),\n NetValue: this.convertToString(-1 * this.removeDecimal((Math.round(element.amount)))),\n EffectiveNetValue: this.convertToString(-1 * this.removeDecimal((Math.round(element.amount)))),\n Description: this.getDescription(element),\n DeviceID: this.deviceId,\n UserID: this.transactionDocument.userName,\n DateTimeCreated: this.updatedAt,\n TenderType: element.externalTenderType ? element.externalTenderType : '',\n TenderSubType: element.externalSubTenderType ? element.externalSubTenderType : '',\n TenderAmount: this.convertToString(-1 * this.removeDecimal((Math.round(element.amount)))),\n CurrencyID: this.transactionDocument.baseCurrency,\n CurrencyDescription: this.transactionDocument.baseCurrency,\n GiftVoucherSalesAllowed: '',//todo\n AllowRechargeableVoucherSales: '',//todo\n GiftVoucherID: ''\n }\n this.rjObject[element.externalTenderKey].push(obj)\n }\n else {\n let obj1 = {\n XMLSchemaVersion: \"1\",\n LineNumber: this.generateLineNumber(),//todo\n NetValue: this.convertToString(-1 * this.removeDecimal(Math.round(element.amount))),\n EffectiveNetValue: this.convertToString(-1 * this.removeDecimal(Math.round(element.amount))),\n Description: this.getDescription(element),\n DeviceID: this.deviceId,\n UserID: this.transactionDocument.userName,\n DateTimeCreated: this.updatedAt,\n TenderType: element.externalTenderType ? element.externalTenderType : '',\n TenderSubType: element.externalSubTenderType ? element.externalSubTenderType : '',\n TenderAmount: this.convertToString(-1 * this.removeDecimal(Math.round(element.amount))),\n CurrencyID: this.transactionDocument.baseCurrency,\n CurrencyDescription: this.transactionDocument.baseCurrency,\n IncludeInTransactionTotalCheck: \"1\",\n AllowRechargeableVoucherSales: \"1\",\n OpenDrawerAtEnd: \"1\"\n }\n this.rjObject[element.externalTenderKey].push(obj1)\n }\n } else{\n this.rjObject['CashTender'] = [];\n if (element.paymentType.toUpperCase() === 'GIFT CARD') {\n let obj = {\n XMLSchemaVersion: this.xmlSchemaVersion,\n LineNumber: this.generateLineNumber(),\n NetValue: JSON.stringify(-1 * this.removeDecimal((Math.round(element.amount)))),\n EffectiveNetValue: JSON.stringify(-1 * this.removeDecimal((Math.round(element.amount)))),\n Description: this.getDescription(element),\n DeviceID: this.deviceId,\n UserID: this.transactionDocument.userName,\n DateTimeCreated: this.updatedAt,\n TenderType: element.externalTenderType ? element.externalTenderType : '',\n TenderSubType: element.externalSubTenderType ? element.externalSubTenderType : '',\n TenderAmount: JSON.stringify(-1 * this.removeDecimal((Math.round(element.amount)))),\n CurrencyID: this.transactionDocument.baseCurrency,\n CurrencyDescription: this.transactionDocument.baseCurrency,\n GiftVoucherSalesAllowed: '',//todo\n AllowRechargeableVoucherSales: '',//todo\n GiftVoucherID: ''\n }\n this.rjObject['CashTender'].push(obj)\n }\n else {\n let obj1 = {\n XMLSchemaVersion: \"1\",\n LineNumber: this.generateLineNumber(),\n NetValue: JSON.stringify(-1 * this.removeDecimal((Math.round(element.amount)))),\n EffectiveNetValue: JSON.stringify(-1 * this.removeDecimal((Math.round(element.amount)))),\n Description: this.getDescription(element),\n DeviceID: this.deviceId,\n UserID: this.transactionDocument.userName,\n DateTimeCreated: this.updatedAt,\n TenderType: element.externalTenderType ? element.externalTenderType : '',\n TenderSubType: element.externalSubTenderType ? element.externalSubTenderType : '',\n TenderAmount: JSON.stringify(-1 * this.removeDecimal((Math.round(element.amount)))),\n CurrencyID: this.transactionDocument.baseCurrency,\n CurrencyDescription: this.transactionDocument.baseCurrency,\n IncludeInTransactionTotalCheck: \"1\",\n AllowRechargeableVoucherSales: \"1\",\n OpenDrawerAtEnd: \"1\"\n }\n this.rjObject['CashTender'].push(obj1)\n }\n }\n });\n }\n return this;\n }\n\n getNumber(productId) {\n let lineNumber; \n for (let i = 0; i < this.rjObject['ProductSale'].length; i++) {\n const element = this.rjObject['ProductSale'][i];\n if(JSON.stringify(productId) === JSON.stringify(element.ProductID)){\n lineNumber = element.LineNumber;\n break;\n }\n }\n return lineNumber;\n }\n\n setLineNumberForProducts() {\n let itemLineIdArray = [];\n itemLineIdArray = this.transactionDocument.basket.products.map((product: any) => {\n return parseInt(product.itemLineId);\n })\n this.largestNumber = itemLineIdArray.reduce((a: any, b: any) => Math.max(a, b));\n }\n\n generateLineNumber() {\n this.largestNumber += 1;\n this.itemCount += 1;\n return this.largestNumber;\n }\n\n initilizeItemCount() {\n this.itemCount = this.transactionDocument.basket.products.length;\n }\n\n build() {\n return this.rjObject;\n }\n\n getDescription(element: any) {\n if (element.paymentType.toUpperCase() === 'CARD') {\n return element.cardType\n }\n else {\n return element.paymentType;\n }\n }\n\n getMMGROUPID(attributes) {\n if (attributes && attributes.length > 0) {\n let filterValue = attributes.filter((attribute) => attribute.name === \"MMGROUPID\");\n if(filterValue && filterValue.length > 0){\n return filterValue[0].value;\n }\n }\n }\n\n setDeviceInfo(id: any) {\n this.deviceId = id\n return this\n }\n\n removeDecimal(value: number) {\n return value * 100;\n }\n\n addDecimal(value: number) {\n return value /100;\n }\n\n setTransactionNumber(value: any) {\n this.transactionNumber = value;\n return this\n }\n\n setManifestVersion(value: any) {\n this.manifestVersion = value;\n return this\n }\n\n setDatabaseSchemaVersion(value: any) {\n this.databaseSchemaVersion = value;\n return this\n }\n\n setBasketType(value: any) {\n this.basketType = value;\n return this\n }\n\n setTradingRegionID(value: any) {\n this.tradingRegionId = value\n return this\n }\n\n setCompanyID(value: any) {\n this.companyId = value\n return this\n }\n\n setTaxMethodID(value: any) {\n this.taxMethodId = value\n return this\n }\n\n setMajorVersion(value: any) {\n this.majorVersion = value\n return this\n }\n\n setMinorVersion(value: any) {\n this.minorVersion = value\n return this\n }\n\n setXMLSchemaVersion(value: any) {\n this.xmlSchemaVersion = value\n return this\n }\n\n setExternalState(value: any) {\n this.externalState = value\n return this\n }\n\n setCashierID() {\n this.cashierId = (this.transactionDocument && this.transactionDocument.userName) ? this.transactionDocument.userName : '';\n return this\n }\n\n setTerminalNumber(value: any) {\n this.terminalNumber = value;\n return this;\n }\n\n setBasketLanguageID(value: any) {\n this.basketLanguageId = value;\n return this;\n }\n setBasketCountryID(value: any) {\n this.basketCountryId = value;\n return this;\n }\n\n setBasketCurrencyID(value: any) {\n this.basketCurrencyId = value;\n return this;\n }\n\n setBranchID(value: any) {\n this.branchId = value;\n return this;\n }\n\n setSalesPersonName(value: any) {\n this.salesPersonName = value;\n return this;\n }\n\n generateId(date: any) {\n let newDateTime = date.replace(/[^0-9]/g, '')\n let id = (this.deviceId + '|' + newDateTime + '|' + this.transactionNumber).toString();\n return id;\n } \n\n generateTimezoneoffset(date: any) {\n let x = date ? date : '';\n return new Date(x).getTimezoneOffset();\n }\n\n generateKeyword() {\n let x = (this.companyId + '|' + this.transactionDocument.storeId + '|' + this.terminalNumber + '|' + this.transactionNumber).toString();\n return x;\n }\n\n getState() {\n if (this.transactionDocument.operationStatus === 'PAY_SUCCESS') {\n return 'Completed';\n }\n else {\n return 'Cancelled';\n }\n }\n\n returnProduct(element: any, lineDiscount: LineDiscount , transactionDiscount: TransactionDiscount) {\n let obj: any = {};\n let taxTotal = this.transactionDocument.basket['taxBreakdown']['taxLines'].find((item: any) => item.itemLineId == element['itemLineId']);\n obj['XMLSchemaVersion'] = this.xmlSchemaVersion;\n obj['LineNumber'] = element['itemLineId'];\n obj['NetValue'] = this.removeDecimal(element['refundedTotal']);\n obj['EffectiveNetValue'] = this.removeDecimal(element['refundedTotal']);\n obj['Description'] = element['description'];\n obj['DeviceID'] = this.transactionDocument['terminalId'];\n obj['UserID'] = this.transactionDocument.userName;\n obj['DateTimeCreated'] = this.createdAt;\n obj['ExtendedValue'] = this.removeDecimal(element['totalLinePrice']*-1);\n obj['UnitPrice'] = this.removeDecimal(element['price']);\n obj['Quantity'] = this.getQuantity(element);\n obj['OriginalTaxAmountSet'] = 1;\n obj['ProductID'] = element['SKU'];\n obj['HandKeyed'] = 1;\n obj['LongDescription'] = element['description'];\n obj['Return'] = {};\n obj['Return']['ReturnReasonID'] = element['refundedReason'];\n obj['Return']['ReturnDescription'] = element['refundedReasonDescription'];\n obj['Return']['ReturnToStock'] = this.getQuantity(element);\n obj['TaxCode'] = this.transactionDocument.basket['taxBreakdown']['taxLines'].find((item: any) => item.itemLineId == element['itemLineId']).VATCode;\n\n obj['DisplayTaxCode'] = ''; // todo\n obj['ProductAttributes'] = ''; //todo - not required\n obj['Perishable'] = this.getMMGROUPID(element.attributes);\n //obj['MMGroupID'] = this.getCaregories(element);\n obj['MMGroupID'] = this.getMMGROUPID(element.attributes);\n obj['CustomerDetails'] = \"\"; // todo - blank\n obj['TotalPromotionSaving'] = element['promotionAmount'] || -1; // TODO\n obj['OriginalTaxAmount'] = this.convertToString((this.removeDecimal(this.getOriginalTax(element,taxTotal.VAT) * -1)).toFixed(2));\n obj['taxAmount'] = this.removeDecimal(taxTotal.taxLineTotal < 0 ?(taxTotal.taxLineTotal) : (-taxTotal.taxLineTotal));\n\n if (lineDiscount) {\n if (lineDiscount.percentageDiscountReasonName && lineDiscount.percentageDiscountReasonCode) {\n // line discount\n obj['Discount'] = {};\n obj['Discount'].ModifierValue = this.removeDecimal(lineDiscount.discountAmount) * -1;\n obj['Discount'].ModifierDateTime = obj.DateTimeCreated;\n obj['Discount'].ModifierReasonID = lineDiscount.percentageDiscountReasonCode;\n obj['Discount'].ModifierDescription = lineDiscount.percentageDiscountReasonName;\n obj['Discount'].AuthorisingUserID = this.transactionDocument.userName;\n obj['Discount'].DiscountType = lineDiscount.discountType;\n obj['Discount'].XMLSchemaVersion = 1;\n obj['Discount'].OriginalPrice = this.removeDecimal(lineDiscount.discountAmount + (lineDiscount.discountedLinePrice || 0));\n obj['Discount'].DiscountedValue = this.removeDecimal(lineDiscount.unitPrice);\n obj['Discount'].DiscountPercentage = lineDiscount.percentageDiscountValue;\n obj['Discount'].RoundingRule = 2;\n }\n\n if (lineDiscount.priceOverrideReasonCode && lineDiscount.priceOverrideReasonName) {\n //price override\n obj['PriceOverride'] = {};\n obj['PriceOverride'].ModifierValue = this.removeDecimal(lineDiscount.discountAmount) * -1;\n obj['PriceOverride'].ModifierDateTime = obj.DateTimeCreated;\n obj['PriceOverride'].ModifierReasonID = lineDiscount.priceOverrideReasonCode;\n obj['PriceOverride'].ModifierReasonDescription = lineDiscount.priceOverrideReasonName;\n obj['PriceOverride'].AuthorisingUserID = this.transactionDocument.userName;\n obj['PriceOverride'].XMLSchemaVersion = 1;\n obj['PriceOverride'].NewPrice = this.removeDecimal(lineDiscount.unitPrice);\n obj['PriceOverride'].OriginalPrice = this.removeDecimal(lineDiscount.discountedLinePrice || 0 + lineDiscount.discountAmount);\n }\n\n //update the product price\n obj.NetValue = ((lineDiscount.discountedLinePrice || 0) + lineDiscount.discountAmount) * -1;\n obj.EffectiveNetValue = ((lineDiscount.discountedLinePrice || 0) + lineDiscount.discountAmount) * -1;\n obj.ExtendedValue = ((lineDiscount.discountedLinePrice || 0) + lineDiscount.discountAmount) * -1;\n obj.UnitPrice = ((lineDiscount.discountedLinePrice || 0) + lineDiscount.discountAmount) * -1;\n }\n\n if(transactionDiscount) {\n obj['BasketDiscountModifier'] = [];\n this.transactionDocument.basket.transactionDiscount.forEach((e: any) => { \n let discountObj: any ={}\n e.itemLineIds.forEach((x: any) => {\n if (x == element.itemLineId) { \n var discountAmount = this.convertToString(e.discountAmount * -1); \n discountObj.BasketDiscountLineNumber = this.getLineNumber(e,discountAmount);\n discountObj.XMLSchemaVersion = this.xmlSchemaVersion;\n discountObj.DiscountedValue = this.getDiscountedValue(element.totalLinePrice, e.discountAmount);\n obj['BasketDiscountModifier'].push(discountObj);\n } \n }); \n });\n var totaltransactionDiscount = 0;\n obj['BasketDiscountModifier'].forEach((value:any)=>{\n totaltransactionDiscount = totaltransactionDiscount + value.DiscountedValue;\n });\n //update the product price\n obj['EffectiveNetValue'] = obj.EffectiveNetValue + totaltransactionDiscount;\n }\n\n if (this.transactionDocument.basket.transactionPromotion.length > 0) {\n obj['PromotionSaving'] = [];\n this.transactionDocument.basket.transactionPromotion.forEach((transactionPromo: any) => {\n let promotionObj: any = {};\n transactionPromo.itemLineIds.forEach((itemLineId: any) => {\n if (itemLineId == element.itemLineId) {\n promotionObj.ModifierValue = transactionPromo.promotionAmount;\n promotionObj.ModifierDateTime = this.transactionDocument.createdAt;\n promotionObj.ModifierDescription = transactionPromo.displayText;\n promotionObj.XMLSchemaVersion = this.xmlSchemaVersion;\n promotionObj.PromotionID = transactionPromo.promotionId;\n promotionObj.PromotionDescription = transactionPromo.displayText;\n promotionObj.HitNumber = '1';\n promotionObj.PromotionHitProductQuantity = this.getQuantity(element);\n promotionObj.PromotionHitQuantity = this.getQuantity(element) * -1;\n obj['PromotionSaving'].push(promotionObj);\n }\n });\n });\n }\n\n return obj;\n }\n\n addProduct(element: TProduct, lineDiscount: LineDiscount, transactionDiscount: TransactionDiscount) {\n let taxTotal = this.transactionDocument.basket['taxBreakdown']['taxLines'].find((item: any) => item.itemLineId == element['itemLineId']);\n let obj: any = {\n XMLSchemaVersion: this.xmlSchemaVersion,\n LineNumber: element.itemLineId,\n NetValue: this.removeDecimal(element.totalLinePrice),\n EffectiveNetValue: this.removeDecimal(element.totalLinePrice),\n Description: element.description,\n DeviceID: this.deviceId,\n UserID: this.transactionDocument.userName,\n DateTimeCreated: this.createdAt,\n ExtendedValue: this.removeDecimal(element.price),\n UnitPrice: this.removeDecimal(element.price),\n //MMGroupID: this.getCaregories(element),\n Quantity: element.quantity,\n SalespersonID: this.transactionDocument.userName,\n SalespersonName: this.salesPersonName,\n TaxCode: this.transactionDocument.basket['taxBreakdown']['taxLines'].find((item: any) => item.itemLineId == element['itemLineId']).VATCode,\n TaxModifiable: \"1\", //todo\n OriginalTaxAmount : this.convertToString((this.removeDecimal(this.getOriginalTax(element,taxTotal.VAT)).toFixed(2))),\n TaxAmount : this.convertToString(this.removeDecimal(taxTotal.taxLineTotal)),\n OriginalTaxAmountSet: \"1\",//todo\n ProductID: element.SKU,\n HandKeyed: \"1\",//todo\n CustomerDetails: \"\",\n Perishable: this.getMMGROUPID(element.attributes),\n MMGroupID: this.getMMGROUPID(element.attributes)\n }\n if (lineDiscount) {\n if (lineDiscount.percentageDiscountReasonName && lineDiscount.percentageDiscountReasonCode) {\n // line discount\n obj['Discount'] = {};\n obj['Discount'].ModifierValue = this.removeDecimal(lineDiscount.discountAmount) * -1;\n obj['Discount'].ModifierDateTime = obj.DateTimeCreated;\n obj['Discount'].ModifierReasonID = lineDiscount.percentageDiscountReasonCode;\n obj['Discount'].ModifierDescription = lineDiscount.percentageDiscountReasonName;\n obj['Discount'].AuthorisingUserID = this.transactionDocument.userName;\n obj['Discount'].DiscountType = lineDiscount.discountType;\n obj['Discount'].XMLSchemaVersion = 1;\n obj['Discount'].OriginalPrice = this.removeDecimal(lineDiscount.discountAmount + (lineDiscount.discountedLinePrice || 0));\n obj['Discount'].DiscountedValue = this.removeDecimal(lineDiscount.unitPrice);\n obj['Discount'].DiscountPercentage = lineDiscount.percentageDiscountValue;\n obj['Discount'].RoundingRule = 2;\n }\n\n if (lineDiscount.priceOverrideReasonCode && lineDiscount.priceOverrideReasonName) {\n //price override\n obj['PriceOverride'] = {};\n obj['PriceOverride'].ModifierValue = this.removeDecimal(lineDiscount.discountAmount) * -1;\n obj['PriceOverride'].ModifierDateTime = obj.DateTimeCreated;\n obj['PriceOverride'].ModifierReasonID = lineDiscount.priceOverrideReasonCode;\n obj['PriceOverride'].ModifierReasonDescription = lineDiscount.priceOverrideReasonName;\n obj['PriceOverride'].AuthorisingUserID = this.transactionDocument.userName;\n obj['PriceOverride'].XMLSchemaVersion = this.xmlSchemaVersion;\n obj['PriceOverride'].NewPrice = this.removeDecimal(lineDiscount.unitPrice);\n obj['PriceOverride'].OriginalPrice = this.removeDecimal(lineDiscount.discountedLinePrice || 0 + lineDiscount.discountAmount);\n }\n\n //update the product price\n obj['NetValue'] = ((lineDiscount.discountedLinePrice || 0) + lineDiscount.discountAmount);\n obj['EffectiveNetValue'] = ((lineDiscount.discountedLinePrice || 0) + lineDiscount.discountAmount);\n obj['ExtendedValue'] = ((lineDiscount.discountedLinePrice || 0) + lineDiscount.discountAmount);\n obj['UnitPrice'] = ((lineDiscount.discountedLinePrice || 0) + lineDiscount.discountAmount);\n }\n\n if(transactionDiscount) {\n obj['BasketDiscountModifier'] = [];\n this.transactionDocument.basket.transactionDiscount.forEach((e:any) => { \n let discountObj: any ={};\n e.itemLineIds.forEach((itemLineId: any) => {\n if (itemLineId == element.itemLineId) { \n let discountAmount = this.convertToString(e.discountAmount * -1); \n discountObj.XMLSchemaVersion = this.xmlSchemaVersion;\n discountObj.DiscountedValue = -(this.getDiscountedValue(element.totalLinePrice, e.discountAmount));\n discountObj.BasketDiscountLineNumber = this.getLineNumber(e,discountAmount) ;\n obj['BasketDiscountModifier'].push(discountObj); \n } \n }); \n });\n let totaltransactionDiscount = 0;\n obj['BasketDiscountModifier'].forEach((value:any)=>{\n totaltransactionDiscount = totaltransactionDiscount + value.DiscountedValue;\n });\n //update the product price\n obj['EffectiveNetValue'] = obj.EffectiveNetValue + totaltransactionDiscount; \n }\n \n if (this.transactionDocument.basket.transactionPromotion.length > 0 || this.transactionDocument.basket.linePromotion.length > 0) {\n obj['DistributedPromotionSaving'] = [];\n if (this.transactionDocument.basket.transactionPromotion.length > 0) {\n this.transactionDocument.basket.transactionPromotion.forEach((e: any) => {\n let promotionObj: any = {};\n e.itemLineIds.forEach((itemLineId: any) => {\n if (itemLineId == element.itemLineId) {\n promotionObj.PromotionID = e.promotionId;\n promotionObj.Hit = '1';\n promotionObj.Saving = this.getSaving(element.totalLinePrice, e.promotionAmount);\n promotionObj.ISaving = this.getSaving(element.totalLinePrice, e.promotionAmount);\n obj['DistributedPromotionSaving'].push(promotionObj);\n }\n });\n });\n }\n\n if (this.transactionDocument.basket.linePromotion.length > 0) {\n this.transactionDocument.basket.linePromotion.forEach((linePromotion: any) => {\n let promotionObj: any = {};\n if (element.itemLineId == linePromotion.itemLineId) {\n promotionObj.PromotionID = linePromotion.promotionId;\n promotionObj.Hit = \"1\";\n promotionObj.Saving = linePromotion.promotionLinePrice;\n promotionObj.ISaving = linePromotion.promotionLinePrice;\n obj['DistributedPromotionSaving'].push(promotionObj);\n }\n });\n }\n let transactionPromotion = 0;\n obj['DistributedPromotionSaving'].forEach((value: any) => {\n transactionPromotion = transactionPromotion + value.Saving;\n });\n obj['EffectiveNetValue'] = obj.EffectiveNetValue + transactionPromotion;\n }\n return obj;\n }\n\n getSaving(price,promotionAmount): any {\n let Saving = (price*promotionAmount)/this.transactionDocument.basketSummary.saleTotal;\n return Saving;\n }\n\n getLineNumber(value: any,discountAmount:string ){\n let lineNumber;\n for (let i = 0; i < this.rjObject['BasketDiscount'].length; i++) {\n const element = this.rjObject['BasketDiscount'][i];\n if( value.reasonCode === element.ReasonCodeID && discountAmount === element.NetValue){\n lineNumber = element.LineNumber;\n break; \n } \n }\n return lineNumber; \n }\n\n\n getDiscountedValue(price:any ,discountAmount:any ) {\n let DiscountedValue =((price * discountAmount)/this.transactionDocument.basketSummary.saleTotal)*100 ;\n return DiscountedValue;\n }\n\n getOriginalTax(element: TProduct, VAT) {\n let pricebeforetax = (element.price * 100)/(100 + VAT )\n let originaltax= element.price - pricebeforetax\n return originaltax;\n }\n\n convertToString(value: any) {\n try {\n value = JSON.stringify(value);\n return value;\n }\n catch (e) {\n console.log(value, 'can not be converted in string', e);\n }\n }\n\n generateDynamicStockLookUp() {\n let x = '0';\n this.transactionDocument.basket.products.forEach((element: any) => {\n if (element.deliveryMethod === '1' || element.deliveryMethod === '2') {\n x = '1';\n }\n });\n return x;\n }\n\n // getAttributes(){\n // let name: string | any[] = []\n // this.transactionDocument.basket.products.forEach((element: any) => {\n // if (element && element.attributes && element.attributes.length > 0) {\n // name = element.attributes.filter((x: any) => x.name.toUpperCase() === element.name.toUpperCase());\n // }\n // });\n // if (name.length > 0) {\n // return name[0].value\n // }\n // else{\n // return \"\"\n // }\n // }\n\n // getCaregories(element) {\n // let MMGroupId = \" \";\n // if (element.categories && element.categories.length > 0) {\n // let categories = element.categories.filter((x) => x.parentId != '');\n // let value = categories.filter((x) => x.id != x.parentId);\n // MMGroupId = value[0].name;\n // }\n // return MMGroupId;\n // }\n\n getDate(date:string){\n let offset = this.generateTimezoneoffset(date) * -1;\n let offsetHours = Math.abs(Math.floor(offset / 60)); \n\t let offsetMinutes = Math.abs(offset) - offsetHours * 60;\n\n let offsetSign = '+';\n if (offset < 0) {\n offsetSign = '-';\n }\n\n let newdate = date.substring(0,19);\n const x = (newdate+ offsetSign +String(offsetHours).padStart(2, '0')+':'+String(offsetMinutes).padStart(2, '0')).toString();\n return x; \n }\n \n getTransactionPromotion(transactionPromotion){\n if(transactionPromotion && transactionPromotion.length > 0){\n this.rjObject['PromoVoucherItem'] = {};\n this.rjObject['PromoVoucherItem']['XMLSchemaVersion'] = this.xmlSchemaVersion;\n this.rjObject['PromoVoucherItem']['LineNumber'] = this.generateLineNumber();\n this.rjObject['PromoVoucherItem']['NetValue'] = this.removeDecimal(transactionPromotion[0].promotionLinePrice) * -1;\n this.rjObject['PromoVoucherItem']['EffectiveNetValue'] = this.removeDecimal(transactionPromotion[0].promotionLinePrice) * -1;\n this.rjObject['PromoVoucherItem']['Description'] = transactionPromotion[0].promotionInfo;\n this.rjObject['PromoVoucherItem']['DeviceID'] = this.deviceId;\n this.rjObject['PromoVoucherItem']['UserID'] = this.transactionDocument.userName;\n this.rjObject['PromoVoucherItem']['DateTimeCreated'] = this.createdAt;\n this.rjObject['PromoVoucherItem']['ProductId'] = \"\"; //todo\n this.rjObject['PromoVoucherItem']['SerialNumber'] = \"\" ; //todo\n this.rjObject['PromoVoucherItem']['MMGroupId'] = \"\";\n }\n }\n \n getQuantity(element: any) {\n let quantity\n if(this.transactionDocument.unreferencedRefund){\n quantity = element['quantity'] < 0 ? element['quantity'] : (-element['quantity']);\n }\n else{\n quantity = element['refundedQuantity'] < 0 ? element['refundedQuantity'] : (-element['refundedQuantity']);\n }\n return quantity;\n }\n}\n","import { CurrencyPipe } from \"@angular/common\";\nimport { CurrentTransactionDetails, TransactionDocument, Trigger, PROMOTION_LEVEL, PROMOTION_TYPE, TProduct, TransactionPromotion } from \"./mapper-library.model\";\nimport { NumberUtilService } from \"./number-util.service\";\n\nexport class WebReturnMapperBuilderClass {\n\n private document: any;\n private webReturnObject: TransactionDocument = {\n id: '',\n orgCode: \"\",\n storeId: \"\",\n storeNodeId: \"\",\n storeNodeStructure: \"\",\n deviceId: \"\",\n terminalId: \"\",\n initiatingModule: \"\",\n export: false,\n isInStoreOrder: false,\n basket: {},\n basketSummary: {},\n baseCurrency: \"\",\n customer: {\n firstName: '',\n lastName: '',\n email: '',\n postCode: '',\n id: '',\n billingAddress: {},\n shippingAddress: {},\n\n },\n currentTransactionDetails: {} as CurrentTransactionDetails\n }\n numberUtilService: any;\n\n constructor(document, private currencyPipe?: CurrencyPipe) {\n if (document) {\n this.document = document;\n }\n this.numberUtilService = new NumberUtilService(currencyPipe);\n }\n\n WebReturnMapper() {\n this.webReturnObject['type'] = 'WEB_RETURNS';\n this.webReturnObject['datetime'] = this.getUTCDateTime(this.getText(this.document.updated_at));\n this.webReturnObject.baseCurrency = this.getText(this.document.base_currency_code);\n this.webReturnObject.storeId = this.getText(this.document.store_id);\n this.webReturnObject.subsidiaryId = '1';\n this.webReturnObject.initiatingModule = 'MAGENTO';\n this.webReturnObject.createdAt = this.getUTCDateTime(this.getText(this.document.created_at));\n this.webReturnObject.updatedAt = this.getUTCDateTime(this.getText(this.document.updated_at));\n this.webReturnObject.export = true;\n this.webReturnObject.transCompletedAt = this.getUTCDateTime(this.getText(this.document.updated_at));\n this.webReturnObject['externalTransactionId'] = this.getText(this.document.order_id);\n\n // customer\n this.webReturnObject['customer']['firstName'] = this.getText(this.document.customer_firstname) || '';\n this.webReturnObject['customer']['lastName'] = this.getText(this.document.customer_lastname) || '';\n this.webReturnObject['customer']['email'] = this.getText(this.document.customer_email) || '';\n this.webReturnObject['customer']['postCode'] = '';\n\n // Billing address\n this.webReturnObject['customer']['billingAddress']['address1'] = (this.document.billing_address && this.document.billing_address.street) ? this.getText(this.document.billing_address.street) : '';\n this.webReturnObject['customer']['billingAddress']['city'] = (this.document.billing_address && this.document.billing_address.city) ? this.getText(this.document.billing_address.city) : '';\n this.webReturnObject['customer']['billingAddress']['county'] = (this.document.billing_address && this.document.billing_address.region) ? this.getText(this.document.billing_address.region) : '';\n this.webReturnObject['customer']['billingAddress']['postCode'] = (this.document.billing_address && this.document.billing_address.postcode) ? this.getText(this.document.billing_address.postcode) : '';\n this.webReturnObject['customer']['billingAddress']['country'] = (this.document.billing_address && this.document.billing_address.country) ? this.getText(this.document.billing_address.country) : '';\n\n // Shipping address\n this.webReturnObject['customer']['shippingAddress']['address1'] = (this.document.shipping_address && this.document.shipping_address.street) ? this.getText(this.document.shipping_address.street) : '';\n this.webReturnObject['customer']['shippingAddress']['city'] = (this.document.shipping_address && this.document.shipping_address.city) ? this.getText(this.document.shipping_address.city) : '';\n this.webReturnObject['customer']['shippingAddress']['county'] = (this.document.shipping_address && this.document.shipping_address.region) ? this.getText(this.document.shipping_address.region) : '';\n this.webReturnObject['customer']['shippingAddress']['postCode'] = (this.document.shipping_address && this.document.shipping_address.postcode) ? this.getText(this.document.shipping_address.postcode) : '';\n this.webReturnObject['customer']['shippingAddress']['country'] = (this.document.shipping_address && this.document.shipping_address.country) ? this.getText(this.document.shipping_address.country) : '';\n\n // basketSummary \n this.webReturnObject.basketSummary['discountTotal'] = Math.abs(Number(this.document.discount_amount ? this.getText(this.document.discount_amount) : 0));\n this.webReturnObject.basketSummary['VATTotal'] = Number(this.document.base_total_paid ? this.getText(this.document.base_total_paid) : 0);\n this.webReturnObject.basketSummary['saleTotal'] = Number(this.document.base_total_invoiced ? this.getText(this.document.base_total_invoiced) : 0);\n this.webReturnObject.basketSummary['basketTotal'] = Number(this.document.base_total_paid ? this.getText(this.document.base_total_paid) : 0);\n this.webReturnObject.basketSummary['totalItems'] = Number(this.document.total_qty_ordered ? this.getText(this.document.total_qty_ordered) : 0);\n this.webReturnObject.basketSummary['refundTotal'] = Number(this.document.base_total_refunded ? this.getText(this.document.base_total_refunded) : 0);\n\n // // basket line discount\n // this.webReturnObject.basket['lineDiscount'] = [];\n\n // let lineDiscount = {\n // itemLineId: (this.document.items && this.document.items.item && this.document.items.item.item_id) ? this.getText(this.document.items.item.item_id) : 0,\n // discountAmount: (this.document.items && this.document.items.item && this.document.items.item.discount_amount) ? Number(this.getText(this.document.items.item.discount_amount)) : 0\n // }\n // this.webReturnObject.basket['lineDiscount'].push(lineDiscount);\n\n // basket transaction discount\n \n\n // basket products \n this.webReturnObject.basket['products'] = [];\n this.webReturnObject.basket['linePromotion']=[];\n this.webReturnObject.basket['transactionDiscount'] = [];\n this.webReturnObject.basket['transactionPromotion'] = [];\n\n // let transactionDiscount = {\n // discountAmount: (this.document && this.document.discount_amount) ? Number(this.getText(this.document.discount_amount)) : 0\n // }\n // this.webReturnObject.basket['transactionDiscount'].push(transactionDiscount);\n\n\n let product : any= {};\n if (this.document.items && this.document.items.item) {\n if (this.document.items.item instanceof Array) {\n this.document.items.item.forEach((element, index) => {\n let qty = this.getText(element.qty_ordered) ? Number(this.getText(element.qty_ordered)) : 0;\n let refundQty = this.getText(element.qty_refunded) ? Number(this.getText(element.qty_refunded)) : 0;\n let price = this.getText(element.price_incl_tax) ? Number(this.getText(element.price_incl_tax)) : 0;\n product = {\n description: (element.name) ? this.getText(element.name) : '',\n SKU: (element.sku) ? this.getText(element.sku) : '',\n quantity: (element.qty_ordered) ? Number(this.getText(element.qty_ordered)) : 0,\n refundedQuantity: (element.qty_refunded) ? Number(this.getText(element.qty_refunded)) : 0,\n //price: (element.original_price) ? Number(this.getText(element.original_price)) : 0,\n price: price,\n \n itemLineId: (index + 1).toString(),\n // totalLinePrice: (element.row_invoiced) ? Number(this.getText(element.row_invoiced)) : 0,\n totalLinePrice: ((qty - refundQty) * price),\n }\n\n let promotionAmount = this.getText(element.discount_amount) ? Number(this.getText(element.discount_amount)) : 0;\n let appliedIDs = this.getText(element.applied_rule_ids) ? this.getText(element.applied_rule_ids):'';\n\n if (product && product.price != 0) {\n if(promotionAmount)\n {\n let trigger = {} as Trigger;\n trigger.itemLineId = product.itemLineId;\n trigger.quantity = product.quantity ? product.quantity : 0;\n \n let promotion = {\n promotionAmount:promotionAmount,\n promotionId:appliedIDs,\n itemLineId:product.itemLineId,\n promotionLinePrice: product.totalLinePrice - promotionAmount,\n trigger:trigger\n }\n\n this.webReturnObject.basket['linePromotion'].push(promotion);\n }\n\n this.webReturnObject.basket['products'].push(product);\n }\n\n });\n } else {\n let qty = (this.document.items && this.document.items.item && this.document.items.item.qty_ordered) ? Number(this.getText(this.document.items.item.qty_ordered)) : 0;\n let refundQty = (this.document.items && this.document.items.item && this.document.items.item.qty_refunded) ? Number(this.getText(this.document.items.item.qty_refunded)) : 0;\n let price = (this.document.items && this.document.items.item && this.document.items.item.price_incl_tax) ? Number(this.getText(this.document.items.item.price_incl_tax)) : 0;\n product = {\n description: (this.document.items && this.document.items.item && this.document.items.item.name) ? this.getText(this.document.items.item.name) : '',\n SKU: (this.document.items && this.document.items.item && this.document.items.item.sku) ? this.getText(this.document.items.item.sku) : '',\n quantity: (this.document.items && this.document.items.item && this.document.items.item.qty_ordered) ? Number(this.getText(this.document.items.item.qty_ordered)) : 0,\n refundedQuantity: (this.document.items && this.document.items.item && this.document.items.item.qty_refunded) ? Number(this.getText(this.document.items.item.qty_refunded)) : 0,\n // price: (this.document.items && this.document.items.item && this.document.items.item.original_price) ? Number(this.getText(this.document.items.item.original_price)) : 0,\n price: price,\n\n itemLineId: \"1\",\n // totalLinePrice: (this.document.items && this.document.items.item && this.document.items.item.row_invoiced) ? Number(this.getText(this.document.items.item.row_invoiced)) : 0,\n totalLinePrice: ((qty - refundQty) * price),\n }\n let promotionAmount = this.getText(this.document.items.item.discount_amount) ? Number(this.getText(this.document.items.item.discount_amount)) : 0;\n let appliedIDs = this.getText(this.document.items.item.applied_rule_ids) ? this.getText(this.document.items.item.applied_rule_ids):'';\n\n if (product && product.price != 0) {\n if(promotionAmount)\n {\n let trigger = {} as Trigger;\n trigger.itemLineId = product.itemLineId;\n trigger.quantity = product.quantity ? product.quantity : 0;\n \n let promotion = {\n promotionAmount:promotionAmount,\n promotionId:appliedIDs,\n itemLineId:product.itemLineId,\n promotionLinePrice: product.totalLinePrice - promotionAmount,\n trigger:trigger\n }\n\n this.webReturnObject.basket['linePromotion'].push(promotion);\n }\n\n this.webReturnObject.basket['products'].push(product);\n }\n }\n\n let couponCode = this.getText(this.document.coupon_code) ? this.getText(this.document.coupon_code) : 0;\n let appliedIDs = this.getText(this.document.applied_rule_ids) ? this.getText(this.document.applied_rule_ids):'';\n let discountDescription = this.getText(this.document.discount_description) ? this.getText(this.document.discount_description):'';\n\n let couponTriggerPromotions = [] as Trigger[];\n if(couponCode && appliedIDs)\n {\n let transactionPromotion = {} as TransactionPromotion;\n\n if(this.webReturnObject.basket['linePromotion'] && this.webReturnObject.basket['linePromotion'].length > 0)\n {\n this.webReturnObject.basket['linePromotion'].forEach(\n (promotion)=>{\n if(promotion.promotionId === appliedIDs)\n {\n let trigger = {} as Trigger;\n trigger.itemLineId = promotion.itemLineId;\n trigger.quantity = promotion.trigger.quantity;\n trigger.totalQuantity = promotion.trigger.quantity;\n trigger.promotionAmount = promotion.promotionAmount;\n trigger.refundedReason = couponCode;\n trigger.refundedReasonDescription = discountDescription;\n trigger.promotionId = promotion.promotionId;\n couponTriggerPromotions.push(trigger);\n this.webReturnObject.basket['linePromotion'] = this.webReturnObject.basket['linePromotion'].filter((x)=>x.itemLineId !== promotion.itemLineId);\n }\n }\n );\n }\n\n if (couponTriggerPromotions.length > 0) {\n transactionPromotion.displayText = couponTriggerPromotions[0].refundedReasonDescription;\n transactionPromotion.name = couponTriggerPromotions[0].refundedReason;\n transactionPromotion.promotionAmount = -(couponTriggerPromotions.reduce((n, { promotionAmount }) => n + promotionAmount, 0));\n transactionPromotion.promotionId = couponTriggerPromotions[0].promotionId;\n transactionPromotion.promotionInfo = couponTriggerPromotions[0].refundedReasonDescription;\n transactionPromotion.couponCode = couponCode;\n transactionPromotion.itemLineIds = [];\n transactionPromotion.type = PROMOTION_TYPE.COUPON;\n transactionPromotion.subLevelType = PROMOTION_LEVEL.LINE;\n transactionPromotion.trigger = couponTriggerPromotions;\n }\n \n console.log(\"e-basket: update LinePromotion With Coupon\", JSON.stringify(transactionPromotion));\n \n if (!this.webReturnObject.basket.transactionPromotion ) {\n this.webReturnObject.basket.transactionPromotion = [];\n }\n \n if (transactionPromotion && transactionPromotion.promotionId ) {\n this.webReturnObject.basket.transactionPromotion.push(transactionPromotion);\n }\n }\n\n this.updateTransactionPromotionPrtionCalc();\n }\n return this;\n }\n\n public validateProductItemDiscount(product: TProduct) {\n if (!product.itemDiscounts) {\n product.itemDiscounts = {\n trnDiscountsPortion: 0,\n trnPromotionsPortion: 0,\n refundPortion: 0,\n };\n }\n return product;\n }\n\n transactionPromotionProductPortionCalc(\n txDoc: TransactionDocument,\n promotion: TransactionPromotion\n ) {\n console.log(\n `ebasket: transactionPromotionProductPortionCalc: trnsactionPromotion: ${JSON.stringify(\n promotion\n )}`\n );\n if (promotion.type === PROMOTION_TYPE.COUPON && promotion.subLevelType === PROMOTION_LEVEL.LINE) {\n txDoc.basket.products.forEach((product) => {\n product = this.validateProductItemDiscount(product);\n\n if (promotion.trigger && promotion.trigger.length > 0) {\n promotion.trigger.forEach((t) => {\n if (t.itemLineId === product.itemLineId.toString()) {\n product.itemDiscounts.trnPromotionsPortion += t.promotionAmount;\n }\n });\n }\n });\n }\n else {\n txDoc.basket.products.forEach((product) => {\n product = this.validateProductItemDiscount(product);\n if (promotion.itemLineIds.includes(+product.itemLineId)) {\n let discountAmount = 0;\n if (this.document.items.item instanceof Array) {\n const productItem = this.document.items.item.find(productItem => productItem.sku === product.SKU);\n discountAmount = productItem.discount_amount ? +productItem.discount_amount : 0;\n } else {\n discountAmount = this.document.items.item.sku === product.SKU && this.document.items.item.discount_amount ?\n +this.document.items.item.discount_amount : 0;\n }\n const transactionPromotionPortion = discountAmount;\n product.itemDiscounts.trnPromotionsPortion += this.numberUtilService.trimTo2Decimal2(transactionPromotionPortion);\n }\n });\n }\n return txDoc;\n }\n\n updateTransactionPromotionPrtionCalc() {\n try {\n if (this.webReturnObject.basket.transactionPromotion && this.webReturnObject.basket.transactionPromotion.length > 0) {\n this.webReturnObject.basket.transactionPromotion.forEach(tr => {\n this.transactionPromotionProductPortionCalc(this.webReturnObject, tr)\n })\n }\n } catch(error) {\n console.log(\"updateTransactionPromotionPrtionCalc => failed:\", JSON.stringify(error));\n }\n }\n\n deviceId(deviceId) {\n this.webReturnObject.deviceId = deviceId;\n return this;\n }\n\n terminalId(terminalId) {\n this.webReturnObject.terminalId = terminalId;\n return this;\n }\n\n orgCode(orgCode) {\n this.webReturnObject.orgCode = orgCode;\n return this;\n }\n\n storeId(storeId) {\n this.webReturnObject.storeId = storeId;\n return this;\n }\n\n storeNodeId(storeNodeId: string) {\n this.webReturnObject.storeNodeId = storeNodeId;\n return this;\n }\n\n storeNodeStructure(storeNodeStructure: string) {\n this.webReturnObject.storeNodeStructure = storeNodeStructure;\n return this;\n }\n\n docId(docId) {\n this.webReturnObject.id = docId;\n return this;\n }\n\n updateUserID(userID: string) {\n this.webReturnObject.userId = userID;\n return this;\n }\n\n updateUserName(name) {\n this.webReturnObject.userName = name;\n return this;\n }\n\n build() {\n return this.webReturnObject;\n }\n\n getText(obj) {\n if (obj && obj.text) {\n return obj.text;\n } else {\n return obj;\n }\n }\n\n getUTCDateTime(date) {\n if (date) {\n return new Date(date).toISOString();\n }\n }\n\n isInStoreOrder() {\n console.log(\"Mapper library: WebReturnMapperBuilderClass: isInStoreOrder mapping started...\"); \n if(this.document.payment && this.document.payment.method && this.document.payment.method === 'pos_order'){\n this.webReturnObject.isInStoreOrder = true;\n }\n console.log(\"Mapper library: WebReturnMapperBuilderClass: isInStoreOrder mapping ended...\");\n return this;\n }\n}\n","import { CurrencyPipe } from \"@angular/common\";\nimport { Address, BasketSummary, BasketSummaryDetails, CurrentTransactionDetails, Customer, DELIVERY_METHODS, PROMOTION_LEVEL, PROMOTION_TYPE, INITIATING_MODULE, LinePromotions, OrderDetails, PROVIDERS, ShipmentDetails, TRANSACTION_TYPE, TransactionDocument, TransactionInfo, TransactionPromotion, Trigger, externalTransactionDetails, TProduct, RefundProductChange } from \"./mapper-library.model\";\nimport { NumberUtilService } from \"./number-util.service\";\n\nexport class WebReturnSalesforceMapperBuilderClass {\n\n private orderDetails: OrderDetails;\n private webReturnObject: TransactionDocument = {\n id: '',\n orgCode: \"\",\n storeId: \"\",\n storeNodeId: \"\",\n storeNodeStructure: \"\",\n deviceId: \"\",\n terminalId: \"\",\n initiatingModule: \"\",\n export: false,\n isInStoreOrder: false,\n basket: {},\n basketSummary: {},\n baseCurrency: \"\",\n customer: {\n id: '',\n email: '',\n firstName: '',\n lastName: '',\n billingAddress: [],\n shippingAddress: [],\n shipmentDetails: [],\n telephone: '',\n postCode: '',\n noCustomerSelected: false\n },\n currentTransactionDetails: {} as CurrentTransactionDetails\n }\n numberUtilService: any;\n\n constructor(orderDetails: OrderDetails,\n private currencyPipe?: CurrencyPipe\n ) {\n if (orderDetails) {\n this.orderDetails = orderDetails;\n }\n this.numberUtilService = new NumberUtilService(currencyPipe);\n }\n\n webReturnCommonMapper() {\n console.log(\"Mapper library: WebReturnSalesforceMapperBuilderClass: webReturnCommonMapper started...\");\n this.webReturnObject['type'] = TRANSACTION_TYPE.WEB_RETURNS;\n this.webReturnObject['datetime'] = this.getUTCDateTime(this.orderDetails.last_modified);\n this.webReturnObject.baseCurrency = this.orderDetails.currency;\n this.webReturnObject.subsidiaryId = '1';\n this.webReturnObject.export = true;\n this.webReturnObject.initiatingModule = INITIATING_MODULE.EBASKET;\n this.webReturnObject.createdAt = this.getUTCDateTime(this.orderDetails.creation_date);\n this.webReturnObject.updatedAt = this.getUTCDateTime(this.orderDetails.last_modified);\n this.webReturnObject.transCompletedAt = this.getUTCDateTime(this.orderDetails.last_modified);\n this.webReturnObject['externalTransactionId'] = this.orderDetails.order_no;\n console.log(\"Mapper library: WebReturnSalesforceMapperBuilderClass: webReturnCommonMapper ended...\");\n return this;\n }\n\n // export(status, details) {\n // console.log(\"Mapper library: WebReturnSalesforceMapperBuilderClass: export mapping started...\");\n // console.log(\"Mapper library: WebReturnSalesforceMapperBuilderClass: status:\", status);\n // console.log(\"Mapper library: WebReturnSalesforceMapperBuilderClass: details:\", JSON.stringify(details));\n // if (status && details && details.providers && details.providers.length > 0) {\n // details.providers.forEach(\n // providerObj => {\n // if (providerObj.provider && providerObj.provider === PROVIDERS.SALESFORCE) {\n // this.webReturnObject.export = true;\n // } else {\n // this.webReturnObject.export = false;\n // }\n // }\n // );\n // } else {\n // this.webReturnObject.export = false;\n // }\n // console.log(\"Mapper library: WebReturnSalesforceMapperBuilderClass: export mapping end...\")\n // return this;\n // }\n\n getDeliveryMethod() {\n if(this.orderDetails.shipments && this.orderDetails.shipments.length > 0) {\n const shipToStoreShipment = this.orderDetails.shipments.find(shipment => shipment.c_fromStoreId);\n if(shipToStoreShipment) return DELIVERY_METHODS.SHIP_TO_STORE;\n else return DELIVERY_METHODS.DELIVERY;\n } else {\n return '';\n }\n }\n\n product() {\n console.log(\"Mapper library: WebReturnSalesforceMapperBuilderClass: product mapping started...\");\n this.webReturnObject.basket['products'] = [];\n if (this.orderDetails.product_items && this.orderDetails.product_items.length > 0) {\n this.orderDetails.product_items.forEach(\n (product, index) => {\n const productObj = {\n description: product.item_text ? product.item_text : '',\n SKU: product.product_id ? product.product_id : '',\n quantity: product.quantity ? product.quantity : 0,\n refundedQuantity: 0,\n price: product.base_price ? product.base_price : 0,\n itemLineId: (index + 1).toString(),\n deliveryMethod: this.getDeliveryMethod().toString(),\n totalLinePrice: product.price ? product.price : 0\n }\n if (product && product.price != 0) {\n this.webReturnObject.basket['products'].push(productObj);\n }\n }\n );\n }\n console.log(\"Mapper library: WebReturnSalesforceMapperBuilderClass: product mapping ended...\");\n return this;\n }\n\n linePromotion() {\n console.log(\"Mapper library: WebReturnSalesforceMapperBuilderClass: linePromotion mapping started...\");\n this.webReturnObject.basket.linePromotion = [] as LinePromotions[];\n let linePromotionArray = [] as LinePromotions[];\n if (this.orderDetails.product_items && this.orderDetails.product_items.length > 0) {\n this.orderDetails.product_items.forEach(\n (product, index) => {\n product.item_id = (index + 1).toString();\n if (product.price_adjustments && product.price_adjustments.length > 0) {\n product.price_adjustments.forEach(\n (promotion) => {\n if (!promotion.coupon_code) {\n let linePromotionObj = {} as LinePromotions;\n let trigger = {} as Trigger;\n trigger.itemLineId = product.item_id;\n trigger.quantity = product.quantity ? product.quantity : 0;\n linePromotionObj.trigger = [] as Trigger[];\n linePromotionObj.trigger.push(trigger);\n\n linePromotionObj.itemLineId = index + 1;\n linePromotionObj.promotionId = promotion.promotion_id ? promotion.promotion_id : '';\n linePromotionObj.displayText = promotion.item_text ? promotion.item_text : '';\n linePromotionObj.promotionType = promotion.applied_discount && promotion.applied_discount.type ? promotion.applied_discount.type : '';\n linePromotionObj.promotionAmount = promotion.price ? Math.abs(promotion.price) : 0;\n linePromotionObj.name = promotion.coupon_code ? promotion.coupon_code : (promotion.item_text ? promotion.item_text :'');\n linePromotionObj.promotionInfo = promotion.item_text ? promotion.item_text : '';\n linePromotionObj.promotionLinePrice = product.price - Math.abs(promotion.price);\n linePromotionArray.push(linePromotionObj);\n }\n }\n );\n }\n }\n );\n }\n this.webReturnObject.basket.linePromotion = linePromotionArray;\n console.log(\"Mapper library: WebReturnSalesforceMapperBuilderClass: linePromotion mapping ended...\");\n return this;\n }\n\n transactionPromotion() {\n console.log(\"Mapper library: WebReturnSalesforceMapperBuilderClass: transactionPromotion mapping started...\");\n\n let transactionPromotionArray = this.getTransactionPromotions(this.orderDetails);\n\n this.webReturnObject.basket.transactionPromotion = transactionPromotionArray;\n console.log(\"Mapper library: WebReturnSalesforceMapperBuilderClass: transactionPromotion mapping ended...\");\n return this;\n }\n\n getTransactionPromotions(basket): TransactionPromotion[] {\n try {\n let transactionPromotionArray = [] as TransactionPromotion[];\n if (basket.order_price_adjustments && basket.order_price_adjustments.length > 0) {\n basket.order_price_adjustments.forEach(\n (transactionPromotion) => {\n let transactionPromotionObj = {} as TransactionPromotion;\n\n transactionPromotionObj.displayText = transactionPromotion.item_text ? transactionPromotion.item_text : '';\n transactionPromotionObj.name = transactionPromotion.coupon_code ? transactionPromotion.coupon_code : (transactionPromotion .item_text?transactionPromotion.item_text : '');\n transactionPromotionObj.promotionAmount = transactionPromotion.price ? Math.abs(transactionPromotion.price) : 0;\n transactionPromotionObj.promotionId = transactionPromotion.promotion_id ? transactionPromotion.promotion_id : '';\n transactionPromotionObj.promotionInfo = transactionPromotion.item_text ? transactionPromotion.item_text : '';\n transactionPromotionObj.promotionType = transactionPromotion.applied_discount && transactionPromotion.applied_discount.type ? transactionPromotion.applied_discount.type : '';\n transactionPromotionObj.itemLineIds = this.orderDetails.product_items.map((product, index) => index + 1);\n if (transactionPromotion.coupon_code) {\n transactionPromotionObj.type = PROMOTION_TYPE.COUPON;\n transactionPromotionObj.couponCode = transactionPromotion.coupon_code;\n transactionPromotionObj.subLevelType = PROMOTION_LEVEL.TRANSACTION;\n }\n transactionPromotionArray.push(transactionPromotionObj);\n }\n );\n }\n\n\n console.log(\"Mapper library: WebReturnSalesforceMapperBuilderClass: getTransactionPromotions : \", JSON.stringify(transactionPromotionArray));\n return transactionPromotionArray;\n } catch (error) {\n console.log(\"Mapper library: WebReturnSalesforceMapperBuilderClass: failed:\", error);\n console.log(\"Mapper library: WebReturnSalesforceMapperBuilderClass: failed:\", JSON.stringify(error));\n throw new Error(error);\n }\n }\n\n updateLinePromotionWithCoupon() {\n try {\n\n let transactionPromotion = {} as TransactionPromotion;\n let triggerPromotion = [] as Trigger[];\n if (this.orderDetails.product_items && this.orderDetails.product_items.length > 0) {\n this.orderDetails.product_items.forEach(\n (product, index) => {\n product.item_id = (index + 1).toString();\n\n if (product.price_adjustments && product.price_adjustments.length > 0) {\n product.price_adjustments.forEach(\n (promotion) => {\n if (promotion.coupon_code) {\n let trigger = {} as Trigger;\n trigger.itemLineId = product.item_id;\n trigger.quantity = product.quantity ? product.quantity : 0;\n trigger.totalQuantity = product.quantity ? product.quantity : 0;\n trigger.promotionAmount = promotion.price ? Math.abs(promotion.price) : 0;\n trigger.refundedReason = promotion.coupon_code ? promotion.coupon_code : '';\n trigger.refundedReasonDescription = promotion.item_text ? promotion.item_text : '';\n trigger.promotionId = promotion.promotion_id;\n triggerPromotion.push(trigger);\n }\n }\n );\n }\n }\n );\n }\n\n if (triggerPromotion.length > 0) {\n transactionPromotion.displayText = triggerPromotion[0].refundedReasonDescription;\n transactionPromotion.name = triggerPromotion[0].refundedReason;\n transactionPromotion.promotionAmount = -(triggerPromotion.reduce((n, { promotionAmount }) => n + promotionAmount, 0));\n transactionPromotion.promotionId = triggerPromotion[0].promotionId;\n transactionPromotion.promotionInfo = triggerPromotion[0].refundedReasonDescription;\n transactionPromotion.couponCode = triggerPromotion[0].refundedReason;\n transactionPromotion.itemLineIds = [];\n transactionPromotion.type = PROMOTION_TYPE.COUPON;\n transactionPromotion.subLevelType = PROMOTION_LEVEL.LINE;\n transactionPromotion.trigger = triggerPromotion;\n }\n console.log(\"linePromotion mapping ended...\");\n console.log(\"e-basket: updateLinePromotionWithCoupon\", JSON.stringify(transactionPromotion));\n\n if (!this.webReturnObject.basket.transactionPromotion ) {\n this.webReturnObject.basket.transactionPromotion = [];\n }\n\n if (transactionPromotion && transactionPromotion.promotionId ) {\n this.webReturnObject.basket.transactionPromotion.push(transactionPromotion);\n }\n\n return this;\n } catch (error) {\n console.log(\"Ebasket: Salesforce: linePromotion mapping=> failed:\", error);\n console.log(\"Ebasket: Salesforce: linePromotion mapping=> failed:\", JSON.stringify(error));\n throw new Error(error);\n }\n }\n\n updateTransactionPromotionPrtionCalc() {\n if (this.webReturnObject.basket.transactionPromotion && this.webReturnObject.basket.transactionPromotion.length > 0) {\n\n this.webReturnObject.basket.transactionPromotion.forEach(tr => {\n this.transactionPromotionProductPortionCalc(this.webReturnObject , tr)\n })\n }\n return this;\n }\n\n transactionPromotionProductPortionCalc(\n txDoc: TransactionDocument,\n promotion: TransactionPromotion\n ) {\n console.log(\n `ebasket: transactionPromotionProductPortionCalc: trnsactionPromotion: ${JSON.stringify(\n promotion\n )}`\n );\n if (promotion.type === PROMOTION_TYPE.COUPON && promotion.subLevelType === PROMOTION_LEVEL.LINE) {\n txDoc.basket.products.forEach((product) => {\n product = this.validateProductItemDiscount(product);\n\n if (promotion.trigger && promotion.trigger.length > 0) {\n promotion.trigger.forEach((t) => {\n if (t.itemLineId === product.itemLineId.toString()) {\n product.itemDiscounts.trnPromotionsPortion += t.promotionAmount;\n }\n });\n }\n });\n }\n else {\n txDoc.basket.products.forEach((product) => {\n product = this.validateProductItemDiscount(product);\n if (promotion.itemLineIds.includes(+product.itemLineId)) {\n const productItem = this.orderDetails.product_items.find(productItem => productItem.product_id === product.SKU);\n const transactionPromotionPortion = (productItem && productItem.price_after_item_discount && productItem.price_after_order_discount) ?\n (productItem.price_after_item_discount - productItem.price_after_order_discount) : 0;\n product.itemDiscounts.trnPromotionsPortion += this.numberUtilService.trimTo2Decimal2(transactionPromotionPortion);\n }\n });\n }\n return txDoc;\n }\n\n \n public validateProductItemDiscount(product: TProduct) {\n if (!product.itemDiscounts) {\n product.itemDiscounts = {\n trnDiscountsPortion: 0,\n trnPromotionsPortion: 0,\n refundPortion: 0,\n };\n }\n return product;\n }\n \n \n customer() {\n console.log(\"Mapper library: WebReturnSalesforceMapperBuilderClass: customer mapping started...\");\n let customerObj = {} as Customer;\n customerObj.email = this.orderDetails.customer_info && this.orderDetails.customer_info.email ? this.orderDetails.customer_info.email : '';\n customerObj.firstName = this.orderDetails.billing_address && this.orderDetails.billing_address.first_name ? this.orderDetails.billing_address.first_name : '';\n customerObj.lastName = this.orderDetails.billing_address && this.orderDetails.billing_address.last_name ? this.orderDetails.billing_address.last_name : '';\n\n let shippingAddress = [] as Address[];\n this.orderDetails.shipments.forEach(\n shipment => {\n let shippingAddressObj = {} as Address;\n shippingAddressObj.id = shipment.shipping_address && shipment.shipping_address.id ? shipment.shipping_address.id : '';\n shippingAddressObj.countryCode = shipment.shipping_address && shipment.shipping_address.country_code ? shipment.shipping_address.country_code : '';\n shippingAddressObj.address1 = shipment.shipping_address && shipment.shipping_address.address1 ? shipment.shipping_address.address1 : '';\n shippingAddressObj.city = shipment.shipping_address && shipment.shipping_address.city ? shipment.shipping_address.city : '';\n shippingAddressObj.country = '';\n shippingAddressObj.postCode = shipment.shipping_address && shipment.shipping_address.postal_code ? shipment.shipping_address.postal_code : '';\n shippingAddress.push(shippingAddressObj);\n }\n )\n customerObj.shippingAddress = shippingAddress;\n\n let billingAddress = [] as Address[];\n let billingAddressObj = {} as Address;\n billingAddressObj.id = this.orderDetails.billing_address && this.orderDetails.billing_address.id ? this.orderDetails.billing_address.id : '';\n billingAddressObj.countryCode = this.orderDetails.billing_address && this.orderDetails.billing_address.country_code ? this.orderDetails.billing_address.country_code : '';\n billingAddressObj.address1 = this.orderDetails.billing_address && this.orderDetails.billing_address.address1 ? this.orderDetails.billing_address.address1 : '';\n billingAddressObj.city = this.orderDetails.billing_address && this.orderDetails.billing_address.city ? this.orderDetails.billing_address.city : '';\n billingAddressObj.country = '';\n billingAddressObj.postCode = '';\n billingAddress.push(billingAddressObj);\n customerObj.billingAddress = billingAddress;\n\n let shipmentDetails = [] as ShipmentDetails[];\n this.orderDetails.shipments.forEach(\n shipment => {\n let shipmentDetailsObj = {} as ShipmentDetails;\n shipmentDetailsObj.id = shipment.shipment_id ? shipment.shipment_id : '';\n shipmentDetailsObj.deliveryGroup = shipment.shipment_id ? shipment.shipment_id : '';\n shipmentDetails.push(shipmentDetailsObj);\n }\n );\n customerObj.shipmentDetails = shipmentDetails;\n\n this.webReturnObject.customer = customerObj;\n console.log(\"Mapper library: WebReturnSalesforceMapperBuilderClass: customer mapping ended...\");\n return this;\n }\n\n isInStoreOrder() {\n console.log(\"Mapper library: WebReturnSalesforceMapperBuilderClass: isInStoreOrder mapping started...\");\n if(this.orderDetails.c_isInStoreOrder) {\n this.webReturnObject.isInStoreOrder = true;\n }\n console.log(\"Mapper library: WebReturnSalesforceMapperBuilderClass: isInStoreOrder mapping ended...\");\n return this;\n }\n\n externalTransactionDetails() {\n console.log(\"Mapper library: WebReturnSalesforceMapperBuilderClass: externalTransactionDetails mapping started...\");\n let externalTransactionDetails = [] as externalTransactionDetails[];\n if (this.orderDetails.shipments && this.orderDetails.shipments.length > 0) {\n this.orderDetails.shipments.forEach(\n shipment => {\n let externalTransactionDetailsObj = {} as externalTransactionDetails;\n let transactionInfo = {} as TransactionInfo;\n externalTransactionDetailsObj.uniqueId = this.orderDetails.order_no ? this.orderDetails.order_no : '';\n externalTransactionDetailsObj.providerType = PROVIDERS.SALESFORCE;\n transactionInfo.shippingId = shipment.shipping_method && shipment.shipping_method.id ? shipment.shipping_method.id : '';\n transactionInfo.externalShippingId = shipment.shipment_id ? shipment.shipment_id : '';\n externalTransactionDetailsObj.details = transactionInfo;\n externalTransactionDetails.push(externalTransactionDetailsObj);\n }\n );\n }\n this.webReturnObject.externalTransactionDetails = externalTransactionDetails;\n console.log(\"Mapper library: WebReturnSalesforceMapperBuilderClass: externalTransactionDetails mapping ended...\");\n return this;\n }\n\n basketSummary() {\n console.log(\"Mapper library: WebReturnSalesforceMapperBuilderClass: basketSummary mapping started...\");\n let basketSummary = {} as BasketSummary;\n let basketSummaryWebOrder = {} as BasketSummaryDetails;\n const linePromotionTotal = this.webReturnObject.basket.linePromotion.map(linePromotion => linePromotion.promotionAmount).reduce((accumulator, currentValue) => accumulator + currentValue, 0);\n const transactionPromotionTotal = this.webReturnObject.basket.transactionPromotion.map(transactionPromotion => transactionPromotion.promotionAmount).reduce((accumulator, currentValue) => accumulator + currentValue, 0);\n basketSummary.discountTotal = linePromotionTotal + transactionPromotionTotal;\n basketSummary.VATTotal = this.orderDetails.tax_total ? this.orderDetails.tax_total : 0;\n basketSummary.saleTotal = this.orderDetails.order_total ? this.orderDetails.order_total : 0;\n basketSummary.basketTotal = this.orderDetails.order_total ? this.orderDetails.order_total : 0;\n basketSummary.totalItems = this.orderDetails.product_items && this.orderDetails.product_items.length > 0 ? this.orderDetails.product_items.length : 0;\n basketSummary.shippingTotal = this.orderDetails.shipping_total ? this.orderDetails.shipping_total : 0;\n basketSummary.basketTotalWithShippingTotal = this.orderDetails.order_total ? this.orderDetails.order_total : 0;\n basketSummaryWebOrder.shippingTotal = this.orderDetails.shipping_total ? this.orderDetails.shipping_total : 0;\n basketSummaryWebOrder.basketTotalWithShippingTotal = this.orderDetails.order_total ? this.orderDetails.order_total : 0;\n basketSummary.webOrder = basketSummaryWebOrder;\n this.webReturnObject.basketSummary = basketSummary;\n console.log(\"Mapper library: WebReturnSalesforceMapperBuilderClass: basketSummary mapping ended...\");\n return this;\n }\n\n deviceId(deviceId) {\n this.webReturnObject.deviceId = deviceId;\n return this;\n }\n\n terminalId(terminalId) {\n this.webReturnObject.terminalId = terminalId;\n return this;\n }\n\n orgCode(orgCode) {\n this.webReturnObject.orgCode = orgCode;\n return this;\n }\n\n storeId(storeId) {\n this.webReturnObject.storeId = storeId;\n return this;\n }\n\n storeNodeId(storeNodeId: string) {\n this.webReturnObject.storeNodeId = storeNodeId;\n return this;\n }\n\n storeNodeStructure(storeNodeStructure: string) {\n this.webReturnObject.storeNodeStructure = storeNodeStructure;\n return this;\n }\n\n docId(docId) {\n this.webReturnObject.id = docId;\n return this;\n }\n\n updateUserID(userID: string) {\n this.webReturnObject.userId = userID;\n return this;\n }\n\n updateUserName(name) {\n this.webReturnObject.userName = name;\n return this;\n }\n\n build() {\n console.log(\"Mapper library: WebReturnSalesforceMapperBuilderClass: mapping done...\");\n return this.webReturnObject;\n }\n\n getUTCDateTime(date) {\n if (date) {\n return new Date(date).toISOString();\n }\n }\n}\n","/*\n * Public API Surface of mapper-library\n */\n\nexport * from './lib/mapper-library.component';\nexport * from './lib/mapper-library.module';\nexport * from './lib/RJ-mapper.class';\nexport * from './lib/WebReturn-mapper.class';\nexport * from './lib/WebReturnSalesforceMapper.class';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i0","Component","NgModule","BehaviorSubject","i1","Injectable"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"pmcretail-mapper-library.umd.js","sources":["../../../projects/mapper-library/src/lib/mapper-library.component.ts","../../../projects/mapper-library/src/lib/mapper-library.module.ts","../../../projects/mapper-library/src/lib/mapper-library.model.ts","../../../node_modules/tslib/tslib.es6.mjs","../../../projects/mapper-library/src/lib/basket.service.ts","../../../projects/mapper-library/src/lib/number-util.service.ts","../../../projects/mapper-library/src/lib/TransactionDocumentBuilder.ts","../../../projects/mapper-library/src/lib/RJ-mapper.class.ts","../../../projects/mapper-library/src/lib/WebReturn-mapper.class.ts","../../../projects/mapper-library/src/lib/WebReturnSalesforceMapper.class.ts","../../../projects/mapper-library/src/lib/WebReturnMagentoV2Rest.class.ts","../../../projects/mapper-library/src/public-api.ts","../../../projects/mapper-library/src/pmcretail-mapper-library.ts"],"sourcesContent":["import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'lib-mapper-library',\r\n template: `\r\n <p>\r\n mapper-library works!\r\n </p>\r\n `,\r\n styles: [\r\n ]\r\n})\r\nexport class MapperLibraryComponent implements OnInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { MapperLibraryComponent } from './mapper-library.component';\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n MapperLibraryComponent\r\n ],\r\n imports: [\r\n ],\r\n exports: [\r\n MapperLibraryComponent\r\n ]\r\n})\r\nexport class MapperLibraryModule { }\r\n","\r\n\r\nexport enum TRANSACTION_TYPE {\r\n SALE = \"SALE\",\r\n REFUND = \"REFUND\",\r\n SALE_REFUND = \"SALE_REFUND\",\r\n SALE_EXCHANGE = \"SALE_EXCHANGE\",\r\n VOID = \"VOID\",\r\n WEB_RETURNS = \"WEB_RETURNS\"\r\n}\r\n\r\nexport interface ItemDiscount {\r\n trnDiscountsPortion: number;\r\n trnPromotionsPortion: number;\r\n refundPortion: number;\r\n currentRefundPortion?: number;\r\n}\r\n\r\nexport enum DELIVERY_METHODS {\r\n DELIVERY = 1,\r\n DROP_SHIP = 2,\r\n COLLECT_FROM_STORE = 3,\r\n SHIP_TO_STORE = 4\r\n}\r\n\r\nexport interface ProductChange {\r\n itemLineId?: number;\r\n SKU: string;\r\n quantity: number;\r\n selectedPrice?: number;\r\n lineDiscount?: LineDiscount;\r\n linePromotions?: LinePromotions;\r\n exchange?: Exchange;\r\n refundedQuantity?: number; // contains quantity of both full priced and promotional quantities\r\n refundPromotionalQuantity?: number; // promotional quantity\r\n refunded?: boolean;\r\n refundedTotal?: number;\r\n refundedReason?: string;\r\n refundedReasonDescription?: string;\r\n isChecked?: boolean;\r\n sealed?: boolean;\r\n isLastExchanged?: boolean;\r\n}\r\n\r\n/**\r\n * Product\r\n */\r\nexport interface Product extends ProductChange {\r\n itemLineId?: number;\r\n status: number;\r\n subGroup: number;\r\n brand: string;\r\n currency: string;\r\n category: string;\r\n countryofOrigin: string;\r\n productId: string;\r\n productType: number;\r\n name?: string;\r\n imageUrls: [string];\r\n isImageFailToLoad?: boolean;\r\n size: string;\r\n type: string;\r\n season: number;\r\n productGroup: number;\r\n styleCode: string;\r\n nodeStructure: NodeStructure[];\r\n barcode: string;\r\n price: Price[];\r\n colour: string;\r\n description: string;\r\n totalLinePrice: number;\r\n total: number;\r\n addedInBasket?: boolean;\r\n selectedVAT?: number;\r\n selectedVATCode?: string;\r\n selectedRRPPrice?: number;\r\n lineDiscount?: LineDiscount;\r\n exchange?: Exchange;\r\n // refundedQuantity?: number;\r\n // refunded?: boolean;\r\n // refundedTotal?: number;\r\n // refundedReasonDescription?:string;\r\n // isChecked?:boolean;\r\n refundPromotionalQuantity?: number; // promotional quantity\r\n exchangeReason?: string;\r\n exchangeQuantity?: number;\r\n itemDiscounts: ItemDiscount;\r\n\r\n giftCardNumberIssued?: string;\r\n giftCardAmount?: number;\r\n giftCardRecipientEmail?: string;\r\n giftCardExpiryDate?: string;\r\n giftCardRecipientName?: string;\r\n giftCard?: boolean;\r\n\r\n discountable: boolean;\r\n // sealed?:boolean;\r\n excludePromotion: boolean;\r\n categories: Categories[];\r\n descriptions: Descriptions[];\r\n barcodes: string[];\r\n\r\n //New Feilds\r\n externalId: string;\r\n createdDate: string;\r\n updatedDate: string;\r\n createdBy: string;\r\n updatedBy: string;\r\n attributes: CoreAttribute[];\r\n id: string;\r\n long_description: string;\r\n\r\n // Mixed Sales fields\r\n isWebOrder?: boolean,\r\n fullfilmentId: string,\r\n fullfilmentLocationName?: string,\r\n deliveryMethod?: string,\r\n deliveryGroup?: string,\r\n selectedInventory?: InventoryInfo;\r\n leadTime?: leadTime\r\n}\r\nexport interface leadTime {\r\n type: string,\r\n value: string\r\n}\r\n\r\nexport interface Exchange {\r\n exchangeId: number,\r\n lineItemId: number,\r\n reason: string,\r\n quantity: number,\r\n newItems: Product[];\r\n}\r\n\r\nexport interface Categories {\r\n id: string;\r\n parentId: string;\r\n name: string;\r\n categoryId: string;\r\n status: boolean;\r\n}\r\n\r\nexport interface Descriptions {\r\n name: string;\r\n countryCode: string;\r\n value: string;\r\n}\r\n\r\nexport interface CoreAttribute {\r\n name: string;\r\n value: string;\r\n searchable: boolean;\r\n countryCode: string;\r\n}\r\n\r\n/**\r\n * Basket\r\n */\r\n\r\nexport interface Basket {\r\n subsidiaryId?: string;\r\n products: Product[];\r\n transactionDiscount: any[];\r\n quantity: number;\r\n total: number;\r\n saleTotal: number;\r\n discountTotal?: number;\r\n transactionId?: string;\r\n offlineTransactionId?: string;\r\n baseCurrency: string;\r\n basketTotal?: number;\r\n refundTotal?: number;\r\n transactionPromotion?: TransactionPromotion[];\r\n customer?: any;\r\n exchange?: Exchange[];\r\n inStoreFlag?: boolean\r\n}\r\n\r\n\r\n\r\n/**\r\n * Price\r\n */\r\nexport interface Price {\r\n VAT: number;\r\n VATCode: string;\r\n salesPrice: number;\r\n currencyCode: string;\r\n RRPPrice: number;\r\n}\r\n\r\n/**\r\n * Node structure\r\n */\r\ninterface NodeStructure {\r\n status: boolean;\r\n name: string;\r\n nodeType: string;\r\n isOverride: boolean;\r\n nodeId: string;\r\n parentId: string;\r\n}\r\n\r\n/**\r\n * Line Discount\r\n */\r\nexport interface LineDiscount {\r\n itemLineId: string,\r\n discountAmount: number,\r\n discountType: string,\r\n // reasonCode: string,\r\n name?: string,\r\n unitPrice: number,\r\n discountedLinePrice?: number,\r\n priceManagerOverride?: UserOverride,\r\n priceOverrideReasonCode?: string,\r\n priceOverrideReasonName?: string,\r\n priceOverrideAmount?: number,\r\n percentageDiscountManagerOverride?: UserOverride,\r\n percentageDiscountReasonCode?: string,\r\n percentageDiscountReasonName?: string,\r\n percentageDiscountValue?: number\r\n}\r\n\r\n/**\r\n * User Override\r\n */\r\nexport interface UserOverride {\r\n userId: string,\r\n automaticApprove: string,\r\n originalUserId: string\r\n}\r\n\r\n/**\r\n* line Promotions\r\n*/\r\nexport interface LinePromotions {\r\n\r\n trigger: Trigger[],\r\n itemLineId: number,\r\n promotionId: string,\r\n displayText: string,\r\n promotionType: string,\r\n promotionAmount: number,\r\n name: string,\r\n promotionInfo: string,\r\n promotionLinePrice: number\r\n refunded?: boolean;\r\n}\r\n\r\n/**\r\n* trigger\r\n*/\r\nexport interface Trigger {\r\n itemLineId: string;\r\n quantity?: number;\r\n totalQuantity?: number;\r\n linePromotionAmount?:number; // promotion amount applied accross the line\r\n promotionAmount?:number; // promotion amount applied on 1 unit\r\n refundedReason?: string;\r\n refundedReasonDescription?:string;\r\n promotionId?:string;\r\n}\r\n\r\n/**\r\n* Transaction Promotion\r\n*/\r\nexport interface TransactionPromotion {\r\n displayText: string;\r\n name: string;\r\n promotionAmount: number;\r\n promotionId: string;\r\n promotionInfo: string;\r\n promotionType: string;\r\n itemLineIds: number[];\r\n type?:string;\r\n subLevelType?:PROMOTION_LEVEL\r\n trigger?:Trigger[];\r\n couponCode?:string;\r\n}\r\n\r\nexport interface RefundProductChange {\r\n itemLineId?: number;\r\n refundedQuantity?: number;\r\n refundedPromotionalQuantity?: number;\r\n refundTotal?: number;\r\n refundedReason?: string;\r\n refundedReasonDescription?: string;\r\n refundWithPromotion: boolean;\r\n isLastExchanged?: boolean;\r\n}\r\n\r\nexport interface InventoryInfo {\r\n storeName: string,\r\n storeId: string,\r\n quantityAvailable: number,\r\n quantityRequired: number\r\n}\r\n\r\nexport interface InventoryRequestInfo extends InventoryInfo {\r\n requestedQuantity: number,\r\n requestedAction: DELIVERY_METHODS\r\n}\r\n\r\nexport interface DeliveryInfo {\r\n groups: DeliveryGroupInfo[]\r\n}\r\n\r\nexport interface DeliveryGroupInfo {\r\n groupNumber: number;\r\n items: Product[];\r\n estimate?: Estimate;\r\n}\r\n\r\nexport interface Estimate {\r\n type: string,\r\n value: string\r\n}\r\n\r\nexport interface TransactionDocument {\r\n transactionId?: string;\r\n subsidiaryId?: string;\r\n offlineTransactionId?:string;\r\n transactionRef?: string;\r\n dateTime?: string;\r\n orgCode: string;\r\n storeId: string;\r\n storeNodeId:string;\r\n storeNodeStructure:string;\r\n deviceId: string;\r\n terminalId:string;\r\n initiatingModule :string;\r\n export:boolean;\r\n userId?: string;\r\n userName?:string;\r\n customer?: Customer;\r\n basket: any;\r\n basketSummary: BasketSummary;\r\n // lineDiscount: LineDiscount[];\r\n baseCurrency: string;\r\n splitPayment?:boolean;\r\n isPaymentCompleted?:boolean;\r\n paymentDetails?: any;\r\n type?: string;\r\n operationStatus?: string;\r\n createdAt?: string;\r\n updatedAt?: string;\r\n transCompletedAt?: string;\r\n id?: string;\r\n saleTotal?: number;\r\n reasonCode?: string;\r\n reasonDescription?: string;\r\n override?: UserOverride;\r\n originalTransId?:string;\r\n originalExternalId?: string;\r\n apiResponse?: APIResponse; // TODO add handler as per export provider\r\n unreferencedRefund?:boolean;\r\n giftedReceipt?:boolean;\r\n currentTransactionDetails?:any;\r\n isChecked?:boolean;\r\n externalTransactionDetails?: externalTransactionDetails[];\r\n refundRequest?: any[];\r\n isInStoreOrder?: boolean; \r\n}\r\n\r\nexport interface APIResponse\r\n{\r\n internalId?:number;\r\n tranid?:string\r\n}\r\n\r\nexport interface CurrentTransactionDetails{\r\n products: Product[];\r\n lineDiscount?:LineDiscount[];\r\n linePromotion?:LinePromotions[];\r\n transactionPromotion?:TransactionPromotion[];\r\n transactionDiscount?:TransactionDiscount[];\r\n basketSummary?:BasketSummary; \r\n taxBreakdown?:TaxBreakdown; \r\n totalTaxSummary?:TotalTaxSummary[];\r\n}\r\nexport interface BasketSummary {\r\n totalItems?: number;\r\n saleTotal?: number;\r\n VATTotal?: number;\r\n discountTotal?: number;\r\n basketTotal?: number;\r\n refundTotal?:number;\r\n shippingTotal?: number;\r\n basketTotalWithShippingTotal?: number;\r\n inStore?: BasketSummaryDetails;\r\n webOrder?: BasketSummaryDetails;\r\n cnc?: BasketSummaryDetails;\r\n}\r\n\r\nexport interface BasketSummaryDetails {\r\n totalItems?: number;\r\n saleTotal?: number;\r\n VATTotal?: number;\r\n discountTotal?: number;\r\n basketTotal?: number;\r\n refundTotal?:number;\r\n shippingTotal?: number;\r\n basketTotalWithShippingTotal?: number;\r\n}\r\n\r\nexport interface TransactionDiscount{\r\n discountAmount:number;\r\n discountType:String;\r\n reasonCode:string;\r\n override?: UserOverride;\r\n itemLineIds?:number[];\r\n}\r\n\r\nexport interface TBasket {\r\n products: TProduct[];\r\n lineDiscount:LineDiscount[];\r\n exchange:Exchange[];\r\n linePromotion:LinePromotions[];\r\n transactionPromotion?:TransactionPromotion[];\r\n transactionDiscount?:TransactionDiscount[];\r\n taxBreakdown?:TaxBreakdown;\r\n totalTaxSummary?:TotalTaxSummary[];\r\n\r\n \r\n}\r\n\r\nexport interface TExchange{\r\n exchangeId?:number,\r\n lineItemId?: number,\r\n reason?: string,\r\n quantity?: number,\r\n newItems?:TNewItems[];\r\n }\r\n \r\n export interface TNewItems{\r\n lineItemId:number,\r\n Quantity:number\r\n }\r\n\r\nexport interface TProduct {\r\n itemLineId: string;\r\n SKU: string;\r\n description: string;\r\n imageUrls: [string];\r\n price: number;\r\n taxCode?: string;\r\n taxPercent?: string;\r\n quantity: number;\r\n refundedQuantity?: number;\r\n refundedPromotionalQuantity?:number;\r\n refunded?: boolean;\r\n refundedTotal?: number;\r\n refundedReason?:string;\r\n refundedReasonDescription?:string;\r\n selectedRRPPrice?: number;\r\n totalLinePrice: number;\r\n barCode?: string;\r\n barcodes?: string[];\r\n flagged?: boolean;\r\n exchange?:Exchange;\r\n excludePromotion:boolean;\r\n discountable?:boolean;\r\n\r\n itemDiscounts?:ItemDiscounts;\r\n isLastExchanged?: boolean;\r\n\r\n // Mixed Sales fields\r\n fullfilmentId:string,\r\n fullfilmentLocationName:string,\r\n deliveryMethod?:string,\r\n deliveryGroup?:string,\r\n giftCardNumberIssued?: string,\r\n giftCardAmount?: number,\r\n giftCardRecipientEmail?: string,\r\n giftCardExpiryDate?: string ,\r\n giftCardRecipientName?: string,\r\n giftCard?:boolean,\r\n currency?:string,\r\n isWebOrder?:boolean,\r\n leadTime?: leadTime\r\n \r\n // currenttransaction doc changes\r\n lineDiscount?:any\r\n\r\n attributes?:CoreAttribute[];\r\n}\r\n\r\nexport interface ItemDiscounts{\r\n trnDiscountsPortion:number;\r\n trnPromotionsPortion:number;\r\n refundPortion:number;\r\n}\r\n\r\n\r\n\r\nexport interface Customer {\r\n id: string;\r\n title?: string;\r\n firstName: string;\r\n lastName: string;\r\n email: string;\r\n postCode: string;\r\n telephone?: string;\r\n billingAddress?: Address | Address[];\r\n shippingAddress?: Address | Address[] | any;\r\n shipmentDetails?: ShipmentDetails[];\r\n addressDetail?: string;\r\n noCustomerSelected?: boolean;\r\n externalId?: string; \r\n}\r\n\r\nexport interface Address \r\n{\r\n id?: string;\r\n countryCode?: string;\r\n address1?: string;\r\n address2?: string;\r\n address3?: string;\r\n city?: string;\r\n county?: string;\r\n postCode?: string;\r\n country?: string;\r\n }\r\n\r\n export interface ShipmentDetails {\r\n id?: string,\r\n deliveryGroup?: string,\r\n}\r\n\r\nexport interface PaymentDetails {\r\n cardNumber?: any;\r\n sqNo?:number;\r\n result?: string;\r\n currency: string;\r\n amount: string;\r\n authcode?: string;\r\n pan?: string;\r\n cardType?: string;\r\n transactionDate?: string;\r\n mid?: string;\r\n tid?: string;\r\n cvm?: string;\r\n hostReferenceId?: string;\r\n aid?: string;\r\n receiptNo?: string;\r\n expirydate?: string;\r\n transactionReference: string;\r\n applicationVersion?: string;\r\n entryMethod?:string;\r\n transactionType:string;\r\n totalamount:string;\r\n paymentType?:string;\r\n}\r\n\r\nexport interface TaxBreakdown\r\n{\r\n taxLines : TaxLine[],\r\n totalTaxableAmount: number;\r\n}\r\n\r\nexport interface TotalTaxSummary{\r\n VATCode:string,\r\n VAT : number;\r\n PreTaxSum: number\r\n TaxSum: number\r\n TXrateSum: number\r\n}\r\n\r\nexport interface TaxLine\r\n{\r\n itemLineId: number,\r\n taxableAmount: number,\r\n taxLineTotal: number,\r\n VAT: number,\r\n VATCode : string,\r\n PreTax: number\r\n}\r\n\r\nexport enum DISCOUNTTYPE {\r\n PERCENT = 'Percent',\r\n AMOUNT = 'AMOUNT'\r\n}\r\n\r\nexport interface TransactionInfo {\r\n shippingId?: string,\r\n externalShippingId?: string\r\n}\r\n\r\nexport interface externalTransactionDetails {\r\n uniqueId?: string,\r\n providerType?: string,\r\n details?: TransactionInfo\r\n}\r\n\r\nexport enum INITIATING_MODULE {\r\n EBASKET = \"eBasket\"\r\n}\r\n\r\nexport interface pendingMethod {\r\n _type?: string;\r\n type?: string;\r\n message?: string;\r\n path?: string;\r\n details?: ShipmentId;\r\n}\r\n\r\nexport interface ShipmentId {\r\n shipmentId?: string;\r\n}\r\n\r\nexport interface CustomerAddress {\r\n _type?: string;\r\n email?: string;\r\n address1?: string;\r\n city?: string;\r\n country_code?: string;\r\n first_name?: string;\r\n full_name?: string;\r\n id?: string;\r\n last_name?: string;\r\n phone?: string;\r\n salutation?: string;\r\n c_area?: string;\r\n c_email?: string;\r\n c_phoneWhatsApp?: string;\r\n c_strValue?: string;\r\n postal_code?: string;\r\n}\r\n\r\nexport interface CustomerInfo {\r\n _type?: string;\r\n customer_id?: string;\r\n email?: string;\r\n}\r\n\r\nexport interface GroupedTaxItem {\r\n _type?: string;\r\n tax_rate?: number;\r\n tax_value?: number;\r\n}\r\n\r\nexport interface additionalNotes {\r\n _type?: string;\r\n link?: string;\r\n}\r\n\r\nexport interface ProductItem {\r\n _type?: string;\r\n adjusted_tax?: number;\r\n base_price?: number;\r\n bonus_product_line_item?: boolean;\r\n gift?: boolean;\r\n item_id?: string;\r\n item_text?: string;\r\n price?: number;\r\n price_adjustments?: PriceAdjustment[];\r\n price_after_item_discount?: number;\r\n price_after_order_discount?: number;\r\n product_id?: string;\r\n product_name?: string;\r\n quantity?: number;\r\n shipment_id?: string;\r\n tax?: number;\r\n tax_basis?: number;\r\n tax_class_id?: string;\r\n tax_rate?: number;\r\n c_osuObjectData?:string;\r\n}\r\n\r\nexport interface ShippingMethod {\r\n _type?: string;\r\n description?: string;\r\n id?: string;\r\n name?: string;\r\n price?: number;\r\n c_approachingThresholdMessage?: string;\r\n c_estimatedArrivalTime?: string;\r\n c_isEmail?: boolean;\r\n c_storePickupEnabled?: boolean;\r\n c_thresholdValue?: number;\r\n} \r\n\r\nexport interface shipment {\r\n _type?: string;\r\n adjusted_merchandize_total_tax?: number;\r\n adjusted_shipping_total_tax?: number;\r\n gift?: boolean;\r\n merchandize_total_tax?: number;\r\n product_sub_total?: number;\r\n product_total?: number;\r\n shipment_id?: string;\r\n shipment_total?: number;\r\n shipping_address?: CustomerAddress;\r\n shipping_method?: ShippingMethod;\r\n shipping_status?: string;\r\n shipping_total?: number;\r\n shipping_total_tax?: number;\r\n tax_total?: number;\r\n c_fromStoreId?: string;\r\n}\r\n\r\nexport interface ShippingItem {\r\n _type?: string;\r\n adjusted_tax?: number;\r\n base_price?: number;\r\n item_id?: string;\r\n item_text?: string;\r\n price?: number;\r\n price_after_item_discount?: number;\r\n shipment_id?: string;\r\n tax?: number;\r\n tax_basis?: number;\r\n tax_class_id?: string;\r\n tax_rate?: number;\r\n}\r\n\r\nexport interface AppliedDiscount {\r\n _type?: string,\r\n amount?: number,\r\n percentage?: number,\r\n type?: string\r\n}\r\n\r\nexport interface PriceAdjustment {\r\n _type?: string,\r\n applied_discount?: AppliedDiscount,\r\n coupon_code?: string,\r\n creation_date?: string,\r\n custom?: boolean,\r\n item_text?: string,\r\n last_modified?: string,\r\n manual?: boolean,\r\n price?: number\r\n price_adjustment_id?: string,\r\n promotion_id?: string,\r\n promotion_link?: string\r\n}\r\n\r\nexport interface OrderDetails {\r\n _v?: string;\r\n _type?: string;\r\n _resource_state?: string;\r\n _flash?: pendingMethod[];\r\n adjusted_merchandize_total_tax?: number;\r\n adjusted_shipping_total_tax?: number;\r\n agent_basket?: boolean;\r\n basket_id?: string;\r\n billing_address?: CustomerAddress;\r\n channel_type?: string;\r\n creation_date?: string;\r\n currency?: string;\r\n customer_info?: CustomerInfo;\r\n grouped_tax_items?: GroupedTaxItem[];\r\n last_modified?: string;\r\n merchandize_total_tax?: number;\r\n notes?: additionalNotes;\r\n order_price_adjustments?: PriceAdjustment[],\r\n order_no?: string;\r\n order_total?: number;\r\n product_items?: ProductItem[];\r\n product_sub_total?: number;\r\n product_total?: number;\r\n shipments?: shipment[];\r\n shipping_items?: ShippingItem[];\r\n shipping_total?: number;\r\n shipping_total_tax?: number;\r\n taxation?: string;\r\n tax_rounded_at_group?: boolean;\r\n tax_total?: number;\r\n c_isInStoreOrder?: boolean;\r\n}\r\n\r\nexport enum PROVIDERS {\r\n SALESFORCE = \"Salesforce\",\r\n MAGENTO = \"Magento\"\r\n}\r\n\r\nexport enum PROMOTION_LEVEL\r\n{\r\n LINE=\"LINE\",\r\n TRANSACTION=\"TRANSACTION\"\r\n}\r\n\r\nexport enum PROMOTION_TYPE\r\n{\r\n COUPON=\"COUPON\"\r\n}\r\n\r\n","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nvar ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n var r, s = 0;\n function next() {\n while (r = env.stack.pop()) {\n try {\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n if (r.dispose) {\n var result = r.dispose.call(r.value);\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n else s |= 1;\n }\n catch (e) {\n fail(e);\n }\n }\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\n });\n }\n return path;\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __esDecorate,\n __runInitializers,\n __propKey,\n __setFunctionName,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n __rewriteRelativeImportExtension,\n};\n","import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject } from 'rxjs';\r\nimport { DELIVERY_METHODS } from './mapper-library.model';\r\nimport { Basket, DeliveryGroupInfo, DeliveryInfo, Product, TransactionPromotion } from './mapper-library.model';\r\nimport { TransactionDiscount } from './mapper-library.model';\r\nimport { NumberUtilService } from './number-util.service';\r\nimport {AppLoggerService} from '@pmcretail/common-services/common/app-logger.service';\r\n\r\nexport class BasketService {\r\n currentBasket: Basket = {\r\n products: [],\r\n transactionDiscount: [],\r\n quantity: 0,\r\n total: 0,\r\n saleTotal: 0,\r\n baseCurrency: ''\r\n };\r\n\r\n private basketSource = new BehaviorSubject<any>(null);\r\n basket = this.basketSource.asObservable();\r\n\r\n private productSource = new BehaviorSubject<any>(null);\r\n product = this.productSource.asObservable();\r\n\r\n private peerSource = new BehaviorSubject<boolean>(false);\r\n peerSync = this.peerSource.asObservable();\r\n\r\n private scanSource = new BehaviorSubject<boolean>(false);\r\n scanner = this.scanSource.asObservable();\r\n\r\n private _isMixedBasketSales: boolean | undefined;\r\n public get isMixedBasketSales(): any {\r\n return this._isMixedBasketSales;\r\n }\r\n public set isMixedBasketSales(v: any) {\r\n this._isMixedBasketSales = v;\r\n }\r\n className = \"BasketService\";\r\n\r\n constructor(private numberUtilService: NumberUtilService) { }\r\n\r\n updateBasket(basket: Basket) {\r\n this.currentBasket = basket;\r\n this.isMixedBasketSales = this.filterProductListWithWebOrder(true).length > 0;\r\n this.basketSource.next(basket);\r\n }\r\n\r\n /**\r\n * calculates the total basket value and quantity\r\n * @param null\r\n * @returns void\r\n */\r\n updateBasketTotal(basketDetails: { quantity: number; total: number; products: any; transactionId: any; basketTotal: any; }, basketState: { updateBasket: (arg0: any) => void; }) {\r\n basketDetails.quantity = 0;\r\n basketDetails.total = 0;\r\n for (const p of basketDetails.products) {\r\n basketDetails.quantity = basketDetails.quantity + p.quantity;\r\n basketDetails.total =\r\n this.numberUtilService.trimTo2Decimal(basketDetails.total) +\r\n this.numberUtilService.trimTo2Decimal(p.total);\r\n }\r\n AppLoggerService.logDebug(this.className, \"updateBasketTotal\",\r\n `basketDetails updated values for transaction id\r\n ${basketDetails.transactionId}, basketDetails\r\n ${JSON.stringify(basketDetails)}`\r\n );\r\n basketDetails.basketTotal = basketDetails.total;\r\n basketState.updateBasket(basketDetails);\r\n }\r\n\r\n /**\r\n * add Line promotion\r\n * @param null\r\n * @returns basketDetails\r\n */\r\n addlinePromotion(promotionList: { result: { linePromotions: string | any[]; }; }, basketDetails: { products: any; }) {\r\n AppLoggerService.logDebug(this.className, \"addlinePromotion\",\r\n `promotionList ${JSON.stringify(promotionList)} and \r\n basketDetails\r\n ${JSON.stringify(basketDetails)} for linePromotions`\r\n );\r\n if (\r\n promotionList &&\r\n promotionList.result &&\r\n promotionList.result.linePromotions &&\r\n promotionList.result.linePromotions.length > 0\r\n ) {\r\n for (var element of basketDetails.products) {\r\n for (var promotionelement of promotionList.result.linePromotions) {\r\n if (\r\n element.itemLineId.toString() ===\r\n promotionelement.itemLineId.toString()\r\n ) {\r\n element.linePromotions = promotionelement;\r\n }\r\n }\r\n }\r\n }\r\n return basketDetails;\r\n }\r\n\r\n /**\r\n * add Transaction promotion\r\n * @param null\r\n * @returns basketDetails\r\n */\r\n\r\n addTransactionPromotion(promotionList: { result: { transactionPromotion: any }; }, basketdetails: Basket) {\r\n AppLoggerService.logDebug(this.className, \"addTransactionPromotion\",\r\n `promotionList ${JSON.stringify(promotionList)} and \r\n basketDetails\r\n ${JSON.stringify(basketdetails)} for transactionPromotions ${JSON.stringify(basketdetails.transactionPromotion)}`\r\n );\r\n if (\r\n promotionList &&\r\n promotionList.result &&\r\n promotionList.result.transactionPromotion &&\r\n promotionList.result.transactionPromotion.length > 0\r\n ) {\r\n promotionList.result.transactionPromotion.forEach((tPromotion: any) => {\r\n let transactionPromotionEntryUpdated: any = Object.assign(\r\n {},\r\n tPromotion\r\n );\r\n\r\n transactionPromotionEntryUpdated.itemLineIds = basketdetails.products.map(\r\n (product) => {\r\n return product.itemLineId;\r\n }\r\n );\r\n\r\n if (!basketdetails.transactionPromotion) {\r\n basketdetails.transactionPromotion = [];\r\n }\r\n basketdetails.transactionPromotion.push(\r\n transactionPromotionEntryUpdated\r\n );\r\n\r\n basketdetails = this.transactionPromotionProductPortionCalc(\r\n basketdetails,\r\n transactionPromotionEntryUpdated\r\n );\r\n });\r\n }\r\n AppLoggerService.logDebug(this.className, \"addTransactionPromotion\",\r\n \"basket details in refund calculation file\",\r\n basketdetails\r\n );\r\n return basketdetails;\r\n }\r\n\r\n updateProductTotalForSummary(basketDetails: { total: string | number; quantity: string | number; products: any; }) {\r\n /*sale- product refundedQuantity = undefined\r\n partial refund - product refundedQuantity is > 0\r\n total refund - proudct refundedQuantity is > 0\r\n exchange - exchange product refundedQuantity is > 0 \r\n new product refundedQuantity = undefined \r\n old product without exchange refundedQuantity = 0\r\n unreference refund-product refundedQuantity is > 0 */\r\n\r\n basketDetails.total = 0;\r\n basketDetails.quantity = 0;\r\n for (var product of basketDetails.products) {\r\n if (product.linePromotions) {\r\n product.total = product.linePromotions.promotionLinePrice;\r\n } else if (product.lineDiscount && !product.linePromotions) {\r\n product.total = product.lineDiscount.discountedLinePrice;\r\n } else {\r\n product.total = product.totalLinePrice;\r\n }\r\n product.total =\r\n product.total -\r\n Math.abs(product.refundedTotal ? product.refundedTotal : 0);\r\n\r\n basketDetails.total += product.total;\r\n basketDetails.quantity =\r\n basketDetails.quantity +\r\n (product.quantity -\r\n (product.refundedQuantity ? product.refundedQuantity : 0));\r\n AppLoggerService.logDebug(this.className, \"updateProductTotalForSummary\",\r\n \"update basketdetails total :\" +\r\n basketDetails.total +\r\n \" Product line ID : \" +\r\n product.itemLineId +\r\n \" product total : \" +\r\n product.total,\r\n \"quantity : \" + basketDetails.quantity\r\n );\r\n }\r\n return this.updateBasketTotalForSummary(basketDetails);\r\n }\r\n\r\n updateBasketTotalForSummary(basketDetails: any) {\r\n basketDetails.basketTotal = basketDetails.total;\r\n AppLoggerService.logInfo(this.className, \"updateBasketTotalForSummary\",\r\n \"update Basket Total for transaction transactionDiscount \",\r\n basketDetails.transactionDiscount\r\n );\r\n\r\n AppLoggerService.logInfo(this.className, \"updateBasketTotalForSummary\",\r\n \"update Basket Total for transaction transactionPromotion \",\r\n basketDetails.transactionPromotion\r\n );\r\n\r\n basketDetails = this.updateTransactionPromotion(basketDetails);\r\n basketDetails = this.updateTransactionDiscount(basketDetails);\r\n basketDetails.basketTotal = Number(basketDetails.basketTotal.toFixed(2));\r\n\r\n AppLoggerService.logInfo(this.className, \"updateBasketTotalForSummary\",\r\n \"update Basket Total: basketTotal after promotion applied for basketTotal\",\r\n basketDetails.basketTotal\r\n );\r\n return basketDetails;\r\n }\r\n\r\n updateTransactionDiscount(basketDetails: { transactionDiscount: any[]; basketTotal: number; }) {\r\n if (\r\n basketDetails.transactionDiscount &&\r\n basketDetails.transactionDiscount.length > 0\r\n ) {\r\n const discountTotal = basketDetails.transactionDiscount.reduce(\r\n (n: any, { discountAmount }: any) => n + discountAmount,\r\n 0\r\n );\r\n AppLoggerService.logDebug(this.className, \"updateTransactionDiscount\", \"discountTotal \", discountTotal);\r\n basketDetails.basketTotal =\r\n basketDetails.basketTotal - Math.abs(discountTotal);\r\n }\r\n return basketDetails;\r\n }\r\n\r\n updateTransactionPromotion(basketDetails: { transactionPromotion: any[]; basketTotal: number; }) {\r\n if (\r\n basketDetails.transactionPromotion &&\r\n basketDetails.transactionPromotion.length > 0\r\n ) {\r\n const discountTotal = basketDetails.transactionPromotion.reduce(\r\n (n: any, { promotionAmount }: any) => n + promotionAmount,\r\n 0\r\n );\r\n basketDetails.basketTotal =\r\n basketDetails.basketTotal - Math.abs(discountTotal);\r\n }\r\n return basketDetails;\r\n }\r\n\r\n updateBasketTotalWithoutDiscount(basket: Basket): Basket {\r\n basket.total = 0;\r\n basket.quantity = 0;\r\n\r\n for (var product of basket.products) {\r\n if (product.linePromotions) {\r\n product.total = product.linePromotions.promotionLinePrice;\r\n } else if (product.lineDiscount && !product.linePromotions) {\r\n product.total = product.lineDiscount.discountedLinePrice || 0;\r\n } else {\r\n product.total = product.totalLinePrice;\r\n }\r\n\r\n product.total =\r\n product.total -\r\n Math.abs(product.refundedTotal ? product.refundedTotal : 0);\r\n basket.total += product.total;\r\n basket.quantity =\r\n basket.quantity +\r\n (product.quantity -\r\n (product.refundedQuantity ? product.refundedQuantity : 0));\r\n\r\n AppLoggerService.logDebug(this.className, \"updateBasketTotalWithoutDiscount\",\r\n \"e-basket:basket service:update basketdetails total :\" +\r\n JSON.stringify(basket) +\r\n basket.total +\r\n \" Product line ID : \" +\r\n product.itemLineId +\r\n \" product total : \" +\r\n product.total\r\n );\r\n }\r\n\r\n basket.basketTotal = basket.total;\r\n return basket;\r\n }\r\n\r\n updateBasketTotalWithDiscounts(basket: any): Basket {\r\n AppLoggerService.logDebug(this.className, \"updateBasketTotalWithDiscounts\",\r\n `this.basketDetails new values ${basket}, \r\n ${JSON.stringify(basket.basketTotal)}`\r\n );\r\n if (basket.transactionPromotion && basket.transactionPromotion.length > 0) {\r\n const discountTotal = basket.transactionPromotion.reduce(\r\n (n: any, { promotionAmount }: any) => n + promotionAmount,\r\n 0\r\n );\r\n basket.basketTotal = basket.basketTotal - discountTotal;\r\n }\r\n if (basket.transactionDiscount && basket.transactionDiscount.length > 0) {\r\n const discountTotal = basket.transactionDiscount.reduce(\r\n (n: any, { discountAmount }: any) => n + discountAmount,\r\n 0\r\n );\r\n\r\n basket.basketTotal = basket.basketTotal - discountTotal;\r\n }\r\n AppLoggerService.logDebug(this.className, \"updateBasketTotalWithDiscounts\",\r\n \"basket new values\",\r\n basket\r\n );\r\n\r\n return basket;\r\n }\r\n\r\n transactionDiscountAndPromotionProductortionCalculation(basket: Basket) {\r\n if (basket.transactionDiscount && basket.transactionDiscount.length > 0) {\r\n basket.transactionDiscount.forEach(\r\n (discount) =>\r\n (basket = this.transactionDiscountProductPortionCalc(\r\n basket,\r\n discount\r\n ))\r\n );\r\n }\r\n\r\n if (basket.transactionPromotion && basket.transactionPromotion.length > 0) {\r\n basket.transactionPromotion.forEach((promotion) => {\r\n basket = this.transactionPromotionProductPortionCalc(basket, promotion);\r\n });\r\n }\r\n AppLoggerService.logDebug(this.className, \"transactionDiscountAndPromotionProductortionCalculation\",\r\n `basket item discount protion calculation ,\r\n ${basket},\r\n ${basket.products}`\r\n );\r\n return basket;\r\n }\r\n\r\n transactionPromotionProductPortionCalc(\r\n basket: any,\r\n promotion: any\r\n ) {\r\n let total = 0;\r\n let percentage = 0;\r\n {\r\n basket.products.forEach((p:any) => {\r\n if (promotion.itemLineIds.includes(p.itemLineId)) {\r\n p = this.validateProductItemDiscount(p);\r\n const productContributionInTotal =\r\n this.numberUtilService.trimTo2Decimal2(p.itemDiscounts.trnDiscountsPortion) +\r\n this.numberUtilService.trimTo2Decimal2(p.itemDiscounts.trnPromotionsPortion) -\r\n this.numberUtilService.trimTo2Decimal2(p.itemDiscounts.refundPortion);\r\n total += (p.total - this.numberUtilService.trimTo2Decimal2(productContributionInTotal));\r\n }\r\n });\r\n AppLoggerService.logDebug(this.className, \"transactionPromotionProductPortionCalc\",\r\n `ebasket: trnsactionPromotion: ${JSON.stringify(\r\n promotion\r\n )}, selected products total: ${total}`\r\n );\r\n basket.products.forEach((product: any) => {\r\n product = this.validateProductItemDiscount(product);\r\n\r\n const productContributionInTotal =\r\n this.numberUtilService.trimTo2Decimal2(product.itemDiscounts.trnDiscountsPortion) +\r\n this.numberUtilService.trimTo2Decimal2(product.itemDiscounts.trnPromotionsPortion) -\r\n this.numberUtilService.trimTo2Decimal2(product.itemDiscounts.refundPortion);\r\n\r\n if (promotion.itemLineIds.includes(product.itemLineId)) {\r\n percentage = ((product.total - this.numberUtilService.trimTo2Decimal2(productContributionInTotal)) / total) * 100;\r\n product.itemDiscounts.trnPromotionsPortion +=\r\n (promotion.promotionAmount * percentage) / 100;\r\n product.itemDiscounts.trnPromotionsPortion = this.numberUtilService.trimTo2Decimal2(product.itemDiscounts.trnPromotionsPortion);\r\n }\r\n });\r\n }\r\n return basket;\r\n }\r\n\r\n transactionDiscountProductPortionCalc(\r\n basket: any,\r\n discount: any\r\n ) {\r\n let total = 0;\r\n let percentage = 0;\r\n\r\n basket.products.forEach((p: any) => {\r\n if (discount.itemLineIds.includes(p.itemLineId)) {\r\n p = this.validateProductItemDiscount(p);\r\n const productContributionInTotal =\r\n this.numberUtilService.trimTo2Decimal2(p.itemDiscounts.trnDiscountsPortion) +\r\n this.numberUtilService.trimTo2Decimal2(p.itemDiscounts.trnPromotionsPortion) -\r\n this.numberUtilService.trimTo2Decimal2(p.itemDiscounts.refundPortion);\r\n\r\n\r\n total += (p.total - this.numberUtilService.trimTo2Decimal2(productContributionInTotal));\r\n }\r\n });\r\n\r\n AppLoggerService.logDebug(this.className, \"transactionDiscountProductPortionCalc\",\r\n `ebasket: trnsactionDiscount: ${JSON.stringify(\r\n discount\r\n )}, selected products total: ${total}`\r\n );\r\n\r\n basket.products.forEach((product:any) => {\r\n product = this.validateProductItemDiscount(product);\r\n AppLoggerService.logDebug(this.className, \"transactionDiscountProductPortionCalc\", \"discountable in basket service\", product.discountable);\r\n\r\n const productContributionInTotal =\r\n this.numberUtilService.trimTo2Decimal2(product.itemDiscounts.trnDiscountsPortion) +\r\n this.numberUtilService.trimTo2Decimal2(product.itemDiscounts.trnPromotionsPortion) -\r\n this.numberUtilService.trimTo2Decimal2(product.itemDiscounts.refundPortion);\r\n\r\n if (discount.itemLineIds.includes(product.itemLineId) && product.discountable == true) {\r\n percentage = ((product.total - this.numberUtilService.trimTo2Decimal2(productContributionInTotal)) / total) * 100;\r\n product.itemDiscounts.trnDiscountsPortion +=\r\n (discount.discountAmount * percentage) / 100;\r\n product.itemDiscounts.trnDiscountsPortion = this.numberUtilService.trimTo2Decimal2(product.itemDiscounts.trnDiscountsPortion)\r\n }\r\n });\r\n return basket;\r\n }\r\n\r\n public validateProductItemDiscount(product: Product) {\r\n if (!product.itemDiscounts) {\r\n product.itemDiscounts = {\r\n trnDiscountsPortion: 0,\r\n trnPromotionsPortion: 0,\r\n refundPortion: 0,\r\n };\r\n }\r\n return product;\r\n }\r\n\r\n markProduct(product: Product) {\r\n this.productSource.next(product);\r\n }\r\n stopPeerSyncProcess(peerSync: boolean) {\r\n this.peerSource.next(peerSync);\r\n }\r\n\r\n scanStart(isScanning: boolean) {\r\n this.scanSource.next(isScanning);\r\n }\r\n\r\n promotionRemainingCalculation(promotion: TransactionPromotion[]) {\r\n var promotionValue = 0;\r\n promotion.forEach((element) => {\r\n promotionValue += element.promotionAmount;\r\n });\r\n return promotionValue;\r\n }\r\n\r\n discountRemainingCalculation(discount: TransactionDiscount[]) {\r\n var discountValue = 0;\r\n discount.forEach((element) => {\r\n discountValue += element.discountAmount;\r\n });\r\n return discountValue;\r\n }\r\n\r\n discountRefundedCalculation(discount: TransactionDiscount[]) {\r\n var discountValue = 0;\r\n discount.forEach((element) => {\r\n if (element.discountAmount < 0) {\r\n discountValue += element.discountAmount;\r\n }\r\n });\r\n return discountValue;\r\n }\r\n\r\n generateNewItemLineId(products: Product[]) {\r\n let largestNumber: any = 0;\r\n\r\n if (products.length > 0) {\r\n let itemLineIdArray = products.map((product) => {\r\n return product.itemLineId;\r\n });\r\n\r\n largestNumber = itemLineIdArray.reduce((a :any, b:any) => Math.max(a, b));\r\n }\r\n\r\n return largestNumber + 1;\r\n }\r\n\r\n updateBasketProductDataAsPerQuantity(\r\n product: any,\r\n quantity: number\r\n ): Product {\r\n\r\n AppLoggerService.logDebug(this.className, \"updateBasketProductDataAsPerQuantity\", `ebasket: updateBasketProductDataAsPerQuantity : ${quantity} product: ${JSON.stringify(product)}`);\r\n product.quantity = quantity;\r\n if (product.hasOwnProperty(\"lineDiscount\")) {\r\n // && this.product.quantity !== this.productDetailForm.controls.quantity.value\r\n product.lineDiscount.discountedLinePrice = Number(\r\n this.numberUtilService.getFlooredFixed(\r\n product.lineDiscount.unitPrice * quantity,\r\n 2\r\n )\r\n );\r\n product.lineDiscount.discountAmount =\r\n product.totalLinePrice - product.lineDiscount.discountedLinePrice;\r\n } else {\r\n product.totalLinePrice =\r\n quantity * this.numberUtilService.trimTo2Decimal(product.selectedPrice);\r\n }\r\n if (product.lineDiscount) {\r\n product.total = product.lineDiscount.discountedLinePrice;\r\n } else {\r\n product.total = product.totalLinePrice;\r\n }\r\n AppLoggerService.logDebug(this.className, \"updateBasketProductDataAsPerQuantity\", `ebasket: updateBasketProductDataAsPerQuantity : ${quantity} product: ${JSON.stringify(product)}`);\r\n\r\n return product;\r\n }\r\n\r\n filterProductListWithWebOrder(isWebOrder: boolean): Product[] {\r\n AppLoggerService.logDebug(this.className, \"filterProductListWithWebOrder\", \"filterProductListWithWebOrder hit\", this.currentBasket.products);\r\n if (isWebOrder)\r\n return this.currentBasket.products.filter((x) => x.isWebOrder);\r\n else {\r\n return this.currentBasket.products.filter((x) => !x.isWebOrder);\r\n }\r\n }\r\n\r\n filterProductListWithDelivery(): Product[] {\r\n AppLoggerService.logDebug(this.className, \"filterProductListWithDelivery\", \"filterProductListWithDelivery hit\", this.currentBasket.products);\r\n return this.currentBasket.products.filter((x) => x.deliveryMethod === DELIVERY_METHODS.DELIVERY.toString());\r\n }\r\n\r\n filterProductListWithDeliveryGroup(group: string, products: Product[]): Product[] {\r\n AppLoggerService.logDebug(this.className, \"filterProductListWithDeliveryGroup\", \"filterProductListWithDeliveryGroup hit\", products);\r\n return products.filter((x) => x.deliveryGroup === group);\r\n }\r\n\r\n generateNewDeliveryGroupNumber(products: Product[]) {\r\n let largestNumber = 0;\r\n\r\n if (products.length > 0) {\r\n let deliveryGroupArr = products.map((product) => {\r\n if (product.deliveryGroup) {\r\n return parseInt(product.deliveryGroup);\r\n }\r\n return 0;\r\n });\r\n\r\n largestNumber = deliveryGroupArr.reduce((a, b) => Math.max(a, b));\r\n }\r\n\r\n return (largestNumber + 1).toString();\r\n }\r\n\r\n getDeliveryGroupNumbers(products: Product[]) {\r\n AppLoggerService.logDebug(this.className, \"getDeliveryGroupNumbers\", \"getDeliveryGroupNumbers initiating : \",products);\r\n\r\n let uniqueAndsortedResult: number[] = [];\r\n\r\n if (products.length > 0) {\r\n let deliveryGroupArr = products.map((product) => {\r\n if (product.deliveryGroup) {\r\n return parseInt(product.deliveryGroup);\r\n }\r\n else if (product.deliveryMethod === \"1\") {\r\n return 1;\r\n }\r\n return 0;\r\n });\r\n\r\n uniqueAndsortedResult = Array.from(new Set(deliveryGroupArr)).sort((a, b) => a - b);\r\n AppLoggerService.logDebug(this.className, \"getDeliveryGroupNumbers\", \"getDeliveryGroupNumbers : uniqueAndsortedResult\", uniqueAndsortedResult);\r\n }\r\n return uniqueAndsortedResult;\r\n }\r\n\r\n updateProductsWithNewDeliveryGroupNumber(products: Product[]) {\r\n AppLoggerService.logDebug(this.className, \"updateProductsWithNewDeliveryGroupNumber\", \"initiating : \", products);\r\n\r\n let newGroupNumber = this.generateNewDeliveryGroupNumber(this.currentBasket.products);\r\n if (products.length > 0) {\r\n this.currentBasket.products.forEach(cBProducts => {\r\n products.forEach(element => {\r\n if (cBProducts.itemLineId === element.itemLineId) {\r\n cBProducts.deliveryGroup = newGroupNumber;\r\n }\r\n\r\n });\r\n });\r\n\r\n }\r\n\r\n this.updateBasket(this.currentBasket);\r\n return;\r\n }\r\n\r\n calculateEstimatedTime(products: any[]) {\r\n try {\r\n let time;\r\n let estmatedTime: number = 0;\r\n let estimatedDays: string = \"Hours\";\r\n products.forEach((element: { leadTime: { type: string; value: any; }; }) => {\r\n\r\n if (element.leadTime.type.toLocaleLowerCase() === \"weeks\") {\r\n time = Number(element.leadTime.value) * 24 * 7;\r\n estmatedTime = Math.max(estmatedTime, time);\r\n estimatedDays = (estmatedTime === time) ? element.leadTime.type : estimatedDays\r\n AppLoggerService.logDebug(this.className, \"calculateEstimatedTime\", `week ${estmatedTime} ${estimatedDays}`);\r\n\r\n } else if (element.leadTime.type.toLocaleLowerCase() === \"days\") {\r\n time = Number(element.leadTime.value) * 24;\r\n estmatedTime = Math.max(estmatedTime, time);\r\n estimatedDays = (estmatedTime === time) ? element.leadTime.type : estimatedDays\r\n\r\n AppLoggerService.logDebug(this.className, \"calculateEstimatedTime\", `days ${estmatedTime} ${estimatedDays}`);\r\n\r\n }\r\n else if (element.leadTime.type.toLocaleLowerCase() === \"months\") {\r\n time = Number(element.leadTime.value) * 24 * 30;\r\n estmatedTime = Math.max(estmatedTime, time);\r\n estimatedDays = (estmatedTime === time) ? element.leadTime.type : estimatedDays\r\n\r\n AppLoggerService.logDebug(this.className, \"calculateEstimatedTime\", `months ${estmatedTime} ${estimatedDays}`);\r\n\r\n }\r\n else if (element.leadTime.type.toLocaleLowerCase() === \"years\") {\r\n time = Number(element.leadTime.value) * 24 * 365;\r\n estmatedTime = Math.max(estmatedTime, time);\r\n estimatedDays = (estmatedTime === time) ? element.leadTime.type : estimatedDays\r\n\r\n AppLoggerService.logDebug(this.className, \"calculateEstimatedTime\", `years ${estmatedTime} ${estimatedDays}`);\r\n\r\n } else {\r\n time = Number(element.leadTime.value);\r\n estmatedTime = Math.max(estmatedTime, time);\r\n estimatedDays = (estmatedTime === time) ? element.leadTime.type : estimatedDays;\r\n AppLoggerService.logDebug(this.className, \"calculateEstimatedTime\", `hours ${estmatedTime} ${estimatedDays}`);\r\n\r\n }\r\n });\r\n\r\n if (estimatedDays.toLocaleLowerCase() === \"days\") {\r\n estmatedTime = estmatedTime / 24;\r\n } else if (estimatedDays.toLocaleLowerCase() === \"weeks\") {\r\n estmatedTime = estmatedTime / (24 * 7);\r\n } else if (estimatedDays.toLocaleLowerCase() === \"months\") {\r\n estmatedTime = estmatedTime / (24 * 30);\r\n } else if (estimatedDays.toLocaleLowerCase() === \"years\") {\r\n estmatedTime = estmatedTime / (24 * 365);\r\n }\r\n\r\n let estimate = {\r\n value: estmatedTime.toString(),\r\n type: estimatedDays\r\n }\r\n return estimate;\r\n } catch (error) {\r\n AppLoggerService.logError(this.className, \"calculateEstimatedTime\", \"error in calculateEstimatedTime\", error);\r\n }\r\n return 0;\r\n }\r\n\r\n updateProductsWithDeliveryGroupNumber(oldGroup: string, newGroup: string) {\r\n AppLoggerService.logDebug(this.className, \"updateProductsWithDeliveryGroupNumber initiating\");\r\n\r\n this.currentBasket.products.forEach(cBProducts => {\r\n if (cBProducts.deliveryGroup === oldGroup) {\r\n cBProducts.deliveryGroup = newGroup;\r\n }\r\n\r\n });\r\n\r\n this.updateBasket(this.currentBasket);\r\n return;\r\n }\r\n\r\n getDeliveryInfo(): any {\r\n AppLoggerService.logDebug(this.className, \"getDeliveryInfo\", \"getDeliveryGroupInfor initiating\");\r\n try {\r\n let groupInfo: DeliveryInfo = {\r\n groups: []\r\n }\r\n\r\n this.getDeliveryGroupNumbers(this.currentBasket.products).forEach((groupNumber) => {\r\n let group: any = {\r\n groupNumber: groupNumber,\r\n items: [],\r\n estimate: {\r\n type: \"Hours\",\r\n value: \"0\"\r\n }\r\n }\r\n this.currentBasket.products.forEach(cBProducts => {\r\n if (cBProducts.deliveryGroup === groupNumber.toString()) {\r\n group.items.push(cBProducts);\r\n }\r\n });\r\n\r\n group.estimate = this.calculateEstimatedTime(group.items);\r\n\r\n groupInfo.groups.push(group);\r\n\r\n });\r\n\r\n return groupInfo;\r\n }\r\n catch (error) {\r\n AppLoggerService.logError(this.className, \"getDeliveryInfo\", \"error while getting delivery info\", error);\r\n }\r\n }\r\n}\r\n","import { CurrencyPipe } from \"@angular/common\";\r\nimport { Injectable } from \"@angular/core\";\r\nimport {AppLoggerService} from '@pmcretail/common-services/common/app-logger.service';\r\n\r\n@Injectable({\r\n providedIn: \"root\",\r\n})\r\nexport class NumberUtilService {\r\n className = \"NumberUtilService\";\r\n constructor( private cp: CurrencyPipe) {}\r\n\r\n trimTo2Decimal(no: number) {\r\n //return Math.floor(no * 100) / 100;\r\n return no;\r\n }\r\n\r\n trimTo2Decimal2(no: number) {\r\n // SEAM-11411 - Had to change 2nd param to 3 to fix rounding issue (FIXME - Needs a new story for refactoring)\r\n return Number(this.getFlooredFixed(no, 3));\r\n }\r\n\r\n getFlooredFixed(v, d) {\r\n return (Math.floor(v * Math.pow(10, d)) / Math.pow(10, d)).toFixed(d);\r\n }\r\n\r\n AppendWithCurrencySymbol(numValue: any, currencyCode: string): string {\r\n let returnValue: any = \"\";\r\n if (numValue) {\r\n const numb: number = parseFloat(numValue.toString().replace(',',''));\r\n returnValue = this.cp.transform(\r\n Number(numValue).toFixed(2),\r\n currencyCode.toLocaleUpperCase(),\r\n \"symbol\"\r\n );\r\n AppLoggerService.logDebug(this.className, \"AppendWithCurrencySymbol\", \"AppendWithCurrencySymbol :\" , returnValue);\r\n } else {\r\n returnValue = this.cp.transform(\r\n \"0.00\",\r\n currencyCode.toLocaleUpperCase(),\r\n \"symbol\"\r\n );\r\n }\r\n return returnValue;\r\n }\r\n}\r\n","import { CurrencyPipe } from \"@angular/common\";\r\nimport { BasketSummary, CurrentTransactionDetails, Customer, DELIVERY_METHODS, ItemDiscounts, TaxBreakdown, TaxLine, TBasket, TotalTaxSummary, TProduct, TransactionDocument } from \"./mapper-library.model\";\r\nimport { TRANSACTION_TYPE, Basket, LineDiscount, LinePromotions, Product, UserOverride } from \"./mapper-library.model\";\r\nimport { BasketService } from \"./basket.service\";\r\nimport { NumberUtilService } from \"./number-util.service\";\r\nimport {AppLoggerService} from '@pmcretail/common-services/common/app-logger.service';\r\n\r\n/**\r\n * Transaction document builder\r\n */\r\nexport class TransactionDocumentBuilder {\r\n private transactionDocument: TransactionDocument;\r\n private numberUtilService: NumberUtilService;\r\n private storeInfo : any;\r\n className = \"TransactionDocumentBuilder\";\r\n \r\n constructor(\r\n transactionDoc?: TransactionDocument,\r\n private currencyPipe?: CurrencyPipe,\r\n private basketService?: BasketService | any,\r\n ) {\r\n this.numberUtilService = new NumberUtilService(currencyPipe);\r\n this.basketService = new BasketService(this.numberUtilService);\r\n this.storeInfo = JSON.parse(localStorage.getItem('storeInfo') || '{}');\r\n if (transactionDoc) {\r\n this.transactionDocument = transactionDoc;\r\n } else {\r\n this.transactionDocument = {\r\n transactionId: \"\",\r\n offlineTransactionId: \"\",\r\n transactionRef: \"\",\r\n dateTime: \"\",\r\n orgCode: \"\",\r\n storeId: \"\",\r\n storeNodeId: \"\",\r\n storeNodeStructure: \"\",\r\n deviceId: \"\",\r\n terminalId: \"\",\r\n userId: \"\",\r\n initiatingModule : \"eBasket\",\r\n export: false,\r\n basket: {} as TBasket,\r\n basketSummary: {} as BasketSummary,\r\n baseCurrency: \"\",\r\n type: \"\",\r\n operationStatus: \"\",\r\n createdAt: \"\",\r\n updatedAt: \"\",\r\n id: \"\",\r\n currentTransactionDetails: {} as CurrentTransactionDetails,\r\n saleTotal: 0,\r\n };\r\n }\r\n }\r\n\r\n /**\r\n * Transactions ref\r\n * @returns ref\r\n */\r\n transactionRef(): TransactionDocumentBuilder {\r\n const storeDetails = JSON.parse(localStorage.getItem('storeInfo') || '{}');\r\n const date = new Date();\r\n const random = (((1 + Math.random()) * 0x10000) | 0)\r\n .toString(16)\r\n .substring(1);\r\n this.transactionDocument.transactionRef =\r\n storeDetails.orgCode + storeDetails.storeId + date.toISOString() + random;\r\n AppLoggerService.logDebug(this.className, \"transactionRef\", \"transaction ref created\", this.transactionDocument.transactionRef)\r\n return this;\r\n }\r\n\r\n /**\r\n * Transactions id\r\n * @param transactionID\r\n * @returns id\r\n */\r\n transactionId(transactionID: string, isOnline: boolean = true): TransactionDocumentBuilder {\r\n if (isOnline) {\r\n this.transactionDocument.transactionId = transactionID;\r\n }\r\n return this;\r\n }\r\n\r\n /**\r\n * Transactions id\r\n * @param transactionID\r\n * @returns id\r\n */\r\n offlineTransactionId(transactionID: string, isOnline: any): TransactionDocumentBuilder {\r\n if (!isOnline) {\r\n this.transactionDocument.offlineTransactionId = transactionID;\r\n }\r\n return this;\r\n }\r\n\r\n /**\r\n * storeNode Id\r\n * @param storeNodeId\r\n * @returns id\r\n */\r\n storeNodeId(storeNodeId: string): TransactionDocumentBuilder {\r\n this.transactionDocument.storeNodeId = storeNodeId;\r\n return this;\r\n }\r\n\r\n /**\r\n* storeNode structure\r\n* @param storeNodeStructure\r\n* @returns id\r\n*/\r\n storeNodeStructure(storeNodeStructure: string): TransactionDocumentBuilder {\r\n this.transactionDocument.storeNodeStructure = storeNodeStructure;\r\n return this;\r\n }\r\n\r\n /**\r\n * Orgs code\r\n * @param orgCode\r\n * @returns code\r\n */\r\n orgCode(orgCode: any): TransactionDocumentBuilder {\r\n this.transactionDocument.orgCode = orgCode;\r\n return this;\r\n }\r\n /**\r\n * Stores id\r\n * @param storeId\r\n * @returns id\r\n */\r\n storeId(storeId: any): TransactionDocumentBuilder {\r\n this.transactionDocument.storeId = storeId;\r\n return this;\r\n }\r\n /**\r\n * Dates time\r\n * @returns time\r\n */\r\n dateTime(): TransactionDocumentBuilder {\r\n const date = new Date();\r\n this.transactionDocument.dateTime = date.toISOString();\r\n return this;\r\n }\r\n /**\r\n * Devices id\r\n * @param deviceId\r\n * @returns id\r\n */\r\n deviceId(deviceId: any): TransactionDocumentBuilder {\r\n this.transactionDocument.deviceId = deviceId;\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * terminal id\r\n * @param terminalId\r\n * @returns id\r\n */\r\n terminalId(terminalId: any): TransactionDocumentBuilder {\r\n this.transactionDocument.terminalId = terminalId;\r\n return this;\r\n }\r\n\r\n\r\n\r\n\r\n\r\n /**\r\n * saleExport\r\n * @param saleExport\r\n * @returns id\r\n */\r\n export(saleExport: any): TransactionDocumentBuilder {\r\n this.transactionDocument.export = saleExport;\r\n return this;\r\n }\r\n\r\n\r\n\r\n /* customer(): TransactionDocumentBuilder {\r\n const user = JSON.parse(localStorage.getItem('userDetails'));\r\n this.transactionDocument.customer = user;\r\n return this;\r\n } */\r\n /**\r\n * Baskets transaction document builder\r\n * @param basketDetails\r\n * @returns basket\r\n */\r\n basket(basketDetails: Basket): TransactionDocumentBuilder {\r\n AppLoggerService.logDebug(this.className, \"basket\", \"basket details update in transaction document\", basketDetails);\r\n\r\n this.transactionDocument.subsidiaryId = basketDetails.subsidiaryId || (localStorage.getItem('subsidiaryId') || '');\r\n this.transactionDocument.basket.products = [] as TProduct[];\r\n this.transactionDocument.basket.lineDiscount = [];\r\n this.transactionDocument.basket.linePromotion = [];\r\n this.transactionDocument.basket.transactionPromotion = [];\r\n basketDetails.products.forEach((product: any, index) => {\r\n const p = {} as TProduct;\r\n p.itemDiscounts = {} as ItemDiscounts;\r\n p.SKU = product.SKU;\r\n p.excludePromotion = product.excludePromotion;\r\n p.barCode = product.barcode;\r\n p.barcodes = product.barcodes;\r\n p.description = product.description;\r\n p.itemLineId = product.itemLineId ? product.itemLineId.toString() : \"\" + (index + 1);\r\n p.price = product.selectedPrice;\r\n p.quantity = product.quantity;\r\n p.totalLinePrice = product.quantity * product.selectedPrice;\r\n p.imageUrls = product.imageUrls;\r\n p.selectedRRPPrice = product.selectedRRPPrice;\r\n\r\n //inventory fields\r\n \r\n p.fullfilmentId = product.fullfilmentId? product.fullfilmentId: this.storeInfo.storeId;\r\n\r\n p.fullfilmentLocationName = product.fullfilmentLocationName;\r\n p.deliveryGroup = product.deliveryGroup;\r\n p.leadTime = product.leadTime;\r\n p.deliveryMethod = product.deliveryMethod;\r\n\r\n p.giftCard = product.giftCard;\r\n p.giftCardExpiryDate = product.giftCardExpiryDate;\r\n p.giftCardNumberIssued = product.giftCardNumberIssued;\r\n p.giftCardRecipientEmail = product.giftCardRecipientEmail;\r\n p.giftCardRecipientName = product.giftCardRecipientName;\r\n\r\n if (product.refundedQuantity > 0) {\r\n p.refundedQuantity = product.refundedQuantity;\r\n p.refundedPromotionalQuantity = product.refundPromotionalQuantity;\r\n p.refunded = product.refunded;\r\n p.refundedReasonDescription = product.refundedReasonDescription;\r\n p.refundedReason = product.refundedReason;\r\n if (!p.refundedReasonDescription) {\r\n p.refundedReasonDescription = p.refundedReason;\r\n }\r\n p.refundedTotal = product.refundedTotal;\r\n p.isLastExchanged = product.isLastExchanged;\r\n }\r\n\r\n if (product.exchange) {\r\n p.exchange = product.exchange;\r\n }\r\n if (product.lineDiscount) {\r\n p.lineDiscount = product.lineDiscount;\r\n }\r\n p.itemDiscounts = product.itemDiscounts as ItemDiscounts;\r\n this.transactionDocument.basket.products.push(p);\r\n this.lineDiscount(basketDetails);\r\n });\r\n AppLoggerService.logInfo(this.className, \"basket\", \"transactiondocument basket details updated\", this.transactionDocument.basket);\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * current transaction Details Total(New Products)\r\n * @returns currentTransactionDetails\r\n */\r\n\r\n currentTransactionDetails(basket: Basket): TransactionDocumentBuilder {\r\n AppLoggerService.logDebug(this.className, \"currentTransactionDetails\", \"current transaction details for exchanges\", basket);\r\n this.transactionDocument.currentTransactionDetails.products = [] as Product[];\r\n this.transactionDocument.currentTransactionDetails.linePromotion = [] as LinePromotions[];\r\n this.transactionDocument.currentTransactionDetails.lineDiscount = [] as LineDiscount[];\r\n this.transactionDocument.currentTransactionDetails.transactionDiscount = [];\r\n this.transactionDocument.currentTransactionDetails.products = basket.products;\r\n this.transactionDocument.currentTransactionDetails.products = this.transactionDocument.currentTransactionDetails.products.filter(\r\n ( proj: { refundedQuantity: number; }) => proj.refundedQuantity != 0\r\n );\r\n\r\n this.transactionDocument.currentTransactionDetails.products.forEach((product: { refundedQuantity: any; quantity: any; totalLinePrice: number; refundedTotal: number; total: any; refunded: boolean; linePromotions: any; lineDiscount: any; }) => {\r\n if (product.refundedQuantity) {\r\n product.quantity = product.refundedQuantity;\r\n // updating total line price with actual price to be refunded including the refunding qty\r\n product.totalLinePrice = Math.abs(product.refundedTotal);\r\n product.total = product.totalLinePrice;\r\n if (product.quantity === product.refundedQuantity) {\r\n product.refunded = true;\r\n }\r\n }\r\n //Updating line promotions and line discounts \r\n if (product.linePromotions && !product.refundedQuantity) {\r\n this.transactionDocument.currentTransactionDetails.linePromotion.push(product.linePromotions)\r\n }\r\n if (product.lineDiscount && !product.refundedQuantity) {\r\n this.transactionDocument.currentTransactionDetails.lineDiscount.push(product.lineDiscount)\r\n }\r\n });\r\n\r\n AppLoggerService.logDebug(this.className, \"currentTransactionDetails\", \"current transaction details after removing old products\", this.transactionDocument.currentTransactionDetails.products);\r\n\r\n if (basket.transactionDiscount && basket.transactionDiscount.length > 0) {\r\n this.transactionDocument.currentTransactionDetails.transactionDiscount.push(...basket.transactionDiscount);\r\n }\r\n this.transactionDocument.currentTransactionDetails.basketSummary = {} as BasketSummary;\r\n\r\n this.transactionDocument.currentTransactionDetails.basketSummary.saleTotal = this.numberUtilService.trimTo2Decimal2(this.updateSaleTotal(this.transactionDocument.currentTransactionDetails));\r\n this.transactionDocument.currentTransactionDetails.basketSummary.totalItems = basket.quantity;\r\n\r\n\r\n this.transactionDocument.currentTransactionDetails.basketSummary.basketTotal = basket.basketTotal;\r\n this.transactionDocument.currentTransactionDetails.basketSummary.refundTotal = this.updateCurrentTransactionDetailsRefundTotal();\r\n // For partial refund discount is updatied in total line price so discountTotal will always be zero & in case of exchange discount total is calculated\r\n\r\n if (this.transactionDocument.type === TRANSACTION_TYPE.SALE_EXCHANGE) {\r\n this.transactionDocument.currentTransactionDetails.basketSummary.discountTotal = this.numberUtilService.trimTo2Decimal2(this.updateCurrentTransactionDetailsDiscountTotal());\r\n } else {\r\n if (this.transactionDocument.currentTransactionDetails.transactionDiscount && this.transactionDocument.currentTransactionDetails.transactionDiscount.length > 0) {\r\n let discountTotal = 0;\r\n this.transactionDocument.currentTransactionDetails.transactionDiscount.forEach((discount: { discountAmount: number; }) => {\r\n discountTotal += discount.discountAmount;\r\n });\r\n this.transactionDocument.currentTransactionDetails.basketSummary.discountTotal = Math.abs(discountTotal);\r\n } else {\r\n this.transactionDocument.currentTransactionDetails.basketSummary.discountTotal = 0;\r\n }\r\n }\r\n\r\n AppLoggerService.logInfo(this.className, \"currentTransactionDetails\", \"currentTransactionDetails\", this.transactionDocument.currentTransactionDetails);\r\n return this;\r\n }\r\n\r\n\r\n /**\r\n * current transaction Tax Total\r\n * @returns Tax Total\r\n */\r\n\r\n updateCurrentTransactionDetailsTaxBreakdown(basketDetails: Basket): TransactionDocumentBuilder {\r\n let transactionDiscountTotal = 0;\r\n let taxBreakdown: TaxBreakdown = {\r\n taxLines: [],\r\n totalTaxableAmount: 0,\r\n };\r\n\r\n if (this.transactionDocument.currentTransactionDetails.transactionDiscount && this.transactionDocument.currentTransactionDetails.transactionDiscount.length > 0) {\r\n this.transactionDocument.currentTransactionDetails.transactionDiscount.forEach((discount: { discountAmount: number; }) => {\r\n transactionDiscountTotal += discount.discountAmount;\r\n });\r\n }\r\n\r\n if (this.transactionDocument.currentTransactionDetails.products && this.transactionDocument.currentTransactionDetails.products.length > 0) {\r\n this.transactionDocument.currentTransactionDetails.products.forEach((product: { itemLineId: any; selectedVAT: any; selectedVATCode: any; total: any; refundedQuantity: number; itemDiscounts: { currentRefundPortion: number; trnDiscountsPortion: number; trnPromotionsPortion: number; }; }) => {\r\n let taxLine: TaxLine = {\r\n itemLineId: product.itemLineId,\r\n VAT: product.selectedVAT ? product.selectedVAT : 0,\r\n VATCode: product.selectedVATCode,\r\n taxLineTotal: 0,\r\n taxableAmount: product.total,\r\n PreTax: 0\r\n\r\n };\r\n AppLoggerService.logInfo(this.className, \"updateCurrentTransactionDetailsTaxBreakdown\", `item line ID :current transaction Details\",\r\n ${product.itemLineId}, tax line : ${taxLine}, basketDetails.basketTotal ${basketDetails.basketTotal}`);\r\n\r\n //step 1\r\n // if Transaction Discount and/or promotion applied, find net selling price of each product as taxableamount\r\n\r\n //If transaction discount/promotion is applied taxable amount should be deducting transaction promotion and transaction disacount portion\r\n if (product.refundedQuantity && product.refundedQuantity > 0) {\r\n\r\n taxLine.taxableAmount = -Math.abs(taxLine.taxableAmount - product.itemDiscounts.currentRefundPortion);\r\n } else {\r\n taxLine.taxableAmount = taxLine.taxableAmount - product.itemDiscounts.trnDiscountsPortion - product.itemDiscounts.trnPromotionsPortion;\r\n }\r\n\r\n //step 2 - find pre tax\r\n taxLine.PreTax = this.numberUtilService.trimTo2Decimal2((taxLine.taxableAmount * 100) / (100 + taxLine.VAT));\r\n\r\n //step 3 - Update taxbreakdown\r\n taxBreakdown.totalTaxableAmount += taxLine.taxableAmount;\r\n taxLine.taxableAmount = this.numberUtilService.trimTo2Decimal2(taxLine.taxableAmount);\r\n \r\n // step 4 - update tax Line total\r\n taxLine.taxLineTotal = this.numberUtilService.trimTo2Decimal2(taxLine.taxableAmount - taxLine.PreTax);\r\n taxBreakdown.taxLines.push(taxLine);\r\n });\r\n }\r\n\r\n taxBreakdown.totalTaxableAmount = this.numberUtilService.trimTo2Decimal2(taxBreakdown.totalTaxableAmount);\r\n this.transactionDocument.currentTransactionDetails.taxBreakdown = taxBreakdown;\r\n if (this.transactionDocument.currentTransactionDetails.taxBreakdown && this.transactionDocument.currentTransactionDetails.taxBreakdown.taxLines && this.transactionDocument.currentTransactionDetails.taxBreakdown.taxLines.length > 0) {\r\n this.transactionDocument.currentTransactionDetails.basketSummary.VATTotal = this.numberUtilService.trimTo2Decimal2(this.transactionDocument.currentTransactionDetails.taxBreakdown.taxLines.reduce(\r\n (n: any, { taxLineTotal }: any) => n + taxLineTotal,\r\n 0\r\n ));\r\n }\r\n else {\r\n this.transactionDocument.currentTransactionDetails.basketSummary.VATTotal = 0.00;\r\n }\r\n\r\n AppLoggerService.logDebug(this.className, \"updateCurrentTransactionDetailsTaxBreakdown\", \"eBasket:after calculating tax currenttransactionDetails\", this.transactionDocument.currentTransactionDetails)\r\n return this;\r\n }\r\n\r\n updateCurrentTransactionDetailsTotalTaxSummary(): TransactionDocumentBuilder {\r\n \r\n AppLoggerService.logDebug(this.className, \"updateCurrentTransactionDetailsTotalTaxSummary\", \"Total Tax Summery Request :\", this.transactionDocument.currentTransactionDetails.taxBreakdown);\r\n\r\n let totalTaxSummaryArray: TotalTaxSummary[] = []\r\n let totalTaxSummaryGroup = []\r\n\r\n\r\n this.transactionDocument.currentTransactionDetails.taxBreakdown.taxLines.forEach((element: { VATCode: any; VAT: any; PreTax: any; taxLineTotal: any; }) => {\r\n let TaxSummary: TotalTaxSummary = {\r\n VATCode:\"\",\r\n VAT: -12345,\r\n PreTaxSum: 0,\r\n TaxSum: 0,\r\n TXrateSum: 0\r\n };\r\n TaxSummary.VATCode=element.VATCode;\r\n TaxSummary.VAT = element.VAT; \r\n \r\n TaxSummary.PreTaxSum = this.numberUtilService.trimTo2Decimal2(element.PreTax); \r\n TaxSummary.TaxSum = this.numberUtilService.trimTo2Decimal2(element.taxLineTotal);\r\n TaxSummary.TXrateSum = this.numberUtilService.trimTo2Decimal2(TaxSummary.PreTaxSum + TaxSummary.TaxSum); \r\n totalTaxSummaryArray.push(TaxSummary);\r\n })\r\n\r\n AppLoggerService.logDebug(this.className, \"updateCurrentTransactionDetailsTotalTaxSummary\", \"Total Tax Summery Without Grouped : \", totalTaxSummaryArray);\r\n \r\n totalTaxSummaryGroup = totalTaxSummaryArray.reduce((preparedArray:any,currentObj:any) => {\r\n let ind = preparedArray.findIndex((x: { VAT: any; }) => x.VAT === currentObj.VAT);\r\n if(ind === -1){\r\n preparedArray.push(currentObj)\r\n }else {\r\n preparedArray[ind].VATCode = currentObj.VATCode;\r\n preparedArray[ind].VAT = currentObj.VAT;\r\n preparedArray[ind].PreTaxSum += currentObj.PreTaxSum;\r\n preparedArray[ind].TaxSum += currentObj.TaxSum;\r\n preparedArray[ind].TXrateSum += currentObj.TXrateSum;\r\n }\r\n return preparedArray;\r\n },[])\r\n // listOfTags.map(x => unique.filter(a => a.label == x.label && a.color == x.color).length > 0 ? null : unique.push(x));\r\n\r\n AppLoggerService.logDebug(this.className, \"updateCurrentTransactionDetailsTotalTaxSummary\", \"Total Tax Summer Group :\", totalTaxSummaryGroup);\r\n\r\n this.transactionDocument.currentTransactionDetails.totalTaxSummary = totalTaxSummaryGroup;\r\n return this;\r\n\r\n }\r\n\r\n /**\r\n * current transaction Disocunt Total\r\n * @returns Discount Total\r\n */\r\n updateCurrentTransactionDetailsDiscountTotal() {\r\n let refundTotal = this.transactionDocument.currentTransactionDetails.basketSummary.refundTotal ? this.transactionDocument.currentTransactionDetails.basketSummary.refundTotal : 0;\r\n\r\n AppLoggerService.logDebug(this.className, \"updateCurrentTransactionDetailsDiscountTotal\", `refundTotal ${refundTotal}, basketTotal ${this.transactionDocument.currentTransactionDetails.basketSummary.basketTotal},saleTotal ${this.transactionDocument.currentTransactionDetails.basketSummary.saleTotal}`);\r\n const discountTotal =\r\n Math.abs(\r\n Math.abs(this.transactionDocument.currentTransactionDetails.basketSummary.saleTotal) -\r\n (Math.abs(this.transactionDocument.currentTransactionDetails.basketSummary.basketTotal) + Math.abs(refundTotal))\r\n );\r\n AppLoggerService.logDebug(this.className, \"updateCurrentTransactionDetailsDiscountTotal\", \"discountTotal\", discountTotal)\r\n return Number(discountTotal.toFixed(2));\r\n }\r\n\r\n /**\r\n * current transaction Refund Total\r\n * @returns Refund Total\r\n */\r\n updateCurrentTransactionDetailsRefundTotal() {\r\n let totalRefund = 0;\r\n for (let index = 0; index < this.transactionDocument.currentTransactionDetails.products.length; index++) {\r\n const product: Product = this.transactionDocument.currentTransactionDetails.products[index];\r\n if (product.refundedTotal) {\r\n totalRefund = totalRefund + product.refundedTotal;\r\n }\r\n AppLoggerService.logDebug(this.className, \"updateCurrentTransactionDetailsRefundTotal\", \"totalRefund for Current TransactionDetails\" , totalRefund)\r\n }\r\n return totalRefund;\r\n }\r\n\r\n\r\n\r\n /**\r\n * Baskets summary\r\n * @param basketDetails\r\n * @returns summary\r\n */\r\n basketSummary(basketDetails: Basket): TransactionDocumentBuilder {\r\n this.transactionDocument.basketSummary.basketTotal = this.numberUtilService.trimTo2Decimal(basketDetails.basketTotal);\r\n\r\n this.transactionDocument.basketSummary.saleTotal = this.numberUtilService.trimTo2Decimal2(this.updateSaleTotal(\r\n basketDetails\r\n ));\r\n this.transactionDocument.basketSummary.refundTotal = this.getRefundTotal();\r\n if (\r\n this.transactionDocument.basket.lineDiscount ||\r\n this.transactionDocument.basket.linePromotion\r\n ) {\r\n this.transactionDocument.basketSummary.discountTotal = this.numberUtilService.trimTo2Decimal2(this.updateDiscountTotal());\r\n }\r\n this.transactionDocument.basketSummary.totalItems = basketDetails.quantity;\r\n\r\n\r\n if (this.transactionDocument.basket.taxBreakdown) {\r\n this.transactionDocument.basketSummary.VATTotal = this.numberUtilService.trimTo2Decimal2(this.transactionDocument.basket.taxBreakdown.taxLines.reduce(\r\n (n: any, { taxLineTotal }: any) => n + taxLineTotal,\r\n 0\r\n ));\r\n }\r\n else {\r\n this.transactionDocument.basketSummary.VATTotal = 0.00;\r\n }\r\n\r\n AppLoggerService.logInfo(this.className, \"basketSummary\", \"basketsummary updated in transaction document: \", this.transactionDocument.basketSummary);\r\n return this;\r\n }\r\n\r\n /**\r\n * Line Discount\r\n * @param basketDetails\r\n * @returns line Discount\r\n */\r\n lineDiscount(basketDetails: Basket): TransactionDocumentBuilder {\r\n this.transactionDocument.basket.lineDiscount = [];\r\n for (let index = 0; index < basketDetails.products.length; index++) {\r\n const element = basketDetails.products[index];\r\n if (element.lineDiscount) {\r\n this.transactionDocument.basket.lineDiscount.push(element.lineDiscount);\r\n this.transactionDocument.basket.lineDiscount = this.transactionDocument.basket.lineDiscount.reduce(\r\n (acc: any[], val: { itemLineId: any; }) => {\r\n if (!acc.find((el: { itemLineId: any; }) => el.itemLineId === val.itemLineId)) {\r\n acc.push(val);\r\n }\r\n return acc;\r\n },\r\n []\r\n );\r\n }\r\n\r\n // AppLoggerService.logInfo(this.className, \r\n // \"e-basket :line discount updated in transaction document\",\r\n // this.transactionDocument.basket.lineDiscount\r\n // );\r\n }\r\n return this;\r\n }\r\n\r\n /**\r\n * exchange\r\n * @param basketDetails\r\n * @returns exchange \r\n */\r\n exchange(basketDetails: Basket): TransactionDocumentBuilder {\r\n this.transactionDocument.basket.exchange = basketDetails.exchange && basketDetails.exchange.length > 0 ? [...basketDetails.exchange] : [];\r\n for (let index = 0; index < basketDetails.products.length; index++) {\r\n\r\n const element: any = basketDetails.products[index];\r\n if (element.exchange != undefined) {\r\n const isPresent = this.transactionDocument.basket.exchange.some((el: { exchangeId: any; }) => el.exchangeId === element.exchange.exchangeId);\r\n if (!isPresent) {\r\n let exchangeItems = [];\r\n for (let j = 0; j < element.exchange.newItems.length; j++) {\r\n const item = element.exchange.newItems[j];\r\n let newItems: any = { lineItemId: item.itemLineId, Quantity: item.quantity }\r\n exchangeItems.push(newItems);\r\n }\r\n element.exchange.newItems = [...exchangeItems];\r\n this.transactionDocument.basket.exchange.push(element.exchange);\r\n }\r\n }\r\n AppLoggerService.logDebug(this.className, \"exchange\",\r\n \"this.transactionDocument.basket exchange\",\r\n this.transactionDocument.basket.exchange\r\n );\r\n }\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * add previous exchange data\r\n * @param originalTransactionDocument\r\n * @returns line Promotions\r\n */\r\n addExchangeData(originalTransactionDocument: TransactionDocument): TransactionDocumentBuilder {\r\n this.transactionDocument.basket.exchange = originalTransactionDocument.basket.exchange ? [...originalTransactionDocument.basket.exchange] : null;\r\n return this;\r\n }\r\n\r\n /**\r\n * line Promotions\r\n * @param basketDetails\r\n * @returns line Promotions\r\n */\r\n linePromotion(basketDetails: Basket): TransactionDocumentBuilder {\r\n this.transactionDocument.basket.linePromotion = [];\r\n for (let index = 0; index < basketDetails.products.length; index++) {\r\n const element = basketDetails.products[index];\r\n if (element.linePromotions) {\r\n this.transactionDocument.basket.linePromotion.push(\r\n element.linePromotions\r\n );\r\n this.transactionDocument.basket.linePromotion = this.transactionDocument.basket.linePromotion.reduce(\r\n (acc: any[], val: { itemLineId: any; }) => {\r\n if (!acc.find((el: { itemLineId: any; }) => el.itemLineId === val.itemLineId)) {\r\n acc.push(val);\r\n }\r\n return acc;\r\n },\r\n []\r\n );\r\n }\r\n }\r\n return this;\r\n }\r\n\r\n /**\r\n * transaction Promotion\r\n * @param basketDetails\r\n * @returns transaction Promotion\r\n */\r\n transactionPromotion(basketDetails: Basket): TransactionDocumentBuilder {\r\n if (basketDetails.transactionPromotion) {\r\n this.transactionDocument.basket.transactionPromotion =\r\n basketDetails.transactionPromotion;\r\n // for (let index = 0; index < basketDetails.TransactionDiscount.length; index++) {\r\n // this.transactionDocument.basket.transactionPromotion.push(element.linePromotions)\r\n // this.transactionDocument.basket.transactionPromotion = this.transactionDocument.basket.linePromotions.reduce((acc, val) => {\r\n // if (!acc.find(el => el.itemLineId === val.itemLineId)) {\r\n // acc.push(val);\r\n // }\r\n // return acc;\r\n // }, []);\r\n // }\r\n AppLoggerService.logDebug(this.className, \"transactionPromotion\",\r\n \"this.transactionDocument.basket.transactionPromotion\",\r\n this.transactionDocument.basket.transactionPromotion\r\n );\r\n }\r\n return this;\r\n }\r\n\r\n transactionDiscount(basketDetails: Basket): TransactionDocumentBuilder {\r\n if (basketDetails.transactionDiscount) {\r\n this.transactionDocument.basket.transactionDiscount =\r\n basketDetails.transactionDiscount;\r\n\r\n AppLoggerService.logDebug(this.className, \"transactionDiscount\",\r\n \"transaction Discount\",\r\n this.transactionDocument.basket.transactionDiscount\r\n );\r\n }\r\n return this;\r\n }\r\n\r\n /**\r\n * Payments details\r\n * @param paymentDetails\r\n * @returns\r\n */\r\n paymentDetails(paymentDetails: any) {\r\n AppLoggerService.logInfo(this.className, \"paymentDetails\", \"payment details after transaction completed\",paymentDetails);\r\n \r\n this.transactionDocument.paymentDetails = paymentDetails;\r\n return this;\r\n }\r\n\r\n\r\n /**\r\n * Payments details\r\n * @param paymentDetails\r\n * @returns\r\n */\r\n splitPayment(splitPayment: boolean) { \r\n this.transactionDocument.splitPayment = splitPayment;\r\n return this;\r\n } \r\n\r\n /**\r\n * Payments details\r\n * @param paymentDetails\r\n * @returns\r\n */\r\n isPaymentCompleted(isPaymentCompleted: boolean) {\r\n this.transactionDocument.isPaymentCompleted = isPaymentCompleted;\r\n return this;\r\n } \r\n \r\n\r\n\r\n\r\n /**\r\n * Bases currency\r\n * @param currency\r\n * @returns currency\r\n */\r\n baseCurrency(currency: any): TransactionDocumentBuilder {\r\n this.transactionDocument.baseCurrency = currency;\r\n return this;\r\n }\r\n\r\n /**\r\n * gift option at\r\n * @returns at\r\n */\r\n giftOption(gift: any): TransactionDocumentBuilder {\r\n AppLoggerService.logDebug(this.className, \"giftOption\",\r\n \"this.transactionDocument.giftoption\",\r\n gift\r\n );\r\n if (gift) {\r\n this.transactionDocument.giftedReceipt = gift;\r\n }\r\n return this;\r\n }\r\n /**\r\n\r\n/**\r\n * manual Discount\r\n * @param discountData\r\n * @returns\r\n */\r\n\r\n // manualDiscount(discountData : basketDiscount):TransactionDocumentBuilder {\r\n // let saleTotal = this.transactionDocument.basketSummary.basketTotal;\r\n // if(discountData.discountType =='Percent'){\r\n // this.transactionDocument.basketSummary.basketTotal = saleTotal-(saleTotal*(discountData.discountAmount/100));\r\n // discountData.discountAmount = -1*(saleTotal-this.transactionDocument.basketSummary.basketTotal);\r\n // }else {\r\n // this.transactionDocument.basketSummary.basketTotal =saleTotal-discountData.discountAmount;\r\n // discountData.discountAmount = -1*discountData.discountAmount;\r\n // }\r\n // this.transactionDocument.transactionDiscount.push(discountData);\r\n // return this;\r\n\r\n // }\r\n\r\n /**\r\n * Types transaction document builder\r\n * @param t\r\n * @returns type\r\n */\r\n type(t: any): TransactionDocumentBuilder {\r\n this.transactionDocument.type = t;\r\n return this;\r\n }\r\n /**\r\n * Operations status\r\n * @param o\r\n * @returns status\r\n */\r\n operationStatus(o: any): TransactionDocumentBuilder {\r\n this.transactionDocument.operationStatus = o;\r\n return this;\r\n }\r\n /**\r\n * Created at\r\n * @returns at\r\n */\r\n createdAt(): TransactionDocumentBuilder {\r\n const date = new Date();\r\n this.transactionDocument.createdAt = date.toISOString();\r\n this.transactionDocument.updatedAt = date.toISOString();\r\n return this;\r\n }\r\n /**\r\n * Updated at\r\n * @returns at\r\n */\r\n updatedAt(): TransactionDocumentBuilder {\r\n const date = new Date();\r\n this.transactionDocument.updatedAt = date.toISOString();\r\n return this;\r\n }\r\n /**\r\n * transsaction completion at\r\n * @returns transaction completion date\r\n */\r\n transactionCompletedAt(): TransactionDocumentBuilder {\r\n const date = new Date();\r\n this.transactionDocument.transCompletedAt = date.toISOString();\r\n return this;\r\n }\r\n /**\r\n * Builds transaction document builder\r\n * @returns build\r\n */\r\n build(): TransactionDocument {\r\n return this.transactionDocument;\r\n }\r\n\r\n /**\r\n * Sales total in refund\r\n * @param saleTotal\r\n * @returns total in refund\r\n */\r\n saleTotalInRefund(saleTotal: number): TransactionDocumentBuilder {\r\n this.transactionDocument.saleTotal = saleTotal;\r\n return this;\r\n }\r\n\r\n /**\r\n * Gets basket details\r\n * @returns basket details\r\n */\r\n getBasketDetails(): Basket {\r\n AppLoggerService.logInfo(this.className, \"getBasketDetails\", \"Getting Basket for transactionDocument\", this.transactionDocument);\r\n\r\n let basket: Basket = {\r\n subsidiaryId : this.transactionDocument.subsidiaryId,\r\n transactionDiscount: this.transactionDocument.basket.transactionDiscount,\r\n transactionPromotion: this.transactionDocument.basket.transactionPromotion,\r\n transactionId: this.transactionDocument.transactionId,\r\n offlineTransactionId: this.transactionDocument.offlineTransactionId,\r\n total: this.transactionDocument.basketSummary.basketTotal,\r\n basketTotal: this.transactionDocument.basketSummary.basketTotal,\r\n discountTotal: this.transactionDocument.basketSummary.discountTotal,\r\n saleTotal: this.transactionDocument.basketSummary.saleTotal,\r\n refundTotal: this.transactionDocument.basketSummary.refundTotal,\r\n quantity: this.transactionDocument.basketSummary.totalItems,\r\n products: [],\r\n baseCurrency: this.transactionDocument.baseCurrency,\r\n customer: this.transactionDocument.customer,\r\n };\r\n\r\n basket.products = [] as Product[];\r\n this.transactionDocument.basket.products.forEach((product: { SKU: any; barCode: any; barcodes: any; description: any; imageUrls: any; totalLinePrice: any; itemLineId: any; excludePromotion: any; price: any; quantity: any; selectedRRPPrice: any; fullfilmentId: any; fullfilmentLocationName: any; deliveryGroup: string; leadTime: any; deliveryMethod: any; giftCard: any; giftCardExpiryDate: any; giftCardNumberIssued: any; giftCardRecipientEmail: any; giftCardRecipientName: any; refundedTotal: any; refundedQuantity: number; refundedReasonDescription: any; refundedReason: any; refundedPromotionalQuantity: any; isLastExchanged: any; }, index: any) => {\r\n AppLoggerService.logDebug(this.className, JSON.stringify(product), \"ebasket: basket detail update in basket\");\r\n const p = {} as any;\r\n p.SKU = product.SKU;\r\n p.barcode = product.barCode;\r\n p.barcodes = product.barcodes;\r\n\r\n p.description = product.description;\r\n p.imageUrls = product.imageUrls;\r\n p.currency = this.transactionDocument.baseCurrency;\r\n p.totalLinePrice = product.totalLinePrice;\r\n p.itemLineId = Number(product.itemLineId);\r\n p.excludePromotion = product.excludePromotion;\r\n\r\n p.selectedPrice = product.price;\r\n p.quantity = product.quantity;\r\n p.total = product.totalLinePrice;\r\n p.selectedRRPPrice = product.selectedRRPPrice;\r\n\r\n p.fullfilmentId = product.fullfilmentId;\r\n p.fullfilmentLocationName = product.fullfilmentLocationName;\r\n p.deliveryGroup = product.deliveryGroup || \"1\";\r\n p.leadTime = product.leadTime;\r\n p.deliveryMethod = product.deliveryMethod || DELIVERY_METHODS.COLLECT_FROM_STORE.toString();\r\n\r\n if(p.fullfilmentId != this.transactionDocument.storeId)\r\n {\r\n p.isWebOrder = true;\r\n }\r\n \r\n p.giftCard = product.giftCard;\r\n p.giftCardExpiryDate = product.giftCardExpiryDate;\r\n p.giftCardNumberIssued = product.giftCardNumberIssued;\r\n p.giftCardRecipientEmail = product.giftCardRecipientEmail;\r\n p.giftCardRecipientName = product.giftCardRecipientName;\r\n \r\n if (\r\n this.transactionDocument.basket.lineDiscount &&\r\n this.transactionDocument.basket.lineDiscount.length > 0\r\n ) {\r\n this.transactionDocument.basket.lineDiscount.forEach((lineDiscount: { itemLineId: { toString: () => any; }; discountedLinePrice: any; }) => {\r\n if (product.itemLineId === lineDiscount.itemLineId.toString()) {\r\n p.lineDiscount = lineDiscount;\r\n p.total = lineDiscount.discountedLinePrice;\r\n }\r\n });\r\n }\r\n\r\n if (\r\n this.transactionDocument.basket.linePromotion &&\r\n this.transactionDocument.basket.linePromotion.length > 0\r\n ) {\r\n this.transactionDocument.basket.linePromotion.forEach((linePromotion: { itemLineId: { toString: () => any; }; promotionLinePrice: any; }) => {\r\n if (product.itemLineId === linePromotion.itemLineId.toString()) {\r\n p.linePromotions = linePromotion;\r\n p.total = linePromotion.promotionLinePrice;\r\n }\r\n });\r\n }\r\n\r\n if (\r\n this.transactionDocument.basket.taxBreakdown &&\r\n this.transactionDocument.basket.taxBreakdown.taxLines.length > 0\r\n ) {\r\n this.transactionDocument.basket.taxBreakdown.taxLines.forEach((taxLine: { itemLineId: { toString: () => any; }; VAT: any; VATCode: any; }) => {\r\n if (product.itemLineId && product.itemLineId === taxLine.itemLineId.toString()) {\r\n p.selectedVAT = taxLine.VAT;\r\n p.selectedVATCode = taxLine.VATCode;\r\n }\r\n });\r\n }\r\n\r\n if (this.transactionDocument.type === TRANSACTION_TYPE.REFUND) {\r\n p.total = product.refundedTotal;\r\n } else if ((this.transactionDocument.type === TRANSACTION_TYPE.SALE_REFUND || TRANSACTION_TYPE.SALE_EXCHANGE) && product.refundedQuantity > 0) {\r\n p.refundedReasonDescription = product.refundedReasonDescription;\r\n p.refundedReason = product.refundedReason;\r\n if (!p.refundedReasonDescription) {\r\n p.refundedReasonDescription = p.refundedReason;\r\n }\r\n p.refundedQuantity = product.refundedQuantity;\r\n p.refundPromotionalQuantity = product.refundedPromotionalQuantity;\r\n p.refundedTotal = product.refundedTotal;\r\n p.total -= Math.abs(p.refundedTotal);\r\n p.isLastExchanged = product.isLastExchanged;\r\n }\r\n\r\n if (this.transactionDocument.type === TRANSACTION_TYPE.REFUND) {\r\n if (p.total > 0) {\r\n p.total *= -1;\r\n }\r\n }\r\n\r\n basket.products.push(p);\r\n\r\n });\r\n\r\n basket = this.getTransactionDiscountAndTransactionPromotionPortion(basket);\r\n basket.total = (basket.basketTotal || 0) + this.getTotalDiscountWithTransactionDiscountsAndPromotions(basket);\r\n if (this.transactionDocument.type === TRANSACTION_TYPE.SALE_REFUND) {\r\n basket.quantity = this.getRefundedTotalWithQuantity(basket);\r\n }\r\n AppLoggerService.logInfo(this.className, \"getBasketDetails\", \"Basket created successfully\", basket)\r\n return basket;\r\n }\r\n\r\n /**\r\n * Gets basket details\r\n * @returns refund basket details\r\n */\r\n // getRefundBasketDetails(): Basket {\r\n // let basket: Basket = {\r\n // subsidiaryId : this.transactionDocument.subsidiaryId,\r\n // transactionDiscount: this.transactionDocument.basket.transactionDiscount,\r\n // transactionPromotion: this.transactionDocument.basket.transactionPromotion,\r\n // transactionId: this.transactionDocument.transactionId,\r\n // total: this.transactionDocument.basketSummary.basketTotal,\r\n // basketTotal: this.transactionDocument.basketSummary.basketTotal,\r\n // discountTotal: this.transactionDocument.basketSummary.discountTotal,\r\n // saleTotal: this.transactionDocument.basketSummary.saleTotal,\r\n // quantity: this.transactionDocument.basketSummary.totalItems,\r\n // products: [],\r\n // baseCurrency: this.transactionDocument.baseCurrency,\r\n // customer: this.transactionDocument.customer,\r\n // };\r\n\r\n // basket.products = [] as Product[];\r\n // this.transactionDocument.basket.products.forEach((product: { SKU: any; barCode: any; barcodes: any; description: any; imageUrls: any; totalLinePrice: any; itemLineId: any; excludePromotion: any; price: number; quantity: any; selectedRRPPrice: any; fullfilmentId: any; fullfilmentLocationName: any; deliveryGroup: string; leadTime: any; deliveryMethod: any; giftCard: any; giftCardExpiryDate: any; giftCardNumberIssued: any; giftCardRecipientEmail: any; giftCardRecipientName: any; itemDiscounts: any; refundedPromotionalQuantity: any; refundedQuantity: number; refunded: any; isLastExchanged: any; exchange: any; refundedTotal: number; }, index: any) => {\r\n // const p = {} as Product;\r\n // p.SKU = product.SKU;\r\n // p.barcode = product.barCode;\r\n // p.barcodes = product.barcodes;\r\n\r\n // p.description = product.description;\r\n // p.imageUrls = product.imageUrls;\r\n // p.currency = this.transactionDocument.baseCurrency;\r\n // p.totalLinePrice = product.totalLinePrice;\r\n // p.itemLineId = Number(product.itemLineId);\r\n // p.excludePromotion = product.excludePromotion;\r\n\r\n // p.selectedPrice = product.price;\r\n // p.quantity = product.quantity;\r\n // p.total = product.totalLinePrice;\r\n // p.selectedRRPPrice = product.selectedRRPPrice;\r\n\r\n // p.fullfilmentId = product.fullfilmentId;\r\n // p.fullfilmentLocationName = product.fullfilmentLocationName;\r\n // p.deliveryGroup = product.deliveryGroup || \"1\";\r\n // p.leadTime = product.leadTime;\r\n // p.deliveryMethod = product.deliveryMethod || DELIVERY_METHODS.COLLECT_FROM_STORE.toString();\r\n\r\n // p.giftCard = product.giftCard;\r\n // p.giftCardExpiryDate = product.giftCardExpiryDate;\r\n // p.giftCardNumberIssued = product.giftCardNumberIssued;\r\n // p.giftCardRecipientEmail = product.giftCardRecipientEmail;\r\n // p.giftCardRecipientName = product.giftCardRecipientName;\r\n \r\n \r\n // if(p.fullfilmentId != this.transactionDocument.storeId)\r\n // {\r\n // p.isWebOrder = true;\r\n // }\r\n \r\n // if (product.itemDiscounts) {\r\n // p.itemDiscounts = product.itemDiscounts as ItemDiscount;\r\n // }\r\n\r\n // // if(!p.itemDiscounts){\r\n // // AppLoggerService.logDebug(this.className, p.itemDiscounts);\r\n\r\n // // this.basketService.transactionDiscountAndPromotionProductortionCalculation(basket);\r\n // // }\r\n // p.refundPromotionalQuantity = product.refundedPromotionalQuantity ? product.refundedPromotionalQuantity : 0;\r\n\r\n // if (product.refundedQuantity) {\r\n // p.quantity = p.quantity - product.refundedQuantity;\r\n // p.totalLinePrice = (p.quantity * product.price);\r\n // p.total = p.totalLinePrice;\r\n // // p.refundPromotionalQuantity = product.refundedPromotionalQuantity;\r\n // p.refunded = product.refunded;\r\n // p.isLastExchanged = product.isLastExchanged;\r\n // }\r\n // if (product.exchange) {\r\n // p.exchange = product.exchange;\r\n // }\r\n\r\n // if (\r\n // this.transactionDocument.basket.lineDiscount &&\r\n // this.transactionDocument.basket.lineDiscount.length > 0\r\n // ) {\r\n\r\n // this.transactionDocument.basket.lineDiscount.forEach((lineDiscount: { itemLineId: { toString: () => any; }; discountedLinePrice: any; }) => {\r\n\r\n // if (product.itemLineId === lineDiscount.itemLineId.toString() && product.refundedQuantity > 0) {\r\n // p.lineDiscount = Object.assign({}, lineDiscount);\r\n // p.lineDiscount.discountedLinePrice = p.lineDiscount.unitPrice * p.quantity\r\n // p.lineDiscount.discountAmount = p.total - p.lineDiscount.discountedLinePrice\r\n // p.total = p.lineDiscount.discountedLinePrice;\r\n // } else if (product.itemLineId === lineDiscount.itemLineId.toString()) {\r\n // p.lineDiscount = lineDiscount;\r\n // p.total = lineDiscount.discountedLinePrice\r\n // }\r\n // });\r\n // }\r\n\r\n // if (\r\n // this.transactionDocument.basket.linePromotion &&\r\n // this.transactionDocument.basket.linePromotion.length > 0\r\n // ) {\r\n // this.transactionDocument.basket.linePromotion.forEach((linePromotion: { itemLineId: { toString: () => any; }; refunded: any; }) => {\r\n // if (product.itemLineId === linePromotion.itemLineId.toString() && !linePromotion.refunded) {\r\n // p.linePromotions = linePromotion;\r\n // p.total = p.linePromotions.promotionLinePrice;\r\n // p.total = p.total - (product.refundedTotal ? Math.abs(product.refundedTotal) : 0);\r\n // }\r\n // });\r\n // }\r\n\r\n // p.refundedQuantity = 0;\r\n // p.refundedTotal = 0;\r\n\r\n // if (\r\n // this.transactionDocument.basket.taxBreakdown &&\r\n // this.transactionDocument.basket.taxBreakdown.taxLines.length > 0\r\n // ) {\r\n // this.transactionDocument.basket.taxBreakdown.taxLines.forEach((taxLine: { itemLineId: { toString: () => any; }; VAT: any; VATCode: any; }) => {\r\n // if (product.itemLineId === taxLine.itemLineId.toString()) {\r\n // p.selectedVAT = taxLine.VAT;\r\n // p.selectedVATCode = taxLine.VATCode;\r\n // }\r\n // });\r\n // }\r\n\r\n // if (p.quantity > 0) {\r\n // basket.products.push(p);\r\n // }\r\n // });\r\n // // product.itemDiscounts\r\n // if (!basket.products[0].hasOwnProperty('itemDiscounts')) {\r\n // basket = this.getTransactionDiscountAndTransactionPromotionPortion(basket);\r\n\r\n // }\r\n\r\n // AppLoggerService.logDebug(this.className, \"ebasket : TransactionDocumentBuilder :new created refunded basket\", JSON.stringify(basket))\r\n // basket.quantity = basket.products.reduce(\r\n // (n: any, { quantity }: any) => n + quantity,\r\n // 0\r\n // );\r\n // basket.total = this.getTotalWithLineDiscountAndLinePromotionApplied(basket);\r\n // basket.basketTotal = basket.total;\r\n // basket.basketTotal = basket.basketTotal - this.getTotalDiscountWithTransactionDiscountsAndPromotions(basket);\r\n // AppLoggerService.logDebug(this.className, \r\n // \"ebasket : TransactionDocumentBuilder : update Basket Total: after promotion :basketTotal\",\r\n // basket.basketTotal\r\n // );\r\n\r\n // AppLoggerService.logDebug(this.className, \r\n // \"e:basket :TransactionDocumentBuilder : basketDetails updated values\",\r\n // JSON.stringify(basket)\r\n // );\r\n // return basket;\r\n // }\r\n\r\n\r\n getTransactionDiscountAndTransactionPromotionPortion(basket:any) {\r\n if (\r\n basket.transactionDiscount &&\r\n basket.transactionDiscount.length > 0\r\n ) {\r\n basket.transactionDiscount.forEach((discount: { itemLineIds: any; }) => {\r\n if (!discount.itemLineIds) {\r\n discount.itemLineIds = basket.products.map((product: { itemLineId: any; }) => {\r\n return product.itemLineId\r\n });\r\n }\r\n basket = this.basketService.transactionDiscountProductPortionCalc(basket, discount);\r\n });\r\n }\r\n if (\r\n basket.transactionPromotion &&\r\n basket.transactionPromotion.length > 0\r\n ) {\r\n basket.transactionPromotion.forEach((tPromotion: { itemLineIds: any; }) => {\r\n if (!tPromotion.itemLineIds) {\r\n const filteredData = basket.products.filter(\r\n (item: { excludePromotion: boolean; }) => {\r\n return item.excludePromotion === false;\r\n });\r\n\r\n tPromotion.itemLineIds =\r\n filteredData.map((product: { itemLineId: any; }) => {\r\n return product.itemLineId\r\n });\r\n }\r\n basket = this.basketService.transactionPromotionProductPortionCalc(basket, tPromotion);\r\n });\r\n }\r\n\r\n return basket;\r\n }\r\n\r\n\r\n getTotalDiscountWithTransactionDiscountsAndPromotions(basketDetails: any) {\r\n\r\n let discountTotal = 0;\r\n if (\r\n basketDetails.transactionPromotion &&\r\n basketDetails.transactionPromotion.length > 0\r\n ) {\r\n discountTotal += basketDetails.transactionPromotion.reduce(\r\n (n: any, { promotionAmount }: any) => n + promotionAmount,\r\n 0\r\n );\r\n }\r\n if (\r\n basketDetails.transactionDiscount &&\r\n basketDetails.transactionDiscount.length > 0\r\n ) {\r\n\r\n discountTotal += basketDetails.transactionDiscount.reduce(\r\n (n: any, { discountAmount }: any) => n + discountAmount,\r\n 0\r\n );\r\n\r\n\r\n }\r\n AppLoggerService.logDebug(this.className, \"getTotalDiscountWithTransactionDiscountsAndPromotions\", \"Transaction discount Total:\", discountTotal);\r\n\r\n return discountTotal;\r\n }\r\n\r\n\r\n appendCurrencySymbol(currency: number, value: number) {\r\n // value=this.decimalpipe.transform(value,'1.2');\r\n if (value >= 0) {\r\n const returnval = currency + value;\r\n AppLoggerService.logDebug(this.className, \"appendCurrencySymbol\", \"add currency with value\", returnval);\r\n return returnval;\r\n } else {\r\n const returnval = \"-\" + (currency + value * -1);\r\n AppLoggerService.logDebug(this.className, \"appendCurrencySymbol\", \"returnVal\", returnval);\r\n return returnval;\r\n }\r\n }\r\n\r\n // /**\r\n // * Updates total refund\r\n // * @returns total refund\r\n // */\r\n // updateTotalRefund(): TransactionDocumentBuilder {\r\n // this.transactionDocument.basket.products.forEach((product) => {\r\n // product.refundedQuantity = product.quantity;\r\n // product.refundedTotal = product.totalLinePrice * -1;\r\n // AppLoggerService.logDebug(this.className, \r\n // \"ebasket: Transaction price override :\",\r\n // this.transactionDocument.basket.lineDiscount\r\n // );\r\n\r\n // if (\r\n // this.transactionDocument.basket.linePromotion &&\r\n // this.transactionDocument.basket.linePromotion.length > 0\r\n // ) {\r\n // this.transactionDocument.basket.linePromotion.forEach((linePromotion) => {\r\n // AppLoggerService.logDebug(this.className, \r\n // \"Promotion: basket linePromotion : \",\r\n // this.transactionDocument.basket.linePromotion\r\n // );\r\n // AppLoggerService.logDebug(this.className, \r\n // \"linePromotion.itemLineId.toString() : \",\r\n // linePromotion.itemLineId.toString()\r\n // );\r\n // AppLoggerService.logDebug(this.className, \r\n // \"condition : \" +\r\n // (product.itemLineId === linePromotion.itemLineId.toString())\r\n // );\r\n\r\n // if (product.itemLineId === linePromotion.itemLineId.toString()) {\r\n // product.refundedTotal =\r\n // linePromotion.promotionLinePrice * -1;\r\n // }\r\n // });\r\n // } else\r\n // if (\r\n // this.transactionDocument.basket.lineDiscount &&\r\n // this.transactionDocument.basket.lineDiscount.length > 0\r\n // ) {\r\n // this.transactionDocument.basket.lineDiscount.forEach((lineDiscount) => {\r\n // AppLoggerService.logDebug(this.className, \r\n // \"product.itemLineId : \" +\r\n // this.transactionDocument.basket.lineDiscount\r\n // );\r\n // AppLoggerService.logDebug(this.className, \r\n // \"lineDiscount.itemLineId.toString() : \" +\r\n // lineDiscount.itemLineId.toString()\r\n // );\r\n // AppLoggerService.logDebug(this.className, \r\n // \"condition : \" +\r\n // (product.itemLineId === lineDiscount.itemLineId.toString())\r\n // );\r\n\r\n // if (product.itemLineId === lineDiscount.itemLineId.toString()) {\r\n // product.refundedTotal = lineDiscount.unitPrice * product.refundedQuantity * -1;\r\n // }\r\n // });\r\n // }\r\n\r\n // AppLoggerService.logDebug(this.className, \"Product description :\" + product.description);\r\n // AppLoggerService.logDebug(this.className, \"Product total :\" + product.refundedTotal);\r\n // // product.displayrefundedamount=this.appendCurrencySymbol(CURRENCY[this.transactionDocument.baseCurrency],product.refundedTotal);\r\n // // AppLoggerService.logDebug(this.className, product.displayrefundedamount,\"displayrefundedamount\");\r\n // product.refunded = true;\r\n // });\r\n // const baskettotal = (this.transactionDocument.basketSummary.basketTotal *= -1);\r\n // // this.transactionDocument.basketSummary.displaybaskettotal=this.appendCurrencySymbol(CURRENCY[this.transactionDocument.baseCurrency], baskettotal);\r\n // const saletotal = (this.transactionDocument.basketSummary.saleTotal *= -1);\r\n // // this.transactionDocument.basketSummary.displaysaletotal = this.appendCurrencySymbol(CURRENCY[this.transactionDocument.baseCurrency], saletotal);\r\n // (this.transactionDocument.basketSummary.VATTotal *= -1);\r\n // return this;\r\n // }\r\n\r\n /**\r\n * Sale Total\r\n * @param basketDetails\r\n * @returns Sale Total\r\n */\r\n updateSaleTotal(basketDetails: { products: any[]; }) {\r\n const saleTotal = basketDetails.products.reduce(\r\n (n: any, { totalLinePrice }: any) => n + totalLinePrice,\r\n 0\r\n );\r\n return saleTotal\r\n }\r\n\r\n getTotalWithLineDiscountAndLinePromotionApplied(basketDetails: { products: any; }): number {\r\n let saletotal: number = 0.0;\r\n for (let product of basketDetails.products) {\r\n // if (product.linePromotions) {\r\n // saletotal += product.linePromotions.promotionLinePrice;\r\n // } else if (\r\n // product.lineDiscount &&\r\n // !product.linePromotions\r\n // ) {\r\n // saletotal +=\r\n // product.quantity * Number(product.lineDiscount.unitPrice.toFixed(2));\r\n // } else {\r\n // saletotal +=\r\n // product.quantity * Number(product.selectedPrice.toFixed(2));\r\n // }\r\n saletotal += product.total;\r\n AppLoggerService.logDebug(this.className, \"getTotalWithLineDiscountAndLinePromotionApplied\",\r\n \"e-basket:update product Total:\" + saletotal,\r\n product\r\n );\r\n }\r\n return saletotal;\r\n }\r\n\r\n getRefundedTotalWithQuantity(basketDetails: { products: string | any[]; }): number {\r\n let quantity = 0;\r\n for (let index = 0; index < basketDetails.products.length; index++) {\r\n const product: any = basketDetails.products[index];\r\n\r\n if (!product.refundedReasonDescription) {\r\n\r\n quantity = quantity + product.quantity;\r\n\r\n } else {\r\n quantity = quantity + (product.quantity - product.refundedQuantity);\r\n\r\n // basketDetails.total = basketDetails.total + product.refundedTotal;\r\n\r\n }\r\n }\r\n return quantity;\r\n\r\n }\r\n\r\n /**\r\n * Discount Total\r\n * @returns Discount Total\r\n */\r\n updateDiscountTotal() {\r\n let refundTotal = this.transactionDocument.basketSummary.refundTotal ? this.transactionDocument.basketSummary.refundTotal : 0;\r\n AppLoggerService.logInfo(this.className, \"updateDiscountTotal\", `refundTotal: ${refundTotal} this.transactionDocument.basketSummary: ${this.transactionDocument.basketSummary}`);\r\n const discountTotal =\r\n Math.abs(\r\n Math.abs(this.transactionDocument.basketSummary.saleTotal) -\r\n (\r\n Math.abs(this.transactionDocument.basketSummary.basketTotal) + Math.abs(refundTotal)\r\n )\r\n );\r\n AppLoggerService.logDebug(this.className, \"updateDiscountTotal\", \"discountTotal\", discountTotal)\r\n return Number(discountTotal.toFixed(2));\r\n }\r\n\r\n updateReasonCode(reasonCode: {\r\n code: string;\r\n name: string;\r\n }): TransactionDocumentBuilder {\r\n this.transactionDocument.reasonCode = reasonCode.code;\r\n this.transactionDocument.reasonDescription = reasonCode.name;\r\n return this;\r\n }\r\n\r\n updateManagerOverride(\r\n useroverride: UserOverride\r\n ): TransactionDocumentBuilder {\r\n this.transactionDocument.override = useroverride;\r\n return this;\r\n }\r\n\r\n updateUserID(\r\n userID: string\r\n ): TransactionDocumentBuilder {\r\n this.transactionDocument.userId = userID;\r\n return this;\r\n }\r\n\r\n updateUserName(name: any) : TransactionDocumentBuilder {\r\n this.transactionDocument.userName = name;\r\n return this;\r\n\r\n }\r\n \r\n addCustomerDetails(customerDetail: Customer): TransactionDocumentBuilder {\r\n this.transactionDocument.customer = customerDetail;\r\n return this;\r\n }\r\n\r\n updateTaxBreakdown(basketDetails: Basket): TransactionDocumentBuilder {\r\n // let transactionDiscountTotal = 0;\r\n let taxBreakdown: TaxBreakdown = {\r\n taxLines: [],\r\n totalTaxableAmount: 0,\r\n };\r\n\r\n\r\n\r\n // if (this.transactionDocument.basket.transactionDiscount && this.transactionDocument.basket.transactionDiscount.length > 0) {\r\n // this.transactionDocument.basket.transactionDiscount.forEach((discount) => {\r\n // transactionDiscountTotal += discount.discountAmount;\r\n // });\r\n // }\r\n\r\n // if (this.transactionDocument.basket.transactionPromotion && this.transactionDocument.basket.transactionPromotion.length > 0) {\r\n // this.transactionDocument.basket.transactionPromotion.forEach(\r\n // (promotion) => {\r\n // transactionDiscountTotal += promotion.promotionAmount;\r\n // }\r\n // );\r\n // }\r\n\r\n basketDetails.products.forEach((product: any) => {\r\n let taxLine: TaxLine = {\r\n itemLineId: product.itemLineId,\r\n VAT: product.selectedVAT ? product.selectedVAT : 0,\r\n VATCode: product.selectedVATCode,\r\n taxLineTotal: 0,\r\n taxableAmount: product.total,\r\n PreTax: 0\r\n };\r\n AppLoggerService.logInfo(this.className, \"updateTaxBreakdown\", `item line ID :, ${product.itemLineId},\r\n \"tax line :\", ${taxLine}`);\r\n\r\n // step 1\r\n // if Transaction Discount and/or promotion applied, find net selling price of each product as taxableamount\r\n // if (transactionDiscountTotal > 0) {\r\n product = this.basketService.validateProductItemDiscount(product);\r\n\r\n const productContributionInTotal =\r\n product.itemDiscounts.trnDiscountsPortion +\r\n product.itemDiscounts.trnPromotionsPortion -\r\n product.itemDiscounts.refundPortion;\r\n // tp+td-rp;\r\n\r\n AppLoggerService.logInfo(this.className, \"updateTaxBreakdown\", `item line ID , ${product.itemLineId},\r\n \"contribution :\", ${productContributionInTotal}`);\r\n // calculate net selling price after applying transaction discount as per product contribution\r\n taxLine.taxableAmount -= productContributionInTotal;\r\n // }\r\n\r\n //step 2 - find pre tax\r\n taxLine.PreTax = this.numberUtilService.trimTo2Decimal2((taxLine.taxableAmount * 100) / (100 + taxLine.VAT));\r\n\r\n //step 3 - Update taxbreakdown\r\n taxBreakdown.totalTaxableAmount += taxLine.taxableAmount;\r\n taxLine.taxableAmount = this.numberUtilService.trimTo2Decimal2(taxLine.taxableAmount);\r\n \r\n // step 4 - update tax Line total\r\n taxLine.taxLineTotal = this.numberUtilService.trimTo2Decimal2(taxLine.taxableAmount - taxLine.PreTax);\r\n taxBreakdown.taxLines.push(taxLine);\r\n });\r\n\r\n taxBreakdown.totalTaxableAmount = this.numberUtilService.trimTo2Decimal2(taxBreakdown.totalTaxableAmount);\r\n this.transactionDocument.basket.taxBreakdown = taxBreakdown;\r\n return this;\r\n }\r\n\r\n updateTotalTaxSummary(): TransactionDocumentBuilder {\r\n\r\n AppLoggerService.logDebug(this.className, \"updateTotalTaxSummary\", \"Total Tax Summery Request :\", this.transactionDocument.basket.taxBreakdown);\r\n\r\n\r\n let totalTaxSummaryArray: TotalTaxSummary[] = []\r\n let totalTaxSummaryGroup = []\r\n\r\n AppLoggerService.logDebug(this.className, \"updateTotalTaxSummary\", \"Tax Lines for Total Tax Summery :\", this.transactionDocument.basket.taxBreakdown.taxLines);\r\n\r\n\r\n this.transactionDocument.basket.taxBreakdown.taxLines.forEach((element: { VATCode: any; VAT: any; PreTax: any; taxLineTotal: any; }) => {\r\n let TaxSummary: TotalTaxSummary = {\r\n VATCode: \"\",\r\n VAT: -12345,\r\n PreTaxSum: 0,\r\n TaxSum: 0,\r\n TXrateSum: 0\r\n \r\n };\r\n TaxSummary.VATCode = element.VATCode;\r\n TaxSummary.VAT = element.VAT; \r\n TaxSummary.PreTaxSum = this.numberUtilService.trimTo2Decimal2(element.PreTax);\r\n TaxSummary.TaxSum = this.numberUtilService.trimTo2Decimal2(element.taxLineTotal);\r\n TaxSummary.TXrateSum = this.numberUtilService.trimTo2Decimal2(TaxSummary.PreTaxSum + TaxSummary.TaxSum); \r\n totalTaxSummaryArray.push(TaxSummary);\r\n })\r\n\r\n AppLoggerService.logDebug(this.className, \"updateTotalTaxSummary\", \"Total Tax Summery Without Grouped : \", totalTaxSummaryArray);\r\n \r\n totalTaxSummaryGroup = totalTaxSummaryArray.reduce((preparedArray:any,currentObj) => {\r\n\r\n let ind = preparedArray.findIndex((x: { VAT: any; }) => x.VAT === currentObj.VAT);\r\n if(ind === -1){\r\n preparedArray.push(currentObj)\r\n }else {\r\n preparedArray[ind].VATCode = currentObj.VATCode;\r\n preparedArray[ind].VAT = currentObj.VAT;\r\n preparedArray[ind].PreTaxSum += currentObj.PreTaxSum;\r\n preparedArray[ind].TaxSum += currentObj.TaxSum;\r\n preparedArray[ind].TXrateSum += currentObj.TXrateSum;\r\n }\r\n return preparedArray;\r\n },[])\r\n \r\n AppLoggerService.logDebug(this.className, \"updateTotalTaxSummary\", \"Total Tax Summer Group :\",totalTaxSummaryGroup);\r\n\r\n\r\n this.transactionDocument.basket.totalTaxSummary = totalTaxSummaryGroup;\r\n\r\n return this;\r\n\r\n }\r\n\r\n\r\n /**\r\n * TransactionId\r\n * @returns OriginalTransactionId\r\n */\r\n addOriginalTransId(tranDoc:TransactionDocument): TransactionDocumentBuilder {\r\n if (this.transactionDocument.type === TRANSACTION_TYPE.REFUND || this.transactionDocument.type === TRANSACTION_TYPE.SALE_REFUND || this.transactionDocument.type === TRANSACTION_TYPE.SALE_EXCHANGE) {\r\n this.transactionDocument.originalTransId = tranDoc.transactionId;\r\n if(tranDoc.apiResponse && tranDoc.apiResponse.internalId)\r\n {\r\n this.transactionDocument.originalExternalId = tranDoc.apiResponse.internalId.toString();\r\n }\r\n }\r\n return this;\r\n }\r\n\r\n /**\r\n * unreferenced Refund\r\n * @returns boolean value\r\n */\r\n addUnreferencedRefund(): TransactionDocumentBuilder {\r\n this.transactionDocument.unreferencedRefund = true;\r\n return this;\r\n }\r\n\r\n getRefundTotal() {\r\n let totalRefund = 0;\r\n for (let index = 0; index < this.transactionDocument.basket.products.length; index++) {\r\n const product: TProduct = this.transactionDocument.basket.products[index];\r\n if (product.refundedTotal) {\r\n totalRefund = totalRefund + product.refundedTotal;\r\n }\r\n AppLoggerService.logDebug(this.className, \"getRefundTotal\", \"totalRefund\" , totalRefund)\r\n }\r\n return totalRefund;\r\n }\r\n\r\n docId(docId: any): TransactionDocumentBuilder {\r\n this.transactionDocument.id = docId;\r\n return this;\r\n }\r\n}\r\n","import { DISCOUNTTYPE, LineDiscount, TProduct, TransactionDiscount, TransactionDocument, TRANSACTION_TYPE } from \"./mapper-library.model\"\r\nimport { TransactionDocumentBuilder } from \"./TransactionDocumentBuilder\";\r\nimport {AppLoggerService} from '@pmcretail/common-services/common/app-logger.service';\r\nexport class RJMapperBuilderClass {\r\n\r\n className = \"RJMapperBuilderClass\";\r\n private transactionDocument: TransactionDocument;\r\n private deviceId: any;\r\n private transactionNumber: any;\r\n private manifestVersion: any;\r\n private databaseSchemaVersion: any;\r\n private basketType: any;\r\n private xmlSchemaVersion: any;\r\n private majorVersion: any;\r\n private minorVersion: any;\r\n private externalState: any;\r\n private cashierId: any;\r\n private companyId: any;\r\n private terminalNumber: any;\r\n private taxMethodId: any;\r\n private tradingRegionId: any;\r\n private basketCurrencyId: any;\r\n private basketCountryId: any;\r\n private basketLanguageId: any;\r\n private itemCount = 0;\r\n private largestNumber = 0;\r\n private branchId: any;\r\n private createdAt: any;\r\n private updatedAt :any;\r\n private salesPersonName: any;\r\n private rjObject: any = {}\r\n\r\n constructor(transactionDoc?: TransactionDocument) {\r\n if (transactionDoc) {\r\n this.transactionDocument = transactionDoc;\r\n } else {\r\n this.transactionDocument = {\r\n transactionId: \"\",\r\n offlineTransactionId: \"\",\r\n transactionRef: \"\",\r\n dateTime: \"\",\r\n orgCode: \"\",\r\n storeId: \"\",\r\n storeNodeId: \"\",\r\n storeNodeStructure: \"\",\r\n deviceId: \"\",\r\n terminalId: \"\",\r\n userId: \"\",\r\n initiatingModule: \"eBasket\",\r\n export: false,\r\n basket: {} as any,\r\n basketSummary: {} as any,\r\n baseCurrency: \"\",\r\n type: \"\",\r\n operationStatus: \"\",\r\n createdAt: \"\",\r\n updatedAt: \"\",\r\n id: \"\",\r\n currentTransactionDetails: {} as any,\r\n saleTotal: 0,\r\n };\r\n }\r\n this.initilizeItemCount();\r\n this.setLineNumberForProducts();\r\n this.createdAt = this.getDate(this.transactionDocument.createdAt);\r\n this.updatedAt = this.getDate(this.transactionDocument.updatedAt);\r\n }\r\n\r\n getPosbasketInfo() {\r\n this.rjObject['Keyword'] = this.generateKeyword();\r\n this.rjObject['ID'] = this.generateId(this.createdAt);\r\n this.rjObject['XMLSchemaVersion'] = '2';\r\n this.rjObject['LastUpdated'] = this.updatedAt;\r\n this.rjObject['MajorVersion'] = this.majorVersion;\r\n this.rjObject['MinorVersion'] = this.minorVersion;\r\n this.rjObject['ManifestVersion'] = this.manifestVersion;\r\n this.rjObject['DatabaseSchemaVersion'] = this.databaseSchemaVersion;\r\n this.rjObject['BasketType'] = this.basketType;\r\n this.rjObject['State'] = this.getState();\r\n this.rjObject['ExternalState'] = this.externalState;\r\n\r\n return this;\r\n }\r\n\r\n\r\n getheaderInfo() {\r\n this.rjObject['Header'] = {};\r\n this.rjObject['Header'].TimeZoneOffset = this.convertToString(this.generateTimezoneoffset(this.transactionDocument.createdAt));\r\n this.rjObject['Header'].DateTimeCreated = this.createdAt;\r\n this.rjObject['Header'].OriginatedBy = {};\r\n this.rjObject['Header'].OriginatedBy.DeviceID = this.deviceId;\r\n this.rjObject['Header'].OriginatedBy.CashierID = this.cashierId;\r\n this.rjObject['Header'].OriginatedBy.CompanyID = this.companyId;\r\n this.rjObject['Header'].OriginatedBy.StoreID = this.transactionDocument.storeId;\r\n this.rjObject['Header'].OriginatedBy.BranchID = this.branchId;\r\n this.rjObject['Header'].OriginatedBy.TerminalNumber = this.terminalNumber;\r\n this.rjObject['Header'].OriginatedBy.TransactionNumber = this.transactionNumber;\r\n this.rjObject['Header'].TaxMethodID = this.taxMethodId;\r\n this.rjObject['Header'].DynamicStockLookup = this.generateDynamicStockLookUp();\r\n this.rjObject['Header'].BasketLanguageID = this.basketLanguageId; //todo\r\n this.rjObject['Header'].BasketCountryID = this.basketCountryId; //todo\r\n this.rjObject['Header'].BasketCurrencyID = this.transactionDocument.baseCurrency;\r\n this.rjObject['Header'].TradingRegionID = this.tradingRegionId;\r\n this.rjObject['Header'].Eurozone = \" \";//unknown\r\n this.rjObject['Header'].EuroBaseExchangeRate = \"\"; //unknown\r\n this.rjObject['Header'].PrintableName = this.transactionDocument.userName; //unknown\r\n\r\n return this;\r\n }\r\n\r\n rjMapper() {\r\n var transactionDiscount:any = [] ;\r\n if (this.transactionDocument.basket.transactionDiscount && this.transactionDocument.basket.transactionDiscount.length > 0) {\r\n transactionDiscount = this.transactionDocument.basket.transactionDiscount\r\n }\r\n if (this.transactionDocument.type === TRANSACTION_TYPE.SALE) {\r\n this.rjObject['ProductSale'] = [];\r\n this.rjObject['ModifierItem'] = [];\r\n\r\n this.transactionDocument.basket.products.forEach((element: any) => {\r\n let lineDiscount = [];\r\n if (this.transactionDocument.basket.lineDiscount && this.transactionDocument.basket.lineDiscount.length > 0) {\r\n lineDiscount = this.transactionDocument.basket.lineDiscount.filter((x: any) => x.itemLineId === element.itemLineId);\r\n if (lineDiscount.length > 0) {\r\n const index = this.transactionDocument.basket.lineDiscount.indexOf(lineDiscount[0]);\r\n if (index > -1) {\r\n this.transactionDocument.basket.lineDiscount.splice(index, 1);\r\n }\r\n }\r\n }\r\n let data = this.addProduct(element, (lineDiscount.length > 0 ? lineDiscount[0] : null),(transactionDiscount.length > 0 ? transactionDiscount : null));\r\n this.rjObject['ProductSale'].push(data);\r\n this.getModifierItem(lineDiscount.length > 0 ? lineDiscount[0] : null, element.itemLineId);\r\n });\r\n let transactionPromotion = [];\r\n if (this.transactionDocument.basket.transactionPromotion && this.transactionDocument.basket.transactionPromotion.length > 0) {\r\n transactionPromotion = this.transactionDocument.basket.transactionPromotion;\r\n this.getTransactionPromotion(transactionPromotion);\r\n }\r\n } else if (this.transactionDocument.type === TRANSACTION_TYPE.REFUND) {\r\n this.rjObject['ProductReturn'] = [];\r\n this.rjObject['ModifierItem'] = []; \r\n this.transactionDocument.basket.products.forEach((element: any) => {\r\n let data = this.returnProduct(element, (element.hasOwnProperty('lineDiscount') ? element.lineDiscount : null),(transactionDiscount.length > 0 ? transactionDiscount : null));\r\n this.rjObject['ProductReturn'].push(data);\r\n this.getModifierItem(element.lineDiscount, element.itemLineId);\r\n });\r\n } else if (this.transactionDocument.type === TRANSACTION_TYPE.SALE_REFUND) {\r\n this.rjObject['ProductReturn'] = [];\r\n this.rjObject['ModifierItem'] = [];\r\n \r\n let transactionDoc: any = new TransactionDocumentBuilder().basket(this.transactionDocument.currentTransactionDetails).build();\r\n transactionDoc.basket.products.forEach((element: any) => {\r\n let data = this.returnProduct(element, (element.hasOwnProperty('lineDiscount') ? element.lineDiscount : null),(transactionDiscount.length > 0 ? transactionDiscount : null));\r\n let obj = {\r\n \"OriginalReceiptSupplied\": 0,\r\n \"OriginalBranchID\": 0,\r\n \"OriginalTerminalNumber\": 0,\r\n \"OriginalTransactionNumber\": 0,\r\n \"OriginalCashierNumber\": 0\r\n };\r\n data['Return'] = {...data['Return'], ...obj};\r\n this.rjObject['ProductReturn'].push(data);\r\n this.getModifierItem(element.lineDiscount, element.itemLineId);\r\n })\r\n } else if (this.transactionDocument.type === TRANSACTION_TYPE.SALE_EXCHANGE) {\r\n this.rjObject['ProductReturn'] = [];\r\n this.rjObject['ProductSale'] = [];\r\n this.rjObject['ModifierItem'] = [];\r\n \r\n let transactionDoc: any = new TransactionDocumentBuilder().basket(this.transactionDocument.currentTransactionDetails).build();\r\n transactionDoc.basket.products.forEach((element: any) => {\r\n if (element.refundedQuantity > 0) {\r\n let returnProduct = this.returnProduct(element, (element.hasOwnProperty('lineDiscount') ? element.lineDiscount : null),(transactionDiscount.length > 0 ? transactionDiscount : null));\r\n let obj = {\r\n \"OriginalReceiptSupplied\": 0,\r\n \"OriginalBranchID\": 0,\r\n \"OriginalTerminalNumber\": 0,\r\n \"OriginalTransactionNumber\": 0,\r\n \"OriginalCashierNumber\": 0\r\n };\r\n returnProduct['Return'] = {...returnProduct['Return'], ...obj};\r\n this.rjObject['ProductReturn'].push(returnProduct);\r\n } else {\r\n let addProduct = this.addProduct(element, (element.hasOwnProperty('lineDiscount') ? element.lineDiscount : null) ,(transactionDiscount.length > 0 ? transactionDiscount : null));\r\n this.rjObject['ProductSale'].push(addProduct);\r\n }\r\n this.getModifierItem(element.lineDiscount, element.itemLineId);\r\n })\r\n\r\n }\r\n return this;\r\n }\r\n\r\n getBasketDiscount() {\r\n if (!this.transactionDocument.basket.transactionDiscount) return this;\r\n this.rjObject['BasketDiscount'] = [];\r\n this.transactionDocument.basket.transactionDiscount.forEach((element: any) => {\r\n let obj: any = {}\r\n obj['XMLSchemaVersion'] = this.xmlSchemaVersion;\r\n obj['DeviceID']=this.deviceId;\r\n obj['DateTimeCreated']=this.updatedAt;\r\n obj['NetValue'] = this.convertToString(element.discountAmount * -1);\r\n obj['EffectiveNetValue'] =this.convertToString( element.discountAmount * -1);\r\n obj['Description'] = element.reasonDisplayText;\r\n obj['UserID'] = this.transactionDocument.userName;\r\n obj['ReasonCodeID'] = element.reasonCode;\r\n obj['DiscountType'] = this.convertToString(element.discountType.toUpperCase() == DISCOUNTTYPE.PERCENT.toUpperCase() ? 0 : 1); \r\n obj['RoundingRule'] = this.convertToString(2);\r\n obj['ModifiedLineNumber'] = element.itemLineIds; \r\n obj['LineNumber'] = this.convertToString(this.generateLineNumber()); \r\n obj['DiscountedValue'] = this.transactionDocument.basketSummary.basketTotal + this.transactionDocument.basketSummary.discountTotal;\r\n if(element.discountType.toUpperCase() == DISCOUNTTYPE.PERCENT.toUpperCase()){\r\n obj['DiscountPercentage'] = this.convertToString((element.discountAmount / this.transactionDocument.basketSummary.basketTotal).toFixed(1))\r\n }\r\n if(this.transactionDocument.type === 'REFUND'){\r\n obj['NetValue'] = this.convertToString(element.discountAmount < 0 ? -element.discountAmount : element.discountAmount);\r\n obj['EffectiveNetValue'] =this.convertToString( element.discountAmount < 0 ? -element.discountAmount : element.discountAmount);\r\n }\r\n\r\n this.rjObject['BasketDiscount'].push(obj);\r\n });\r\n return this;\r\n }\r\n\r\n getModifierItem(data: any, lineNo: any) {\r\n if (data && lineNo) {\r\n let obj: any = {};\r\n obj.XMLSchemaVersion = 1;\r\n obj.LineNumber = this.generateLineNumber();\r\n obj.NetValue = 0;\r\n obj.EffectiveNetValue = 0;\r\n obj.Description = data.percentageDiscountReasonName ? data.percentageDiscountReasonName : data.priceOverrideReasonName;\r\n obj.DeviceID = this.deviceId;\r\n obj.UserID = this.transactionDocument.userName;\r\n obj.DateTimeCreated = this.updatedAt;\r\n obj.AuthorisingUserID = this.transactionDocument.userName;\r\n obj.ReasonCodeID = data.percentageDiscountReasonCode ? data.percentageDiscountReasonCode : data.priceOverrideReasonCode;\r\n obj.ModifiedLineNumber = lineNo;\r\n obj.ModifiedIndex = 1;\r\n\r\n this.rjObject['ModifierItem'].push(obj);\r\n }\r\n }\r\n\r\n getTrailerInfo() {\r\n this.rjObject['Trailer'] = {};\r\n this.rjObject.Trailer.DateTimeCompleted = this.updatedAt;\r\n this.rjObject.Trailer.CompletedBy = {};\r\n this.rjObject.Trailer.CompletedBy.DeviceID = this.deviceId;\r\n this.rjObject.Trailer.CompletedBy.CashierID = this.cashierId;\r\n this.rjObject.Trailer.CompletedBy.StoreID = this.transactionDocument.storeId;\r\n this.rjObject.Trailer.CompletedBy.BranchID = this.branchId;\r\n this.rjObject.Trailer.CompletedBy.TerminalNumber = this.terminalNumber;\r\n this.rjObject.Trailer.CompletedBy.TransactionNumber = this.transactionNumber;\r\n this.rjObject.Trailer.Total = this.convertToString(this.transactionDocument.basketSummary.basketTotal * 100);\r\n this.rjObject.Trailer.ItemCount = this.itemCount; //gives total count for product\r\n this.rjObject.Trailer.ItemQuantity = this.convertToString(this.transactionDocument.basketSummary.totalItems);\r\n this.rjObject.Trailer.NetItemQuantity = this.convertToString(this.transactionDocument.basketSummary.totalItems);\r\n this.rjObject.Trailer.TaxTotal = this.convertToString(this.removeDecimal(this.transactionDocument.basketSummary.VATTotal));\r\n this.rjObject.Trailer.SequenceDeviceID = this.deviceId;\r\n this.rjObject.Trailer.SequenceNumber = 'snsn' //static for now\r\n\r\n this.rjObject['Trailer']['TaxItem'] = [];\r\n this.transactionDocument.basket.taxBreakdown.taxLines.forEach((element: any) => {\r\n let obj: any = {};\r\n\r\n obj['XMLSchemaVersion'] = this.xmlSchemaVersion;\r\n obj['TaxRate'] = this.convertToString(element.VATCode);\r\n obj['TaxableTotal'] = this.convertToString(this.removeDecimal(element.taxableAmount));\r\n obj['TaxTotal'] = this.convertToString(this.removeDecimal(this.removeDecimal(element.taxLineTotal)));\r\n obj['TaxDescription'] = this.convertToString(element.VATCode);\r\n obj['TaxIncluded'] = '1';\r\n obj['TaxPercentage'] = this.addDecimal(element.VAT.toFixed(2)).toFixed(2);\r\n\r\n this.rjObject['Trailer']['TaxItem'].push(obj)\r\n });\r\n if (this.transactionDocument.basket.linePromotion.length > 0 || this.transactionDocument.basket.linePromotion.length > 0) {\r\n this.rjObject['Trailer']['PromotionItem'] = [];\r\n if (this.transactionDocument.basket.linePromotion.length > 0) {\r\n this.transactionDocument.basket.linePromotion.forEach((element: any) => {\r\n let obj: any = {};\r\n\r\n obj['PromotionID'] = element.promotionId;\r\n obj['PromotionSaving'] = element.promotionAmount < 0 ? element.promotionAmount : -element.promotionAmount;\r\n obj['PromotionQuantity'] = \"1\";\r\n obj['PromotionDescription'] = element.displayText;\r\n obj['PromotionHit'] = {}\r\n obj['PromotionHit']['XMLSchemaVersion'] = this.xmlSchemaVersion;\r\n obj['PromotionHit']['HitNumber'] = \"1\";\r\n obj['PromotionHit']['HitQuantity'] = \"1\";\r\n obj['PromotionHit']['HitSaving'] = element.promotionAmount < 0 ? element.promotionAmount : -element.promotionAmount;\r\n obj['PromotionHit']['PromotionTrigger'] = {};\r\n let product = this.transactionDocument.basket.products.find((item: any) => item.itemLineId == element.itemLineId);\r\n obj['PromotionHit']['PromotionTrigger']['XMLSchemaVersion'] = this.xmlSchemaVersion;\r\n obj['PromotionHit']['PromotionTrigger']['ProductID'] = product.SKU;\r\n obj['PromotionHit']['PromotionTrigger']['UnitValue'] = this.convertToString(element.promotionLinePrice / product.quantity);\r\n obj['PromotionHit']['PromotionTrigger']['LineNumber'] = this.getNumber(product.SKU);\r\n obj['PromotionHit']['PromotionTrigger']['Quantity'] = this.convertToString(product.quantity.toFixed(1));\r\n obj['PromotionHit']['PromotionTrigger']['TaxCode'] = this.transactionDocument.basket.taxBreakdown.taxLines.find((item: any) => item.itemLineId == element.itemLineId).VATCode;\r\n this.rjObject['Trailer']['PromotionItem'].push(obj);\r\n });\r\n }\r\n\r\n if (this.transactionDocument.basket.transactionPromotion.length > 0) {\r\n\r\n this.transactionDocument.basket.transactionPromotion.forEach((element: any) => {\r\n let obj: any = {};\r\n obj['PromotionID'] = element.promotionId;\r\n obj['PromotionSaving'] = element.promotionAmount < 0 ? element.promotionAmount : -element.promotionAmount;\r\n obj['PromotionQuantity'] = \"1\";\r\n obj['PromotionDescription'] = element.displayText;\r\n obj['PromotionHit'] = {}\r\n obj['PromotionHit']['XMLSchemaVersion'] = this.xmlSchemaVersion;\r\n obj['PromotionHit']['HitNumber'] = \"1\";\r\n obj['PromotionHit']['HitQuantity'] = \"1\";\r\n obj['PromotionHit']['HitSaving'] = element.promotionAmount < 0 ? element.promotionAmount : -element.promotionAmount;\r\n obj['PromotionHit']['PromotionTrigger'] = [];\r\n this.transactionDocument.basket.products.forEach((product: any) => {\r\n let promotionTrigger = {};\r\n element.itemLineIds.forEach((itemLineId: any) => {\r\n if (JSON.stringify(itemLineId) === product.itemLineId) {\r\n promotionTrigger['XMLSchemaVersion'] = this.xmlSchemaVersion;\r\n promotionTrigger['ProductID'] = product.SKU;\r\n promotionTrigger['UnitValue'] = this.convertToString(element.promotionLinePrice / product.quantity);\r\n promotionTrigger['LineNumber'] = this.getNumber(product.SKU);\r\n promotionTrigger['Quantity'] = this.convertToString(product.quantity);\r\n promotionTrigger['TaxCode'] = this.transactionDocument.basket.taxBreakdown.taxLines.find((item: any) => item.itemLineId == product.itemLineId).VATCode;\r\n obj['PromotionHit']['PromotionTrigger'].push(promotionTrigger);\r\n }\r\n });\r\n });\r\n this.rjObject['Trailer']['PromotionItem'].push(obj);\r\n });\r\n }\r\n }\r\n return this;\r\n }\r\n\r\n getTenderInfo() {\r\n if (this.transactionDocument.paymentDetails && this.transactionDocument.paymentDetails.length > 0) {\r\n this.transactionDocument.paymentDetails.forEach((element: any) => {\r\n if(element.externalTenderKey){\r\n this.rjObject[element.externalTenderKey] = [];\r\n if (element.paymentType.toUpperCase() === 'GIFT CARD') {\r\n let obj = {\r\n XMLSchemaVersion: this.xmlSchemaVersion,\r\n LineNumber: this.generateLineNumber(),\r\n NetValue: this.convertToString(-1 * this.removeDecimal((Math.round(element.amount)))),\r\n EffectiveNetValue: this.convertToString(-1 * this.removeDecimal((Math.round(element.amount)))),\r\n Description: this.getDescription(element),\r\n DeviceID: this.deviceId,\r\n UserID: this.transactionDocument.userName,\r\n DateTimeCreated: this.updatedAt,\r\n TenderType: element.externalTenderType ? element.externalTenderType : '',\r\n TenderSubType: element.externalSubTenderType ? element.externalSubTenderType : '',\r\n TenderAmount: this.convertToString(-1 * this.removeDecimal((Math.round(element.amount)))),\r\n CurrencyID: this.transactionDocument.baseCurrency,\r\n CurrencyDescription: this.transactionDocument.baseCurrency,\r\n GiftVoucherSalesAllowed: '',//todo\r\n AllowRechargeableVoucherSales: '',//todo\r\n GiftVoucherID: ''\r\n }\r\n this.rjObject[element.externalTenderKey].push(obj)\r\n }\r\n else {\r\n let obj1 = {\r\n XMLSchemaVersion: \"1\",\r\n LineNumber: this.generateLineNumber(),//todo\r\n NetValue: this.convertToString(-1 * this.removeDecimal(Math.round(element.amount))),\r\n EffectiveNetValue: this.convertToString(-1 * this.removeDecimal(Math.round(element.amount))),\r\n Description: this.getDescription(element),\r\n DeviceID: this.deviceId,\r\n UserID: this.transactionDocument.userName,\r\n DateTimeCreated: this.updatedAt,\r\n TenderType: element.externalTenderType ? element.externalTenderType : '',\r\n TenderSubType: element.externalSubTenderType ? element.externalSubTenderType : '',\r\n TenderAmount: this.convertToString(-1 * this.removeDecimal(Math.round(element.amount))),\r\n CurrencyID: this.transactionDocument.baseCurrency,\r\n CurrencyDescription: this.transactionDocument.baseCurrency,\r\n IncludeInTransactionTotalCheck: \"1\",\r\n AllowRechargeableVoucherSales: \"1\",\r\n OpenDrawerAtEnd: \"1\"\r\n }\r\n this.rjObject[element.externalTenderKey].push(obj1)\r\n }\r\n } else{\r\n this.rjObject['CashTender'] = [];\r\n if (element.paymentType.toUpperCase() === 'GIFT CARD') {\r\n let obj = {\r\n XMLSchemaVersion: this.xmlSchemaVersion,\r\n LineNumber: this.generateLineNumber(),\r\n NetValue: JSON.stringify(-1 * this.removeDecimal((Math.round(element.amount)))),\r\n EffectiveNetValue: JSON.stringify(-1 * this.removeDecimal((Math.round(element.amount)))),\r\n Description: this.getDescription(element),\r\n DeviceID: this.deviceId,\r\n UserID: this.transactionDocument.userName,\r\n DateTimeCreated: this.updatedAt,\r\n TenderType: element.externalTenderType ? element.externalTenderType : '',\r\n TenderSubType: element.externalSubTenderType ? element.externalSubTenderType : '',\r\n TenderAmount: JSON.stringify(-1 * this.removeDecimal((Math.round(element.amount)))),\r\n CurrencyID: this.transactionDocument.baseCurrency,\r\n CurrencyDescription: this.transactionDocument.baseCurrency,\r\n GiftVoucherSalesAllowed: '',//todo\r\n AllowRechargeableVoucherSales: '',//todo\r\n GiftVoucherID: ''\r\n }\r\n this.rjObject['CashTender'].push(obj)\r\n }\r\n else {\r\n let obj1 = {\r\n XMLSchemaVersion: \"1\",\r\n LineNumber: this.generateLineNumber(),\r\n NetValue: JSON.stringify(-1 * this.removeDecimal((Math.round(element.amount)))),\r\n EffectiveNetValue: JSON.stringify(-1 * this.removeDecimal((Math.round(element.amount)))),\r\n Description: this.getDescription(element),\r\n DeviceID: this.deviceId,\r\n UserID: this.transactionDocument.userName,\r\n DateTimeCreated: this.updatedAt,\r\n TenderType: element.externalTenderType ? element.externalTenderType : '',\r\n TenderSubType: element.externalSubTenderType ? element.externalSubTenderType : '',\r\n TenderAmount: JSON.stringify(-1 * this.removeDecimal((Math.round(element.amount)))),\r\n CurrencyID: this.transactionDocument.baseCurrency,\r\n CurrencyDescription: this.transactionDocument.baseCurrency,\r\n IncludeInTransactionTotalCheck: \"1\",\r\n AllowRechargeableVoucherSales: \"1\",\r\n OpenDrawerAtEnd: \"1\"\r\n }\r\n this.rjObject['CashTender'].push(obj1)\r\n }\r\n }\r\n });\r\n }\r\n return this;\r\n }\r\n\r\n getNumber(productId) {\r\n let lineNumber; \r\n for (let i = 0; i < this.rjObject['ProductSale'].length; i++) {\r\n const element = this.rjObject['ProductSale'][i];\r\n if(JSON.stringify(productId) === JSON.stringify(element.ProductID)){\r\n lineNumber = element.LineNumber;\r\n break;\r\n }\r\n }\r\n return lineNumber;\r\n }\r\n\r\n setLineNumberForProducts() {\r\n let itemLineIdArray = [];\r\n itemLineIdArray = this.transactionDocument.basket.products.map((product: any) => {\r\n return parseInt(product.itemLineId);\r\n })\r\n this.largestNumber = itemLineIdArray.reduce((a: any, b: any) => Math.max(a, b));\r\n }\r\n\r\n generateLineNumber() {\r\n this.largestNumber += 1;\r\n this.itemCount += 1;\r\n return this.largestNumber;\r\n }\r\n\r\n initilizeItemCount() {\r\n this.itemCount = this.transactionDocument.basket.products.length;\r\n }\r\n\r\n build() {\r\n return this.rjObject;\r\n }\r\n\r\n getDescription(element: any) {\r\n if (element.paymentType.toUpperCase() === 'CARD') {\r\n return element.cardType\r\n }\r\n else {\r\n return element.paymentType;\r\n }\r\n }\r\n\r\n getMMGROUPID(attributes) {\r\n if (attributes && attributes.length > 0) {\r\n let filterValue = attributes.filter((attribute) => attribute.name === \"MMGROUPID\");\r\n if(filterValue && filterValue.length > 0){\r\n return filterValue[0].value;\r\n }\r\n }\r\n }\r\n\r\n setDeviceInfo(id: any) {\r\n this.deviceId = id\r\n return this\r\n }\r\n\r\n removeDecimal(value: number) {\r\n return value * 100;\r\n }\r\n\r\n addDecimal(value: number) {\r\n return value /100;\r\n }\r\n\r\n setTransactionNumber(value: any) {\r\n this.transactionNumber = value;\r\n return this\r\n }\r\n\r\n setManifestVersion(value: any) {\r\n this.manifestVersion = value;\r\n return this\r\n }\r\n\r\n setDatabaseSchemaVersion(value: any) {\r\n this.databaseSchemaVersion = value;\r\n return this\r\n }\r\n\r\n setBasketType(value: any) {\r\n this.basketType = value;\r\n return this\r\n }\r\n\r\n setTradingRegionID(value: any) {\r\n this.tradingRegionId = value\r\n return this\r\n }\r\n\r\n setCompanyID(value: any) {\r\n this.companyId = value\r\n return this\r\n }\r\n\r\n setTaxMethodID(value: any) {\r\n this.taxMethodId = value\r\n return this\r\n }\r\n\r\n setMajorVersion(value: any) {\r\n this.majorVersion = value\r\n return this\r\n }\r\n\r\n setMinorVersion(value: any) {\r\n this.minorVersion = value\r\n return this\r\n }\r\n\r\n setXMLSchemaVersion(value: any) {\r\n this.xmlSchemaVersion = value\r\n return this\r\n }\r\n\r\n setExternalState(value: any) {\r\n this.externalState = value\r\n return this\r\n }\r\n\r\n setCashierID() {\r\n this.cashierId = (this.transactionDocument && this.transactionDocument.userName) ? this.transactionDocument.userName : '';\r\n return this\r\n }\r\n\r\n setTerminalNumber(value: any) {\r\n this.terminalNumber = value;\r\n return this;\r\n }\r\n\r\n setBasketLanguageID(value: any) {\r\n this.basketLanguageId = value;\r\n return this;\r\n }\r\n setBasketCountryID(value: any) {\r\n this.basketCountryId = value;\r\n return this;\r\n }\r\n\r\n setBasketCurrencyID(value: any) {\r\n this.basketCurrencyId = value;\r\n return this;\r\n }\r\n\r\n setBranchID(value: any) {\r\n this.branchId = value;\r\n return this;\r\n }\r\n\r\n setSalesPersonName(value: any) {\r\n this.salesPersonName = value;\r\n return this;\r\n }\r\n\r\n generateId(date: any) {\r\n let newDateTime = date.replace(/[^0-9]/g, '')\r\n let id = (this.deviceId + '|' + newDateTime + '|' + this.transactionNumber).toString();\r\n return id;\r\n } \r\n\r\n generateTimezoneoffset(date: any) {\r\n let x = date ? date : '';\r\n return new Date(x).getTimezoneOffset();\r\n }\r\n\r\n generateKeyword() {\r\n let x = (this.companyId + '|' + this.transactionDocument.storeId + '|' + this.terminalNumber + '|' + this.transactionNumber).toString();\r\n return x;\r\n }\r\n\r\n getState() {\r\n if (this.transactionDocument.operationStatus === 'PAY_SUCCESS') {\r\n return 'Completed';\r\n }\r\n else {\r\n return 'Cancelled';\r\n }\r\n }\r\n\r\n returnProduct(element: any, lineDiscount: LineDiscount , transactionDiscount: TransactionDiscount) {\r\n let obj: any = {};\r\n let taxTotal = this.transactionDocument.basket['taxBreakdown']['taxLines'].find((item: any) => item.itemLineId == element['itemLineId']);\r\n obj['XMLSchemaVersion'] = this.xmlSchemaVersion;\r\n obj['LineNumber'] = element['itemLineId'];\r\n obj['NetValue'] = this.removeDecimal(element['refundedTotal']);\r\n obj['EffectiveNetValue'] = this.removeDecimal(element['refundedTotal']);\r\n obj['Description'] = element['description'];\r\n obj['DeviceID'] = this.transactionDocument['terminalId'];\r\n obj['UserID'] = this.transactionDocument.userName;\r\n obj['DateTimeCreated'] = this.createdAt;\r\n obj['ExtendedValue'] = this.removeDecimal(element['totalLinePrice']*-1);\r\n obj['UnitPrice'] = this.removeDecimal(element['price']);\r\n obj['Quantity'] = this.getQuantity(element);\r\n obj['OriginalTaxAmountSet'] = 1;\r\n obj['ProductID'] = element['SKU'];\r\n obj['HandKeyed'] = 1;\r\n obj['LongDescription'] = element['description'];\r\n obj['Return'] = {};\r\n obj['Return']['ReturnReasonID'] = element['refundedReason'];\r\n obj['Return']['ReturnDescription'] = element['refundedReasonDescription'];\r\n obj['Return']['ReturnToStock'] = this.getQuantity(element);\r\n obj['TaxCode'] = this.transactionDocument.basket['taxBreakdown']['taxLines'].find((item: any) => item.itemLineId == element['itemLineId']).VATCode;\r\n\r\n obj['DisplayTaxCode'] = ''; // todo\r\n obj['ProductAttributes'] = ''; //todo - not required\r\n obj['Perishable'] = this.getMMGROUPID(element.attributes);\r\n //obj['MMGroupID'] = this.getCaregories(element);\r\n obj['MMGroupID'] = this.getMMGROUPID(element.attributes);\r\n obj['CustomerDetails'] = \"\"; // todo - blank\r\n obj['TotalPromotionSaving'] = element['promotionAmount'] || -1; // TODO\r\n obj['OriginalTaxAmount'] = this.convertToString((this.removeDecimal(this.getOriginalTax(element,taxTotal.VAT) * -1)).toFixed(2));\r\n obj['taxAmount'] = this.removeDecimal(taxTotal.taxLineTotal < 0 ?(taxTotal.taxLineTotal) : (-taxTotal.taxLineTotal));\r\n\r\n if (lineDiscount) {\r\n if (lineDiscount.percentageDiscountReasonName && lineDiscount.percentageDiscountReasonCode) {\r\n // line discount\r\n obj['Discount'] = {};\r\n obj['Discount'].ModifierValue = this.removeDecimal(lineDiscount.discountAmount) * -1;\r\n obj['Discount'].ModifierDateTime = obj.DateTimeCreated;\r\n obj['Discount'].ModifierReasonID = lineDiscount.percentageDiscountReasonCode;\r\n obj['Discount'].ModifierDescription = lineDiscount.percentageDiscountReasonName;\r\n obj['Discount'].AuthorisingUserID = this.transactionDocument.userName;\r\n obj['Discount'].DiscountType = lineDiscount.discountType;\r\n obj['Discount'].XMLSchemaVersion = 1;\r\n obj['Discount'].OriginalPrice = this.removeDecimal(lineDiscount.discountAmount + (lineDiscount.discountedLinePrice || 0));\r\n obj['Discount'].DiscountedValue = this.removeDecimal(lineDiscount.unitPrice);\r\n obj['Discount'].DiscountPercentage = lineDiscount.percentageDiscountValue;\r\n obj['Discount'].RoundingRule = 2;\r\n }\r\n\r\n if (lineDiscount.priceOverrideReasonCode && lineDiscount.priceOverrideReasonName) {\r\n //price override\r\n obj['PriceOverride'] = {};\r\n obj['PriceOverride'].ModifierValue = this.removeDecimal(lineDiscount.discountAmount) * -1;\r\n obj['PriceOverride'].ModifierDateTime = obj.DateTimeCreated;\r\n obj['PriceOverride'].ModifierReasonID = lineDiscount.priceOverrideReasonCode;\r\n obj['PriceOverride'].ModifierReasonDescription = lineDiscount.priceOverrideReasonName;\r\n obj['PriceOverride'].AuthorisingUserID = this.transactionDocument.userName;\r\n obj['PriceOverride'].XMLSchemaVersion = 1;\r\n obj['PriceOverride'].NewPrice = this.removeDecimal(lineDiscount.unitPrice);\r\n obj['PriceOverride'].OriginalPrice = this.removeDecimal(lineDiscount.discountedLinePrice || 0 + lineDiscount.discountAmount);\r\n }\r\n\r\n //update the product price\r\n obj.NetValue = ((lineDiscount.discountedLinePrice || 0) + lineDiscount.discountAmount) * -1;\r\n obj.EffectiveNetValue = ((lineDiscount.discountedLinePrice || 0) + lineDiscount.discountAmount) * -1;\r\n obj.ExtendedValue = ((lineDiscount.discountedLinePrice || 0) + lineDiscount.discountAmount) * -1;\r\n obj.UnitPrice = ((lineDiscount.discountedLinePrice || 0) + lineDiscount.discountAmount) * -1;\r\n }\r\n\r\n if(transactionDiscount) {\r\n obj['BasketDiscountModifier'] = [];\r\n this.transactionDocument.basket.transactionDiscount.forEach((e: any) => { \r\n let discountObj: any ={}\r\n e.itemLineIds.forEach((x: any) => {\r\n if (x == element.itemLineId) { \r\n var discountAmount = this.convertToString(e.discountAmount * -1); \r\n discountObj.BasketDiscountLineNumber = this.getLineNumber(e,discountAmount);\r\n discountObj.XMLSchemaVersion = this.xmlSchemaVersion;\r\n discountObj.DiscountedValue = this.getDiscountedValue(element.totalLinePrice, e.discountAmount);\r\n obj['BasketDiscountModifier'].push(discountObj);\r\n } \r\n }); \r\n });\r\n var totaltransactionDiscount = 0;\r\n obj['BasketDiscountModifier'].forEach((value:any)=>{\r\n totaltransactionDiscount = totaltransactionDiscount + value.DiscountedValue;\r\n });\r\n //update the product price\r\n obj['EffectiveNetValue'] = obj.EffectiveNetValue + totaltransactionDiscount;\r\n }\r\n\r\n if (this.transactionDocument.basket.transactionPromotion.length > 0) {\r\n obj['PromotionSaving'] = [];\r\n this.transactionDocument.basket.transactionPromotion.forEach((transactionPromo: any) => {\r\n let promotionObj: any = {};\r\n transactionPromo.itemLineIds.forEach((itemLineId: any) => {\r\n if (itemLineId == element.itemLineId) {\r\n promotionObj.ModifierValue = transactionPromo.promotionAmount;\r\n promotionObj.ModifierDateTime = this.transactionDocument.createdAt;\r\n promotionObj.ModifierDescription = transactionPromo.displayText;\r\n promotionObj.XMLSchemaVersion = this.xmlSchemaVersion;\r\n promotionObj.PromotionID = transactionPromo.promotionId;\r\n promotionObj.PromotionDescription = transactionPromo.displayText;\r\n promotionObj.HitNumber = '1';\r\n promotionObj.PromotionHitProductQuantity = this.getQuantity(element);\r\n promotionObj.PromotionHitQuantity = this.getQuantity(element) * -1;\r\n obj['PromotionSaving'].push(promotionObj);\r\n }\r\n });\r\n });\r\n }\r\n\r\n return obj;\r\n }\r\n\r\n addProduct(element: TProduct, lineDiscount: LineDiscount, transactionDiscount: TransactionDiscount) {\r\n let taxTotal = this.transactionDocument.basket['taxBreakdown']['taxLines'].find((item: any) => item.itemLineId == element['itemLineId']);\r\n let obj: any = {\r\n XMLSchemaVersion: this.xmlSchemaVersion,\r\n LineNumber: element.itemLineId,\r\n NetValue: this.removeDecimal(element.totalLinePrice),\r\n EffectiveNetValue: this.removeDecimal(element.totalLinePrice),\r\n Description: element.description,\r\n DeviceID: this.deviceId,\r\n UserID: this.transactionDocument.userName,\r\n DateTimeCreated: this.createdAt,\r\n ExtendedValue: this.removeDecimal(element.price),\r\n UnitPrice: this.removeDecimal(element.price),\r\n //MMGroupID: this.getCaregories(element),\r\n Quantity: element.quantity,\r\n SalespersonID: this.transactionDocument.userName,\r\n SalespersonName: this.salesPersonName,\r\n TaxCode: this.transactionDocument.basket['taxBreakdown']['taxLines'].find((item: any) => item.itemLineId == element['itemLineId']).VATCode,\r\n TaxModifiable: \"1\", //todo\r\n OriginalTaxAmount : this.convertToString((this.removeDecimal(this.getOriginalTax(element,taxTotal.VAT)).toFixed(2))),\r\n TaxAmount : this.convertToString(this.removeDecimal(taxTotal.taxLineTotal)),\r\n OriginalTaxAmountSet: \"1\",//todo\r\n ProductID: element.SKU,\r\n HandKeyed: \"1\",//todo\r\n CustomerDetails: \"\",\r\n Perishable: this.getMMGROUPID(element.attributes),\r\n MMGroupID: this.getMMGROUPID(element.attributes)\r\n }\r\n if (lineDiscount) {\r\n if (lineDiscount.percentageDiscountReasonName && lineDiscount.percentageDiscountReasonCode) {\r\n // line discount\r\n obj['Discount'] = {};\r\n obj['Discount'].ModifierValue = this.removeDecimal(lineDiscount.discountAmount) * -1;\r\n obj['Discount'].ModifierDateTime = obj.DateTimeCreated;\r\n obj['Discount'].ModifierReasonID = lineDiscount.percentageDiscountReasonCode;\r\n obj['Discount'].ModifierDescription = lineDiscount.percentageDiscountReasonName;\r\n obj['Discount'].AuthorisingUserID = this.transactionDocument.userName;\r\n obj['Discount'].DiscountType = lineDiscount.discountType;\r\n obj['Discount'].XMLSchemaVersion = 1;\r\n obj['Discount'].OriginalPrice = this.removeDecimal(lineDiscount.discountAmount + (lineDiscount.discountedLinePrice || 0));\r\n obj['Discount'].DiscountedValue = this.removeDecimal(lineDiscount.unitPrice);\r\n obj['Discount'].DiscountPercentage = lineDiscount.percentageDiscountValue;\r\n obj['Discount'].RoundingRule = 2;\r\n }\r\n\r\n if (lineDiscount.priceOverrideReasonCode && lineDiscount.priceOverrideReasonName) {\r\n //price override\r\n obj['PriceOverride'] = {};\r\n obj['PriceOverride'].ModifierValue = this.removeDecimal(lineDiscount.discountAmount) * -1;\r\n obj['PriceOverride'].ModifierDateTime = obj.DateTimeCreated;\r\n obj['PriceOverride'].ModifierReasonID = lineDiscount.priceOverrideReasonCode;\r\n obj['PriceOverride'].ModifierReasonDescription = lineDiscount.priceOverrideReasonName;\r\n obj['PriceOverride'].AuthorisingUserID = this.transactionDocument.userName;\r\n obj['PriceOverride'].XMLSchemaVersion = this.xmlSchemaVersion;\r\n obj['PriceOverride'].NewPrice = this.removeDecimal(lineDiscount.unitPrice);\r\n obj['PriceOverride'].OriginalPrice = this.removeDecimal(lineDiscount.discountedLinePrice || 0 + lineDiscount.discountAmount);\r\n }\r\n\r\n //update the product price\r\n obj['NetValue'] = ((lineDiscount.discountedLinePrice || 0) + lineDiscount.discountAmount);\r\n obj['EffectiveNetValue'] = ((lineDiscount.discountedLinePrice || 0) + lineDiscount.discountAmount);\r\n obj['ExtendedValue'] = ((lineDiscount.discountedLinePrice || 0) + lineDiscount.discountAmount);\r\n obj['UnitPrice'] = ((lineDiscount.discountedLinePrice || 0) + lineDiscount.discountAmount);\r\n }\r\n\r\n if(transactionDiscount) {\r\n obj['BasketDiscountModifier'] = [];\r\n this.transactionDocument.basket.transactionDiscount.forEach((e:any) => { \r\n let discountObj: any ={};\r\n e.itemLineIds.forEach((itemLineId: any) => {\r\n if (itemLineId == element.itemLineId) { \r\n let discountAmount = this.convertToString(e.discountAmount * -1); \r\n discountObj.XMLSchemaVersion = this.xmlSchemaVersion;\r\n discountObj.DiscountedValue = -(this.getDiscountedValue(element.totalLinePrice, e.discountAmount));\r\n discountObj.BasketDiscountLineNumber = this.getLineNumber(e,discountAmount) ;\r\n obj['BasketDiscountModifier'].push(discountObj); \r\n } \r\n }); \r\n });\r\n let totaltransactionDiscount = 0;\r\n obj['BasketDiscountModifier'].forEach((value:any)=>{\r\n totaltransactionDiscount = totaltransactionDiscount + value.DiscountedValue;\r\n });\r\n //update the product price\r\n obj['EffectiveNetValue'] = obj.EffectiveNetValue + totaltransactionDiscount; \r\n }\r\n \r\n if (this.transactionDocument.basket.transactionPromotion.length > 0 || this.transactionDocument.basket.linePromotion.length > 0) {\r\n obj['DistributedPromotionSaving'] = [];\r\n if (this.transactionDocument.basket.transactionPromotion.length > 0) {\r\n this.transactionDocument.basket.transactionPromotion.forEach((e: any) => {\r\n let promotionObj: any = {};\r\n e.itemLineIds.forEach((itemLineId: any) => {\r\n if (itemLineId == element.itemLineId) {\r\n promotionObj.PromotionID = e.promotionId;\r\n promotionObj.Hit = '1';\r\n promotionObj.Saving = this.getSaving(element.totalLinePrice, e.promotionAmount);\r\n promotionObj.ISaving = this.getSaving(element.totalLinePrice, e.promotionAmount);\r\n obj['DistributedPromotionSaving'].push(promotionObj);\r\n }\r\n });\r\n });\r\n }\r\n\r\n if (this.transactionDocument.basket.linePromotion.length > 0) {\r\n this.transactionDocument.basket.linePromotion.forEach((linePromotion: any) => {\r\n let promotionObj: any = {};\r\n if (element.itemLineId == linePromotion.itemLineId) {\r\n promotionObj.PromotionID = linePromotion.promotionId;\r\n promotionObj.Hit = \"1\";\r\n promotionObj.Saving = linePromotion.promotionLinePrice;\r\n promotionObj.ISaving = linePromotion.promotionLinePrice;\r\n obj['DistributedPromotionSaving'].push(promotionObj);\r\n }\r\n });\r\n }\r\n let transactionPromotion = 0;\r\n obj['DistributedPromotionSaving'].forEach((value: any) => {\r\n transactionPromotion = transactionPromotion + value.Saving;\r\n });\r\n obj['EffectiveNetValue'] = obj.EffectiveNetValue + transactionPromotion;\r\n }\r\n return obj;\r\n }\r\n\r\n getSaving(price,promotionAmount): any {\r\n let Saving = (price*promotionAmount)/this.transactionDocument.basketSummary.saleTotal;\r\n return Saving;\r\n }\r\n\r\n getLineNumber(value: any,discountAmount:string ){\r\n let lineNumber;\r\n for (let i = 0; i < this.rjObject['BasketDiscount'].length; i++) {\r\n const element = this.rjObject['BasketDiscount'][i];\r\n if( value.reasonCode === element.ReasonCodeID && discountAmount === element.NetValue){\r\n lineNumber = element.LineNumber;\r\n break; \r\n } \r\n }\r\n return lineNumber; \r\n }\r\n\r\n\r\n getDiscountedValue(price:any ,discountAmount:any ) {\r\n let DiscountedValue =((price * discountAmount)/this.transactionDocument.basketSummary.saleTotal)*100 ;\r\n return DiscountedValue;\r\n }\r\n\r\n getOriginalTax(element: TProduct, VAT) {\r\n let pricebeforetax = (element.price * 100)/(100 + VAT )\r\n let originaltax= element.price - pricebeforetax\r\n return originaltax;\r\n }\r\n\r\n convertToString(value: any) {\r\n try {\r\n value = JSON.stringify(value);\r\n return value;\r\n }\r\n catch (e) {\r\n AppLoggerService.logError(this.className, \"convertToString\", 'can not be converted in string', e);\r\n }\r\n }\r\n\r\n generateDynamicStockLookUp() {\r\n let x = '0';\r\n this.transactionDocument.basket.products.forEach((element: any) => {\r\n if (element.deliveryMethod === '1' || element.deliveryMethod === '2') {\r\n x = '1';\r\n }\r\n });\r\n return x;\r\n }\r\n\r\n // getAttributes(){\r\n // let name: string | any[] = []\r\n // this.transactionDocument.basket.products.forEach((element: any) => {\r\n // if (element && element.attributes && element.attributes.length > 0) {\r\n // name = element.attributes.filter((x: any) => x.name.toUpperCase() === element.name.toUpperCase());\r\n // }\r\n // });\r\n // if (name.length > 0) {\r\n // return name[0].value\r\n // }\r\n // else{\r\n // return \"\"\r\n // }\r\n // }\r\n\r\n // getCaregories(element) {\r\n // let MMGroupId = \" \";\r\n // if (element.categories && element.categories.length > 0) {\r\n // let categories = element.categories.filter((x) => x.parentId != '');\r\n // let value = categories.filter((x) => x.id != x.parentId);\r\n // MMGroupId = value[0].name;\r\n // }\r\n // return MMGroupId;\r\n // }\r\n\r\n getDate(date:string){\r\n let offset = this.generateTimezoneoffset(date) * -1;\r\n let offsetHours = Math.abs(Math.floor(offset / 60)); \r\n\t let offsetMinutes = Math.abs(offset) - offsetHours * 60;\r\n\r\n let offsetSign = '+';\r\n if (offset < 0) {\r\n offsetSign = '-';\r\n }\r\n\r\n let newdate = date.substring(0,19);\r\n const x = (newdate+ offsetSign +String(offsetHours).padStart(2, '0')+':'+String(offsetMinutes).padStart(2, '0')).toString();\r\n return x; \r\n }\r\n \r\n getTransactionPromotion(transactionPromotion){\r\n if(transactionPromotion && transactionPromotion.length > 0){\r\n this.rjObject['PromoVoucherItem'] = {};\r\n this.rjObject['PromoVoucherItem']['XMLSchemaVersion'] = this.xmlSchemaVersion;\r\n this.rjObject['PromoVoucherItem']['LineNumber'] = this.generateLineNumber();\r\n this.rjObject['PromoVoucherItem']['NetValue'] = this.removeDecimal(transactionPromotion[0].promotionLinePrice) * -1;\r\n this.rjObject['PromoVoucherItem']['EffectiveNetValue'] = this.removeDecimal(transactionPromotion[0].promotionLinePrice) * -1;\r\n this.rjObject['PromoVoucherItem']['Description'] = transactionPromotion[0].promotionInfo;\r\n this.rjObject['PromoVoucherItem']['DeviceID'] = this.deviceId;\r\n this.rjObject['PromoVoucherItem']['UserID'] = this.transactionDocument.userName;\r\n this.rjObject['PromoVoucherItem']['DateTimeCreated'] = this.createdAt;\r\n this.rjObject['PromoVoucherItem']['ProductId'] = \"\"; //todo\r\n this.rjObject['PromoVoucherItem']['SerialNumber'] = \"\" ; //todo\r\n this.rjObject['PromoVoucherItem']['MMGroupId'] = \"\";\r\n }\r\n }\r\n \r\n getQuantity(element: any) {\r\n let quantity\r\n if(this.transactionDocument.unreferencedRefund){\r\n quantity = element['quantity'] < 0 ? element['quantity'] : (-element['quantity']);\r\n }\r\n else{\r\n quantity = element['refundedQuantity'] < 0 ? element['refundedQuantity'] : (-element['refundedQuantity']);\r\n }\r\n return quantity;\r\n }\r\n}\r\n","import { CurrencyPipe } from \"@angular/common\";\r\nimport { CurrentTransactionDetails, TransactionDocument, Trigger, PROMOTION_LEVEL, PROMOTION_TYPE, TProduct, TransactionPromotion } from \"./mapper-library.model\";\r\nimport { NumberUtilService } from \"./number-util.service\";\r\nimport {AppLoggerService} from '@pmcretail/common-services/common/app-logger.service';\r\n\r\nexport class WebReturnMapperBuilderClass {\r\n className = \"WebReturnMapperBuilderClass\";\r\n private document: any;\r\n private webReturnObject: TransactionDocument = {\r\n id: '',\r\n orgCode: \"\",\r\n storeId: \"\",\r\n storeNodeId: \"\",\r\n storeNodeStructure: \"\",\r\n deviceId: \"\",\r\n terminalId: \"\",\r\n initiatingModule: \"\",\r\n export: false,\r\n isInStoreOrder: false,\r\n basket: {},\r\n basketSummary: {},\r\n baseCurrency: \"\",\r\n customer: {\r\n firstName: '',\r\n lastName: '',\r\n email: '',\r\n postCode: '',\r\n id: '',\r\n billingAddress: {},\r\n shippingAddress: {},\r\n\r\n },\r\n currentTransactionDetails: {} as CurrentTransactionDetails\r\n }\r\n numberUtilService: any;\r\n\r\n constructor(document, private currencyPipe?: CurrencyPipe) {\r\n if (document) {\r\n this.document = document;\r\n }\r\n this.numberUtilService = new NumberUtilService(currencyPipe);\r\n }\r\n\r\n WebReturnMapper() {\r\n this.webReturnObject['type'] = 'WEB_RETURNS';\r\n this.webReturnObject['datetime'] = this.getUTCDateTime(this.getText(this.document.updated_at));\r\n this.webReturnObject.baseCurrency = this.getText(this.document.base_currency_code);\r\n this.webReturnObject.storeId = this.getText(this.document.store_id);\r\n this.webReturnObject.subsidiaryId = '1';\r\n this.webReturnObject.initiatingModule = 'MAGENTO';\r\n this.webReturnObject.createdAt = this.getUTCDateTime(this.getText(this.document.created_at));\r\n this.webReturnObject.updatedAt = this.getUTCDateTime(this.getText(this.document.updated_at));\r\n this.webReturnObject.export = true;\r\n this.webReturnObject.transCompletedAt = this.getUTCDateTime(this.getText(this.document.updated_at));\r\n this.webReturnObject['externalTransactionId'] = this.getText(this.document.order_id);\r\n\r\n // customer\r\n this.webReturnObject['customer']['firstName'] = this.getText(this.document.customer_firstname) || '';\r\n this.webReturnObject['customer']['lastName'] = this.getText(this.document.customer_lastname) || '';\r\n this.webReturnObject['customer']['email'] = this.getText(this.document.customer_email) || '';\r\n this.webReturnObject['customer']['postCode'] = '';\r\n\r\n // Billing address\r\n this.webReturnObject['customer']['billingAddress']['address1'] = (this.document.billing_address && this.document.billing_address.street) ? this.getText(this.document.billing_address.street) : '';\r\n this.webReturnObject['customer']['billingAddress']['city'] = (this.document.billing_address && this.document.billing_address.city) ? this.getText(this.document.billing_address.city) : '';\r\n this.webReturnObject['customer']['billingAddress']['county'] = (this.document.billing_address && this.document.billing_address.region) ? this.getText(this.document.billing_address.region) : '';\r\n this.webReturnObject['customer']['billingAddress']['postCode'] = (this.document.billing_address && this.document.billing_address.postcode) ? this.getText(this.document.billing_address.postcode) : '';\r\n this.webReturnObject['customer']['billingAddress']['country'] = (this.document.billing_address && this.document.billing_address.country) ? this.getText(this.document.billing_address.country) : '';\r\n\r\n // Shipping address\r\n this.webReturnObject['customer']['shippingAddress']['address1'] = (this.document.shipping_address && this.document.shipping_address.street) ? this.getText(this.document.shipping_address.street) : '';\r\n this.webReturnObject['customer']['shippingAddress']['city'] = (this.document.shipping_address && this.document.shipping_address.city) ? this.getText(this.document.shipping_address.city) : '';\r\n this.webReturnObject['customer']['shippingAddress']['county'] = (this.document.shipping_address && this.document.shipping_address.region) ? this.getText(this.document.shipping_address.region) : '';\r\n this.webReturnObject['customer']['shippingAddress']['postCode'] = (this.document.shipping_address && this.document.shipping_address.postcode) ? this.getText(this.document.shipping_address.postcode) : '';\r\n this.webReturnObject['customer']['shippingAddress']['country'] = (this.document.shipping_address && this.document.shipping_address.country) ? this.getText(this.document.shipping_address.country) : '';\r\n\r\n // basketSummary \r\n this.webReturnObject.basketSummary['discountTotal'] = Math.abs(Number(this.document.discount_amount ? this.getText(this.document.discount_amount) : 0));\r\n this.webReturnObject.basketSummary['VATTotal'] = Number(this.document.base_total_paid ? this.getText(this.document.base_total_paid) : 0);\r\n this.webReturnObject.basketSummary['saleTotal'] = Number(this.document.base_total_invoiced ? this.getText(this.document.base_total_invoiced) : 0);\r\n this.webReturnObject.basketSummary['basketTotal'] = Number(this.document.base_total_paid ? this.getText(this.document.base_total_paid) : 0);\r\n this.webReturnObject.basketSummary['totalItems'] = Number(this.document.total_qty_ordered ? this.getText(this.document.total_qty_ordered) : 0);\r\n this.webReturnObject.basketSummary['refundTotal'] = Number(this.document.base_total_refunded ? this.getText(this.document.base_total_refunded) : 0);\r\n\r\n // // basket line discount\r\n // this.webReturnObject.basket['lineDiscount'] = [];\r\n\r\n // let lineDiscount = {\r\n // itemLineId: (this.document.items && this.document.items.item && this.document.items.item.item_id) ? this.getText(this.document.items.item.item_id) : 0,\r\n // discountAmount: (this.document.items && this.document.items.item && this.document.items.item.discount_amount) ? Number(this.getText(this.document.items.item.discount_amount)) : 0\r\n // }\r\n // this.webReturnObject.basket['lineDiscount'].push(lineDiscount);\r\n\r\n // basket transaction discount\r\n \r\n\r\n // basket products \r\n this.webReturnObject.basket['products'] = [];\r\n this.webReturnObject.basket['linePromotion']=[];\r\n this.webReturnObject.basket['transactionDiscount'] = [];\r\n this.webReturnObject.basket['transactionPromotion'] = [];\r\n\r\n // let transactionDiscount = {\r\n // discountAmount: (this.document && this.document.discount_amount) ? Number(this.getText(this.document.discount_amount)) : 0\r\n // }\r\n // this.webReturnObject.basket['transactionDiscount'].push(transactionDiscount);\r\n\r\n\r\n let product : any= {};\r\n if (this.document.items && this.document.items.item) {\r\n if (this.document.items.item instanceof Array) {\r\n this.document.items.item.forEach((element, index) => {\r\n let qty = this.getText(element.qty_ordered) ? Number(this.getText(element.qty_ordered)) : 0;\r\n let refundQty = this.getText(element.qty_refunded) ? Number(this.getText(element.qty_refunded)) : 0;\r\n let price = this.getText(element.price_incl_tax) ? Number(this.getText(element.price_incl_tax)) : 0;\r\n product = {\r\n description: (element.name) ? this.getText(element.name) : '',\r\n SKU: (element.sku) ? this.getText(element.sku) : '',\r\n quantity: (element.qty_ordered) ? Number(this.getText(element.qty_ordered)) : 0,\r\n refundedQuantity: (element.qty_refunded) ? Number(this.getText(element.qty_refunded)) : 0,\r\n //price: (element.original_price) ? Number(this.getText(element.original_price)) : 0,\r\n price: price,\r\n \r\n itemLineId: (index + 1).toString(),\r\n // totalLinePrice: (element.row_invoiced) ? Number(this.getText(element.row_invoiced)) : 0,\r\n totalLinePrice: ((qty - refundQty) * price),\r\n }\r\n\r\n let promotionAmount = this.getText(element.discount_amount) ? Number(this.getText(element.discount_amount)) : 0;\r\n let appliedIDs = this.getText(element.applied_rule_ids) ? this.getText(element.applied_rule_ids):'';\r\n\r\n if (product && product.price != 0) {\r\n if(promotionAmount)\r\n {\r\n let trigger = {} as Trigger;\r\n trigger.itemLineId = product.itemLineId;\r\n trigger.quantity = product.quantity ? product.quantity : 0;\r\n \r\n let promotion = {\r\n promotionAmount:promotionAmount,\r\n promotionId:appliedIDs,\r\n itemLineId:product.itemLineId,\r\n promotionLinePrice: product.totalLinePrice - promotionAmount,\r\n trigger:trigger\r\n }\r\n\r\n this.webReturnObject.basket['linePromotion'].push(promotion);\r\n }\r\n\r\n this.webReturnObject.basket['products'].push(product);\r\n }\r\n\r\n });\r\n } else {\r\n let qty = (this.document.items && this.document.items.item && this.document.items.item.qty_ordered) ? Number(this.getText(this.document.items.item.qty_ordered)) : 0;\r\n let refundQty = (this.document.items && this.document.items.item && this.document.items.item.qty_refunded) ? Number(this.getText(this.document.items.item.qty_refunded)) : 0;\r\n let price = (this.document.items && this.document.items.item && this.document.items.item.price_incl_tax) ? Number(this.getText(this.document.items.item.price_incl_tax)) : 0;\r\n product = {\r\n description: (this.document.items && this.document.items.item && this.document.items.item.name) ? this.getText(this.document.items.item.name) : '',\r\n SKU: (this.document.items && this.document.items.item && this.document.items.item.sku) ? this.getText(this.document.items.item.sku) : '',\r\n quantity: (this.document.items && this.document.items.item && this.document.items.item.qty_ordered) ? Number(this.getText(this.document.items.item.qty_ordered)) : 0,\r\n refundedQuantity: (this.document.items && this.document.items.item && this.document.items.item.qty_refunded) ? Number(this.getText(this.document.items.item.qty_refunded)) : 0,\r\n // price: (this.document.items && this.document.items.item && this.document.items.item.original_price) ? Number(this.getText(this.document.items.item.original_price)) : 0,\r\n price: price,\r\n\r\n itemLineId: \"1\",\r\n // totalLinePrice: (this.document.items && this.document.items.item && this.document.items.item.row_invoiced) ? Number(this.getText(this.document.items.item.row_invoiced)) : 0,\r\n totalLinePrice: ((qty - refundQty) * price),\r\n }\r\n let promotionAmount = this.getText(this.document.items.item.discount_amount) ? Number(this.getText(this.document.items.item.discount_amount)) : 0;\r\n let appliedIDs = this.getText(this.document.items.item.applied_rule_ids) ? this.getText(this.document.items.item.applied_rule_ids):'';\r\n\r\n if (product && product.price != 0) {\r\n if(promotionAmount)\r\n {\r\n let trigger = {} as Trigger;\r\n trigger.itemLineId = product.itemLineId;\r\n trigger.quantity = product.quantity ? product.quantity : 0;\r\n \r\n let promotion = {\r\n promotionAmount:promotionAmount,\r\n promotionId:appliedIDs,\r\n itemLineId:product.itemLineId,\r\n promotionLinePrice: product.totalLinePrice - promotionAmount,\r\n trigger:trigger\r\n }\r\n\r\n this.webReturnObject.basket['linePromotion'].push(promotion);\r\n }\r\n\r\n this.webReturnObject.basket['products'].push(product);\r\n }\r\n }\r\n\r\n let couponCode = this.getText(this.document.coupon_code) ? this.getText(this.document.coupon_code) : 0;\r\n let appliedIDs = this.getText(this.document.applied_rule_ids) ? this.getText(this.document.applied_rule_ids):'';\r\n let discountDescription = this.getText(this.document.discount_description) ? this.getText(this.document.discount_description):'';\r\n\r\n let couponTriggerPromotions = [] as Trigger[];\r\n if(couponCode && appliedIDs)\r\n {\r\n let transactionPromotion = {} as TransactionPromotion;\r\n\r\n if(this.webReturnObject.basket['linePromotion'] && this.webReturnObject.basket['linePromotion'].length > 0)\r\n {\r\n this.webReturnObject.basket['linePromotion'].forEach(\r\n (promotion)=>{\r\n if(promotion.promotionId === appliedIDs)\r\n {\r\n let trigger = {} as Trigger;\r\n trigger.itemLineId = promotion.itemLineId;\r\n trigger.quantity = promotion.trigger.quantity;\r\n trigger.totalQuantity = promotion.trigger.quantity;\r\n trigger.promotionAmount = promotion.promotionAmount;\r\n trigger.refundedReason = couponCode;\r\n trigger.refundedReasonDescription = discountDescription;\r\n trigger.promotionId = promotion.promotionId;\r\n couponTriggerPromotions.push(trigger);\r\n this.webReturnObject.basket['linePromotion'] = this.webReturnObject.basket['linePromotion'].filter((x)=>x.itemLineId !== promotion.itemLineId);\r\n }\r\n }\r\n );\r\n }\r\n\r\n if (couponTriggerPromotions.length > 0) {\r\n transactionPromotion.displayText = couponTriggerPromotions[0].refundedReasonDescription;\r\n transactionPromotion.name = couponTriggerPromotions[0].refundedReason;\r\n transactionPromotion.promotionAmount = -(couponTriggerPromotions.reduce((n, { promotionAmount }) => n + promotionAmount, 0));\r\n transactionPromotion.promotionId = couponTriggerPromotions[0].promotionId;\r\n transactionPromotion.promotionInfo = couponTriggerPromotions[0].refundedReasonDescription;\r\n transactionPromotion.couponCode = couponCode;\r\n transactionPromotion.itemLineIds = [];\r\n transactionPromotion.type = PROMOTION_TYPE.COUPON;\r\n transactionPromotion.subLevelType = PROMOTION_LEVEL.LINE;\r\n transactionPromotion.trigger = couponTriggerPromotions;\r\n }\r\n \r\n AppLoggerService.logDebug(this.className, \"WebReturnMapper\", \"update LinePromotion With Coupon\",transactionPromotion);\r\n \r\n if (!this.webReturnObject.basket.transactionPromotion ) {\r\n this.webReturnObject.basket.transactionPromotion = [];\r\n }\r\n \r\n if (transactionPromotion && transactionPromotion.promotionId ) {\r\n this.webReturnObject.basket.transactionPromotion.push(transactionPromotion);\r\n }\r\n }\r\n\r\n this.updateTransactionPromotionPrtionCalc();\r\n }\r\n return this;\r\n }\r\n\r\n public validateProductItemDiscount(product: TProduct) {\r\n if (!product.itemDiscounts) {\r\n product.itemDiscounts = {\r\n trnDiscountsPortion: 0,\r\n trnPromotionsPortion: 0,\r\n refundPortion: 0,\r\n };\r\n }\r\n return product;\r\n }\r\n\r\n transactionPromotionProductPortionCalc(\r\n txDoc: TransactionDocument,\r\n promotion: TransactionPromotion\r\n ) {\r\n AppLoggerService.logDebug(this.className, \"transactionPromotionProductPortionCalc\",\r\n `trnsactionPromotion: ${JSON.stringify(\r\n promotion\r\n )}`\r\n );\r\n if (promotion.type === PROMOTION_TYPE.COUPON && promotion.subLevelType === PROMOTION_LEVEL.LINE) {\r\n txDoc.basket.products.forEach((product) => {\r\n product = this.validateProductItemDiscount(product);\r\n\r\n if (promotion.trigger && promotion.trigger.length > 0) {\r\n promotion.trigger.forEach((t) => {\r\n if (t.itemLineId === product.itemLineId.toString()) {\r\n product.itemDiscounts.trnPromotionsPortion += t.promotionAmount;\r\n }\r\n });\r\n }\r\n });\r\n }\r\n else {\r\n txDoc.basket.products.forEach((product) => {\r\n product = this.validateProductItemDiscount(product);\r\n if (promotion.itemLineIds.includes(+product.itemLineId)) {\r\n let discountAmount = 0;\r\n if (this.document.items.item instanceof Array) {\r\n const productItem = this.document.items.item.find(productItem => productItem.sku === product.SKU);\r\n discountAmount = productItem.discount_amount ? +productItem.discount_amount : 0;\r\n } else {\r\n discountAmount = this.document.items.item.sku === product.SKU && this.document.items.item.discount_amount ?\r\n +this.document.items.item.discount_amount : 0;\r\n }\r\n const transactionPromotionPortion = discountAmount;\r\n product.itemDiscounts.trnPromotionsPortion += this.numberUtilService.trimTo2Decimal2(transactionPromotionPortion);\r\n }\r\n });\r\n }\r\n return txDoc;\r\n }\r\n\r\n updateTransactionPromotionPrtionCalc() {\r\n try {\r\n if (this.webReturnObject.basket.transactionPromotion && this.webReturnObject.basket.transactionPromotion.length > 0) {\r\n this.webReturnObject.basket.transactionPromotion.forEach(tr => {\r\n this.transactionPromotionProductPortionCalc(this.webReturnObject, tr)\r\n })\r\n }\r\n } catch(error) {\r\n AppLoggerService.logError(this.className, \"updateTransactionPromotionPrtionCalc\", \"updateTransactionPromotionPrtionCalc => failed:\", error);\r\n }\r\n }\r\n\r\n deviceId(deviceId) {\r\n this.webReturnObject.deviceId = deviceId;\r\n return this;\r\n }\r\n\r\n terminalId(terminalId) {\r\n this.webReturnObject.terminalId = terminalId;\r\n return this;\r\n }\r\n\r\n orgCode(orgCode) {\r\n this.webReturnObject.orgCode = orgCode;\r\n return this;\r\n }\r\n\r\n storeId(storeId) {\r\n this.webReturnObject.storeId = storeId;\r\n return this;\r\n }\r\n\r\n storeNodeId(storeNodeId: string) {\r\n this.webReturnObject.storeNodeId = storeNodeId;\r\n return this;\r\n }\r\n\r\n storeNodeStructure(storeNodeStructure: string) {\r\n this.webReturnObject.storeNodeStructure = storeNodeStructure;\r\n return this;\r\n }\r\n\r\n docId(docId) {\r\n this.webReturnObject.id = docId;\r\n return this;\r\n }\r\n\r\n updateUserID(userID: string) {\r\n this.webReturnObject.userId = userID;\r\n return this;\r\n }\r\n\r\n updateUserName(name) {\r\n this.webReturnObject.userName = name;\r\n return this;\r\n }\r\n\r\n build() {\r\n return this.webReturnObject;\r\n }\r\n\r\n getText(obj) {\r\n if (obj && obj.text) {\r\n return obj.text;\r\n } else {\r\n return obj;\r\n }\r\n }\r\n\r\n getUTCDateTime(date) {\r\n if (date) {\r\n return new Date(date).toISOString();\r\n }\r\n }\r\n\r\n isInStoreOrder() {\r\n AppLoggerService.logDebug(this.className, \"isInStoreOrder\", \"isInStoreOrder mapping started...\"); \r\n if(this.document.payment && this.document.payment.method && this.document.payment.method === 'pos_order'){\r\n this.webReturnObject.isInStoreOrder = true;\r\n }\r\n AppLoggerService.logDebug(this.className, \"isInStoreOrder\", \"isInStoreOrder mapping ended...\");\r\n return this;\r\n }\r\n}\r\n","import { CurrencyPipe } from \"@angular/common\";\r\nimport { Address, BasketSummary, BasketSummaryDetails, CurrentTransactionDetails, Customer, DELIVERY_METHODS, PROMOTION_LEVEL, PROMOTION_TYPE, INITIATING_MODULE, LinePromotions, OrderDetails, PROVIDERS, ShipmentDetails, TRANSACTION_TYPE, TransactionDocument, TransactionInfo, TransactionPromotion, Trigger, externalTransactionDetails, TProduct, RefundProductChange } from \"./mapper-library.model\";\r\nimport { NumberUtilService } from \"./number-util.service\";\r\nimport {AppLoggerService} from '@pmcretail/common-services/common/app-logger.service';\r\n\r\nexport class WebReturnSalesforceMapperBuilderClass {\r\n\r\n className = \"WebReturnSalesforceMapperBuilderClass\";\r\n private orderDetails: OrderDetails;\r\n private webReturnObject: TransactionDocument = {\r\n id: '',\r\n orgCode: \"\",\r\n storeId: \"\",\r\n storeNodeId: \"\",\r\n storeNodeStructure: \"\",\r\n deviceId: \"\",\r\n terminalId: \"\",\r\n initiatingModule: \"\",\r\n export: false,\r\n isInStoreOrder: false,\r\n basket: {},\r\n basketSummary: {},\r\n baseCurrency: \"\",\r\n customer: {\r\n id: '',\r\n email: '',\r\n firstName: '',\r\n lastName: '',\r\n billingAddress: [],\r\n shippingAddress: [],\r\n shipmentDetails: [],\r\n telephone: '',\r\n postCode: '',\r\n noCustomerSelected: false\r\n },\r\n currentTransactionDetails: {} as CurrentTransactionDetails\r\n }\r\n numberUtilService: any;\r\n\r\n constructor(orderDetails: OrderDetails,\r\n private currencyPipe?: CurrencyPipe\r\n ) {\r\n if (orderDetails) {\r\n this.orderDetails = orderDetails;\r\n }\r\n this.numberUtilService = new NumberUtilService(currencyPipe);\r\n }\r\n\r\n webReturnCommonMapper() {\r\n AppLoggerService.logDebug(this.className, \"webReturnCommonMapper\", \"Mapper library: WebReturnSalesforceMapperBuilderClass: webReturnCommonMapper started...\");\r\n this.webReturnObject['type'] = TRANSACTION_TYPE.WEB_RETURNS;\r\n this.webReturnObject['datetime'] = this.getUTCDateTime(this.orderDetails.last_modified);\r\n this.webReturnObject.baseCurrency = this.orderDetails.currency;\r\n this.webReturnObject.subsidiaryId = '1';\r\n this.webReturnObject.export = true;\r\n this.webReturnObject.initiatingModule = INITIATING_MODULE.EBASKET;\r\n this.webReturnObject.createdAt = this.getUTCDateTime(this.orderDetails.creation_date);\r\n this.webReturnObject.updatedAt = this.getUTCDateTime(this.orderDetails.last_modified);\r\n this.webReturnObject.transCompletedAt = this.getUTCDateTime(this.orderDetails.last_modified);\r\n this.webReturnObject['externalTransactionId'] = this.orderDetails.order_no;\r\n AppLoggerService.logDebug(this.className, \"webReturnCommonMapper\", \"webReturnCommonMapper ended...\");\r\n return this;\r\n }\r\n\r\n // export(status, details) {\r\n // AppLoggerService.logDebug(this.className, \"Mapper library: WebReturnSalesforceMapperBuilderClass: export mapping started...\");\r\n // AppLoggerService.logDebug(this.className, \"Mapper library: WebReturnSalesforceMapperBuilderClass: status:\", status);\r\n // AppLoggerService.logDebug(this.className, \"Mapper library: WebReturnSalesforceMapperBuilderClass: details:\", JSON.stringify(details));\r\n // if (status && details && details.providers && details.providers.length > 0) {\r\n // details.providers.forEach(\r\n // providerObj => {\r\n // if (providerObj.provider && providerObj.provider === PROVIDERS.SALESFORCE) {\r\n // this.webReturnObject.export = true;\r\n // } else {\r\n // this.webReturnObject.export = false;\r\n // }\r\n // }\r\n // );\r\n // } else {\r\n // this.webReturnObject.export = false;\r\n // }\r\n // AppLoggerService.logDebug(this.className, \"Mapper library: WebReturnSalesforceMapperBuilderClass: export mapping end...\")\r\n // return this;\r\n // }\r\n\r\n getDeliveryMethod() {\r\n if(this.orderDetails.shipments && this.orderDetails.shipments.length > 0) {\r\n const shipToStoreShipment = this.orderDetails.shipments.find(shipment => shipment.c_fromStoreId);\r\n if(shipToStoreShipment) return DELIVERY_METHODS.SHIP_TO_STORE;\r\n else return DELIVERY_METHODS.DELIVERY;\r\n } else {\r\n return '';\r\n }\r\n }\r\n\r\n product() {\r\n AppLoggerService.logDebug(this.className, \"product\", \"product mapping started...\");\r\n this.webReturnObject.basket['products'] = [];\r\n if (this.orderDetails.product_items && this.orderDetails.product_items.length > 0) {\r\n this.orderDetails.product_items.forEach(\r\n (product, index) => {\r\n const productObj = {\r\n description: product.item_text ? product.item_text : '',\r\n SKU: product.product_id ? product.product_id : '',\r\n quantity: product.quantity ? product.quantity : 0,\r\n refundedQuantity: 0,\r\n price: product.base_price ? product.base_price : 0,\r\n itemLineId: (index + 1).toString(),\r\n deliveryMethod: this.getDeliveryMethod().toString(),\r\n totalLinePrice: product.price ? product.price : 0\r\n }\r\n if (product && product.price != 0) {\r\n this.webReturnObject.basket['products'].push(productObj);\r\n }\r\n }\r\n );\r\n }\r\n AppLoggerService.logDebug(this.className, \"product\", \"product mapping ended...\");\r\n return this;\r\n }\r\n\r\n linePromotion() {\r\n AppLoggerService.logDebug(this.className, \"linePromotion\", \"linePromotion mapping started...\");\r\n this.webReturnObject.basket.linePromotion = [] as LinePromotions[];\r\n let linePromotionArray = [] as LinePromotions[];\r\n if (this.orderDetails.product_items && this.orderDetails.product_items.length > 0) {\r\n this.orderDetails.product_items.forEach(\r\n (product, index) => {\r\n product.item_id = (index + 1).toString();\r\n if (product.price_adjustments && product.price_adjustments.length > 0) {\r\n product.price_adjustments.forEach(\r\n (promotion) => {\r\n if (!promotion.coupon_code) {\r\n let linePromotionObj = {} as LinePromotions;\r\n let trigger = {} as Trigger;\r\n trigger.itemLineId = product.item_id;\r\n trigger.quantity = product.quantity ? product.quantity : 0;\r\n linePromotionObj.trigger = [] as Trigger[];\r\n linePromotionObj.trigger.push(trigger);\r\n\r\n linePromotionObj.itemLineId = index + 1;\r\n linePromotionObj.promotionId = promotion.promotion_id ? promotion.promotion_id : '';\r\n linePromotionObj.displayText = promotion.item_text ? promotion.item_text : '';\r\n linePromotionObj.promotionType = promotion.applied_discount && promotion.applied_discount.type ? promotion.applied_discount.type : '';\r\n linePromotionObj.promotionAmount = promotion.price ? Math.abs(promotion.price) : 0;\r\n linePromotionObj.name = promotion.coupon_code ? promotion.coupon_code : (promotion.item_text ? promotion.item_text :'');\r\n linePromotionObj.promotionInfo = promotion.item_text ? promotion.item_text : '';\r\n linePromotionObj.promotionLinePrice = product.price - Math.abs(promotion.price);\r\n linePromotionArray.push(linePromotionObj);\r\n }\r\n }\r\n );\r\n }\r\n }\r\n );\r\n }\r\n this.webReturnObject.basket.linePromotion = linePromotionArray;\r\n AppLoggerService.logDebug(this.className, \"linePromotion\", \"linePromotion mapping ended...\");\r\n return this;\r\n }\r\n\r\n transactionPromotion() {\r\n AppLoggerService.logDebug(this.className, \"transactionPromotion\", \"transactionPromotion mapping started...\");\r\n\r\n let transactionPromotionArray = this.getTransactionPromotions(this.orderDetails);\r\n\r\n this.webReturnObject.basket.transactionPromotion = transactionPromotionArray;\r\n AppLoggerService.logDebug(this.className, \"transactionPromotion\", \"transactionPromotion mapping ended...\");\r\n return this;\r\n }\r\n\r\n getTransactionPromotions(basket): TransactionPromotion[] {\r\n try {\r\n let transactionPromotionArray = [] as TransactionPromotion[];\r\n if (basket.order_price_adjustments && basket.order_price_adjustments.length > 0) {\r\n basket.order_price_adjustments.forEach(\r\n (transactionPromotion) => {\r\n let transactionPromotionObj = {} as TransactionPromotion;\r\n\r\n transactionPromotionObj.displayText = transactionPromotion.item_text ? transactionPromotion.item_text : '';\r\n transactionPromotionObj.name = transactionPromotion.coupon_code ? transactionPromotion.coupon_code : (transactionPromotion .item_text?transactionPromotion.item_text : '');\r\n transactionPromotionObj.promotionAmount = transactionPromotion.price ? Math.abs(transactionPromotion.price) : 0;\r\n transactionPromotionObj.promotionId = transactionPromotion.promotion_id ? transactionPromotion.promotion_id : '';\r\n transactionPromotionObj.promotionInfo = transactionPromotion.item_text ? transactionPromotion.item_text : '';\r\n transactionPromotionObj.promotionType = transactionPromotion.applied_discount && transactionPromotion.applied_discount.type ? transactionPromotion.applied_discount.type : '';\r\n transactionPromotionObj.itemLineIds = this.orderDetails.product_items.map((product, index) => index + 1);\r\n if (transactionPromotion.coupon_code) {\r\n transactionPromotionObj.type = PROMOTION_TYPE.COUPON;\r\n transactionPromotionObj.couponCode = transactionPromotion.coupon_code;\r\n transactionPromotionObj.subLevelType = PROMOTION_LEVEL.TRANSACTION;\r\n }\r\n transactionPromotionArray.push(transactionPromotionObj);\r\n }\r\n );\r\n }\r\n\r\n\r\n AppLoggerService.logDebug(this.className, \"getTransactionPromotions\", \"getTransactionPromotions : \", transactionPromotionArray);\r\n return transactionPromotionArray;\r\n } catch (error) {\r\n AppLoggerService.logError(this.className, \"getTransactionPromotions\", \"failed:\", error);\r\n throw new Error(error);\r\n }\r\n }\r\n\r\n updateLinePromotionWithCoupon() {\r\n try {\r\n\r\n let transactionPromotion = {} as TransactionPromotion;\r\n let triggerPromotion = [] as Trigger[];\r\n if (this.orderDetails.product_items && this.orderDetails.product_items.length > 0) {\r\n this.orderDetails.product_items.forEach(\r\n (product, index) => {\r\n product.item_id = (index + 1).toString();\r\n\r\n if (product.price_adjustments && product.price_adjustments.length > 0) {\r\n product.price_adjustments.forEach(\r\n (promotion) => {\r\n if (promotion.coupon_code) {\r\n let trigger = {} as Trigger;\r\n trigger.itemLineId = product.item_id;\r\n trigger.quantity = product.quantity ? product.quantity : 0;\r\n trigger.totalQuantity = product.quantity ? product.quantity : 0;\r\n trigger.promotionAmount = promotion.price ? Math.abs(promotion.price) : 0;\r\n trigger.refundedReason = promotion.coupon_code ? promotion.coupon_code : '';\r\n trigger.refundedReasonDescription = promotion.item_text ? promotion.item_text : '';\r\n trigger.promotionId = promotion.promotion_id;\r\n triggerPromotion.push(trigger);\r\n }\r\n }\r\n );\r\n }\r\n }\r\n );\r\n }\r\n\r\n if (triggerPromotion.length > 0) {\r\n transactionPromotion.displayText = triggerPromotion[0].refundedReasonDescription;\r\n transactionPromotion.name = triggerPromotion[0].refundedReason;\r\n transactionPromotion.promotionAmount = -(triggerPromotion.reduce((n, { promotionAmount }) => n + promotionAmount, 0));\r\n transactionPromotion.promotionId = triggerPromotion[0].promotionId;\r\n transactionPromotion.promotionInfo = triggerPromotion[0].refundedReasonDescription;\r\n transactionPromotion.couponCode = triggerPromotion[0].refundedReason;\r\n transactionPromotion.itemLineIds = [];\r\n transactionPromotion.type = PROMOTION_TYPE.COUPON;\r\n transactionPromotion.subLevelType = PROMOTION_LEVEL.LINE;\r\n transactionPromotion.trigger = triggerPromotion;\r\n }\r\n AppLoggerService.logDebug(this.className, \"updateLinePromotionWithCoupon\", \"transactionPromotion\", transactionPromotion);\r\n\r\n if (!this.webReturnObject.basket.transactionPromotion ) {\r\n this.webReturnObject.basket.transactionPromotion = [];\r\n }\r\n\r\n if (transactionPromotion && transactionPromotion.promotionId ) {\r\n this.webReturnObject.basket.transactionPromotion.push(transactionPromotion);\r\n }\r\n\r\n return this;\r\n } catch (error) {\r\n AppLoggerService.logError(this.className, \"updateLinePromotionWithCoupon\", \"linePromotion mapping=> failed:\", error);\r\n throw new Error(error);\r\n }\r\n }\r\n\r\n updateTransactionPromotionPrtionCalc() {\r\n if (this.webReturnObject.basket.transactionPromotion && this.webReturnObject.basket.transactionPromotion.length > 0) {\r\n\r\n this.webReturnObject.basket.transactionPromotion.forEach(tr => {\r\n this.transactionPromotionProductPortionCalc(this.webReturnObject , tr)\r\n })\r\n }\r\n return this;\r\n }\r\n\r\n transactionPromotionProductPortionCalc(\r\n txDoc: TransactionDocument,\r\n promotion: TransactionPromotion\r\n ) {\r\n AppLoggerService.logDebug(this.className, \"transactionPromotionProductPortionCalc\",\r\n `trnsactionPromotion: ${JSON.stringify(\r\n promotion\r\n )}`\r\n );\r\n if (promotion.type === PROMOTION_TYPE.COUPON && promotion.subLevelType === PROMOTION_LEVEL.LINE) {\r\n txDoc.basket.products.forEach((product) => {\r\n product = this.validateProductItemDiscount(product);\r\n\r\n if (promotion.trigger && promotion.trigger.length > 0) {\r\n promotion.trigger.forEach((t) => {\r\n if (t.itemLineId === product.itemLineId.toString()) {\r\n product.itemDiscounts.trnPromotionsPortion += t.promotionAmount;\r\n }\r\n });\r\n }\r\n });\r\n }\r\n else {\r\n txDoc.basket.products.forEach((product) => {\r\n product = this.validateProductItemDiscount(product);\r\n if (promotion.itemLineIds.includes(+product.itemLineId)) {\r\n const productItem = this.orderDetails.product_items.find(productItem => productItem.product_id === product.SKU);\r\n const transactionPromotionPortion = (productItem && productItem.price_after_item_discount && productItem.price_after_order_discount) ?\r\n (productItem.price_after_item_discount - productItem.price_after_order_discount) : 0;\r\n product.itemDiscounts.trnPromotionsPortion += this.numberUtilService.trimTo2Decimal2(transactionPromotionPortion);\r\n }\r\n });\r\n }\r\n return txDoc;\r\n }\r\n\r\n \r\n public validateProductItemDiscount(product: TProduct) {\r\n if (!product.itemDiscounts) {\r\n product.itemDiscounts = {\r\n trnDiscountsPortion: 0,\r\n trnPromotionsPortion: 0,\r\n refundPortion: 0,\r\n };\r\n }\r\n return product;\r\n }\r\n \r\n \r\n customer() {\r\n AppLoggerService.logDebug(this.className, \"customer\", \"customer mapping started...\");\r\n let customerObj = {} as Customer;\r\n customerObj.email = this.orderDetails.customer_info && this.orderDetails.customer_info.email ? this.orderDetails.customer_info.email : '';\r\n customerObj.firstName = this.orderDetails.billing_address && this.orderDetails.billing_address.first_name ? this.orderDetails.billing_address.first_name : '';\r\n customerObj.lastName = this.orderDetails.billing_address && this.orderDetails.billing_address.last_name ? this.orderDetails.billing_address.last_name : '';\r\n\r\n let shippingAddress = [] as Address[];\r\n this.orderDetails.shipments.forEach(\r\n shipment => {\r\n let shippingAddressObj = {} as Address;\r\n shippingAddressObj.id = shipment.shipping_address && shipment.shipping_address.id ? shipment.shipping_address.id : '';\r\n shippingAddressObj.countryCode = shipment.shipping_address && shipment.shipping_address.country_code ? shipment.shipping_address.country_code : '';\r\n shippingAddressObj.address1 = shipment.shipping_address && shipment.shipping_address.address1 ? shipment.shipping_address.address1 : '';\r\n shippingAddressObj.city = shipment.shipping_address && shipment.shipping_address.city ? shipment.shipping_address.city : '';\r\n shippingAddressObj.country = '';\r\n shippingAddressObj.postCode = shipment.shipping_address && shipment.shipping_address.postal_code ? shipment.shipping_address.postal_code : '';\r\n shippingAddress.push(shippingAddressObj);\r\n }\r\n )\r\n customerObj.shippingAddress = shippingAddress;\r\n\r\n let billingAddress = [] as Address[];\r\n let billingAddressObj = {} as Address;\r\n billingAddressObj.id = this.orderDetails.billing_address && this.orderDetails.billing_address.id ? this.orderDetails.billing_address.id : '';\r\n billingAddressObj.countryCode = this.orderDetails.billing_address && this.orderDetails.billing_address.country_code ? this.orderDetails.billing_address.country_code : '';\r\n billingAddressObj.address1 = this.orderDetails.billing_address && this.orderDetails.billing_address.address1 ? this.orderDetails.billing_address.address1 : '';\r\n billingAddressObj.city = this.orderDetails.billing_address && this.orderDetails.billing_address.city ? this.orderDetails.billing_address.city : '';\r\n billingAddressObj.country = '';\r\n billingAddressObj.postCode = '';\r\n billingAddress.push(billingAddressObj);\r\n customerObj.billingAddress = billingAddress;\r\n\r\n let shipmentDetails = [] as ShipmentDetails[];\r\n this.orderDetails.shipments.forEach(\r\n shipment => {\r\n let shipmentDetailsObj = {} as ShipmentDetails;\r\n shipmentDetailsObj.id = shipment.shipment_id ? shipment.shipment_id : '';\r\n shipmentDetailsObj.deliveryGroup = shipment.shipment_id ? shipment.shipment_id : '';\r\n shipmentDetails.push(shipmentDetailsObj);\r\n }\r\n );\r\n customerObj.shipmentDetails = shipmentDetails;\r\n\r\n this.webReturnObject.customer = customerObj;\r\n AppLoggerService.logDebug(this.className, \"customer\", \"customer mapping ended...\");\r\n return this;\r\n }\r\n\r\n isInStoreOrder() {\r\n AppLoggerService.logDebug(this.className, \"isInStoreOrder\", \"isInStoreOrder mapping started...\");\r\n if(this.orderDetails.c_isInStoreOrder) {\r\n this.webReturnObject.isInStoreOrder = true;\r\n }\r\n AppLoggerService.logDebug(this.className, \"isInStoreOrder\", \"isInStoreOrder mapping ended...\");\r\n return this;\r\n }\r\n\r\n externalTransactionDetails() {\r\n AppLoggerService.logDebug(this.className, \"externalTransactionDetails\", \"externalTransactionDetails mapping started...\");\r\n let externalTransactionDetails = [] as externalTransactionDetails[];\r\n if (this.orderDetails.shipments && this.orderDetails.shipments.length > 0) {\r\n this.orderDetails.shipments.forEach(\r\n shipment => {\r\n let externalTransactionDetailsObj = {} as externalTransactionDetails;\r\n let transactionInfo = {} as TransactionInfo;\r\n externalTransactionDetailsObj.uniqueId = this.orderDetails.order_no ? this.orderDetails.order_no : '';\r\n externalTransactionDetailsObj.providerType = PROVIDERS.SALESFORCE;\r\n transactionInfo.shippingId = shipment.shipping_method && shipment.shipping_method.id ? shipment.shipping_method.id : '';\r\n transactionInfo.externalShippingId = shipment.shipment_id ? shipment.shipment_id : '';\r\n externalTransactionDetailsObj.details = transactionInfo;\r\n externalTransactionDetails.push(externalTransactionDetailsObj);\r\n }\r\n );\r\n }\r\n this.webReturnObject.externalTransactionDetails = externalTransactionDetails;\r\n AppLoggerService.logDebug(this.className, \"externalTransactionDetails\", \"externalTransactionDetails mapping ended...\");\r\n return this;\r\n }\r\n\r\n basketSummary() {\r\n AppLoggerService.logDebug(this.className, \"basketSummary\", \"basketSummary mapping started...\");\r\n let basketSummary = {} as BasketSummary;\r\n let basketSummaryWebOrder = {} as BasketSummaryDetails;\r\n const linePromotionTotal = this.webReturnObject.basket.linePromotion.map(linePromotion => linePromotion.promotionAmount).reduce((accumulator, currentValue) => accumulator + currentValue, 0);\r\n const transactionPromotionTotal = this.webReturnObject.basket.transactionPromotion.map(transactionPromotion => transactionPromotion.promotionAmount).reduce((accumulator, currentValue) => accumulator + currentValue, 0);\r\n basketSummary.discountTotal = linePromotionTotal + transactionPromotionTotal;\r\n basketSummary.VATTotal = this.orderDetails.tax_total ? this.orderDetails.tax_total : 0;\r\n basketSummary.saleTotal = this.orderDetails.order_total ? this.orderDetails.order_total : 0;\r\n basketSummary.basketTotal = this.orderDetails.order_total ? this.orderDetails.order_total : 0;\r\n basketSummary.totalItems = this.orderDetails.product_items && this.orderDetails.product_items.length > 0 ? this.orderDetails.product_items.length : 0;\r\n basketSummary.shippingTotal = this.orderDetails.shipping_total ? this.orderDetails.shipping_total : 0;\r\n basketSummary.basketTotalWithShippingTotal = this.orderDetails.order_total ? this.orderDetails.order_total : 0;\r\n basketSummaryWebOrder.shippingTotal = this.orderDetails.shipping_total ? this.orderDetails.shipping_total : 0;\r\n basketSummaryWebOrder.basketTotalWithShippingTotal = this.orderDetails.order_total ? this.orderDetails.order_total : 0;\r\n basketSummary.webOrder = basketSummaryWebOrder;\r\n this.webReturnObject.basketSummary = basketSummary;\r\n AppLoggerService.logDebug(this.className, \"basketSummary\", \"basketSummary mapping ended...\");\r\n return this;\r\n }\r\n\r\n deviceId(deviceId) {\r\n this.webReturnObject.deviceId = deviceId;\r\n return this;\r\n }\r\n\r\n terminalId(terminalId) {\r\n this.webReturnObject.terminalId = terminalId;\r\n return this;\r\n }\r\n\r\n orgCode(orgCode) {\r\n this.webReturnObject.orgCode = orgCode;\r\n return this;\r\n }\r\n\r\n storeId(storeId) {\r\n this.webReturnObject.storeId = storeId;\r\n return this;\r\n }\r\n\r\n storeNodeId(storeNodeId: string) {\r\n this.webReturnObject.storeNodeId = storeNodeId;\r\n return this;\r\n }\r\n\r\n storeNodeStructure(storeNodeStructure: string) {\r\n this.webReturnObject.storeNodeStructure = storeNodeStructure;\r\n return this;\r\n }\r\n\r\n docId(docId) {\r\n this.webReturnObject.id = docId;\r\n return this;\r\n }\r\n\r\n updateUserID(userID: string) {\r\n this.webReturnObject.userId = userID;\r\n return this;\r\n }\r\n\r\n updateUserName(name) {\r\n this.webReturnObject.userName = name;\r\n return this;\r\n }\r\n\r\n build() {\r\n AppLoggerService.logDebug(this.className, \"build\", \"mapping done...\");\r\n return this.webReturnObject;\r\n }\r\n\r\n getUTCDateTime(date) {\r\n if (date) {\r\n return new Date(date).toISOString();\r\n }\r\n }\r\n}\r\n","import { CurrencyPipe } from \"@angular/common\";\r\nimport { Address, BasketSummary, BasketSummaryDetails, CurrentTransactionDetails, Customer, DELIVERY_METHODS, PROMOTION_LEVEL, PROMOTION_TYPE, INITIATING_MODULE, LinePromotions, OrderDetails, PROVIDERS, ShipmentDetails, TRANSACTION_TYPE, TransactionDocument, TransactionInfo, TransactionPromotion, Trigger, externalTransactionDetails, TProduct, RefundProductChange } from \"./mapper-library.model\";\r\nimport { NumberUtilService } from \"./number-util.service\";\r\nimport { AppLoggerService } from '@pmcretail/common-services/common/app-logger.service';\r\n\r\nexport class WebReturnMagentoV2RestMapperBuilderClass {\r\n\r\n className = \"WebReturnMagentoV2RestMapperBuilderClass\";\r\n private orderDetails: any;\r\n private webReturnObject: TransactionDocument = {\r\n id: '',\r\n orgCode: \"\",\r\n storeId: \"\",\r\n storeNodeId: \"\",\r\n storeNodeStructure: \"\",\r\n deviceId: \"\",\r\n terminalId: \"\",\r\n initiatingModule: \"\",\r\n export: false,\r\n isInStoreOrder: false,\r\n basket: {},\r\n basketSummary: {},\r\n baseCurrency: \"\",\r\n customer: {\r\n id: '',\r\n email: '',\r\n firstName: '',\r\n lastName: '',\r\n billingAddress: [],\r\n shippingAddress: [],\r\n shipmentDetails: [],\r\n telephone: '',\r\n postCode: '',\r\n noCustomerSelected: false\r\n },\r\n currentTransactionDetails: {} as CurrentTransactionDetails\r\n }\r\n numberUtilService: any;\r\n\r\n constructor(orderDetails: any,\r\n private currencyPipe?: CurrencyPipe\r\n ) {\r\n if (orderDetails) {\r\n this.orderDetails = orderDetails;\r\n }\r\n this.numberUtilService = new NumberUtilService(currencyPipe);\r\n }\r\n\r\n webReturnCommonMapper() {\r\n AppLoggerService.logDebug(this.className, \"webReturnCommonMapper\", \"webReturnCommonMapper started...\");\r\n // this.webReturnObject['type'] = TRANSACTION_TYPE.WEB_RETURNS; // TODO\r\n this.webReturnObject['datetime'] = this.getUTCDateTime(this.orderDetails.updated_at);\r\n this.webReturnObject.baseCurrency = this.orderDetails.order_currency_code;\r\n this.webReturnObject.subsidiaryId = '1';\r\n this.webReturnObject.export = true;\r\n this.webReturnObject.initiatingModule = INITIATING_MODULE.EBASKET;\r\n this.webReturnObject.createdAt = this.getUTCDateTime(this.orderDetails.created_at);\r\n this.webReturnObject.updatedAt = this.getUTCDateTime(this.orderDetails.updated_at);\r\n this.webReturnObject.transCompletedAt = this.getUTCDateTime(this.orderDetails.updated_at);\r\n this.webReturnObject['externalTransactionId'] = this.orderDetails.increment_id;\r\n AppLoggerService.logDebug(this.className, \"webReturnCommonMapper\", \"webReturnCommonMapper ended...\");\r\n return this;\r\n }\r\n\r\n // getDeliveryMethod() {\r\n // if(this.orderDetails.shipments && this.orderDetails.shipments.length > 0) {\r\n // const shipToStoreShipment = this.orderDetails.shipments.find(shipment => shipment.c_fromStoreId);\r\n // if(shipToStoreShipment) return DELIVERY_METHODS.SHIP_TO_STORE;\r\n // else return DELIVERY_METHODS.DELIVERY;\r\n // } else {\r\n // return '';\r\n // }\r\n // }\r\n\r\n product() {\r\n AppLoggerService.logDebug(this.className, \"product\", \"product mapping started...\");\r\n this.webReturnObject.basket['products'] = [];\r\n if (this.orderDetails.items && this.orderDetails.items.length > 0) {\r\n let index = 0;\r\n this.orderDetails.items.forEach(\r\n (product) => {\r\n if(product && product.base_price) {\r\n const productObj = {\r\n description: product.name ? product.name : '',\r\n SKU: product.sku ? product.sku : '',\r\n quantity: product.qty_ordered ? product.qty_ordered : 0,\r\n refundedQuantity: product.qty_refunded ? product.qty_refunded : 0,\r\n price: product.base_price ? product.base_price : 0,\r\n itemLineId: (index + 1).toString(),\r\n externalItemLineId: product.item_id ? product.item_id : (index + 1).toString(),\r\n // deliveryMethod: this.getDeliveryMethod().toString(),\r\n totalLinePrice: (product.qty_ordered && product.base_price) ? (product.qty_ordered * product.base_price) : 0\r\n }\r\n this.webReturnObject.basket['products'].push(productObj);\r\n index++;\r\n }\r\n }\r\n );\r\n }\r\n AppLoggerService.logDebug(this.className, \"product\", \"product mapping ended...\");\r\n return this;\r\n }\r\n\r\n linePromotion() {\r\n AppLoggerService.logDebug(this.className, \"linePromotion\", \"linePromotion mapping started...\");\r\n this.webReturnObject.basket['linePromotion'] = [] as LinePromotions[];\r\n if (this.orderDetails.items && this.orderDetails.items.length > 0) {\r\n let index = 0;\r\n this.orderDetails.items.forEach(\r\n (product) => {\r\n if (product && product.base_price) {\r\n let linePromotionObj = {} as LinePromotions;\r\n let trigger = {} as Trigger;\r\n trigger.itemLineId = (index + 1).toString();\r\n trigger.quantity = product.qty_ordered ? product.qty_ordered : 0;\r\n linePromotionObj.trigger = [] as Trigger[];\r\n linePromotionObj.trigger.push(trigger);\r\n\r\n linePromotionObj.itemLineId = index + 1;\r\n linePromotionObj.promotionId = '';\r\n linePromotionObj.displayText = this.orderDetails.coupon_code ? this.orderDetails.coupon_code : '';\r\n linePromotionObj.promotionType = '';\r\n linePromotionObj.promotionAmount = product.discount_amount ? product.discount_amount : 0;\r\n linePromotionObj.name = this.orderDetails.coupon_code ? this.orderDetails.coupon_code : '';;\r\n linePromotionObj.promotionInfo = '';\r\n linePromotionObj.promotionLinePrice = product.row_total ? product.row_total : 0;\r\n this.webReturnObject.basket.linePromotion.push(linePromotionObj);\r\n index++;\r\n }\r\n }\r\n );\r\n }\r\n\r\n AppLoggerService.logDebug(this.className, \"linePromotion\", \"linePromotion mapping ended...\");\r\n return this;\r\n }\r\n \r\n customer() {\r\n AppLoggerService.logDebug(this.className, \"customer\", \"customer mapping started...\");\r\n this.webReturnObject.customer.id = this.orderDetails.customer_id ? this.orderDetails.customer_id : '';\r\n this.webReturnObject.customer.email = this.orderDetails.customer_email ? this.orderDetails.customer_email : '';\r\n this.webReturnObject.customer.firstName = this.orderDetails.customer_firstname ? this.orderDetails.customer_firstname : '';\r\n this.webReturnObject.customer.lastName = this.orderDetails.customer_lastname ? this.orderDetails.customer_lastname : '';\r\n\r\n const isShipping = this.orderDetails.extension_attributes && \r\n Object.values(this.orderDetails.extension_attributes).length > 0 && this.orderDetails.extension_attributes.shipping_assignments &&\r\n this.orderDetails.extension_attributes.shipping_assignments.length > 0;\r\n \r\n if (isShipping) {\r\n this.orderDetails.extension_attributes.shipping_assignments.forEach(\r\n shipment => {\r\n if(shipment.shipping && Object.values(shipment.shipping) && shipment.shipping.address && Object.values(shipment.shipping.address)) {\r\n const address = shipment.shipping.address;\r\n let shippingAddressObj = {} as Address;\r\n shippingAddressObj.id = address.customer_address_id ? address.customer_address_id : '';\r\n shippingAddressObj.countryCode = address.country_id ? address.country_id : '';\r\n\r\n if (address.street && address.street.length > 0) {\r\n shippingAddressObj.address1 = address.street[0] ? address.street[0] : '';\r\n shippingAddressObj.address2 = address.street[1] ? address.street[1] : '';\r\n shippingAddressObj.address3 = address.street[2] ? address.street[2] : '';\r\n }\r\n\r\n shippingAddressObj.city = address.city ? address.city : '';\r\n shippingAddressObj.country = '';\r\n shippingAddressObj.postCode = address.postcode ? address.postcode : '';\r\n this.webReturnObject.customer.shippingAddress.push(shippingAddressObj);\r\n }\r\n }\r\n )\r\n }\r\n\r\n if (this.orderDetails.billing_address && Object.values(this.orderDetails.billing_address).length > 0) {\r\n const address = this.orderDetails.billing_address;\r\n let billingAddressObj = {} as Address;\r\n billingAddressObj.id = address.customer_address_id ? address.customer_address_id : '';\r\n billingAddressObj.countryCode = address.country_id ? address.country_id : '';\r\n\r\n if (address.street && address.street.length > 0) {\r\n billingAddressObj.address1 = address.street[0] ? address.street[0] : '';\r\n billingAddressObj.address2 = address.street[1] ? address.street[1] : '';\r\n billingAddressObj.address3 = address.street[2] ? address.street[2] : '';\r\n }\r\n\r\n billingAddressObj.city = address.city ? address.city : '';\r\n billingAddressObj.country = '';\r\n billingAddressObj.postCode = address.postcode ? address.postcode : '';\r\n this.webReturnObject.customer.shippingAddress.push(billingAddressObj);\r\n }\r\n\r\n // let shipmentDetails = [] as ShipmentDetails[];\r\n // this.orderDetails.shipments.forEach(\r\n // shipment => {\r\n // let shipmentDetailsObj = {} as ShipmentDetails;\r\n // shipmentDetailsObj.id = shipment.shipment_id ? shipment.shipment_id : '';\r\n // shipmentDetailsObj.deliveryGroup = shipment.shipment_id ? shipment.shipment_id : '';\r\n // shipmentDetails.push(shipmentDetailsObj);\r\n // }\r\n // );\r\n // customerObj.shipmentDetails = shipmentDetails;\r\n\r\n // this.webReturnObject.customer = customerObj;\r\n AppLoggerService.logDebug(this.className, \"customer\", \"customer mapping ended...\");\r\n return this;\r\n }\r\n\r\n isInStoreOrder() {\r\n AppLoggerService.logDebug(this.className, \"isInStoreOrder\", \"isInStoreOrder mapping started...\");\r\n this.webReturnObject.isInStoreOrder = false;\r\n AppLoggerService.logDebug(this.className, \"isInStoreOrder\", \"isInStoreOrder mapping ended...\");\r\n return this;\r\n }\r\n\r\n externalTransactionDetails() {\r\n AppLoggerService.logDebug(this.className, \"externalTransactionDetails\", \"externalTransactionDetails mapping started...\");\r\n let externalTransactionDetails = [] as externalTransactionDetails[];\r\n let externalTransactionDetailsObj = {} as externalTransactionDetails;\r\n let transactionInfo = {} as TransactionInfo;\r\n externalTransactionDetailsObj.uniqueId = this.orderDetails.increment_id ? this.orderDetails.increment_id : '';\r\n externalTransactionDetailsObj.providerType = PROVIDERS.MAGENTO;\r\n\r\n externalTransactionDetails.push(externalTransactionDetailsObj);\r\n \r\n this.webReturnObject.externalTransactionDetails = externalTransactionDetails;\r\n AppLoggerService.logDebug(this.className, \"externalTransactionDetails\", \"externalTransactionDetails mapping ended...\");\r\n return this;\r\n }\r\n\r\n basketSummary() {\r\n AppLoggerService.logDebug(this.className, \"basketSummary\", \"basketSummary mapping started...\");\r\n let basketSummary = {} as BasketSummary;\r\n let basketSummaryWebOrder = {} as BasketSummaryDetails;\r\n const linePromotionTotal = this.webReturnObject.basket.linePromotion.map(linePromotion => linePromotion.promotionAmount).reduce((accumulator, currentValue) => accumulator + currentValue, 0);\r\n const transactionPromotionTotal = 0;\r\n basketSummary.discountTotal = linePromotionTotal + transactionPromotionTotal;\r\n basketSummary.VATTotal = this.orderDetails.tax_amount ? this.orderDetails.tax_amount : 0;\r\n basketSummary.saleTotal = this.orderDetails.subtotal ? this.orderDetails.subtotal : 0;\r\n basketSummary.basketTotal = (this.orderDetails.subtotal && this.orderDetails.total_online_refunded) ? (this.orderDetails.subtotal - this.orderDetails.total_online_refunded) : 0;\r\n basketSummary.totalItems = this.orderDetails.total_qty_ordered ? this.orderDetails.total_qty_ordered.length : 0;\r\n basketSummary.shippingTotal = this.orderDetails.shipping_incl_tax ? this.orderDetails.shipping_incl_tax : 0;\r\n basketSummary.basketTotalWithShippingTotal = this.orderDetails.total_invoiced ? this.orderDetails.total_invoiced : 0;\r\n basketSummaryWebOrder.shippingTotal = this.orderDetails.shipping_incl_tax ? this.orderDetails.shipping_incl_tax : 0;\r\n basketSummaryWebOrder.basketTotalWithShippingTotal = this.orderDetails.total_invoiced ? this.orderDetails.total_invoiced : 0;\r\n basketSummary.webOrder = basketSummaryWebOrder;\r\n this.webReturnObject.basketSummary = basketSummary;\r\n AppLoggerService.logDebug(this.className, \"basketSummary\", \"basketSummary mapping ended...\");\r\n return this;\r\n }\r\n\r\n deviceId(deviceId) {\r\n this.webReturnObject.deviceId = deviceId;\r\n return this;\r\n }\r\n\r\n terminalId(terminalId) {\r\n this.webReturnObject.terminalId = terminalId;\r\n return this;\r\n }\r\n\r\n orgCode(orgCode) {\r\n this.webReturnObject.orgCode = orgCode;\r\n return this;\r\n }\r\n\r\n storeId() {\r\n this.webReturnObject.storeId = this.orderDetails.store_id;\r\n return this;\r\n }\r\n\r\n storeNodeId(storeNodeId: string) {\r\n this.webReturnObject.storeNodeId = storeNodeId;\r\n return this;\r\n }\r\n\r\n storeNodeStructure(storeNodeStructure: string) {\r\n this.webReturnObject.storeNodeStructure = storeNodeStructure;\r\n return this;\r\n }\r\n\r\n docId(docId) {\r\n this.webReturnObject.id = docId;\r\n return this;\r\n }\r\n\r\n updateUserID(userID: string) {\r\n this.webReturnObject.userId = userID;\r\n return this;\r\n }\r\n\r\n updateUserName(name) {\r\n this.webReturnObject.userName = name;\r\n return this;\r\n }\r\n\r\n build() {\r\n AppLoggerService.logDebug(this.className, \"build\", \"mapping done...\");\r\n return this.webReturnObject;\r\n }\r\n\r\n getUTCDateTime(date) {\r\n if (date) {\r\n return new Date(date).toISOString();\r\n }\r\n }\r\n}\r\n","/*\r\n * Public API Surface of mapper-library\r\n */\r\n\r\nexport * from './lib/mapper-library.component';\r\nexport * from './lib/mapper-library.module';\r\nexport * from './lib/RJ-mapper.class';\r\nexport * from './lib/WebReturn-mapper.class';\r\nexport * from './lib/WebReturnSalesforceMapper.class';\r\nexport * from './lib/WebReturnMagentoV2Rest.class';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i0","Component","NgModule","BehaviorSubject","AppLoggerService","i1","Injectable"],"mappings":"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"}
|