{"version":3,"file":"static/js/49b7c7c376b572acbd72.bundle.js","mappings":"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","sources":["webpack://Msdyn365.Commerce.Online/../../src/Entities/CommerceModels.g.ts?1e76"],"sourcesContent":["\n    import * as Entities from './CommerceTypes.g';\n    import { jsonLightReadStringPropertyValue } from '../externals';\n\n    const entityDictionary = {};\n    \n      /**\n      * Category entity class.\n      */\n      export class CategoryClass implements Entities.Category {\n      public RecordId: number;\n      public OfflineImage: string;\n      public Name: string;\n      public ParentCategory: number;\n      public DisplayOrder: number;\n      public LocalizedDescription: string;\n      public Images: Entities.MediaLocation[];\n      public NameTranslations: Entities.TextValueTranslation[];\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.RecordId = \n                (odataObject.RecordId != null) ? parseInt(odataObject.RecordId, 10) : undefined;\n              \n            this.OfflineImage = \n                odataObject.OfflineImage;\n              \n            this.Name = \n                odataObject.Name;\n              \n            this.ParentCategory = \n                (odataObject.ParentCategory != null) ? parseInt(odataObject.ParentCategory, 10) : undefined;\n              \n            this.DisplayOrder = \n                (odataObject.DisplayOrder != null) ? parseFloat(odataObject.DisplayOrder) : undefined;\n              \n            this.LocalizedDescription = \n                odataObject.LocalizedDescription;\n              \n        this.Images = undefined;\n        if (odataObject.Images) {\n        this.Images = [];\n        for (var i = 0; i < odataObject.Images.length; i++) {\n        if (odataObject.Images[i] != null) {\n        if (odataObject.Images[i]['@odata.type'] != null) {\n          var className: string = odataObject.Images[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.Images[i] = new entityDictionary[className](odataObject.Images[i])\n          }\n        } else {\n            this.Images[i] = new MediaLocationClass(odataObject.Images[i]);\n        }\n                    } else {\n        this.Images[i] = undefined;\n        }\n        }\n        }\n      \n        this.NameTranslations = undefined;\n        if (odataObject.NameTranslations) {\n        this.NameTranslations = [];\n        for (var i = 0; i < odataObject.NameTranslations.length; i++) {\n        if (odataObject.NameTranslations[i] != null) {\n        if (odataObject.NameTranslations[i]['@odata.type'] != null) {\n          var className: string = odataObject.NameTranslations[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.NameTranslations[i] = new entityDictionary[className](odataObject.NameTranslations[i])\n          }\n        } else {\n            this.NameTranslations[i] = new TextValueTranslationClass(odataObject.NameTranslations[i]);\n        }\n                    } else {\n        this.NameTranslations[i] = undefined;\n        }\n        }\n        }\n      \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['CategoryClass'] = CategoryClass;\n    \n      /**\n      * Cart entity class.\n      */\n      export class CartClass implements Entities.Cart {\n      public AffiliationLines: Entities.AffiliationLoyaltyTier[];\n      public IsRequiredAmountPaid: boolean;\n      public IsDiscountFullyCalculated: boolean;\n      public IgnoreDiscountCalculation: boolean;\n      public AmountDue: number;\n      public AmountPaid: number;\n      public AttributeValues: Entities.AttributeValueBase[];\n      public IsTaxIncludedInPrice: boolean;\n      public BeginDateTime: Date;\n      public BusinessDate: Date;\n      public CancellationChargeAmount: number;\n      public EstimatedShippingAmount: number;\n      public CartLines: Entities.CartLine[];\n      public CartTypeValue: number;\n      public ChannelId: number;\n      public ChargeAmount: number;\n      public CustomerOrderRemainingBalance: number;\n      public ChargeLines: Entities.ChargeLine[];\n      public TaxViewLines: Entities.TaxViewLine[];\n      public Comment: string;\n      public InvoiceComment: string;\n      public Coupons: Entities.Coupon[];\n      public CustomerId: string;\n      public CustomerOrderModeValue: number;\n      public DeliveryMode: string;\n      public DeliveryModeChargeAmount: number;\n      public DiscountAmount: number;\n      public DiscountAmountWithoutTax: number;\n      public DiscountCodes: string[];\n      public Id: string;\n      public SuspendedCartId: string;\n      public TransactionTypeValue: number;\n      public CustomerAccountDepositLines: Entities.CustomerAccountDepositLine[];\n      public IncomeExpenseLines: Entities.IncomeExpenseLine[];\n      public IncomeExpenseTotalAmount: number;\n      public IsReturnByReceipt: boolean;\n      public ReturnTransactionHasLoyaltyPayment: boolean;\n      public IsFavorite: boolean;\n      public IsRecurring: boolean;\n      public IsSuspended: boolean;\n      public LoyaltyCardId: string;\n      public ModifiedDateTime: Date;\n      public Name: string;\n      public OrderNumber: string;\n      public AvailableDepositAmount: number;\n      public OverriddenDepositAmount: number;\n      public OverriddenDepositWithoutCarryoutAmount: number;\n      public PrepaymentAmountPaid: number;\n      public PrepaymentRoundingDifference: number;\n      public PrepaymentAppliedOnPickup: number;\n      public PrepaymentAmountInvoiced: number;\n      public PromotionLines: string[];\n      public QuotationExpiryDate: Date;\n      public ReasonCodeLines: Entities.ReasonCodeLine[];\n      public ReceiptEmail: string;\n      public RequestedDeliveryDate: Date;\n      public RequiredDepositAmount: number;\n      public RequiredDepositWithoutCarryoutAmount: number;\n      public SalesId: string;\n      public ShippingAddress: Entities.Address;\n      public StaffId: string;\n      public SubtotalAmount: number;\n      public SubtotalAmountWithoutTax: number;\n      public NetPrice: number;\n      public SubtotalSalesAmount: number;\n      public TaxAmount: number;\n      public TaxOnCancellationCharge: number;\n      public TaxOnShippingCharge: number;\n      public TaxOnNonShippingCharges: number;\n      public TaxOverrideCode: string;\n      public TenderLines: Entities.TenderLine[];\n      public RefundableTenderLines: Entities.TenderLine[];\n      public TerminalId: string;\n      public TotalAmount: number;\n      public TotalSalesAmount: number;\n      public TotalReturnAmount: number;\n      public TotalCarryoutSalesAmount: number;\n      public TotalCustomerOrderSalesAmount: number;\n      public TotalManualDiscountAmount: number;\n      public TotalManualDiscountPercentage: number;\n      public WarehouseId: string;\n      public IsCreatedOffline: boolean;\n      public CartStatusValue: number;\n      public ReceiptTransactionTypeValue: number;\n      public CommissionSalesGroup: string;\n      public Version: number;\n      public TotalItems: number;\n      public HasTaxCalculationTriggered: boolean;\n      public MerchantProperties: Entities.PaymentMerchantInformation[];\n      public HasChargeCalculationTriggered: boolean;\n      public FiscalTransactions: Entities.FiscalTransaction[];\n      public ShippingChargeAmount: number;\n      public OtherChargeAmount: number;\n      public PeriodicDiscountsCalculateScopeValue: number;\n      public TaxCalculationTypeValue: number;\n      public Notes: Entities.Note[];\n      public CustomerRequisition: string;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n        this.AffiliationLines = undefined;\n        if (odataObject.AffiliationLines) {\n        this.AffiliationLines = [];\n        for (var i = 0; i < odataObject.AffiliationLines.length; i++) {\n        if (odataObject.AffiliationLines[i] != null) {\n        if (odataObject.AffiliationLines[i]['@odata.type'] != null) {\n          var className: string = odataObject.AffiliationLines[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.AffiliationLines[i] = new entityDictionary[className](odataObject.AffiliationLines[i])\n          }\n        } else {\n            this.AffiliationLines[i] = new AffiliationLoyaltyTierClass(odataObject.AffiliationLines[i]);\n        }\n                    } else {\n        this.AffiliationLines[i] = undefined;\n        }\n        }\n        }\n      \n            this.IsRequiredAmountPaid = \n                odataObject.IsRequiredAmountPaid;\n              \n            this.IsDiscountFullyCalculated = \n                odataObject.IsDiscountFullyCalculated;\n              \n            this.IgnoreDiscountCalculation = \n                odataObject.IgnoreDiscountCalculation;\n              \n            this.AmountDue = \n                (odataObject.AmountDue != null) ? parseFloat(odataObject.AmountDue) : undefined;\n              \n            this.AmountPaid = \n                (odataObject.AmountPaid != null) ? parseFloat(odataObject.AmountPaid) : undefined;\n              \n        this.AttributeValues = undefined;\n        if (odataObject.AttributeValues) {\n        this.AttributeValues = [];\n        for (var i = 0; i < odataObject.AttributeValues.length; i++) {\n        if (odataObject.AttributeValues[i] != null) {\n        if (odataObject.AttributeValues[i]['@odata.type'] != null) {\n          var className: string = odataObject.AttributeValues[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.AttributeValues[i] = new entityDictionary[className](odataObject.AttributeValues[i])\n          }\n        } else {\n            this.AttributeValues[i] = new AttributeValueBaseClass(odataObject.AttributeValues[i]);\n        }\n                    } else {\n        this.AttributeValues[i] = undefined;\n        }\n        }\n        }\n      \n            this.IsTaxIncludedInPrice = \n                odataObject.IsTaxIncludedInPrice;\n              \n            this.BeginDateTime = \n                (odataObject.BeginDateTime instanceof Date) ? odataObject.BeginDateTime\n                : (odataObject.BeginDateTime != null) ? jsonLightReadStringPropertyValue(odataObject.BeginDateTime, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.BusinessDate = \n                (odataObject.BusinessDate instanceof Date) ? odataObject.BusinessDate\n                : (odataObject.BusinessDate != null) ? jsonLightReadStringPropertyValue(odataObject.BusinessDate, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.CancellationChargeAmount = \n                (odataObject.CancellationChargeAmount != null) ? parseFloat(odataObject.CancellationChargeAmount) : undefined;\n              \n            this.EstimatedShippingAmount = \n                (odataObject.EstimatedShippingAmount != null) ? parseFloat(odataObject.EstimatedShippingAmount) : undefined;\n              \n        this.CartLines = undefined;\n        if (odataObject.CartLines) {\n        this.CartLines = [];\n        for (var i = 0; i < odataObject.CartLines.length; i++) {\n        if (odataObject.CartLines[i] != null) {\n        if (odataObject.CartLines[i]['@odata.type'] != null) {\n          var className: string = odataObject.CartLines[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.CartLines[i] = new entityDictionary[className](odataObject.CartLines[i])\n          }\n        } else {\n            this.CartLines[i] = new CartLineClass(odataObject.CartLines[i]);\n        }\n                    } else {\n        this.CartLines[i] = undefined;\n        }\n        }\n        }\n      \n            this.CartTypeValue = \n                odataObject.CartTypeValue;\n              \n            this.ChannelId = \n                (odataObject.ChannelId != null) ? parseInt(odataObject.ChannelId, 10) : undefined;\n              \n            this.ChargeAmount = \n                (odataObject.ChargeAmount != null) ? parseFloat(odataObject.ChargeAmount) : undefined;\n              \n            this.CustomerOrderRemainingBalance = \n                (odataObject.CustomerOrderRemainingBalance != null) ? parseFloat(odataObject.CustomerOrderRemainingBalance) : undefined;\n              \n        this.ChargeLines = undefined;\n        if (odataObject.ChargeLines) {\n        this.ChargeLines = [];\n        for (var i = 0; i < odataObject.ChargeLines.length; i++) {\n        if (odataObject.ChargeLines[i] != null) {\n        if (odataObject.ChargeLines[i]['@odata.type'] != null) {\n          var className: string = odataObject.ChargeLines[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ChargeLines[i] = new entityDictionary[className](odataObject.ChargeLines[i])\n          }\n        } else {\n            this.ChargeLines[i] = new ChargeLineClass(odataObject.ChargeLines[i]);\n        }\n                    } else {\n        this.ChargeLines[i] = undefined;\n        }\n        }\n        }\n      \n        this.TaxViewLines = undefined;\n        if (odataObject.TaxViewLines) {\n        this.TaxViewLines = [];\n        for (var i = 0; i < odataObject.TaxViewLines.length; i++) {\n        if (odataObject.TaxViewLines[i] != null) {\n        if (odataObject.TaxViewLines[i]['@odata.type'] != null) {\n          var className: string = odataObject.TaxViewLines[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.TaxViewLines[i] = new entityDictionary[className](odataObject.TaxViewLines[i])\n          }\n        } else {\n            this.TaxViewLines[i] = new TaxViewLineClass(odataObject.TaxViewLines[i]);\n        }\n                    } else {\n        this.TaxViewLines[i] = undefined;\n        }\n        }\n        }\n      \n            this.Comment = \n                odataObject.Comment;\n              \n            this.InvoiceComment = \n                odataObject.InvoiceComment;\n              \n        this.Coupons = undefined;\n        if (odataObject.Coupons) {\n        this.Coupons = [];\n        for (var i = 0; i < odataObject.Coupons.length; i++) {\n        if (odataObject.Coupons[i] != null) {\n        if (odataObject.Coupons[i]['@odata.type'] != null) {\n          var className: string = odataObject.Coupons[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.Coupons[i] = new entityDictionary[className](odataObject.Coupons[i])\n          }\n        } else {\n            this.Coupons[i] = new CouponClass(odataObject.Coupons[i]);\n        }\n                    } else {\n        this.Coupons[i] = undefined;\n        }\n        }\n        }\n      \n            this.CustomerId = \n                odataObject.CustomerId;\n              \n            this.CustomerOrderModeValue = \n                odataObject.CustomerOrderModeValue;\n              \n            this.DeliveryMode = \n                odataObject.DeliveryMode;\n              \n            this.DeliveryModeChargeAmount = \n                (odataObject.DeliveryModeChargeAmount != null) ? parseFloat(odataObject.DeliveryModeChargeAmount) : undefined;\n              \n            this.DiscountAmount = \n                (odataObject.DiscountAmount != null) ? parseFloat(odataObject.DiscountAmount) : undefined;\n              \n            this.DiscountAmountWithoutTax = \n                (odataObject.DiscountAmountWithoutTax != null) ? parseFloat(odataObject.DiscountAmountWithoutTax) : undefined;\n              \n        this.DiscountCodes = undefined;\n        if (odataObject.DiscountCodes) {\n        this.DiscountCodes = [];\n        for (var i = 0; i < odataObject.DiscountCodes.length; i++) {\n        if (odataObject.DiscountCodes[i] != null) {\n            this.DiscountCodes[i] = \n                odataObject.DiscountCodes[i];\n                            } else {\n        this.DiscountCodes[i] = undefined;\n        }\n        }\n        }\n      \n            this.Id = \n                odataObject.Id;\n              \n            this.SuspendedCartId = \n                odataObject.SuspendedCartId;\n              \n            this.TransactionTypeValue = \n                odataObject.TransactionTypeValue;\n              \n        this.CustomerAccountDepositLines = undefined;\n        if (odataObject.CustomerAccountDepositLines) {\n        this.CustomerAccountDepositLines = [];\n        for (var i = 0; i < odataObject.CustomerAccountDepositLines.length; i++) {\n        if (odataObject.CustomerAccountDepositLines[i] != null) {\n        if (odataObject.CustomerAccountDepositLines[i]['@odata.type'] != null) {\n          var className: string = odataObject.CustomerAccountDepositLines[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.CustomerAccountDepositLines[i] = new entityDictionary[className](odataObject.CustomerAccountDepositLines[i])\n          }\n        } else {\n            this.CustomerAccountDepositLines[i] = new CustomerAccountDepositLineClass(odataObject.CustomerAccountDepositLines[i]);\n        }\n                    } else {\n        this.CustomerAccountDepositLines[i] = undefined;\n        }\n        }\n        }\n      \n        this.IncomeExpenseLines = undefined;\n        if (odataObject.IncomeExpenseLines) {\n        this.IncomeExpenseLines = [];\n        for (var i = 0; i < odataObject.IncomeExpenseLines.length; i++) {\n        if (odataObject.IncomeExpenseLines[i] != null) {\n        if (odataObject.IncomeExpenseLines[i]['@odata.type'] != null) {\n          var className: string = odataObject.IncomeExpenseLines[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.IncomeExpenseLines[i] = new entityDictionary[className](odataObject.IncomeExpenseLines[i])\n          }\n        } else {\n            this.IncomeExpenseLines[i] = new IncomeExpenseLineClass(odataObject.IncomeExpenseLines[i]);\n        }\n                    } else {\n        this.IncomeExpenseLines[i] = undefined;\n        }\n        }\n        }\n      \n            this.IncomeExpenseTotalAmount = \n                (odataObject.IncomeExpenseTotalAmount != null) ? parseFloat(odataObject.IncomeExpenseTotalAmount) : undefined;\n              \n            this.IsReturnByReceipt = \n                odataObject.IsReturnByReceipt;\n              \n            this.ReturnTransactionHasLoyaltyPayment = \n                odataObject.ReturnTransactionHasLoyaltyPayment;\n              \n            this.IsFavorite = \n                odataObject.IsFavorite;\n              \n            this.IsRecurring = \n                odataObject.IsRecurring;\n              \n            this.IsSuspended = \n                odataObject.IsSuspended;\n              \n            this.LoyaltyCardId = \n                odataObject.LoyaltyCardId;\n              \n            this.ModifiedDateTime = \n                (odataObject.ModifiedDateTime instanceof Date) ? odataObject.ModifiedDateTime\n                : (odataObject.ModifiedDateTime != null) ? jsonLightReadStringPropertyValue(odataObject.ModifiedDateTime, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.Name = \n                odataObject.Name;\n              \n            this.OrderNumber = \n                odataObject.OrderNumber;\n              \n            this.AvailableDepositAmount = \n                (odataObject.AvailableDepositAmount != null) ? parseFloat(odataObject.AvailableDepositAmount) : undefined;\n              \n            this.OverriddenDepositAmount = \n                (odataObject.OverriddenDepositAmount != null) ? parseFloat(odataObject.OverriddenDepositAmount) : undefined;\n              \n            this.OverriddenDepositWithoutCarryoutAmount = \n                (odataObject.OverriddenDepositWithoutCarryoutAmount != null) ? parseFloat(odataObject.OverriddenDepositWithoutCarryoutAmount) : undefined;\n              \n            this.PrepaymentAmountPaid = \n                (odataObject.PrepaymentAmountPaid != null) ? parseFloat(odataObject.PrepaymentAmountPaid) : undefined;\n              \n            this.PrepaymentRoundingDifference = \n                (odataObject.PrepaymentRoundingDifference != null) ? parseFloat(odataObject.PrepaymentRoundingDifference) : undefined;\n              \n            this.PrepaymentAppliedOnPickup = \n                (odataObject.PrepaymentAppliedOnPickup != null) ? parseFloat(odataObject.PrepaymentAppliedOnPickup) : undefined;\n              \n            this.PrepaymentAmountInvoiced = \n                (odataObject.PrepaymentAmountInvoiced != null) ? parseFloat(odataObject.PrepaymentAmountInvoiced) : undefined;\n              \n        this.PromotionLines = undefined;\n        if (odataObject.PromotionLines) {\n        this.PromotionLines = [];\n        for (var i = 0; i < odataObject.PromotionLines.length; i++) {\n        if (odataObject.PromotionLines[i] != null) {\n            this.PromotionLines[i] = \n                odataObject.PromotionLines[i];\n                            } else {\n        this.PromotionLines[i] = undefined;\n        }\n        }\n        }\n      \n            this.QuotationExpiryDate = \n                (odataObject.QuotationExpiryDate instanceof Date) ? odataObject.QuotationExpiryDate\n                : (odataObject.QuotationExpiryDate != null) ? jsonLightReadStringPropertyValue(odataObject.QuotationExpiryDate, \"Edm.DateTimeOffset\", false) : undefined;\n              \n        this.ReasonCodeLines = undefined;\n        if (odataObject.ReasonCodeLines) {\n        this.ReasonCodeLines = [];\n        for (var i = 0; i < odataObject.ReasonCodeLines.length; i++) {\n        if (odataObject.ReasonCodeLines[i] != null) {\n        if (odataObject.ReasonCodeLines[i]['@odata.type'] != null) {\n          var className: string = odataObject.ReasonCodeLines[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ReasonCodeLines[i] = new entityDictionary[className](odataObject.ReasonCodeLines[i])\n          }\n        } else {\n            this.ReasonCodeLines[i] = new ReasonCodeLineClass(odataObject.ReasonCodeLines[i]);\n        }\n                    } else {\n        this.ReasonCodeLines[i] = undefined;\n        }\n        }\n        }\n      \n            this.ReceiptEmail = \n                odataObject.ReceiptEmail;\n              \n            this.RequestedDeliveryDate = \n                (odataObject.RequestedDeliveryDate instanceof Date) ? odataObject.RequestedDeliveryDate\n                : (odataObject.RequestedDeliveryDate != null) ? jsonLightReadStringPropertyValue(odataObject.RequestedDeliveryDate, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.RequiredDepositAmount = \n                (odataObject.RequiredDepositAmount != null) ? parseFloat(odataObject.RequiredDepositAmount) : undefined;\n              \n            this.RequiredDepositWithoutCarryoutAmount = \n                (odataObject.RequiredDepositWithoutCarryoutAmount != null) ? parseFloat(odataObject.RequiredDepositWithoutCarryoutAmount) : undefined;\n              \n            this.SalesId = \n                odataObject.SalesId;\n              \n        if (odataObject.ShippingAddress == null) {\n            this.ShippingAddress = undefined;\n        } else if (odataObject.ShippingAddress['@odata.type'] == null) {\n            this.ShippingAddress = new AddressClass(odataObject.ShippingAddress);\n        } else {\n            var className: string = odataObject.ShippingAddress['@odata.type'];\n            className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n            if (entityDictionary[className]) {\n                this.ShippingAddress = new entityDictionary[className](odataObject.ShippingAddress)\n            }\n        }\n\n      \n            this.StaffId = \n                odataObject.StaffId;\n              \n            this.SubtotalAmount = \n                (odataObject.SubtotalAmount != null) ? parseFloat(odataObject.SubtotalAmount) : undefined;\n              \n            this.SubtotalAmountWithoutTax = \n                (odataObject.SubtotalAmountWithoutTax != null) ? parseFloat(odataObject.SubtotalAmountWithoutTax) : undefined;\n              \n            this.NetPrice = \n                (odataObject.NetPrice != null) ? parseFloat(odataObject.NetPrice) : undefined;\n              \n            this.SubtotalSalesAmount = \n                (odataObject.SubtotalSalesAmount != null) ? parseFloat(odataObject.SubtotalSalesAmount) : undefined;\n              \n            this.TaxAmount = \n                (odataObject.TaxAmount != null) ? parseFloat(odataObject.TaxAmount) : undefined;\n              \n            this.TaxOnCancellationCharge = \n                (odataObject.TaxOnCancellationCharge != null) ? parseFloat(odataObject.TaxOnCancellationCharge) : undefined;\n              \n            this.TaxOnShippingCharge = \n                (odataObject.TaxOnShippingCharge != null) ? parseFloat(odataObject.TaxOnShippingCharge) : undefined;\n              \n            this.TaxOnNonShippingCharges = \n                (odataObject.TaxOnNonShippingCharges != null) ? parseFloat(odataObject.TaxOnNonShippingCharges) : undefined;\n              \n            this.TaxOverrideCode = \n                odataObject.TaxOverrideCode;\n              \n        this.TenderLines = undefined;\n        if (odataObject.TenderLines) {\n        this.TenderLines = [];\n        for (var i = 0; i < odataObject.TenderLines.length; i++) {\n        if (odataObject.TenderLines[i] != null) {\n        if (odataObject.TenderLines[i]['@odata.type'] != null) {\n          var className: string = odataObject.TenderLines[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.TenderLines[i] = new entityDictionary[className](odataObject.TenderLines[i])\n          }\n        } else {\n            this.TenderLines[i] = new TenderLineClass(odataObject.TenderLines[i]);\n        }\n                    } else {\n        this.TenderLines[i] = undefined;\n        }\n        }\n        }\n      \n        this.RefundableTenderLines = undefined;\n        if (odataObject.RefundableTenderLines) {\n        this.RefundableTenderLines = [];\n        for (var i = 0; i < odataObject.RefundableTenderLines.length; i++) {\n        if (odataObject.RefundableTenderLines[i] != null) {\n        if (odataObject.RefundableTenderLines[i]['@odata.type'] != null) {\n          var className: string = odataObject.RefundableTenderLines[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.RefundableTenderLines[i] = new entityDictionary[className](odataObject.RefundableTenderLines[i])\n          }\n        } else {\n            this.RefundableTenderLines[i] = new TenderLineClass(odataObject.RefundableTenderLines[i]);\n        }\n                    } else {\n        this.RefundableTenderLines[i] = undefined;\n        }\n        }\n        }\n      \n            this.TerminalId = \n                odataObject.TerminalId;\n              \n            this.TotalAmount = \n                (odataObject.TotalAmount != null) ? parseFloat(odataObject.TotalAmount) : undefined;\n              \n            this.TotalSalesAmount = \n                (odataObject.TotalSalesAmount != null) ? parseFloat(odataObject.TotalSalesAmount) : undefined;\n              \n            this.TotalReturnAmount = \n                (odataObject.TotalReturnAmount != null) ? parseFloat(odataObject.TotalReturnAmount) : undefined;\n              \n            this.TotalCarryoutSalesAmount = \n                (odataObject.TotalCarryoutSalesAmount != null) ? parseFloat(odataObject.TotalCarryoutSalesAmount) : undefined;\n              \n            this.TotalCustomerOrderSalesAmount = \n                (odataObject.TotalCustomerOrderSalesAmount != null) ? parseFloat(odataObject.TotalCustomerOrderSalesAmount) : undefined;\n              \n            this.TotalManualDiscountAmount = \n                (odataObject.TotalManualDiscountAmount != null) ? parseFloat(odataObject.TotalManualDiscountAmount) : undefined;\n              \n            this.TotalManualDiscountPercentage = \n                (odataObject.TotalManualDiscountPercentage != null) ? parseFloat(odataObject.TotalManualDiscountPercentage) : undefined;\n              \n            this.WarehouseId = \n                odataObject.WarehouseId;\n              \n            this.IsCreatedOffline = \n                odataObject.IsCreatedOffline;\n              \n            this.CartStatusValue = \n                odataObject.CartStatusValue;\n              \n            this.ReceiptTransactionTypeValue = \n                odataObject.ReceiptTransactionTypeValue;\n              \n            this.CommissionSalesGroup = \n                odataObject.CommissionSalesGroup;\n              \n            this.Version = \n                (odataObject.Version != null) ? parseInt(odataObject.Version, 10) : undefined;\n              \n            this.TotalItems = \n                (odataObject.TotalItems != null) ? parseFloat(odataObject.TotalItems) : undefined;\n              \n            this.HasTaxCalculationTriggered = \n                odataObject.HasTaxCalculationTriggered;\n              \n        this.MerchantProperties = undefined;\n        if (odataObject.MerchantProperties) {\n        this.MerchantProperties = [];\n        for (var i = 0; i < odataObject.MerchantProperties.length; i++) {\n        if (odataObject.MerchantProperties[i] != null) {\n        if (odataObject.MerchantProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.MerchantProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.MerchantProperties[i] = new entityDictionary[className](odataObject.MerchantProperties[i])\n          }\n        } else {\n            this.MerchantProperties[i] = new PaymentMerchantInformationClass(odataObject.MerchantProperties[i]);\n        }\n                    } else {\n        this.MerchantProperties[i] = undefined;\n        }\n        }\n        }\n      \n            this.HasChargeCalculationTriggered = \n                odataObject.HasChargeCalculationTriggered;\n              \n        this.FiscalTransactions = undefined;\n        if (odataObject.FiscalTransactions) {\n        this.FiscalTransactions = [];\n        for (var i = 0; i < odataObject.FiscalTransactions.length; i++) {\n        if (odataObject.FiscalTransactions[i] != null) {\n        if (odataObject.FiscalTransactions[i]['@odata.type'] != null) {\n          var className: string = odataObject.FiscalTransactions[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.FiscalTransactions[i] = new entityDictionary[className](odataObject.FiscalTransactions[i])\n          }\n        } else {\n            this.FiscalTransactions[i] = new FiscalTransactionClass(odataObject.FiscalTransactions[i]);\n        }\n                    } else {\n        this.FiscalTransactions[i] = undefined;\n        }\n        }\n        }\n      \n            this.ShippingChargeAmount = \n                (odataObject.ShippingChargeAmount != null) ? parseFloat(odataObject.ShippingChargeAmount) : undefined;\n              \n            this.OtherChargeAmount = \n                (odataObject.OtherChargeAmount != null) ? parseFloat(odataObject.OtherChargeAmount) : undefined;\n              \n            this.PeriodicDiscountsCalculateScopeValue = \n                odataObject.PeriodicDiscountsCalculateScopeValue;\n              \n            this.TaxCalculationTypeValue = \n                odataObject.TaxCalculationTypeValue;\n              \n        this.Notes = undefined;\n        if (odataObject.Notes) {\n        this.Notes = [];\n        for (var i = 0; i < odataObject.Notes.length; i++) {\n        if (odataObject.Notes[i] != null) {\n        if (odataObject.Notes[i]['@odata.type'] != null) {\n          var className: string = odataObject.Notes[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.Notes[i] = new entityDictionary[className](odataObject.Notes[i])\n          }\n        } else {\n            this.Notes[i] = new NoteClass(odataObject.Notes[i]);\n        }\n                    } else {\n        this.Notes[i] = undefined;\n        }\n        }\n        }\n      \n            this.CustomerRequisition = \n                odataObject.CustomerRequisition;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['CartClass'] = CartClass;\n    \n      /**\n      * Customer entity class.\n      */\n      export class CustomerClass implements Entities.Customer {\n      public AccountNumber: string;\n      public RecordId: number;\n      public CreatedDateTime: Date;\n      public ChargeGroup: string;\n      public PriceGroup: string;\n      public IsCustomerTaxInclusive: boolean;\n      public Phone: string;\n      public PhoneRecordId: number;\n      public PhoneExt: string;\n      public Cellphone: string;\n      public Email: string;\n      public EmailRecordId: number;\n      public Url: string;\n      public UrlRecordId: number;\n      public Name: string;\n      public PersonNameId: number;\n      public FirstName: string;\n      public MiddleName: string;\n      public LastName: string;\n      public DirectoryPartyRecordId: number;\n      public PartyNumber: string;\n      public CustomerTypeValue: number;\n      public Language: string;\n      public CustomerGroup: string;\n      public CurrencyCode: string;\n      public CNPJCPFNumber: string;\n      public IdentificationNumber: string;\n      public InvoiceAccount: string;\n      public MandatoryCreditLimit: boolean;\n      public CreditRating: string;\n      public CreditLimit: number;\n      public Balance: number;\n      public Blocked: boolean;\n      public BlockedType: number;\n      public UseOrderNumberReference: boolean;\n      public OrganizationId: string;\n      public UsePurchaseRequest: boolean;\n      public MultilineDiscountGroup: string;\n      public TotalDiscountGroup: string;\n      public LineDiscountGroup: string;\n      public TaxGroup: string;\n      public SalesTaxGroup: string;\n      public CommissionSalesGroupId: string;\n      public TaxExemptNumber: string;\n      public VatNumber: string;\n      public TaxOffice: string;\n      public NonChargeableAccount: boolean;\n      public Tag: string;\n      public ReceiptSettings: number;\n      public ReceiptEmail: string;\n      public OptOutPersonalization: boolean;\n      public OptOutWebActivityTracking: boolean;\n      public RetailCustomerTableRecordId: number;\n      public OfflineImage: string;\n      public IsAsyncCustomer: boolean;\n      public NewCustomerPartyNumber: string;\n      public CustomerAffiliations: Entities.CustomerAffiliation[];\n      public Addresses: Entities.Address[];\n      public Attributes: Entities.CustomerAttribute[];\n      public Images: Entities.MediaLocation[];\n      public TitleRecordId: number;\n      public IsFloorLimitBlocked: boolean;\n      public IsB2b: boolean;\n      public IsB2bAdmin: boolean;\n      public BusinessPartnerId: string;\n      public Contacts: Entities.ContactInfo[];\n      public AllowOnAccountPayment: boolean;\n      public DefaultPaymentMethod: string;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.AccountNumber = \n                odataObject.AccountNumber;\n              \n            this.RecordId = \n                (odataObject.RecordId != null) ? parseInt(odataObject.RecordId, 10) : undefined;\n              \n            this.CreatedDateTime = \n                (odataObject.CreatedDateTime instanceof Date) ? odataObject.CreatedDateTime\n                : (odataObject.CreatedDateTime != null) ? jsonLightReadStringPropertyValue(odataObject.CreatedDateTime, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.ChargeGroup = \n                odataObject.ChargeGroup;\n              \n            this.PriceGroup = \n                odataObject.PriceGroup;\n              \n            this.IsCustomerTaxInclusive = \n                odataObject.IsCustomerTaxInclusive;\n              \n            this.Phone = \n                odataObject.Phone;\n              \n            this.PhoneRecordId = \n                (odataObject.PhoneRecordId != null) ? parseInt(odataObject.PhoneRecordId, 10) : undefined;\n              \n            this.PhoneExt = \n                odataObject.PhoneExt;\n              \n            this.Cellphone = \n                odataObject.Cellphone;\n              \n            this.Email = \n                odataObject.Email;\n              \n            this.EmailRecordId = \n                (odataObject.EmailRecordId != null) ? parseInt(odataObject.EmailRecordId, 10) : undefined;\n              \n            this.Url = \n                odataObject.Url;\n              \n            this.UrlRecordId = \n                (odataObject.UrlRecordId != null) ? parseInt(odataObject.UrlRecordId, 10) : undefined;\n              \n            this.Name = \n                odataObject.Name;\n              \n            this.PersonNameId = \n                (odataObject.PersonNameId != null) ? parseInt(odataObject.PersonNameId, 10) : undefined;\n              \n            this.FirstName = \n                odataObject.FirstName;\n              \n            this.MiddleName = \n                odataObject.MiddleName;\n              \n            this.LastName = \n                odataObject.LastName;\n              \n            this.DirectoryPartyRecordId = \n                (odataObject.DirectoryPartyRecordId != null) ? parseInt(odataObject.DirectoryPartyRecordId, 10) : undefined;\n              \n            this.PartyNumber = \n                odataObject.PartyNumber;\n              \n            this.CustomerTypeValue = \n                odataObject.CustomerTypeValue;\n              \n            this.Language = \n                odataObject.Language;\n              \n            this.CustomerGroup = \n                odataObject.CustomerGroup;\n              \n            this.CurrencyCode = \n                odataObject.CurrencyCode;\n              \n            this.CNPJCPFNumber = \n                odataObject.CNPJCPFNumber;\n              \n            this.IdentificationNumber = \n                odataObject.IdentificationNumber;\n              \n            this.InvoiceAccount = \n                odataObject.InvoiceAccount;\n              \n            this.MandatoryCreditLimit = \n                odataObject.MandatoryCreditLimit;\n              \n            this.CreditRating = \n                odataObject.CreditRating;\n              \n            this.CreditLimit = \n                (odataObject.CreditLimit != null) ? parseFloat(odataObject.CreditLimit) : undefined;\n              \n            this.Balance = \n                (odataObject.Balance != null) ? parseFloat(odataObject.Balance) : undefined;\n              \n            this.Blocked = \n                odataObject.Blocked;\n              \n            this.BlockedType = \n                odataObject.BlockedType;\n              \n            this.UseOrderNumberReference = \n                odataObject.UseOrderNumberReference;\n              \n            this.OrganizationId = \n                odataObject.OrganizationId;\n              \n            this.UsePurchaseRequest = \n                odataObject.UsePurchaseRequest;\n              \n            this.MultilineDiscountGroup = \n                odataObject.MultilineDiscountGroup;\n              \n            this.TotalDiscountGroup = \n                odataObject.TotalDiscountGroup;\n              \n            this.LineDiscountGroup = \n                odataObject.LineDiscountGroup;\n              \n            this.TaxGroup = \n                odataObject.TaxGroup;\n              \n            this.SalesTaxGroup = \n                odataObject.SalesTaxGroup;\n              \n            this.CommissionSalesGroupId = \n                odataObject.CommissionSalesGroupId;\n              \n            this.TaxExemptNumber = \n                odataObject.TaxExemptNumber;\n              \n            this.VatNumber = \n                odataObject.VatNumber;\n              \n            this.TaxOffice = \n                odataObject.TaxOffice;\n              \n            this.NonChargeableAccount = \n                odataObject.NonChargeableAccount;\n              \n            this.Tag = \n                odataObject.Tag;\n              \n            this.ReceiptSettings = \n                odataObject.ReceiptSettings;\n              \n            this.ReceiptEmail = \n                odataObject.ReceiptEmail;\n              \n            this.OptOutPersonalization = \n                odataObject.OptOutPersonalization;\n              \n            this.OptOutWebActivityTracking = \n                odataObject.OptOutWebActivityTracking;\n              \n            this.RetailCustomerTableRecordId = \n                (odataObject.RetailCustomerTableRecordId != null) ? parseInt(odataObject.RetailCustomerTableRecordId, 10) : undefined;\n              \n            this.OfflineImage = \n                odataObject.OfflineImage;\n              \n            this.IsAsyncCustomer = \n                odataObject.IsAsyncCustomer;\n              \n            this.NewCustomerPartyNumber = \n                odataObject.NewCustomerPartyNumber;\n              \n        this.CustomerAffiliations = undefined;\n        if (odataObject.CustomerAffiliations) {\n        this.CustomerAffiliations = [];\n        for (var i = 0; i < odataObject.CustomerAffiliations.length; i++) {\n        if (odataObject.CustomerAffiliations[i] != null) {\n        if (odataObject.CustomerAffiliations[i]['@odata.type'] != null) {\n          var className: string = odataObject.CustomerAffiliations[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.CustomerAffiliations[i] = new entityDictionary[className](odataObject.CustomerAffiliations[i])\n          }\n        } else {\n            this.CustomerAffiliations[i] = new CustomerAffiliationClass(odataObject.CustomerAffiliations[i]);\n        }\n                    } else {\n        this.CustomerAffiliations[i] = undefined;\n        }\n        }\n        }\n      \n        this.Addresses = undefined;\n        if (odataObject.Addresses) {\n        this.Addresses = [];\n        for (var i = 0; i < odataObject.Addresses.length; i++) {\n        if (odataObject.Addresses[i] != null) {\n        if (odataObject.Addresses[i]['@odata.type'] != null) {\n          var className: string = odataObject.Addresses[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.Addresses[i] = new entityDictionary[className](odataObject.Addresses[i])\n          }\n        } else {\n            this.Addresses[i] = new AddressClass(odataObject.Addresses[i]);\n        }\n                    } else {\n        this.Addresses[i] = undefined;\n        }\n        }\n        }\n      \n        this.Attributes = undefined;\n        if (odataObject.Attributes) {\n        this.Attributes = [];\n        for (var i = 0; i < odataObject.Attributes.length; i++) {\n        if (odataObject.Attributes[i] != null) {\n        if (odataObject.Attributes[i]['@odata.type'] != null) {\n          var className: string = odataObject.Attributes[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.Attributes[i] = new entityDictionary[className](odataObject.Attributes[i])\n          }\n        } else {\n            this.Attributes[i] = new CustomerAttributeClass(odataObject.Attributes[i]);\n        }\n                    } else {\n        this.Attributes[i] = undefined;\n        }\n        }\n        }\n      \n        this.Images = undefined;\n        if (odataObject.Images) {\n        this.Images = [];\n        for (var i = 0; i < odataObject.Images.length; i++) {\n        if (odataObject.Images[i] != null) {\n        if (odataObject.Images[i]['@odata.type'] != null) {\n          var className: string = odataObject.Images[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.Images[i] = new entityDictionary[className](odataObject.Images[i])\n          }\n        } else {\n            this.Images[i] = new MediaLocationClass(odataObject.Images[i]);\n        }\n                    } else {\n        this.Images[i] = undefined;\n        }\n        }\n        }\n      \n            this.TitleRecordId = \n                (odataObject.TitleRecordId != null) ? parseInt(odataObject.TitleRecordId, 10) : undefined;\n              \n            this.IsFloorLimitBlocked = \n                odataObject.IsFloorLimitBlocked;\n              \n            this.IsB2b = \n                odataObject.IsB2b;\n              \n            this.IsB2bAdmin = \n                odataObject.IsB2bAdmin;\n              \n            this.BusinessPartnerId = \n                odataObject.BusinessPartnerId;\n              \n        this.Contacts = undefined;\n        if (odataObject.Contacts) {\n        this.Contacts = [];\n        for (var i = 0; i < odataObject.Contacts.length; i++) {\n        if (odataObject.Contacts[i] != null) {\n        if (odataObject.Contacts[i]['@odata.type'] != null) {\n          var className: string = odataObject.Contacts[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.Contacts[i] = new entityDictionary[className](odataObject.Contacts[i])\n          }\n        } else {\n            this.Contacts[i] = new ContactInfoClass(odataObject.Contacts[i]);\n        }\n                    } else {\n        this.Contacts[i] = undefined;\n        }\n        }\n        }\n      \n            this.AllowOnAccountPayment = \n                odataObject.AllowOnAccountPayment;\n              \n            this.DefaultPaymentMethod = \n                odataObject.DefaultPaymentMethod;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['CustomerClass'] = CustomerClass;\n    \n      /**\n      * Employee entity class.\n      */\n      export class EmployeeClass implements Entities.Employee {\n      public StaffId: string;\n      public NameOnReceipt: string;\n      public Name: string;\n      public CultureName: string;\n      public NumberOfDaysToPasswordExpiry: number;\n      public Permissions: Entities.EmployeePermissions;\n      public Images: Entities.MediaLocation[];\n      public DefaultImage: string;\n      public DefaultCommissionSalesGroup: string;\n      public IdentifierTypeValue: number;\n      public RecordId: number;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.StaffId = \n                odataObject.StaffId;\n              \n            this.NameOnReceipt = \n                odataObject.NameOnReceipt;\n              \n            this.Name = \n                odataObject.Name;\n              \n            this.CultureName = \n                odataObject.CultureName;\n              \n            this.NumberOfDaysToPasswordExpiry = \n                odataObject.NumberOfDaysToPasswordExpiry;\n              \n        if (odataObject.Permissions == null) {\n            this.Permissions = undefined;\n        } else if (odataObject.Permissions['@odata.type'] == null) {\n            this.Permissions = new EmployeePermissionsClass(odataObject.Permissions);\n        } else {\n            var className: string = odataObject.Permissions['@odata.type'];\n            className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n            if (entityDictionary[className]) {\n                this.Permissions = new entityDictionary[className](odataObject.Permissions)\n            }\n        }\n\n      \n        this.Images = undefined;\n        if (odataObject.Images) {\n        this.Images = [];\n        for (var i = 0; i < odataObject.Images.length; i++) {\n        if (odataObject.Images[i] != null) {\n        if (odataObject.Images[i]['@odata.type'] != null) {\n          var className: string = odataObject.Images[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.Images[i] = new entityDictionary[className](odataObject.Images[i])\n          }\n        } else {\n            this.Images[i] = new MediaLocationClass(odataObject.Images[i]);\n        }\n                    } else {\n        this.Images[i] = undefined;\n        }\n        }\n        }\n      \n            this.DefaultImage = \n                odataObject.DefaultImage;\n              \n            this.DefaultCommissionSalesGroup = \n                odataObject.DefaultCommissionSalesGroup;\n              \n            this.IdentifierTypeValue = \n                odataObject.IdentifierTypeValue;\n              \n            this.RecordId = \n                (odataObject.RecordId != null) ? parseInt(odataObject.RecordId, 10) : undefined;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['EmployeeClass'] = EmployeeClass;\n    \n      /**\n      * Checklist entity class.\n      */\n      export class ChecklistClass implements Entities.Checklist {\n      public RecordId: number;\n      public Tasks: Entities.ChecklistTask[];\n      public Version: string;\n      public ProcessId: string;\n      public Name: string;\n      public Description: string;\n      public AssignedToChannelId: number;\n      public AssignedToWorkerPersonnelNumber: string;\n      public StatusValue: number;\n      public StartDateTime: Date;\n      public EndDateTime: Date;\n      public TargetDateTime: Date;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.RecordId = \n                (odataObject.RecordId != null) ? parseInt(odataObject.RecordId, 10) : undefined;\n              \n        this.Tasks = undefined;\n        if (odataObject.Tasks) {\n        this.Tasks = [];\n        for (var i = 0; i < odataObject.Tasks.length; i++) {\n        if (odataObject.Tasks[i] != null) {\n        if (odataObject.Tasks[i]['@odata.type'] != null) {\n          var className: string = odataObject.Tasks[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.Tasks[i] = new entityDictionary[className](odataObject.Tasks[i])\n          }\n        } else {\n            this.Tasks[i] = new ChecklistTaskClass(odataObject.Tasks[i]);\n        }\n                    } else {\n        this.Tasks[i] = undefined;\n        }\n        }\n        }\n      \n            this.Version = \n                odataObject.Version;\n              \n            this.ProcessId = \n                odataObject.ProcessId;\n              \n            this.Name = \n                odataObject.Name;\n              \n            this.Description = \n                odataObject.Description;\n              \n            this.AssignedToChannelId = \n                (odataObject.AssignedToChannelId != null) ? parseInt(odataObject.AssignedToChannelId, 10) : undefined;\n              \n            this.AssignedToWorkerPersonnelNumber = \n                odataObject.AssignedToWorkerPersonnelNumber;\n              \n            this.StatusValue = \n                odataObject.StatusValue;\n              \n            this.StartDateTime = \n                (odataObject.StartDateTime instanceof Date) ? odataObject.StartDateTime\n                : (odataObject.StartDateTime != null) ? jsonLightReadStringPropertyValue(odataObject.StartDateTime, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.EndDateTime = \n                (odataObject.EndDateTime instanceof Date) ? odataObject.EndDateTime\n                : (odataObject.EndDateTime != null) ? jsonLightReadStringPropertyValue(odataObject.EndDateTime, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.TargetDateTime = \n                (odataObject.TargetDateTime instanceof Date) ? odataObject.TargetDateTime\n                : (odataObject.TargetDateTime != null) ? jsonLightReadStringPropertyValue(odataObject.TargetDateTime, \"Edm.DateTimeOffset\", false) : undefined;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['ChecklistClass'] = ChecklistClass;\n    \n      /**\n      * SalesOrder entity class.\n      */\n      export class SalesOrderClass implements Entities.SalesOrder {\n      public DocumentStatusValue: number;\n      public RecordId: number;\n      public StatusValue: number;\n      public McrOrderStopped: boolean;\n      public Shipments: Entities.Shipment[];\n      public AggregateInventoryQuantities: Entities.InventoryQuantities;\n      public UnifiedDeliveryInformation: Entities.DeliveryInformation;\n      public PaymentStatusValue: number;\n      public DetailedOrderStatusValue: number;\n      public AffiliationLoyaltyTierLines: Entities.SalesAffiliationLoyaltyTier[];\n      public IsRequiredAmountPaid: boolean;\n      public IsDiscountFullyCalculated: boolean;\n      public IgnoreDiscountCalculation: boolean;\n      public AmountDue: number;\n      public EstimatedShippingAmount: number;\n      public AmountPaid: number;\n      public CustomerOrderRemainingBalance: number;\n      public AttributeValues: Entities.AttributeValueBase[];\n      public AvailableDepositAmount: number;\n      public BeginDateTime: Date;\n      public CreatedDateTime: Date;\n      public BusinessDate: Date;\n      public CalculatedDepositAmount: number;\n      public CancellationCharge: number;\n      public ChannelId: number;\n      public ChannelReferenceId: string;\n      public ChargeAmount: number;\n      public ChargeLines: Entities.ChargeLine[];\n      public Comment: string;\n      public Coupons: Entities.Coupon[];\n      public InvoiceComment: string;\n      public ContactInformationCollection: Entities.ContactInformation[];\n      public CurrencyCode: string;\n      public CustomerAccountDepositLines: Entities.CustomerAccountDepositLine[];\n      public CustomerId: string;\n      public CustomerOrderModeValue: number;\n      public CustomerOrderTypeValue: number;\n      public DeliveryMode: string;\n      public DeliveryModeChargeAmount: number;\n      public DiscountAmount: number;\n      public DiscountAmountWithoutTax: number;\n      public NetPrice: number;\n      public DiscountCodes: string[];\n      public EntryStatusValue: number;\n      public GrossAmount: number;\n      public HasLoyaltyPayment: boolean;\n      public Id: string;\n      public InternalTransactionId: string;\n      public SuspendedTransactionId: string;\n      public IncomeExpenseLines: Entities.IncomeExpenseLine[];\n      public IncomeExpenseTotalAmount: number;\n      public InventoryLocationId: string;\n      public IsCreatedOffline: boolean;\n      public IsReturnByReceipt: boolean;\n      public IsSuspended: boolean;\n      public IsTaxIncludedInPrice: boolean;\n      public IsTaxExemptedForPriceInclusive: boolean;\n      public LineDiscount: number;\n      public LineDiscountCalculationTypeValue: number;\n      public LoyaltyCardId: string;\n      public LoyaltyDiscountAmount: number;\n      public LoyaltyManualDiscountAmount: number;\n      public LoyaltyRewardPointLines: Entities.LoyaltyRewardPointLine[];\n      public ModifiedDateTime: Date;\n      public Name: string;\n      public NetAmount: number;\n      public NetAmountWithoutTax: number;\n      public NetAmountWithNoTax: number;\n      public NetAmountWithTax: number;\n      public NumberOfItems: number;\n      public OverriddenDepositAmount: number;\n      public OverriddenDepositWithoutCarryoutAmount: number;\n      public PeriodicDiscountAmount: number;\n      public TenderDiscountAmount: number;\n      public PrepaymentAmountAppliedOnPickup: number;\n      public PrepaymentAmountInvoiced: number;\n      public PrepaymentAmountPaid: number;\n      public PrepaymentRoundingDifference: number;\n      public QuotationExpiryDate: Date;\n      public ReasonCodeLines: Entities.ReasonCodeLine[];\n      public ReceiptEmail: string;\n      public ReceiptId: string;\n      public RequestedDeliveryDate: Date;\n      public ConfirmedShipDate: Date;\n      public RequiredDepositAmount: number;\n      public RequiredDepositWithoutCarryoutAmount: number;\n      public ReturnTransactionHasLoyaltyPayment: boolean;\n      public SalesId: string;\n      public SalesPaymentDifference: number;\n      public SalesLines: Entities.SalesLine[];\n      public ShiftId: number;\n      public ShiftTerminalId: string;\n      public ShippingAddress: Entities.Address;\n      public StaffId: string;\n      public StatementCode: string;\n      public StoreId: string;\n      public SubtotalAmount: number;\n      public SubtotalAmountWithoutTax: number;\n      public SubtotalSalesAmount: number;\n      public TaxAmount: number;\n      public TaxAmountExclusive: number;\n      public TaxAmountInclusive: number;\n      public TaxLines: Entities.TaxLine[];\n      public TaxOnCancellationCharge: number;\n      public TaxOnShippingCharge: number;\n      public TaxOnNonShippingCharges: number;\n      public TaxOverrideCode: string;\n      public TenderLines: Entities.TenderLine[];\n      public RefundableTenderLines: Entities.TenderLine[];\n      public TerminalId: string;\n      public TotalAmount: number;\n      public TotalSalesAmount: number;\n      public TotalReturnAmount: number;\n      public TotalCarryoutSalesAmount: number;\n      public TotalCustomerOrderSalesAmount: number;\n      public TotalDiscount: number;\n      public TotalManualDiscountAmount: number;\n      public TotalManualDiscountPercentage: number;\n      public TransactionTypeValue: number;\n      public TaxCalculationTypeValue: number;\n      public SalesInvoiceAmount: number;\n      public GiftCardActiveFrom: Date;\n      public GiftCardBalance: number;\n      public GiftCardExpireDate: Date;\n      public GiftCardHistoryDetails: string;\n      public GiftCardIssueAmount: number;\n      public GiftCardIdMasked: string;\n      public CommissionSalesGroup: string;\n      public IsCommissionSalesGroupOverriddenByCustomer: boolean;\n      public CommissionSalesGroupSetByCashier: string;\n      public HasTaxCalculationTriggered: boolean;\n      public HasChargeCalculationTriggered: boolean;\n      public ShippingChargeAmount: number;\n      public OtherChargeAmount: number;\n      public PeriodicDiscountsCalculateScopeValue: number;\n      public CustomerName: string;\n      public OriginalOrderTransactionId: string;\n      public Notes: Entities.Note[];\n      public CustomerRequisition: string;\n      public FiscalTransactions: Entities.FiscalTransaction[];\n      public LanguageId: string;\n      public SalesAgreementRecordId: number;\n      public TransactionDate: Date;\n      public TransactionTime: number;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.DocumentStatusValue = \n                odataObject.DocumentStatusValue;\n              \n            this.RecordId = \n                (odataObject.RecordId != null) ? parseInt(odataObject.RecordId, 10) : undefined;\n              \n            this.StatusValue = \n                odataObject.StatusValue;\n              \n            this.McrOrderStopped = \n                odataObject.McrOrderStopped;\n              \n        this.Shipments = undefined;\n        if (odataObject.Shipments) {\n        this.Shipments = [];\n        for (var i = 0; i < odataObject.Shipments.length; i++) {\n        if (odataObject.Shipments[i] != null) {\n        if (odataObject.Shipments[i]['@odata.type'] != null) {\n          var className: string = odataObject.Shipments[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.Shipments[i] = new entityDictionary[className](odataObject.Shipments[i])\n          }\n        } else {\n            this.Shipments[i] = new ShipmentClass(odataObject.Shipments[i]);\n        }\n                    } else {\n        this.Shipments[i] = undefined;\n        }\n        }\n        }\n      \n        if (odataObject.AggregateInventoryQuantities == null) {\n            this.AggregateInventoryQuantities = undefined;\n        } else if (odataObject.AggregateInventoryQuantities['@odata.type'] == null) {\n            this.AggregateInventoryQuantities = new InventoryQuantitiesClass(odataObject.AggregateInventoryQuantities);\n        } else {\n            var className: string = odataObject.AggregateInventoryQuantities['@odata.type'];\n            className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n            if (entityDictionary[className]) {\n                this.AggregateInventoryQuantities = new entityDictionary[className](odataObject.AggregateInventoryQuantities)\n            }\n        }\n\n      \n        if (odataObject.UnifiedDeliveryInformation == null) {\n            this.UnifiedDeliveryInformation = undefined;\n        } else if (odataObject.UnifiedDeliveryInformation['@odata.type'] == null) {\n            this.UnifiedDeliveryInformation = new DeliveryInformationClass(odataObject.UnifiedDeliveryInformation);\n        } else {\n            var className: string = odataObject.UnifiedDeliveryInformation['@odata.type'];\n            className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n            if (entityDictionary[className]) {\n                this.UnifiedDeliveryInformation = new entityDictionary[className](odataObject.UnifiedDeliveryInformation)\n            }\n        }\n\n      \n            this.PaymentStatusValue = \n                odataObject.PaymentStatusValue;\n              \n            this.DetailedOrderStatusValue = \n                odataObject.DetailedOrderStatusValue;\n              \n        this.AffiliationLoyaltyTierLines = undefined;\n        if (odataObject.AffiliationLoyaltyTierLines) {\n        this.AffiliationLoyaltyTierLines = [];\n        for (var i = 0; i < odataObject.AffiliationLoyaltyTierLines.length; i++) {\n        if (odataObject.AffiliationLoyaltyTierLines[i] != null) {\n        if (odataObject.AffiliationLoyaltyTierLines[i]['@odata.type'] != null) {\n          var className: string = odataObject.AffiliationLoyaltyTierLines[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.AffiliationLoyaltyTierLines[i] = new entityDictionary[className](odataObject.AffiliationLoyaltyTierLines[i])\n          }\n        } else {\n            this.AffiliationLoyaltyTierLines[i] = new SalesAffiliationLoyaltyTierClass(odataObject.AffiliationLoyaltyTierLines[i]);\n        }\n                    } else {\n        this.AffiliationLoyaltyTierLines[i] = undefined;\n        }\n        }\n        }\n      \n            this.IsRequiredAmountPaid = \n                odataObject.IsRequiredAmountPaid;\n              \n            this.IsDiscountFullyCalculated = \n                odataObject.IsDiscountFullyCalculated;\n              \n            this.IgnoreDiscountCalculation = \n                odataObject.IgnoreDiscountCalculation;\n              \n            this.AmountDue = \n                (odataObject.AmountDue != null) ? parseFloat(odataObject.AmountDue) : undefined;\n              \n            this.EstimatedShippingAmount = \n                (odataObject.EstimatedShippingAmount != null) ? parseFloat(odataObject.EstimatedShippingAmount) : undefined;\n              \n            this.AmountPaid = \n                (odataObject.AmountPaid != null) ? parseFloat(odataObject.AmountPaid) : undefined;\n              \n            this.CustomerOrderRemainingBalance = \n                (odataObject.CustomerOrderRemainingBalance != null) ? parseFloat(odataObject.CustomerOrderRemainingBalance) : undefined;\n              \n        this.AttributeValues = undefined;\n        if (odataObject.AttributeValues) {\n        this.AttributeValues = [];\n        for (var i = 0; i < odataObject.AttributeValues.length; i++) {\n        if (odataObject.AttributeValues[i] != null) {\n        if (odataObject.AttributeValues[i]['@odata.type'] != null) {\n          var className: string = odataObject.AttributeValues[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.AttributeValues[i] = new entityDictionary[className](odataObject.AttributeValues[i])\n          }\n        } else {\n            this.AttributeValues[i] = new AttributeValueBaseClass(odataObject.AttributeValues[i]);\n        }\n                    } else {\n        this.AttributeValues[i] = undefined;\n        }\n        }\n        }\n      \n            this.AvailableDepositAmount = \n                (odataObject.AvailableDepositAmount != null) ? parseFloat(odataObject.AvailableDepositAmount) : undefined;\n              \n            this.BeginDateTime = \n                (odataObject.BeginDateTime instanceof Date) ? odataObject.BeginDateTime\n                : (odataObject.BeginDateTime != null) ? jsonLightReadStringPropertyValue(odataObject.BeginDateTime, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.CreatedDateTime = \n                (odataObject.CreatedDateTime instanceof Date) ? odataObject.CreatedDateTime\n                : (odataObject.CreatedDateTime != null) ? jsonLightReadStringPropertyValue(odataObject.CreatedDateTime, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.BusinessDate = \n                (odataObject.BusinessDate instanceof Date) ? odataObject.BusinessDate\n                : (odataObject.BusinessDate != null) ? jsonLightReadStringPropertyValue(odataObject.BusinessDate, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.CalculatedDepositAmount = \n                (odataObject.CalculatedDepositAmount != null) ? parseFloat(odataObject.CalculatedDepositAmount) : undefined;\n              \n            this.CancellationCharge = \n                (odataObject.CancellationCharge != null) ? parseFloat(odataObject.CancellationCharge) : undefined;\n              \n            this.ChannelId = \n                (odataObject.ChannelId != null) ? parseInt(odataObject.ChannelId, 10) : undefined;\n              \n            this.ChannelReferenceId = \n                odataObject.ChannelReferenceId;\n              \n            this.ChargeAmount = \n                (odataObject.ChargeAmount != null) ? parseFloat(odataObject.ChargeAmount) : undefined;\n              \n        this.ChargeLines = undefined;\n        if (odataObject.ChargeLines) {\n        this.ChargeLines = [];\n        for (var i = 0; i < odataObject.ChargeLines.length; i++) {\n        if (odataObject.ChargeLines[i] != null) {\n        if (odataObject.ChargeLines[i]['@odata.type'] != null) {\n          var className: string = odataObject.ChargeLines[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ChargeLines[i] = new entityDictionary[className](odataObject.ChargeLines[i])\n          }\n        } else {\n            this.ChargeLines[i] = new ChargeLineClass(odataObject.ChargeLines[i]);\n        }\n                    } else {\n        this.ChargeLines[i] = undefined;\n        }\n        }\n        }\n      \n            this.Comment = \n                odataObject.Comment;\n              \n        this.Coupons = undefined;\n        if (odataObject.Coupons) {\n        this.Coupons = [];\n        for (var i = 0; i < odataObject.Coupons.length; i++) {\n        if (odataObject.Coupons[i] != null) {\n        if (odataObject.Coupons[i]['@odata.type'] != null) {\n          var className: string = odataObject.Coupons[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.Coupons[i] = new entityDictionary[className](odataObject.Coupons[i])\n          }\n        } else {\n            this.Coupons[i] = new CouponClass(odataObject.Coupons[i]);\n        }\n                    } else {\n        this.Coupons[i] = undefined;\n        }\n        }\n        }\n      \n            this.InvoiceComment = \n                odataObject.InvoiceComment;\n              \n        this.ContactInformationCollection = undefined;\n        if (odataObject.ContactInformationCollection) {\n        this.ContactInformationCollection = [];\n        for (var i = 0; i < odataObject.ContactInformationCollection.length; i++) {\n        if (odataObject.ContactInformationCollection[i] != null) {\n        if (odataObject.ContactInformationCollection[i]['@odata.type'] != null) {\n          var className: string = odataObject.ContactInformationCollection[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ContactInformationCollection[i] = new entityDictionary[className](odataObject.ContactInformationCollection[i])\n          }\n        } else {\n            this.ContactInformationCollection[i] = new ContactInformationClass(odataObject.ContactInformationCollection[i]);\n        }\n                    } else {\n        this.ContactInformationCollection[i] = undefined;\n        }\n        }\n        }\n      \n            this.CurrencyCode = \n                odataObject.CurrencyCode;\n              \n        this.CustomerAccountDepositLines = undefined;\n        if (odataObject.CustomerAccountDepositLines) {\n        this.CustomerAccountDepositLines = [];\n        for (var i = 0; i < odataObject.CustomerAccountDepositLines.length; i++) {\n        if (odataObject.CustomerAccountDepositLines[i] != null) {\n        if (odataObject.CustomerAccountDepositLines[i]['@odata.type'] != null) {\n          var className: string = odataObject.CustomerAccountDepositLines[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.CustomerAccountDepositLines[i] = new entityDictionary[className](odataObject.CustomerAccountDepositLines[i])\n          }\n        } else {\n            this.CustomerAccountDepositLines[i] = new CustomerAccountDepositLineClass(odataObject.CustomerAccountDepositLines[i]);\n        }\n                    } else {\n        this.CustomerAccountDepositLines[i] = undefined;\n        }\n        }\n        }\n      \n            this.CustomerId = \n                odataObject.CustomerId;\n              \n            this.CustomerOrderModeValue = \n                odataObject.CustomerOrderModeValue;\n              \n            this.CustomerOrderTypeValue = \n                odataObject.CustomerOrderTypeValue;\n              \n            this.DeliveryMode = \n                odataObject.DeliveryMode;\n              \n            this.DeliveryModeChargeAmount = \n                (odataObject.DeliveryModeChargeAmount != null) ? parseFloat(odataObject.DeliveryModeChargeAmount) : undefined;\n              \n            this.DiscountAmount = \n                (odataObject.DiscountAmount != null) ? parseFloat(odataObject.DiscountAmount) : undefined;\n              \n            this.DiscountAmountWithoutTax = \n                (odataObject.DiscountAmountWithoutTax != null) ? parseFloat(odataObject.DiscountAmountWithoutTax) : undefined;\n              \n            this.NetPrice = \n                (odataObject.NetPrice != null) ? parseFloat(odataObject.NetPrice) : undefined;\n              \n        this.DiscountCodes = undefined;\n        if (odataObject.DiscountCodes) {\n        this.DiscountCodes = [];\n        for (var i = 0; i < odataObject.DiscountCodes.length; i++) {\n        if (odataObject.DiscountCodes[i] != null) {\n            this.DiscountCodes[i] = \n                odataObject.DiscountCodes[i];\n                            } else {\n        this.DiscountCodes[i] = undefined;\n        }\n        }\n        }\n      \n            this.EntryStatusValue = \n                odataObject.EntryStatusValue;\n              \n            this.GrossAmount = \n                (odataObject.GrossAmount != null) ? parseFloat(odataObject.GrossAmount) : undefined;\n              \n            this.HasLoyaltyPayment = \n                odataObject.HasLoyaltyPayment;\n              \n            this.Id = \n                odataObject.Id;\n              \n            this.InternalTransactionId = \n                odataObject.InternalTransactionId;\n              \n            this.SuspendedTransactionId = \n                odataObject.SuspendedTransactionId;\n              \n        this.IncomeExpenseLines = undefined;\n        if (odataObject.IncomeExpenseLines) {\n        this.IncomeExpenseLines = [];\n        for (var i = 0; i < odataObject.IncomeExpenseLines.length; i++) {\n        if (odataObject.IncomeExpenseLines[i] != null) {\n        if (odataObject.IncomeExpenseLines[i]['@odata.type'] != null) {\n          var className: string = odataObject.IncomeExpenseLines[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.IncomeExpenseLines[i] = new entityDictionary[className](odataObject.IncomeExpenseLines[i])\n          }\n        } else {\n            this.IncomeExpenseLines[i] = new IncomeExpenseLineClass(odataObject.IncomeExpenseLines[i]);\n        }\n                    } else {\n        this.IncomeExpenseLines[i] = undefined;\n        }\n        }\n        }\n      \n            this.IncomeExpenseTotalAmount = \n                (odataObject.IncomeExpenseTotalAmount != null) ? parseFloat(odataObject.IncomeExpenseTotalAmount) : undefined;\n              \n            this.InventoryLocationId = \n                odataObject.InventoryLocationId;\n              \n            this.IsCreatedOffline = \n                odataObject.IsCreatedOffline;\n              \n            this.IsReturnByReceipt = \n                odataObject.IsReturnByReceipt;\n              \n            this.IsSuspended = \n                odataObject.IsSuspended;\n              \n            this.IsTaxIncludedInPrice = \n                odataObject.IsTaxIncludedInPrice;\n              \n            this.IsTaxExemptedForPriceInclusive = \n                odataObject.IsTaxExemptedForPriceInclusive;\n              \n            this.LineDiscount = \n                (odataObject.LineDiscount != null) ? parseFloat(odataObject.LineDiscount) : undefined;\n              \n            this.LineDiscountCalculationTypeValue = \n                odataObject.LineDiscountCalculationTypeValue;\n              \n            this.LoyaltyCardId = \n                odataObject.LoyaltyCardId;\n              \n            this.LoyaltyDiscountAmount = \n                (odataObject.LoyaltyDiscountAmount != null) ? parseFloat(odataObject.LoyaltyDiscountAmount) : undefined;\n              \n            this.LoyaltyManualDiscountAmount = \n                (odataObject.LoyaltyManualDiscountAmount != null) ? parseFloat(odataObject.LoyaltyManualDiscountAmount) : undefined;\n              \n        this.LoyaltyRewardPointLines = undefined;\n        if (odataObject.LoyaltyRewardPointLines) {\n        this.LoyaltyRewardPointLines = [];\n        for (var i = 0; i < odataObject.LoyaltyRewardPointLines.length; i++) {\n        if (odataObject.LoyaltyRewardPointLines[i] != null) {\n        if (odataObject.LoyaltyRewardPointLines[i]['@odata.type'] != null) {\n          var className: string = odataObject.LoyaltyRewardPointLines[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.LoyaltyRewardPointLines[i] = new entityDictionary[className](odataObject.LoyaltyRewardPointLines[i])\n          }\n        } else {\n            this.LoyaltyRewardPointLines[i] = new LoyaltyRewardPointLineClass(odataObject.LoyaltyRewardPointLines[i]);\n        }\n                    } else {\n        this.LoyaltyRewardPointLines[i] = undefined;\n        }\n        }\n        }\n      \n            this.ModifiedDateTime = \n                (odataObject.ModifiedDateTime instanceof Date) ? odataObject.ModifiedDateTime\n                : (odataObject.ModifiedDateTime != null) ? jsonLightReadStringPropertyValue(odataObject.ModifiedDateTime, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.Name = \n                odataObject.Name;\n              \n            this.NetAmount = \n                (odataObject.NetAmount != null) ? parseFloat(odataObject.NetAmount) : undefined;\n              \n            this.NetAmountWithoutTax = \n                (odataObject.NetAmountWithoutTax != null) ? parseFloat(odataObject.NetAmountWithoutTax) : undefined;\n              \n            this.NetAmountWithNoTax = \n                (odataObject.NetAmountWithNoTax != null) ? parseFloat(odataObject.NetAmountWithNoTax) : undefined;\n              \n            this.NetAmountWithTax = \n                (odataObject.NetAmountWithTax != null) ? parseFloat(odataObject.NetAmountWithTax) : undefined;\n              \n            this.NumberOfItems = \n                (odataObject.NumberOfItems != null) ? parseFloat(odataObject.NumberOfItems) : undefined;\n              \n            this.OverriddenDepositAmount = \n                (odataObject.OverriddenDepositAmount != null) ? parseFloat(odataObject.OverriddenDepositAmount) : undefined;\n              \n            this.OverriddenDepositWithoutCarryoutAmount = \n                (odataObject.OverriddenDepositWithoutCarryoutAmount != null) ? parseFloat(odataObject.OverriddenDepositWithoutCarryoutAmount) : undefined;\n              \n            this.PeriodicDiscountAmount = \n                (odataObject.PeriodicDiscountAmount != null) ? parseFloat(odataObject.PeriodicDiscountAmount) : undefined;\n              \n            this.TenderDiscountAmount = \n                (odataObject.TenderDiscountAmount != null) ? parseFloat(odataObject.TenderDiscountAmount) : undefined;\n              \n            this.PrepaymentAmountAppliedOnPickup = \n                (odataObject.PrepaymentAmountAppliedOnPickup != null) ? parseFloat(odataObject.PrepaymentAmountAppliedOnPickup) : undefined;\n              \n            this.PrepaymentAmountInvoiced = \n                (odataObject.PrepaymentAmountInvoiced != null) ? parseFloat(odataObject.PrepaymentAmountInvoiced) : undefined;\n              \n            this.PrepaymentAmountPaid = \n                (odataObject.PrepaymentAmountPaid != null) ? parseFloat(odataObject.PrepaymentAmountPaid) : undefined;\n              \n            this.PrepaymentRoundingDifference = \n                (odataObject.PrepaymentRoundingDifference != null) ? parseFloat(odataObject.PrepaymentRoundingDifference) : undefined;\n              \n            this.QuotationExpiryDate = \n                (odataObject.QuotationExpiryDate instanceof Date) ? odataObject.QuotationExpiryDate\n                : (odataObject.QuotationExpiryDate != null) ? jsonLightReadStringPropertyValue(odataObject.QuotationExpiryDate, \"Edm.DateTimeOffset\", false) : undefined;\n              \n        this.ReasonCodeLines = undefined;\n        if (odataObject.ReasonCodeLines) {\n        this.ReasonCodeLines = [];\n        for (var i = 0; i < odataObject.ReasonCodeLines.length; i++) {\n        if (odataObject.ReasonCodeLines[i] != null) {\n        if (odataObject.ReasonCodeLines[i]['@odata.type'] != null) {\n          var className: string = odataObject.ReasonCodeLines[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ReasonCodeLines[i] = new entityDictionary[className](odataObject.ReasonCodeLines[i])\n          }\n        } else {\n            this.ReasonCodeLines[i] = new ReasonCodeLineClass(odataObject.ReasonCodeLines[i]);\n        }\n                    } else {\n        this.ReasonCodeLines[i] = undefined;\n        }\n        }\n        }\n      \n            this.ReceiptEmail = \n                odataObject.ReceiptEmail;\n              \n            this.ReceiptId = \n                odataObject.ReceiptId;\n              \n            this.RequestedDeliveryDate = \n                (odataObject.RequestedDeliveryDate instanceof Date) ? odataObject.RequestedDeliveryDate\n                : (odataObject.RequestedDeliveryDate != null) ? jsonLightReadStringPropertyValue(odataObject.RequestedDeliveryDate, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.ConfirmedShipDate = \n                (odataObject.ConfirmedShipDate instanceof Date) ? odataObject.ConfirmedShipDate\n                : (odataObject.ConfirmedShipDate != null) ? jsonLightReadStringPropertyValue(odataObject.ConfirmedShipDate, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.RequiredDepositAmount = \n                (odataObject.RequiredDepositAmount != null) ? parseFloat(odataObject.RequiredDepositAmount) : undefined;\n              \n            this.RequiredDepositWithoutCarryoutAmount = \n                (odataObject.RequiredDepositWithoutCarryoutAmount != null) ? parseFloat(odataObject.RequiredDepositWithoutCarryoutAmount) : undefined;\n              \n            this.ReturnTransactionHasLoyaltyPayment = \n                odataObject.ReturnTransactionHasLoyaltyPayment;\n              \n            this.SalesId = \n                odataObject.SalesId;\n              \n            this.SalesPaymentDifference = \n                (odataObject.SalesPaymentDifference != null) ? parseFloat(odataObject.SalesPaymentDifference) : undefined;\n              \n        this.SalesLines = undefined;\n        if (odataObject.SalesLines) {\n        this.SalesLines = [];\n        for (var i = 0; i < odataObject.SalesLines.length; i++) {\n        if (odataObject.SalesLines[i] != null) {\n        if (odataObject.SalesLines[i]['@odata.type'] != null) {\n          var className: string = odataObject.SalesLines[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.SalesLines[i] = new entityDictionary[className](odataObject.SalesLines[i])\n          }\n        } else {\n            this.SalesLines[i] = new SalesLineClass(odataObject.SalesLines[i]);\n        }\n                    } else {\n        this.SalesLines[i] = undefined;\n        }\n        }\n        }\n      \n            this.ShiftId = \n                (odataObject.ShiftId != null) ? parseInt(odataObject.ShiftId, 10) : undefined;\n              \n            this.ShiftTerminalId = \n                odataObject.ShiftTerminalId;\n              \n        if (odataObject.ShippingAddress == null) {\n            this.ShippingAddress = undefined;\n        } else if (odataObject.ShippingAddress['@odata.type'] == null) {\n            this.ShippingAddress = new AddressClass(odataObject.ShippingAddress);\n        } else {\n            var className: string = odataObject.ShippingAddress['@odata.type'];\n            className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n            if (entityDictionary[className]) {\n                this.ShippingAddress = new entityDictionary[className](odataObject.ShippingAddress)\n            }\n        }\n\n      \n            this.StaffId = \n                odataObject.StaffId;\n              \n            this.StatementCode = \n                odataObject.StatementCode;\n              \n            this.StoreId = \n                odataObject.StoreId;\n              \n            this.SubtotalAmount = \n                (odataObject.SubtotalAmount != null) ? parseFloat(odataObject.SubtotalAmount) : undefined;\n              \n            this.SubtotalAmountWithoutTax = \n                (odataObject.SubtotalAmountWithoutTax != null) ? parseFloat(odataObject.SubtotalAmountWithoutTax) : undefined;\n              \n            this.SubtotalSalesAmount = \n                (odataObject.SubtotalSalesAmount != null) ? parseFloat(odataObject.SubtotalSalesAmount) : undefined;\n              \n            this.TaxAmount = \n                (odataObject.TaxAmount != null) ? parseFloat(odataObject.TaxAmount) : undefined;\n              \n            this.TaxAmountExclusive = \n                (odataObject.TaxAmountExclusive != null) ? parseFloat(odataObject.TaxAmountExclusive) : undefined;\n              \n            this.TaxAmountInclusive = \n                (odataObject.TaxAmountInclusive != null) ? parseFloat(odataObject.TaxAmountInclusive) : undefined;\n              \n        this.TaxLines = undefined;\n        if (odataObject.TaxLines) {\n        this.TaxLines = [];\n        for (var i = 0; i < odataObject.TaxLines.length; i++) {\n        if (odataObject.TaxLines[i] != null) {\n        if (odataObject.TaxLines[i]['@odata.type'] != null) {\n          var className: string = odataObject.TaxLines[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.TaxLines[i] = new entityDictionary[className](odataObject.TaxLines[i])\n          }\n        } else {\n            this.TaxLines[i] = new TaxLineClass(odataObject.TaxLines[i]);\n        }\n                    } else {\n        this.TaxLines[i] = undefined;\n        }\n        }\n        }\n      \n            this.TaxOnCancellationCharge = \n                (odataObject.TaxOnCancellationCharge != null) ? parseFloat(odataObject.TaxOnCancellationCharge) : undefined;\n              \n            this.TaxOnShippingCharge = \n                (odataObject.TaxOnShippingCharge != null) ? parseFloat(odataObject.TaxOnShippingCharge) : undefined;\n              \n            this.TaxOnNonShippingCharges = \n                (odataObject.TaxOnNonShippingCharges != null) ? parseFloat(odataObject.TaxOnNonShippingCharges) : undefined;\n              \n            this.TaxOverrideCode = \n                odataObject.TaxOverrideCode;\n              \n        this.TenderLines = undefined;\n        if (odataObject.TenderLines) {\n        this.TenderLines = [];\n        for (var i = 0; i < odataObject.TenderLines.length; i++) {\n        if (odataObject.TenderLines[i] != null) {\n        if (odataObject.TenderLines[i]['@odata.type'] != null) {\n          var className: string = odataObject.TenderLines[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.TenderLines[i] = new entityDictionary[className](odataObject.TenderLines[i])\n          }\n        } else {\n            this.TenderLines[i] = new TenderLineClass(odataObject.TenderLines[i]);\n        }\n                    } else {\n        this.TenderLines[i] = undefined;\n        }\n        }\n        }\n      \n        this.RefundableTenderLines = undefined;\n        if (odataObject.RefundableTenderLines) {\n        this.RefundableTenderLines = [];\n        for (var i = 0; i < odataObject.RefundableTenderLines.length; i++) {\n        if (odataObject.RefundableTenderLines[i] != null) {\n        if (odataObject.RefundableTenderLines[i]['@odata.type'] != null) {\n          var className: string = odataObject.RefundableTenderLines[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.RefundableTenderLines[i] = new entityDictionary[className](odataObject.RefundableTenderLines[i])\n          }\n        } else {\n            this.RefundableTenderLines[i] = new TenderLineClass(odataObject.RefundableTenderLines[i]);\n        }\n                    } else {\n        this.RefundableTenderLines[i] = undefined;\n        }\n        }\n        }\n      \n            this.TerminalId = \n                odataObject.TerminalId;\n              \n            this.TotalAmount = \n                (odataObject.TotalAmount != null) ? parseFloat(odataObject.TotalAmount) : undefined;\n              \n            this.TotalSalesAmount = \n                (odataObject.TotalSalesAmount != null) ? parseFloat(odataObject.TotalSalesAmount) : undefined;\n              \n            this.TotalReturnAmount = \n                (odataObject.TotalReturnAmount != null) ? parseFloat(odataObject.TotalReturnAmount) : undefined;\n              \n            this.TotalCarryoutSalesAmount = \n                (odataObject.TotalCarryoutSalesAmount != null) ? parseFloat(odataObject.TotalCarryoutSalesAmount) : undefined;\n              \n            this.TotalCustomerOrderSalesAmount = \n                (odataObject.TotalCustomerOrderSalesAmount != null) ? parseFloat(odataObject.TotalCustomerOrderSalesAmount) : undefined;\n              \n            this.TotalDiscount = \n                (odataObject.TotalDiscount != null) ? parseFloat(odataObject.TotalDiscount) : undefined;\n              \n            this.TotalManualDiscountAmount = \n                (odataObject.TotalManualDiscountAmount != null) ? parseFloat(odataObject.TotalManualDiscountAmount) : undefined;\n              \n            this.TotalManualDiscountPercentage = \n                (odataObject.TotalManualDiscountPercentage != null) ? parseFloat(odataObject.TotalManualDiscountPercentage) : undefined;\n              \n            this.TransactionTypeValue = \n                odataObject.TransactionTypeValue;\n              \n            this.TaxCalculationTypeValue = \n                odataObject.TaxCalculationTypeValue;\n              \n            this.SalesInvoiceAmount = \n                (odataObject.SalesInvoiceAmount != null) ? parseFloat(odataObject.SalesInvoiceAmount) : undefined;\n              \n            this.GiftCardActiveFrom = \n                (odataObject.GiftCardActiveFrom instanceof Date) ? odataObject.GiftCardActiveFrom\n                : (odataObject.GiftCardActiveFrom != null) ? jsonLightReadStringPropertyValue(odataObject.GiftCardActiveFrom, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.GiftCardBalance = \n                (odataObject.GiftCardBalance != null) ? parseFloat(odataObject.GiftCardBalance) : undefined;\n              \n            this.GiftCardExpireDate = \n                (odataObject.GiftCardExpireDate instanceof Date) ? odataObject.GiftCardExpireDate\n                : (odataObject.GiftCardExpireDate != null) ? jsonLightReadStringPropertyValue(odataObject.GiftCardExpireDate, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.GiftCardHistoryDetails = \n                odataObject.GiftCardHistoryDetails;\n              \n            this.GiftCardIssueAmount = \n                (odataObject.GiftCardIssueAmount != null) ? parseFloat(odataObject.GiftCardIssueAmount) : undefined;\n              \n            this.GiftCardIdMasked = \n                odataObject.GiftCardIdMasked;\n              \n            this.CommissionSalesGroup = \n                odataObject.CommissionSalesGroup;\n              \n            this.IsCommissionSalesGroupOverriddenByCustomer = \n                odataObject.IsCommissionSalesGroupOverriddenByCustomer;\n              \n            this.CommissionSalesGroupSetByCashier = \n                odataObject.CommissionSalesGroupSetByCashier;\n              \n            this.HasTaxCalculationTriggered = \n                odataObject.HasTaxCalculationTriggered;\n              \n            this.HasChargeCalculationTriggered = \n                odataObject.HasChargeCalculationTriggered;\n              \n            this.ShippingChargeAmount = \n                (odataObject.ShippingChargeAmount != null) ? parseFloat(odataObject.ShippingChargeAmount) : undefined;\n              \n            this.OtherChargeAmount = \n                (odataObject.OtherChargeAmount != null) ? parseFloat(odataObject.OtherChargeAmount) : undefined;\n              \n            this.PeriodicDiscountsCalculateScopeValue = \n                odataObject.PeriodicDiscountsCalculateScopeValue;\n              \n            this.CustomerName = \n                odataObject.CustomerName;\n              \n            this.OriginalOrderTransactionId = \n                odataObject.OriginalOrderTransactionId;\n              \n        this.Notes = undefined;\n        if (odataObject.Notes) {\n        this.Notes = [];\n        for (var i = 0; i < odataObject.Notes.length; i++) {\n        if (odataObject.Notes[i] != null) {\n        if (odataObject.Notes[i]['@odata.type'] != null) {\n          var className: string = odataObject.Notes[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.Notes[i] = new entityDictionary[className](odataObject.Notes[i])\n          }\n        } else {\n            this.Notes[i] = new NoteClass(odataObject.Notes[i]);\n        }\n                    } else {\n        this.Notes[i] = undefined;\n        }\n        }\n        }\n      \n            this.CustomerRequisition = \n                odataObject.CustomerRequisition;\n              \n        this.FiscalTransactions = undefined;\n        if (odataObject.FiscalTransactions) {\n        this.FiscalTransactions = [];\n        for (var i = 0; i < odataObject.FiscalTransactions.length; i++) {\n        if (odataObject.FiscalTransactions[i] != null) {\n        if (odataObject.FiscalTransactions[i]['@odata.type'] != null) {\n          var className: string = odataObject.FiscalTransactions[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.FiscalTransactions[i] = new entityDictionary[className](odataObject.FiscalTransactions[i])\n          }\n        } else {\n            this.FiscalTransactions[i] = new FiscalTransactionClass(odataObject.FiscalTransactions[i]);\n        }\n                    } else {\n        this.FiscalTransactions[i] = undefined;\n        }\n        }\n        }\n      \n            this.LanguageId = \n                odataObject.LanguageId;\n              \n            this.SalesAgreementRecordId = \n                (odataObject.SalesAgreementRecordId != null) ? parseInt(odataObject.SalesAgreementRecordId, 10) : undefined;\n              \n            this.TransactionDate = \n                (odataObject.TransactionDate instanceof Date) ? odataObject.TransactionDate\n                : (odataObject.TransactionDate != null) ? jsonLightReadStringPropertyValue(odataObject.TransactionDate, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.TransactionTime = \n                odataObject.TransactionTime;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['SalesOrderClass'] = SalesOrderClass;\n    \n      /**\n      * Shift entity class.\n      */\n      export class ShiftClass implements Entities.Shift {\n      public ShiftId: number;\n      public TerminalId: string;\n      public StartingAmountTotal: number;\n      public FloatingEntryAmountTotal: number;\n      public AddToTenderAmountTotal: number;\n      public SafeDropTotal: number;\n      public BankDropTotal: number;\n      public RemoveTenderAmountTotal: number;\n      public DeclareTenderAmountTotal: number;\n      public OverShortTotal: number;\n      public TenderedTotal: number;\n      public ChangeTotal: number;\n      public IncomeAccountTotal: number;\n      public ExpenseAccountTotal: number;\n      public CashDrawer: string;\n      public StoreRecordId: number;\n      public StoreId: string;\n      public StaffId: string;\n      public CurrentStaffId: string;\n      public StatusValue: number;\n      public StartDateTime: Date;\n      public CloseDateTime: Date;\n      public ClosedAtTerminalId: string;\n      public ClosedAtShiftId: number;\n      public CurrentTerminalId: string;\n      public SalesTotal: number;\n      public StatusDateTime: Date;\n      public ReturnsTotal: number;\n      public PaidToAccountTotal: number;\n      public TaxTotal: number;\n      public ChargeTotal: number;\n      public DiscountTotal: number;\n      public RoundedAmountTotal: number;\n      public CustomerCount: number;\n      public SaleTransactionCount: number;\n      public NoSaleTransactionCount: number;\n      public VoidTransactionCount: number;\n      public LogOnTransactionCount: number;\n      public SuspendedTransactionCount: number;\n      public TransactionCount: number;\n      public ReceiptsCount: number;\n      public ReturnsCount: number;\n      public GoodsSoldQty: number;\n      public ServicesSoldQty: number;\n      public ReceiptCopiesCount: number;\n      public ReceiptCopiesTotal: number;\n      public PriceOverrideTotal: number;\n      public SuspendedTotal: number;\n      public SalesTotalIncludingTax: number;\n      public SalesTotalExcludingTax: number;\n      public SalesGrandTotal: number;\n      public ReturnsGrandTotal: number;\n      public TaxLines: Entities.ShiftTaxLine[];\n      public TenderLines: Entities.ShiftTenderLine[];\n      public AccountLines: Entities.ShiftAccountLine[];\n      public IsShared: boolean;\n      public StartingAmountRunningTotal: number;\n      public GiftCardsTotal: number;\n      public GiftCardCashOutTotal: number;\n      public VoidedSalesTotal: number;\n      public ShiftSalesTotal: number;\n      public ShiftReturnsTotal: number;\n      public HasPendingOfflineTransactions: number;\n      public NumberOfUnreconciledLines: number;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.ShiftId = \n                (odataObject.ShiftId != null) ? parseInt(odataObject.ShiftId, 10) : undefined;\n              \n            this.TerminalId = \n                odataObject.TerminalId;\n              \n            this.StartingAmountTotal = \n                (odataObject.StartingAmountTotal != null) ? parseFloat(odataObject.StartingAmountTotal) : undefined;\n              \n            this.FloatingEntryAmountTotal = \n                (odataObject.FloatingEntryAmountTotal != null) ? parseFloat(odataObject.FloatingEntryAmountTotal) : undefined;\n              \n            this.AddToTenderAmountTotal = \n                (odataObject.AddToTenderAmountTotal != null) ? parseFloat(odataObject.AddToTenderAmountTotal) : undefined;\n              \n            this.SafeDropTotal = \n                (odataObject.SafeDropTotal != null) ? parseFloat(odataObject.SafeDropTotal) : undefined;\n              \n            this.BankDropTotal = \n                (odataObject.BankDropTotal != null) ? parseFloat(odataObject.BankDropTotal) : undefined;\n              \n            this.RemoveTenderAmountTotal = \n                (odataObject.RemoveTenderAmountTotal != null) ? parseFloat(odataObject.RemoveTenderAmountTotal) : undefined;\n              \n            this.DeclareTenderAmountTotal = \n                (odataObject.DeclareTenderAmountTotal != null) ? parseFloat(odataObject.DeclareTenderAmountTotal) : undefined;\n              \n            this.OverShortTotal = \n                (odataObject.OverShortTotal != null) ? parseFloat(odataObject.OverShortTotal) : undefined;\n              \n            this.TenderedTotal = \n                (odataObject.TenderedTotal != null) ? parseFloat(odataObject.TenderedTotal) : undefined;\n              \n            this.ChangeTotal = \n                (odataObject.ChangeTotal != null) ? parseFloat(odataObject.ChangeTotal) : undefined;\n              \n            this.IncomeAccountTotal = \n                (odataObject.IncomeAccountTotal != null) ? parseFloat(odataObject.IncomeAccountTotal) : undefined;\n              \n            this.ExpenseAccountTotal = \n                (odataObject.ExpenseAccountTotal != null) ? parseFloat(odataObject.ExpenseAccountTotal) : undefined;\n              \n            this.CashDrawer = \n                odataObject.CashDrawer;\n              \n            this.StoreRecordId = \n                (odataObject.StoreRecordId != null) ? parseInt(odataObject.StoreRecordId, 10) : undefined;\n              \n            this.StoreId = \n                odataObject.StoreId;\n              \n            this.StaffId = \n                odataObject.StaffId;\n              \n            this.CurrentStaffId = \n                odataObject.CurrentStaffId;\n              \n            this.StatusValue = \n                odataObject.StatusValue;\n              \n            this.StartDateTime = \n                (odataObject.StartDateTime instanceof Date) ? odataObject.StartDateTime\n                : (odataObject.StartDateTime != null) ? jsonLightReadStringPropertyValue(odataObject.StartDateTime, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.CloseDateTime = \n                (odataObject.CloseDateTime instanceof Date) ? odataObject.CloseDateTime\n                : (odataObject.CloseDateTime != null) ? jsonLightReadStringPropertyValue(odataObject.CloseDateTime, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.ClosedAtTerminalId = \n                odataObject.ClosedAtTerminalId;\n              \n            this.ClosedAtShiftId = \n                (odataObject.ClosedAtShiftId != null) ? parseInt(odataObject.ClosedAtShiftId, 10) : undefined;\n              \n            this.CurrentTerminalId = \n                odataObject.CurrentTerminalId;\n              \n            this.SalesTotal = \n                (odataObject.SalesTotal != null) ? parseFloat(odataObject.SalesTotal) : undefined;\n              \n            this.StatusDateTime = \n                (odataObject.StatusDateTime instanceof Date) ? odataObject.StatusDateTime\n                : (odataObject.StatusDateTime != null) ? jsonLightReadStringPropertyValue(odataObject.StatusDateTime, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.ReturnsTotal = \n                (odataObject.ReturnsTotal != null) ? parseFloat(odataObject.ReturnsTotal) : undefined;\n              \n            this.PaidToAccountTotal = \n                (odataObject.PaidToAccountTotal != null) ? parseFloat(odataObject.PaidToAccountTotal) : undefined;\n              \n            this.TaxTotal = \n                (odataObject.TaxTotal != null) ? parseFloat(odataObject.TaxTotal) : undefined;\n              \n            this.ChargeTotal = \n                (odataObject.ChargeTotal != null) ? parseFloat(odataObject.ChargeTotal) : undefined;\n              \n            this.DiscountTotal = \n                (odataObject.DiscountTotal != null) ? parseFloat(odataObject.DiscountTotal) : undefined;\n              \n            this.RoundedAmountTotal = \n                (odataObject.RoundedAmountTotal != null) ? parseFloat(odataObject.RoundedAmountTotal) : undefined;\n              \n            this.CustomerCount = \n                odataObject.CustomerCount;\n              \n            this.SaleTransactionCount = \n                odataObject.SaleTransactionCount;\n              \n            this.NoSaleTransactionCount = \n                odataObject.NoSaleTransactionCount;\n              \n            this.VoidTransactionCount = \n                odataObject.VoidTransactionCount;\n              \n            this.LogOnTransactionCount = \n                odataObject.LogOnTransactionCount;\n              \n            this.SuspendedTransactionCount = \n                odataObject.SuspendedTransactionCount;\n              \n            this.TransactionCount = \n                odataObject.TransactionCount;\n              \n            this.ReceiptsCount = \n                odataObject.ReceiptsCount;\n              \n            this.ReturnsCount = \n                odataObject.ReturnsCount;\n              \n            this.GoodsSoldQty = \n                (odataObject.GoodsSoldQty != null) ? parseFloat(odataObject.GoodsSoldQty) : undefined;\n              \n            this.ServicesSoldQty = \n                (odataObject.ServicesSoldQty != null) ? parseFloat(odataObject.ServicesSoldQty) : undefined;\n              \n            this.ReceiptCopiesCount = \n                odataObject.ReceiptCopiesCount;\n              \n            this.ReceiptCopiesTotal = \n                (odataObject.ReceiptCopiesTotal != null) ? parseFloat(odataObject.ReceiptCopiesTotal) : undefined;\n              \n            this.PriceOverrideTotal = \n                (odataObject.PriceOverrideTotal != null) ? parseFloat(odataObject.PriceOverrideTotal) : undefined;\n              \n            this.SuspendedTotal = \n                (odataObject.SuspendedTotal != null) ? parseFloat(odataObject.SuspendedTotal) : undefined;\n              \n            this.SalesTotalIncludingTax = \n                (odataObject.SalesTotalIncludingTax != null) ? parseFloat(odataObject.SalesTotalIncludingTax) : undefined;\n              \n            this.SalesTotalExcludingTax = \n                (odataObject.SalesTotalExcludingTax != null) ? parseFloat(odataObject.SalesTotalExcludingTax) : undefined;\n              \n            this.SalesGrandTotal = \n                (odataObject.SalesGrandTotal != null) ? parseFloat(odataObject.SalesGrandTotal) : undefined;\n              \n            this.ReturnsGrandTotal = \n                (odataObject.ReturnsGrandTotal != null) ? parseFloat(odataObject.ReturnsGrandTotal) : undefined;\n              \n        this.TaxLines = undefined;\n        if (odataObject.TaxLines) {\n        this.TaxLines = [];\n        for (var i = 0; i < odataObject.TaxLines.length; i++) {\n        if (odataObject.TaxLines[i] != null) {\n        if (odataObject.TaxLines[i]['@odata.type'] != null) {\n          var className: string = odataObject.TaxLines[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.TaxLines[i] = new entityDictionary[className](odataObject.TaxLines[i])\n          }\n        } else {\n            this.TaxLines[i] = new ShiftTaxLineClass(odataObject.TaxLines[i]);\n        }\n                    } else {\n        this.TaxLines[i] = undefined;\n        }\n        }\n        }\n      \n        this.TenderLines = undefined;\n        if (odataObject.TenderLines) {\n        this.TenderLines = [];\n        for (var i = 0; i < odataObject.TenderLines.length; i++) {\n        if (odataObject.TenderLines[i] != null) {\n        if (odataObject.TenderLines[i]['@odata.type'] != null) {\n          var className: string = odataObject.TenderLines[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.TenderLines[i] = new entityDictionary[className](odataObject.TenderLines[i])\n          }\n        } else {\n            this.TenderLines[i] = new ShiftTenderLineClass(odataObject.TenderLines[i]);\n        }\n                    } else {\n        this.TenderLines[i] = undefined;\n        }\n        }\n        }\n      \n        this.AccountLines = undefined;\n        if (odataObject.AccountLines) {\n        this.AccountLines = [];\n        for (var i = 0; i < odataObject.AccountLines.length; i++) {\n        if (odataObject.AccountLines[i] != null) {\n        if (odataObject.AccountLines[i]['@odata.type'] != null) {\n          var className: string = odataObject.AccountLines[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.AccountLines[i] = new entityDictionary[className](odataObject.AccountLines[i])\n          }\n        } else {\n            this.AccountLines[i] = new ShiftAccountLineClass(odataObject.AccountLines[i]);\n        }\n                    } else {\n        this.AccountLines[i] = undefined;\n        }\n        }\n        }\n      \n            this.IsShared = \n                odataObject.IsShared;\n              \n            this.StartingAmountRunningTotal = \n                (odataObject.StartingAmountRunningTotal != null) ? parseFloat(odataObject.StartingAmountRunningTotal) : undefined;\n              \n            this.GiftCardsTotal = \n                (odataObject.GiftCardsTotal != null) ? parseFloat(odataObject.GiftCardsTotal) : undefined;\n              \n            this.GiftCardCashOutTotal = \n                (odataObject.GiftCardCashOutTotal != null) ? parseFloat(odataObject.GiftCardCashOutTotal) : undefined;\n              \n            this.VoidedSalesTotal = \n                (odataObject.VoidedSalesTotal != null) ? parseFloat(odataObject.VoidedSalesTotal) : undefined;\n              \n            this.ShiftSalesTotal = \n                (odataObject.ShiftSalesTotal != null) ? parseFloat(odataObject.ShiftSalesTotal) : undefined;\n              \n            this.ShiftReturnsTotal = \n                (odataObject.ShiftReturnsTotal != null) ? parseFloat(odataObject.ShiftReturnsTotal) : undefined;\n              \n            this.HasPendingOfflineTransactions = \n                odataObject.HasPendingOfflineTransactions;\n              \n            this.NumberOfUnreconciledLines = \n                (odataObject.NumberOfUnreconciledLines != null) ? parseFloat(odataObject.NumberOfUnreconciledLines) : undefined;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['ShiftClass'] = ShiftClass;\n    \n      /**\n      * StockCountJournal entity class.\n      */\n      export class StockCountJournalClass implements Entities.StockCountJournal {\n      public JournalId: string;\n      public RecordId: string;\n      public Description: string;\n      public InventLocationId: string;\n      public DataAreaId: string;\n      public StockCountTransactionLines: Entities.StockCountJournalTransaction[];\n      public Worker: string;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.JournalId = \n                odataObject.JournalId;\n              \n            this.RecordId = \n                odataObject.RecordId;\n              \n            this.Description = \n                odataObject.Description;\n              \n            this.InventLocationId = \n                odataObject.InventLocationId;\n              \n            this.DataAreaId = \n                odataObject.DataAreaId;\n              \n        this.StockCountTransactionLines = undefined;\n        if (odataObject.StockCountTransactionLines) {\n        this.StockCountTransactionLines = [];\n        for (var i = 0; i < odataObject.StockCountTransactionLines.length; i++) {\n        if (odataObject.StockCountTransactionLines[i] != null) {\n        if (odataObject.StockCountTransactionLines[i]['@odata.type'] != null) {\n          var className: string = odataObject.StockCountTransactionLines[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.StockCountTransactionLines[i] = new entityDictionary[className](odataObject.StockCountTransactionLines[i])\n          }\n        } else {\n            this.StockCountTransactionLines[i] = new StockCountJournalTransactionClass(odataObject.StockCountTransactionLines[i]);\n        }\n                    } else {\n        this.StockCountTransactionLines[i] = undefined;\n        }\n        }\n        }\n      \n            this.Worker = \n                odataObject.Worker;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['StockCountJournalClass'] = StockCountJournalClass;\n    \n      /**\n      * OrgUnit entity class.\n      */\n      export class OrgUnitClass implements Entities.OrgUnit {\n      public OrgUnitNumber: string;\n      public RecordId: number;\n      public InventoryLocationId: string;\n      public TaxGroup: string;\n      public FunctionalityProfileId: string;\n      public UseCustomerBasedTax: boolean;\n      public UseCustomerBasedTaxExemption: boolean;\n      public UseDestinationBasedTax: boolean;\n      public Currency: string;\n      public TimeZoneCode: number;\n      public OrgUnitAddress: Entities.Address;\n      public OrgUnitFullAddress: string;\n      public OrgUnitName: string;\n      public Latitude: number;\n      public Longitude: number;\n      public EmailReceiptProfileId: string;\n      public ShippingWarehouseAddress: Entities.Address;\n      public TaxRegistrations: Entities.TaxRegistration[];\n      public EventNotificationProfileId: string;\n      public OMOperatingUnitNumber: string;\n      public Name: string;\n      public DefaultCustomerAccount: string;\n      public CategoryHierarchyId: number;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.OrgUnitNumber = \n                odataObject.OrgUnitNumber;\n              \n            this.RecordId = \n                (odataObject.RecordId != null) ? parseInt(odataObject.RecordId, 10) : undefined;\n              \n            this.InventoryLocationId = \n                odataObject.InventoryLocationId;\n              \n            this.TaxGroup = \n                odataObject.TaxGroup;\n              \n            this.FunctionalityProfileId = \n                odataObject.FunctionalityProfileId;\n              \n            this.UseCustomerBasedTax = \n                odataObject.UseCustomerBasedTax;\n              \n            this.UseCustomerBasedTaxExemption = \n                odataObject.UseCustomerBasedTaxExemption;\n              \n            this.UseDestinationBasedTax = \n                odataObject.UseDestinationBasedTax;\n              \n            this.Currency = \n                odataObject.Currency;\n              \n            this.TimeZoneCode = \n                odataObject.TimeZoneCode;\n              \n        if (odataObject.OrgUnitAddress == null) {\n            this.OrgUnitAddress = undefined;\n        } else if (odataObject.OrgUnitAddress['@odata.type'] == null) {\n            this.OrgUnitAddress = new AddressClass(odataObject.OrgUnitAddress);\n        } else {\n            var className: string = odataObject.OrgUnitAddress['@odata.type'];\n            className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n            if (entityDictionary[className]) {\n                this.OrgUnitAddress = new entityDictionary[className](odataObject.OrgUnitAddress)\n            }\n        }\n\n      \n            this.OrgUnitFullAddress = \n                odataObject.OrgUnitFullAddress;\n              \n            this.OrgUnitName = \n                odataObject.OrgUnitName;\n              \n            this.Latitude = \n                (odataObject.Latitude != null) ? parseFloat(odataObject.Latitude) : undefined;\n              \n            this.Longitude = \n                (odataObject.Longitude != null) ? parseFloat(odataObject.Longitude) : undefined;\n              \n            this.EmailReceiptProfileId = \n                odataObject.EmailReceiptProfileId;\n              \n        if (odataObject.ShippingWarehouseAddress == null) {\n            this.ShippingWarehouseAddress = undefined;\n        } else if (odataObject.ShippingWarehouseAddress['@odata.type'] == null) {\n            this.ShippingWarehouseAddress = new AddressClass(odataObject.ShippingWarehouseAddress);\n        } else {\n            var className: string = odataObject.ShippingWarehouseAddress['@odata.type'];\n            className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n            if (entityDictionary[className]) {\n                this.ShippingWarehouseAddress = new entityDictionary[className](odataObject.ShippingWarehouseAddress)\n            }\n        }\n\n      \n        this.TaxRegistrations = undefined;\n        if (odataObject.TaxRegistrations) {\n        this.TaxRegistrations = [];\n        for (var i = 0; i < odataObject.TaxRegistrations.length; i++) {\n        if (odataObject.TaxRegistrations[i] != null) {\n        if (odataObject.TaxRegistrations[i]['@odata.type'] != null) {\n          var className: string = odataObject.TaxRegistrations[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.TaxRegistrations[i] = new entityDictionary[className](odataObject.TaxRegistrations[i])\n          }\n        } else {\n            this.TaxRegistrations[i] = new TaxRegistrationClass(odataObject.TaxRegistrations[i]);\n        }\n                    } else {\n        this.TaxRegistrations[i] = undefined;\n        }\n        }\n        }\n      \n            this.EventNotificationProfileId = \n                odataObject.EventNotificationProfileId;\n              \n            this.OMOperatingUnitNumber = \n                odataObject.OMOperatingUnitNumber;\n              \n            this.Name = \n                odataObject.Name;\n              \n            this.DefaultCustomerAccount = \n                odataObject.DefaultCustomerAccount;\n              \n            this.CategoryHierarchyId = \n                (odataObject.CategoryHierarchyId != null) ? parseInt(odataObject.CategoryHierarchyId, 10) : undefined;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['OrgUnitClass'] = OrgUnitClass;\n    \n      /**\n      * Product entity class.\n      */\n      export class ProductClass implements Entities.Product {\n      public RecordId: number;\n      public ProductName: string;\n      public ProductNumber: string;\n      public Description: string;\n      public IsMasterProduct: boolean;\n      public IsKit: boolean;\n      public ItemId: string;\n      public HasLinkedProducts: boolean;\n      public Rules: Entities.ProductRules;\n      public DefaultUnitOfMeasure: string;\n      public Name: string;\n      public Locale: string;\n      public OfflineImage: string;\n      public IsRemote: boolean;\n      public ChangeTrackingInformation: Entities.ProductChangeTrackingInformation;\n      public Image: Entities.RichMediaLocations;\n      public UnitsOfMeasureSymbol: string[];\n      public LinkedProducts: Entities.LinkedProduct[];\n      public BasePrice: number;\n      public Price: number;\n      public AdjustedPrice: number;\n      public RetailContext: Entities.ProjectionDomain;\n      public PrimaryCategoryId: number;\n      public CategoryIds: number[];\n      public DisplayOrderInCategories: Entities.DisplayOrderInCategory[];\n      public RelatedProducts: Entities.RelatedProduct[];\n      public ProductsRelatedToThis: Entities.RelatedProduct[];\n      public ProductSchema: string[];\n      public ProductProperties: Entities.ProductPropertyTranslation[];\n      public CompositionInformation: Entities.ProductCompositionInformation;\n      public ParentKits: Entities.KitComponent[];\n      public SearchName: string;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.RecordId = \n                (odataObject.RecordId != null) ? parseInt(odataObject.RecordId, 10) : undefined;\n              \n            this.ProductName = \n                odataObject.ProductName;\n              \n            this.ProductNumber = \n                odataObject.ProductNumber;\n              \n            this.Description = \n                odataObject.Description;\n              \n            this.IsMasterProduct = \n                odataObject.IsMasterProduct;\n              \n            this.IsKit = \n                odataObject.IsKit;\n              \n            this.ItemId = \n                odataObject.ItemId;\n              \n            this.HasLinkedProducts = \n                odataObject.HasLinkedProducts;\n              \n        if (odataObject.Rules == null) {\n            this.Rules = undefined;\n        } else if (odataObject.Rules['@odata.type'] == null) {\n            this.Rules = new ProductRulesClass(odataObject.Rules);\n        } else {\n            var className: string = odataObject.Rules['@odata.type'];\n            className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n            if (entityDictionary[className]) {\n                this.Rules = new entityDictionary[className](odataObject.Rules)\n            }\n        }\n\n      \n            this.DefaultUnitOfMeasure = \n                odataObject.DefaultUnitOfMeasure;\n              \n            this.Name = \n                odataObject.Name;\n              \n            this.Locale = \n                odataObject.Locale;\n              \n            this.OfflineImage = \n                odataObject.OfflineImage;\n              \n            this.IsRemote = \n                odataObject.IsRemote;\n              \n        if (odataObject.ChangeTrackingInformation == null) {\n            this.ChangeTrackingInformation = undefined;\n        } else if (odataObject.ChangeTrackingInformation['@odata.type'] == null) {\n            this.ChangeTrackingInformation = new ProductChangeTrackingInformationClass(odataObject.ChangeTrackingInformation);\n        } else {\n            var className: string = odataObject.ChangeTrackingInformation['@odata.type'];\n            className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n            if (entityDictionary[className]) {\n                this.ChangeTrackingInformation = new entityDictionary[className](odataObject.ChangeTrackingInformation)\n            }\n        }\n\n      \n        if (odataObject.Image == null) {\n            this.Image = undefined;\n        } else if (odataObject.Image['@odata.type'] == null) {\n            this.Image = new RichMediaLocationsClass(odataObject.Image);\n        } else {\n            var className: string = odataObject.Image['@odata.type'];\n            className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n            if (entityDictionary[className]) {\n                this.Image = new entityDictionary[className](odataObject.Image)\n            }\n        }\n\n      \n        this.UnitsOfMeasureSymbol = undefined;\n        if (odataObject.UnitsOfMeasureSymbol) {\n        this.UnitsOfMeasureSymbol = [];\n        for (var i = 0; i < odataObject.UnitsOfMeasureSymbol.length; i++) {\n        if (odataObject.UnitsOfMeasureSymbol[i] != null) {\n            this.UnitsOfMeasureSymbol[i] = \n                odataObject.UnitsOfMeasureSymbol[i];\n                            } else {\n        this.UnitsOfMeasureSymbol[i] = undefined;\n        }\n        }\n        }\n      \n        this.LinkedProducts = undefined;\n        if (odataObject.LinkedProducts) {\n        this.LinkedProducts = [];\n        for (var i = 0; i < odataObject.LinkedProducts.length; i++) {\n        if (odataObject.LinkedProducts[i] != null) {\n        if (odataObject.LinkedProducts[i]['@odata.type'] != null) {\n          var className: string = odataObject.LinkedProducts[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.LinkedProducts[i] = new entityDictionary[className](odataObject.LinkedProducts[i])\n          }\n        } else {\n            this.LinkedProducts[i] = new LinkedProductClass(odataObject.LinkedProducts[i]);\n        }\n                    } else {\n        this.LinkedProducts[i] = undefined;\n        }\n        }\n        }\n      \n            this.BasePrice = \n                (odataObject.BasePrice != null) ? parseFloat(odataObject.BasePrice) : undefined;\n              \n            this.Price = \n                (odataObject.Price != null) ? parseFloat(odataObject.Price) : undefined;\n              \n            this.AdjustedPrice = \n                (odataObject.AdjustedPrice != null) ? parseFloat(odataObject.AdjustedPrice) : undefined;\n              \n        if (odataObject.RetailContext == null) {\n            this.RetailContext = undefined;\n        } else if (odataObject.RetailContext['@odata.type'] == null) {\n            this.RetailContext = new ProjectionDomainClass(odataObject.RetailContext);\n        } else {\n            var className: string = odataObject.RetailContext['@odata.type'];\n            className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n            if (entityDictionary[className]) {\n                this.RetailContext = new entityDictionary[className](odataObject.RetailContext)\n            }\n        }\n\n      \n            this.PrimaryCategoryId = \n                (odataObject.PrimaryCategoryId != null) ? parseInt(odataObject.PrimaryCategoryId, 10) : undefined;\n              \n        this.CategoryIds = undefined;\n        if (odataObject.CategoryIds) {\n        this.CategoryIds = [];\n        for (var i = 0; i < odataObject.CategoryIds.length; i++) {\n        if (odataObject.CategoryIds[i] != null) {\n            this.CategoryIds[i] = \n                parseInt(odataObject.CategoryIds[i], 10);\n                            } else {\n        this.CategoryIds[i] = undefined;\n        }\n        }\n        }\n      \n        this.DisplayOrderInCategories = undefined;\n        if (odataObject.DisplayOrderInCategories) {\n        this.DisplayOrderInCategories = [];\n        for (var i = 0; i < odataObject.DisplayOrderInCategories.length; i++) {\n        if (odataObject.DisplayOrderInCategories[i] != null) {\n        if (odataObject.DisplayOrderInCategories[i]['@odata.type'] != null) {\n          var className: string = odataObject.DisplayOrderInCategories[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.DisplayOrderInCategories[i] = new entityDictionary[className](odataObject.DisplayOrderInCategories[i])\n          }\n        } else {\n            this.DisplayOrderInCategories[i] = new DisplayOrderInCategoryClass(odataObject.DisplayOrderInCategories[i]);\n        }\n                    } else {\n        this.DisplayOrderInCategories[i] = undefined;\n        }\n        }\n        }\n      \n        this.RelatedProducts = undefined;\n        if (odataObject.RelatedProducts) {\n        this.RelatedProducts = [];\n        for (var i = 0; i < odataObject.RelatedProducts.length; i++) {\n        if (odataObject.RelatedProducts[i] != null) {\n        if (odataObject.RelatedProducts[i]['@odata.type'] != null) {\n          var className: string = odataObject.RelatedProducts[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.RelatedProducts[i] = new entityDictionary[className](odataObject.RelatedProducts[i])\n          }\n        } else {\n            this.RelatedProducts[i] = new RelatedProductClass(odataObject.RelatedProducts[i]);\n        }\n                    } else {\n        this.RelatedProducts[i] = undefined;\n        }\n        }\n        }\n      \n        this.ProductsRelatedToThis = undefined;\n        if (odataObject.ProductsRelatedToThis) {\n        this.ProductsRelatedToThis = [];\n        for (var i = 0; i < odataObject.ProductsRelatedToThis.length; i++) {\n        if (odataObject.ProductsRelatedToThis[i] != null) {\n        if (odataObject.ProductsRelatedToThis[i]['@odata.type'] != null) {\n          var className: string = odataObject.ProductsRelatedToThis[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ProductsRelatedToThis[i] = new entityDictionary[className](odataObject.ProductsRelatedToThis[i])\n          }\n        } else {\n            this.ProductsRelatedToThis[i] = new RelatedProductClass(odataObject.ProductsRelatedToThis[i]);\n        }\n                    } else {\n        this.ProductsRelatedToThis[i] = undefined;\n        }\n        }\n        }\n      \n        this.ProductSchema = undefined;\n        if (odataObject.ProductSchema) {\n        this.ProductSchema = [];\n        for (var i = 0; i < odataObject.ProductSchema.length; i++) {\n        if (odataObject.ProductSchema[i] != null) {\n            this.ProductSchema[i] = \n                odataObject.ProductSchema[i];\n                            } else {\n        this.ProductSchema[i] = undefined;\n        }\n        }\n        }\n      \n        this.ProductProperties = undefined;\n        if (odataObject.ProductProperties) {\n        this.ProductProperties = [];\n        for (var i = 0; i < odataObject.ProductProperties.length; i++) {\n        if (odataObject.ProductProperties[i] != null) {\n        if (odataObject.ProductProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ProductProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ProductProperties[i] = new entityDictionary[className](odataObject.ProductProperties[i])\n          }\n        } else {\n            this.ProductProperties[i] = new ProductPropertyTranslationClass(odataObject.ProductProperties[i]);\n        }\n                    } else {\n        this.ProductProperties[i] = undefined;\n        }\n        }\n        }\n      \n        if (odataObject.CompositionInformation == null) {\n            this.CompositionInformation = undefined;\n        } else if (odataObject.CompositionInformation['@odata.type'] == null) {\n            this.CompositionInformation = new ProductCompositionInformationClass(odataObject.CompositionInformation);\n        } else {\n            var className: string = odataObject.CompositionInformation['@odata.type'];\n            className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n            if (entityDictionary[className]) {\n                this.CompositionInformation = new entityDictionary[className](odataObject.CompositionInformation)\n            }\n        }\n\n      \n        this.ParentKits = undefined;\n        if (odataObject.ParentKits) {\n        this.ParentKits = [];\n        for (var i = 0; i < odataObject.ParentKits.length; i++) {\n        if (odataObject.ParentKits[i] != null) {\n        if (odataObject.ParentKits[i]['@odata.type'] != null) {\n          var className: string = odataObject.ParentKits[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ParentKits[i] = new entityDictionary[className](odataObject.ParentKits[i])\n          }\n        } else {\n            this.ParentKits[i] = new KitComponentClass(odataObject.ParentKits[i]);\n        }\n                    } else {\n        this.ParentKits[i] = undefined;\n        }\n        }\n        }\n      \n            this.SearchName = \n                odataObject.SearchName;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['ProductClass'] = ProductClass;\n    \n      /**\n      * ProductCatalog entity class.\n      */\n      export class ProductCatalogClass implements Entities.ProductCatalog {\n      public RecordId: number;\n      public Name: string;\n      public Description: string;\n      public Language: string;\n      public IsSnapshotEnabled: boolean;\n      public ValidFrom: Date;\n      public ValidTo: Date;\n      public CreatedOn: Date;\n      public ModifiedOn: Date;\n      public PublishedOn: Date;\n      public Images: Entities.MediaLocation[];\n      public ChannelId: number;\n      public DefaultImage: string;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.RecordId = \n                (odataObject.RecordId != null) ? parseInt(odataObject.RecordId, 10) : undefined;\n              \n            this.Name = \n                odataObject.Name;\n              \n            this.Description = \n                odataObject.Description;\n              \n            this.Language = \n                odataObject.Language;\n              \n            this.IsSnapshotEnabled = \n                odataObject.IsSnapshotEnabled;\n              \n            this.ValidFrom = \n                (odataObject.ValidFrom instanceof Date) ? odataObject.ValidFrom\n                : (odataObject.ValidFrom != null) ? jsonLightReadStringPropertyValue(odataObject.ValidFrom, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.ValidTo = \n                (odataObject.ValidTo instanceof Date) ? odataObject.ValidTo\n                : (odataObject.ValidTo != null) ? jsonLightReadStringPropertyValue(odataObject.ValidTo, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.CreatedOn = \n                (odataObject.CreatedOn instanceof Date) ? odataObject.CreatedOn\n                : (odataObject.CreatedOn != null) ? jsonLightReadStringPropertyValue(odataObject.CreatedOn, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.ModifiedOn = \n                (odataObject.ModifiedOn instanceof Date) ? odataObject.ModifiedOn\n                : (odataObject.ModifiedOn != null) ? jsonLightReadStringPropertyValue(odataObject.ModifiedOn, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.PublishedOn = \n                (odataObject.PublishedOn instanceof Date) ? odataObject.PublishedOn\n                : (odataObject.PublishedOn != null) ? jsonLightReadStringPropertyValue(odataObject.PublishedOn, \"Edm.DateTimeOffset\", false) : undefined;\n              \n        this.Images = undefined;\n        if (odataObject.Images) {\n        this.Images = [];\n        for (var i = 0; i < odataObject.Images.length; i++) {\n        if (odataObject.Images[i] != null) {\n        if (odataObject.Images[i]['@odata.type'] != null) {\n          var className: string = odataObject.Images[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.Images[i] = new entityDictionary[className](odataObject.Images[i])\n          }\n        } else {\n            this.Images[i] = new MediaLocationClass(odataObject.Images[i]);\n        }\n                    } else {\n        this.Images[i] = undefined;\n        }\n        }\n        }\n      \n            this.ChannelId = \n                (odataObject.ChannelId != null) ? parseInt(odataObject.ChannelId, 10) : undefined;\n              \n            this.DefaultImage = \n                odataObject.DefaultImage;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['ProductCatalogClass'] = ProductCatalogClass;\n    \n      /**\n      * CommerceList entity class.\n      */\n      export class CommerceListClass implements Entities.CommerceList {\n      public Id: number;\n      public Name: string;\n      public CustomerId: string;\n      public CustomerName: string;\n      public IsFavorite: boolean;\n      public IsRecurring: boolean;\n      public IsPrivate: boolean;\n      public IsCollaborative: boolean;\n      public CreatedDateTime: Date;\n      public DueDateTime: Date;\n      public CommerceListTypeValue: number;\n      public CommerceListLines: Entities.CommerceListLine[];\n      public CommerceListContributors: Entities.CommerceListContributor[];\n      public CommerceListInvitations: Entities.CommerceListInvitation[];\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.Id = \n                (odataObject.Id != null) ? parseInt(odataObject.Id, 10) : undefined;\n              \n            this.Name = \n                odataObject.Name;\n              \n            this.CustomerId = \n                odataObject.CustomerId;\n              \n            this.CustomerName = \n                odataObject.CustomerName;\n              \n            this.IsFavorite = \n                odataObject.IsFavorite;\n              \n            this.IsRecurring = \n                odataObject.IsRecurring;\n              \n            this.IsPrivate = \n                odataObject.IsPrivate;\n              \n            this.IsCollaborative = \n                odataObject.IsCollaborative;\n              \n            this.CreatedDateTime = \n                (odataObject.CreatedDateTime instanceof Date) ? odataObject.CreatedDateTime\n                : (odataObject.CreatedDateTime != null) ? jsonLightReadStringPropertyValue(odataObject.CreatedDateTime, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.DueDateTime = \n                (odataObject.DueDateTime instanceof Date) ? odataObject.DueDateTime\n                : (odataObject.DueDateTime != null) ? jsonLightReadStringPropertyValue(odataObject.DueDateTime, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.CommerceListTypeValue = \n                odataObject.CommerceListTypeValue;\n              \n        this.CommerceListLines = undefined;\n        if (odataObject.CommerceListLines) {\n        this.CommerceListLines = [];\n        for (var i = 0; i < odataObject.CommerceListLines.length; i++) {\n        if (odataObject.CommerceListLines[i] != null) {\n        if (odataObject.CommerceListLines[i]['@odata.type'] != null) {\n          var className: string = odataObject.CommerceListLines[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.CommerceListLines[i] = new entityDictionary[className](odataObject.CommerceListLines[i])\n          }\n        } else {\n            this.CommerceListLines[i] = new CommerceListLineClass(odataObject.CommerceListLines[i]);\n        }\n                    } else {\n        this.CommerceListLines[i] = undefined;\n        }\n        }\n        }\n      \n        this.CommerceListContributors = undefined;\n        if (odataObject.CommerceListContributors) {\n        this.CommerceListContributors = [];\n        for (var i = 0; i < odataObject.CommerceListContributors.length; i++) {\n        if (odataObject.CommerceListContributors[i] != null) {\n        if (odataObject.CommerceListContributors[i]['@odata.type'] != null) {\n          var className: string = odataObject.CommerceListContributors[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.CommerceListContributors[i] = new entityDictionary[className](odataObject.CommerceListContributors[i])\n          }\n        } else {\n            this.CommerceListContributors[i] = new CommerceListContributorClass(odataObject.CommerceListContributors[i]);\n        }\n                    } else {\n        this.CommerceListContributors[i] = undefined;\n        }\n        }\n        }\n      \n        this.CommerceListInvitations = undefined;\n        if (odataObject.CommerceListInvitations) {\n        this.CommerceListInvitations = [];\n        for (var i = 0; i < odataObject.CommerceListInvitations.length; i++) {\n        if (odataObject.CommerceListInvitations[i] != null) {\n        if (odataObject.CommerceListInvitations[i]['@odata.type'] != null) {\n          var className: string = odataObject.CommerceListInvitations[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.CommerceListInvitations[i] = new entityDictionary[className](odataObject.CommerceListInvitations[i])\n          }\n        } else {\n            this.CommerceListInvitations[i] = new CommerceListInvitationClass(odataObject.CommerceListInvitations[i]);\n        }\n                    } else {\n        this.CommerceListInvitations[i] = undefined;\n        }\n        }\n        }\n      \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['CommerceListClass'] = CommerceListClass;\n    \n      /**\n      * ProductList entity class.\n      */\n      export class ProductListClass implements Entities.ProductList {\n      public Id: string;\n      public Name: string;\n      public CustomerId: string;\n      public CreatedDateTime: Date;\n      public LastUpdated: Date;\n      public DeletedDateTime: Date;\n      public ProductListTypeValue: number;\n      public DataAreaId: string;\n      public ChannelId: number;\n      public ProductListLines: Entities.ProductListLine[];\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.Id = \n                odataObject.Id;\n              \n            this.Name = \n                odataObject.Name;\n              \n            this.CustomerId = \n                odataObject.CustomerId;\n              \n            this.CreatedDateTime = \n                (odataObject.CreatedDateTime instanceof Date) ? odataObject.CreatedDateTime\n                : (odataObject.CreatedDateTime != null) ? jsonLightReadStringPropertyValue(odataObject.CreatedDateTime, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.LastUpdated = \n                (odataObject.LastUpdated instanceof Date) ? odataObject.LastUpdated\n                : (odataObject.LastUpdated != null) ? jsonLightReadStringPropertyValue(odataObject.LastUpdated, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.DeletedDateTime = \n                (odataObject.DeletedDateTime instanceof Date) ? odataObject.DeletedDateTime\n                : (odataObject.DeletedDateTime != null) ? jsonLightReadStringPropertyValue(odataObject.DeletedDateTime, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.ProductListTypeValue = \n                odataObject.ProductListTypeValue;\n              \n            this.DataAreaId = \n                odataObject.DataAreaId;\n              \n            this.ChannelId = \n                (odataObject.ChannelId != null) ? parseInt(odataObject.ChannelId, 10) : undefined;\n              \n        this.ProductListLines = undefined;\n        if (odataObject.ProductListLines) {\n        this.ProductListLines = [];\n        for (var i = 0; i < odataObject.ProductListLines.length; i++) {\n        if (odataObject.ProductListLines[i] != null) {\n        if (odataObject.ProductListLines[i]['@odata.type'] != null) {\n          var className: string = odataObject.ProductListLines[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ProductListLines[i] = new entityDictionary[className](odataObject.ProductListLines[i])\n          }\n        } else {\n            this.ProductListLines[i] = new ProductListLineClass(odataObject.ProductListLines[i]);\n        }\n                    } else {\n        this.ProductListLines[i] = undefined;\n        }\n        }\n        }\n      \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['ProductListClass'] = ProductListClass;\n    \n      /**\n      * Recommendation entity class.\n      */\n      export class RecommendationClass implements Entities.Recommendation {\n      public Id: string;\n      public RecommendationTypeValue: number;\n      public Title: string;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.Id = \n                odataObject.Id;\n              \n            this.RecommendationTypeValue = \n                odataObject.RecommendationTypeValue;\n              \n            this.Title = \n                odataObject.Title;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['RecommendationClass'] = RecommendationClass;\n    \n      /**\n      * TransferOrder entity class.\n      */\n      export class TransferOrderClass implements Entities.TransferOrder {\n      public OrderId: string;\n      public RecordId: string;\n      public Status: string;\n      public Lines: number;\n      public TotalItems: number;\n      public OrderTypeValue: number;\n      public InventLocationIdFrom: string;\n      public InventLocationIdTo: string;\n      public QuantityShipped: number;\n      public QuantityReceived: number;\n      public QuantityShipNow: number;\n      public QuantityReceiveNow: number;\n      public QuantityShipRemaining: number;\n      public QuantityReceiveRemaining: number;\n      public ShipDate: Date;\n      public ReceiveDate: Date;\n      public DeliveryModeId: string;\n      public OrderLines: Entities.TransferOrderLine[];\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.OrderId = \n                odataObject.OrderId;\n              \n            this.RecordId = \n                odataObject.RecordId;\n              \n            this.Status = \n                odataObject.Status;\n              \n            this.Lines = \n                (odataObject.Lines != null) ? parseFloat(odataObject.Lines) : undefined;\n              \n            this.TotalItems = \n                (odataObject.TotalItems != null) ? parseFloat(odataObject.TotalItems) : undefined;\n              \n            this.OrderTypeValue = \n                odataObject.OrderTypeValue;\n              \n            this.InventLocationIdFrom = \n                odataObject.InventLocationIdFrom;\n              \n            this.InventLocationIdTo = \n                odataObject.InventLocationIdTo;\n              \n            this.QuantityShipped = \n                (odataObject.QuantityShipped != null) ? parseFloat(odataObject.QuantityShipped) : undefined;\n              \n            this.QuantityReceived = \n                (odataObject.QuantityReceived != null) ? parseFloat(odataObject.QuantityReceived) : undefined;\n              \n            this.QuantityShipNow = \n                (odataObject.QuantityShipNow != null) ? parseFloat(odataObject.QuantityShipNow) : undefined;\n              \n            this.QuantityReceiveNow = \n                (odataObject.QuantityReceiveNow != null) ? parseFloat(odataObject.QuantityReceiveNow) : undefined;\n              \n            this.QuantityShipRemaining = \n                (odataObject.QuantityShipRemaining != null) ? parseFloat(odataObject.QuantityShipRemaining) : undefined;\n              \n            this.QuantityReceiveRemaining = \n                (odataObject.QuantityReceiveRemaining != null) ? parseFloat(odataObject.QuantityReceiveRemaining) : undefined;\n              \n            this.ShipDate = \n                (odataObject.ShipDate instanceof Date) ? odataObject.ShipDate\n                : (odataObject.ShipDate != null) ? jsonLightReadStringPropertyValue(odataObject.ShipDate, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.ReceiveDate = \n                (odataObject.ReceiveDate instanceof Date) ? odataObject.ReceiveDate\n                : (odataObject.ReceiveDate != null) ? jsonLightReadStringPropertyValue(odataObject.ReceiveDate, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.DeliveryModeId = \n                odataObject.DeliveryModeId;\n              \n        this.OrderLines = undefined;\n        if (odataObject.OrderLines) {\n        this.OrderLines = [];\n        for (var i = 0; i < odataObject.OrderLines.length; i++) {\n        if (odataObject.OrderLines[i] != null) {\n        if (odataObject.OrderLines[i]['@odata.type'] != null) {\n          var className: string = odataObject.OrderLines[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.OrderLines[i] = new entityDictionary[className](odataObject.OrderLines[i])\n          }\n        } else {\n            this.OrderLines[i] = new TransferOrderLineClass(odataObject.OrderLines[i]);\n        }\n                    } else {\n        this.OrderLines[i] = undefined;\n        }\n        }\n        }\n      \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['TransferOrderClass'] = TransferOrderClass;\n    \n      /**\n      * PurchaseOrder entity class.\n      */\n      export class PurchaseOrderClass implements Entities.PurchaseOrder {\n      public OrderId: string;\n      public RecordId: string;\n      public Status: string;\n      public Lines: number;\n      public TotalItems: number;\n      public OrderTypeValue: number;\n      public TotalReceived: number;\n      public OrderLines: Entities.PurchaseOrderLine[];\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.OrderId = \n                odataObject.OrderId;\n              \n            this.RecordId = \n                odataObject.RecordId;\n              \n            this.Status = \n                odataObject.Status;\n              \n            this.Lines = \n                (odataObject.Lines != null) ? parseFloat(odataObject.Lines) : undefined;\n              \n            this.TotalItems = \n                (odataObject.TotalItems != null) ? parseFloat(odataObject.TotalItems) : undefined;\n              \n            this.OrderTypeValue = \n                odataObject.OrderTypeValue;\n              \n            this.TotalReceived = \n                (odataObject.TotalReceived != null) ? parseFloat(odataObject.TotalReceived) : undefined;\n              \n        this.OrderLines = undefined;\n        if (odataObject.OrderLines) {\n        this.OrderLines = [];\n        for (var i = 0; i < odataObject.OrderLines.length; i++) {\n        if (odataObject.OrderLines[i] != null) {\n        if (odataObject.OrderLines[i]['@odata.type'] != null) {\n          var className: string = odataObject.OrderLines[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.OrderLines[i] = new entityDictionary[className](odataObject.OrderLines[i])\n          }\n        } else {\n            this.OrderLines[i] = new PurchaseOrderLineClass(odataObject.OrderLines[i]);\n        }\n                    } else {\n        this.OrderLines[i] = undefined;\n        }\n        }\n        }\n      \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['PurchaseOrderClass'] = PurchaseOrderClass;\n    \n      /**\n      * PickingList entity class.\n      */\n      export class PickingListClass implements Entities.PickingList {\n      public OrderId: string;\n      public RecordId: string;\n      public Status: string;\n      public Lines: number;\n      public TotalItems: number;\n      public OrderTypeValue: number;\n      public InventLocationId: string;\n      public DeliveryDate: Date;\n      public DeliveryMode: string;\n      public TotalReceived: number;\n      public OrderLines: Entities.PickingListLine[];\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.OrderId = \n                odataObject.OrderId;\n              \n            this.RecordId = \n                odataObject.RecordId;\n              \n            this.Status = \n                odataObject.Status;\n              \n            this.Lines = \n                (odataObject.Lines != null) ? parseFloat(odataObject.Lines) : undefined;\n              \n            this.TotalItems = \n                (odataObject.TotalItems != null) ? parseFloat(odataObject.TotalItems) : undefined;\n              \n            this.OrderTypeValue = \n                odataObject.OrderTypeValue;\n              \n            this.InventLocationId = \n                odataObject.InventLocationId;\n              \n            this.DeliveryDate = \n                (odataObject.DeliveryDate instanceof Date) ? odataObject.DeliveryDate\n                : (odataObject.DeliveryDate != null) ? jsonLightReadStringPropertyValue(odataObject.DeliveryDate, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.DeliveryMode = \n                odataObject.DeliveryMode;\n              \n            this.TotalReceived = \n                (odataObject.TotalReceived != null) ? parseFloat(odataObject.TotalReceived) : undefined;\n              \n        this.OrderLines = undefined;\n        if (odataObject.OrderLines) {\n        this.OrderLines = [];\n        for (var i = 0; i < odataObject.OrderLines.length; i++) {\n        if (odataObject.OrderLines[i] != null) {\n        if (odataObject.OrderLines[i]['@odata.type'] != null) {\n          var className: string = odataObject.OrderLines[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.OrderLines[i] = new entityDictionary[className](odataObject.OrderLines[i])\n          }\n        } else {\n            this.OrderLines[i] = new PickingListLineClass(odataObject.OrderLines[i]);\n        }\n                    } else {\n        this.OrderLines[i] = undefined;\n        }\n        }\n        }\n      \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['PickingListClass'] = PickingListClass;\n    \n      /**\n      * Warehouse entity class.\n      */\n      export class WarehouseClass implements Entities.Warehouse {\n      public InventLocation: string;\n      public Name: string;\n      public IsWMSEnabled: boolean;\n      public DefaultInventoryStatus: string;\n      public DefaultReceiptLocation: string;\n      public DefaultLocationId: string;\n      public DefaultIssueLocation: string;\n      public Address: Entities.Address;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.InventLocation = \n                odataObject.InventLocation;\n              \n            this.Name = \n                odataObject.Name;\n              \n            this.IsWMSEnabled = \n                odataObject.IsWMSEnabled;\n              \n            this.DefaultInventoryStatus = \n                odataObject.DefaultInventoryStatus;\n              \n            this.DefaultReceiptLocation = \n                odataObject.DefaultReceiptLocation;\n              \n            this.DefaultLocationId = \n                odataObject.DefaultLocationId;\n              \n            this.DefaultIssueLocation = \n                odataObject.DefaultIssueLocation;\n              \n        if (odataObject.Address == null) {\n            this.Address = undefined;\n        } else if (odataObject.Address['@odata.type'] == null) {\n            this.Address = new AddressClass(odataObject.Address);\n        } else {\n            var className: string = odataObject.Address['@odata.type'];\n            className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n            if (entityDictionary[className]) {\n                this.Address = new entityDictionary[className](odataObject.Address)\n            }\n        }\n\n      \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['WarehouseClass'] = WarehouseClass;\n    \n      /**\n      * ScanResult entity class.\n      */\n      export class ScanResultClass implements Entities.ScanResult {\n      public ScannedText: string;\n      public MaskTypeValue: number;\n      public Barcode: Entities.Barcode;\n      public Product: Entities.SimpleProduct;\n      public LoyaltyCard: Entities.LoyaltyCard;\n      public GiftCard: Entities.GiftCard;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      public Customer: Entities.Customer;\n      \n      // Navigation properties names\n      public static customerPropertyName: string = \"Customer\";\n        \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.ScannedText = \n                odataObject.ScannedText;\n              \n            this.MaskTypeValue = \n                odataObject.MaskTypeValue;\n              \n        if (odataObject.Barcode == null) {\n            this.Barcode = undefined;\n        } else if (odataObject.Barcode['@odata.type'] == null) {\n            this.Barcode = new BarcodeClass(odataObject.Barcode);\n        } else {\n            var className: string = odataObject.Barcode['@odata.type'];\n            className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n            if (entityDictionary[className]) {\n                this.Barcode = new entityDictionary[className](odataObject.Barcode)\n            }\n        }\n\n      \n        if (odataObject.Product == null) {\n            this.Product = undefined;\n        } else if (odataObject.Product['@odata.type'] == null) {\n            this.Product = new SimpleProductClass(odataObject.Product);\n        } else {\n            var className: string = odataObject.Product['@odata.type'];\n            className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n            if (entityDictionary[className]) {\n                this.Product = new entityDictionary[className](odataObject.Product)\n            }\n        }\n\n      \n        if (odataObject.LoyaltyCard == null) {\n            this.LoyaltyCard = undefined;\n        } else if (odataObject.LoyaltyCard['@odata.type'] == null) {\n            this.LoyaltyCard = new LoyaltyCardClass(odataObject.LoyaltyCard);\n        } else {\n            var className: string = odataObject.LoyaltyCard['@odata.type'];\n            className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n            if (entityDictionary[className]) {\n                this.LoyaltyCard = new entityDictionary[className](odataObject.LoyaltyCard)\n            }\n        }\n\n      \n        if (odataObject.GiftCard == null) {\n            this.GiftCard = undefined;\n        } else if (odataObject.GiftCard['@odata.type'] == null) {\n            this.GiftCard = new GiftCardClass(odataObject.GiftCard);\n        } else {\n            var className: string = odataObject.GiftCard['@odata.type'];\n            className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n            if (entityDictionary[className]) {\n                this.GiftCard = new entityDictionary[className](odataObject.GiftCard)\n            }\n        }\n\n      \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n        if (odataObject.Customer == null) {\n            this.Customer = undefined;\n        } else if (odataObject.Customer['@odata.type'] == null) {\n            this.Customer = new CustomerClass(odataObject.Customer);\n        } else {\n            var className: string = odataObject.Customer['@odata.type'];\n            className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n            if (entityDictionary[className]) {\n                this.Customer = new entityDictionary[className](odataObject.Customer)\n            }\n        }\n\n      \n      }\n      }\n      entityDictionary['ScanResultClass'] = ScanResultClass;\n    \n      /**\n      * SalesOrderContextualOperationsMap entity class.\n      */\n      export class SalesOrderContextualOperationsMapClass implements Entities.SalesOrderContextualOperationsMap {\n      public Id: string;\n      public ApplicableOperationsValues: number[];\n      public ExtensionProperties: Entities.CommerceProperty[];\n      public SalesOrder: Entities.SalesOrder;\n      \n      // Navigation properties names\n      public static salesOrderPropertyName: string = \"SalesOrder\";\n        \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.Id = \n                odataObject.Id;\n              \n        this.ApplicableOperationsValues = undefined;\n        if (odataObject.ApplicableOperationsValues) {\n        this.ApplicableOperationsValues = [];\n        for (var i = 0; i < odataObject.ApplicableOperationsValues.length; i++) {\n        if (odataObject.ApplicableOperationsValues[i] != null) {\n            this.ApplicableOperationsValues[i] = \n                odataObject.ApplicableOperationsValues[i];\n                            } else {\n        this.ApplicableOperationsValues[i] = undefined;\n        }\n        }\n        }\n      \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n        if (odataObject.SalesOrder == null) {\n            this.SalesOrder = undefined;\n        } else if (odataObject.SalesOrder['@odata.type'] == null) {\n            this.SalesOrder = new SalesOrderClass(odataObject.SalesOrder);\n        } else {\n            var className: string = odataObject.SalesOrder['@odata.type'];\n            className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n            if (entityDictionary[className]) {\n                this.SalesOrder = new entityDictionary[className](odataObject.SalesOrder)\n            }\n        }\n\n      \n      }\n      }\n      entityDictionary['SalesOrderContextualOperationsMapClass'] = SalesOrderContextualOperationsMapClass;\n    \n      /**\n      * InventoryInboundOutboundDocument entity class.\n      */\n      export class InventoryInboundOutboundDocumentClass implements Entities.InventoryInboundOutboundDocument {\n      public WorkDocumentId: string;\n      public TerminalId: string;\n      public CommitRequestId: string;\n      public ReceiveDate: Date;\n      public ShipDate: Date;\n      public Sender: string;\n      public Receiver: string;\n      public SenderDetails: string;\n      public ReceiverDetails: string;\n      public DeliveryMode: string;\n      public OperationTypeValue: number;\n      public StatusValue: number;\n      public ReceiptId: string;\n      public Note: string;\n      public OperationResultMessage: string;\n      public DocumentId: string;\n      public LongVersion: number;\n      public SourceDocument: Entities.InventoryInboundOutboundSourceDocument;\n      public SourceDocumentTypeValue: number;\n      public CreatedDateTime: Date;\n      public NoteModifiedByStaffId: string;\n      public NoteModifiedDateTime: Date;\n      public DocumentTypeId: string;\n      public Description: string;\n      public StaffId: string;\n      public TransactionDate: Date;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.WorkDocumentId = \n                odataObject.WorkDocumentId;\n              \n            this.TerminalId = \n                odataObject.TerminalId;\n              \n            this.CommitRequestId = \n                odataObject.CommitRequestId;\n              \n            this.ReceiveDate = \n                (odataObject.ReceiveDate instanceof Date) ? odataObject.ReceiveDate\n                : (odataObject.ReceiveDate != null) ? jsonLightReadStringPropertyValue(odataObject.ReceiveDate, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.ShipDate = \n                (odataObject.ShipDate instanceof Date) ? odataObject.ShipDate\n                : (odataObject.ShipDate != null) ? jsonLightReadStringPropertyValue(odataObject.ShipDate, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.Sender = \n                odataObject.Sender;\n              \n            this.Receiver = \n                odataObject.Receiver;\n              \n            this.SenderDetails = \n                odataObject.SenderDetails;\n              \n            this.ReceiverDetails = \n                odataObject.ReceiverDetails;\n              \n            this.DeliveryMode = \n                odataObject.DeliveryMode;\n              \n            this.OperationTypeValue = \n                odataObject.OperationTypeValue;\n              \n            this.StatusValue = \n                odataObject.StatusValue;\n              \n            this.ReceiptId = \n                odataObject.ReceiptId;\n              \n            this.Note = \n                odataObject.Note;\n              \n            this.OperationResultMessage = \n                odataObject.OperationResultMessage;\n              \n            this.DocumentId = \n                odataObject.DocumentId;\n              \n            this.LongVersion = \n                (odataObject.LongVersion != null) ? parseInt(odataObject.LongVersion, 10) : undefined;\n              \n        if (odataObject.SourceDocument == null) {\n            this.SourceDocument = undefined;\n        } else if (odataObject.SourceDocument['@odata.type'] == null) {\n            this.SourceDocument = new InventoryInboundOutboundSourceDocumentClass(odataObject.SourceDocument);\n        } else {\n            var className: string = odataObject.SourceDocument['@odata.type'];\n            className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n            if (entityDictionary[className]) {\n                this.SourceDocument = new entityDictionary[className](odataObject.SourceDocument)\n            }\n        }\n\n      \n            this.SourceDocumentTypeValue = \n                odataObject.SourceDocumentTypeValue;\n              \n            this.CreatedDateTime = \n                (odataObject.CreatedDateTime instanceof Date) ? odataObject.CreatedDateTime\n                : (odataObject.CreatedDateTime != null) ? jsonLightReadStringPropertyValue(odataObject.CreatedDateTime, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.NoteModifiedByStaffId = \n                odataObject.NoteModifiedByStaffId;\n              \n            this.NoteModifiedDateTime = \n                (odataObject.NoteModifiedDateTime instanceof Date) ? odataObject.NoteModifiedDateTime\n                : (odataObject.NoteModifiedDateTime != null) ? jsonLightReadStringPropertyValue(odataObject.NoteModifiedDateTime, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.DocumentTypeId = \n                odataObject.DocumentTypeId;\n              \n            this.Description = \n                odataObject.Description;\n              \n            this.StaffId = \n                odataObject.StaffId;\n              \n            this.TransactionDate = \n                (odataObject.TransactionDate instanceof Date) ? odataObject.TransactionDate\n                : (odataObject.TransactionDate != null) ? jsonLightReadStringPropertyValue(odataObject.TransactionDate, \"Edm.DateTimeOffset\", false) : undefined;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['InventoryInboundOutboundDocumentClass'] = InventoryInboundOutboundDocumentClass;\n    \n      /**\n      * BusinessPartner entity class.\n      */\n      export class BusinessPartnerClass implements Entities.BusinessPartner {\n      public BusinessPartnerId: string;\n      public Name: string;\n      public SellerChannelId: string;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.BusinessPartnerId = \n                odataObject.BusinessPartnerId;\n              \n            this.Name = \n                odataObject.Name;\n              \n            this.SellerChannelId = \n                odataObject.SellerChannelId;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['BusinessPartnerClass'] = BusinessPartnerClass;\n    \n      /**\n      * BusinessPartnerUser entity class.\n      */\n      export class BusinessPartnerUserClass implements Entities.BusinessPartnerUser {\n      public B2BUserId: string;\n      public BusinessPartnerId: string;\n      public FirstName: string;\n      public LastName: string;\n      public Email: string;\n      public SpendingLimit: number;\n      public LastOperationId: string;\n      public StatusValue: number;\n      public IsAdmin: boolean;\n      public AccountNumber: string;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.B2BUserId = \n                odataObject.B2BUserId;\n              \n            this.BusinessPartnerId = \n                odataObject.BusinessPartnerId;\n              \n            this.FirstName = \n                odataObject.FirstName;\n              \n            this.LastName = \n                odataObject.LastName;\n              \n            this.Email = \n                odataObject.Email;\n              \n            this.SpendingLimit = \n                (odataObject.SpendingLimit != null) ? parseFloat(odataObject.SpendingLimit) : undefined;\n              \n            this.LastOperationId = \n                odataObject.LastOperationId;\n              \n            this.StatusValue = \n                odataObject.StatusValue;\n              \n            this.IsAdmin = \n                odataObject.IsAdmin;\n              \n            this.AccountNumber = \n                odataObject.AccountNumber;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['BusinessPartnerUserClass'] = BusinessPartnerUserClass;\n    \n      /**\n      * SuspendedCart entity class.\n      */\n      export class SuspendedCartClass implements Entities.SuspendedCart {\n      public Id: string;\n      public ReceiptId: string;\n      public ShiftId: number;\n      public ShiftTerminalId: string;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      public Cart: Entities.Cart;\n      \n      // Navigation properties names\n      public static cartPropertyName: string = \"Cart\";\n        \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.Id = \n                odataObject.Id;\n              \n            this.ReceiptId = \n                odataObject.ReceiptId;\n              \n            this.ShiftId = \n                (odataObject.ShiftId != null) ? parseInt(odataObject.ShiftId, 10) : undefined;\n              \n            this.ShiftTerminalId = \n                odataObject.ShiftTerminalId;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n        if (odataObject.Cart == null) {\n            this.Cart = undefined;\n        } else if (odataObject.Cart['@odata.type'] == null) {\n            this.Cart = new CartClass(odataObject.Cart);\n        } else {\n            var className: string = odataObject.Cart['@odata.type'];\n            className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n            if (entityDictionary[className]) {\n                this.Cart = new entityDictionary[className](odataObject.Cart)\n            }\n        }\n\n      \n      }\n      }\n      entityDictionary['SuspendedCartClass'] = SuspendedCartClass;\n    \n      /**\n      * ExtensibleEnumeration entity class.\n      */\n      export class ExtensibleEnumerationClass implements Entities.ExtensibleEnumeration {\n      public Name: string;\n      public Value: number;\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.Name = \n                odataObject.Name;\n              \n            this.Value = \n                odataObject.Value;\n              \n      }\n      }\n      entityDictionary['ExtensibleEnumerationClass'] = ExtensibleEnumerationClass;\n    \n      /**\n      * ExtensibleEnumeration_1OfT entity class.\n      */\n      export class ExtensibleEnumeration_1OfTClass\n        extends ExtensibleEnumerationClass\n       implements Entities.ExtensibleEnumeration_1OfT {\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      super(odataObject);odataObject = odataObject || {};\n        this[\"@odata.type\"] = \"#Microsoft.Dynamics.Commerce.Runtime.Framework.ExtensibleEnumeration_1OfT\";\n      \n      }\n      }\n      entityDictionary['ExtensibleEnumeration_1OfTClass'] = ExtensibleEnumeration_1OfTClass;\n    \n      /**\n      * ExtensibleTransactionType entity class.\n      */\n      export class ExtensibleTransactionTypeClass\n        extends ExtensibleEnumerationClass\n       implements Entities.ExtensibleTransactionType {\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      super(odataObject);odataObject = odataObject || {};\n        this[\"@odata.type\"] = \"#Microsoft.Dynamics.Commerce.Runtime.DataModel.ExtensibleTransactionType\";\n      \n      }\n      }\n      entityDictionary['ExtensibleTransactionTypeClass'] = ExtensibleTransactionTypeClass;\n    \n      /**\n      * ExtensibleSalesTransactionType entity class.\n      */\n      export class ExtensibleSalesTransactionTypeClass\n        extends ExtensibleEnumerationClass\n       implements Entities.ExtensibleSalesTransactionType {\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      super(odataObject);odataObject = odataObject || {};\n        this[\"@odata.type\"] = \"#Microsoft.Dynamics.Commerce.Runtime.DataModel.ExtensibleSalesTransactionType\";\n      \n      }\n      }\n      entityDictionary['ExtensibleSalesTransactionTypeClass'] = ExtensibleSalesTransactionTypeClass;\n    \n      /**\n      * FulfillmentLineStatus entity class.\n      */\n      export class FulfillmentLineStatusClass\n        extends ExtensibleEnumerationClass\n       implements Entities.FulfillmentLineStatus {\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      super(odataObject);odataObject = odataObject || {};\n        this[\"@odata.type\"] = \"#Microsoft.Dynamics.Commerce.Runtime.DataModel.FulfillmentLineStatus\";\n      \n      }\n      }\n      entityDictionary['FulfillmentLineStatusClass'] = FulfillmentLineStatusClass;\n    \n      /**\n      * FulfillmentLineDeliveryType entity class.\n      */\n      export class FulfillmentLineDeliveryTypeClass\n        extends ExtensibleEnumerationClass\n       implements Entities.FulfillmentLineDeliveryType {\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      super(odataObject);odataObject = odataObject || {};\n        this[\"@odata.type\"] = \"#Microsoft.Dynamics.Commerce.Runtime.DataModel.FulfillmentLineDeliveryType\";\n      \n      }\n      }\n      entityDictionary['FulfillmentLineDeliveryTypeClass'] = FulfillmentLineDeliveryTypeClass;\n    \n      /**\n      * ExtensibleAddressType entity class.\n      */\n      export class ExtensibleAddressTypeClass\n        extends ExtensibleEnumerationClass\n       implements Entities.ExtensibleAddressType {\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      super(odataObject);odataObject = odataObject || {};\n        this[\"@odata.type\"] = \"#Microsoft.Dynamics.Commerce.Runtime.DataModel.ExtensibleAddressType\";\n      \n      }\n      }\n      entityDictionary['ExtensibleAddressTypeClass'] = ExtensibleAddressTypeClass;\n    \n      /**\n      * ExtensibleLoyaltyRewardPointActivityEntryType entity class.\n      */\n      export class ExtensibleLoyaltyRewardPointActivityEntryTypeClass\n        extends ExtensibleEnumerationClass\n       implements Entities.ExtensibleLoyaltyRewardPointActivityEntryType {\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      super(odataObject);odataObject = odataObject || {};\n        this[\"@odata.type\"] = \"#Microsoft.Dynamics.Commerce.Runtime.DataModel.ExtensibleLoyaltyRewardPointActivityEntryType\";\n      \n      }\n      }\n      entityDictionary['ExtensibleLoyaltyRewardPointActivityEntryTypeClass'] = ExtensibleLoyaltyRewardPointActivityEntryTypeClass;\n    \n      /**\n      * ExtensibleAttributeDataType entity class.\n      */\n      export class ExtensibleAttributeDataTypeClass\n        extends ExtensibleEnumerationClass\n       implements Entities.ExtensibleAttributeDataType {\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      super(odataObject);odataObject = odataObject || {};\n        this[\"@odata.type\"] = \"#Microsoft.Dynamics.Commerce.Runtime.DataModel.ExtensibleAttributeDataType\";\n      \n      }\n      }\n      entityDictionary['ExtensibleAttributeDataTypeClass'] = ExtensibleAttributeDataTypeClass;\n    \n      /**\n      * ReleasedProductServiceType entity class.\n      */\n      export class ReleasedProductServiceTypeClass\n        extends ExtensibleEnumerationClass\n       implements Entities.ReleasedProductServiceType {\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      super(odataObject);odataObject = odataObject || {};\n        this[\"@odata.type\"] = \"#Microsoft.Dynamics.Commerce.Runtime.DataModel.ReleasedProductServiceType\";\n      \n      }\n      }\n      entityDictionary['ReleasedProductServiceTypeClass'] = ReleasedProductServiceTypeClass;\n    \n      /**\n      * ExtensibleElectronicAddressType entity class.\n      */\n      export class ExtensibleElectronicAddressTypeClass\n        extends ExtensibleEnumerationClass\n       implements Entities.ExtensibleElectronicAddressType {\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      super(odataObject);odataObject = odataObject || {};\n        this[\"@odata.type\"] = \"#Microsoft.Dynamics.Commerce.Runtime.DataModel.ExtensibleElectronicAddressType\";\n      \n      }\n      }\n      entityDictionary['ExtensibleElectronicAddressTypeClass'] = ExtensibleElectronicAddressTypeClass;\n    \n      /**\n      * ReceiptOutputFormatType entity class.\n      */\n      export class ReceiptOutputFormatTypeClass\n        extends ExtensibleEnumerationClass\n       implements Entities.ReceiptOutputFormatType {\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      super(odataObject);odataObject = odataObject || {};\n        this[\"@odata.type\"] = \"#Microsoft.Dynamics.Commerce.Runtime.DataModel.ReceiptOutputFormatType\";\n      \n      }\n      }\n      entityDictionary['ReceiptOutputFormatTypeClass'] = ReceiptOutputFormatTypeClass;\n    \n      /**\n      * OrderLookupAdditionalCriteriaType entity class.\n      */\n      export class OrderLookupAdditionalCriteriaTypeClass\n        extends ExtensibleEnumerationClass\n       implements Entities.OrderLookupAdditionalCriteriaType {\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      super(odataObject);odataObject = odataObject || {};\n        this[\"@odata.type\"] = \"#Microsoft.Dynamics.Commerce.Runtime.DataModel.OrderLookupAdditionalCriteriaType\";\n      \n      }\n      }\n      entityDictionary['OrderLookupAdditionalCriteriaTypeClass'] = OrderLookupAdditionalCriteriaTypeClass;\n    \n      /**\n      * Address entity class.\n      */\n      export class AddressClass implements Entities.Address {\n      public Name: string;\n      public Id: string;\n      public FullAddress: string;\n      public RecordId: number;\n      public Street: string;\n      public StreetNumber: string;\n      public County: string;\n      public CountyName: string;\n      public City: string;\n      public DistrictName: string;\n      public State: string;\n      public StateName: string;\n      public ZipCode: string;\n      public ThreeLetterISORegionName: string;\n      public Phone: string;\n      public PhoneRecordId: number;\n      public PhoneExt: string;\n      public Email: string;\n      public EmailContent: string;\n      public EmailRecordId: number;\n      public Url: string;\n      public UrlRecordId: number;\n      public TwoLetterISORegionName: string;\n      public Deactivate: boolean;\n      public AttentionTo: string;\n      public BuildingCompliment: string;\n      public Postbox: string;\n      public TaxGroup: string;\n      public AddressTypeValue: number;\n      public IsPrimary: boolean;\n      public IsPrivate: boolean;\n      public PartyNumber: string;\n      public IsAsyncAddress: boolean;\n      public DirectoryPartyTableRecordId: number;\n      public DirectoryPartyLocationRecordId: number;\n      public DirectoryPartyLocationRoleRecordId: number;\n      public LogisticsLocationId: string;\n      public LogisticsLocationRecordId: number;\n      public LogisticsLocationExtRecordId: number;\n      public LogisticsLocationRoleRecordId: number;\n      public PhoneLogisticsLocationRecordId: number;\n      public PhoneLogisticsLocationId: string;\n      public EmailLogisticsLocationRecordId: number;\n      public EmailLogisticsLocationId: string;\n      public UrlLogisticsLocationRecordId: number;\n      public UrlLogisticsLocationId: string;\n      public ExpireRecordId: number;\n      public SortOrder: number;\n      public RoleCount: number;\n      public DataAreaId: string;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.Name = \n                odataObject.Name;\n              \n            this.Id = \n                odataObject.Id;\n              \n            this.FullAddress = \n                odataObject.FullAddress;\n              \n            this.RecordId = \n                (odataObject.RecordId != null) ? parseInt(odataObject.RecordId, 10) : undefined;\n              \n            this.Street = \n                odataObject.Street;\n              \n            this.StreetNumber = \n                odataObject.StreetNumber;\n              \n            this.County = \n                odataObject.County;\n              \n            this.CountyName = \n                odataObject.CountyName;\n              \n            this.City = \n                odataObject.City;\n              \n            this.DistrictName = \n                odataObject.DistrictName;\n              \n            this.State = \n                odataObject.State;\n              \n            this.StateName = \n                odataObject.StateName;\n              \n            this.ZipCode = \n                odataObject.ZipCode;\n              \n            this.ThreeLetterISORegionName = \n                odataObject.ThreeLetterISORegionName;\n              \n            this.Phone = \n                odataObject.Phone;\n              \n            this.PhoneRecordId = \n                (odataObject.PhoneRecordId != null) ? parseInt(odataObject.PhoneRecordId, 10) : undefined;\n              \n            this.PhoneExt = \n                odataObject.PhoneExt;\n              \n            this.Email = \n                odataObject.Email;\n              \n            this.EmailContent = \n                odataObject.EmailContent;\n              \n            this.EmailRecordId = \n                (odataObject.EmailRecordId != null) ? parseInt(odataObject.EmailRecordId, 10) : undefined;\n              \n            this.Url = \n                odataObject.Url;\n              \n            this.UrlRecordId = \n                (odataObject.UrlRecordId != null) ? parseInt(odataObject.UrlRecordId, 10) : undefined;\n              \n            this.TwoLetterISORegionName = \n                odataObject.TwoLetterISORegionName;\n              \n            this.Deactivate = \n                odataObject.Deactivate;\n              \n            this.AttentionTo = \n                odataObject.AttentionTo;\n              \n            this.BuildingCompliment = \n                odataObject.BuildingCompliment;\n              \n            this.Postbox = \n                odataObject.Postbox;\n              \n            this.TaxGroup = \n                odataObject.TaxGroup;\n              \n            this.AddressTypeValue = \n                odataObject.AddressTypeValue;\n              \n            this.IsPrimary = \n                odataObject.IsPrimary;\n              \n            this.IsPrivate = \n                odataObject.IsPrivate;\n              \n            this.PartyNumber = \n                odataObject.PartyNumber;\n              \n            this.IsAsyncAddress = \n                odataObject.IsAsyncAddress;\n              \n            this.DirectoryPartyTableRecordId = \n                (odataObject.DirectoryPartyTableRecordId != null) ? parseInt(odataObject.DirectoryPartyTableRecordId, 10) : undefined;\n              \n            this.DirectoryPartyLocationRecordId = \n                (odataObject.DirectoryPartyLocationRecordId != null) ? parseInt(odataObject.DirectoryPartyLocationRecordId, 10) : undefined;\n              \n            this.DirectoryPartyLocationRoleRecordId = \n                (odataObject.DirectoryPartyLocationRoleRecordId != null) ? parseInt(odataObject.DirectoryPartyLocationRoleRecordId, 10) : undefined;\n              \n            this.LogisticsLocationId = \n                odataObject.LogisticsLocationId;\n              \n            this.LogisticsLocationRecordId = \n                (odataObject.LogisticsLocationRecordId != null) ? parseInt(odataObject.LogisticsLocationRecordId, 10) : undefined;\n              \n            this.LogisticsLocationExtRecordId = \n                (odataObject.LogisticsLocationExtRecordId != null) ? parseInt(odataObject.LogisticsLocationExtRecordId, 10) : undefined;\n              \n            this.LogisticsLocationRoleRecordId = \n                (odataObject.LogisticsLocationRoleRecordId != null) ? parseInt(odataObject.LogisticsLocationRoleRecordId, 10) : undefined;\n              \n            this.PhoneLogisticsLocationRecordId = \n                (odataObject.PhoneLogisticsLocationRecordId != null) ? parseInt(odataObject.PhoneLogisticsLocationRecordId, 10) : undefined;\n              \n            this.PhoneLogisticsLocationId = \n                odataObject.PhoneLogisticsLocationId;\n              \n            this.EmailLogisticsLocationRecordId = \n                (odataObject.EmailLogisticsLocationRecordId != null) ? parseInt(odataObject.EmailLogisticsLocationRecordId, 10) : undefined;\n              \n            this.EmailLogisticsLocationId = \n                odataObject.EmailLogisticsLocationId;\n              \n            this.UrlLogisticsLocationRecordId = \n                (odataObject.UrlLogisticsLocationRecordId != null) ? parseInt(odataObject.UrlLogisticsLocationRecordId, 10) : undefined;\n              \n            this.UrlLogisticsLocationId = \n                odataObject.UrlLogisticsLocationId;\n              \n            this.ExpireRecordId = \n                (odataObject.ExpireRecordId != null) ? parseInt(odataObject.ExpireRecordId, 10) : undefined;\n              \n            this.SortOrder = \n                odataObject.SortOrder;\n              \n            this.RoleCount = \n                odataObject.RoleCount;\n              \n            this.DataAreaId = \n                odataObject.DataAreaId;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['AddressClass'] = AddressClass;\n    \n      /**\n      * CustomerAffiliation entity class.\n      */\n      export class CustomerAffiliationClass implements Entities.CustomerAffiliation {\n      public RecordId: number;\n      public RetailAffiliationId: number;\n      public Name: string;\n      public Description: string;\n      public HideInChannels: boolean;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.RecordId = \n                (odataObject.RecordId != null) ? parseInt(odataObject.RecordId, 10) : undefined;\n              \n            this.RetailAffiliationId = \n                (odataObject.RetailAffiliationId != null) ? parseInt(odataObject.RetailAffiliationId, 10) : undefined;\n              \n            this.Name = \n                odataObject.Name;\n              \n            this.Description = \n                odataObject.Description;\n              \n            this.HideInChannels = \n                odataObject.HideInChannels;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['CustomerAffiliationClass'] = CustomerAffiliationClass;\n    \n      /**\n      * CustomerBalances entity class.\n      */\n      export class CustomerBalancesClass implements Entities.CustomerBalances {\n      public Balance: number;\n      public PendingBalance: number;\n      public CreditLimit: number;\n      public InvoiceAccountBalance: number;\n      public InvoiceAccountPendingBalance: number;\n      public InvoiceAccountCreditLimit: number;\n      public OpenInvoiceBalance: number;\n      public OpenInvoiceCount: number;\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.Balance = \n                (odataObject.Balance != null) ? parseFloat(odataObject.Balance) : undefined;\n              \n            this.PendingBalance = \n                (odataObject.PendingBalance != null) ? parseFloat(odataObject.PendingBalance) : undefined;\n              \n            this.CreditLimit = \n                (odataObject.CreditLimit != null) ? parseFloat(odataObject.CreditLimit) : undefined;\n              \n            this.InvoiceAccountBalance = \n                (odataObject.InvoiceAccountBalance != null) ? parseFloat(odataObject.InvoiceAccountBalance) : undefined;\n              \n            this.InvoiceAccountPendingBalance = \n                (odataObject.InvoiceAccountPendingBalance != null) ? parseFloat(odataObject.InvoiceAccountPendingBalance) : undefined;\n              \n            this.InvoiceAccountCreditLimit = \n                (odataObject.InvoiceAccountCreditLimit != null) ? parseFloat(odataObject.InvoiceAccountCreditLimit) : undefined;\n              \n            this.OpenInvoiceBalance = \n                (odataObject.OpenInvoiceBalance != null) ? parseFloat(odataObject.OpenInvoiceBalance) : undefined;\n              \n            this.OpenInvoiceCount = \n                odataObject.OpenInvoiceCount;\n              \n      }\n      }\n      entityDictionary['CustomerBalancesClass'] = CustomerBalancesClass;\n    \n      /**\n      * GlobalCustomer entity class.\n      */\n      export class GlobalCustomerClass implements Entities.GlobalCustomer {\n      public PartyNumber: string;\n      public RecordId: number;\n      public IsAsyncCustomer: boolean;\n      public AccountNumber: string;\n      public FullName: string;\n      public FullAddress: string;\n      public Phone: string;\n      public Email: string;\n      public CustomerTypeValue: number;\n      public Images: Entities.MediaLocation[];\n      public OfflineImage: string;\n      public IsB2b: boolean;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.PartyNumber = \n                odataObject.PartyNumber;\n              \n            this.RecordId = \n                (odataObject.RecordId != null) ? parseInt(odataObject.RecordId, 10) : undefined;\n              \n            this.IsAsyncCustomer = \n                odataObject.IsAsyncCustomer;\n              \n            this.AccountNumber = \n                odataObject.AccountNumber;\n              \n            this.FullName = \n                odataObject.FullName;\n              \n            this.FullAddress = \n                odataObject.FullAddress;\n              \n            this.Phone = \n                odataObject.Phone;\n              \n            this.Email = \n                odataObject.Email;\n              \n            this.CustomerTypeValue = \n                odataObject.CustomerTypeValue;\n              \n        this.Images = undefined;\n        if (odataObject.Images) {\n        this.Images = [];\n        for (var i = 0; i < odataObject.Images.length; i++) {\n        if (odataObject.Images[i] != null) {\n        if (odataObject.Images[i]['@odata.type'] != null) {\n          var className: string = odataObject.Images[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.Images[i] = new entityDictionary[className](odataObject.Images[i])\n          }\n        } else {\n            this.Images[i] = new MediaLocationClass(odataObject.Images[i]);\n        }\n                    } else {\n        this.Images[i] = undefined;\n        }\n        }\n        }\n      \n            this.OfflineImage = \n                odataObject.OfflineImage;\n              \n            this.IsB2b = \n                odataObject.IsB2b;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['GlobalCustomerClass'] = GlobalCustomerClass;\n    \n      /**\n      * AttributeValue entity class.\n      */\n      export class AttributeValueClass implements Entities.AttributeValue {\n      public Name: string;\n      public KeyName: string;\n      public UnitOfMeasureSymbol: string;\n      public DataTypeValue: number;\n      public BooleanValue: boolean;\n      public DateTimeOffsetValue: Date;\n      public FloatValue: number;\n      public IntegerValue: number;\n      public TextValue: string;\n      public CurrencyValue: number;\n      public CurrencyCode: string;\n      public AttributeValueId: number;\n      public RecordId: number;\n      public Swatches: Entities.AttributeSwatch[];\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.Name = \n                odataObject.Name;\n              \n            this.KeyName = \n                odataObject.KeyName;\n              \n            this.UnitOfMeasureSymbol = \n                odataObject.UnitOfMeasureSymbol;\n              \n            this.DataTypeValue = \n                odataObject.DataTypeValue;\n              \n            this.BooleanValue = \n                odataObject.BooleanValue;\n              \n            this.DateTimeOffsetValue = \n                (odataObject.DateTimeOffsetValue instanceof Date) ? odataObject.DateTimeOffsetValue\n                : (odataObject.DateTimeOffsetValue != null) ? jsonLightReadStringPropertyValue(odataObject.DateTimeOffsetValue, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.FloatValue = \n                (odataObject.FloatValue != null) ? parseFloat(odataObject.FloatValue) : undefined;\n              \n            this.IntegerValue = \n                odataObject.IntegerValue;\n              \n            this.TextValue = \n                odataObject.TextValue;\n              \n            this.CurrencyValue = \n                (odataObject.CurrencyValue != null) ? parseFloat(odataObject.CurrencyValue) : undefined;\n              \n            this.CurrencyCode = \n                odataObject.CurrencyCode;\n              \n            this.AttributeValueId = \n                (odataObject.AttributeValueId != null) ? parseInt(odataObject.AttributeValueId, 10) : undefined;\n              \n            this.RecordId = \n                (odataObject.RecordId != null) ? parseInt(odataObject.RecordId, 10) : undefined;\n              \n        this.Swatches = undefined;\n        if (odataObject.Swatches) {\n        this.Swatches = [];\n        for (var i = 0; i < odataObject.Swatches.length; i++) {\n        if (odataObject.Swatches[i] != null) {\n        if (odataObject.Swatches[i]['@odata.type'] != null) {\n          var className: string = odataObject.Swatches[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.Swatches[i] = new entityDictionary[className](odataObject.Swatches[i])\n          }\n        } else {\n            this.Swatches[i] = new AttributeSwatchClass(odataObject.Swatches[i]);\n        }\n                    } else {\n        this.Swatches[i] = undefined;\n        }\n        }\n        }\n      \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['AttributeValueClass'] = AttributeValueClass;\n    \n      /**\n      * AttributeValueBase entity class.\n      */\n      export class AttributeValueBaseClass implements Entities.AttributeValueBase {\n      public Name: string;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.Name = \n                odataObject.Name;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['AttributeValueBaseClass'] = AttributeValueBaseClass;\n    \n      /**\n      * Barcode entity class.\n      */\n      export class BarcodeClass implements Entities.Barcode {\n      public BarcodeId: string;\n      public BarcodePrice: number;\n      public Quantity: number;\n      public CustomerId: string;\n      public EmployeeId: string;\n      public SalespersonId: string;\n      public EANLicenseId: string;\n      public DataEntry: string;\n      public DiscountCode: string;\n      public GiftCardNumber: string;\n      public LoyaltyCardNumber: string;\n      public ItemBarcode: Entities.ItemBarcode;\n      public EntryMethodTypeValue: number;\n      public ItemType: number;\n      public EnterDimensions: boolean;\n      public ItemGroupId: string;\n      public ItemDepartmentId: string;\n      public ScaleItem: boolean;\n      public ZeroPriceValid: boolean;\n      public NegativeQuantity: boolean;\n      public DiscountNotAllowed: boolean;\n      public DateToBeBlocked: Date;\n      public DateToBeActivated: Date;\n      public CheckDigitValidated: boolean;\n      public CouponId: string;\n      public Message: string;\n      public LineDiscountGroup: string;\n      public MultilineDiscountGroup: string;\n      public IncludedInTotalDiscount: boolean;\n      public CostPrice: number;\n      public BatchId: string;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.BarcodeId = \n                odataObject.BarcodeId;\n              \n            this.BarcodePrice = \n                (odataObject.BarcodePrice != null) ? parseFloat(odataObject.BarcodePrice) : undefined;\n              \n            this.Quantity = \n                (odataObject.Quantity != null) ? parseFloat(odataObject.Quantity) : undefined;\n              \n            this.CustomerId = \n                odataObject.CustomerId;\n              \n            this.EmployeeId = \n                odataObject.EmployeeId;\n              \n            this.SalespersonId = \n                odataObject.SalespersonId;\n              \n            this.EANLicenseId = \n                odataObject.EANLicenseId;\n              \n            this.DataEntry = \n                odataObject.DataEntry;\n              \n            this.DiscountCode = \n                odataObject.DiscountCode;\n              \n            this.GiftCardNumber = \n                odataObject.GiftCardNumber;\n              \n            this.LoyaltyCardNumber = \n                odataObject.LoyaltyCardNumber;\n              \n        if (odataObject.ItemBarcode == null) {\n            this.ItemBarcode = undefined;\n        } else if (odataObject.ItemBarcode['@odata.type'] == null) {\n            this.ItemBarcode = new ItemBarcodeClass(odataObject.ItemBarcode);\n        } else {\n            var className: string = odataObject.ItemBarcode['@odata.type'];\n            className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n            if (entityDictionary[className]) {\n                this.ItemBarcode = new entityDictionary[className](odataObject.ItemBarcode)\n            }\n        }\n\n      \n            this.EntryMethodTypeValue = \n                odataObject.EntryMethodTypeValue;\n              \n            this.ItemType = \n                odataObject.ItemType;\n              \n            this.EnterDimensions = \n                odataObject.EnterDimensions;\n              \n            this.ItemGroupId = \n                odataObject.ItemGroupId;\n              \n            this.ItemDepartmentId = \n                odataObject.ItemDepartmentId;\n              \n            this.ScaleItem = \n                odataObject.ScaleItem;\n              \n            this.ZeroPriceValid = \n                odataObject.ZeroPriceValid;\n              \n            this.NegativeQuantity = \n                odataObject.NegativeQuantity;\n              \n            this.DiscountNotAllowed = \n                odataObject.DiscountNotAllowed;\n              \n            this.DateToBeBlocked = \n                (odataObject.DateToBeBlocked instanceof Date) ? odataObject.DateToBeBlocked\n                : (odataObject.DateToBeBlocked != null) ? jsonLightReadStringPropertyValue(odataObject.DateToBeBlocked, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.DateToBeActivated = \n                (odataObject.DateToBeActivated instanceof Date) ? odataObject.DateToBeActivated\n                : (odataObject.DateToBeActivated != null) ? jsonLightReadStringPropertyValue(odataObject.DateToBeActivated, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.CheckDigitValidated = \n                odataObject.CheckDigitValidated;\n              \n            this.CouponId = \n                odataObject.CouponId;\n              \n            this.Message = \n                odataObject.Message;\n              \n            this.LineDiscountGroup = \n                odataObject.LineDiscountGroup;\n              \n            this.MultilineDiscountGroup = \n                odataObject.MultilineDiscountGroup;\n              \n            this.IncludedInTotalDiscount = \n                odataObject.IncludedInTotalDiscount;\n              \n            this.CostPrice = \n                (odataObject.CostPrice != null) ? parseFloat(odataObject.CostPrice) : undefined;\n              \n            this.BatchId = \n                odataObject.BatchId;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['BarcodeClass'] = BarcodeClass;\n    \n      /**\n      * ItemBarcode entity class.\n      */\n      export class ItemBarcodeClass implements Entities.ItemBarcode {\n      public RecordId: number;\n      public ItemId: string;\n      public Description: string;\n      public BarcodeSetupId: string;\n      public ItemBarcodeValue: string;\n      public InventoryDimensionId: string;\n      public IsBlocked: boolean;\n      public Display: boolean;\n      public VariantId: string;\n      public UnitId: string;\n      public UseForInput: boolean;\n      public UseForPrinting: boolean;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.RecordId = \n                (odataObject.RecordId != null) ? parseInt(odataObject.RecordId, 10) : undefined;\n              \n            this.ItemId = \n                odataObject.ItemId;\n              \n            this.Description = \n                odataObject.Description;\n              \n            this.BarcodeSetupId = \n                odataObject.BarcodeSetupId;\n              \n            this.ItemBarcodeValue = \n                odataObject.ItemBarcodeValue;\n              \n            this.InventoryDimensionId = \n                odataObject.InventoryDimensionId;\n              \n            this.IsBlocked = \n                odataObject.IsBlocked;\n              \n            this.Display = \n                odataObject.Display;\n              \n            this.VariantId = \n                odataObject.VariantId;\n              \n            this.UnitId = \n                odataObject.UnitId;\n              \n            this.UseForInput = \n                odataObject.UseForInput;\n              \n            this.UseForPrinting = \n                odataObject.UseForPrinting;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['ItemBarcodeClass'] = ItemBarcodeClass;\n    \n      /**\n      * ButtonGrid entity class.\n      */\n      export class ButtonGridClass implements Entities.ButtonGrid {\n      public Id: string;\n      public Name: string;\n      public DefaultColor: number;\n      public SpaceBetweenButtonsInPixels: number;\n      public Buttons: Entities.ButtonGridButton[];\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.Id = \n                odataObject.Id;\n              \n            this.Name = \n                odataObject.Name;\n              \n            this.DefaultColor = \n                odataObject.DefaultColor;\n              \n            this.SpaceBetweenButtonsInPixels = \n                odataObject.SpaceBetweenButtonsInPixels;\n              \n        this.Buttons = undefined;\n        if (odataObject.Buttons) {\n        this.Buttons = [];\n        for (var i = 0; i < odataObject.Buttons.length; i++) {\n        if (odataObject.Buttons[i] != null) {\n        if (odataObject.Buttons[i]['@odata.type'] != null) {\n          var className: string = odataObject.Buttons[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.Buttons[i] = new entityDictionary[className](odataObject.Buttons[i])\n          }\n        } else {\n            this.Buttons[i] = new ButtonGridButtonClass(odataObject.Buttons[i]);\n        }\n                    } else {\n        this.Buttons[i] = undefined;\n        }\n        }\n        }\n      \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['ButtonGridClass'] = ButtonGridClass;\n    \n      /**\n      * GetButtonGridsByIdsCriteria entity class.\n      */\n      export class GetButtonGridsByIdsCriteriaClass implements Entities.GetButtonGridsByIdsCriteria {\n      public ButtonGridIds: string[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n        this.ButtonGridIds = undefined;\n        if (odataObject.ButtonGridIds) {\n        this.ButtonGridIds = [];\n        for (var i = 0; i < odataObject.ButtonGridIds.length; i++) {\n        if (odataObject.ButtonGridIds[i] != null) {\n            this.ButtonGridIds[i] = \n                odataObject.ButtonGridIds[i];\n                            } else {\n        this.ButtonGridIds[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['GetButtonGridsByIdsCriteriaClass'] = GetButtonGridsByIdsCriteriaClass;\n    \n      /**\n      * CartLine entity class.\n      */\n      export class CartLineClass implements Entities.CartLine {\n      public LineId: string;\n      public TaxOverrideCode: string;\n      public ItemId: string;\n      public Barcode: string;\n      public EntryMethodTypeValue: number;\n      public Description: string;\n      public InventoryDimensionId: string;\n      public Comment: string;\n      public ProductId: number;\n      public WarehouseId: string;\n      public Quantity: number;\n      public Price: number;\n      public ExtendedPrice: number;\n      public TaxAmount: number;\n      public SalesTaxGroupId: string;\n      public ItemTaxGroupId: string;\n      public TotalAmount: number;\n      public NetAmountWithoutTax: number;\n      public NetPrice: number;\n      public DiscountAmountWithoutTax: number;\n      public DiscountAmount: number;\n      public LineDiscount: number;\n      public LinePercentageDiscount: number;\n      public LineManualDiscountPercentage: number;\n      public LineManualDiscountAmount: number;\n      public UnitOfMeasureSymbol: string;\n      public ShippingAddress: Entities.Address;\n      public DeliveryMode: string;\n      public DeliveryModeChargeAmount: number;\n      public RequestedDeliveryDate: Date;\n      public PickupTimeslotStartDateTime: Date;\n      public PickupTimeslotEndDateTime: Date;\n      public IsWarrantyLine: boolean;\n      public WarrantableTransactionId: string;\n      public WarrantableSalesId: string;\n      public WarrantableLineNumber: number;\n      public WarrantableSerialNumber: string;\n      public WarrantiedId: string;\n      public ReturnTransactionId: string;\n      public ReturnLineNumber: number;\n      public ReturnInventTransId: string;\n      public ReturnStore: string;\n      public ReturnTerminalId: string;\n      public IsVoided: boolean;\n      public IsTaxOverideCodeTaxExempt: boolean;\n      public IsGiftCardLine: boolean;\n      public IsPriceKeyedIn: boolean;\n      public GiftCardId: string;\n      public GiftCardCurrencyCode: string;\n      public GiftCardOperationValue: number;\n      public GiftCardTypeValue: number;\n      public SalesStatusValue: number;\n      public QuantityOrdered: number;\n      public QuantityNotProcessed: number;\n      public QuantityReserved: number;\n      public QuantityPicked: number;\n      public QuantityPacked: number;\n      public QuantityInvoiced: number;\n      public QuantityCanceled: number;\n      public FulfillmentStoreId: string;\n      public SerialNumber: string;\n      public ElectronicDeliveryEmail: string;\n      public ElectronicDeliveryEmailContent: string;\n      public IsPriceOverridden: boolean;\n      public OriginalPrice: number;\n      public IsInvoiceLine: boolean;\n      public InvoiceId: string;\n      public InvoiceAmount: number;\n      public GiftCardBalance: number;\n      public LineVersion: number;\n      public PromotionLines: string[];\n      public PriceLines: Entities.PriceLine[];\n      public DiscountLines: Entities.DiscountLine[];\n      public RelatedDiscountedLineIds: string[];\n      public ReasonCodeLines: Entities.ReasonCodeLine[];\n      public ChargeLines: Entities.ChargeLine[];\n      public TaxLines: Entities.TaxLine[];\n      public ReturnTaxLines: Entities.TaxLine[];\n      public TaxRatePercent: number;\n      public IsCustomerAccountDeposit: boolean;\n      public LinkedParentLineId: string;\n      public QuantityReturnable: number;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      public LineNumber: number;\n      public CommissionSalesGroup: string;\n      public TrackingId: string;\n      public StaffId: string;\n      public QuantityRemained: number;\n      public QuantityShipped: number;\n      public CatalogId: number;\n      public AttributeValues: Entities.AttributeValueBase[];\n      public ThirdPartyGiftCardInfo: Entities.ThirdPartyGiftCardInfo;\n      public BarcodeEmbeddedPrice: number;\n      public PriceInBarcode: boolean;\n      public InvoiceTypeValue: number;\n      public InvoicedSalesId: string;\n      public WarehouseLocation: string;\n      public DetailedLineStatusValue: number;\n      public SalesAgreementLineRecordId: number;\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.LineId = \n                odataObject.LineId;\n              \n            this.TaxOverrideCode = \n                odataObject.TaxOverrideCode;\n              \n            this.ItemId = \n                odataObject.ItemId;\n              \n            this.Barcode = \n                odataObject.Barcode;\n              \n            this.EntryMethodTypeValue = \n                odataObject.EntryMethodTypeValue;\n              \n            this.Description = \n                odataObject.Description;\n              \n            this.InventoryDimensionId = \n                odataObject.InventoryDimensionId;\n              \n            this.Comment = \n                odataObject.Comment;\n              \n            this.ProductId = \n                (odataObject.ProductId != null) ? parseInt(odataObject.ProductId, 10) : undefined;\n              \n            this.WarehouseId = \n                odataObject.WarehouseId;\n              \n            this.Quantity = \n                (odataObject.Quantity != null) ? parseFloat(odataObject.Quantity) : undefined;\n              \n            this.Price = \n                (odataObject.Price != null) ? parseFloat(odataObject.Price) : undefined;\n              \n            this.ExtendedPrice = \n                (odataObject.ExtendedPrice != null) ? parseFloat(odataObject.ExtendedPrice) : undefined;\n              \n            this.TaxAmount = \n                (odataObject.TaxAmount != null) ? parseFloat(odataObject.TaxAmount) : undefined;\n              \n            this.SalesTaxGroupId = \n                odataObject.SalesTaxGroupId;\n              \n            this.ItemTaxGroupId = \n                odataObject.ItemTaxGroupId;\n              \n            this.TotalAmount = \n                (odataObject.TotalAmount != null) ? parseFloat(odataObject.TotalAmount) : undefined;\n              \n            this.NetAmountWithoutTax = \n                (odataObject.NetAmountWithoutTax != null) ? parseFloat(odataObject.NetAmountWithoutTax) : undefined;\n              \n            this.NetPrice = \n                (odataObject.NetPrice != null) ? parseFloat(odataObject.NetPrice) : undefined;\n              \n            this.DiscountAmountWithoutTax = \n                (odataObject.DiscountAmountWithoutTax != null) ? parseFloat(odataObject.DiscountAmountWithoutTax) : undefined;\n              \n            this.DiscountAmount = \n                (odataObject.DiscountAmount != null) ? parseFloat(odataObject.DiscountAmount) : undefined;\n              \n            this.LineDiscount = \n                (odataObject.LineDiscount != null) ? parseFloat(odataObject.LineDiscount) : undefined;\n              \n            this.LinePercentageDiscount = \n                (odataObject.LinePercentageDiscount != null) ? parseFloat(odataObject.LinePercentageDiscount) : undefined;\n              \n            this.LineManualDiscountPercentage = \n                (odataObject.LineManualDiscountPercentage != null) ? parseFloat(odataObject.LineManualDiscountPercentage) : undefined;\n              \n            this.LineManualDiscountAmount = \n                (odataObject.LineManualDiscountAmount != null) ? parseFloat(odataObject.LineManualDiscountAmount) : undefined;\n              \n            this.UnitOfMeasureSymbol = \n                odataObject.UnitOfMeasureSymbol;\n              \n        if (odataObject.ShippingAddress == null) {\n            this.ShippingAddress = undefined;\n        } else if (odataObject.ShippingAddress['@odata.type'] == null) {\n            this.ShippingAddress = new AddressClass(odataObject.ShippingAddress);\n        } else {\n            var className: string = odataObject.ShippingAddress['@odata.type'];\n            className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n            if (entityDictionary[className]) {\n                this.ShippingAddress = new entityDictionary[className](odataObject.ShippingAddress)\n            }\n        }\n\n      \n            this.DeliveryMode = \n                odataObject.DeliveryMode;\n              \n            this.DeliveryModeChargeAmount = \n                (odataObject.DeliveryModeChargeAmount != null) ? parseFloat(odataObject.DeliveryModeChargeAmount) : undefined;\n              \n            this.RequestedDeliveryDate = \n                (odataObject.RequestedDeliveryDate instanceof Date) ? odataObject.RequestedDeliveryDate\n                : (odataObject.RequestedDeliveryDate != null) ? jsonLightReadStringPropertyValue(odataObject.RequestedDeliveryDate, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.PickupTimeslotStartDateTime = \n                (odataObject.PickupTimeslotStartDateTime instanceof Date) ? odataObject.PickupTimeslotStartDateTime\n                : (odataObject.PickupTimeslotStartDateTime != null) ? jsonLightReadStringPropertyValue(odataObject.PickupTimeslotStartDateTime, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.PickupTimeslotEndDateTime = \n                (odataObject.PickupTimeslotEndDateTime instanceof Date) ? odataObject.PickupTimeslotEndDateTime\n                : (odataObject.PickupTimeslotEndDateTime != null) ? jsonLightReadStringPropertyValue(odataObject.PickupTimeslotEndDateTime, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.IsWarrantyLine = \n                odataObject.IsWarrantyLine;\n              \n            this.WarrantableTransactionId = \n                odataObject.WarrantableTransactionId;\n              \n            this.WarrantableSalesId = \n                odataObject.WarrantableSalesId;\n              \n            this.WarrantableLineNumber = \n                (odataObject.WarrantableLineNumber != null) ? parseFloat(odataObject.WarrantableLineNumber) : undefined;\n              \n            this.WarrantableSerialNumber = \n                odataObject.WarrantableSerialNumber;\n              \n            this.WarrantiedId = \n                odataObject.WarrantiedId;\n              \n            this.ReturnTransactionId = \n                odataObject.ReturnTransactionId;\n              \n            this.ReturnLineNumber = \n                (odataObject.ReturnLineNumber != null) ? parseFloat(odataObject.ReturnLineNumber) : undefined;\n              \n            this.ReturnInventTransId = \n                odataObject.ReturnInventTransId;\n              \n            this.ReturnStore = \n                odataObject.ReturnStore;\n              \n            this.ReturnTerminalId = \n                odataObject.ReturnTerminalId;\n              \n            this.IsVoided = \n                odataObject.IsVoided;\n              \n            this.IsTaxOverideCodeTaxExempt = \n                odataObject.IsTaxOverideCodeTaxExempt;\n              \n            this.IsGiftCardLine = \n                odataObject.IsGiftCardLine;\n              \n            this.IsPriceKeyedIn = \n                odataObject.IsPriceKeyedIn;\n              \n            this.GiftCardId = \n                odataObject.GiftCardId;\n              \n            this.GiftCardCurrencyCode = \n                odataObject.GiftCardCurrencyCode;\n              \n            this.GiftCardOperationValue = \n                odataObject.GiftCardOperationValue;\n              \n            this.GiftCardTypeValue = \n                odataObject.GiftCardTypeValue;\n              \n            this.SalesStatusValue = \n                odataObject.SalesStatusValue;\n              \n            this.QuantityOrdered = \n                (odataObject.QuantityOrdered != null) ? parseFloat(odataObject.QuantityOrdered) : undefined;\n              \n            this.QuantityNotProcessed = \n                (odataObject.QuantityNotProcessed != null) ? parseFloat(odataObject.QuantityNotProcessed) : undefined;\n              \n            this.QuantityReserved = \n                (odataObject.QuantityReserved != null) ? parseFloat(odataObject.QuantityReserved) : undefined;\n              \n            this.QuantityPicked = \n                (odataObject.QuantityPicked != null) ? parseFloat(odataObject.QuantityPicked) : undefined;\n              \n            this.QuantityPacked = \n                (odataObject.QuantityPacked != null) ? parseFloat(odataObject.QuantityPacked) : undefined;\n              \n            this.QuantityInvoiced = \n                (odataObject.QuantityInvoiced != null) ? parseFloat(odataObject.QuantityInvoiced) : undefined;\n              \n            this.QuantityCanceled = \n                (odataObject.QuantityCanceled != null) ? parseFloat(odataObject.QuantityCanceled) : undefined;\n              \n            this.FulfillmentStoreId = \n                odataObject.FulfillmentStoreId;\n              \n            this.SerialNumber = \n                odataObject.SerialNumber;\n              \n            this.ElectronicDeliveryEmail = \n                odataObject.ElectronicDeliveryEmail;\n              \n            this.ElectronicDeliveryEmailContent = \n                odataObject.ElectronicDeliveryEmailContent;\n              \n            this.IsPriceOverridden = \n                odataObject.IsPriceOverridden;\n              \n            this.OriginalPrice = \n                (odataObject.OriginalPrice != null) ? parseFloat(odataObject.OriginalPrice) : undefined;\n              \n            this.IsInvoiceLine = \n                odataObject.IsInvoiceLine;\n              \n            this.InvoiceId = \n                odataObject.InvoiceId;\n              \n            this.InvoiceAmount = \n                (odataObject.InvoiceAmount != null) ? parseFloat(odataObject.InvoiceAmount) : undefined;\n              \n            this.GiftCardBalance = \n                (odataObject.GiftCardBalance != null) ? parseFloat(odataObject.GiftCardBalance) : undefined;\n              \n            this.LineVersion = \n                odataObject.LineVersion;\n              \n        this.PromotionLines = undefined;\n        if (odataObject.PromotionLines) {\n        this.PromotionLines = [];\n        for (var i = 0; i < odataObject.PromotionLines.length; i++) {\n        if (odataObject.PromotionLines[i] != null) {\n            this.PromotionLines[i] = \n                odataObject.PromotionLines[i];\n                            } else {\n        this.PromotionLines[i] = undefined;\n        }\n        }\n        }\n      \n        this.PriceLines = undefined;\n        if (odataObject.PriceLines) {\n        this.PriceLines = [];\n        for (var i = 0; i < odataObject.PriceLines.length; i++) {\n        if (odataObject.PriceLines[i] != null) {\n        if (odataObject.PriceLines[i]['@odata.type'] != null) {\n          var className: string = odataObject.PriceLines[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.PriceLines[i] = new entityDictionary[className](odataObject.PriceLines[i])\n          }\n        } else {\n            this.PriceLines[i] = new PriceLineClass(odataObject.PriceLines[i]);\n        }\n                    } else {\n        this.PriceLines[i] = undefined;\n        }\n        }\n        }\n      \n        this.DiscountLines = undefined;\n        if (odataObject.DiscountLines) {\n        this.DiscountLines = [];\n        for (var i = 0; i < odataObject.DiscountLines.length; i++) {\n        if (odataObject.DiscountLines[i] != null) {\n        if (odataObject.DiscountLines[i]['@odata.type'] != null) {\n          var className: string = odataObject.DiscountLines[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.DiscountLines[i] = new entityDictionary[className](odataObject.DiscountLines[i])\n          }\n        } else {\n            this.DiscountLines[i] = new DiscountLineClass(odataObject.DiscountLines[i]);\n        }\n                    } else {\n        this.DiscountLines[i] = undefined;\n        }\n        }\n        }\n      \n        this.RelatedDiscountedLineIds = undefined;\n        if (odataObject.RelatedDiscountedLineIds) {\n        this.RelatedDiscountedLineIds = [];\n        for (var i = 0; i < odataObject.RelatedDiscountedLineIds.length; i++) {\n        if (odataObject.RelatedDiscountedLineIds[i] != null) {\n            this.RelatedDiscountedLineIds[i] = \n                odataObject.RelatedDiscountedLineIds[i];\n                            } else {\n        this.RelatedDiscountedLineIds[i] = undefined;\n        }\n        }\n        }\n      \n        this.ReasonCodeLines = undefined;\n        if (odataObject.ReasonCodeLines) {\n        this.ReasonCodeLines = [];\n        for (var i = 0; i < odataObject.ReasonCodeLines.length; i++) {\n        if (odataObject.ReasonCodeLines[i] != null) {\n        if (odataObject.ReasonCodeLines[i]['@odata.type'] != null) {\n          var className: string = odataObject.ReasonCodeLines[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ReasonCodeLines[i] = new entityDictionary[className](odataObject.ReasonCodeLines[i])\n          }\n        } else {\n            this.ReasonCodeLines[i] = new ReasonCodeLineClass(odataObject.ReasonCodeLines[i]);\n        }\n                    } else {\n        this.ReasonCodeLines[i] = undefined;\n        }\n        }\n        }\n      \n        this.ChargeLines = undefined;\n        if (odataObject.ChargeLines) {\n        this.ChargeLines = [];\n        for (var i = 0; i < odataObject.ChargeLines.length; i++) {\n        if (odataObject.ChargeLines[i] != null) {\n        if (odataObject.ChargeLines[i]['@odata.type'] != null) {\n          var className: string = odataObject.ChargeLines[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ChargeLines[i] = new entityDictionary[className](odataObject.ChargeLines[i])\n          }\n        } else {\n            this.ChargeLines[i] = new ChargeLineClass(odataObject.ChargeLines[i]);\n        }\n                    } else {\n        this.ChargeLines[i] = undefined;\n        }\n        }\n        }\n      \n        this.TaxLines = undefined;\n        if (odataObject.TaxLines) {\n        this.TaxLines = [];\n        for (var i = 0; i < odataObject.TaxLines.length; i++) {\n        if (odataObject.TaxLines[i] != null) {\n        if (odataObject.TaxLines[i]['@odata.type'] != null) {\n          var className: string = odataObject.TaxLines[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.TaxLines[i] = new entityDictionary[className](odataObject.TaxLines[i])\n          }\n        } else {\n            this.TaxLines[i] = new TaxLineClass(odataObject.TaxLines[i]);\n        }\n                    } else {\n        this.TaxLines[i] = undefined;\n        }\n        }\n        }\n      \n        this.ReturnTaxLines = undefined;\n        if (odataObject.ReturnTaxLines) {\n        this.ReturnTaxLines = [];\n        for (var i = 0; i < odataObject.ReturnTaxLines.length; i++) {\n        if (odataObject.ReturnTaxLines[i] != null) {\n        if (odataObject.ReturnTaxLines[i]['@odata.type'] != null) {\n          var className: string = odataObject.ReturnTaxLines[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ReturnTaxLines[i] = new entityDictionary[className](odataObject.ReturnTaxLines[i])\n          }\n        } else {\n            this.ReturnTaxLines[i] = new TaxLineClass(odataObject.ReturnTaxLines[i]);\n        }\n                    } else {\n        this.ReturnTaxLines[i] = undefined;\n        }\n        }\n        }\n      \n            this.TaxRatePercent = \n                (odataObject.TaxRatePercent != null) ? parseFloat(odataObject.TaxRatePercent) : undefined;\n              \n            this.IsCustomerAccountDeposit = \n                odataObject.IsCustomerAccountDeposit;\n              \n            this.LinkedParentLineId = \n                odataObject.LinkedParentLineId;\n              \n            this.QuantityReturnable = \n                (odataObject.QuantityReturnable != null) ? parseFloat(odataObject.QuantityReturnable) : undefined;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n            this.LineNumber = \n                (odataObject.LineNumber != null) ? parseFloat(odataObject.LineNumber) : undefined;\n              \n            this.CommissionSalesGroup = \n                odataObject.CommissionSalesGroup;\n              \n            this.TrackingId = \n                odataObject.TrackingId;\n              \n            this.StaffId = \n                odataObject.StaffId;\n              \n            this.QuantityRemained = \n                (odataObject.QuantityRemained != null) ? parseFloat(odataObject.QuantityRemained) : undefined;\n              \n            this.QuantityShipped = \n                (odataObject.QuantityShipped != null) ? parseFloat(odataObject.QuantityShipped) : undefined;\n              \n            this.CatalogId = \n                (odataObject.CatalogId != null) ? parseInt(odataObject.CatalogId, 10) : undefined;\n              \n        this.AttributeValues = undefined;\n        if (odataObject.AttributeValues) {\n        this.AttributeValues = [];\n        for (var i = 0; i < odataObject.AttributeValues.length; i++) {\n        if (odataObject.AttributeValues[i] != null) {\n        if (odataObject.AttributeValues[i]['@odata.type'] != null) {\n          var className: string = odataObject.AttributeValues[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.AttributeValues[i] = new entityDictionary[className](odataObject.AttributeValues[i])\n          }\n        } else {\n            this.AttributeValues[i] = new AttributeValueBaseClass(odataObject.AttributeValues[i]);\n        }\n                    } else {\n        this.AttributeValues[i] = undefined;\n        }\n        }\n        }\n      \n        if (odataObject.ThirdPartyGiftCardInfo == null) {\n            this.ThirdPartyGiftCardInfo = undefined;\n        } else if (odataObject.ThirdPartyGiftCardInfo['@odata.type'] == null) {\n            this.ThirdPartyGiftCardInfo = new ThirdPartyGiftCardInfoClass(odataObject.ThirdPartyGiftCardInfo);\n        } else {\n            var className: string = odataObject.ThirdPartyGiftCardInfo['@odata.type'];\n            className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n            if (entityDictionary[className]) {\n                this.ThirdPartyGiftCardInfo = new entityDictionary[className](odataObject.ThirdPartyGiftCardInfo)\n            }\n        }\n\n      \n            this.BarcodeEmbeddedPrice = \n                (odataObject.BarcodeEmbeddedPrice != null) ? parseFloat(odataObject.BarcodeEmbeddedPrice) : undefined;\n              \n            this.PriceInBarcode = \n                odataObject.PriceInBarcode;\n              \n            this.InvoiceTypeValue = \n                odataObject.InvoiceTypeValue;\n              \n            this.InvoicedSalesId = \n                odataObject.InvoicedSalesId;\n              \n            this.WarehouseLocation = \n                odataObject.WarehouseLocation;\n              \n            this.DetailedLineStatusValue = \n                odataObject.DetailedLineStatusValue;\n              \n            this.SalesAgreementLineRecordId = \n                (odataObject.SalesAgreementLineRecordId != null) ? parseInt(odataObject.SalesAgreementLineRecordId, 10) : undefined;\n              \n      }\n      }\n      entityDictionary['CartLineClass'] = CartLineClass;\n    \n      /**\n      * ThirdPartyGiftCardInfo entity class.\n      */\n      export class ThirdPartyGiftCardInfoClass implements Entities.ThirdPartyGiftCardInfo {\n      public Amount: number;\n      public Authorization: string;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.Amount = \n                (odataObject.Amount != null) ? parseFloat(odataObject.Amount) : undefined;\n              \n            this.Authorization = \n                odataObject.Authorization;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['ThirdPartyGiftCardInfoClass'] = ThirdPartyGiftCardInfoClass;\n    \n      /**\n      * CardTypeInfo entity class.\n      */\n      export class CardTypeInfoClass implements Entities.CardTypeInfo {\n      public RecordId: number;\n      public TypeId: string;\n      public Name: string;\n      public PaymentMethodId: string;\n      public CardTypeValue: number;\n      public Issuer: string;\n      public NumberFrom: string;\n      public NumberTo: string;\n      public CashBackLimit: number;\n      public AllowManualInput: boolean;\n      public CheckModulus: boolean;\n      public HasTenderDiscount: boolean;\n      public IsPinRequired: boolean;\n      public IsExpirationDateRequired: boolean;\n      public ConnectorName: string;\n      public PaymentProcessorMethod: string;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.RecordId = \n                (odataObject.RecordId != null) ? parseInt(odataObject.RecordId, 10) : undefined;\n              \n            this.TypeId = \n                odataObject.TypeId;\n              \n            this.Name = \n                odataObject.Name;\n              \n            this.PaymentMethodId = \n                odataObject.PaymentMethodId;\n              \n            this.CardTypeValue = \n                odataObject.CardTypeValue;\n              \n            this.Issuer = \n                odataObject.Issuer;\n              \n            this.NumberFrom = \n                odataObject.NumberFrom;\n              \n            this.NumberTo = \n                odataObject.NumberTo;\n              \n            this.CashBackLimit = \n                (odataObject.CashBackLimit != null) ? parseFloat(odataObject.CashBackLimit) : undefined;\n              \n            this.AllowManualInput = \n                odataObject.AllowManualInput;\n              \n            this.CheckModulus = \n                odataObject.CheckModulus;\n              \n            this.HasTenderDiscount = \n                odataObject.HasTenderDiscount;\n              \n            this.IsPinRequired = \n                odataObject.IsPinRequired;\n              \n            this.IsExpirationDateRequired = \n                odataObject.IsExpirationDateRequired;\n              \n            this.ConnectorName = \n                odataObject.ConnectorName;\n              \n            this.PaymentProcessorMethod = \n                odataObject.PaymentProcessorMethod;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['CardTypeInfoClass'] = CardTypeInfoClass;\n    \n      /**\n      * CashDeclaration entity class.\n      */\n      export class CashDeclarationClass implements Entities.CashDeclaration {\n      public RecordId: number;\n      public Currency: string;\n      public Amount: number;\n      public CashTypeValue: number;\n      public IncludeInQuickPayShortcuts: boolean;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.RecordId = \n                (odataObject.RecordId != null) ? parseInt(odataObject.RecordId, 10) : undefined;\n              \n            this.Currency = \n                odataObject.Currency;\n              \n            this.Amount = \n                (odataObject.Amount != null) ? parseFloat(odataObject.Amount) : undefined;\n              \n            this.CashTypeValue = \n                odataObject.CashTypeValue;\n              \n            this.IncludeInQuickPayShortcuts = \n                odataObject.IncludeInQuickPayShortcuts;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['CashDeclarationClass'] = CashDeclarationClass;\n    \n      /**\n      * IncomeExpenseAccount entity class.\n      */\n      export class IncomeExpenseAccountClass implements Entities.IncomeExpenseAccount {\n      public Amount: number;\n      public AccountNumber: string;\n      public AccountName: string;\n      public AccountNameAlias: string;\n      public AccountTypeValue: number;\n      public Quantity: number;\n      public Message1Line: string;\n      public Message2Line: string;\n      public SlipText1Line: string;\n      public SlipText2Line: string;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.Amount = \n                (odataObject.Amount != null) ? parseFloat(odataObject.Amount) : undefined;\n              \n            this.AccountNumber = \n                odataObject.AccountNumber;\n              \n            this.AccountName = \n                odataObject.AccountName;\n              \n            this.AccountNameAlias = \n                odataObject.AccountNameAlias;\n              \n            this.AccountTypeValue = \n                odataObject.AccountTypeValue;\n              \n            this.Quantity = \n                (odataObject.Quantity != null) ? parseFloat(odataObject.Quantity) : undefined;\n              \n            this.Message1Line = \n                odataObject.Message1Line;\n              \n            this.Message2Line = \n                odataObject.Message2Line;\n              \n            this.SlipText1Line = \n                odataObject.SlipText1Line;\n              \n            this.SlipText2Line = \n                odataObject.SlipText2Line;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['IncomeExpenseAccountClass'] = IncomeExpenseAccountClass;\n    \n      /**\n      * IncomeExpenseLine entity class.\n      */\n      export class IncomeExpenseLineClass implements Entities.IncomeExpenseLine {\n      public Amount: number;\n      public IncomeExpenseAccount: string;\n      public StoreNumber: string;\n      public AccountTypeValue: number;\n      public Terminal: string;\n      public Shift: string;\n      public TransactionStatusValue: number;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.Amount = \n                (odataObject.Amount != null) ? parseFloat(odataObject.Amount) : undefined;\n              \n            this.IncomeExpenseAccount = \n                odataObject.IncomeExpenseAccount;\n              \n            this.StoreNumber = \n                odataObject.StoreNumber;\n              \n            this.AccountTypeValue = \n                odataObject.AccountTypeValue;\n              \n            this.Terminal = \n                odataObject.Terminal;\n              \n            this.Shift = \n                odataObject.Shift;\n              \n            this.TransactionStatusValue = \n                odataObject.TransactionStatusValue;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['IncomeExpenseLineClass'] = IncomeExpenseLineClass;\n    \n      /**\n      * CartTenderLine entity class.\n      */\n      export class CartTenderLineClass implements Entities.CartTenderLine {\n      public PaymentCard: Entities.PaymentCard;\n      public TokenizedPaymentCard: Entities.TokenizedPaymentCard;\n      public CardPaymentAcceptResult: Entities.CardPaymentAcceptResult;\n      public IsLinkedRefund: boolean;\n      public LinkedPaymentStore: string;\n      public LinkedPaymentTerminalId: string;\n      public LinkedPaymentTransactionId: string;\n      public LinkedPaymentLineNumber: number;\n      public LinkedPaymentCurrency: string;\n      public TenderLineId: string;\n      public Amount: number;\n      public CashBackAmount: number;\n      public AmountInTenderedCurrency: number;\n      public AmountInCompanyCurrency: number;\n      public Currency: string;\n      public ExchangeRate: number;\n      public CompanyCurrencyExchangeRate: number;\n      public TenderTypeId: string;\n      public SignatureData: string;\n      public ReasonCodeLines: Entities.ReasonCodeLine[];\n      public LineNumber: number;\n      public GiftCardId: string;\n      public GiftCardPin: string;\n      public GiftCardExpirationYear: number;\n      public GiftCardExpirationMonth: number;\n      public CreditMemoId: string;\n      public CustomerId: string;\n      public LoyaltyCardId: string;\n      public CardTypeId: string;\n      public IsChangeLine: boolean;\n      public IsHistorical: boolean;\n      public IsVoidable: boolean;\n      public StatusValue: number;\n      public VoidStatusValue: number;\n      public AuthorizedAmount: number;\n      public PaymentRefRecId: number;\n      public CardPaymentAccountId: string;\n      public ProcessingTypeValue: number;\n      public CardProcessorStatusValue: number;\n      public LinkedPaymentRefRecId: number;\n      public IsPolicyBypassed: boolean;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n        if (odataObject.PaymentCard == null) {\n            this.PaymentCard = undefined;\n        } else if (odataObject.PaymentCard['@odata.type'] == null) {\n            this.PaymentCard = new PaymentCardClass(odataObject.PaymentCard);\n        } else {\n            var className: string = odataObject.PaymentCard['@odata.type'];\n            className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n            if (entityDictionary[className]) {\n                this.PaymentCard = new entityDictionary[className](odataObject.PaymentCard)\n            }\n        }\n\n      \n        if (odataObject.TokenizedPaymentCard == null) {\n            this.TokenizedPaymentCard = undefined;\n        } else if (odataObject.TokenizedPaymentCard['@odata.type'] == null) {\n            this.TokenizedPaymentCard = new TokenizedPaymentCardClass(odataObject.TokenizedPaymentCard);\n        } else {\n            var className: string = odataObject.TokenizedPaymentCard['@odata.type'];\n            className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n            if (entityDictionary[className]) {\n                this.TokenizedPaymentCard = new entityDictionary[className](odataObject.TokenizedPaymentCard)\n            }\n        }\n\n      \n        if (odataObject.CardPaymentAcceptResult == null) {\n            this.CardPaymentAcceptResult = undefined;\n        } else if (odataObject.CardPaymentAcceptResult['@odata.type'] == null) {\n            this.CardPaymentAcceptResult = new CardPaymentAcceptResultClass(odataObject.CardPaymentAcceptResult);\n        } else {\n            var className: string = odataObject.CardPaymentAcceptResult['@odata.type'];\n            className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n            if (entityDictionary[className]) {\n                this.CardPaymentAcceptResult = new entityDictionary[className](odataObject.CardPaymentAcceptResult)\n            }\n        }\n\n      \n            this.IsLinkedRefund = \n                odataObject.IsLinkedRefund;\n              \n            this.LinkedPaymentStore = \n                odataObject.LinkedPaymentStore;\n              \n            this.LinkedPaymentTerminalId = \n                odataObject.LinkedPaymentTerminalId;\n              \n            this.LinkedPaymentTransactionId = \n                odataObject.LinkedPaymentTransactionId;\n              \n            this.LinkedPaymentLineNumber = \n                (odataObject.LinkedPaymentLineNumber != null) ? parseFloat(odataObject.LinkedPaymentLineNumber) : undefined;\n              \n            this.LinkedPaymentCurrency = \n                odataObject.LinkedPaymentCurrency;\n              \n            this.TenderLineId = \n                odataObject.TenderLineId;\n              \n            this.Amount = \n                (odataObject.Amount != null) ? parseFloat(odataObject.Amount) : undefined;\n              \n            this.CashBackAmount = \n                (odataObject.CashBackAmount != null) ? parseFloat(odataObject.CashBackAmount) : undefined;\n              \n            this.AmountInTenderedCurrency = \n                (odataObject.AmountInTenderedCurrency != null) ? parseFloat(odataObject.AmountInTenderedCurrency) : undefined;\n              \n            this.AmountInCompanyCurrency = \n                (odataObject.AmountInCompanyCurrency != null) ? parseFloat(odataObject.AmountInCompanyCurrency) : undefined;\n              \n            this.Currency = \n                odataObject.Currency;\n              \n            this.ExchangeRate = \n                (odataObject.ExchangeRate != null) ? parseFloat(odataObject.ExchangeRate) : undefined;\n              \n            this.CompanyCurrencyExchangeRate = \n                (odataObject.CompanyCurrencyExchangeRate != null) ? parseFloat(odataObject.CompanyCurrencyExchangeRate) : undefined;\n              \n            this.TenderTypeId = \n                odataObject.TenderTypeId;\n              \n            this.SignatureData = \n                odataObject.SignatureData;\n              \n        this.ReasonCodeLines = undefined;\n        if (odataObject.ReasonCodeLines) {\n        this.ReasonCodeLines = [];\n        for (var i = 0; i < odataObject.ReasonCodeLines.length; i++) {\n        if (odataObject.ReasonCodeLines[i] != null) {\n        if (odataObject.ReasonCodeLines[i]['@odata.type'] != null) {\n          var className: string = odataObject.ReasonCodeLines[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ReasonCodeLines[i] = new entityDictionary[className](odataObject.ReasonCodeLines[i])\n          }\n        } else {\n            this.ReasonCodeLines[i] = new ReasonCodeLineClass(odataObject.ReasonCodeLines[i]);\n        }\n                    } else {\n        this.ReasonCodeLines[i] = undefined;\n        }\n        }\n        }\n      \n            this.LineNumber = \n                (odataObject.LineNumber != null) ? parseFloat(odataObject.LineNumber) : undefined;\n              \n            this.GiftCardId = \n                odataObject.GiftCardId;\n              \n            this.GiftCardPin = \n                odataObject.GiftCardPin;\n              \n            this.GiftCardExpirationYear = \n                odataObject.GiftCardExpirationYear;\n              \n            this.GiftCardExpirationMonth = \n                odataObject.GiftCardExpirationMonth;\n              \n            this.CreditMemoId = \n                odataObject.CreditMemoId;\n              \n            this.CustomerId = \n                odataObject.CustomerId;\n              \n            this.LoyaltyCardId = \n                odataObject.LoyaltyCardId;\n              \n            this.CardTypeId = \n                odataObject.CardTypeId;\n              \n            this.IsChangeLine = \n                odataObject.IsChangeLine;\n              \n            this.IsHistorical = \n                odataObject.IsHistorical;\n              \n            this.IsVoidable = \n                odataObject.IsVoidable;\n              \n            this.StatusValue = \n                odataObject.StatusValue;\n              \n            this.VoidStatusValue = \n                odataObject.VoidStatusValue;\n              \n            this.AuthorizedAmount = \n                (odataObject.AuthorizedAmount != null) ? parseFloat(odataObject.AuthorizedAmount) : undefined;\n              \n            this.PaymentRefRecId = \n                (odataObject.PaymentRefRecId != null) ? parseInt(odataObject.PaymentRefRecId, 10) : undefined;\n              \n            this.CardPaymentAccountId = \n                odataObject.CardPaymentAccountId;\n              \n            this.ProcessingTypeValue = \n                odataObject.ProcessingTypeValue;\n              \n            this.CardProcessorStatusValue = \n                odataObject.CardProcessorStatusValue;\n              \n            this.LinkedPaymentRefRecId = \n                (odataObject.LinkedPaymentRefRecId != null) ? parseInt(odataObject.LinkedPaymentRefRecId, 10) : undefined;\n              \n            this.IsPolicyBypassed = \n                odataObject.IsPolicyBypassed;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['CartTenderLineClass'] = CartTenderLineClass;\n    \n      /**\n      * ChargeLine entity class.\n      */\n      export class ChargeLineClass implements Entities.ChargeLine {\n      public ChargeLineId: string;\n      public ChargeCode: string;\n      public CurrencyCode: string;\n      public ModuleTypeValue: number;\n      public IsHeaderChargeProrated: boolean;\n      public ChargeTypeValue: number;\n      public ChargeMethodValue: number;\n      public CalculatedAmount: number;\n      public Value: number;\n      public Description: string;\n      public TransactionId: string;\n      public MarkupAutoLineRecordId: number;\n      public MarkupAutoTableRecId: number;\n      public SaleLineNumber: number;\n      public FromAmount: number;\n      public ToAmount: number;\n      public Keep: number;\n      public AmountRefunded: number;\n      public ChargeLineOverrides: Entities.ChargeLineOverride[];\n      public ReasonCodeLines: Entities.ReasonCodeLine[];\n      public IsRefundable: boolean;\n      public IsShipping: boolean;\n      public IsOverridden: boolean;\n      public IsInvoiced: boolean;\n      public CalculatedProratedAmount: number;\n      public SpecificUnitSymbol: string;\n      public ItemId: string;\n      public Quantity: number;\n      public Price: number;\n      public ItemTaxGroupId: string;\n      public SalesTaxGroupId: string;\n      public OriginalSalesTaxGroupId: string;\n      public OriginalItemTaxGroupId: string;\n      public TaxAmount: number;\n      public SalesOrderUnitOfMeasure: string;\n      public NetAmount: number;\n      public NetAmountPerUnit: number;\n      public GrossAmount: number;\n      public TaxLines: Entities.TaxLine[];\n      public TaxMeasures: Entities.TaxMeasure[];\n      public TaxAmountExemptInclusive: number;\n      public TaxAmountInclusive: number;\n      public TaxAmountExclusive: number;\n      public NetAmountWithAllInclusiveTax: number;\n      public BeginDateTime: Date;\n      public EndDateTime: Date;\n      public TaxRatePercent: number;\n      public IsReturnByReceipt: boolean;\n      public ReturnLineTaxAmount: number;\n      public ReturnTaxLines: Entities.TaxLine[];\n      public TaxExemptPriceInclusiveReductionAmount: number;\n      public TaxExemptPriceInclusiveOriginalPrice: number;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.ChargeLineId = \n                odataObject.ChargeLineId;\n              \n            this.ChargeCode = \n                odataObject.ChargeCode;\n              \n            this.CurrencyCode = \n                odataObject.CurrencyCode;\n              \n            this.ModuleTypeValue = \n                odataObject.ModuleTypeValue;\n              \n            this.IsHeaderChargeProrated = \n                odataObject.IsHeaderChargeProrated;\n              \n            this.ChargeTypeValue = \n                odataObject.ChargeTypeValue;\n              \n            this.ChargeMethodValue = \n                odataObject.ChargeMethodValue;\n              \n            this.CalculatedAmount = \n                (odataObject.CalculatedAmount != null) ? parseFloat(odataObject.CalculatedAmount) : undefined;\n              \n            this.Value = \n                (odataObject.Value != null) ? parseFloat(odataObject.Value) : undefined;\n              \n            this.Description = \n                odataObject.Description;\n              \n            this.TransactionId = \n                odataObject.TransactionId;\n              \n            this.MarkupAutoLineRecordId = \n                (odataObject.MarkupAutoLineRecordId != null) ? parseInt(odataObject.MarkupAutoLineRecordId, 10) : undefined;\n              \n            this.MarkupAutoTableRecId = \n                (odataObject.MarkupAutoTableRecId != null) ? parseInt(odataObject.MarkupAutoTableRecId, 10) : undefined;\n              \n            this.SaleLineNumber = \n                (odataObject.SaleLineNumber != null) ? parseFloat(odataObject.SaleLineNumber) : undefined;\n              \n            this.FromAmount = \n                (odataObject.FromAmount != null) ? parseFloat(odataObject.FromAmount) : undefined;\n              \n            this.ToAmount = \n                (odataObject.ToAmount != null) ? parseFloat(odataObject.ToAmount) : undefined;\n              \n            this.Keep = \n                odataObject.Keep;\n              \n            this.AmountRefunded = \n                (odataObject.AmountRefunded != null) ? parseFloat(odataObject.AmountRefunded) : undefined;\n              \n        this.ChargeLineOverrides = undefined;\n        if (odataObject.ChargeLineOverrides) {\n        this.ChargeLineOverrides = [];\n        for (var i = 0; i < odataObject.ChargeLineOverrides.length; i++) {\n        if (odataObject.ChargeLineOverrides[i] != null) {\n        if (odataObject.ChargeLineOverrides[i]['@odata.type'] != null) {\n          var className: string = odataObject.ChargeLineOverrides[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ChargeLineOverrides[i] = new entityDictionary[className](odataObject.ChargeLineOverrides[i])\n          }\n        } else {\n            this.ChargeLineOverrides[i] = new ChargeLineOverrideClass(odataObject.ChargeLineOverrides[i]);\n        }\n                    } else {\n        this.ChargeLineOverrides[i] = undefined;\n        }\n        }\n        }\n      \n        this.ReasonCodeLines = undefined;\n        if (odataObject.ReasonCodeLines) {\n        this.ReasonCodeLines = [];\n        for (var i = 0; i < odataObject.ReasonCodeLines.length; i++) {\n        if (odataObject.ReasonCodeLines[i] != null) {\n        if (odataObject.ReasonCodeLines[i]['@odata.type'] != null) {\n          var className: string = odataObject.ReasonCodeLines[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ReasonCodeLines[i] = new entityDictionary[className](odataObject.ReasonCodeLines[i])\n          }\n        } else {\n            this.ReasonCodeLines[i] = new ReasonCodeLineClass(odataObject.ReasonCodeLines[i]);\n        }\n                    } else {\n        this.ReasonCodeLines[i] = undefined;\n        }\n        }\n        }\n      \n            this.IsRefundable = \n                odataObject.IsRefundable;\n              \n            this.IsShipping = \n                odataObject.IsShipping;\n              \n            this.IsOverridden = \n                odataObject.IsOverridden;\n              \n            this.IsInvoiced = \n                odataObject.IsInvoiced;\n              \n            this.CalculatedProratedAmount = \n                (odataObject.CalculatedProratedAmount != null) ? parseFloat(odataObject.CalculatedProratedAmount) : undefined;\n              \n            this.SpecificUnitSymbol = \n                odataObject.SpecificUnitSymbol;\n              \n            this.ItemId = \n                odataObject.ItemId;\n              \n            this.Quantity = \n                (odataObject.Quantity != null) ? parseFloat(odataObject.Quantity) : undefined;\n              \n            this.Price = \n                (odataObject.Price != null) ? parseFloat(odataObject.Price) : undefined;\n              \n            this.ItemTaxGroupId = \n                odataObject.ItemTaxGroupId;\n              \n            this.SalesTaxGroupId = \n                odataObject.SalesTaxGroupId;\n              \n            this.OriginalSalesTaxGroupId = \n                odataObject.OriginalSalesTaxGroupId;\n              \n            this.OriginalItemTaxGroupId = \n                odataObject.OriginalItemTaxGroupId;\n              \n            this.TaxAmount = \n                (odataObject.TaxAmount != null) ? parseFloat(odataObject.TaxAmount) : undefined;\n              \n            this.SalesOrderUnitOfMeasure = \n                odataObject.SalesOrderUnitOfMeasure;\n              \n            this.NetAmount = \n                (odataObject.NetAmount != null) ? parseFloat(odataObject.NetAmount) : undefined;\n              \n            this.NetAmountPerUnit = \n                (odataObject.NetAmountPerUnit != null) ? parseFloat(odataObject.NetAmountPerUnit) : undefined;\n              \n            this.GrossAmount = \n                (odataObject.GrossAmount != null) ? parseFloat(odataObject.GrossAmount) : undefined;\n              \n        this.TaxLines = undefined;\n        if (odataObject.TaxLines) {\n        this.TaxLines = [];\n        for (var i = 0; i < odataObject.TaxLines.length; i++) {\n        if (odataObject.TaxLines[i] != null) {\n        if (odataObject.TaxLines[i]['@odata.type'] != null) {\n          var className: string = odataObject.TaxLines[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.TaxLines[i] = new entityDictionary[className](odataObject.TaxLines[i])\n          }\n        } else {\n            this.TaxLines[i] = new TaxLineClass(odataObject.TaxLines[i]);\n        }\n                    } else {\n        this.TaxLines[i] = undefined;\n        }\n        }\n        }\n      \n        this.TaxMeasures = undefined;\n        if (odataObject.TaxMeasures) {\n        this.TaxMeasures = [];\n        for (var i = 0; i < odataObject.TaxMeasures.length; i++) {\n        if (odataObject.TaxMeasures[i] != null) {\n        if (odataObject.TaxMeasures[i]['@odata.type'] != null) {\n          var className: string = odataObject.TaxMeasures[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.TaxMeasures[i] = new entityDictionary[className](odataObject.TaxMeasures[i])\n          }\n        } else {\n            this.TaxMeasures[i] = new TaxMeasureClass(odataObject.TaxMeasures[i]);\n        }\n                    } else {\n        this.TaxMeasures[i] = undefined;\n        }\n        }\n        }\n      \n            this.TaxAmountExemptInclusive = \n                (odataObject.TaxAmountExemptInclusive != null) ? parseFloat(odataObject.TaxAmountExemptInclusive) : undefined;\n              \n            this.TaxAmountInclusive = \n                (odataObject.TaxAmountInclusive != null) ? parseFloat(odataObject.TaxAmountInclusive) : undefined;\n              \n            this.TaxAmountExclusive = \n                (odataObject.TaxAmountExclusive != null) ? parseFloat(odataObject.TaxAmountExclusive) : undefined;\n              \n            this.NetAmountWithAllInclusiveTax = \n                (odataObject.NetAmountWithAllInclusiveTax != null) ? parseFloat(odataObject.NetAmountWithAllInclusiveTax) : undefined;\n              \n            this.BeginDateTime = \n                (odataObject.BeginDateTime instanceof Date) ? odataObject.BeginDateTime\n                : (odataObject.BeginDateTime != null) ? jsonLightReadStringPropertyValue(odataObject.BeginDateTime, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.EndDateTime = \n                (odataObject.EndDateTime instanceof Date) ? odataObject.EndDateTime\n                : (odataObject.EndDateTime != null) ? jsonLightReadStringPropertyValue(odataObject.EndDateTime, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.TaxRatePercent = \n                (odataObject.TaxRatePercent != null) ? parseFloat(odataObject.TaxRatePercent) : undefined;\n              \n            this.IsReturnByReceipt = \n                odataObject.IsReturnByReceipt;\n              \n            this.ReturnLineTaxAmount = \n                (odataObject.ReturnLineTaxAmount != null) ? parseFloat(odataObject.ReturnLineTaxAmount) : undefined;\n              \n        this.ReturnTaxLines = undefined;\n        if (odataObject.ReturnTaxLines) {\n        this.ReturnTaxLines = [];\n        for (var i = 0; i < odataObject.ReturnTaxLines.length; i++) {\n        if (odataObject.ReturnTaxLines[i] != null) {\n        if (odataObject.ReturnTaxLines[i]['@odata.type'] != null) {\n          var className: string = odataObject.ReturnTaxLines[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ReturnTaxLines[i] = new entityDictionary[className](odataObject.ReturnTaxLines[i])\n          }\n        } else {\n            this.ReturnTaxLines[i] = new TaxLineClass(odataObject.ReturnTaxLines[i]);\n        }\n                    } else {\n        this.ReturnTaxLines[i] = undefined;\n        }\n        }\n        }\n      \n            this.TaxExemptPriceInclusiveReductionAmount = \n                (odataObject.TaxExemptPriceInclusiveReductionAmount != null) ? parseFloat(odataObject.TaxExemptPriceInclusiveReductionAmount) : undefined;\n              \n            this.TaxExemptPriceInclusiveOriginalPrice = \n                (odataObject.TaxExemptPriceInclusiveOriginalPrice != null) ? parseFloat(odataObject.TaxExemptPriceInclusiveOriginalPrice) : undefined;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['ChargeLineClass'] = ChargeLineClass;\n    \n      /**\n      * CityInfo entity class.\n      */\n      export class CityInfoClass implements Entities.CityInfo {\n      public Name: string;\n      public Description: string;\n      public CountryRegionId: string;\n      public StateId: string;\n      public CountyId: string;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.Name = \n                odataObject.Name;\n              \n            this.Description = \n                odataObject.Description;\n              \n            this.CountryRegionId = \n                odataObject.CountryRegionId;\n              \n            this.StateId = \n                odataObject.StateId;\n              \n            this.CountyId = \n                odataObject.CountyId;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['CityInfoClass'] = CityInfoClass;\n    \n      /**\n      * CommissionSalesGroup entity class.\n      */\n      export class CommissionSalesGroupClass implements Entities.CommissionSalesGroup {\n      public GroupId: string;\n      public Name: string;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.GroupId = \n                odataObject.GroupId;\n              \n            this.Name = \n                odataObject.Name;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['CommissionSalesGroupClass'] = CommissionSalesGroupClass;\n    \n      /**\n      * ContactInformation entity class.\n      */\n      export class ContactInformationClass implements Entities.ContactInformation {\n      public Value: string;\n      public ContactInformationTypeValue: number;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.Value = \n                odataObject.Value;\n              \n            this.ContactInformationTypeValue = \n                odataObject.ContactInformationTypeValue;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['ContactInformationClass'] = ContactInformationClass;\n    \n      /**\n      * AttributeCategory entity class.\n      */\n      export class AttributeCategoryClass implements Entities.AttributeCategory {\n      public Value: Entities.CommercePropertyValue;\n      public RecordId: number;\n      public Name: string;\n      public KeyName: string;\n      public DataTypeValue: number;\n      public Attribute: number;\n      public NameTranslations: Entities.TextValueTranslation[];\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n        if (odataObject.Value == null) {\n            this.Value = undefined;\n        } else if (odataObject.Value['@odata.type'] == null) {\n            this.Value = new CommercePropertyValueClass(odataObject.Value);\n        } else {\n            var className: string = odataObject.Value['@odata.type'];\n            className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n            if (entityDictionary[className]) {\n                this.Value = new entityDictionary[className](odataObject.Value)\n            }\n        }\n\n      \n            this.RecordId = \n                (odataObject.RecordId != null) ? parseInt(odataObject.RecordId, 10) : undefined;\n              \n            this.Name = \n                odataObject.Name;\n              \n            this.KeyName = \n                odataObject.KeyName;\n              \n            this.DataTypeValue = \n                odataObject.DataTypeValue;\n              \n            this.Attribute = \n                (odataObject.Attribute != null) ? parseInt(odataObject.Attribute, 10) : undefined;\n              \n        this.NameTranslations = undefined;\n        if (odataObject.NameTranslations) {\n        this.NameTranslations = [];\n        for (var i = 0; i < odataObject.NameTranslations.length; i++) {\n        if (odataObject.NameTranslations[i] != null) {\n        if (odataObject.NameTranslations[i]['@odata.type'] != null) {\n          var className: string = odataObject.NameTranslations[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.NameTranslations[i] = new entityDictionary[className](odataObject.NameTranslations[i])\n          }\n        } else {\n            this.NameTranslations[i] = new TextValueTranslationClass(odataObject.NameTranslations[i]);\n        }\n                    } else {\n        this.NameTranslations[i] = undefined;\n        }\n        }\n        }\n      \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['AttributeCategoryClass'] = AttributeCategoryClass;\n    \n      /**\n      * AttributeProduct entity class.\n      */\n      export class AttributeProductClass implements Entities.AttributeProduct {\n      public MetadataFlags: Entities.ProductAttributeMetadataFlags;\n      public IsDimension: boolean;\n      public RecordId: number;\n      public Name: string;\n      public KeyName: string;\n      public DataTypeValue: number;\n      public Attribute: number;\n      public NameTranslations: Entities.TextValueTranslation[];\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n        if (odataObject.MetadataFlags == null) {\n            this.MetadataFlags = undefined;\n        } else if (odataObject.MetadataFlags['@odata.type'] == null) {\n            this.MetadataFlags = new ProductAttributeMetadataFlagsClass(odataObject.MetadataFlags);\n        } else {\n            var className: string = odataObject.MetadataFlags['@odata.type'];\n            className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n            if (entityDictionary[className]) {\n                this.MetadataFlags = new entityDictionary[className](odataObject.MetadataFlags)\n            }\n        }\n\n      \n            this.IsDimension = \n                odataObject.IsDimension;\n              \n            this.RecordId = \n                (odataObject.RecordId != null) ? parseInt(odataObject.RecordId, 10) : undefined;\n              \n            this.Name = \n                odataObject.Name;\n              \n            this.KeyName = \n                odataObject.KeyName;\n              \n            this.DataTypeValue = \n                odataObject.DataTypeValue;\n              \n            this.Attribute = \n                (odataObject.Attribute != null) ? parseInt(odataObject.Attribute, 10) : undefined;\n              \n        this.NameTranslations = undefined;\n        if (odataObject.NameTranslations) {\n        this.NameTranslations = [];\n        for (var i = 0; i < odataObject.NameTranslations.length; i++) {\n        if (odataObject.NameTranslations[i] != null) {\n        if (odataObject.NameTranslations[i]['@odata.type'] != null) {\n          var className: string = odataObject.NameTranslations[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.NameTranslations[i] = new entityDictionary[className](odataObject.NameTranslations[i])\n          }\n        } else {\n            this.NameTranslations[i] = new TextValueTranslationClass(odataObject.NameTranslations[i]);\n        }\n                    } else {\n        this.NameTranslations[i] = undefined;\n        }\n        }\n        }\n      \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['AttributeProductClass'] = AttributeProductClass;\n    \n      /**\n      * ProductComparisonEntry entity class.\n      */\n      export class ProductComparisonEntryClass implements Entities.ProductComparisonEntry {\n      public ProductId: number;\n      public AttributeValue: Entities.AttributeValue;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.ProductId = \n                (odataObject.ProductId != null) ? parseInt(odataObject.ProductId, 10) : undefined;\n              \n        if (odataObject.AttributeValue == null) {\n            this.AttributeValue = undefined;\n        } else if (odataObject.AttributeValue['@odata.type'] == null) {\n            this.AttributeValue = new AttributeValueClass(odataObject.AttributeValue);\n        } else {\n            var className: string = odataObject.AttributeValue['@odata.type'];\n            className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n            if (entityDictionary[className]) {\n                this.AttributeValue = new entityDictionary[className](odataObject.AttributeValue)\n            }\n        }\n\n      \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['ProductComparisonEntryClass'] = ProductComparisonEntryClass;\n    \n      /**\n      * ProductComparisonLine entity class.\n      */\n      export class ProductComparisonLineClass implements Entities.ProductComparisonLine {\n      public AttributeRecordId: number;\n      public AttributeName: string;\n      public ProductAttributeComparisonEntries: Entities.ProductComparisonEntry[];\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.AttributeRecordId = \n                (odataObject.AttributeRecordId != null) ? parseInt(odataObject.AttributeRecordId, 10) : undefined;\n              \n            this.AttributeName = \n                odataObject.AttributeName;\n              \n        this.ProductAttributeComparisonEntries = undefined;\n        if (odataObject.ProductAttributeComparisonEntries) {\n        this.ProductAttributeComparisonEntries = [];\n        for (var i = 0; i < odataObject.ProductAttributeComparisonEntries.length; i++) {\n        if (odataObject.ProductAttributeComparisonEntries[i] != null) {\n        if (odataObject.ProductAttributeComparisonEntries[i]['@odata.type'] != null) {\n          var className: string = odataObject.ProductAttributeComparisonEntries[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ProductAttributeComparisonEntries[i] = new entityDictionary[className](odataObject.ProductAttributeComparisonEntries[i])\n          }\n        } else {\n            this.ProductAttributeComparisonEntries[i] = new ProductComparisonEntryClass(odataObject.ProductAttributeComparisonEntries[i]);\n        }\n                    } else {\n        this.ProductAttributeComparisonEntries[i] = undefined;\n        }\n        }\n        }\n      \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['ProductComparisonLineClass'] = ProductComparisonLineClass;\n    \n      /**\n      * CustomerSearchField entity class.\n      */\n      export class CustomerSearchFieldClass implements Entities.CustomerSearchField {\n      public IsShortcut: boolean;\n      public DisplayName: string;\n      public CanBeRefined: boolean;\n      public SearchField: Entities.CustomerSearchFieldType;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.IsShortcut = \n                odataObject.IsShortcut;\n              \n            this.DisplayName = \n                odataObject.DisplayName;\n              \n            this.CanBeRefined = \n                odataObject.CanBeRefined;\n              \n        if (odataObject.SearchField == null) {\n            this.SearchField = undefined;\n        } else if (odataObject.SearchField['@odata.type'] == null) {\n            this.SearchField = new CustomerSearchFieldTypeClass(odataObject.SearchField);\n        } else {\n            var className: string = odataObject.SearchField['@odata.type'];\n            className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n            if (entityDictionary[className]) {\n                this.SearchField = new entityDictionary[className](odataObject.SearchField)\n            }\n        }\n\n      \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['CustomerSearchFieldClass'] = CustomerSearchFieldClass;\n    \n      /**\n      * CustomerSearchByFieldCriteria entity class.\n      */\n      export class CustomerSearchByFieldCriteriaClass implements Entities.CustomerSearchByFieldCriteria {\n      public Criteria: Entities.CustomerSearchByFieldCriterion[];\n      public DataLevelValue: number;\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n        this.Criteria = undefined;\n        if (odataObject.Criteria) {\n        this.Criteria = [];\n        for (var i = 0; i < odataObject.Criteria.length; i++) {\n        if (odataObject.Criteria[i] != null) {\n        if (odataObject.Criteria[i]['@odata.type'] != null) {\n          var className: string = odataObject.Criteria[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.Criteria[i] = new entityDictionary[className](odataObject.Criteria[i])\n          }\n        } else {\n            this.Criteria[i] = new CustomerSearchByFieldCriterionClass(odataObject.Criteria[i]);\n        }\n                    } else {\n        this.Criteria[i] = undefined;\n        }\n        }\n        }\n      \n            this.DataLevelValue = \n                odataObject.DataLevelValue;\n              \n      }\n      }\n      entityDictionary['CustomerSearchByFieldCriteriaClass'] = CustomerSearchByFieldCriteriaClass;\n    \n      /**\n      * CustomerSearchByFieldCriterion entity class.\n      */\n      export class CustomerSearchByFieldCriterionClass implements Entities.CustomerSearchByFieldCriterion {\n      public SearchTerm: string;\n      public SearchField: Entities.CustomerSearchFieldType;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.SearchTerm = \n                odataObject.SearchTerm;\n              \n        if (odataObject.SearchField == null) {\n            this.SearchField = undefined;\n        } else if (odataObject.SearchField['@odata.type'] == null) {\n            this.SearchField = new CustomerSearchFieldTypeClass(odataObject.SearchField);\n        } else {\n            var className: string = odataObject.SearchField['@odata.type'];\n            className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n            if (entityDictionary[className]) {\n                this.SearchField = new entityDictionary[className](odataObject.SearchField)\n            }\n        }\n\n      \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['CustomerSearchByFieldCriterionClass'] = CustomerSearchByFieldCriterionClass;\n    \n      /**\n      * CustomerSearchFieldType entity class.\n      */\n      export class CustomerSearchFieldTypeClass\n        extends ExtensibleEnumerationClass\n       implements Entities.CustomerSearchFieldType {\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      super(odataObject);odataObject = odataObject || {};\n        this[\"@odata.type\"] = \"#Microsoft.Dynamics.Commerce.Runtime.DataModel.CustomerSearchFieldType\";\n      \n      }\n      }\n      entityDictionary['CustomerSearchFieldTypeClass'] = CustomerSearchFieldTypeClass;\n    \n      /**\n      * OrderShipments entity class.\n      */\n      export class OrderShipmentsClass implements Entities.OrderShipments {\n      public SalesId: string;\n      public ChannelId: number;\n      public ChannelReferenceId: string;\n      public TransactionId: string;\n      public CreatedDateTime: Date;\n      public StatusValue: number;\n      public CurrencyCode: string;\n      public CustomerId: string;\n      public DeliveryMode: string;\n      public GrossAmount: number;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      public InventoryLocationId: string;\n      public ReceiptId: string;\n      public RequestedDeliveryDate: Date;\n      public TotalAmount: number;\n      public TaxAmount: number;\n      public SalesLines: Entities.SalesLine[];\n      public Shipments: Entities.Shipment[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.SalesId = \n                odataObject.SalesId;\n              \n            this.ChannelId = \n                (odataObject.ChannelId != null) ? parseInt(odataObject.ChannelId, 10) : undefined;\n              \n            this.ChannelReferenceId = \n                odataObject.ChannelReferenceId;\n              \n            this.TransactionId = \n                odataObject.TransactionId;\n              \n            this.CreatedDateTime = \n                (odataObject.CreatedDateTime instanceof Date) ? odataObject.CreatedDateTime\n                : (odataObject.CreatedDateTime != null) ? jsonLightReadStringPropertyValue(odataObject.CreatedDateTime, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.StatusValue = \n                odataObject.StatusValue;\n              \n            this.CurrencyCode = \n                odataObject.CurrencyCode;\n              \n            this.CustomerId = \n                odataObject.CustomerId;\n              \n            this.DeliveryMode = \n                odataObject.DeliveryMode;\n              \n            this.GrossAmount = \n                (odataObject.GrossAmount != null) ? parseFloat(odataObject.GrossAmount) : undefined;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n            this.InventoryLocationId = \n                odataObject.InventoryLocationId;\n              \n            this.ReceiptId = \n                odataObject.ReceiptId;\n              \n            this.RequestedDeliveryDate = \n                (odataObject.RequestedDeliveryDate instanceof Date) ? odataObject.RequestedDeliveryDate\n                : (odataObject.RequestedDeliveryDate != null) ? jsonLightReadStringPropertyValue(odataObject.RequestedDeliveryDate, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.TotalAmount = \n                (odataObject.TotalAmount != null) ? parseFloat(odataObject.TotalAmount) : undefined;\n              \n            this.TaxAmount = \n                (odataObject.TaxAmount != null) ? parseFloat(odataObject.TaxAmount) : undefined;\n              \n        this.SalesLines = undefined;\n        if (odataObject.SalesLines) {\n        this.SalesLines = [];\n        for (var i = 0; i < odataObject.SalesLines.length; i++) {\n        if (odataObject.SalesLines[i] != null) {\n        if (odataObject.SalesLines[i]['@odata.type'] != null) {\n          var className: string = odataObject.SalesLines[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.SalesLines[i] = new entityDictionary[className](odataObject.SalesLines[i])\n          }\n        } else {\n            this.SalesLines[i] = new SalesLineClass(odataObject.SalesLines[i]);\n        }\n                    } else {\n        this.SalesLines[i] = undefined;\n        }\n        }\n        }\n      \n        this.Shipments = undefined;\n        if (odataObject.Shipments) {\n        this.Shipments = [];\n        for (var i = 0; i < odataObject.Shipments.length; i++) {\n        if (odataObject.Shipments[i] != null) {\n        if (odataObject.Shipments[i]['@odata.type'] != null) {\n          var className: string = odataObject.Shipments[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.Shipments[i] = new entityDictionary[className](odataObject.Shipments[i])\n          }\n        } else {\n            this.Shipments[i] = new ShipmentClass(odataObject.Shipments[i]);\n        }\n                    } else {\n        this.Shipments[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['OrderShipmentsClass'] = OrderShipmentsClass;\n    \n      /**\n      * Shipment entity class.\n      */\n      export class ShipmentClass implements Entities.Shipment {\n      public SalesId: string;\n      public ShipmentId: string;\n      public DeliveryAddress: Entities.Address;\n      public ShipDate: Date;\n      public DeliveryMode: string;\n      public TermsOfDelivery: string;\n      public WeightUnit: string;\n      public TrackingNumber: string;\n      public TrackingUrl: string;\n      public LatestCarrierTrackingInfo: Entities.TrackingInfo;\n      public CarrierId: string;\n      public CarrierName: string;\n      public ShippingWeight: number;\n      public ShipmentLines: Entities.ShipmentLine[];\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.SalesId = \n                odataObject.SalesId;\n              \n            this.ShipmentId = \n                odataObject.ShipmentId;\n              \n        if (odataObject.DeliveryAddress == null) {\n            this.DeliveryAddress = undefined;\n        } else if (odataObject.DeliveryAddress['@odata.type'] == null) {\n            this.DeliveryAddress = new AddressClass(odataObject.DeliveryAddress);\n        } else {\n            var className: string = odataObject.DeliveryAddress['@odata.type'];\n            className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n            if (entityDictionary[className]) {\n                this.DeliveryAddress = new entityDictionary[className](odataObject.DeliveryAddress)\n            }\n        }\n\n      \n            this.ShipDate = \n                (odataObject.ShipDate instanceof Date) ? odataObject.ShipDate\n                : (odataObject.ShipDate != null) ? jsonLightReadStringPropertyValue(odataObject.ShipDate, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.DeliveryMode = \n                odataObject.DeliveryMode;\n              \n            this.TermsOfDelivery = \n                odataObject.TermsOfDelivery;\n              \n            this.WeightUnit = \n                odataObject.WeightUnit;\n              \n            this.TrackingNumber = \n                odataObject.TrackingNumber;\n              \n            this.TrackingUrl = \n                odataObject.TrackingUrl;\n              \n        if (odataObject.LatestCarrierTrackingInfo == null) {\n            this.LatestCarrierTrackingInfo = undefined;\n        } else if (odataObject.LatestCarrierTrackingInfo['@odata.type'] == null) {\n            this.LatestCarrierTrackingInfo = new TrackingInfoClass(odataObject.LatestCarrierTrackingInfo);\n        } else {\n            var className: string = odataObject.LatestCarrierTrackingInfo['@odata.type'];\n            className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n            if (entityDictionary[className]) {\n                this.LatestCarrierTrackingInfo = new entityDictionary[className](odataObject.LatestCarrierTrackingInfo)\n            }\n        }\n\n      \n            this.CarrierId = \n                odataObject.CarrierId;\n              \n            this.CarrierName = \n                odataObject.CarrierName;\n              \n            this.ShippingWeight = \n                (odataObject.ShippingWeight != null) ? parseFloat(odataObject.ShippingWeight) : undefined;\n              \n        this.ShipmentLines = undefined;\n        if (odataObject.ShipmentLines) {\n        this.ShipmentLines = [];\n        for (var i = 0; i < odataObject.ShipmentLines.length; i++) {\n        if (odataObject.ShipmentLines[i] != null) {\n        if (odataObject.ShipmentLines[i]['@odata.type'] != null) {\n          var className: string = odataObject.ShipmentLines[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ShipmentLines[i] = new entityDictionary[className](odataObject.ShipmentLines[i])\n          }\n        } else {\n            this.ShipmentLines[i] = new ShipmentLineClass(odataObject.ShipmentLines[i]);\n        }\n                    } else {\n        this.ShipmentLines[i] = undefined;\n        }\n        }\n        }\n      \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['ShipmentClass'] = ShipmentClass;\n    \n      /**\n      * ShipmentLine entity class.\n      */\n      export class ShipmentLineClass implements Entities.ShipmentLine {\n      public ShipmentLineId: string;\n      public ItemId: string;\n      public Description: string;\n      public InventDimId: string;\n      public OrderedQuantity: number;\n      public DeliveredQuantity: number;\n      public RemainingQuantity: number;\n      public InventoryTransactionId: string;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.ShipmentLineId = \n                odataObject.ShipmentLineId;\n              \n            this.ItemId = \n                odataObject.ItemId;\n              \n            this.Description = \n                odataObject.Description;\n              \n            this.InventDimId = \n                odataObject.InventDimId;\n              \n            this.OrderedQuantity = \n                (odataObject.OrderedQuantity != null) ? parseFloat(odataObject.OrderedQuantity) : undefined;\n              \n            this.DeliveredQuantity = \n                (odataObject.DeliveredQuantity != null) ? parseFloat(odataObject.DeliveredQuantity) : undefined;\n              \n            this.RemainingQuantity = \n                (odataObject.RemainingQuantity != null) ? parseFloat(odataObject.RemainingQuantity) : undefined;\n              \n            this.InventoryTransactionId = \n                odataObject.InventoryTransactionId;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['ShipmentLineClass'] = ShipmentLineClass;\n    \n      /**\n      * Transaction entity class.\n      */\n      export class TransactionClass implements Entities.Transaction {\n      public Id: string;\n      public StoreId: string;\n      public TerminalId: string;\n      public IsCreatedOffline: boolean;\n      public StaffId: string;\n      public LanguageId: string;\n      public ShiftId: string;\n      public ShiftTerminalId: string;\n      public Description: string;\n      public ReceiptId: string;\n      public GrossAmount: number;\n      public TotalAmount: number;\n      public CreatedDateTime: Date;\n      public TransactionTypeValue: number;\n      public TransactionStatusValue: number;\n      public BeginDateTime: Date;\n      public GiftCardActiveFrom: Date;\n      public GiftCardBalance: number;\n      public GiftCardExpireDate: Date;\n      public GiftCardHistoryDetails: string;\n      public GiftCardIssueAmount: number;\n      public GiftCardIdMasked: string;\n      public FromSafe: string;\n      public ToSafe: string;\n      public FromShiftTerminalId: string;\n      public ToShiftTerminalId: string;\n      public FromShiftId: string;\n      public TransactionSourceContextTypeValue: number;\n      public TransactionDestinationContextTypeValue: number;\n      public ToShiftId: string;\n      public TransactionDateTime: Date;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.Id = \n                odataObject.Id;\n              \n            this.StoreId = \n                odataObject.StoreId;\n              \n            this.TerminalId = \n                odataObject.TerminalId;\n              \n            this.IsCreatedOffline = \n                odataObject.IsCreatedOffline;\n              \n            this.StaffId = \n                odataObject.StaffId;\n              \n            this.LanguageId = \n                odataObject.LanguageId;\n              \n            this.ShiftId = \n                odataObject.ShiftId;\n              \n            this.ShiftTerminalId = \n                odataObject.ShiftTerminalId;\n              \n            this.Description = \n                odataObject.Description;\n              \n            this.ReceiptId = \n                odataObject.ReceiptId;\n              \n            this.GrossAmount = \n                (odataObject.GrossAmount != null) ? parseFloat(odataObject.GrossAmount) : undefined;\n              \n            this.TotalAmount = \n                (odataObject.TotalAmount != null) ? parseFloat(odataObject.TotalAmount) : undefined;\n              \n            this.CreatedDateTime = \n                (odataObject.CreatedDateTime instanceof Date) ? odataObject.CreatedDateTime\n                : (odataObject.CreatedDateTime != null) ? jsonLightReadStringPropertyValue(odataObject.CreatedDateTime, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.TransactionTypeValue = \n                odataObject.TransactionTypeValue;\n              \n            this.TransactionStatusValue = \n                odataObject.TransactionStatusValue;\n              \n            this.BeginDateTime = \n                (odataObject.BeginDateTime instanceof Date) ? odataObject.BeginDateTime\n                : (odataObject.BeginDateTime != null) ? jsonLightReadStringPropertyValue(odataObject.BeginDateTime, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.GiftCardActiveFrom = \n                (odataObject.GiftCardActiveFrom instanceof Date) ? odataObject.GiftCardActiveFrom\n                : (odataObject.GiftCardActiveFrom != null) ? jsonLightReadStringPropertyValue(odataObject.GiftCardActiveFrom, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.GiftCardBalance = \n                (odataObject.GiftCardBalance != null) ? parseFloat(odataObject.GiftCardBalance) : undefined;\n              \n            this.GiftCardExpireDate = \n                (odataObject.GiftCardExpireDate instanceof Date) ? odataObject.GiftCardExpireDate\n                : (odataObject.GiftCardExpireDate != null) ? jsonLightReadStringPropertyValue(odataObject.GiftCardExpireDate, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.GiftCardHistoryDetails = \n                odataObject.GiftCardHistoryDetails;\n              \n            this.GiftCardIssueAmount = \n                (odataObject.GiftCardIssueAmount != null) ? parseFloat(odataObject.GiftCardIssueAmount) : undefined;\n              \n            this.GiftCardIdMasked = \n                odataObject.GiftCardIdMasked;\n              \n            this.FromSafe = \n                odataObject.FromSafe;\n              \n            this.ToSafe = \n                odataObject.ToSafe;\n              \n            this.FromShiftTerminalId = \n                odataObject.FromShiftTerminalId;\n              \n            this.ToShiftTerminalId = \n                odataObject.ToShiftTerminalId;\n              \n            this.FromShiftId = \n                odataObject.FromShiftId;\n              \n            this.TransactionSourceContextTypeValue = \n                odataObject.TransactionSourceContextTypeValue;\n              \n            this.TransactionDestinationContextTypeValue = \n                odataObject.TransactionDestinationContextTypeValue;\n              \n            this.ToShiftId = \n                odataObject.ToShiftId;\n              \n            this.TransactionDateTime = \n                (odataObject.TransactionDateTime instanceof Date) ? odataObject.TransactionDateTime\n                : (odataObject.TransactionDateTime != null) ? jsonLightReadStringPropertyValue(odataObject.TransactionDateTime, \"Edm.DateTimeOffset\", false) : undefined;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['TransactionClass'] = TransactionClass;\n    \n      /**\n      * ShiftReconciliationLine entity class.\n      */\n      export class ShiftReconciliationLineClass\n        extends TransactionClass\n       implements Entities.ShiftReconciliationLine {\n      public GroupId: number;\n      public GroupDescription: string;\n      public ShiftGroupLinesCount: number;\n      public ShiftGroupLinesClosedCount: number;\n      public AmountInOriginalCurrency: number;\n      public TransactionCurrencyCode: string;\n      public TenderType: string;\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      super(odataObject);odataObject = odataObject || {};\n            this.GroupId = \n                (odataObject.GroupId != null) ? parseInt(odataObject.GroupId, 10) : undefined;\n              \n            this.GroupDescription = \n                odataObject.GroupDescription;\n              \n            this.ShiftGroupLinesCount = \n                (odataObject.ShiftGroupLinesCount != null) ? parseInt(odataObject.ShiftGroupLinesCount, 10) : undefined;\n              \n            this.ShiftGroupLinesClosedCount = \n                (odataObject.ShiftGroupLinesClosedCount != null) ? parseInt(odataObject.ShiftGroupLinesClosedCount, 10) : undefined;\n              \n            this.AmountInOriginalCurrency = \n                (odataObject.AmountInOriginalCurrency != null) ? parseFloat(odataObject.AmountInOriginalCurrency) : undefined;\n              \n            this.TransactionCurrencyCode = \n                odataObject.TransactionCurrencyCode;\n              \n            this.TenderType = \n                odataObject.TenderType;\n              \n        this[\"@odata.type\"] = \"#Microsoft.Dynamics.Commerce.Runtime.DataModel.ShiftReconciliationLine\";\n      \n      }\n      }\n      entityDictionary['ShiftReconciliationLineClass'] = ShiftReconciliationLineClass;\n    \n      /**\n      * ShiftReconciliationLineRetrievalCriteria entity class.\n      */\n      export class ShiftReconciliationLineRetrievalCriteriaClass implements Entities.ShiftReconciliationLineRetrievalCriteria {\n      public TransactionTypeValues: number[];\n      public ShiftReconciliationLineStatusValue: number;\n      public Shifts: Entities.ShiftKey[];\n      public DestinationShift: Entities.ShiftKey;\n      public SourceShift: Entities.ShiftKey;\n      public SourceSafe: string;\n      public DestinationSafe: string;\n      public TransactionSourceContextTypeValue: number;\n      public TransactionDestinationContextTypeValue: number;\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n        this.TransactionTypeValues = undefined;\n        if (odataObject.TransactionTypeValues) {\n        this.TransactionTypeValues = [];\n        for (var i = 0; i < odataObject.TransactionTypeValues.length; i++) {\n        if (odataObject.TransactionTypeValues[i] != null) {\n            this.TransactionTypeValues[i] = \n                odataObject.TransactionTypeValues[i];\n                            } else {\n        this.TransactionTypeValues[i] = undefined;\n        }\n        }\n        }\n      \n            this.ShiftReconciliationLineStatusValue = \n                odataObject.ShiftReconciliationLineStatusValue;\n              \n        this.Shifts = undefined;\n        if (odataObject.Shifts) {\n        this.Shifts = [];\n        for (var i = 0; i < odataObject.Shifts.length; i++) {\n        if (odataObject.Shifts[i] != null) {\n        if (odataObject.Shifts[i]['@odata.type'] != null) {\n          var className: string = odataObject.Shifts[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.Shifts[i] = new entityDictionary[className](odataObject.Shifts[i])\n          }\n        } else {\n            this.Shifts[i] = new ShiftKeyClass(odataObject.Shifts[i]);\n        }\n                    } else {\n        this.Shifts[i] = undefined;\n        }\n        }\n        }\n      \n        if (odataObject.DestinationShift == null) {\n            this.DestinationShift = undefined;\n        } else if (odataObject.DestinationShift['@odata.type'] == null) {\n            this.DestinationShift = new ShiftKeyClass(odataObject.DestinationShift);\n        } else {\n            var className: string = odataObject.DestinationShift['@odata.type'];\n            className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n            if (entityDictionary[className]) {\n                this.DestinationShift = new entityDictionary[className](odataObject.DestinationShift)\n            }\n        }\n\n      \n        if (odataObject.SourceShift == null) {\n            this.SourceShift = undefined;\n        } else if (odataObject.SourceShift['@odata.type'] == null) {\n            this.SourceShift = new ShiftKeyClass(odataObject.SourceShift);\n        } else {\n            var className: string = odataObject.SourceShift['@odata.type'];\n            className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n            if (entityDictionary[className]) {\n                this.SourceShift = new entityDictionary[className](odataObject.SourceShift)\n            }\n        }\n\n      \n            this.SourceSafe = \n                odataObject.SourceSafe;\n              \n            this.DestinationSafe = \n                odataObject.DestinationSafe;\n              \n            this.TransactionSourceContextTypeValue = \n                odataObject.TransactionSourceContextTypeValue;\n              \n            this.TransactionDestinationContextTypeValue = \n                odataObject.TransactionDestinationContextTypeValue;\n              \n      }\n      }\n      entityDictionary['ShiftReconciliationLineRetrievalCriteriaClass'] = ShiftReconciliationLineRetrievalCriteriaClass;\n    \n      /**\n      * SearchConfiguration entity class.\n      */\n      export class SearchConfigurationClass implements Entities.SearchConfiguration {\n      public ProductSortColumns: Entities.SortColumn[];\n      public ProductSearchServiceTypeValue: number;\n      public ProductSortColumnsLabels: Entities.LocalizedText[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n        this.ProductSortColumns = undefined;\n        if (odataObject.ProductSortColumns) {\n        this.ProductSortColumns = [];\n        for (var i = 0; i < odataObject.ProductSortColumns.length; i++) {\n        if (odataObject.ProductSortColumns[i] != null) {\n        if (odataObject.ProductSortColumns[i]['@odata.type'] != null) {\n          var className: string = odataObject.ProductSortColumns[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ProductSortColumns[i] = new entityDictionary[className](odataObject.ProductSortColumns[i])\n          }\n        } else {\n            this.ProductSortColumns[i] = new SortColumnClass(odataObject.ProductSortColumns[i]);\n        }\n                    } else {\n        this.ProductSortColumns[i] = undefined;\n        }\n        }\n        }\n      \n            this.ProductSearchServiceTypeValue = \n                odataObject.ProductSearchServiceTypeValue;\n              \n        this.ProductSortColumnsLabels = undefined;\n        if (odataObject.ProductSortColumnsLabels) {\n        this.ProductSortColumnsLabels = [];\n        for (var i = 0; i < odataObject.ProductSortColumnsLabels.length; i++) {\n        if (odataObject.ProductSortColumnsLabels[i] != null) {\n        if (odataObject.ProductSortColumnsLabels[i]['@odata.type'] != null) {\n          var className: string = odataObject.ProductSortColumnsLabels[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ProductSortColumnsLabels[i] = new entityDictionary[className](odataObject.ProductSortColumnsLabels[i])\n          }\n        } else {\n            this.ProductSortColumnsLabels[i] = new LocalizedTextClass(odataObject.ProductSortColumnsLabels[i]);\n        }\n                    } else {\n        this.ProductSortColumnsLabels[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['SearchConfigurationClass'] = SearchConfigurationClass;\n    \n      /**\n      * CustomerTimelineItem entity class.\n      */\n      export class CustomerTimelineItemClass implements Entities.CustomerTimelineItem {\n      public CustomerId: string;\n      public Description: string;\n      public Id: string;\n      public EntityType: string;\n      public TypeId: string;\n      public StaffId: string;\n      public StartDateTime: Date;\n      public Title: string;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.CustomerId = \n                odataObject.CustomerId;\n              \n            this.Description = \n                odataObject.Description;\n              \n            this.Id = \n                odataObject.Id;\n              \n            this.EntityType = \n                odataObject.EntityType;\n              \n            this.TypeId = \n                odataObject.TypeId;\n              \n            this.StaffId = \n                odataObject.StaffId;\n              \n            this.StartDateTime = \n                (odataObject.StartDateTime instanceof Date) ? odataObject.StartDateTime\n                : (odataObject.StartDateTime != null) ? jsonLightReadStringPropertyValue(odataObject.StartDateTime, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.Title = \n                odataObject.Title;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['CustomerTimelineItemClass'] = CustomerTimelineItemClass;\n    \n      /**\n      * AttributeDefinition entity class.\n      */\n      export class AttributeDefinitionClass implements Entities.AttributeDefinition {\n      public RecordId: number;\n      public Name: string;\n      public AttributeTypeName: string;\n      public ExtDataType: Entities.ExtensibleAttributeDataType;\n      public DataTypeValue: number;\n      public IsHidden: boolean;\n      public IsMandatory: boolean;\n      public IsMultiValue: boolean;\n      public IsEnumeration: boolean;\n      public TranslationDetails: Entities.AttributeTranslationDetails[];\n      public EnumerationDetails: Entities.AttributeEnumeration[];\n      public DefaultValue: Entities.CommercePropertyValue;\n      public UpperBound: Entities.CommercePropertyValue;\n      public LowerBound: Entities.CommercePropertyValue;\n      public DisplayOrder: number;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.RecordId = \n                (odataObject.RecordId != null) ? parseInt(odataObject.RecordId, 10) : undefined;\n              \n            this.Name = \n                odataObject.Name;\n              \n            this.AttributeTypeName = \n                odataObject.AttributeTypeName;\n              \n        if (odataObject.ExtDataType == null) {\n            this.ExtDataType = undefined;\n        } else if (odataObject.ExtDataType['@odata.type'] == null) {\n            this.ExtDataType = new ExtensibleAttributeDataTypeClass(odataObject.ExtDataType);\n        } else {\n            var className: string = odataObject.ExtDataType['@odata.type'];\n            className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n            if (entityDictionary[className]) {\n                this.ExtDataType = new entityDictionary[className](odataObject.ExtDataType)\n            }\n        }\n\n      \n            this.DataTypeValue = \n                odataObject.DataTypeValue;\n              \n            this.IsHidden = \n                odataObject.IsHidden;\n              \n            this.IsMandatory = \n                odataObject.IsMandatory;\n              \n            this.IsMultiValue = \n                odataObject.IsMultiValue;\n              \n            this.IsEnumeration = \n                odataObject.IsEnumeration;\n              \n        this.TranslationDetails = undefined;\n        if (odataObject.TranslationDetails) {\n        this.TranslationDetails = [];\n        for (var i = 0; i < odataObject.TranslationDetails.length; i++) {\n        if (odataObject.TranslationDetails[i] != null) {\n        if (odataObject.TranslationDetails[i]['@odata.type'] != null) {\n          var className: string = odataObject.TranslationDetails[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.TranslationDetails[i] = new entityDictionary[className](odataObject.TranslationDetails[i])\n          }\n        } else {\n            this.TranslationDetails[i] = new AttributeTranslationDetailsClass(odataObject.TranslationDetails[i]);\n        }\n                    } else {\n        this.TranslationDetails[i] = undefined;\n        }\n        }\n        }\n      \n        this.EnumerationDetails = undefined;\n        if (odataObject.EnumerationDetails) {\n        this.EnumerationDetails = [];\n        for (var i = 0; i < odataObject.EnumerationDetails.length; i++) {\n        if (odataObject.EnumerationDetails[i] != null) {\n        if (odataObject.EnumerationDetails[i]['@odata.type'] != null) {\n          var className: string = odataObject.EnumerationDetails[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.EnumerationDetails[i] = new entityDictionary[className](odataObject.EnumerationDetails[i])\n          }\n        } else {\n            this.EnumerationDetails[i] = new AttributeEnumerationClass(odataObject.EnumerationDetails[i]);\n        }\n                    } else {\n        this.EnumerationDetails[i] = undefined;\n        }\n        }\n        }\n      \n        if (odataObject.DefaultValue == null) {\n            this.DefaultValue = undefined;\n        } else if (odataObject.DefaultValue['@odata.type'] == null) {\n            this.DefaultValue = new CommercePropertyValueClass(odataObject.DefaultValue);\n        } else {\n            var className: string = odataObject.DefaultValue['@odata.type'];\n            className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n            if (entityDictionary[className]) {\n                this.DefaultValue = new entityDictionary[className](odataObject.DefaultValue)\n            }\n        }\n\n      \n        if (odataObject.UpperBound == null) {\n            this.UpperBound = undefined;\n        } else if (odataObject.UpperBound['@odata.type'] == null) {\n            this.UpperBound = new CommercePropertyValueClass(odataObject.UpperBound);\n        } else {\n            var className: string = odataObject.UpperBound['@odata.type'];\n            className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n            if (entityDictionary[className]) {\n                this.UpperBound = new entityDictionary[className](odataObject.UpperBound)\n            }\n        }\n\n      \n        if (odataObject.LowerBound == null) {\n            this.LowerBound = undefined;\n        } else if (odataObject.LowerBound['@odata.type'] == null) {\n            this.LowerBound = new CommercePropertyValueClass(odataObject.LowerBound);\n        } else {\n            var className: string = odataObject.LowerBound['@odata.type'];\n            className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n            if (entityDictionary[className]) {\n                this.LowerBound = new entityDictionary[className](odataObject.LowerBound)\n            }\n        }\n\n      \n            this.DisplayOrder = \n                (odataObject.DisplayOrder != null) ? parseFloat(odataObject.DisplayOrder) : undefined;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['AttributeDefinitionClass'] = AttributeDefinitionClass;\n    \n      /**\n      * AttributeTranslationDetails entity class.\n      */\n      export class AttributeTranslationDetailsClass implements Entities.AttributeTranslationDetails {\n      public AttributeRecordId: number;\n      public LanguageId: string;\n      public FriendlyName: string;\n      public Description: string;\n      public HelpText: string;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.AttributeRecordId = \n                (odataObject.AttributeRecordId != null) ? parseInt(odataObject.AttributeRecordId, 10) : undefined;\n              \n            this.LanguageId = \n                odataObject.LanguageId;\n              \n            this.FriendlyName = \n                odataObject.FriendlyName;\n              \n            this.Description = \n                odataObject.Description;\n              \n            this.HelpText = \n                odataObject.HelpText;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['AttributeTranslationDetailsClass'] = AttributeTranslationDetailsClass;\n    \n      /**\n      * AttributeEnumeration entity class.\n      */\n      export class AttributeEnumerationClass implements Entities.AttributeEnumeration {\n      public OrdinalNumber: number;\n      public EnumerationValue: string;\n      public AttributeEnumerationTranslations: Entities.AttributeEnumerationTranslation[];\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.OrdinalNumber = \n                odataObject.OrdinalNumber;\n              \n            this.EnumerationValue = \n                odataObject.EnumerationValue;\n              \n        this.AttributeEnumerationTranslations = undefined;\n        if (odataObject.AttributeEnumerationTranslations) {\n        this.AttributeEnumerationTranslations = [];\n        for (var i = 0; i < odataObject.AttributeEnumerationTranslations.length; i++) {\n        if (odataObject.AttributeEnumerationTranslations[i] != null) {\n        if (odataObject.AttributeEnumerationTranslations[i]['@odata.type'] != null) {\n          var className: string = odataObject.AttributeEnumerationTranslations[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.AttributeEnumerationTranslations[i] = new entityDictionary[className](odataObject.AttributeEnumerationTranslations[i])\n          }\n        } else {\n            this.AttributeEnumerationTranslations[i] = new AttributeEnumerationTranslationClass(odataObject.AttributeEnumerationTranslations[i]);\n        }\n                    } else {\n        this.AttributeEnumerationTranslations[i] = undefined;\n        }\n        }\n        }\n      \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['AttributeEnumerationClass'] = AttributeEnumerationClass;\n    \n      /**\n      * AttributeEnumerationTranslation entity class.\n      */\n      export class AttributeEnumerationTranslationClass implements Entities.AttributeEnumerationTranslation {\n      public LanguageId: string;\n      public EnumerationTranslationValue: string;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.LanguageId = \n                odataObject.LanguageId;\n              \n            this.EnumerationTranslationValue = \n                odataObject.EnumerationTranslationValue;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['AttributeEnumerationTranslationClass'] = AttributeEnumerationTranslationClass;\n    \n      /**\n      * AttributeDefinitionCriteria entity class.\n      */\n      export class AttributeDefinitionCriteriaClass implements Entities.AttributeDefinitionCriteria {\n      public AttributeGroupIdentifier: number;\n      public Languages: string[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.AttributeGroupIdentifier = \n                (odataObject.AttributeGroupIdentifier != null) ? parseInt(odataObject.AttributeGroupIdentifier, 10) : undefined;\n              \n        this.Languages = undefined;\n        if (odataObject.Languages) {\n        this.Languages = [];\n        for (var i = 0; i < odataObject.Languages.length; i++) {\n        if (odataObject.Languages[i] != null) {\n            this.Languages[i] = \n                odataObject.Languages[i];\n                            } else {\n        this.Languages[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['AttributeDefinitionCriteriaClass'] = AttributeDefinitionCriteriaClass;\n    \n      /**\n      * AttributeGroupDefinition entity class.\n      */\n      export class AttributeGroupDefinitionClass implements Entities.AttributeGroupDefinition {\n      public RecordId: number;\n      public Name: string;\n      public TranslationDetails: Entities.AttributeGroupTranslationDetails[];\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.RecordId = \n                (odataObject.RecordId != null) ? parseInt(odataObject.RecordId, 10) : undefined;\n              \n            this.Name = \n                odataObject.Name;\n              \n        this.TranslationDetails = undefined;\n        if (odataObject.TranslationDetails) {\n        this.TranslationDetails = [];\n        for (var i = 0; i < odataObject.TranslationDetails.length; i++) {\n        if (odataObject.TranslationDetails[i] != null) {\n        if (odataObject.TranslationDetails[i]['@odata.type'] != null) {\n          var className: string = odataObject.TranslationDetails[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.TranslationDetails[i] = new entityDictionary[className](odataObject.TranslationDetails[i])\n          }\n        } else {\n            this.TranslationDetails[i] = new AttributeGroupTranslationDetailsClass(odataObject.TranslationDetails[i]);\n        }\n                    } else {\n        this.TranslationDetails[i] = undefined;\n        }\n        }\n        }\n      \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['AttributeGroupDefinitionClass'] = AttributeGroupDefinitionClass;\n    \n      /**\n      * AttributeGroupTranslationDetails entity class.\n      */\n      export class AttributeGroupTranslationDetailsClass implements Entities.AttributeGroupTranslationDetails {\n      public AttributeGroupRecordId: number;\n      public LanguageId: string;\n      public FriendlyName: string;\n      public Description: string;\n      public HelpText: string;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.AttributeGroupRecordId = \n                (odataObject.AttributeGroupRecordId != null) ? parseInt(odataObject.AttributeGroupRecordId, 10) : undefined;\n              \n            this.LanguageId = \n                odataObject.LanguageId;\n              \n            this.FriendlyName = \n                odataObject.FriendlyName;\n              \n            this.Description = \n                odataObject.Description;\n              \n            this.HelpText = \n                odataObject.HelpText;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['AttributeGroupTranslationDetailsClass'] = AttributeGroupTranslationDetailsClass;\n    \n      /**\n      * AttributeGroupDefinitionCriteria entity class.\n      */\n      export class AttributeGroupDefinitionCriteriaClass implements Entities.AttributeGroupDefinitionCriteria {\n      public AttributeGroupIdentifiers: number[];\n      public Languages: string[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n        this.AttributeGroupIdentifiers = undefined;\n        if (odataObject.AttributeGroupIdentifiers) {\n        this.AttributeGroupIdentifiers = [];\n        for (var i = 0; i < odataObject.AttributeGroupIdentifiers.length; i++) {\n        if (odataObject.AttributeGroupIdentifiers[i] != null) {\n            this.AttributeGroupIdentifiers[i] = \n                parseInt(odataObject.AttributeGroupIdentifiers[i], 10);\n                            } else {\n        this.AttributeGroupIdentifiers[i] = undefined;\n        }\n        }\n        }\n      \n        this.Languages = undefined;\n        if (odataObject.Languages) {\n        this.Languages = [];\n        for (var i = 0; i < odataObject.Languages.length; i++) {\n        if (odataObject.Languages[i] != null) {\n            this.Languages[i] = \n                odataObject.Languages[i];\n                            } else {\n        this.Languages[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['AttributeGroupDefinitionCriteriaClass'] = AttributeGroupDefinitionCriteriaClass;\n    \n      /**\n      * CountyInfo entity class.\n      */\n      export class CountyInfoClass implements Entities.CountyInfo {\n      public Name: string;\n      public CountyId: string;\n      public CountryRegionId: string;\n      public StateId: string;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.Name = \n                odataObject.Name;\n              \n            this.CountyId = \n                odataObject.CountyId;\n              \n            this.CountryRegionId = \n                odataObject.CountryRegionId;\n              \n            this.StateId = \n                odataObject.StateId;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['CountyInfoClass'] = CountyInfoClass;\n    \n      /**\n      * CustomerGroup entity class.\n      */\n      export class CustomerGroupClass implements Entities.CustomerGroup {\n      public CustomerGroupNumber: string;\n      public CustomerGroupName: string;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.CustomerGroupNumber = \n                odataObject.CustomerGroupNumber;\n              \n            this.CustomerGroupName = \n                odataObject.CustomerGroupName;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['CustomerGroupClass'] = CustomerGroupClass;\n    \n      /**\n      * DiscountLine entity class.\n      */\n      export class DiscountLineClass implements Entities.DiscountLine {\n      public SaleLineNumber: number;\n      public OfferId: string;\n      public OfferName: string;\n      public OfferDescription: string;\n      public Amount: number;\n      public DiscountCost: number;\n      public EffectiveAmount: number;\n      public EffectivePercentage: number;\n      public LineNumber: number;\n      public RecordId: number;\n      public SavedEffectiveAmount: number;\n      public Percentage: number;\n      public DealPrice: number;\n      public DiscountLineTypeValue: number;\n      public ManualDiscountTypeValue: number;\n      public CustomerDiscountTypeValue: number;\n      public PeriodicDiscountTypeValue: number;\n      public DiscountApplicationGroup: string;\n      public ConcurrencyModeValue: number;\n      public IsCompoundable: boolean;\n      public DiscountCode: string;\n      public PricingPriorityNumber: number;\n      public PricingAttributeCombinationPriority: number;\n      public IsDiscountCodeRequired: boolean;\n      public ThresholdAmountRequired: number;\n      public BundleId: number;\n      public ValidFrom: Date;\n      public ValidTo: Date;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.SaleLineNumber = \n                (odataObject.SaleLineNumber != null) ? parseFloat(odataObject.SaleLineNumber) : undefined;\n              \n            this.OfferId = \n                odataObject.OfferId;\n              \n            this.OfferName = \n                odataObject.OfferName;\n              \n            this.OfferDescription = \n                odataObject.OfferDescription;\n              \n            this.Amount = \n                (odataObject.Amount != null) ? parseFloat(odataObject.Amount) : undefined;\n              \n            this.DiscountCost = \n                (odataObject.DiscountCost != null) ? parseFloat(odataObject.DiscountCost) : undefined;\n              \n            this.EffectiveAmount = \n                (odataObject.EffectiveAmount != null) ? parseFloat(odataObject.EffectiveAmount) : undefined;\n              \n            this.EffectivePercentage = \n                (odataObject.EffectivePercentage != null) ? parseFloat(odataObject.EffectivePercentage) : undefined;\n              \n            this.LineNumber = \n                (odataObject.LineNumber != null) ? parseFloat(odataObject.LineNumber) : undefined;\n              \n            this.RecordId = \n                (odataObject.RecordId != null) ? parseInt(odataObject.RecordId, 10) : undefined;\n              \n            this.SavedEffectiveAmount = \n                (odataObject.SavedEffectiveAmount != null) ? parseFloat(odataObject.SavedEffectiveAmount) : undefined;\n              \n            this.Percentage = \n                (odataObject.Percentage != null) ? parseFloat(odataObject.Percentage) : undefined;\n              \n            this.DealPrice = \n                (odataObject.DealPrice != null) ? parseFloat(odataObject.DealPrice) : undefined;\n              \n            this.DiscountLineTypeValue = \n                odataObject.DiscountLineTypeValue;\n              \n            this.ManualDiscountTypeValue = \n                odataObject.ManualDiscountTypeValue;\n              \n            this.CustomerDiscountTypeValue = \n                odataObject.CustomerDiscountTypeValue;\n              \n            this.PeriodicDiscountTypeValue = \n                odataObject.PeriodicDiscountTypeValue;\n              \n            this.DiscountApplicationGroup = \n                odataObject.DiscountApplicationGroup;\n              \n            this.ConcurrencyModeValue = \n                odataObject.ConcurrencyModeValue;\n              \n            this.IsCompoundable = \n                odataObject.IsCompoundable;\n              \n            this.DiscountCode = \n                odataObject.DiscountCode;\n              \n            this.PricingPriorityNumber = \n                odataObject.PricingPriorityNumber;\n              \n            this.PricingAttributeCombinationPriority = \n                (odataObject.PricingAttributeCombinationPriority != null) ? parseFloat(odataObject.PricingAttributeCombinationPriority) : undefined;\n              \n            this.IsDiscountCodeRequired = \n                odataObject.IsDiscountCodeRequired;\n              \n            this.ThresholdAmountRequired = \n                (odataObject.ThresholdAmountRequired != null) ? parseFloat(odataObject.ThresholdAmountRequired) : undefined;\n              \n            this.BundleId = \n                odataObject.BundleId;\n              \n            this.ValidFrom = \n                (odataObject.ValidFrom instanceof Date) ? odataObject.ValidFrom\n                : (odataObject.ValidFrom != null) ? jsonLightReadStringPropertyValue(odataObject.ValidFrom, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.ValidTo = \n                (odataObject.ValidTo instanceof Date) ? odataObject.ValidTo\n                : (odataObject.ValidTo != null) ? jsonLightReadStringPropertyValue(odataObject.ValidTo, \"Edm.DateTimeOffset\", false) : undefined;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['DiscountLineClass'] = DiscountLineClass;\n    \n      /**\n      * EmployeePermissions entity class.\n      */\n      export class EmployeePermissionsClass implements Entities.EmployeePermissions {\n      public PriceOverrideRestrictionValue: number;\n      public AllowPriceOverride: number;\n      public MaximumDiscountPercentage: number;\n      public MaximumLineDiscountAmount: number;\n      public MaximumLineReturnAmount: number;\n      public MaximumTotalDiscountAmount: number;\n      public MaximumTotalDiscountPercentage: number;\n      public MaxTotalReturnAmount: number;\n      public StaffId: string;\n      public Roles: string[];\n      public AllowUseSharedShift: boolean;\n      public AllowManageSharedShift: boolean;\n      public AllowTaskGuides: boolean;\n      public AllowSaleOutsideAssortment: boolean;\n      public AllowPrintingReceiptCopy: string;\n      public AllowSkipFiscalRegistration: boolean;\n      public AllowSkipRegistrationOrMarkAsRegistered: boolean;\n      public AllowPostponeRegistration: boolean;\n      public AllowCreateTransferOrder: boolean;\n      public AllowAcceptOrder: boolean;\n      public AllowTaskManagement: boolean;\n      public AllowRejectOrder: boolean;\n      public AllowMassActivation: boolean;\n      public AllowPostInventoryAdjustment: boolean;\n      public AllowPostStockCounting: boolean;\n      public AllowCreatePurchaseOrder: boolean;\n      public AllowConfirmPurchaseOrder: boolean;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.PriceOverrideRestrictionValue = \n                odataObject.PriceOverrideRestrictionValue;\n              \n            this.AllowPriceOverride = \n                odataObject.AllowPriceOverride;\n              \n            this.MaximumDiscountPercentage = \n                (odataObject.MaximumDiscountPercentage != null) ? parseFloat(odataObject.MaximumDiscountPercentage) : undefined;\n              \n            this.MaximumLineDiscountAmount = \n                (odataObject.MaximumLineDiscountAmount != null) ? parseFloat(odataObject.MaximumLineDiscountAmount) : undefined;\n              \n            this.MaximumLineReturnAmount = \n                (odataObject.MaximumLineReturnAmount != null) ? parseFloat(odataObject.MaximumLineReturnAmount) : undefined;\n              \n            this.MaximumTotalDiscountAmount = \n                (odataObject.MaximumTotalDiscountAmount != null) ? parseFloat(odataObject.MaximumTotalDiscountAmount) : undefined;\n              \n            this.MaximumTotalDiscountPercentage = \n                (odataObject.MaximumTotalDiscountPercentage != null) ? parseFloat(odataObject.MaximumTotalDiscountPercentage) : undefined;\n              \n            this.MaxTotalReturnAmount = \n                (odataObject.MaxTotalReturnAmount != null) ? parseFloat(odataObject.MaxTotalReturnAmount) : undefined;\n              \n            this.StaffId = \n                odataObject.StaffId;\n              \n        this.Roles = undefined;\n        if (odataObject.Roles) {\n        this.Roles = [];\n        for (var i = 0; i < odataObject.Roles.length; i++) {\n        if (odataObject.Roles[i] != null) {\n            this.Roles[i] = \n                odataObject.Roles[i];\n                            } else {\n        this.Roles[i] = undefined;\n        }\n        }\n        }\n      \n            this.AllowUseSharedShift = \n                odataObject.AllowUseSharedShift;\n              \n            this.AllowManageSharedShift = \n                odataObject.AllowManageSharedShift;\n              \n            this.AllowTaskGuides = \n                odataObject.AllowTaskGuides;\n              \n            this.AllowSaleOutsideAssortment = \n                odataObject.AllowSaleOutsideAssortment;\n              \n            this.AllowPrintingReceiptCopy = \n                odataObject.AllowPrintingReceiptCopy;\n              \n            this.AllowSkipFiscalRegistration = \n                odataObject.AllowSkipFiscalRegistration;\n              \n            this.AllowSkipRegistrationOrMarkAsRegistered = \n                odataObject.AllowSkipRegistrationOrMarkAsRegistered;\n              \n            this.AllowPostponeRegistration = \n                odataObject.AllowPostponeRegistration;\n              \n            this.AllowCreateTransferOrder = \n                odataObject.AllowCreateTransferOrder;\n              \n            this.AllowAcceptOrder = \n                odataObject.AllowAcceptOrder;\n              \n            this.AllowTaskManagement = \n                odataObject.AllowTaskManagement;\n              \n            this.AllowRejectOrder = \n                odataObject.AllowRejectOrder;\n              \n            this.AllowMassActivation = \n                odataObject.AllowMassActivation;\n              \n            this.AllowPostInventoryAdjustment = \n                odataObject.AllowPostInventoryAdjustment;\n              \n            this.AllowPostStockCounting = \n                odataObject.AllowPostStockCounting;\n              \n            this.AllowCreatePurchaseOrder = \n                odataObject.AllowCreatePurchaseOrder;\n              \n            this.AllowConfirmPurchaseOrder = \n                odataObject.AllowConfirmPurchaseOrder;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['EmployeePermissionsClass'] = EmployeePermissionsClass;\n    \n      /**\n      * CommerceProperty entity class.\n      */\n      export class CommercePropertyClass implements Entities.CommerceProperty {\n      public Key: string;\n      public Value: Entities.CommercePropertyValue;\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.Key = \n                odataObject.Key;\n              \n        if (odataObject.Value == null) {\n            this.Value = undefined;\n        } else if (odataObject.Value['@odata.type'] == null) {\n            this.Value = new CommercePropertyValueClass(odataObject.Value);\n        } else {\n            var className: string = odataObject.Value['@odata.type'];\n            className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n            if (entityDictionary[className]) {\n                this.Value = new entityDictionary[className](odataObject.Value)\n            }\n        }\n\n      \n      }\n      }\n      entityDictionary['CommercePropertyClass'] = CommercePropertyClass;\n    \n      /**\n      * CommercePropertyValue entity class.\n      */\n      export class CommercePropertyValueClass implements Entities.CommercePropertyValue {\n      public BooleanValue: boolean;\n      public ByteValue: number;\n      public DateTimeOffsetValue: Date;\n      public DecimalValue: number;\n      public IntegerValue: number;\n      public LongValue: number;\n      public StringValue: string;\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.BooleanValue = \n                odataObject.BooleanValue;\n              \n            this.ByteValue = \n                (odataObject.ByteValue != null) ? parseInt(odataObject.ByteValue, 10) : undefined;\n              \n            this.DateTimeOffsetValue = \n                (odataObject.DateTimeOffsetValue instanceof Date) ? odataObject.DateTimeOffsetValue\n                : (odataObject.DateTimeOffsetValue != null) ? jsonLightReadStringPropertyValue(odataObject.DateTimeOffsetValue, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.DecimalValue = \n                (odataObject.DecimalValue != null) ? parseFloat(odataObject.DecimalValue) : undefined;\n              \n            this.IntegerValue = \n                odataObject.IntegerValue;\n              \n            this.LongValue = \n                (odataObject.LongValue != null) ? parseInt(odataObject.LongValue, 10) : undefined;\n              \n            this.StringValue = \n                odataObject.StringValue;\n              \n      }\n      }\n      entityDictionary['CommercePropertyValueClass'] = CommercePropertyValueClass;\n    \n      /**\n      * CountryRegionInfo entity class.\n      */\n      export class CountryRegionInfoClass implements Entities.CountryRegionInfo {\n      public CountryRegionId: string;\n      public ShortName: string;\n      public LongName: string;\n      public ISOCode: string;\n      public TimeZone: number;\n      public LanguageId: string;\n      public AddressFormatLines: Entities.AddressFormattingInfo[];\n      public AddressFormatId: string;\n      public AddressFormatName: string;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.CountryRegionId = \n                odataObject.CountryRegionId;\n              \n            this.ShortName = \n                odataObject.ShortName;\n              \n            this.LongName = \n                odataObject.LongName;\n              \n            this.ISOCode = \n                odataObject.ISOCode;\n              \n            this.TimeZone = \n                odataObject.TimeZone;\n              \n            this.LanguageId = \n                odataObject.LanguageId;\n              \n        this.AddressFormatLines = undefined;\n        if (odataObject.AddressFormatLines) {\n        this.AddressFormatLines = [];\n        for (var i = 0; i < odataObject.AddressFormatLines.length; i++) {\n        if (odataObject.AddressFormatLines[i] != null) {\n        if (odataObject.AddressFormatLines[i]['@odata.type'] != null) {\n          var className: string = odataObject.AddressFormatLines[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.AddressFormatLines[i] = new entityDictionary[className](odataObject.AddressFormatLines[i])\n          }\n        } else {\n            this.AddressFormatLines[i] = new AddressFormattingInfoClass(odataObject.AddressFormatLines[i]);\n        }\n                    } else {\n        this.AddressFormatLines[i] = undefined;\n        }\n        }\n        }\n      \n            this.AddressFormatId = \n                odataObject.AddressFormatId;\n              \n            this.AddressFormatName = \n                odataObject.AddressFormatName;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['CountryRegionInfoClass'] = CountryRegionInfoClass;\n    \n      /**\n      * CreditMemo entity class.\n      */\n      export class CreditMemoClass implements Entities.CreditMemo {\n      public Id: string;\n      public Balance: number;\n      public CurrencyCode: string;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.Id = \n                odataObject.Id;\n              \n            this.Balance = \n                (odataObject.Balance != null) ? parseFloat(odataObject.Balance) : undefined;\n              \n            this.CurrencyCode = \n                odataObject.CurrencyCode;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['CreditMemoClass'] = CreditMemoClass;\n    \n      /**\n      * Currency entity class.\n      */\n      export class CurrencyClass implements Entities.Currency {\n      public CurrencyCode: string;\n      public CurrencySymbol: string;\n      public RoundOffPrice: number;\n      public RoundOffSales: number;\n      public RoundOffTypePrice: number;\n      public RoundOffTypeSales: number;\n      public NumberOfDecimals: number;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.CurrencyCode = \n                odataObject.CurrencyCode;\n              \n            this.CurrencySymbol = \n                odataObject.CurrencySymbol;\n              \n            this.RoundOffPrice = \n                (odataObject.RoundOffPrice != null) ? parseFloat(odataObject.RoundOffPrice) : undefined;\n              \n            this.RoundOffSales = \n                (odataObject.RoundOffSales != null) ? parseFloat(odataObject.RoundOffSales) : undefined;\n              \n            this.RoundOffTypePrice = \n                odataObject.RoundOffTypePrice;\n              \n            this.RoundOffTypeSales = \n                odataObject.RoundOffTypeSales;\n              \n            this.NumberOfDecimals = \n                odataObject.NumberOfDecimals;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['CurrencyClass'] = CurrencyClass;\n    \n      /**\n      * CurrencyAmount entity class.\n      */\n      export class CurrencyAmountClass implements Entities.CurrencyAmount {\n      public CurrencyCode: string;\n      public CurrencySymbol: string;\n      public ConvertedAmount: number;\n      public RoundedConvertedAmount: number;\n      public ExchangeRate: number;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.CurrencyCode = \n                odataObject.CurrencyCode;\n              \n            this.CurrencySymbol = \n                odataObject.CurrencySymbol;\n              \n            this.ConvertedAmount = \n                (odataObject.ConvertedAmount != null) ? parseFloat(odataObject.ConvertedAmount) : undefined;\n              \n            this.RoundedConvertedAmount = \n                (odataObject.RoundedConvertedAmount != null) ? parseFloat(odataObject.RoundedConvertedAmount) : undefined;\n              \n            this.ExchangeRate = \n                (odataObject.ExchangeRate != null) ? parseFloat(odataObject.ExchangeRate) : undefined;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['CurrencyAmountClass'] = CurrencyAmountClass;\n    \n      /**\n      * ScaleUnitConfiguration entity class.\n      */\n      export class ScaleUnitConfigurationClass implements Entities.ScaleUnitConfiguration {\n      public Id: string;\n      public Name: string;\n      public Region: string;\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.Id = \n                odataObject.Id;\n              \n            this.Name = \n                odataObject.Name;\n              \n            this.Region = \n                odataObject.Region;\n              \n      }\n      }\n      entityDictionary['ScaleUnitConfigurationClass'] = ScaleUnitConfigurationClass;\n    \n      /**\n      * EnvironmentConfiguration entity class.\n      */\n      export class EnvironmentConfigurationClass implements Entities.EnvironmentConfiguration {\n      public EnvironmentId: string;\n      public EnvironmentName: string;\n      public TenantId: string;\n      public ClientAppInsightsInstrumentationKey: string;\n      public HardwareStationAppInsightsInstrumentationKey: string;\n      public WindowsPhonePosAppInsightsInstrumentationKey: string;\n      public BaseVersion: string;\n      public ScaleUnit: Entities.ScaleUnitConfiguration;\n      public AADAuthority: string;\n      public FrameworkName: string;\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.EnvironmentId = \n                odataObject.EnvironmentId;\n              \n            this.EnvironmentName = \n                odataObject.EnvironmentName;\n              \n            this.TenantId = \n                odataObject.TenantId;\n              \n            this.ClientAppInsightsInstrumentationKey = \n                odataObject.ClientAppInsightsInstrumentationKey;\n              \n            this.HardwareStationAppInsightsInstrumentationKey = \n                odataObject.HardwareStationAppInsightsInstrumentationKey;\n              \n            this.WindowsPhonePosAppInsightsInstrumentationKey = \n                odataObject.WindowsPhonePosAppInsightsInstrumentationKey;\n              \n            this.BaseVersion = \n                odataObject.BaseVersion;\n              \n        if (odataObject.ScaleUnit == null) {\n            this.ScaleUnit = undefined;\n        } else if (odataObject.ScaleUnit['@odata.type'] == null) {\n            this.ScaleUnit = new ScaleUnitConfigurationClass(odataObject.ScaleUnit);\n        } else {\n            var className: string = odataObject.ScaleUnit['@odata.type'];\n            className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n            if (entityDictionary[className]) {\n                this.ScaleUnit = new entityDictionary[className](odataObject.ScaleUnit)\n            }\n        }\n\n      \n            this.AADAuthority = \n                odataObject.AADAuthority;\n              \n            this.FrameworkName = \n                odataObject.FrameworkName;\n              \n      }\n      }\n      entityDictionary['EnvironmentConfigurationClass'] = EnvironmentConfigurationClass;\n    \n      /**\n      * OrderManagementConfiguration entity class.\n      */\n      export class OrderManagementConfigurationClass implements Entities.OrderManagementConfiguration {\n      public EnableContactEditPromptForAsyncOrderCancellation: boolean;\n      public SkipSalesInvoiceSelectionDuringReturn: boolean;\n      public OrderAttributeForTIN: number;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.EnableContactEditPromptForAsyncOrderCancellation = \n                odataObject.EnableContactEditPromptForAsyncOrderCancellation;\n              \n            this.SkipSalesInvoiceSelectionDuringReturn = \n                odataObject.SkipSalesInvoiceSelectionDuringReturn;\n              \n            this.OrderAttributeForTIN = \n                (odataObject.OrderAttributeForTIN != null) ? parseInt(odataObject.OrderAttributeForTIN, 10) : undefined;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['OrderManagementConfigurationClass'] = OrderManagementConfigurationClass;\n    \n      /**\n      * DeviceConfiguration entity class.\n      */\n      export class DeviceConfigurationClass implements Entities.DeviceConfiguration {\n      public UseInMemoryDeviceDataStorage: boolean;\n      public AllowItemsAggregation: boolean;\n      public AggregateItemsForPrinting: boolean;\n      public AggregatePayments: boolean;\n      public AlwaysExpandTransactionScreenLineDetails: boolean;\n      public AuditEnabled: boolean;\n      public DiscountAtTotal: string;\n      public ProductDiscount: string;\n      public ManuallyCalculateComplexDiscounts: boolean;\n      public DisplaySecondaryTotalCurrency: boolean;\n      public EndOfTransaction: string;\n      public ItemNotOnFile: string;\n      public LimitStaffListToStore: boolean;\n      public LineItemTaxChange: string;\n      public MarkUp: string;\n      public MaximumPrice: number;\n      public MaximumQuantity: number;\n      public MinimumPasswordLength: number;\n      public MustKeyInPriceIfZero: boolean;\n      public NfcEContingencyModeEnabled: string;\n      public NfcEVoided: string;\n      public FunctionalityProfileDescription: string;\n      public OverridePrice: string;\n      public PrintVoidTransactionReceipts: boolean;\n      public PrintReceiptsOnCardDecline: boolean;\n      public PrintXZReportsOnTerminal: boolean;\n      public PrintTenderDetailsOnXReport: boolean;\n      public ProfileId: string;\n      public RefundSale: string;\n      public ReturnProduct: string;\n      public SalesPerson: string;\n      public SecondaryTotalCurrency: string;\n      public SelectHardwareStationOnTendering: boolean;\n      public SelectHardwareStationAtStartOfTransaction: boolean;\n      public SerialNumber: string;\n      public ShowStaffListAtLogOn: boolean;\n      public StaffBarcodeLogOn: boolean;\n      public StaffBarcodeLogOnRequiresPassword: boolean;\n      public StaffCardLogOn: boolean;\n      public StaffCardLogOnRequiresPassword: boolean;\n      public StartOfTransaction: string;\n      public EnableTimeRegistration: boolean;\n      public TenderDeclaration: string;\n      public TransactionTaxChange: string;\n      public VoidItem: string;\n      public VoidPayment: string;\n      public SalesModeDefaultsAsCustomerOrder: boolean;\n      public CreateOfflineCustomerOrders: boolean;\n      public CreateAsyncCustomers: boolean;\n      public EnableAxCustomerSearch: boolean;\n      public VoidTransaction: string;\n      public CultureName: string;\n      public SystemLegalTermsUrl: string;\n      public SystemPrivacyStatementUrl: string;\n      public HideTrainingMode: boolean;\n      public StorePhone: string;\n      public StatementMethod: string;\n      public StoreNumber: string;\n      public ChannelId: number;\n      public StoreTaxGroup: string;\n      public TaxIdNumber: string;\n      public TaxOverrideGroup: number;\n      public TenderDeclarationCalculation: number;\n      public UseCustomerBasedTax: boolean;\n      public UseDestinationBasedTax: boolean;\n      public AutoLogOffTimeoutInMinutes: number;\n      public AutoExitMethodValue: number;\n      public CustomerDisplayText1: string;\n      public CustomerDisplayText2: string;\n      public EFTStoreId: number;\n      public EFTTerminalId: string;\n      public ExitAfterEachTransaction: boolean;\n      public HardwareProfile: string;\n      public Placement: string;\n      public TerminalDescription: string;\n      public OpenDrawer: string;\n      public OpenDrawerAtLogOnLogOff: boolean;\n      public PrintTaxRefundChecks: boolean;\n      public StandAlone: boolean;\n      public TerminalId: string;\n      public TerminalStatement: boolean;\n      public VisualProfile: string;\n      public Currency: string;\n      public InventLocationId: string;\n      public IncludeKitComponents: boolean;\n      public AccentColor: number;\n      public HeaderColor: number;\n      public Theme: string;\n      public FontScheme: number;\n      public ShowAppBarLabel: boolean;\n      public LogOnBackgroundPictureAsBase64: string;\n      public LogOnBackgroundPicturePortraitAsBase64: string;\n      public BackgroundPictureAsBase64: string;\n      public LogonBackgroundPictureId: number;\n      public LogonBackgroundPictureIdCompact: number;\n      public LogonBackgroundPictureIdPortrait: number;\n      public LogonBackgroundPictureIdCompactPortrait: number;\n      public BackgroundPictureId: number;\n      public RequireAmountDeclaration: boolean;\n      public DecimalNotRequiredForMinorCurrencyUnit: boolean;\n      public MaxTransactionSearchResults: number;\n      public OfflineProfileId: number;\n      public NewOfflineDatabaseCheckInterval: number;\n      public OfflineTransactionUploadInterval: number;\n      public ReconnectToOnlineInterval: number;\n      public SwitchToOfflineTimeout: number;\n      public OfflineSwitchApiPerformanceThresholdInSeconds: number;\n      public ReconnectFromPerformanceInducedOfflineIntervalInSeconds: number;\n      public RetentionDays: number;\n      public HardwareConfigurations: Entities.HardwareConfigurations;\n      public CreateRecording: boolean;\n      public PlaybackRecording: boolean;\n      public ShouldUseDefaultCommisionSalesGroup: boolean;\n      public AskForSalesRepresentative: number;\n      public IsSalesRepRequired: boolean;\n      public ProhibitMixingSalesAndReturns: boolean;\n      public ApplyDiscountsToPriceKeyedIn: boolean;\n      public ApplyDiscountsToPriceOverrides: boolean;\n      public IsProductSuggestionsEnabled: boolean;\n      public ProductSearchType: string;\n      public TerminalRecId: number;\n      public DeviceRecId: number;\n      public DenominationsToDisplayValue: number;\n      public PromptOnSeamlessOffline: boolean;\n      public RetryCountToOffline: number;\n      public EnableAdvancedOfflineSwitching: boolean;\n      public SystemHealthCheckInterval: number;\n      public RejectOrderFulfillment: string;\n      public ManuallyCalculateTaxes: boolean;\n      public EmployeeLogonTypeValue: number;\n      public StartAmountCalculation: number;\n      public BankDropCalculation: number;\n      public GenerateLoyaltyCardNumber: boolean;\n      public FiscalRegistrationProcessId: string;\n      public IncludeSalesOrderInvoices: boolean;\n      public IncludeFreeTextInvoices: boolean;\n      public IncludeProjectInvoices: boolean;\n      public IncludeCreditNoteInvoices: boolean;\n      public DisplayTaxExemptInLineDetails: boolean;\n      public TaxExemptReceiptIndicator: string;\n      public ManuallyCalculateCharges: boolean;\n      public ChargeOverrideReasonCode: string;\n      public ShiftReconcilation: string;\n      public CustomerAccountFloorLimit: number;\n      public VoidSuspendedTransactionsOnCloseShift: boolean;\n      public ShowDateTime: boolean;\n      public UseAdvancedCashManagement: boolean;\n      public DefaultCustomerSearchModeValue: number;\n      public AllowManualOfflineBeforeSignIn: boolean;\n      public UseFinancialReconciliationInStore: boolean;\n      public RequirePaymentForFulfillmentValue: number;\n      public CardNotPresentProcessingConfigurationValue: number;\n      public EnableQuickPayShortcuts: boolean;\n      public ChangeDueBehaviorValue: number;\n      public AutoSynchronizeDeviceNumberSequences: boolean;\n      public SelfCheckout: boolean;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.UseInMemoryDeviceDataStorage = \n                odataObject.UseInMemoryDeviceDataStorage;\n              \n            this.AllowItemsAggregation = \n                odataObject.AllowItemsAggregation;\n              \n            this.AggregateItemsForPrinting = \n                odataObject.AggregateItemsForPrinting;\n              \n            this.AggregatePayments = \n                odataObject.AggregatePayments;\n              \n            this.AlwaysExpandTransactionScreenLineDetails = \n                odataObject.AlwaysExpandTransactionScreenLineDetails;\n              \n            this.AuditEnabled = \n                odataObject.AuditEnabled;\n              \n            this.DiscountAtTotal = \n                odataObject.DiscountAtTotal;\n              \n            this.ProductDiscount = \n                odataObject.ProductDiscount;\n              \n            this.ManuallyCalculateComplexDiscounts = \n                odataObject.ManuallyCalculateComplexDiscounts;\n              \n            this.DisplaySecondaryTotalCurrency = \n                odataObject.DisplaySecondaryTotalCurrency;\n              \n            this.EndOfTransaction = \n                odataObject.EndOfTransaction;\n              \n            this.ItemNotOnFile = \n                odataObject.ItemNotOnFile;\n              \n            this.LimitStaffListToStore = \n                odataObject.LimitStaffListToStore;\n              \n            this.LineItemTaxChange = \n                odataObject.LineItemTaxChange;\n              \n            this.MarkUp = \n                odataObject.MarkUp;\n              \n            this.MaximumPrice = \n                (odataObject.MaximumPrice != null) ? parseFloat(odataObject.MaximumPrice) : undefined;\n              \n            this.MaximumQuantity = \n                (odataObject.MaximumQuantity != null) ? parseFloat(odataObject.MaximumQuantity) : undefined;\n              \n            this.MinimumPasswordLength = \n                odataObject.MinimumPasswordLength;\n              \n            this.MustKeyInPriceIfZero = \n                odataObject.MustKeyInPriceIfZero;\n              \n            this.NfcEContingencyModeEnabled = \n                odataObject.NfcEContingencyModeEnabled;\n              \n            this.NfcEVoided = \n                odataObject.NfcEVoided;\n              \n            this.FunctionalityProfileDescription = \n                odataObject.FunctionalityProfileDescription;\n              \n            this.OverridePrice = \n                odataObject.OverridePrice;\n              \n            this.PrintVoidTransactionReceipts = \n                odataObject.PrintVoidTransactionReceipts;\n              \n            this.PrintReceiptsOnCardDecline = \n                odataObject.PrintReceiptsOnCardDecline;\n              \n            this.PrintXZReportsOnTerminal = \n                odataObject.PrintXZReportsOnTerminal;\n              \n            this.PrintTenderDetailsOnXReport = \n                odataObject.PrintTenderDetailsOnXReport;\n              \n            this.ProfileId = \n                odataObject.ProfileId;\n              \n            this.RefundSale = \n                odataObject.RefundSale;\n              \n            this.ReturnProduct = \n                odataObject.ReturnProduct;\n              \n            this.SalesPerson = \n                odataObject.SalesPerson;\n              \n            this.SecondaryTotalCurrency = \n                odataObject.SecondaryTotalCurrency;\n              \n            this.SelectHardwareStationOnTendering = \n                odataObject.SelectHardwareStationOnTendering;\n              \n            this.SelectHardwareStationAtStartOfTransaction = \n                odataObject.SelectHardwareStationAtStartOfTransaction;\n              \n            this.SerialNumber = \n                odataObject.SerialNumber;\n              \n            this.ShowStaffListAtLogOn = \n                odataObject.ShowStaffListAtLogOn;\n              \n            this.StaffBarcodeLogOn = \n                odataObject.StaffBarcodeLogOn;\n              \n            this.StaffBarcodeLogOnRequiresPassword = \n                odataObject.StaffBarcodeLogOnRequiresPassword;\n              \n            this.StaffCardLogOn = \n                odataObject.StaffCardLogOn;\n              \n            this.StaffCardLogOnRequiresPassword = \n                odataObject.StaffCardLogOnRequiresPassword;\n              \n            this.StartOfTransaction = \n                odataObject.StartOfTransaction;\n              \n            this.EnableTimeRegistration = \n                odataObject.EnableTimeRegistration;\n              \n            this.TenderDeclaration = \n                odataObject.TenderDeclaration;\n              \n            this.TransactionTaxChange = \n                odataObject.TransactionTaxChange;\n              \n            this.VoidItem = \n                odataObject.VoidItem;\n              \n            this.VoidPayment = \n                odataObject.VoidPayment;\n              \n            this.SalesModeDefaultsAsCustomerOrder = \n                odataObject.SalesModeDefaultsAsCustomerOrder;\n              \n            this.CreateOfflineCustomerOrders = \n                odataObject.CreateOfflineCustomerOrders;\n              \n            this.CreateAsyncCustomers = \n                odataObject.CreateAsyncCustomers;\n              \n            this.EnableAxCustomerSearch = \n                odataObject.EnableAxCustomerSearch;\n              \n            this.VoidTransaction = \n                odataObject.VoidTransaction;\n              \n            this.CultureName = \n                odataObject.CultureName;\n              \n            this.SystemLegalTermsUrl = \n                odataObject.SystemLegalTermsUrl;\n              \n            this.SystemPrivacyStatementUrl = \n                odataObject.SystemPrivacyStatementUrl;\n              \n            this.HideTrainingMode = \n                odataObject.HideTrainingMode;\n              \n            this.StorePhone = \n                odataObject.StorePhone;\n              \n            this.StatementMethod = \n                odataObject.StatementMethod;\n              \n            this.StoreNumber = \n                odataObject.StoreNumber;\n              \n            this.ChannelId = \n                (odataObject.ChannelId != null) ? parseInt(odataObject.ChannelId, 10) : undefined;\n              \n            this.StoreTaxGroup = \n                odataObject.StoreTaxGroup;\n              \n            this.TaxIdNumber = \n                odataObject.TaxIdNumber;\n              \n            this.TaxOverrideGroup = \n                (odataObject.TaxOverrideGroup != null) ? parseInt(odataObject.TaxOverrideGroup, 10) : undefined;\n              \n            this.TenderDeclarationCalculation = \n                odataObject.TenderDeclarationCalculation;\n              \n            this.UseCustomerBasedTax = \n                odataObject.UseCustomerBasedTax;\n              \n            this.UseDestinationBasedTax = \n                odataObject.UseDestinationBasedTax;\n              \n            this.AutoLogOffTimeoutInMinutes = \n                odataObject.AutoLogOffTimeoutInMinutes;\n              \n            this.AutoExitMethodValue = \n                odataObject.AutoExitMethodValue;\n              \n            this.CustomerDisplayText1 = \n                odataObject.CustomerDisplayText1;\n              \n            this.CustomerDisplayText2 = \n                odataObject.CustomerDisplayText2;\n              \n            this.EFTStoreId = \n                (odataObject.EFTStoreId != null) ? parseInt(odataObject.EFTStoreId, 10) : undefined;\n              \n            this.EFTTerminalId = \n                odataObject.EFTTerminalId;\n              \n            this.ExitAfterEachTransaction = \n                odataObject.ExitAfterEachTransaction;\n              \n            this.HardwareProfile = \n                odataObject.HardwareProfile;\n              \n            this.Placement = \n                odataObject.Placement;\n              \n            this.TerminalDescription = \n                odataObject.TerminalDescription;\n              \n            this.OpenDrawer = \n                odataObject.OpenDrawer;\n              \n            this.OpenDrawerAtLogOnLogOff = \n                odataObject.OpenDrawerAtLogOnLogOff;\n              \n            this.PrintTaxRefundChecks = \n                odataObject.PrintTaxRefundChecks;\n              \n            this.StandAlone = \n                odataObject.StandAlone;\n              \n            this.TerminalId = \n                odataObject.TerminalId;\n              \n            this.TerminalStatement = \n                odataObject.TerminalStatement;\n              \n            this.VisualProfile = \n                odataObject.VisualProfile;\n              \n            this.Currency = \n                odataObject.Currency;\n              \n            this.InventLocationId = \n                odataObject.InventLocationId;\n              \n            this.IncludeKitComponents = \n                odataObject.IncludeKitComponents;\n              \n            this.AccentColor = \n                odataObject.AccentColor;\n              \n            this.HeaderColor = \n                odataObject.HeaderColor;\n              \n            this.Theme = \n                odataObject.Theme;\n              \n            this.FontScheme = \n                odataObject.FontScheme;\n              \n            this.ShowAppBarLabel = \n                odataObject.ShowAppBarLabel;\n              \n            this.LogOnBackgroundPictureAsBase64 = \n                odataObject.LogOnBackgroundPictureAsBase64;\n              \n            this.LogOnBackgroundPicturePortraitAsBase64 = \n                odataObject.LogOnBackgroundPicturePortraitAsBase64;\n              \n            this.BackgroundPictureAsBase64 = \n                odataObject.BackgroundPictureAsBase64;\n              \n            this.LogonBackgroundPictureId = \n                (odataObject.LogonBackgroundPictureId != null) ? parseInt(odataObject.LogonBackgroundPictureId, 10) : undefined;\n              \n            this.LogonBackgroundPictureIdCompact = \n                (odataObject.LogonBackgroundPictureIdCompact != null) ? parseInt(odataObject.LogonBackgroundPictureIdCompact, 10) : undefined;\n              \n            this.LogonBackgroundPictureIdPortrait = \n                (odataObject.LogonBackgroundPictureIdPortrait != null) ? parseInt(odataObject.LogonBackgroundPictureIdPortrait, 10) : undefined;\n              \n            this.LogonBackgroundPictureIdCompactPortrait = \n                (odataObject.LogonBackgroundPictureIdCompactPortrait != null) ? parseInt(odataObject.LogonBackgroundPictureIdCompactPortrait, 10) : undefined;\n              \n            this.BackgroundPictureId = \n                (odataObject.BackgroundPictureId != null) ? parseInt(odataObject.BackgroundPictureId, 10) : undefined;\n              \n            this.RequireAmountDeclaration = \n                odataObject.RequireAmountDeclaration;\n              \n            this.DecimalNotRequiredForMinorCurrencyUnit = \n                odataObject.DecimalNotRequiredForMinorCurrencyUnit;\n              \n            this.MaxTransactionSearchResults = \n                odataObject.MaxTransactionSearchResults;\n              \n            this.OfflineProfileId = \n                (odataObject.OfflineProfileId != null) ? parseInt(odataObject.OfflineProfileId, 10) : undefined;\n              \n            this.NewOfflineDatabaseCheckInterval = \n                odataObject.NewOfflineDatabaseCheckInterval;\n              \n            this.OfflineTransactionUploadInterval = \n                odataObject.OfflineTransactionUploadInterval;\n              \n            this.ReconnectToOnlineInterval = \n                odataObject.ReconnectToOnlineInterval;\n              \n            this.SwitchToOfflineTimeout = \n                odataObject.SwitchToOfflineTimeout;\n              \n            this.OfflineSwitchApiPerformanceThresholdInSeconds = \n                odataObject.OfflineSwitchApiPerformanceThresholdInSeconds;\n              \n            this.ReconnectFromPerformanceInducedOfflineIntervalInSeconds = \n                odataObject.ReconnectFromPerformanceInducedOfflineIntervalInSeconds;\n              \n            this.RetentionDays = \n                odataObject.RetentionDays;\n              \n        if (odataObject.HardwareConfigurations == null) {\n            this.HardwareConfigurations = undefined;\n        } else if (odataObject.HardwareConfigurations['@odata.type'] == null) {\n            this.HardwareConfigurations = new HardwareConfigurationsClass(odataObject.HardwareConfigurations);\n        } else {\n            var className: string = odataObject.HardwareConfigurations['@odata.type'];\n            className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n            if (entityDictionary[className]) {\n                this.HardwareConfigurations = new entityDictionary[className](odataObject.HardwareConfigurations)\n            }\n        }\n\n      \n            this.CreateRecording = \n                odataObject.CreateRecording;\n              \n            this.PlaybackRecording = \n                odataObject.PlaybackRecording;\n              \n            this.ShouldUseDefaultCommisionSalesGroup = \n                odataObject.ShouldUseDefaultCommisionSalesGroup;\n              \n            this.AskForSalesRepresentative = \n                odataObject.AskForSalesRepresentative;\n              \n            this.IsSalesRepRequired = \n                odataObject.IsSalesRepRequired;\n              \n            this.ProhibitMixingSalesAndReturns = \n                odataObject.ProhibitMixingSalesAndReturns;\n              \n            this.ApplyDiscountsToPriceKeyedIn = \n                odataObject.ApplyDiscountsToPriceKeyedIn;\n              \n            this.ApplyDiscountsToPriceOverrides = \n                odataObject.ApplyDiscountsToPriceOverrides;\n              \n            this.IsProductSuggestionsEnabled = \n                odataObject.IsProductSuggestionsEnabled;\n              \n            this.ProductSearchType = \n                odataObject.ProductSearchType;\n              \n            this.TerminalRecId = \n                (odataObject.TerminalRecId != null) ? parseInt(odataObject.TerminalRecId, 10) : undefined;\n              \n            this.DeviceRecId = \n                (odataObject.DeviceRecId != null) ? parseInt(odataObject.DeviceRecId, 10) : undefined;\n              \n            this.DenominationsToDisplayValue = \n                odataObject.DenominationsToDisplayValue;\n              \n            this.PromptOnSeamlessOffline = \n                odataObject.PromptOnSeamlessOffline;\n              \n            this.RetryCountToOffline = \n                odataObject.RetryCountToOffline;\n              \n            this.EnableAdvancedOfflineSwitching = \n                odataObject.EnableAdvancedOfflineSwitching;\n              \n            this.SystemHealthCheckInterval = \n                odataObject.SystemHealthCheckInterval;\n              \n            this.RejectOrderFulfillment = \n                odataObject.RejectOrderFulfillment;\n              \n            this.ManuallyCalculateTaxes = \n                odataObject.ManuallyCalculateTaxes;\n              \n            this.EmployeeLogonTypeValue = \n                odataObject.EmployeeLogonTypeValue;\n              \n            this.StartAmountCalculation = \n                odataObject.StartAmountCalculation;\n              \n            this.BankDropCalculation = \n                odataObject.BankDropCalculation;\n              \n            this.GenerateLoyaltyCardNumber = \n                odataObject.GenerateLoyaltyCardNumber;\n              \n            this.FiscalRegistrationProcessId = \n                odataObject.FiscalRegistrationProcessId;\n              \n            this.IncludeSalesOrderInvoices = \n                odataObject.IncludeSalesOrderInvoices;\n              \n            this.IncludeFreeTextInvoices = \n                odataObject.IncludeFreeTextInvoices;\n              \n            this.IncludeProjectInvoices = \n                odataObject.IncludeProjectInvoices;\n              \n            this.IncludeCreditNoteInvoices = \n                odataObject.IncludeCreditNoteInvoices;\n              \n            this.DisplayTaxExemptInLineDetails = \n                odataObject.DisplayTaxExemptInLineDetails;\n              \n            this.TaxExemptReceiptIndicator = \n                odataObject.TaxExemptReceiptIndicator;\n              \n            this.ManuallyCalculateCharges = \n                odataObject.ManuallyCalculateCharges;\n              \n            this.ChargeOverrideReasonCode = \n                odataObject.ChargeOverrideReasonCode;\n              \n            this.ShiftReconcilation = \n                odataObject.ShiftReconcilation;\n              \n            this.CustomerAccountFloorLimit = \n                (odataObject.CustomerAccountFloorLimit != null) ? parseFloat(odataObject.CustomerAccountFloorLimit) : undefined;\n              \n            this.VoidSuspendedTransactionsOnCloseShift = \n                odataObject.VoidSuspendedTransactionsOnCloseShift;\n              \n            this.ShowDateTime = \n                odataObject.ShowDateTime;\n              \n            this.UseAdvancedCashManagement = \n                odataObject.UseAdvancedCashManagement;\n              \n            this.DefaultCustomerSearchModeValue = \n                odataObject.DefaultCustomerSearchModeValue;\n              \n            this.AllowManualOfflineBeforeSignIn = \n                odataObject.AllowManualOfflineBeforeSignIn;\n              \n            this.UseFinancialReconciliationInStore = \n                odataObject.UseFinancialReconciliationInStore;\n              \n            this.RequirePaymentForFulfillmentValue = \n                odataObject.RequirePaymentForFulfillmentValue;\n              \n            this.CardNotPresentProcessingConfigurationValue = \n                odataObject.CardNotPresentProcessingConfigurationValue;\n              \n            this.EnableQuickPayShortcuts = \n                odataObject.EnableQuickPayShortcuts;\n              \n            this.ChangeDueBehaviorValue = \n                odataObject.ChangeDueBehaviorValue;\n              \n            this.AutoSynchronizeDeviceNumberSequences = \n                odataObject.AutoSynchronizeDeviceNumberSequences;\n              \n            this.SelfCheckout = \n                odataObject.SelfCheckout;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['DeviceConfigurationClass'] = DeviceConfigurationClass;\n    \n      /**\n      * VisualProfile entity class.\n      */\n      export class VisualProfileClass implements Entities.VisualProfile {\n      public ChannelId: number;\n      public TerminalId: string;\n      public AccentColor: number;\n      public HeaderColor: number;\n      public Theme: string;\n      public FontSchemeTypeValue: number;\n      public IsAppBarLabelVisible: boolean;\n      public IsDateTimeVisible: boolean;\n      public LogOnLayoutTypeValue: number;\n      public LogOnKeyboardTypeValue: number;\n      public LogonBackgroundPictureId: number;\n      public CompactLogonBackgroundPictureId: number;\n      public PortraitLogonBackgroundPictureId: number;\n      public CompactPortraitLogonBackgroundPictureId: number;\n      public BackgroundPictureId: number;\n      public LogOnLogoPictureId: number;\n      public IsProductIdVisibleOnCartLine: boolean;\n      public DefaultSearchResultDisplayViewTypeValue: number;\n      public BypassItemAddedDialog: boolean;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.ChannelId = \n                (odataObject.ChannelId != null) ? parseInt(odataObject.ChannelId, 10) : undefined;\n              \n            this.TerminalId = \n                odataObject.TerminalId;\n              \n            this.AccentColor = \n                odataObject.AccentColor;\n              \n            this.HeaderColor = \n                odataObject.HeaderColor;\n              \n            this.Theme = \n                odataObject.Theme;\n              \n            this.FontSchemeTypeValue = \n                odataObject.FontSchemeTypeValue;\n              \n            this.IsAppBarLabelVisible = \n                odataObject.IsAppBarLabelVisible;\n              \n            this.IsDateTimeVisible = \n                odataObject.IsDateTimeVisible;\n              \n            this.LogOnLayoutTypeValue = \n                odataObject.LogOnLayoutTypeValue;\n              \n            this.LogOnKeyboardTypeValue = \n                odataObject.LogOnKeyboardTypeValue;\n              \n            this.LogonBackgroundPictureId = \n                (odataObject.LogonBackgroundPictureId != null) ? parseInt(odataObject.LogonBackgroundPictureId, 10) : undefined;\n              \n            this.CompactLogonBackgroundPictureId = \n                (odataObject.CompactLogonBackgroundPictureId != null) ? parseInt(odataObject.CompactLogonBackgroundPictureId, 10) : undefined;\n              \n            this.PortraitLogonBackgroundPictureId = \n                (odataObject.PortraitLogonBackgroundPictureId != null) ? parseInt(odataObject.PortraitLogonBackgroundPictureId, 10) : undefined;\n              \n            this.CompactPortraitLogonBackgroundPictureId = \n                (odataObject.CompactPortraitLogonBackgroundPictureId != null) ? parseInt(odataObject.CompactPortraitLogonBackgroundPictureId, 10) : undefined;\n              \n            this.BackgroundPictureId = \n                (odataObject.BackgroundPictureId != null) ? parseInt(odataObject.BackgroundPictureId, 10) : undefined;\n              \n            this.LogOnLogoPictureId = \n                (odataObject.LogOnLogoPictureId != null) ? parseInt(odataObject.LogOnLogoPictureId, 10) : undefined;\n              \n            this.IsProductIdVisibleOnCartLine = \n                odataObject.IsProductIdVisibleOnCartLine;\n              \n            this.DefaultSearchResultDisplayViewTypeValue = \n                odataObject.DefaultSearchResultDisplayViewTypeValue;\n              \n            this.BypassItemAddedDialog = \n                odataObject.BypassItemAddedDialog;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['VisualProfileClass'] = VisualProfileClass;\n    \n      /**\n      * OperationalInsightsConfiguration entity class.\n      */\n      export class OperationalInsightsConfigurationClass implements Entities.OperationalInsightsConfiguration {\n      public InstrumentationKey: string;\n      public EnvironmentId: string;\n      public IsEnabled: boolean;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.InstrumentationKey = \n                odataObject.InstrumentationKey;\n              \n            this.EnvironmentId = \n                odataObject.EnvironmentId;\n              \n            this.IsEnabled = \n                odataObject.IsEnabled;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['OperationalInsightsConfigurationClass'] = OperationalInsightsConfigurationClass;\n    \n      /**\n      * PaymentConfiguration entity class.\n      */\n      export class PaymentConfigurationClass implements Entities.PaymentConfiguration {\n      public AlwaysStoreCardTokenOnOrderBalanceAuthorization: boolean;\n      public MinOrderProcessingDaysForStoringCardToken: number;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.AlwaysStoreCardTokenOnOrderBalanceAuthorization = \n                odataObject.AlwaysStoreCardTokenOnOrderBalanceAuthorization;\n              \n            this.MinOrderProcessingDaysForStoringCardToken = \n                odataObject.MinOrderProcessingDaysForStoringCardToken;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['PaymentConfigurationClass'] = PaymentConfigurationClass;\n    \n      /**\n      * Device entity class.\n      */\n      export class DeviceClass implements Entities.Device {\n      public ChannelId: number;\n      public RecordId: number;\n      public DeviceNumber: string;\n      public DeviceId: string;\n      public Description: string;\n      public DeviceType: number;\n      public TerminalRecordId: number;\n      public TerminalId: string;\n      public ChannelName: string;\n      public UseInMemoryDeviceDataStorage: boolean;\n      public AllowMassActivation: boolean;\n      public TokenIssueTime: Date;\n      public ActivationStatusValue: number;\n      public Token: string;\n      public CountryRegionIsoCode: string;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.ChannelId = \n                (odataObject.ChannelId != null) ? parseInt(odataObject.ChannelId, 10) : undefined;\n              \n            this.RecordId = \n                (odataObject.RecordId != null) ? parseInt(odataObject.RecordId, 10) : undefined;\n              \n            this.DeviceNumber = \n                odataObject.DeviceNumber;\n              \n            this.DeviceId = \n                odataObject.DeviceId;\n              \n            this.Description = \n                odataObject.Description;\n              \n            this.DeviceType = \n                odataObject.DeviceType;\n              \n            this.TerminalRecordId = \n                (odataObject.TerminalRecordId != null) ? parseInt(odataObject.TerminalRecordId, 10) : undefined;\n              \n            this.TerminalId = \n                odataObject.TerminalId;\n              \n            this.ChannelName = \n                odataObject.ChannelName;\n              \n            this.UseInMemoryDeviceDataStorage = \n                odataObject.UseInMemoryDeviceDataStorage;\n              \n            this.AllowMassActivation = \n                odataObject.AllowMassActivation;\n              \n            this.TokenIssueTime = \n                (odataObject.TokenIssueTime instanceof Date) ? odataObject.TokenIssueTime\n                : (odataObject.TokenIssueTime != null) ? jsonLightReadStringPropertyValue(odataObject.TokenIssueTime, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.ActivationStatusValue = \n                odataObject.ActivationStatusValue;\n              \n            this.Token = \n                odataObject.Token;\n              \n            this.CountryRegionIsoCode = \n                odataObject.CountryRegionIsoCode;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['DeviceClass'] = DeviceClass;\n    \n      /**\n      * DiscountCode entity class.\n      */\n      export class DiscountCodeClass implements Entities.DiscountCode {\n      public RecordId: number;\n      public Barcode: string;\n      public Code: string;\n      public ConcurrencyMode: number;\n      public Description: string;\n      public Disclaimer: string;\n      public IsDiscountCodeRequired: boolean;\n      public Name: string;\n      public OfferId: string;\n      public IsEnabled: boolean;\n      public ValidFrom: Date;\n      public ValidTo: Date;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.RecordId = \n                (odataObject.RecordId != null) ? parseInt(odataObject.RecordId, 10) : undefined;\n              \n            this.Barcode = \n                odataObject.Barcode;\n              \n            this.Code = \n                odataObject.Code;\n              \n            this.ConcurrencyMode = \n                odataObject.ConcurrencyMode;\n              \n            this.Description = \n                odataObject.Description;\n              \n            this.Disclaimer = \n                odataObject.Disclaimer;\n              \n            this.IsDiscountCodeRequired = \n                odataObject.IsDiscountCodeRequired;\n              \n            this.Name = \n                odataObject.Name;\n              \n            this.OfferId = \n                odataObject.OfferId;\n              \n            this.IsEnabled = \n                odataObject.IsEnabled;\n              \n            this.ValidFrom = \n                (odataObject.ValidFrom instanceof Date) ? odataObject.ValidFrom\n                : (odataObject.ValidFrom != null) ? jsonLightReadStringPropertyValue(odataObject.ValidFrom, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.ValidTo = \n                (odataObject.ValidTo instanceof Date) ? odataObject.ValidTo\n                : (odataObject.ValidTo != null) ? jsonLightReadStringPropertyValue(odataObject.ValidTo, \"Edm.DateTimeOffset\", false) : undefined;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['DiscountCodeClass'] = DiscountCodeClass;\n    \n      /**\n      * DistrictInfo entity class.\n      */\n      export class DistrictInfoClass implements Entities.DistrictInfo {\n      public Name: string;\n      public Description: string;\n      public CountryRegionId: string;\n      public StateId: string;\n      public CountyId: string;\n      public CityName: string;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.Name = \n                odataObject.Name;\n              \n            this.Description = \n                odataObject.Description;\n              \n            this.CountryRegionId = \n                odataObject.CountryRegionId;\n              \n            this.StateId = \n                odataObject.StateId;\n              \n            this.CountyId = \n                odataObject.CountyId;\n              \n            this.CityName = \n                odataObject.CityName;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['DistrictInfoClass'] = DistrictInfoClass;\n    \n      /**\n      * HardwareProfile entity class.\n      */\n      export class HardwareProfileClass implements Entities.HardwareProfile {\n      public RecordId: number;\n      public LineDisplayDelayForLinkedItems: number;\n      public LineDisplayBalanceText: string;\n      public LineDisplayBinaryConversion: boolean;\n      public LineDisplayCharacterSet: number;\n      public LineDisplayClosedLine1: string;\n      public LineDisplayClosedLine2: string;\n      public LineDisplayDeviceDescription: string;\n      public LineDisplayDeviceTypeValue: number;\n      public LineDisplayDeviceName: string;\n      public LineDisplayDisplayLinkedItem: boolean;\n      public LineDisplayDisplayTerminalClosed: boolean;\n      public LineDisplayTotalText: string;\n      public LineDisplayKeepConnectionOpen: boolean;\n      public DualDisplayActive: boolean;\n      public DualDisplayWebBrowserUrl: string;\n      public DualDisplayImageRotatorInterval: number;\n      public DualDisplayImageRotatorPath: string;\n      public DualDisplayReceiptWidthPercentage: number;\n      public DualDisplayDisplayType: string;\n      public EftTypeId: number;\n      public EftCompanyId: string;\n      public EftConfiguration: number;\n      public EftPaymentConnectorName: string;\n      public EftData: string;\n      public EftDescription: string;\n      public EftMerchantId: string;\n      public EftPassword: string;\n      public EftServerName: string;\n      public EftServerPort: string;\n      public EftUserId: string;\n      public EftTestMode: boolean;\n      public MsrEndTrack1: string;\n      public MsrEndTrack2: string;\n      public FiscalPrinterManagementReportPAFIdentification: string;\n      public FiscalPrinterManagementReportConfigParameter: string;\n      public FiscalPrinterManagementReportTenderType: string;\n      public FiscalPrinterManagementReportGiftCard: string;\n      public FiscalRegisterDeviceTypeValue: number;\n      public FiscalRegisterConfiguration: string;\n      public FiscalRegisterDeviceDescription: string;\n      public FiscalRegisterDeviceName: string;\n      public KeyboardMappingId: string;\n      public KeyLockDeviceTypeValue: number;\n      public KeyLockDeviceDescription: string;\n      public KeyLockDeviceName: string;\n      public MsrDeviceTypeValue: number;\n      public MsrDeviceDescription: string;\n      public MsrDeviceName: string;\n      public MsrMake: string;\n      public MsrModel: string;\n      public MsrSeparator: string;\n      public MsrStartTrack: string;\n      public PinPadDeviceTypeValue: number;\n      public PinPadDeviceName: string;\n      public PinPadMake: string;\n      public PinPadModel: string;\n      public PinPadDeviceDescription: string;\n      public ProfileDescription: string;\n      public ProfileId: string;\n      public RFIDDeviceTypeValue: number;\n      public RFIDDeviceName: string;\n      public RFIDDeviceDescription: string;\n      public ScaleDeviceTypeValue: number;\n      public ScaleDeviceName: string;\n      public ScaleDeviceDescription: string;\n      public ScaleManualInputAllowed: boolean;\n      public ScaleTimeoutInSeconds: number;\n      public SignatureCaptureDeviceTypeValue: number;\n      public SignatureCaptureDeviceName: string;\n      public SignatureCaptureMake: string;\n      public SignatureCaptureModel: string;\n      public SignatureCaptureDeviceDescription: string;\n      public SignatureCaptureFormName: string;\n      public PinPadAllowNfcPayment: boolean;\n      public Printers: Entities.HardwareProfilePrinter[];\n      public Scanners: Entities.HardwareProfileScanner[];\n      public FiscalIntegrationTechnicalProfiles: Entities.FiscalIntegrationTechnicalProfile[];\n      public CashDrawers: Entities.HardwareProfileCashDrawer[];\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.RecordId = \n                (odataObject.RecordId != null) ? parseInt(odataObject.RecordId, 10) : undefined;\n              \n            this.LineDisplayDelayForLinkedItems = \n                odataObject.LineDisplayDelayForLinkedItems;\n              \n            this.LineDisplayBalanceText = \n                odataObject.LineDisplayBalanceText;\n              \n            this.LineDisplayBinaryConversion = \n                odataObject.LineDisplayBinaryConversion;\n              \n            this.LineDisplayCharacterSet = \n                odataObject.LineDisplayCharacterSet;\n              \n            this.LineDisplayClosedLine1 = \n                odataObject.LineDisplayClosedLine1;\n              \n            this.LineDisplayClosedLine2 = \n                odataObject.LineDisplayClosedLine2;\n              \n            this.LineDisplayDeviceDescription = \n                odataObject.LineDisplayDeviceDescription;\n              \n            this.LineDisplayDeviceTypeValue = \n                odataObject.LineDisplayDeviceTypeValue;\n              \n            this.LineDisplayDeviceName = \n                odataObject.LineDisplayDeviceName;\n              \n            this.LineDisplayDisplayLinkedItem = \n                odataObject.LineDisplayDisplayLinkedItem;\n              \n            this.LineDisplayDisplayTerminalClosed = \n                odataObject.LineDisplayDisplayTerminalClosed;\n              \n            this.LineDisplayTotalText = \n                odataObject.LineDisplayTotalText;\n              \n            this.LineDisplayKeepConnectionOpen = \n                odataObject.LineDisplayKeepConnectionOpen;\n              \n            this.DualDisplayActive = \n                odataObject.DualDisplayActive;\n              \n            this.DualDisplayWebBrowserUrl = \n                odataObject.DualDisplayWebBrowserUrl;\n              \n            this.DualDisplayImageRotatorInterval = \n                odataObject.DualDisplayImageRotatorInterval;\n              \n            this.DualDisplayImageRotatorPath = \n                odataObject.DualDisplayImageRotatorPath;\n              \n            this.DualDisplayReceiptWidthPercentage = \n                (odataObject.DualDisplayReceiptWidthPercentage != null) ? parseFloat(odataObject.DualDisplayReceiptWidthPercentage) : undefined;\n              \n            this.DualDisplayDisplayType = \n                odataObject.DualDisplayDisplayType;\n              \n            this.EftTypeId = \n                odataObject.EftTypeId;\n              \n            this.EftCompanyId = \n                odataObject.EftCompanyId;\n              \n            this.EftConfiguration = \n                odataObject.EftConfiguration;\n              \n            this.EftPaymentConnectorName = \n                odataObject.EftPaymentConnectorName;\n              \n            this.EftData = \n                odataObject.EftData;\n              \n            this.EftDescription = \n                odataObject.EftDescription;\n              \n            this.EftMerchantId = \n                odataObject.EftMerchantId;\n              \n            this.EftPassword = \n                odataObject.EftPassword;\n              \n            this.EftServerName = \n                odataObject.EftServerName;\n              \n            this.EftServerPort = \n                odataObject.EftServerPort;\n              \n            this.EftUserId = \n                odataObject.EftUserId;\n              \n            this.EftTestMode = \n                odataObject.EftTestMode;\n              \n            this.MsrEndTrack1 = \n                odataObject.MsrEndTrack1;\n              \n            this.MsrEndTrack2 = \n                odataObject.MsrEndTrack2;\n              \n            this.FiscalPrinterManagementReportPAFIdentification = \n                odataObject.FiscalPrinterManagementReportPAFIdentification;\n              \n            this.FiscalPrinterManagementReportConfigParameter = \n                odataObject.FiscalPrinterManagementReportConfigParameter;\n              \n            this.FiscalPrinterManagementReportTenderType = \n                odataObject.FiscalPrinterManagementReportTenderType;\n              \n            this.FiscalPrinterManagementReportGiftCard = \n                odataObject.FiscalPrinterManagementReportGiftCard;\n              \n            this.FiscalRegisterDeviceTypeValue = \n                odataObject.FiscalRegisterDeviceTypeValue;\n              \n            this.FiscalRegisterConfiguration = \n                odataObject.FiscalRegisterConfiguration;\n              \n            this.FiscalRegisterDeviceDescription = \n                odataObject.FiscalRegisterDeviceDescription;\n              \n            this.FiscalRegisterDeviceName = \n                odataObject.FiscalRegisterDeviceName;\n              \n            this.KeyboardMappingId = \n                odataObject.KeyboardMappingId;\n              \n            this.KeyLockDeviceTypeValue = \n                odataObject.KeyLockDeviceTypeValue;\n              \n            this.KeyLockDeviceDescription = \n                odataObject.KeyLockDeviceDescription;\n              \n            this.KeyLockDeviceName = \n                odataObject.KeyLockDeviceName;\n              \n            this.MsrDeviceTypeValue = \n                odataObject.MsrDeviceTypeValue;\n              \n            this.MsrDeviceDescription = \n                odataObject.MsrDeviceDescription;\n              \n            this.MsrDeviceName = \n                odataObject.MsrDeviceName;\n              \n            this.MsrMake = \n                odataObject.MsrMake;\n              \n            this.MsrModel = \n                odataObject.MsrModel;\n              \n            this.MsrSeparator = \n                odataObject.MsrSeparator;\n              \n            this.MsrStartTrack = \n                odataObject.MsrStartTrack;\n              \n            this.PinPadDeviceTypeValue = \n                odataObject.PinPadDeviceTypeValue;\n              \n            this.PinPadDeviceName = \n                odataObject.PinPadDeviceName;\n              \n            this.PinPadMake = \n                odataObject.PinPadMake;\n              \n            this.PinPadModel = \n                odataObject.PinPadModel;\n              \n            this.PinPadDeviceDescription = \n                odataObject.PinPadDeviceDescription;\n              \n            this.ProfileDescription = \n                odataObject.ProfileDescription;\n              \n            this.ProfileId = \n                odataObject.ProfileId;\n              \n            this.RFIDDeviceTypeValue = \n                odataObject.RFIDDeviceTypeValue;\n              \n            this.RFIDDeviceName = \n                odataObject.RFIDDeviceName;\n              \n            this.RFIDDeviceDescription = \n                odataObject.RFIDDeviceDescription;\n              \n            this.ScaleDeviceTypeValue = \n                odataObject.ScaleDeviceTypeValue;\n              \n            this.ScaleDeviceName = \n                odataObject.ScaleDeviceName;\n              \n            this.ScaleDeviceDescription = \n                odataObject.ScaleDeviceDescription;\n              \n            this.ScaleManualInputAllowed = \n                odataObject.ScaleManualInputAllowed;\n              \n            this.ScaleTimeoutInSeconds = \n                odataObject.ScaleTimeoutInSeconds;\n              \n            this.SignatureCaptureDeviceTypeValue = \n                odataObject.SignatureCaptureDeviceTypeValue;\n              \n            this.SignatureCaptureDeviceName = \n                odataObject.SignatureCaptureDeviceName;\n              \n            this.SignatureCaptureMake = \n                odataObject.SignatureCaptureMake;\n              \n            this.SignatureCaptureModel = \n                odataObject.SignatureCaptureModel;\n              \n            this.SignatureCaptureDeviceDescription = \n                odataObject.SignatureCaptureDeviceDescription;\n              \n            this.SignatureCaptureFormName = \n                odataObject.SignatureCaptureFormName;\n              \n            this.PinPadAllowNfcPayment = \n                odataObject.PinPadAllowNfcPayment;\n              \n        this.Printers = undefined;\n        if (odataObject.Printers) {\n        this.Printers = [];\n        for (var i = 0; i < odataObject.Printers.length; i++) {\n        if (odataObject.Printers[i] != null) {\n        if (odataObject.Printers[i]['@odata.type'] != null) {\n          var className: string = odataObject.Printers[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.Printers[i] = new entityDictionary[className](odataObject.Printers[i])\n          }\n        } else {\n            this.Printers[i] = new HardwareProfilePrinterClass(odataObject.Printers[i]);\n        }\n                    } else {\n        this.Printers[i] = undefined;\n        }\n        }\n        }\n      \n        this.Scanners = undefined;\n        if (odataObject.Scanners) {\n        this.Scanners = [];\n        for (var i = 0; i < odataObject.Scanners.length; i++) {\n        if (odataObject.Scanners[i] != null) {\n        if (odataObject.Scanners[i]['@odata.type'] != null) {\n          var className: string = odataObject.Scanners[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.Scanners[i] = new entityDictionary[className](odataObject.Scanners[i])\n          }\n        } else {\n            this.Scanners[i] = new HardwareProfileScannerClass(odataObject.Scanners[i]);\n        }\n                    } else {\n        this.Scanners[i] = undefined;\n        }\n        }\n        }\n      \n        this.FiscalIntegrationTechnicalProfiles = undefined;\n        if (odataObject.FiscalIntegrationTechnicalProfiles) {\n        this.FiscalIntegrationTechnicalProfiles = [];\n        for (var i = 0; i < odataObject.FiscalIntegrationTechnicalProfiles.length; i++) {\n        if (odataObject.FiscalIntegrationTechnicalProfiles[i] != null) {\n        if (odataObject.FiscalIntegrationTechnicalProfiles[i]['@odata.type'] != null) {\n          var className: string = odataObject.FiscalIntegrationTechnicalProfiles[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.FiscalIntegrationTechnicalProfiles[i] = new entityDictionary[className](odataObject.FiscalIntegrationTechnicalProfiles[i])\n          }\n        } else {\n            this.FiscalIntegrationTechnicalProfiles[i] = new FiscalIntegrationTechnicalProfileClass(odataObject.FiscalIntegrationTechnicalProfiles[i]);\n        }\n                    } else {\n        this.FiscalIntegrationTechnicalProfiles[i] = undefined;\n        }\n        }\n        }\n      \n        this.CashDrawers = undefined;\n        if (odataObject.CashDrawers) {\n        this.CashDrawers = [];\n        for (var i = 0; i < odataObject.CashDrawers.length; i++) {\n        if (odataObject.CashDrawers[i] != null) {\n        if (odataObject.CashDrawers[i]['@odata.type'] != null) {\n          var className: string = odataObject.CashDrawers[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.CashDrawers[i] = new entityDictionary[className](odataObject.CashDrawers[i])\n          }\n        } else {\n            this.CashDrawers[i] = new HardwareProfileCashDrawerClass(odataObject.CashDrawers[i]);\n        }\n                    } else {\n        this.CashDrawers[i] = undefined;\n        }\n        }\n        }\n      \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['HardwareProfileClass'] = HardwareProfileClass;\n    \n      /**\n      * SupportedLanguage entity class.\n      */\n      export class SupportedLanguageClass implements Entities.SupportedLanguage {\n      public LanguageId: string;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.LanguageId = \n                odataObject.LanguageId;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['SupportedLanguageClass'] = SupportedLanguageClass;\n    \n      /**\n      * PaymentCard entity class.\n      */\n      export class PaymentCardClass implements Entities.PaymentCard {\n      public UseShippingAddress: boolean;\n      public CardNumber: string;\n      public CCID: string;\n      public Track1: string;\n      public Track2: string;\n      public Track3: string;\n      public VoiceAuthorizationCode: string;\n      public EncryptedPin: string;\n      public AdditionalSecurityData: string;\n      public IsSwipe: boolean;\n      public Phone: string;\n      public Country: string;\n      public House: string;\n      public Address1: string;\n      public Address2: string;\n      public City: string;\n      public State: string;\n      public Zip: string;\n      public NameOnCard: string;\n      public CardTypeId: string;\n      public ExpirationMonth: number;\n      public ExpirationYear: number;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.UseShippingAddress = \n                odataObject.UseShippingAddress;\n              \n            this.CardNumber = \n                odataObject.CardNumber;\n              \n            this.CCID = \n                odataObject.CCID;\n              \n            this.Track1 = \n                odataObject.Track1;\n              \n            this.Track2 = \n                odataObject.Track2;\n              \n            this.Track3 = \n                odataObject.Track3;\n              \n            this.VoiceAuthorizationCode = \n                odataObject.VoiceAuthorizationCode;\n              \n            this.EncryptedPin = \n                odataObject.EncryptedPin;\n              \n            this.AdditionalSecurityData = \n                odataObject.AdditionalSecurityData;\n              \n            this.IsSwipe = \n                odataObject.IsSwipe;\n              \n            this.Phone = \n                odataObject.Phone;\n              \n            this.Country = \n                odataObject.Country;\n              \n            this.House = \n                odataObject.House;\n              \n            this.Address1 = \n                odataObject.Address1;\n              \n            this.Address2 = \n                odataObject.Address2;\n              \n            this.City = \n                odataObject.City;\n              \n            this.State = \n                odataObject.State;\n              \n            this.Zip = \n                odataObject.Zip;\n              \n            this.NameOnCard = \n                odataObject.NameOnCard;\n              \n            this.CardTypeId = \n                odataObject.CardTypeId;\n              \n            this.ExpirationMonth = \n                odataObject.ExpirationMonth;\n              \n            this.ExpirationYear = \n                odataObject.ExpirationYear;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['PaymentCardClass'] = PaymentCardClass;\n    \n      /**\n      * CardPaymentAcceptSettings entity class.\n      */\n      export class CardPaymentAcceptSettingsClass implements Entities.CardPaymentAcceptSettings {\n      public HostPageOrigin: string;\n      public AdaptorPath: string;\n      public CardTokenizationEnabled: boolean;\n      public CardPaymentEnabled: boolean;\n      public PaymentAmount: number;\n      public HideBillingAddress: boolean;\n      public TenderTypeId: string;\n      public Locale: string;\n      public RequireShippingAddress: boolean;\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.HostPageOrigin = \n                odataObject.HostPageOrigin;\n              \n            this.AdaptorPath = \n                odataObject.AdaptorPath;\n              \n            this.CardTokenizationEnabled = \n                odataObject.CardTokenizationEnabled;\n              \n            this.CardPaymentEnabled = \n                odataObject.CardPaymentEnabled;\n              \n            this.PaymentAmount = \n                (odataObject.PaymentAmount != null) ? parseFloat(odataObject.PaymentAmount) : undefined;\n              \n            this.HideBillingAddress = \n                odataObject.HideBillingAddress;\n              \n            this.TenderTypeId = \n                odataObject.TenderTypeId;\n              \n            this.Locale = \n                odataObject.Locale;\n              \n            this.RequireShippingAddress = \n                odataObject.RequireShippingAddress;\n              \n      }\n      }\n      entityDictionary['CardPaymentAcceptSettingsClass'] = CardPaymentAcceptSettingsClass;\n    \n      /**\n      * CardPaymentAcceptPoint entity class.\n      */\n      export class CardPaymentAcceptPointClass implements Entities.CardPaymentAcceptPoint {\n      public AcceptPageUrl: string;\n      public AcceptPageSubmitUrl: string;\n      public MessageOrigin: string;\n      public AcceptPageContent: string;\n      public PaymentConnectorId: string;\n      public NotReloadAcceptPageContentWhenAmountChanged: boolean;\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.AcceptPageUrl = \n                odataObject.AcceptPageUrl;\n              \n            this.AcceptPageSubmitUrl = \n                odataObject.AcceptPageSubmitUrl;\n              \n            this.MessageOrigin = \n                odataObject.MessageOrigin;\n              \n            this.AcceptPageContent = \n                odataObject.AcceptPageContent;\n              \n            this.PaymentConnectorId = \n                odataObject.PaymentConnectorId;\n              \n            this.NotReloadAcceptPageContentWhenAmountChanged = \n                odataObject.NotReloadAcceptPageContentWhenAmountChanged;\n              \n      }\n      }\n      entityDictionary['CardPaymentAcceptPointClass'] = CardPaymentAcceptPointClass;\n    \n      /**\n      * CardPaymentAcceptResult entity class.\n      */\n      export class CardPaymentAcceptResultClass implements Entities.CardPaymentAcceptResult {\n      public TenderLine: Entities.TenderLine;\n      public TokenizedPaymentCard: Entities.TokenizedPaymentCard;\n      public PaymentSdkErrors: Entities.PaymentError[];\n      public AdditionalContext: string;\n      public AccessCode: string;\n      public Settings: Entities.RetrievePaymentResultSettings;\n      public Email: string;\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n        if (odataObject.TenderLine == null) {\n            this.TenderLine = undefined;\n        } else if (odataObject.TenderLine['@odata.type'] == null) {\n            this.TenderLine = new TenderLineClass(odataObject.TenderLine);\n        } else {\n            var className: string = odataObject.TenderLine['@odata.type'];\n            className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n            if (entityDictionary[className]) {\n                this.TenderLine = new entityDictionary[className](odataObject.TenderLine)\n            }\n        }\n\n      \n        if (odataObject.TokenizedPaymentCard == null) {\n            this.TokenizedPaymentCard = undefined;\n        } else if (odataObject.TokenizedPaymentCard['@odata.type'] == null) {\n            this.TokenizedPaymentCard = new TokenizedPaymentCardClass(odataObject.TokenizedPaymentCard);\n        } else {\n            var className: string = odataObject.TokenizedPaymentCard['@odata.type'];\n            className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n            if (entityDictionary[className]) {\n                this.TokenizedPaymentCard = new entityDictionary[className](odataObject.TokenizedPaymentCard)\n            }\n        }\n\n      \n        this.PaymentSdkErrors = undefined;\n        if (odataObject.PaymentSdkErrors) {\n        this.PaymentSdkErrors = [];\n        for (var i = 0; i < odataObject.PaymentSdkErrors.length; i++) {\n        if (odataObject.PaymentSdkErrors[i] != null) {\n        if (odataObject.PaymentSdkErrors[i]['@odata.type'] != null) {\n          var className: string = odataObject.PaymentSdkErrors[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.PaymentSdkErrors[i] = new entityDictionary[className](odataObject.PaymentSdkErrors[i])\n          }\n        } else {\n            this.PaymentSdkErrors[i] = new PaymentErrorClass(odataObject.PaymentSdkErrors[i]);\n        }\n                    } else {\n        this.PaymentSdkErrors[i] = undefined;\n        }\n        }\n        }\n      \n            this.AdditionalContext = \n                odataObject.AdditionalContext;\n              \n            this.AccessCode = \n                odataObject.AccessCode;\n              \n        if (odataObject.Settings == null) {\n            this.Settings = undefined;\n        } else if (odataObject.Settings['@odata.type'] == null) {\n            this.Settings = new RetrievePaymentResultSettingsClass(odataObject.Settings);\n        } else {\n            var className: string = odataObject.Settings['@odata.type'];\n            className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n            if (entityDictionary[className]) {\n                this.Settings = new entityDictionary[className](odataObject.Settings)\n            }\n        }\n\n      \n            this.Email = \n                odataObject.Email;\n              \n      }\n      }\n      entityDictionary['CardPaymentAcceptResultClass'] = CardPaymentAcceptResultClass;\n    \n      /**\n      * ReasonCodeLine entity class.\n      */\n      export class ReasonCodeLineClass implements Entities.ReasonCodeLine {\n      public LineId: string;\n      public Amount: number;\n      public Information: string;\n      public InformationAmount: number;\n      public InputTypeValue: number;\n      public ItemTender: string;\n      public LineNumber: number;\n      public LineTypeValue: number;\n      public ParentLineId: string;\n      public ReasonCodeId: string;\n      public StatementCode: string;\n      public SubReasonCodeId: string;\n      public SourceCode: string;\n      public SourceCode2: string;\n      public SourceCode3: string;\n      public TransactionId: string;\n      public CreatedDateTime: Date;\n      public FiscalTransactionParentGuid: string;\n      public IsChanged: boolean;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.LineId = \n                odataObject.LineId;\n              \n            this.Amount = \n                (odataObject.Amount != null) ? parseFloat(odataObject.Amount) : undefined;\n              \n            this.Information = \n                odataObject.Information;\n              \n            this.InformationAmount = \n                (odataObject.InformationAmount != null) ? parseFloat(odataObject.InformationAmount) : undefined;\n              \n            this.InputTypeValue = \n                odataObject.InputTypeValue;\n              \n            this.ItemTender = \n                odataObject.ItemTender;\n              \n            this.LineNumber = \n                (odataObject.LineNumber != null) ? parseFloat(odataObject.LineNumber) : undefined;\n              \n            this.LineTypeValue = \n                odataObject.LineTypeValue;\n              \n            this.ParentLineId = \n                odataObject.ParentLineId;\n              \n            this.ReasonCodeId = \n                odataObject.ReasonCodeId;\n              \n            this.StatementCode = \n                odataObject.StatementCode;\n              \n            this.SubReasonCodeId = \n                odataObject.SubReasonCodeId;\n              \n            this.SourceCode = \n                odataObject.SourceCode;\n              \n            this.SourceCode2 = \n                odataObject.SourceCode2;\n              \n            this.SourceCode3 = \n                odataObject.SourceCode3;\n              \n            this.TransactionId = \n                odataObject.TransactionId;\n              \n            this.CreatedDateTime = \n                (odataObject.CreatedDateTime instanceof Date) ? odataObject.CreatedDateTime\n                : (odataObject.CreatedDateTime != null) ? jsonLightReadStringPropertyValue(odataObject.CreatedDateTime, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.FiscalTransactionParentGuid = \n                odataObject.FiscalTransactionParentGuid;\n              \n            this.IsChanged = \n                odataObject.IsChanged;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['ReasonCodeLineClass'] = ReasonCodeLineClass;\n    \n      /**\n      * ReasonSubCode entity class.\n      */\n      export class ReasonSubCodeClass implements Entities.ReasonSubCode {\n      public TriggerCode: string;\n      public AmountPercent: number;\n      public ReasonCodeId: string;\n      public SubCodeId: string;\n      public Description: string;\n      public TriggerFunctionTypeValue: number;\n      public ProductId: number;\n      public PriceTypeValue: number;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.TriggerCode = \n                odataObject.TriggerCode;\n              \n            this.AmountPercent = \n                (odataObject.AmountPercent != null) ? parseFloat(odataObject.AmountPercent) : undefined;\n              \n            this.ReasonCodeId = \n                odataObject.ReasonCodeId;\n              \n            this.SubCodeId = \n                odataObject.SubCodeId;\n              \n            this.Description = \n                odataObject.Description;\n              \n            this.TriggerFunctionTypeValue = \n                odataObject.TriggerFunctionTypeValue;\n              \n            this.ProductId = \n                (odataObject.ProductId != null) ? parseInt(odataObject.ProductId, 10) : undefined;\n              \n            this.PriceTypeValue = \n                odataObject.PriceTypeValue;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['ReasonSubCodeClass'] = ReasonSubCodeClass;\n    \n      /**\n      * Receipt entity class.\n      */\n      export class ReceiptClass implements Entities.Receipt {\n      public TransactionId: string;\n      public Header: string;\n      public Body: string;\n      public Footer: string;\n      public Width: number;\n      public ReceiptId: string;\n      public LayoutId: string;\n      public ReceiptTitle: string;\n      public ReceiptTypeValue: number;\n      public ReceiptTypeStrValue: string;\n      public Printers: Entities.Printer[];\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.TransactionId = \n                odataObject.TransactionId;\n              \n            this.Header = \n                odataObject.Header;\n              \n            this.Body = \n                odataObject.Body;\n              \n            this.Footer = \n                odataObject.Footer;\n              \n            this.Width = \n                odataObject.Width;\n              \n            this.ReceiptId = \n                odataObject.ReceiptId;\n              \n            this.LayoutId = \n                odataObject.LayoutId;\n              \n            this.ReceiptTitle = \n                odataObject.ReceiptTitle;\n              \n            this.ReceiptTypeValue = \n                odataObject.ReceiptTypeValue;\n              \n            this.ReceiptTypeStrValue = \n                odataObject.ReceiptTypeStrValue;\n              \n        this.Printers = undefined;\n        if (odataObject.Printers) {\n        this.Printers = [];\n        for (var i = 0; i < odataObject.Printers.length; i++) {\n        if (odataObject.Printers[i] != null) {\n        if (odataObject.Printers[i]['@odata.type'] != null) {\n          var className: string = odataObject.Printers[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.Printers[i] = new entityDictionary[className](odataObject.Printers[i])\n          }\n        } else {\n            this.Printers[i] = new PrinterClass(odataObject.Printers[i]);\n        }\n                    } else {\n        this.Printers[i] = undefined;\n        }\n        }\n        }\n      \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['ReceiptClass'] = ReceiptClass;\n    \n      /**\n      * ReceiptMask entity class.\n      */\n      export class ReceiptMaskClass implements Entities.ReceiptMask {\n      public FunctionalityProfileId: string;\n      public IsIndependent: boolean;\n      public ReceiptTransactionTypeValue: number;\n      public RecordId: number;\n      public Mask: string;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.FunctionalityProfileId = \n                odataObject.FunctionalityProfileId;\n              \n            this.IsIndependent = \n                odataObject.IsIndependent;\n              \n            this.ReceiptTransactionTypeValue = \n                odataObject.ReceiptTransactionTypeValue;\n              \n            this.RecordId = \n                (odataObject.RecordId != null) ? parseInt(odataObject.RecordId, 10) : undefined;\n              \n            this.Mask = \n                odataObject.Mask;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['ReceiptMaskClass'] = ReceiptMaskClass;\n    \n      /**\n      * SalesLine entity class.\n      */\n      export class SalesLineClass implements Entities.SalesLine {\n      public StaffId: string;\n      public LineId: string;\n      public Description: string;\n      public OriginLineId: string;\n      public TaxOverrideCode: string;\n      public IsPriceKeyedIn: boolean;\n      public IsTaxOverideCodeTaxExempt: boolean;\n      public ProductId: number;\n      public Barcode: string;\n      public BarcodeEmbeddedPrice: number;\n      public PriceInBarcode: boolean;\n      public EntryMethodTypeValue: number;\n      public MasterProductId: number;\n      public ListingId: number;\n      public IsPriceOverridden: boolean;\n      public OriginalPrice: number;\n      public TotalAmount: number;\n      public NetAmountWithoutTax: number;\n      public DiscountAmount: number;\n      public DiscountAmountWithoutTax: number;\n      public NetPrice: number;\n      public TotalDiscount: number;\n      public TotalPercentageDiscount: number;\n      public LineDiscount: number;\n      public PeriodicDiscount: number;\n      public LineManualDiscountPercentage: number;\n      public LineManualDiscountAmount: number;\n      public ShippingAddress: Entities.Address;\n      public DeliveryMode: string;\n      public Comment: string;\n      public RequestedDeliveryDate: Date;\n      public ConfirmedShipDate: Date;\n      public PickupTimeslotStartDateTime: Date;\n      public PickupTimeslotEndDateTime: Date;\n      public InventoryLocationId: string;\n      public InventorySiteId: string;\n      public WarehouseLocation: string;\n      public InventoryStatusId: string;\n      public LicensePlate: string;\n      public InventoryDimensionId: string;\n      public InventoryTransactionId: string;\n      public ItemType: number;\n      public ReservationId: string;\n      public LineNumber: number;\n      public ReturnQuantity: number;\n      public QuantityRemained: number;\n      public QuantityShipped: number;\n      public LineVersion: number;\n      public StatusValue: number;\n      public SalesStatusValue: number;\n      public ProductSourceValue: number;\n      public IsGiftCardLine: boolean;\n      public GiftCardId: string;\n      public GiftCardCurrencyCode: string;\n      public GiftCardOperationValue: number;\n      public GiftCardTypeValue: number;\n      public IsInvoiceLine: boolean;\n      public InvoiceId: string;\n      public InvoiceAmount: number;\n      public IsInvoiceSettled: boolean;\n      public InvoiceTypeValue: number;\n      public InvoicedSalesId: string;\n      public IsVoided: boolean;\n      public IsPriceLocked: boolean;\n      public ChargeLines: Entities.ChargeLine[];\n      public BasePrice: number;\n      public AgreementPrice: number;\n      public AdjustedPrice: number;\n      public IsWarrantyLine: boolean;\n      public WarrantableTransactionId: string;\n      public WarrantableSalesId: string;\n      public WarrantableLineNumber: number;\n      public WarrantableSerialNumber: string;\n      public ReturnTransactionId: string;\n      public ReturnLineNumber: number;\n      public ReturnInventTransId: string;\n      public ReturnStore: string;\n      public ReturnTerminalId: string;\n      public ReturnChannelId: number;\n      public FulfillmentStoreId: string;\n      public SalesDate: Date;\n      public QuantityInvoiced: number;\n      public QuantityOrdered: number;\n      public QuantityCanceled: number;\n      public SavedQuantity: number;\n      public IsSavedDiscount: boolean;\n      public RecordId: number;\n      public SerialNumber: string;\n      public BatchId: string;\n      public DeliveryModeChargeAmount: number;\n      public UnitOfMeasureSymbol: string;\n      public CatalogId: number;\n      public ElectronicDeliveryEmailAddress: string;\n      public ElectronicDeliveryEmailContent: string;\n      public LoyaltyDiscountAmount: number;\n      public LoyaltyPercentageDiscount: number;\n      public TenderDiscountAmount: number;\n      public TenderDiscountPercentage: number;\n      public GiftCardBalance: number;\n      public IsCustomerAccountDeposit: boolean;\n      public Blocked: boolean;\n      public Found: boolean;\n      public DateToActivateItem: Date;\n      public LinePercentageDiscount: number;\n      public PeriodicPercentageDiscount: number;\n      public QuantityDiscounted: number;\n      public UnitQuantity: number;\n      public UnitOfMeasureConversion: Entities.UnitOfMeasureConversion;\n      public DiscountLines: Entities.DiscountLine[];\n      public PriceLines: Entities.PriceLine[];\n      public AttainablePriceLines: Entities.PriceLine[];\n      public PeriodicDiscountPossibilities: Entities.DiscountLine[];\n      public ReasonCodeLines: Entities.ReasonCodeLine[];\n      public ReturnLabelProperties: Entities.ReturnLabelContent;\n      public LineMultilineDiscOnItem: string;\n      public RelatedDiscountedLineIds: string[];\n      public LinkedParentLineId: string;\n      public LineMultilineDiscOnItemValue: number;\n      public WasChanged: boolean;\n      public OriginalSalesOrderUnitOfMeasure: string;\n      public InventOrderUnitOfMeasure: string;\n      public TrackingId: string;\n      public IsLoyaltyDiscountApplied: boolean;\n      public CommissionSalesGroup: string;\n      public IsCommissionSalesGroupOverriddenByCustomer: boolean;\n      public CommissionSalesGroupSetByCashier: string;\n      public QuantityNotProcessed: number;\n      public QuantityReserved: number;\n      public QuantityPicked: number;\n      public QuantityPacked: number;\n      public AttributeValues: Entities.AttributeValueBase[];\n      public ThirdPartyGiftCardInfo: Entities.ThirdPartyGiftCardInfo;\n      public QuantityReturnable: number;\n      public LoyaltyRewardPointLines: Entities.LoyaltyRewardPointLine[];\n      public ReturnLoyaltyRewardPointLines: Entities.LoyaltyRewardPointLine[];\n      public FulfillmentStatus: Entities.FulfillmentLineStatus;\n      public FulfillmentStatusValue: number;\n      public DetailedLineStatusValue: number;\n      public DetailedLineStatus: Entities.DetailedLineStatus;\n      public LastReturnProcessedTime: Date;\n      public SalesAgreementPrice: number;\n      public SalesAgreementLineRecordId: number;\n      public IsSalesAgreementSkipped: boolean;\n      public ItemId: string;\n      public Quantity: number;\n      public Price: number;\n      public ItemTaxGroupId: string;\n      public SalesTaxGroupId: string;\n      public OriginalSalesTaxGroupId: string;\n      public OriginalItemTaxGroupId: string;\n      public TaxAmount: number;\n      public SalesOrderUnitOfMeasure: string;\n      public NetAmount: number;\n      public NetAmountPerUnit: number;\n      public GrossAmount: number;\n      public TaxLines: Entities.TaxLine[];\n      public TaxMeasures: Entities.TaxMeasure[];\n      public TaxAmountExemptInclusive: number;\n      public TaxAmountInclusive: number;\n      public TaxAmountExclusive: number;\n      public NetAmountWithAllInclusiveTax: number;\n      public BeginDateTime: Date;\n      public EndDateTime: Date;\n      public TaxRatePercent: number;\n      public IsReturnByReceipt: boolean;\n      public ReturnLineTaxAmount: number;\n      public ReturnTaxLines: Entities.TaxLine[];\n      public TaxExemptPriceInclusiveReductionAmount: number;\n      public TaxExemptPriceInclusiveOriginalPrice: number;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.StaffId = \n                odataObject.StaffId;\n              \n            this.LineId = \n                odataObject.LineId;\n              \n            this.Description = \n                odataObject.Description;\n              \n            this.OriginLineId = \n                odataObject.OriginLineId;\n              \n            this.TaxOverrideCode = \n                odataObject.TaxOverrideCode;\n              \n            this.IsPriceKeyedIn = \n                odataObject.IsPriceKeyedIn;\n              \n            this.IsTaxOverideCodeTaxExempt = \n                odataObject.IsTaxOverideCodeTaxExempt;\n              \n            this.ProductId = \n                (odataObject.ProductId != null) ? parseInt(odataObject.ProductId, 10) : undefined;\n              \n            this.Barcode = \n                odataObject.Barcode;\n              \n            this.BarcodeEmbeddedPrice = \n                (odataObject.BarcodeEmbeddedPrice != null) ? parseFloat(odataObject.BarcodeEmbeddedPrice) : undefined;\n              \n            this.PriceInBarcode = \n                odataObject.PriceInBarcode;\n              \n            this.EntryMethodTypeValue = \n                odataObject.EntryMethodTypeValue;\n              \n            this.MasterProductId = \n                (odataObject.MasterProductId != null) ? parseInt(odataObject.MasterProductId, 10) : undefined;\n              \n            this.ListingId = \n                (odataObject.ListingId != null) ? parseInt(odataObject.ListingId, 10) : undefined;\n              \n            this.IsPriceOverridden = \n                odataObject.IsPriceOverridden;\n              \n            this.OriginalPrice = \n                (odataObject.OriginalPrice != null) ? parseFloat(odataObject.OriginalPrice) : undefined;\n              \n            this.TotalAmount = \n                (odataObject.TotalAmount != null) ? parseFloat(odataObject.TotalAmount) : undefined;\n              \n            this.NetAmountWithoutTax = \n                (odataObject.NetAmountWithoutTax != null) ? parseFloat(odataObject.NetAmountWithoutTax) : undefined;\n              \n            this.DiscountAmount = \n                (odataObject.DiscountAmount != null) ? parseFloat(odataObject.DiscountAmount) : undefined;\n              \n            this.DiscountAmountWithoutTax = \n                (odataObject.DiscountAmountWithoutTax != null) ? parseFloat(odataObject.DiscountAmountWithoutTax) : undefined;\n              \n            this.NetPrice = \n                (odataObject.NetPrice != null) ? parseFloat(odataObject.NetPrice) : undefined;\n              \n            this.TotalDiscount = \n                (odataObject.TotalDiscount != null) ? parseFloat(odataObject.TotalDiscount) : undefined;\n              \n            this.TotalPercentageDiscount = \n                (odataObject.TotalPercentageDiscount != null) ? parseFloat(odataObject.TotalPercentageDiscount) : undefined;\n              \n            this.LineDiscount = \n                (odataObject.LineDiscount != null) ? parseFloat(odataObject.LineDiscount) : undefined;\n              \n            this.PeriodicDiscount = \n                (odataObject.PeriodicDiscount != null) ? parseFloat(odataObject.PeriodicDiscount) : undefined;\n              \n            this.LineManualDiscountPercentage = \n                (odataObject.LineManualDiscountPercentage != null) ? parseFloat(odataObject.LineManualDiscountPercentage) : undefined;\n              \n            this.LineManualDiscountAmount = \n                (odataObject.LineManualDiscountAmount != null) ? parseFloat(odataObject.LineManualDiscountAmount) : undefined;\n              \n        if (odataObject.ShippingAddress == null) {\n            this.ShippingAddress = undefined;\n        } else if (odataObject.ShippingAddress['@odata.type'] == null) {\n            this.ShippingAddress = new AddressClass(odataObject.ShippingAddress);\n        } else {\n            var className: string = odataObject.ShippingAddress['@odata.type'];\n            className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n            if (entityDictionary[className]) {\n                this.ShippingAddress = new entityDictionary[className](odataObject.ShippingAddress)\n            }\n        }\n\n      \n            this.DeliveryMode = \n                odataObject.DeliveryMode;\n              \n            this.Comment = \n                odataObject.Comment;\n              \n            this.RequestedDeliveryDate = \n                (odataObject.RequestedDeliveryDate instanceof Date) ? odataObject.RequestedDeliveryDate\n                : (odataObject.RequestedDeliveryDate != null) ? jsonLightReadStringPropertyValue(odataObject.RequestedDeliveryDate, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.ConfirmedShipDate = \n                (odataObject.ConfirmedShipDate instanceof Date) ? odataObject.ConfirmedShipDate\n                : (odataObject.ConfirmedShipDate != null) ? jsonLightReadStringPropertyValue(odataObject.ConfirmedShipDate, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.PickupTimeslotStartDateTime = \n                (odataObject.PickupTimeslotStartDateTime instanceof Date) ? odataObject.PickupTimeslotStartDateTime\n                : (odataObject.PickupTimeslotStartDateTime != null) ? jsonLightReadStringPropertyValue(odataObject.PickupTimeslotStartDateTime, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.PickupTimeslotEndDateTime = \n                (odataObject.PickupTimeslotEndDateTime instanceof Date) ? odataObject.PickupTimeslotEndDateTime\n                : (odataObject.PickupTimeslotEndDateTime != null) ? jsonLightReadStringPropertyValue(odataObject.PickupTimeslotEndDateTime, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.InventoryLocationId = \n                odataObject.InventoryLocationId;\n              \n            this.InventorySiteId = \n                odataObject.InventorySiteId;\n              \n            this.WarehouseLocation = \n                odataObject.WarehouseLocation;\n              \n            this.InventoryStatusId = \n                odataObject.InventoryStatusId;\n              \n            this.LicensePlate = \n                odataObject.LicensePlate;\n              \n            this.InventoryDimensionId = \n                odataObject.InventoryDimensionId;\n              \n            this.InventoryTransactionId = \n                odataObject.InventoryTransactionId;\n              \n            this.ItemType = \n                odataObject.ItemType;\n              \n            this.ReservationId = \n                odataObject.ReservationId;\n              \n            this.LineNumber = \n                (odataObject.LineNumber != null) ? parseFloat(odataObject.LineNumber) : undefined;\n              \n            this.ReturnQuantity = \n                (odataObject.ReturnQuantity != null) ? parseFloat(odataObject.ReturnQuantity) : undefined;\n              \n            this.QuantityRemained = \n                (odataObject.QuantityRemained != null) ? parseFloat(odataObject.QuantityRemained) : undefined;\n              \n            this.QuantityShipped = \n                (odataObject.QuantityShipped != null) ? parseFloat(odataObject.QuantityShipped) : undefined;\n              \n            this.LineVersion = \n                odataObject.LineVersion;\n              \n            this.StatusValue = \n                odataObject.StatusValue;\n              \n            this.SalesStatusValue = \n                odataObject.SalesStatusValue;\n              \n            this.ProductSourceValue = \n                odataObject.ProductSourceValue;\n              \n            this.IsGiftCardLine = \n                odataObject.IsGiftCardLine;\n              \n            this.GiftCardId = \n                odataObject.GiftCardId;\n              \n            this.GiftCardCurrencyCode = \n                odataObject.GiftCardCurrencyCode;\n              \n            this.GiftCardOperationValue = \n                odataObject.GiftCardOperationValue;\n              \n            this.GiftCardTypeValue = \n                odataObject.GiftCardTypeValue;\n              \n            this.IsInvoiceLine = \n                odataObject.IsInvoiceLine;\n              \n            this.InvoiceId = \n                odataObject.InvoiceId;\n              \n            this.InvoiceAmount = \n                (odataObject.InvoiceAmount != null) ? parseFloat(odataObject.InvoiceAmount) : undefined;\n              \n            this.IsInvoiceSettled = \n                odataObject.IsInvoiceSettled;\n              \n            this.InvoiceTypeValue = \n                odataObject.InvoiceTypeValue;\n              \n            this.InvoicedSalesId = \n                odataObject.InvoicedSalesId;\n              \n            this.IsVoided = \n                odataObject.IsVoided;\n              \n            this.IsPriceLocked = \n                odataObject.IsPriceLocked;\n              \n        this.ChargeLines = undefined;\n        if (odataObject.ChargeLines) {\n        this.ChargeLines = [];\n        for (var i = 0; i < odataObject.ChargeLines.length; i++) {\n        if (odataObject.ChargeLines[i] != null) {\n        if (odataObject.ChargeLines[i]['@odata.type'] != null) {\n          var className: string = odataObject.ChargeLines[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ChargeLines[i] = new entityDictionary[className](odataObject.ChargeLines[i])\n          }\n        } else {\n            this.ChargeLines[i] = new ChargeLineClass(odataObject.ChargeLines[i]);\n        }\n                    } else {\n        this.ChargeLines[i] = undefined;\n        }\n        }\n        }\n      \n            this.BasePrice = \n                (odataObject.BasePrice != null) ? parseFloat(odataObject.BasePrice) : undefined;\n              \n            this.AgreementPrice = \n                (odataObject.AgreementPrice != null) ? parseFloat(odataObject.AgreementPrice) : undefined;\n              \n            this.AdjustedPrice = \n                (odataObject.AdjustedPrice != null) ? parseFloat(odataObject.AdjustedPrice) : undefined;\n              \n            this.IsWarrantyLine = \n                odataObject.IsWarrantyLine;\n              \n            this.WarrantableTransactionId = \n                odataObject.WarrantableTransactionId;\n              \n            this.WarrantableSalesId = \n                odataObject.WarrantableSalesId;\n              \n            this.WarrantableLineNumber = \n                (odataObject.WarrantableLineNumber != null) ? parseFloat(odataObject.WarrantableLineNumber) : undefined;\n              \n            this.WarrantableSerialNumber = \n                odataObject.WarrantableSerialNumber;\n              \n            this.ReturnTransactionId = \n                odataObject.ReturnTransactionId;\n              \n            this.ReturnLineNumber = \n                (odataObject.ReturnLineNumber != null) ? parseFloat(odataObject.ReturnLineNumber) : undefined;\n              \n            this.ReturnInventTransId = \n                odataObject.ReturnInventTransId;\n              \n            this.ReturnStore = \n                odataObject.ReturnStore;\n              \n            this.ReturnTerminalId = \n                odataObject.ReturnTerminalId;\n              \n            this.ReturnChannelId = \n                (odataObject.ReturnChannelId != null) ? parseInt(odataObject.ReturnChannelId, 10) : undefined;\n              \n            this.FulfillmentStoreId = \n                odataObject.FulfillmentStoreId;\n              \n            this.SalesDate = \n                (odataObject.SalesDate instanceof Date) ? odataObject.SalesDate\n                : (odataObject.SalesDate != null) ? jsonLightReadStringPropertyValue(odataObject.SalesDate, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.QuantityInvoiced = \n                (odataObject.QuantityInvoiced != null) ? parseFloat(odataObject.QuantityInvoiced) : undefined;\n              \n            this.QuantityOrdered = \n                (odataObject.QuantityOrdered != null) ? parseFloat(odataObject.QuantityOrdered) : undefined;\n              \n            this.QuantityCanceled = \n                (odataObject.QuantityCanceled != null) ? parseFloat(odataObject.QuantityCanceled) : undefined;\n              \n            this.SavedQuantity = \n                (odataObject.SavedQuantity != null) ? parseFloat(odataObject.SavedQuantity) : undefined;\n              \n            this.IsSavedDiscount = \n                odataObject.IsSavedDiscount;\n              \n            this.RecordId = \n                (odataObject.RecordId != null) ? parseInt(odataObject.RecordId, 10) : undefined;\n              \n            this.SerialNumber = \n                odataObject.SerialNumber;\n              \n            this.BatchId = \n                odataObject.BatchId;\n              \n            this.DeliveryModeChargeAmount = \n                (odataObject.DeliveryModeChargeAmount != null) ? parseFloat(odataObject.DeliveryModeChargeAmount) : undefined;\n              \n            this.UnitOfMeasureSymbol = \n                odataObject.UnitOfMeasureSymbol;\n              \n            this.CatalogId = \n                (odataObject.CatalogId != null) ? parseInt(odataObject.CatalogId, 10) : undefined;\n              \n            this.ElectronicDeliveryEmailAddress = \n                odataObject.ElectronicDeliveryEmailAddress;\n              \n            this.ElectronicDeliveryEmailContent = \n                odataObject.ElectronicDeliveryEmailContent;\n              \n            this.LoyaltyDiscountAmount = \n                (odataObject.LoyaltyDiscountAmount != null) ? parseFloat(odataObject.LoyaltyDiscountAmount) : undefined;\n              \n            this.LoyaltyPercentageDiscount = \n                (odataObject.LoyaltyPercentageDiscount != null) ? parseFloat(odataObject.LoyaltyPercentageDiscount) : undefined;\n              \n            this.TenderDiscountAmount = \n                (odataObject.TenderDiscountAmount != null) ? parseFloat(odataObject.TenderDiscountAmount) : undefined;\n              \n            this.TenderDiscountPercentage = \n                (odataObject.TenderDiscountPercentage != null) ? parseFloat(odataObject.TenderDiscountPercentage) : undefined;\n              \n            this.GiftCardBalance = \n                (odataObject.GiftCardBalance != null) ? parseFloat(odataObject.GiftCardBalance) : undefined;\n              \n            this.IsCustomerAccountDeposit = \n                odataObject.IsCustomerAccountDeposit;\n              \n            this.Blocked = \n                odataObject.Blocked;\n              \n            this.Found = \n                odataObject.Found;\n              \n            this.DateToActivateItem = \n                (odataObject.DateToActivateItem instanceof Date) ? odataObject.DateToActivateItem\n                : (odataObject.DateToActivateItem != null) ? jsonLightReadStringPropertyValue(odataObject.DateToActivateItem, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.LinePercentageDiscount = \n                (odataObject.LinePercentageDiscount != null) ? parseFloat(odataObject.LinePercentageDiscount) : undefined;\n              \n            this.PeriodicPercentageDiscount = \n                (odataObject.PeriodicPercentageDiscount != null) ? parseFloat(odataObject.PeriodicPercentageDiscount) : undefined;\n              \n            this.QuantityDiscounted = \n                (odataObject.QuantityDiscounted != null) ? parseFloat(odataObject.QuantityDiscounted) : undefined;\n              \n            this.UnitQuantity = \n                (odataObject.UnitQuantity != null) ? parseFloat(odataObject.UnitQuantity) : undefined;\n              \n        if (odataObject.UnitOfMeasureConversion == null) {\n            this.UnitOfMeasureConversion = undefined;\n        } else if (odataObject.UnitOfMeasureConversion['@odata.type'] == null) {\n            this.UnitOfMeasureConversion = new UnitOfMeasureConversionClass(odataObject.UnitOfMeasureConversion);\n        } else {\n            var className: string = odataObject.UnitOfMeasureConversion['@odata.type'];\n            className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n            if (entityDictionary[className]) {\n                this.UnitOfMeasureConversion = new entityDictionary[className](odataObject.UnitOfMeasureConversion)\n            }\n        }\n\n      \n        this.DiscountLines = undefined;\n        if (odataObject.DiscountLines) {\n        this.DiscountLines = [];\n        for (var i = 0; i < odataObject.DiscountLines.length; i++) {\n        if (odataObject.DiscountLines[i] != null) {\n        if (odataObject.DiscountLines[i]['@odata.type'] != null) {\n          var className: string = odataObject.DiscountLines[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.DiscountLines[i] = new entityDictionary[className](odataObject.DiscountLines[i])\n          }\n        } else {\n            this.DiscountLines[i] = new DiscountLineClass(odataObject.DiscountLines[i]);\n        }\n                    } else {\n        this.DiscountLines[i] = undefined;\n        }\n        }\n        }\n      \n        this.PriceLines = undefined;\n        if (odataObject.PriceLines) {\n        this.PriceLines = [];\n        for (var i = 0; i < odataObject.PriceLines.length; i++) {\n        if (odataObject.PriceLines[i] != null) {\n        if (odataObject.PriceLines[i]['@odata.type'] != null) {\n          var className: string = odataObject.PriceLines[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.PriceLines[i] = new entityDictionary[className](odataObject.PriceLines[i])\n          }\n        } else {\n            this.PriceLines[i] = new PriceLineClass(odataObject.PriceLines[i]);\n        }\n                    } else {\n        this.PriceLines[i] = undefined;\n        }\n        }\n        }\n      \n        this.AttainablePriceLines = undefined;\n        if (odataObject.AttainablePriceLines) {\n        this.AttainablePriceLines = [];\n        for (var i = 0; i < odataObject.AttainablePriceLines.length; i++) {\n        if (odataObject.AttainablePriceLines[i] != null) {\n        if (odataObject.AttainablePriceLines[i]['@odata.type'] != null) {\n          var className: string = odataObject.AttainablePriceLines[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.AttainablePriceLines[i] = new entityDictionary[className](odataObject.AttainablePriceLines[i])\n          }\n        } else {\n            this.AttainablePriceLines[i] = new PriceLineClass(odataObject.AttainablePriceLines[i]);\n        }\n                    } else {\n        this.AttainablePriceLines[i] = undefined;\n        }\n        }\n        }\n      \n        this.PeriodicDiscountPossibilities = undefined;\n        if (odataObject.PeriodicDiscountPossibilities) {\n        this.PeriodicDiscountPossibilities = [];\n        for (var i = 0; i < odataObject.PeriodicDiscountPossibilities.length; i++) {\n        if (odataObject.PeriodicDiscountPossibilities[i] != null) {\n        if (odataObject.PeriodicDiscountPossibilities[i]['@odata.type'] != null) {\n          var className: string = odataObject.PeriodicDiscountPossibilities[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.PeriodicDiscountPossibilities[i] = new entityDictionary[className](odataObject.PeriodicDiscountPossibilities[i])\n          }\n        } else {\n            this.PeriodicDiscountPossibilities[i] = new DiscountLineClass(odataObject.PeriodicDiscountPossibilities[i]);\n        }\n                    } else {\n        this.PeriodicDiscountPossibilities[i] = undefined;\n        }\n        }\n        }\n      \n        this.ReasonCodeLines = undefined;\n        if (odataObject.ReasonCodeLines) {\n        this.ReasonCodeLines = [];\n        for (var i = 0; i < odataObject.ReasonCodeLines.length; i++) {\n        if (odataObject.ReasonCodeLines[i] != null) {\n        if (odataObject.ReasonCodeLines[i]['@odata.type'] != null) {\n          var className: string = odataObject.ReasonCodeLines[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ReasonCodeLines[i] = new entityDictionary[className](odataObject.ReasonCodeLines[i])\n          }\n        } else {\n            this.ReasonCodeLines[i] = new ReasonCodeLineClass(odataObject.ReasonCodeLines[i]);\n        }\n                    } else {\n        this.ReasonCodeLines[i] = undefined;\n        }\n        }\n        }\n      \n        if (odataObject.ReturnLabelProperties == null) {\n            this.ReturnLabelProperties = undefined;\n        } else if (odataObject.ReturnLabelProperties['@odata.type'] == null) {\n            this.ReturnLabelProperties = new ReturnLabelContentClass(odataObject.ReturnLabelProperties);\n        } else {\n            var className: string = odataObject.ReturnLabelProperties['@odata.type'];\n            className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n            if (entityDictionary[className]) {\n                this.ReturnLabelProperties = new entityDictionary[className](odataObject.ReturnLabelProperties)\n            }\n        }\n\n      \n            this.LineMultilineDiscOnItem = \n                odataObject.LineMultilineDiscOnItem;\n              \n        this.RelatedDiscountedLineIds = undefined;\n        if (odataObject.RelatedDiscountedLineIds) {\n        this.RelatedDiscountedLineIds = [];\n        for (var i = 0; i < odataObject.RelatedDiscountedLineIds.length; i++) {\n        if (odataObject.RelatedDiscountedLineIds[i] != null) {\n            this.RelatedDiscountedLineIds[i] = \n                odataObject.RelatedDiscountedLineIds[i];\n                            } else {\n        this.RelatedDiscountedLineIds[i] = undefined;\n        }\n        }\n        }\n      \n            this.LinkedParentLineId = \n                odataObject.LinkedParentLineId;\n              \n            this.LineMultilineDiscOnItemValue = \n                odataObject.LineMultilineDiscOnItemValue;\n              \n            this.WasChanged = \n                odataObject.WasChanged;\n              \n            this.OriginalSalesOrderUnitOfMeasure = \n                odataObject.OriginalSalesOrderUnitOfMeasure;\n              \n            this.InventOrderUnitOfMeasure = \n                odataObject.InventOrderUnitOfMeasure;\n              \n            this.TrackingId = \n                odataObject.TrackingId;\n              \n            this.IsLoyaltyDiscountApplied = \n                odataObject.IsLoyaltyDiscountApplied;\n              \n            this.CommissionSalesGroup = \n                odataObject.CommissionSalesGroup;\n              \n            this.IsCommissionSalesGroupOverriddenByCustomer = \n                odataObject.IsCommissionSalesGroupOverriddenByCustomer;\n              \n            this.CommissionSalesGroupSetByCashier = \n                odataObject.CommissionSalesGroupSetByCashier;\n              \n            this.QuantityNotProcessed = \n                (odataObject.QuantityNotProcessed != null) ? parseFloat(odataObject.QuantityNotProcessed) : undefined;\n              \n            this.QuantityReserved = \n                (odataObject.QuantityReserved != null) ? parseFloat(odataObject.QuantityReserved) : undefined;\n              \n            this.QuantityPicked = \n                (odataObject.QuantityPicked != null) ? parseFloat(odataObject.QuantityPicked) : undefined;\n              \n            this.QuantityPacked = \n                (odataObject.QuantityPacked != null) ? parseFloat(odataObject.QuantityPacked) : undefined;\n              \n        this.AttributeValues = undefined;\n        if (odataObject.AttributeValues) {\n        this.AttributeValues = [];\n        for (var i = 0; i < odataObject.AttributeValues.length; i++) {\n        if (odataObject.AttributeValues[i] != null) {\n        if (odataObject.AttributeValues[i]['@odata.type'] != null) {\n          var className: string = odataObject.AttributeValues[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.AttributeValues[i] = new entityDictionary[className](odataObject.AttributeValues[i])\n          }\n        } else {\n            this.AttributeValues[i] = new AttributeValueBaseClass(odataObject.AttributeValues[i]);\n        }\n                    } else {\n        this.AttributeValues[i] = undefined;\n        }\n        }\n        }\n      \n        if (odataObject.ThirdPartyGiftCardInfo == null) {\n            this.ThirdPartyGiftCardInfo = undefined;\n        } else if (odataObject.ThirdPartyGiftCardInfo['@odata.type'] == null) {\n            this.ThirdPartyGiftCardInfo = new ThirdPartyGiftCardInfoClass(odataObject.ThirdPartyGiftCardInfo);\n        } else {\n            var className: string = odataObject.ThirdPartyGiftCardInfo['@odata.type'];\n            className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n            if (entityDictionary[className]) {\n                this.ThirdPartyGiftCardInfo = new entityDictionary[className](odataObject.ThirdPartyGiftCardInfo)\n            }\n        }\n\n      \n            this.QuantityReturnable = \n                (odataObject.QuantityReturnable != null) ? parseFloat(odataObject.QuantityReturnable) : undefined;\n              \n        this.LoyaltyRewardPointLines = undefined;\n        if (odataObject.LoyaltyRewardPointLines) {\n        this.LoyaltyRewardPointLines = [];\n        for (var i = 0; i < odataObject.LoyaltyRewardPointLines.length; i++) {\n        if (odataObject.LoyaltyRewardPointLines[i] != null) {\n        if (odataObject.LoyaltyRewardPointLines[i]['@odata.type'] != null) {\n          var className: string = odataObject.LoyaltyRewardPointLines[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.LoyaltyRewardPointLines[i] = new entityDictionary[className](odataObject.LoyaltyRewardPointLines[i])\n          }\n        } else {\n            this.LoyaltyRewardPointLines[i] = new LoyaltyRewardPointLineClass(odataObject.LoyaltyRewardPointLines[i]);\n        }\n                    } else {\n        this.LoyaltyRewardPointLines[i] = undefined;\n        }\n        }\n        }\n      \n        this.ReturnLoyaltyRewardPointLines = undefined;\n        if (odataObject.ReturnLoyaltyRewardPointLines) {\n        this.ReturnLoyaltyRewardPointLines = [];\n        for (var i = 0; i < odataObject.ReturnLoyaltyRewardPointLines.length; i++) {\n        if (odataObject.ReturnLoyaltyRewardPointLines[i] != null) {\n        if (odataObject.ReturnLoyaltyRewardPointLines[i]['@odata.type'] != null) {\n          var className: string = odataObject.ReturnLoyaltyRewardPointLines[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ReturnLoyaltyRewardPointLines[i] = new entityDictionary[className](odataObject.ReturnLoyaltyRewardPointLines[i])\n          }\n        } else {\n            this.ReturnLoyaltyRewardPointLines[i] = new LoyaltyRewardPointLineClass(odataObject.ReturnLoyaltyRewardPointLines[i]);\n        }\n                    } else {\n        this.ReturnLoyaltyRewardPointLines[i] = undefined;\n        }\n        }\n        }\n      \n        if (odataObject.FulfillmentStatus == null) {\n            this.FulfillmentStatus = undefined;\n        } else if (odataObject.FulfillmentStatus['@odata.type'] == null) {\n            this.FulfillmentStatus = new FulfillmentLineStatusClass(odataObject.FulfillmentStatus);\n        } else {\n            var className: string = odataObject.FulfillmentStatus['@odata.type'];\n            className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n            if (entityDictionary[className]) {\n                this.FulfillmentStatus = new entityDictionary[className](odataObject.FulfillmentStatus)\n            }\n        }\n\n      \n            this.FulfillmentStatusValue = \n                odataObject.FulfillmentStatusValue;\n              \n            this.DetailedLineStatusValue = \n                odataObject.DetailedLineStatusValue;\n              \n        if (odataObject.DetailedLineStatus == null) {\n            this.DetailedLineStatus = undefined;\n        } else if (odataObject.DetailedLineStatus['@odata.type'] == null) {\n            this.DetailedLineStatus = new DetailedLineStatusClass(odataObject.DetailedLineStatus);\n        } else {\n            var className: string = odataObject.DetailedLineStatus['@odata.type'];\n            className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n            if (entityDictionary[className]) {\n                this.DetailedLineStatus = new entityDictionary[className](odataObject.DetailedLineStatus)\n            }\n        }\n\n      \n            this.LastReturnProcessedTime = \n                (odataObject.LastReturnProcessedTime instanceof Date) ? odataObject.LastReturnProcessedTime\n                : (odataObject.LastReturnProcessedTime != null) ? jsonLightReadStringPropertyValue(odataObject.LastReturnProcessedTime, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.SalesAgreementPrice = \n                (odataObject.SalesAgreementPrice != null) ? parseFloat(odataObject.SalesAgreementPrice) : undefined;\n              \n            this.SalesAgreementLineRecordId = \n                (odataObject.SalesAgreementLineRecordId != null) ? parseInt(odataObject.SalesAgreementLineRecordId, 10) : undefined;\n              \n            this.IsSalesAgreementSkipped = \n                odataObject.IsSalesAgreementSkipped;\n              \n            this.ItemId = \n                odataObject.ItemId;\n              \n            this.Quantity = \n                (odataObject.Quantity != null) ? parseFloat(odataObject.Quantity) : undefined;\n              \n            this.Price = \n                (odataObject.Price != null) ? parseFloat(odataObject.Price) : undefined;\n              \n            this.ItemTaxGroupId = \n                odataObject.ItemTaxGroupId;\n              \n            this.SalesTaxGroupId = \n                odataObject.SalesTaxGroupId;\n              \n            this.OriginalSalesTaxGroupId = \n                odataObject.OriginalSalesTaxGroupId;\n              \n            this.OriginalItemTaxGroupId = \n                odataObject.OriginalItemTaxGroupId;\n              \n            this.TaxAmount = \n                (odataObject.TaxAmount != null) ? parseFloat(odataObject.TaxAmount) : undefined;\n              \n            this.SalesOrderUnitOfMeasure = \n                odataObject.SalesOrderUnitOfMeasure;\n              \n            this.NetAmount = \n                (odataObject.NetAmount != null) ? parseFloat(odataObject.NetAmount) : undefined;\n              \n            this.NetAmountPerUnit = \n                (odataObject.NetAmountPerUnit != null) ? parseFloat(odataObject.NetAmountPerUnit) : undefined;\n              \n            this.GrossAmount = \n                (odataObject.GrossAmount != null) ? parseFloat(odataObject.GrossAmount) : undefined;\n              \n        this.TaxLines = undefined;\n        if (odataObject.TaxLines) {\n        this.TaxLines = [];\n        for (var i = 0; i < odataObject.TaxLines.length; i++) {\n        if (odataObject.TaxLines[i] != null) {\n        if (odataObject.TaxLines[i]['@odata.type'] != null) {\n          var className: string = odataObject.TaxLines[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.TaxLines[i] = new entityDictionary[className](odataObject.TaxLines[i])\n          }\n        } else {\n            this.TaxLines[i] = new TaxLineClass(odataObject.TaxLines[i]);\n        }\n                    } else {\n        this.TaxLines[i] = undefined;\n        }\n        }\n        }\n      \n        this.TaxMeasures = undefined;\n        if (odataObject.TaxMeasures) {\n        this.TaxMeasures = [];\n        for (var i = 0; i < odataObject.TaxMeasures.length; i++) {\n        if (odataObject.TaxMeasures[i] != null) {\n        if (odataObject.TaxMeasures[i]['@odata.type'] != null) {\n          var className: string = odataObject.TaxMeasures[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.TaxMeasures[i] = new entityDictionary[className](odataObject.TaxMeasures[i])\n          }\n        } else {\n            this.TaxMeasures[i] = new TaxMeasureClass(odataObject.TaxMeasures[i]);\n        }\n                    } else {\n        this.TaxMeasures[i] = undefined;\n        }\n        }\n        }\n      \n            this.TaxAmountExemptInclusive = \n                (odataObject.TaxAmountExemptInclusive != null) ? parseFloat(odataObject.TaxAmountExemptInclusive) : undefined;\n              \n            this.TaxAmountInclusive = \n                (odataObject.TaxAmountInclusive != null) ? parseFloat(odataObject.TaxAmountInclusive) : undefined;\n              \n            this.TaxAmountExclusive = \n                (odataObject.TaxAmountExclusive != null) ? parseFloat(odataObject.TaxAmountExclusive) : undefined;\n              \n            this.NetAmountWithAllInclusiveTax = \n                (odataObject.NetAmountWithAllInclusiveTax != null) ? parseFloat(odataObject.NetAmountWithAllInclusiveTax) : undefined;\n              \n            this.BeginDateTime = \n                (odataObject.BeginDateTime instanceof Date) ? odataObject.BeginDateTime\n                : (odataObject.BeginDateTime != null) ? jsonLightReadStringPropertyValue(odataObject.BeginDateTime, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.EndDateTime = \n                (odataObject.EndDateTime instanceof Date) ? odataObject.EndDateTime\n                : (odataObject.EndDateTime != null) ? jsonLightReadStringPropertyValue(odataObject.EndDateTime, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.TaxRatePercent = \n                (odataObject.TaxRatePercent != null) ? parseFloat(odataObject.TaxRatePercent) : undefined;\n              \n            this.IsReturnByReceipt = \n                odataObject.IsReturnByReceipt;\n              \n            this.ReturnLineTaxAmount = \n                (odataObject.ReturnLineTaxAmount != null) ? parseFloat(odataObject.ReturnLineTaxAmount) : undefined;\n              \n        this.ReturnTaxLines = undefined;\n        if (odataObject.ReturnTaxLines) {\n        this.ReturnTaxLines = [];\n        for (var i = 0; i < odataObject.ReturnTaxLines.length; i++) {\n        if (odataObject.ReturnTaxLines[i] != null) {\n        if (odataObject.ReturnTaxLines[i]['@odata.type'] != null) {\n          var className: string = odataObject.ReturnTaxLines[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ReturnTaxLines[i] = new entityDictionary[className](odataObject.ReturnTaxLines[i])\n          }\n        } else {\n            this.ReturnTaxLines[i] = new TaxLineClass(odataObject.ReturnTaxLines[i]);\n        }\n                    } else {\n        this.ReturnTaxLines[i] = undefined;\n        }\n        }\n        }\n      \n            this.TaxExemptPriceInclusiveReductionAmount = \n                (odataObject.TaxExemptPriceInclusiveReductionAmount != null) ? parseFloat(odataObject.TaxExemptPriceInclusiveReductionAmount) : undefined;\n              \n            this.TaxExemptPriceInclusiveOriginalPrice = \n                (odataObject.TaxExemptPriceInclusiveOriginalPrice != null) ? parseFloat(odataObject.TaxExemptPriceInclusiveOriginalPrice) : undefined;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['SalesLineClass'] = SalesLineClass;\n    \n      /**\n      * SearchArea entity class.\n      */\n      export class SearchAreaClass implements Entities.SearchArea {\n      public Longitude: number;\n      public Latitude: number;\n      public Radius: number;\n      public DistanceUnitValue: number;\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.Longitude = \n                (odataObject.Longitude != null) ? parseFloat(odataObject.Longitude) : undefined;\n              \n            this.Latitude = \n                (odataObject.Latitude != null) ? parseFloat(odataObject.Latitude) : undefined;\n              \n            this.Radius = \n                (odataObject.Radius != null) ? parseFloat(odataObject.Radius) : undefined;\n              \n            this.DistanceUnitValue = \n                odataObject.DistanceUnitValue;\n              \n      }\n      }\n      entityDictionary['SearchAreaClass'] = SearchAreaClass;\n    \n      /**\n      * ShiftAccountLine entity class.\n      */\n      export class ShiftAccountLineClass implements Entities.ShiftAccountLine {\n      public AccountTypeValue: number;\n      public AccountNumber: string;\n      public Amount: number;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.AccountTypeValue = \n                odataObject.AccountTypeValue;\n              \n            this.AccountNumber = \n                odataObject.AccountNumber;\n              \n            this.Amount = \n                (odataObject.Amount != null) ? parseFloat(odataObject.Amount) : undefined;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['ShiftAccountLineClass'] = ShiftAccountLineClass;\n    \n      /**\n      * ShiftTenderLine entity class.\n      */\n      export class ShiftTenderLineClass implements Entities.ShiftTenderLine {\n      public TenderTypeId: string;\n      public TenderTypeName: string;\n      public CardTypeId: string;\n      public TenderCurrency: string;\n      public CountingRequired: boolean;\n      public StartingAmountOfStoreCurrency: number;\n      public StartingAmountOfTenderCurrency: number;\n      public FloatingEntryAmountOfStoreCurrency: number;\n      public FloatingEntryAmountOfTenderCurrency: number;\n      public SafeDropAmountOfStoreCurrency: number;\n      public SafeDropAmountOfTenderCurrency: number;\n      public BankDropAmountOfStoreCurrency: number;\n      public BankDropAmountOfTenderCurrency: number;\n      public RemoveTenderAmountOfStoreCurrency: number;\n      public RemoveTenderAmountOfTenderCurrency: number;\n      public DeclareTenderAmountOfStoreCurrency: number;\n      public DeclareTenderAmountOfTenderCurrency: number;\n      public TenderedAmountOfStoreCurrency: number;\n      public TenderedAmountOfTenderCurrency: number;\n      public ChangeAmountOfStoreCurrency: number;\n      public ChangeAmountOfTenderCurrency: number;\n      public Count: number;\n      public Notes: string;\n      public Overridden: boolean;\n      public OverriddenFloatEntryAmountInStoreCurrency: number;\n      public OverriddenFloatEntryAmountInTenderedCurrency: number;\n      public OverriddenBankDropAmountInStoreCurrency: number;\n      public OverriddenBankDropAmountInTenderedCurrency: number;\n      public OverriddenChangeAmountInStoreCurrency: number;\n      public OverriddenChangeAmountInTenderedCurrency: number;\n      public OverriddenDeclaredTenderAmountInStoreCurrency: number;\n      public OverriddenDeclaredTenderAmountInTenderedCurrency: number;\n      public OverriddenRemovedTenderAmountInStoreCurrency: number;\n      public OverriddenRemovedTenderAmountInTenderedCurrency: number;\n      public OverriddenSafeDropAmountInStoreCurrency: number;\n      public OverriddenSafeDropAmountInTenderedCurrency: number;\n      public OverriddenStartingAmountInStoreCurrency: number;\n      public OverriddenStartingAmountInTenderedCurrency: number;\n      public OverriddenTenderedAmountInStoreCurrency: number;\n      public OverriddenTenderedAmountInTenderedCurrency: number;\n      public OverShortAmountOfTenderCurrency: number;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.TenderTypeId = \n                odataObject.TenderTypeId;\n              \n            this.TenderTypeName = \n                odataObject.TenderTypeName;\n              \n            this.CardTypeId = \n                odataObject.CardTypeId;\n              \n            this.TenderCurrency = \n                odataObject.TenderCurrency;\n              \n            this.CountingRequired = \n                odataObject.CountingRequired;\n              \n            this.StartingAmountOfStoreCurrency = \n                (odataObject.StartingAmountOfStoreCurrency != null) ? parseFloat(odataObject.StartingAmountOfStoreCurrency) : undefined;\n              \n            this.StartingAmountOfTenderCurrency = \n                (odataObject.StartingAmountOfTenderCurrency != null) ? parseFloat(odataObject.StartingAmountOfTenderCurrency) : undefined;\n              \n            this.FloatingEntryAmountOfStoreCurrency = \n                (odataObject.FloatingEntryAmountOfStoreCurrency != null) ? parseFloat(odataObject.FloatingEntryAmountOfStoreCurrency) : undefined;\n              \n            this.FloatingEntryAmountOfTenderCurrency = \n                (odataObject.FloatingEntryAmountOfTenderCurrency != null) ? parseFloat(odataObject.FloatingEntryAmountOfTenderCurrency) : undefined;\n              \n            this.SafeDropAmountOfStoreCurrency = \n                (odataObject.SafeDropAmountOfStoreCurrency != null) ? parseFloat(odataObject.SafeDropAmountOfStoreCurrency) : undefined;\n              \n            this.SafeDropAmountOfTenderCurrency = \n                (odataObject.SafeDropAmountOfTenderCurrency != null) ? parseFloat(odataObject.SafeDropAmountOfTenderCurrency) : undefined;\n              \n            this.BankDropAmountOfStoreCurrency = \n                (odataObject.BankDropAmountOfStoreCurrency != null) ? parseFloat(odataObject.BankDropAmountOfStoreCurrency) : undefined;\n              \n            this.BankDropAmountOfTenderCurrency = \n                (odataObject.BankDropAmountOfTenderCurrency != null) ? parseFloat(odataObject.BankDropAmountOfTenderCurrency) : undefined;\n              \n            this.RemoveTenderAmountOfStoreCurrency = \n                (odataObject.RemoveTenderAmountOfStoreCurrency != null) ? parseFloat(odataObject.RemoveTenderAmountOfStoreCurrency) : undefined;\n              \n            this.RemoveTenderAmountOfTenderCurrency = \n                (odataObject.RemoveTenderAmountOfTenderCurrency != null) ? parseFloat(odataObject.RemoveTenderAmountOfTenderCurrency) : undefined;\n              \n            this.DeclareTenderAmountOfStoreCurrency = \n                (odataObject.DeclareTenderAmountOfStoreCurrency != null) ? parseFloat(odataObject.DeclareTenderAmountOfStoreCurrency) : undefined;\n              \n            this.DeclareTenderAmountOfTenderCurrency = \n                (odataObject.DeclareTenderAmountOfTenderCurrency != null) ? parseFloat(odataObject.DeclareTenderAmountOfTenderCurrency) : undefined;\n              \n            this.TenderedAmountOfStoreCurrency = \n                (odataObject.TenderedAmountOfStoreCurrency != null) ? parseFloat(odataObject.TenderedAmountOfStoreCurrency) : undefined;\n              \n            this.TenderedAmountOfTenderCurrency = \n                (odataObject.TenderedAmountOfTenderCurrency != null) ? parseFloat(odataObject.TenderedAmountOfTenderCurrency) : undefined;\n              \n            this.ChangeAmountOfStoreCurrency = \n                (odataObject.ChangeAmountOfStoreCurrency != null) ? parseFloat(odataObject.ChangeAmountOfStoreCurrency) : undefined;\n              \n            this.ChangeAmountOfTenderCurrency = \n                (odataObject.ChangeAmountOfTenderCurrency != null) ? parseFloat(odataObject.ChangeAmountOfTenderCurrency) : undefined;\n              \n            this.Count = \n                odataObject.Count;\n              \n            this.Notes = \n                odataObject.Notes;\n              \n            this.Overridden = \n                odataObject.Overridden;\n              \n            this.OverriddenFloatEntryAmountInStoreCurrency = \n                (odataObject.OverriddenFloatEntryAmountInStoreCurrency != null) ? parseFloat(odataObject.OverriddenFloatEntryAmountInStoreCurrency) : undefined;\n              \n            this.OverriddenFloatEntryAmountInTenderedCurrency = \n                (odataObject.OverriddenFloatEntryAmountInTenderedCurrency != null) ? parseFloat(odataObject.OverriddenFloatEntryAmountInTenderedCurrency) : undefined;\n              \n            this.OverriddenBankDropAmountInStoreCurrency = \n                (odataObject.OverriddenBankDropAmountInStoreCurrency != null) ? parseFloat(odataObject.OverriddenBankDropAmountInStoreCurrency) : undefined;\n              \n            this.OverriddenBankDropAmountInTenderedCurrency = \n                (odataObject.OverriddenBankDropAmountInTenderedCurrency != null) ? parseFloat(odataObject.OverriddenBankDropAmountInTenderedCurrency) : undefined;\n              \n            this.OverriddenChangeAmountInStoreCurrency = \n                (odataObject.OverriddenChangeAmountInStoreCurrency != null) ? parseFloat(odataObject.OverriddenChangeAmountInStoreCurrency) : undefined;\n              \n            this.OverriddenChangeAmountInTenderedCurrency = \n                (odataObject.OverriddenChangeAmountInTenderedCurrency != null) ? parseFloat(odataObject.OverriddenChangeAmountInTenderedCurrency) : undefined;\n              \n            this.OverriddenDeclaredTenderAmountInStoreCurrency = \n                (odataObject.OverriddenDeclaredTenderAmountInStoreCurrency != null) ? parseFloat(odataObject.OverriddenDeclaredTenderAmountInStoreCurrency) : undefined;\n              \n            this.OverriddenDeclaredTenderAmountInTenderedCurrency = \n                (odataObject.OverriddenDeclaredTenderAmountInTenderedCurrency != null) ? parseFloat(odataObject.OverriddenDeclaredTenderAmountInTenderedCurrency) : undefined;\n              \n            this.OverriddenRemovedTenderAmountInStoreCurrency = \n                (odataObject.OverriddenRemovedTenderAmountInStoreCurrency != null) ? parseFloat(odataObject.OverriddenRemovedTenderAmountInStoreCurrency) : undefined;\n              \n            this.OverriddenRemovedTenderAmountInTenderedCurrency = \n                (odataObject.OverriddenRemovedTenderAmountInTenderedCurrency != null) ? parseFloat(odataObject.OverriddenRemovedTenderAmountInTenderedCurrency) : undefined;\n              \n            this.OverriddenSafeDropAmountInStoreCurrency = \n                (odataObject.OverriddenSafeDropAmountInStoreCurrency != null) ? parseFloat(odataObject.OverriddenSafeDropAmountInStoreCurrency) : undefined;\n              \n            this.OverriddenSafeDropAmountInTenderedCurrency = \n                (odataObject.OverriddenSafeDropAmountInTenderedCurrency != null) ? parseFloat(odataObject.OverriddenSafeDropAmountInTenderedCurrency) : undefined;\n              \n            this.OverriddenStartingAmountInStoreCurrency = \n                (odataObject.OverriddenStartingAmountInStoreCurrency != null) ? parseFloat(odataObject.OverriddenStartingAmountInStoreCurrency) : undefined;\n              \n            this.OverriddenStartingAmountInTenderedCurrency = \n                (odataObject.OverriddenStartingAmountInTenderedCurrency != null) ? parseFloat(odataObject.OverriddenStartingAmountInTenderedCurrency) : undefined;\n              \n            this.OverriddenTenderedAmountInStoreCurrency = \n                (odataObject.OverriddenTenderedAmountInStoreCurrency != null) ? parseFloat(odataObject.OverriddenTenderedAmountInStoreCurrency) : undefined;\n              \n            this.OverriddenTenderedAmountInTenderedCurrency = \n                (odataObject.OverriddenTenderedAmountInTenderedCurrency != null) ? parseFloat(odataObject.OverriddenTenderedAmountInTenderedCurrency) : undefined;\n              \n            this.OverShortAmountOfTenderCurrency = \n                (odataObject.OverShortAmountOfTenderCurrency != null) ? parseFloat(odataObject.OverShortAmountOfTenderCurrency) : undefined;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['ShiftTenderLineClass'] = ShiftTenderLineClass;\n    \n      /**\n      * StockCountJournalTransaction entity class.\n      */\n      export class StockCountJournalTransactionClass implements Entities.StockCountJournalTransaction {\n      public JournalId: string;\n      public RecordId: number;\n      public OperationType: number;\n      public ItemId: string;\n      public DataAreaId: string;\n      public ProductRecordId: number;\n      public ItemName: string;\n      public InventDimId: string;\n      public Counted: number;\n      public Quantity: number;\n      public EstimatedOnHandQuantity: number;\n      public OnHandCalculationDateTime: Date;\n      public Unit: string;\n      public UserId: string;\n      public TerminalId: string;\n      public CountedDate: Date;\n      public Status: number;\n      public InventBatchId: string;\n      public WarehouseLocationId: string;\n      public InventoryStatus: string;\n      public LicensePlate: string;\n      public WarehousePalletId: string;\n      public InventSiteId: string;\n      public InventLocationId: string;\n      public ConfigId: string;\n      public InventSizeId: string;\n      public InventColorId: string;\n      public InventStyleId: string;\n      public InventSerialId: string;\n      public TrackingGuid: string;\n      public UpdatedInAx: boolean;\n      public Message: string;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.JournalId = \n                odataObject.JournalId;\n              \n            this.RecordId = \n                (odataObject.RecordId != null) ? parseInt(odataObject.RecordId, 10) : undefined;\n              \n            this.OperationType = \n                odataObject.OperationType;\n              \n            this.ItemId = \n                odataObject.ItemId;\n              \n            this.DataAreaId = \n                odataObject.DataAreaId;\n              \n            this.ProductRecordId = \n                (odataObject.ProductRecordId != null) ? parseInt(odataObject.ProductRecordId, 10) : undefined;\n              \n            this.ItemName = \n                odataObject.ItemName;\n              \n            this.InventDimId = \n                odataObject.InventDimId;\n              \n            this.Counted = \n                (odataObject.Counted != null) ? parseFloat(odataObject.Counted) : undefined;\n              \n            this.Quantity = \n                (odataObject.Quantity != null) ? parseFloat(odataObject.Quantity) : undefined;\n              \n            this.EstimatedOnHandQuantity = \n                (odataObject.EstimatedOnHandQuantity != null) ? parseFloat(odataObject.EstimatedOnHandQuantity) : undefined;\n              \n            this.OnHandCalculationDateTime = \n                (odataObject.OnHandCalculationDateTime instanceof Date) ? odataObject.OnHandCalculationDateTime\n                : (odataObject.OnHandCalculationDateTime != null) ? jsonLightReadStringPropertyValue(odataObject.OnHandCalculationDateTime, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.Unit = \n                odataObject.Unit;\n              \n            this.UserId = \n                odataObject.UserId;\n              \n            this.TerminalId = \n                odataObject.TerminalId;\n              \n            this.CountedDate = \n                (odataObject.CountedDate instanceof Date) ? odataObject.CountedDate\n                : (odataObject.CountedDate != null) ? jsonLightReadStringPropertyValue(odataObject.CountedDate, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.Status = \n                odataObject.Status;\n              \n            this.InventBatchId = \n                odataObject.InventBatchId;\n              \n            this.WarehouseLocationId = \n                odataObject.WarehouseLocationId;\n              \n            this.InventoryStatus = \n                odataObject.InventoryStatus;\n              \n            this.LicensePlate = \n                odataObject.LicensePlate;\n              \n            this.WarehousePalletId = \n                odataObject.WarehousePalletId;\n              \n            this.InventSiteId = \n                odataObject.InventSiteId;\n              \n            this.InventLocationId = \n                odataObject.InventLocationId;\n              \n            this.ConfigId = \n                odataObject.ConfigId;\n              \n            this.InventSizeId = \n                odataObject.InventSizeId;\n              \n            this.InventColorId = \n                odataObject.InventColorId;\n              \n            this.InventStyleId = \n                odataObject.InventStyleId;\n              \n            this.InventSerialId = \n                odataObject.InventSerialId;\n              \n            this.TrackingGuid = \n                odataObject.TrackingGuid;\n              \n            this.UpdatedInAx = \n                odataObject.UpdatedInAx;\n              \n            this.Message = \n                odataObject.Message;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['StockCountJournalTransactionClass'] = StockCountJournalTransactionClass;\n    \n      /**\n      * TaxLine entity class.\n      */\n      export class TaxLineClass implements Entities.TaxLine {\n      public TaxGroup: string;\n      public Percentage: number;\n      public IsExempt: boolean;\n      public TaxBasis: number;\n      public IsIncludedInPrice: boolean;\n      public SaleLineNumber: number;\n      public StoreId: string;\n      public TerminalId: string;\n      public TransactionId: string;\n      public TaxCode: string;\n      public Amount: number;\n      public AmountRefunded: number;\n      public IsTaxGroupRounding: boolean;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.TaxGroup = \n                odataObject.TaxGroup;\n              \n            this.Percentage = \n                (odataObject.Percentage != null) ? parseFloat(odataObject.Percentage) : undefined;\n              \n            this.IsExempt = \n                odataObject.IsExempt;\n              \n            this.TaxBasis = \n                (odataObject.TaxBasis != null) ? parseFloat(odataObject.TaxBasis) : undefined;\n              \n            this.IsIncludedInPrice = \n                odataObject.IsIncludedInPrice;\n              \n            this.SaleLineNumber = \n                (odataObject.SaleLineNumber != null) ? parseFloat(odataObject.SaleLineNumber) : undefined;\n              \n            this.StoreId = \n                odataObject.StoreId;\n              \n            this.TerminalId = \n                odataObject.TerminalId;\n              \n            this.TransactionId = \n                odataObject.TransactionId;\n              \n            this.TaxCode = \n                odataObject.TaxCode;\n              \n            this.Amount = \n                (odataObject.Amount != null) ? parseFloat(odataObject.Amount) : undefined;\n              \n            this.AmountRefunded = \n                (odataObject.AmountRefunded != null) ? parseFloat(odataObject.AmountRefunded) : undefined;\n              \n            this.IsTaxGroupRounding = \n                odataObject.IsTaxGroupRounding;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['TaxLineClass'] = TaxLineClass;\n    \n      /**\n      * TenderLine entity class.\n      */\n      export class TenderLineClass implements Entities.TenderLine {\n      public StoreId: string;\n      public TerminalId: string;\n      public TransactionId: string;\n      public InternalTransactionId: string;\n      public RefundableAmount: number;\n      public CaptureToken: string;\n      public CardToken: string;\n      public Authorization: string;\n      public TransactionStatusValue: number;\n      public IncomeExpenseAccountTypeValue: number;\n      public MaskedCardNumber: string;\n      public TenderDate: Date;\n      public IsPreProcessed: boolean;\n      public IsDeposit: boolean;\n      public IsCustomerAccountFloorLimitUsed: boolean;\n      public AuthorizationReferenceId: string;\n      public IsIncrementalCaptureEnabled: boolean;\n      public IsReauthorizationEnabled: boolean;\n      public IncrementalOffsetAmount: number;\n      public ChannelId: number;\n      public IsLinkedRefund: boolean;\n      public LinkedPaymentStore: string;\n      public LinkedPaymentTerminalId: string;\n      public LinkedPaymentTransactionId: string;\n      public LinkedPaymentLineNumber: number;\n      public LinkedPaymentCurrency: string;\n      public RoundingDifference: number;\n      public RemainingLinkedRefundAmount: number;\n      public TenderLineId: string;\n      public Amount: number;\n      public CashBackAmount: number;\n      public AmountInTenderedCurrency: number;\n      public AmountInCompanyCurrency: number;\n      public Currency: string;\n      public ExchangeRate: number;\n      public CompanyCurrencyExchangeRate: number;\n      public TenderTypeId: string;\n      public SignatureData: string;\n      public ReasonCodeLines: Entities.ReasonCodeLine[];\n      public LineNumber: number;\n      public GiftCardId: string;\n      public GiftCardPin: string;\n      public GiftCardExpirationYear: number;\n      public GiftCardExpirationMonth: number;\n      public CreditMemoId: string;\n      public CustomerId: string;\n      public LoyaltyCardId: string;\n      public CardTypeId: string;\n      public IsChangeLine: boolean;\n      public IsHistorical: boolean;\n      public IsVoidable: boolean;\n      public StatusValue: number;\n      public VoidStatusValue: number;\n      public AuthorizedAmount: number;\n      public PaymentRefRecId: number;\n      public CardPaymentAccountId: string;\n      public ProcessingTypeValue: number;\n      public CardProcessorStatusValue: number;\n      public LinkedPaymentRefRecId: number;\n      public IsPolicyBypassed: boolean;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.StoreId = \n                odataObject.StoreId;\n              \n            this.TerminalId = \n                odataObject.TerminalId;\n              \n            this.TransactionId = \n                odataObject.TransactionId;\n              \n            this.InternalTransactionId = \n                odataObject.InternalTransactionId;\n              \n            this.RefundableAmount = \n                (odataObject.RefundableAmount != null) ? parseFloat(odataObject.RefundableAmount) : undefined;\n              \n            this.CaptureToken = \n                odataObject.CaptureToken;\n              \n            this.CardToken = \n                odataObject.CardToken;\n              \n            this.Authorization = \n                odataObject.Authorization;\n              \n            this.TransactionStatusValue = \n                odataObject.TransactionStatusValue;\n              \n            this.IncomeExpenseAccountTypeValue = \n                odataObject.IncomeExpenseAccountTypeValue;\n              \n            this.MaskedCardNumber = \n                odataObject.MaskedCardNumber;\n              \n            this.TenderDate = \n                (odataObject.TenderDate instanceof Date) ? odataObject.TenderDate\n                : (odataObject.TenderDate != null) ? jsonLightReadStringPropertyValue(odataObject.TenderDate, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.IsPreProcessed = \n                odataObject.IsPreProcessed;\n              \n            this.IsDeposit = \n                odataObject.IsDeposit;\n              \n            this.IsCustomerAccountFloorLimitUsed = \n                odataObject.IsCustomerAccountFloorLimitUsed;\n              \n            this.AuthorizationReferenceId = \n                odataObject.AuthorizationReferenceId;\n              \n            this.IsIncrementalCaptureEnabled = \n                odataObject.IsIncrementalCaptureEnabled;\n              \n            this.IsReauthorizationEnabled = \n                odataObject.IsReauthorizationEnabled;\n              \n            this.IncrementalOffsetAmount = \n                (odataObject.IncrementalOffsetAmount != null) ? parseFloat(odataObject.IncrementalOffsetAmount) : undefined;\n              \n            this.ChannelId = \n                (odataObject.ChannelId != null) ? parseInt(odataObject.ChannelId, 10) : undefined;\n              \n            this.IsLinkedRefund = \n                odataObject.IsLinkedRefund;\n              \n            this.LinkedPaymentStore = \n                odataObject.LinkedPaymentStore;\n              \n            this.LinkedPaymentTerminalId = \n                odataObject.LinkedPaymentTerminalId;\n              \n            this.LinkedPaymentTransactionId = \n                odataObject.LinkedPaymentTransactionId;\n              \n            this.LinkedPaymentLineNumber = \n                (odataObject.LinkedPaymentLineNumber != null) ? parseFloat(odataObject.LinkedPaymentLineNumber) : undefined;\n              \n            this.LinkedPaymentCurrency = \n                odataObject.LinkedPaymentCurrency;\n              \n            this.RoundingDifference = \n                (odataObject.RoundingDifference != null) ? parseFloat(odataObject.RoundingDifference) : undefined;\n              \n            this.RemainingLinkedRefundAmount = \n                (odataObject.RemainingLinkedRefundAmount != null) ? parseFloat(odataObject.RemainingLinkedRefundAmount) : undefined;\n              \n            this.TenderLineId = \n                odataObject.TenderLineId;\n              \n            this.Amount = \n                (odataObject.Amount != null) ? parseFloat(odataObject.Amount) : undefined;\n              \n            this.CashBackAmount = \n                (odataObject.CashBackAmount != null) ? parseFloat(odataObject.CashBackAmount) : undefined;\n              \n            this.AmountInTenderedCurrency = \n                (odataObject.AmountInTenderedCurrency != null) ? parseFloat(odataObject.AmountInTenderedCurrency) : undefined;\n              \n            this.AmountInCompanyCurrency = \n                (odataObject.AmountInCompanyCurrency != null) ? parseFloat(odataObject.AmountInCompanyCurrency) : undefined;\n              \n            this.Currency = \n                odataObject.Currency;\n              \n            this.ExchangeRate = \n                (odataObject.ExchangeRate != null) ? parseFloat(odataObject.ExchangeRate) : undefined;\n              \n            this.CompanyCurrencyExchangeRate = \n                (odataObject.CompanyCurrencyExchangeRate != null) ? parseFloat(odataObject.CompanyCurrencyExchangeRate) : undefined;\n              \n            this.TenderTypeId = \n                odataObject.TenderTypeId;\n              \n            this.SignatureData = \n                odataObject.SignatureData;\n              \n        this.ReasonCodeLines = undefined;\n        if (odataObject.ReasonCodeLines) {\n        this.ReasonCodeLines = [];\n        for (var i = 0; i < odataObject.ReasonCodeLines.length; i++) {\n        if (odataObject.ReasonCodeLines[i] != null) {\n        if (odataObject.ReasonCodeLines[i]['@odata.type'] != null) {\n          var className: string = odataObject.ReasonCodeLines[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ReasonCodeLines[i] = new entityDictionary[className](odataObject.ReasonCodeLines[i])\n          }\n        } else {\n            this.ReasonCodeLines[i] = new ReasonCodeLineClass(odataObject.ReasonCodeLines[i]);\n        }\n                    } else {\n        this.ReasonCodeLines[i] = undefined;\n        }\n        }\n        }\n      \n            this.LineNumber = \n                (odataObject.LineNumber != null) ? parseFloat(odataObject.LineNumber) : undefined;\n              \n            this.GiftCardId = \n                odataObject.GiftCardId;\n              \n            this.GiftCardPin = \n                odataObject.GiftCardPin;\n              \n            this.GiftCardExpirationYear = \n                odataObject.GiftCardExpirationYear;\n              \n            this.GiftCardExpirationMonth = \n                odataObject.GiftCardExpirationMonth;\n              \n            this.CreditMemoId = \n                odataObject.CreditMemoId;\n              \n            this.CustomerId = \n                odataObject.CustomerId;\n              \n            this.LoyaltyCardId = \n                odataObject.LoyaltyCardId;\n              \n            this.CardTypeId = \n                odataObject.CardTypeId;\n              \n            this.IsChangeLine = \n                odataObject.IsChangeLine;\n              \n            this.IsHistorical = \n                odataObject.IsHistorical;\n              \n            this.IsVoidable = \n                odataObject.IsVoidable;\n              \n            this.StatusValue = \n                odataObject.StatusValue;\n              \n            this.VoidStatusValue = \n                odataObject.VoidStatusValue;\n              \n            this.AuthorizedAmount = \n                (odataObject.AuthorizedAmount != null) ? parseFloat(odataObject.AuthorizedAmount) : undefined;\n              \n            this.PaymentRefRecId = \n                (odataObject.PaymentRefRecId != null) ? parseInt(odataObject.PaymentRefRecId, 10) : undefined;\n              \n            this.CardPaymentAccountId = \n                odataObject.CardPaymentAccountId;\n              \n            this.ProcessingTypeValue = \n                odataObject.ProcessingTypeValue;\n              \n            this.CardProcessorStatusValue = \n                odataObject.CardProcessorStatusValue;\n              \n            this.LinkedPaymentRefRecId = \n                (odataObject.LinkedPaymentRefRecId != null) ? parseInt(odataObject.LinkedPaymentRefRecId, 10) : undefined;\n              \n            this.IsPolicyBypassed = \n                odataObject.IsPolicyBypassed;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['TenderLineClass'] = TenderLineClass;\n    \n      /**\n      * TextValueTranslation entity class.\n      */\n      export class TextValueTranslationClass implements Entities.TextValueTranslation {\n      public Language: string;\n      public Text: string;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.Language = \n                odataObject.Language;\n              \n            this.Text = \n                odataObject.Text;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['TextValueTranslationClass'] = TextValueTranslationClass;\n    \n      /**\n      * UnitOfMeasure entity class.\n      */\n      export class UnitOfMeasureClass implements Entities.UnitOfMeasure {\n      public DecimalPrecision: number;\n      public Symbol: string;\n      public Description: string;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.DecimalPrecision = \n                odataObject.DecimalPrecision;\n              \n            this.Symbol = \n                odataObject.Symbol;\n              \n            this.Description = \n                odataObject.Description;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['UnitOfMeasureClass'] = UnitOfMeasureClass;\n    \n      /**\n      * ProductUnitOfMeasure entity class.\n      */\n      export class ProductUnitOfMeasureClass\n        extends UnitOfMeasureClass\n       implements Entities.ProductUnitOfMeasure {\n      public UnitOfMeasureSourceValue: number;\n      public ProductQuantityLimitRules: Entities.ProductQuantityLimitRule;\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      super(odataObject);odataObject = odataObject || {};\n            this.UnitOfMeasureSourceValue = \n                odataObject.UnitOfMeasureSourceValue;\n              \n        if (odataObject.ProductQuantityLimitRules == null) {\n            this.ProductQuantityLimitRules = undefined;\n        } else if (odataObject.ProductQuantityLimitRules['@odata.type'] == null) {\n            this.ProductQuantityLimitRules = new ProductQuantityLimitRuleClass(odataObject.ProductQuantityLimitRules);\n        } else {\n            var className: string = odataObject.ProductQuantityLimitRules['@odata.type'];\n            className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n            if (entityDictionary[className]) {\n                this.ProductQuantityLimitRules = new entityDictionary[className](odataObject.ProductQuantityLimitRules)\n            }\n        }\n\n      \n        this[\"@odata.type\"] = \"#Microsoft.Dynamics.Commerce.Runtime.DataModel.ProductUnitOfMeasure\";\n      \n      }\n      }\n      entityDictionary['ProductUnitOfMeasureClass'] = ProductUnitOfMeasureClass;\n    \n      /**\n      * RecommendedElement entity class.\n      */\n      export class RecommendedElementClass implements Entities.RecommendedElement {\n      public ElementId: string;\n      public ElementTypeValue: number;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.ElementId = \n                odataObject.ElementId;\n              \n            this.ElementTypeValue = \n                odataObject.ElementTypeValue;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['RecommendedElementClass'] = RecommendedElementClass;\n    \n      /**\n      * RecommendationCriteria entity class.\n      */\n      export class RecommendationCriteriaClass implements Entities.RecommendationCriteria {\n      public CustomerAccountNumber: string;\n      public CatalogId: number;\n      public ProductIds: number[];\n      public CategoryIds: number[];\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.CustomerAccountNumber = \n                odataObject.CustomerAccountNumber;\n              \n            this.CatalogId = \n                (odataObject.CatalogId != null) ? parseInt(odataObject.CatalogId, 10) : undefined;\n              \n        this.ProductIds = undefined;\n        if (odataObject.ProductIds) {\n        this.ProductIds = [];\n        for (var i = 0; i < odataObject.ProductIds.length; i++) {\n        if (odataObject.ProductIds[i] != null) {\n            this.ProductIds[i] = \n                parseInt(odataObject.ProductIds[i], 10);\n                            } else {\n        this.ProductIds[i] = undefined;\n        }\n        }\n        }\n      \n        this.CategoryIds = undefined;\n        if (odataObject.CategoryIds) {\n        this.CategoryIds = [];\n        for (var i = 0; i < odataObject.CategoryIds.length; i++) {\n        if (odataObject.CategoryIds[i] != null) {\n            this.CategoryIds[i] = \n                parseInt(odataObject.CategoryIds[i], 10);\n                            } else {\n        this.CategoryIds[i] = undefined;\n        }\n        }\n        }\n      \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['RecommendationCriteriaClass'] = RecommendationCriteriaClass;\n    \n      /**\n      * ProductListLine entity class.\n      */\n      export class ProductListLineClass implements Entities.ProductListLine {\n      public ProductListId: string;\n      public LineId: string;\n      public ProductId: number;\n      public Quantity: number;\n      public UnitOfMeasure: string;\n      public CreatedDateTime: Date;\n      public LastUpdated: Date;\n      public DeletedDateTime: Date;\n      public DataAreaId: string;\n      public CatalogId: number;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.ProductListId = \n                odataObject.ProductListId;\n              \n            this.LineId = \n                odataObject.LineId;\n              \n            this.ProductId = \n                (odataObject.ProductId != null) ? parseInt(odataObject.ProductId, 10) : undefined;\n              \n            this.Quantity = \n                (odataObject.Quantity != null) ? parseFloat(odataObject.Quantity) : undefined;\n              \n            this.UnitOfMeasure = \n                odataObject.UnitOfMeasure;\n              \n            this.CreatedDateTime = \n                (odataObject.CreatedDateTime instanceof Date) ? odataObject.CreatedDateTime\n                : (odataObject.CreatedDateTime != null) ? jsonLightReadStringPropertyValue(odataObject.CreatedDateTime, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.LastUpdated = \n                (odataObject.LastUpdated instanceof Date) ? odataObject.LastUpdated\n                : (odataObject.LastUpdated != null) ? jsonLightReadStringPropertyValue(odataObject.LastUpdated, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.DeletedDateTime = \n                (odataObject.DeletedDateTime instanceof Date) ? odataObject.DeletedDateTime\n                : (odataObject.DeletedDateTime != null) ? jsonLightReadStringPropertyValue(odataObject.DeletedDateTime, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.DataAreaId = \n                odataObject.DataAreaId;\n              \n            this.CatalogId = \n                (odataObject.CatalogId != null) ? parseInt(odataObject.CatalogId, 10) : undefined;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['ProductListLineClass'] = ProductListLineClass;\n    \n      /**\n      * CommerceListLine entity class.\n      */\n      export class CommerceListLineClass implements Entities.CommerceListLine {\n      public CommerceListId: number;\n      public LineId: number;\n      public CustomerId: string;\n      public CustomerName: string;\n      public ProductId: number;\n      public Quantity: number;\n      public UnitOfMeasure: string;\n      public IsFavorite: boolean;\n      public IsRecurring: boolean;\n      public IsPrivate: boolean;\n      public CreatedDateTime: Date;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.CommerceListId = \n                (odataObject.CommerceListId != null) ? parseInt(odataObject.CommerceListId, 10) : undefined;\n              \n            this.LineId = \n                (odataObject.LineId != null) ? parseInt(odataObject.LineId, 10) : undefined;\n              \n            this.CustomerId = \n                odataObject.CustomerId;\n              \n            this.CustomerName = \n                odataObject.CustomerName;\n              \n            this.ProductId = \n                (odataObject.ProductId != null) ? parseInt(odataObject.ProductId, 10) : undefined;\n              \n            this.Quantity = \n                (odataObject.Quantity != null) ? parseFloat(odataObject.Quantity) : undefined;\n              \n            this.UnitOfMeasure = \n                odataObject.UnitOfMeasure;\n              \n            this.IsFavorite = \n                odataObject.IsFavorite;\n              \n            this.IsRecurring = \n                odataObject.IsRecurring;\n              \n            this.IsPrivate = \n                odataObject.IsPrivate;\n              \n            this.CreatedDateTime = \n                (odataObject.CreatedDateTime instanceof Date) ? odataObject.CreatedDateTime\n                : (odataObject.CreatedDateTime != null) ? jsonLightReadStringPropertyValue(odataObject.CreatedDateTime, \"Edm.DateTimeOffset\", false) : undefined;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['CommerceListLineClass'] = CommerceListLineClass;\n    \n      /**\n      * CommerceListContributor entity class.\n      */\n      export class CommerceListContributorClass implements Entities.CommerceListContributor {\n      public RecordId: number;\n      public CustomerId: string;\n      public CustomerName: string;\n      public InvitationId: number;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.RecordId = \n                (odataObject.RecordId != null) ? parseInt(odataObject.RecordId, 10) : undefined;\n              \n            this.CustomerId = \n                odataObject.CustomerId;\n              \n            this.CustomerName = \n                odataObject.CustomerName;\n              \n            this.InvitationId = \n                (odataObject.InvitationId != null) ? parseInt(odataObject.InvitationId, 10) : undefined;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['CommerceListContributorClass'] = CommerceListContributorClass;\n    \n      /**\n      * CommerceListInvitation entity class.\n      */\n      export class CommerceListInvitationClass implements Entities.CommerceListInvitation {\n      public RecordId: number;\n      public Invitee: string;\n      public IsSent: boolean;\n      public LastRequestDateTime: Date;\n      public LastSentDateTime: Date;\n      public StatusValue: number;\n      public Token: string;\n      public InvitationTypeValue: number;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.RecordId = \n                (odataObject.RecordId != null) ? parseInt(odataObject.RecordId, 10) : undefined;\n              \n            this.Invitee = \n                odataObject.Invitee;\n              \n            this.IsSent = \n                odataObject.IsSent;\n              \n            this.LastRequestDateTime = \n                (odataObject.LastRequestDateTime instanceof Date) ? odataObject.LastRequestDateTime\n                : (odataObject.LastRequestDateTime != null) ? jsonLightReadStringPropertyValue(odataObject.LastRequestDateTime, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.LastSentDateTime = \n                (odataObject.LastSentDateTime instanceof Date) ? odataObject.LastSentDateTime\n                : (odataObject.LastSentDateTime != null) ? jsonLightReadStringPropertyValue(odataObject.LastSentDateTime, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.StatusValue = \n                odataObject.StatusValue;\n              \n            this.Token = \n                odataObject.Token;\n              \n            this.InvitationTypeValue = \n                odataObject.InvitationTypeValue;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['CommerceListInvitationClass'] = CommerceListInvitationClass;\n    \n      /**\n      * SearchFilter entity class.\n      */\n      export class SearchFilterClass implements Entities.SearchFilter {\n      public Key: string;\n      public FilterTypeValue: number;\n      public SearchValues: Entities.SearchFilterValue[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.Key = \n                odataObject.Key;\n              \n            this.FilterTypeValue = \n                odataObject.FilterTypeValue;\n              \n        this.SearchValues = undefined;\n        if (odataObject.SearchValues) {\n        this.SearchValues = [];\n        for (var i = 0; i < odataObject.SearchValues.length; i++) {\n        if (odataObject.SearchValues[i] != null) {\n        if (odataObject.SearchValues[i]['@odata.type'] != null) {\n          var className: string = odataObject.SearchValues[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.SearchValues[i] = new entityDictionary[className](odataObject.SearchValues[i])\n          }\n        } else {\n            this.SearchValues[i] = new SearchFilterValueClass(odataObject.SearchValues[i]);\n        }\n                    } else {\n        this.SearchValues[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['SearchFilterClass'] = SearchFilterClass;\n    \n      /**\n      * SearchFilterValue entity class.\n      */\n      export class SearchFilterValueClass implements Entities.SearchFilterValue {\n      public Value: Entities.CommercePropertyValue;\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n        if (odataObject.Value == null) {\n            this.Value = undefined;\n        } else if (odataObject.Value['@odata.type'] == null) {\n            this.Value = new CommercePropertyValueClass(odataObject.Value);\n        } else {\n            var className: string = odataObject.Value['@odata.type'];\n            className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n            if (entityDictionary[className]) {\n                this.Value = new entityDictionary[className](odataObject.Value)\n            }\n        }\n\n      \n      }\n      }\n      entityDictionary['SearchFilterValueClass'] = SearchFilterValueClass;\n    \n      /**\n      * TransactionSearchCriteria entity class.\n      */\n      export class TransactionSearchCriteriaClass implements Entities.TransactionSearchCriteria {\n      public TransactionIds: string[];\n      public SalesId: string;\n      public ReceiptId: string;\n      public ChannelReferenceId: string;\n      public CustomerAccountNumber: string;\n      public CustomerFirstName: string;\n      public CustomerLastName: string;\n      public StoreId: string;\n      public TerminalId: string;\n      public ItemId: string;\n      public Barcode: string;\n      public SerialNumber: string;\n      public StaffId: string;\n      public StartDateTime: Date;\n      public EndDateTime: Date;\n      public ReceiptEmailAddress: string;\n      public SearchIdentifiers: string;\n      public SearchLocationTypeValue: number;\n      public CustomFilters: Entities.SearchFilter[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n        this.TransactionIds = undefined;\n        if (odataObject.TransactionIds) {\n        this.TransactionIds = [];\n        for (var i = 0; i < odataObject.TransactionIds.length; i++) {\n        if (odataObject.TransactionIds[i] != null) {\n            this.TransactionIds[i] = \n                odataObject.TransactionIds[i];\n                            } else {\n        this.TransactionIds[i] = undefined;\n        }\n        }\n        }\n      \n            this.SalesId = \n                odataObject.SalesId;\n              \n            this.ReceiptId = \n                odataObject.ReceiptId;\n              \n            this.ChannelReferenceId = \n                odataObject.ChannelReferenceId;\n              \n            this.CustomerAccountNumber = \n                odataObject.CustomerAccountNumber;\n              \n            this.CustomerFirstName = \n                odataObject.CustomerFirstName;\n              \n            this.CustomerLastName = \n                odataObject.CustomerLastName;\n              \n            this.StoreId = \n                odataObject.StoreId;\n              \n            this.TerminalId = \n                odataObject.TerminalId;\n              \n            this.ItemId = \n                odataObject.ItemId;\n              \n            this.Barcode = \n                odataObject.Barcode;\n              \n            this.SerialNumber = \n                odataObject.SerialNumber;\n              \n            this.StaffId = \n                odataObject.StaffId;\n              \n            this.StartDateTime = \n                (odataObject.StartDateTime instanceof Date) ? odataObject.StartDateTime\n                : (odataObject.StartDateTime != null) ? jsonLightReadStringPropertyValue(odataObject.StartDateTime, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.EndDateTime = \n                (odataObject.EndDateTime instanceof Date) ? odataObject.EndDateTime\n                : (odataObject.EndDateTime != null) ? jsonLightReadStringPropertyValue(odataObject.EndDateTime, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.ReceiptEmailAddress = \n                odataObject.ReceiptEmailAddress;\n              \n            this.SearchIdentifiers = \n                odataObject.SearchIdentifiers;\n              \n            this.SearchLocationTypeValue = \n                odataObject.SearchLocationTypeValue;\n              \n        this.CustomFilters = undefined;\n        if (odataObject.CustomFilters) {\n        this.CustomFilters = [];\n        for (var i = 0; i < odataObject.CustomFilters.length; i++) {\n        if (odataObject.CustomFilters[i] != null) {\n        if (odataObject.CustomFilters[i]['@odata.type'] != null) {\n          var className: string = odataObject.CustomFilters[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.CustomFilters[i] = new entityDictionary[className](odataObject.CustomFilters[i])\n          }\n        } else {\n            this.CustomFilters[i] = new SearchFilterClass(odataObject.CustomFilters[i]);\n        }\n                    } else {\n        this.CustomFilters[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['TransactionSearchCriteriaClass'] = TransactionSearchCriteriaClass;\n    \n      /**\n      * SalesOrderSearchCriteria entity class.\n      */\n      export class SalesOrderSearchCriteriaClass implements Entities.SalesOrderSearchCriteria {\n      public TransactionIds: string[];\n      public SalesId: string;\n      public ReceiptId: string;\n      public ChannelReferenceId: string;\n      public CustomerAccountNumber: string;\n      public CustomerFirstName: string;\n      public CustomerLastName: string;\n      public StoreId: string;\n      public TerminalId: string;\n      public ItemId: string;\n      public Barcode: string;\n      public SerialNumber: string;\n      public StaffId: string;\n      public SearchTypeValue: number;\n      public StartDateTime: Date;\n      public EndDateTime: Date;\n      public IncludeDetails: boolean;\n      public ReceiptEmailAddress: string;\n      public SearchIdentifiers: string;\n      public SalesTransactionTypeValues: number[];\n      public SearchLocationTypeValue: number;\n      public TransactionStatusTypeValues: number[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n        this.TransactionIds = undefined;\n        if (odataObject.TransactionIds) {\n        this.TransactionIds = [];\n        for (var i = 0; i < odataObject.TransactionIds.length; i++) {\n        if (odataObject.TransactionIds[i] != null) {\n            this.TransactionIds[i] = \n                odataObject.TransactionIds[i];\n                            } else {\n        this.TransactionIds[i] = undefined;\n        }\n        }\n        }\n      \n            this.SalesId = \n                odataObject.SalesId;\n              \n            this.ReceiptId = \n                odataObject.ReceiptId;\n              \n            this.ChannelReferenceId = \n                odataObject.ChannelReferenceId;\n              \n            this.CustomerAccountNumber = \n                odataObject.CustomerAccountNumber;\n              \n            this.CustomerFirstName = \n                odataObject.CustomerFirstName;\n              \n            this.CustomerLastName = \n                odataObject.CustomerLastName;\n              \n            this.StoreId = \n                odataObject.StoreId;\n              \n            this.TerminalId = \n                odataObject.TerminalId;\n              \n            this.ItemId = \n                odataObject.ItemId;\n              \n            this.Barcode = \n                odataObject.Barcode;\n              \n            this.SerialNumber = \n                odataObject.SerialNumber;\n              \n            this.StaffId = \n                odataObject.StaffId;\n              \n            this.SearchTypeValue = \n                odataObject.SearchTypeValue;\n              \n            this.StartDateTime = \n                (odataObject.StartDateTime instanceof Date) ? odataObject.StartDateTime\n                : (odataObject.StartDateTime != null) ? jsonLightReadStringPropertyValue(odataObject.StartDateTime, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.EndDateTime = \n                (odataObject.EndDateTime instanceof Date) ? odataObject.EndDateTime\n                : (odataObject.EndDateTime != null) ? jsonLightReadStringPropertyValue(odataObject.EndDateTime, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.IncludeDetails = \n                odataObject.IncludeDetails;\n              \n            this.ReceiptEmailAddress = \n                odataObject.ReceiptEmailAddress;\n              \n            this.SearchIdentifiers = \n                odataObject.SearchIdentifiers;\n              \n        this.SalesTransactionTypeValues = undefined;\n        if (odataObject.SalesTransactionTypeValues) {\n        this.SalesTransactionTypeValues = [];\n        for (var i = 0; i < odataObject.SalesTransactionTypeValues.length; i++) {\n        if (odataObject.SalesTransactionTypeValues[i] != null) {\n            this.SalesTransactionTypeValues[i] = \n                odataObject.SalesTransactionTypeValues[i];\n                            } else {\n        this.SalesTransactionTypeValues[i] = undefined;\n        }\n        }\n        }\n      \n            this.SearchLocationTypeValue = \n                odataObject.SearchLocationTypeValue;\n              \n        this.TransactionStatusTypeValues = undefined;\n        if (odataObject.TransactionStatusTypeValues) {\n        this.TransactionStatusTypeValues = [];\n        for (var i = 0; i < odataObject.TransactionStatusTypeValues.length; i++) {\n        if (odataObject.TransactionStatusTypeValues[i] != null) {\n            this.TransactionStatusTypeValues[i] = \n                odataObject.TransactionStatusTypeValues[i];\n                            } else {\n        this.TransactionStatusTypeValues[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['SalesOrderSearchCriteriaClass'] = SalesOrderSearchCriteriaClass;\n    \n      /**\n      * SearchStoreCriteria entity class.\n      */\n      export class SearchStoreCriteriaClass implements Entities.SearchStoreCriteria {\n      public ChannelId: number;\n      public StoreNumber: string;\n      public InventoryLocationId: string;\n      public ChannelTypeValue: number;\n      public OnlineStoreCustomerTypeValue: number;\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.ChannelId = \n                (odataObject.ChannelId != null) ? parseInt(odataObject.ChannelId, 10) : undefined;\n              \n            this.StoreNumber = \n                odataObject.StoreNumber;\n              \n            this.InventoryLocationId = \n                odataObject.InventoryLocationId;\n              \n            this.ChannelTypeValue = \n                odataObject.ChannelTypeValue;\n              \n            this.OnlineStoreCustomerTypeValue = \n                odataObject.OnlineStoreCustomerTypeValue;\n              \n      }\n      }\n      entityDictionary['SearchStoreCriteriaClass'] = SearchStoreCriteriaClass;\n    \n      /**\n      * CustomerSearchCriteria entity class.\n      */\n      export class CustomerSearchCriteriaClass implements Entities.CustomerSearchCriteria {\n      public Keyword: string;\n      public SearchOnlyCurrentCompany: boolean;\n      public SearchLocationValue: number;\n      public Refinements: Entities.CustomerRefinerValue[];\n      public DataLevelValue: number;\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.Keyword = \n                odataObject.Keyword;\n              \n            this.SearchOnlyCurrentCompany = \n                odataObject.SearchOnlyCurrentCompany;\n              \n            this.SearchLocationValue = \n                odataObject.SearchLocationValue;\n              \n        this.Refinements = undefined;\n        if (odataObject.Refinements) {\n        this.Refinements = [];\n        for (var i = 0; i < odataObject.Refinements.length; i++) {\n        if (odataObject.Refinements[i] != null) {\n        if (odataObject.Refinements[i]['@odata.type'] != null) {\n          var className: string = odataObject.Refinements[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.Refinements[i] = new entityDictionary[className](odataObject.Refinements[i])\n          }\n        } else {\n            this.Refinements[i] = new CustomerRefinerValueClass(odataObject.Refinements[i]);\n        }\n                    } else {\n        this.Refinements[i] = undefined;\n        }\n        }\n        }\n      \n            this.DataLevelValue = \n                odataObject.DataLevelValue;\n              \n      }\n      }\n      entityDictionary['CustomerSearchCriteriaClass'] = CustomerSearchCriteriaClass;\n    \n      /**\n      * ProductPrice entity class.\n      */\n      export class ProductPriceClass implements Entities.ProductPrice {\n      public ProductId: number;\n      public ListingId: number;\n      public BasePrice: number;\n      public TradeAgreementPrice: number;\n      public AdjustedPrice: number;\n      public MaxVariantPrice: number;\n      public MinVariantPrice: number;\n      public CustomerContextualPrice: number;\n      public DiscountAmount: number;\n      public CurrencyCode: string;\n      public ItemId: string;\n      public InventoryDimensionId: string;\n      public UnitOfMeasure: string;\n      public ValidFrom: Date;\n      public ProductLookupId: number;\n      public ChannelId: number;\n      public CatalogId: number;\n      public DiscountLines: Entities.DiscountLine[];\n      public SalesAgreementPrice: number;\n      public PriceSourceTypeValue: number;\n      public AttainablePriceLines: Entities.PriceLine[];\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.ProductId = \n                (odataObject.ProductId != null) ? parseInt(odataObject.ProductId, 10) : undefined;\n              \n            this.ListingId = \n                (odataObject.ListingId != null) ? parseInt(odataObject.ListingId, 10) : undefined;\n              \n            this.BasePrice = \n                (odataObject.BasePrice != null) ? parseFloat(odataObject.BasePrice) : undefined;\n              \n            this.TradeAgreementPrice = \n                (odataObject.TradeAgreementPrice != null) ? parseFloat(odataObject.TradeAgreementPrice) : undefined;\n              \n            this.AdjustedPrice = \n                (odataObject.AdjustedPrice != null) ? parseFloat(odataObject.AdjustedPrice) : undefined;\n              \n            this.MaxVariantPrice = \n                (odataObject.MaxVariantPrice != null) ? parseFloat(odataObject.MaxVariantPrice) : undefined;\n              \n            this.MinVariantPrice = \n                (odataObject.MinVariantPrice != null) ? parseFloat(odataObject.MinVariantPrice) : undefined;\n              \n            this.CustomerContextualPrice = \n                (odataObject.CustomerContextualPrice != null) ? parseFloat(odataObject.CustomerContextualPrice) : undefined;\n              \n            this.DiscountAmount = \n                (odataObject.DiscountAmount != null) ? parseFloat(odataObject.DiscountAmount) : undefined;\n              \n            this.CurrencyCode = \n                odataObject.CurrencyCode;\n              \n            this.ItemId = \n                odataObject.ItemId;\n              \n            this.InventoryDimensionId = \n                odataObject.InventoryDimensionId;\n              \n            this.UnitOfMeasure = \n                odataObject.UnitOfMeasure;\n              \n            this.ValidFrom = \n                (odataObject.ValidFrom instanceof Date) ? odataObject.ValidFrom\n                : (odataObject.ValidFrom != null) ? jsonLightReadStringPropertyValue(odataObject.ValidFrom, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.ProductLookupId = \n                (odataObject.ProductLookupId != null) ? parseInt(odataObject.ProductLookupId, 10) : undefined;\n              \n            this.ChannelId = \n                (odataObject.ChannelId != null) ? parseInt(odataObject.ChannelId, 10) : undefined;\n              \n            this.CatalogId = \n                (odataObject.CatalogId != null) ? parseInt(odataObject.CatalogId, 10) : undefined;\n              \n        this.DiscountLines = undefined;\n        if (odataObject.DiscountLines) {\n        this.DiscountLines = [];\n        for (var i = 0; i < odataObject.DiscountLines.length; i++) {\n        if (odataObject.DiscountLines[i] != null) {\n        if (odataObject.DiscountLines[i]['@odata.type'] != null) {\n          var className: string = odataObject.DiscountLines[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.DiscountLines[i] = new entityDictionary[className](odataObject.DiscountLines[i])\n          }\n        } else {\n            this.DiscountLines[i] = new DiscountLineClass(odataObject.DiscountLines[i]);\n        }\n                    } else {\n        this.DiscountLines[i] = undefined;\n        }\n        }\n        }\n      \n            this.SalesAgreementPrice = \n                (odataObject.SalesAgreementPrice != null) ? parseFloat(odataObject.SalesAgreementPrice) : undefined;\n              \n            this.PriceSourceTypeValue = \n                odataObject.PriceSourceTypeValue;\n              \n        this.AttainablePriceLines = undefined;\n        if (odataObject.AttainablePriceLines) {\n        this.AttainablePriceLines = [];\n        for (var i = 0; i < odataObject.AttainablePriceLines.length; i++) {\n        if (odataObject.AttainablePriceLines[i] != null) {\n        if (odataObject.AttainablePriceLines[i]['@odata.type'] != null) {\n          var className: string = odataObject.AttainablePriceLines[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.AttainablePriceLines[i] = new entityDictionary[className](odataObject.AttainablePriceLines[i])\n          }\n        } else {\n            this.AttainablePriceLines[i] = new PriceLineClass(odataObject.AttainablePriceLines[i]);\n        }\n                    } else {\n        this.AttainablePriceLines[i] = undefined;\n        }\n        }\n        }\n      \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['ProductPriceClass'] = ProductPriceClass;\n    \n      /**\n      * OrgUnitAvailability entity class.\n      */\n      export class OrgUnitAvailabilityClass implements Entities.OrgUnitAvailability {\n      public OrgUnitLocation: Entities.OrgUnitLocation;\n      public ItemAvailabilities: Entities.ItemAvailability[];\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n        if (odataObject.OrgUnitLocation == null) {\n            this.OrgUnitLocation = undefined;\n        } else if (odataObject.OrgUnitLocation['@odata.type'] == null) {\n            this.OrgUnitLocation = new OrgUnitLocationClass(odataObject.OrgUnitLocation);\n        } else {\n            var className: string = odataObject.OrgUnitLocation['@odata.type'];\n            className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n            if (entityDictionary[className]) {\n                this.OrgUnitLocation = new entityDictionary[className](odataObject.OrgUnitLocation)\n            }\n        }\n\n      \n        this.ItemAvailabilities = undefined;\n        if (odataObject.ItemAvailabilities) {\n        this.ItemAvailabilities = [];\n        for (var i = 0; i < odataObject.ItemAvailabilities.length; i++) {\n        if (odataObject.ItemAvailabilities[i] != null) {\n        if (odataObject.ItemAvailabilities[i]['@odata.type'] != null) {\n          var className: string = odataObject.ItemAvailabilities[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ItemAvailabilities[i] = new entityDictionary[className](odataObject.ItemAvailabilities[i])\n          }\n        } else {\n            this.ItemAvailabilities[i] = new ItemAvailabilityClass(odataObject.ItemAvailabilities[i]);\n        }\n                    } else {\n        this.ItemAvailabilities[i] = undefined;\n        }\n        }\n        }\n      \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['OrgUnitAvailabilityClass'] = OrgUnitAvailabilityClass;\n    \n      /**\n      * ProductVariantPropertySet entity class.\n      */\n      export class ProductVariantPropertySetClass implements Entities.ProductVariantPropertySet {\n      public VariantId: number;\n      public ProductVariantPropertiesAsList: Entities.ProductPropertyTranslation[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.VariantId = \n                (odataObject.VariantId != null) ? parseInt(odataObject.VariantId, 10) : undefined;\n              \n        this.ProductVariantPropertiesAsList = undefined;\n        if (odataObject.ProductVariantPropertiesAsList) {\n        this.ProductVariantPropertiesAsList = [];\n        for (var i = 0; i < odataObject.ProductVariantPropertiesAsList.length; i++) {\n        if (odataObject.ProductVariantPropertiesAsList[i] != null) {\n        if (odataObject.ProductVariantPropertiesAsList[i]['@odata.type'] != null) {\n          var className: string = odataObject.ProductVariantPropertiesAsList[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ProductVariantPropertiesAsList[i] = new entityDictionary[className](odataObject.ProductVariantPropertiesAsList[i])\n          }\n        } else {\n            this.ProductVariantPropertiesAsList[i] = new ProductPropertyTranslationClass(odataObject.ProductVariantPropertiesAsList[i]);\n        }\n                    } else {\n        this.ProductVariantPropertiesAsList[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['ProductVariantPropertySetClass'] = ProductVariantPropertySetClass;\n    \n      /**\n      * PurchaseOrderLine entity class.\n      */\n      export class PurchaseOrderLineClass implements Entities.PurchaseOrderLine {\n      public RecordId: number;\n      public OrderId: string;\n      public ProductRecordId: number;\n      public ItemId: string;\n      public ItemName: string;\n      public InventDimId: string;\n      public QuantityOrdered: number;\n      public PurchaseQuantity: number;\n      public PurchaseUnit: string;\n      public PurchaseReceived: number;\n      public PurchaseReceivedNow: number;\n      public InventBatchId: string;\n      public WMSLocationId: string;\n      public WMSPalletId: string;\n      public InventoryStatus: string;\n      public LicensePlate: string;\n      public InventSiteId: string;\n      public InventLocationId: string;\n      public ConfigId: string;\n      public InventSerialId: string;\n      public InventSizeId: string;\n      public InventColorId: string;\n      public InventStyleId: string;\n      public IsCommitted: boolean;\n      public Message: string;\n      public UniqueIdentifier: string;\n      public DeliveryMethod: string;\n      public DataAreaId: string;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.RecordId = \n                (odataObject.RecordId != null) ? parseInt(odataObject.RecordId, 10) : undefined;\n              \n            this.OrderId = \n                odataObject.OrderId;\n              \n            this.ProductRecordId = \n                (odataObject.ProductRecordId != null) ? parseInt(odataObject.ProductRecordId, 10) : undefined;\n              \n            this.ItemId = \n                odataObject.ItemId;\n              \n            this.ItemName = \n                odataObject.ItemName;\n              \n            this.InventDimId = \n                odataObject.InventDimId;\n              \n            this.QuantityOrdered = \n                (odataObject.QuantityOrdered != null) ? parseFloat(odataObject.QuantityOrdered) : undefined;\n              \n            this.PurchaseQuantity = \n                (odataObject.PurchaseQuantity != null) ? parseFloat(odataObject.PurchaseQuantity) : undefined;\n              \n            this.PurchaseUnit = \n                odataObject.PurchaseUnit;\n              \n            this.PurchaseReceived = \n                (odataObject.PurchaseReceived != null) ? parseFloat(odataObject.PurchaseReceived) : undefined;\n              \n            this.PurchaseReceivedNow = \n                (odataObject.PurchaseReceivedNow != null) ? parseFloat(odataObject.PurchaseReceivedNow) : undefined;\n              \n            this.InventBatchId = \n                odataObject.InventBatchId;\n              \n            this.WMSLocationId = \n                odataObject.WMSLocationId;\n              \n            this.WMSPalletId = \n                odataObject.WMSPalletId;\n              \n            this.InventoryStatus = \n                odataObject.InventoryStatus;\n              \n            this.LicensePlate = \n                odataObject.LicensePlate;\n              \n            this.InventSiteId = \n                odataObject.InventSiteId;\n              \n            this.InventLocationId = \n                odataObject.InventLocationId;\n              \n            this.ConfigId = \n                odataObject.ConfigId;\n              \n            this.InventSerialId = \n                odataObject.InventSerialId;\n              \n            this.InventSizeId = \n                odataObject.InventSizeId;\n              \n            this.InventColorId = \n                odataObject.InventColorId;\n              \n            this.InventStyleId = \n                odataObject.InventStyleId;\n              \n            this.IsCommitted = \n                odataObject.IsCommitted;\n              \n            this.Message = \n                odataObject.Message;\n              \n            this.UniqueIdentifier = \n                odataObject.UniqueIdentifier;\n              \n            this.DeliveryMethod = \n                odataObject.DeliveryMethod;\n              \n            this.DataAreaId = \n                odataObject.DataAreaId;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['PurchaseOrderLineClass'] = PurchaseOrderLineClass;\n    \n      /**\n      * TransferOrderLine entity class.\n      */\n      export class TransferOrderLineClass implements Entities.TransferOrderLine {\n      public RecordId: number;\n      public OrderId: string;\n      public ProductRecordId: number;\n      public ItemId: string;\n      public ItemName: string;\n      public InventDimId: string;\n      public QuantityTransferred: number;\n      public QuantityShipped: number;\n      public QuantityReceived: number;\n      public QuantityShipNow: number;\n      public QuantityReceiveNow: number;\n      public QuantityRemainShip: number;\n      public QuantityRemainReceive: number;\n      public PurchaseUnit: string;\n      public InventBatchId: string;\n      public WMSLocationId: string;\n      public WMSPalletId: string;\n      public InventoryStatus: string;\n      public LicensePlate: string;\n      public InventSiteId: string;\n      public InventLocationId: string;\n      public ConfigId: string;\n      public InventSerialId: string;\n      public InventSizeId: string;\n      public InventColorId: string;\n      public InventStyleId: string;\n      public IsCommitted: boolean;\n      public Message: string;\n      public Guid: string;\n      public DeliveryMethod: string;\n      public DataAreaId: string;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.RecordId = \n                (odataObject.RecordId != null) ? parseInt(odataObject.RecordId, 10) : undefined;\n              \n            this.OrderId = \n                odataObject.OrderId;\n              \n            this.ProductRecordId = \n                (odataObject.ProductRecordId != null) ? parseInt(odataObject.ProductRecordId, 10) : undefined;\n              \n            this.ItemId = \n                odataObject.ItemId;\n              \n            this.ItemName = \n                odataObject.ItemName;\n              \n            this.InventDimId = \n                odataObject.InventDimId;\n              \n            this.QuantityTransferred = \n                (odataObject.QuantityTransferred != null) ? parseFloat(odataObject.QuantityTransferred) : undefined;\n              \n            this.QuantityShipped = \n                (odataObject.QuantityShipped != null) ? parseFloat(odataObject.QuantityShipped) : undefined;\n              \n            this.QuantityReceived = \n                (odataObject.QuantityReceived != null) ? parseFloat(odataObject.QuantityReceived) : undefined;\n              \n            this.QuantityShipNow = \n                (odataObject.QuantityShipNow != null) ? parseFloat(odataObject.QuantityShipNow) : undefined;\n              \n            this.QuantityReceiveNow = \n                (odataObject.QuantityReceiveNow != null) ? parseFloat(odataObject.QuantityReceiveNow) : undefined;\n              \n            this.QuantityRemainShip = \n                (odataObject.QuantityRemainShip != null) ? parseFloat(odataObject.QuantityRemainShip) : undefined;\n              \n            this.QuantityRemainReceive = \n                (odataObject.QuantityRemainReceive != null) ? parseFloat(odataObject.QuantityRemainReceive) : undefined;\n              \n            this.PurchaseUnit = \n                odataObject.PurchaseUnit;\n              \n            this.InventBatchId = \n                odataObject.InventBatchId;\n              \n            this.WMSLocationId = \n                odataObject.WMSLocationId;\n              \n            this.WMSPalletId = \n                odataObject.WMSPalletId;\n              \n            this.InventoryStatus = \n                odataObject.InventoryStatus;\n              \n            this.LicensePlate = \n                odataObject.LicensePlate;\n              \n            this.InventSiteId = \n                odataObject.InventSiteId;\n              \n            this.InventLocationId = \n                odataObject.InventLocationId;\n              \n            this.ConfigId = \n                odataObject.ConfigId;\n              \n            this.InventSerialId = \n                odataObject.InventSerialId;\n              \n            this.InventSizeId = \n                odataObject.InventSizeId;\n              \n            this.InventColorId = \n                odataObject.InventColorId;\n              \n            this.InventStyleId = \n                odataObject.InventStyleId;\n              \n            this.IsCommitted = \n                odataObject.IsCommitted;\n              \n            this.Message = \n                odataObject.Message;\n              \n            this.Guid = \n                odataObject.Guid;\n              \n            this.DeliveryMethod = \n                odataObject.DeliveryMethod;\n              \n            this.DataAreaId = \n                odataObject.DataAreaId;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['TransferOrderLineClass'] = TransferOrderLineClass;\n    \n      /**\n      * TransferOrderJournal entity class.\n      */\n      export class TransferOrderJournalClass implements Entities.TransferOrderJournal {\n      public OrderId: string;\n      public VoucherId: string;\n      public UpdatedByWorker: string;\n      public InventLocationIdFrom: string;\n      public InventLocationIdTo: string;\n      public QuantityShipped: number;\n      public PostingDate: Date;\n      public DeliveryMode: string;\n      public Comments: string;\n      public JournalLines: Entities.TransferOrderJournalLine[];\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.OrderId = \n                odataObject.OrderId;\n              \n            this.VoucherId = \n                odataObject.VoucherId;\n              \n            this.UpdatedByWorker = \n                odataObject.UpdatedByWorker;\n              \n            this.InventLocationIdFrom = \n                odataObject.InventLocationIdFrom;\n              \n            this.InventLocationIdTo = \n                odataObject.InventLocationIdTo;\n              \n            this.QuantityShipped = \n                (odataObject.QuantityShipped != null) ? parseFloat(odataObject.QuantityShipped) : undefined;\n              \n            this.PostingDate = \n                (odataObject.PostingDate instanceof Date) ? odataObject.PostingDate\n                : (odataObject.PostingDate != null) ? jsonLightReadStringPropertyValue(odataObject.PostingDate, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.DeliveryMode = \n                odataObject.DeliveryMode;\n              \n            this.Comments = \n                odataObject.Comments;\n              \n        this.JournalLines = undefined;\n        if (odataObject.JournalLines) {\n        this.JournalLines = [];\n        for (var i = 0; i < odataObject.JournalLines.length; i++) {\n        if (odataObject.JournalLines[i] != null) {\n        if (odataObject.JournalLines[i]['@odata.type'] != null) {\n          var className: string = odataObject.JournalLines[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.JournalLines[i] = new entityDictionary[className](odataObject.JournalLines[i])\n          }\n        } else {\n            this.JournalLines[i] = new TransferOrderJournalLineClass(odataObject.JournalLines[i]);\n        }\n                    } else {\n        this.JournalLines[i] = undefined;\n        }\n        }\n        }\n      \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['TransferOrderJournalClass'] = TransferOrderJournalClass;\n    \n      /**\n      * PickingListLine entity class.\n      */\n      export class PickingListLineClass implements Entities.PickingListLine {\n      public RecordId: number;\n      public OrderId: string;\n      public ProductRecordId: number;\n      public ItemId: string;\n      public ItemName: string;\n      public InventDimId: string;\n      public QuantityOrdered: number;\n      public PurchaseReceivedNow: number;\n      public InventBatchId: string;\n      public WMSLocationId: string;\n      public WMSPalletId: string;\n      public InventoryStatus: string;\n      public LicensePlate: string;\n      public InventSiteId: string;\n      public InventLocationId: string;\n      public ConfigId: string;\n      public InventSerialId: string;\n      public InventSizeId: string;\n      public InventColorId: string;\n      public InventStyleId: string;\n      public IsCommitted: boolean;\n      public Message: string;\n      public Guid: string;\n      public DeliveryMethod: string;\n      public DataAreaId: string;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.RecordId = \n                (odataObject.RecordId != null) ? parseInt(odataObject.RecordId, 10) : undefined;\n              \n            this.OrderId = \n                odataObject.OrderId;\n              \n            this.ProductRecordId = \n                (odataObject.ProductRecordId != null) ? parseInt(odataObject.ProductRecordId, 10) : undefined;\n              \n            this.ItemId = \n                odataObject.ItemId;\n              \n            this.ItemName = \n                odataObject.ItemName;\n              \n            this.InventDimId = \n                odataObject.InventDimId;\n              \n            this.QuantityOrdered = \n                (odataObject.QuantityOrdered != null) ? parseFloat(odataObject.QuantityOrdered) : undefined;\n              \n            this.PurchaseReceivedNow = \n                (odataObject.PurchaseReceivedNow != null) ? parseFloat(odataObject.PurchaseReceivedNow) : undefined;\n              \n            this.InventBatchId = \n                odataObject.InventBatchId;\n              \n            this.WMSLocationId = \n                odataObject.WMSLocationId;\n              \n            this.WMSPalletId = \n                odataObject.WMSPalletId;\n              \n            this.InventoryStatus = \n                odataObject.InventoryStatus;\n              \n            this.LicensePlate = \n                odataObject.LicensePlate;\n              \n            this.InventSiteId = \n                odataObject.InventSiteId;\n              \n            this.InventLocationId = \n                odataObject.InventLocationId;\n              \n            this.ConfigId = \n                odataObject.ConfigId;\n              \n            this.InventSerialId = \n                odataObject.InventSerialId;\n              \n            this.InventSizeId = \n                odataObject.InventSizeId;\n              \n            this.InventColorId = \n                odataObject.InventColorId;\n              \n            this.InventStyleId = \n                odataObject.InventStyleId;\n              \n            this.IsCommitted = \n                odataObject.IsCommitted;\n              \n            this.Message = \n                odataObject.Message;\n              \n            this.Guid = \n                odataObject.Guid;\n              \n            this.DeliveryMethod = \n                odataObject.DeliveryMethod;\n              \n            this.DataAreaId = \n                odataObject.DataAreaId;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['PickingListLineClass'] = PickingListLineClass;\n    \n      /**\n      * Affiliation entity class.\n      */\n      export class AffiliationClass implements Entities.Affiliation {\n      public RecordId: number;\n      public AffiliationTypeValue: number;\n      public Description: string;\n      public Name: string;\n      public IsHidden: boolean;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.RecordId = \n                (odataObject.RecordId != null) ? parseInt(odataObject.RecordId, 10) : undefined;\n              \n            this.AffiliationTypeValue = \n                odataObject.AffiliationTypeValue;\n              \n            this.Description = \n                odataObject.Description;\n              \n            this.Name = \n                odataObject.Name;\n              \n            this.IsHidden = \n                odataObject.IsHidden;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['AffiliationClass'] = AffiliationClass;\n    \n      /**\n      * InventoryInboundOutboundDocumentLinesSummary entity class.\n      */\n      export class InventoryInboundOutboundDocumentLinesSummaryClass implements Entities.InventoryInboundOutboundDocumentLinesSummary {\n      public InProgressQuantity: number;\n      public TotalLineNumber: number;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.InProgressQuantity = \n                (odataObject.InProgressQuantity != null) ? parseFloat(odataObject.InProgressQuantity) : undefined;\n              \n            this.TotalLineNumber = \n                odataObject.TotalLineNumber;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['InventoryInboundOutboundDocumentLinesSummaryClass'] = InventoryInboundOutboundDocumentLinesSummaryClass;\n    \n      /**\n      * InventoryDocumentSerialNumberLinesSummary entity class.\n      */\n      export class InventoryDocumentSerialNumberLinesSummaryClass implements Entities.InventoryDocumentSerialNumberLinesSummary {\n      public RegisteringQuantity: number;\n      public RegisteredQuantity: number;\n      public TotalLineNumber: number;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.RegisteringQuantity = \n                (odataObject.RegisteringQuantity != null) ? parseFloat(odataObject.RegisteringQuantity) : undefined;\n              \n            this.RegisteredQuantity = \n                (odataObject.RegisteredQuantity != null) ? parseFloat(odataObject.RegisteredQuantity) : undefined;\n              \n            this.TotalLineNumber = \n                odataObject.TotalLineNumber;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['InventoryDocumentSerialNumberLinesSummaryClass'] = InventoryDocumentSerialNumberLinesSummaryClass;\n    \n      /**\n      * InventoryInboundOutboundDocumentLine entity class.\n      */\n      export class InventoryInboundOutboundDocumentLineClass implements Entities.InventoryInboundOutboundDocumentLine {\n      public WorkDocumentId: string;\n      public LineId: string;\n      public SourceDocumentRecordId: number;\n      public SourceDocumentLineRecordId: number;\n      public SourceDocumentTypeValue: number;\n      public QuantityOrdered: number;\n      public QuantityShipped: number;\n      public QuantityReceived: number;\n      public QuantityCancelled: number;\n      public QuantityToUpdate: number;\n      public LocationId: string;\n      public ItemId: string;\n      public ProductId: number;\n      public ItemName: string;\n      public ItemPrimaryImageUrl: string;\n      public IsLocationActive: boolean;\n      public IsLocationAllowBlankReceiptEnabled: boolean;\n      public IsLocationBlankIssueAllowed: boolean;\n      public ProductDimensions: Entities.ProductDimension[];\n      public Note: string;\n      public NoteModifiedByStaffId: string;\n      public NoteModifiedDateTime: Date;\n      public OperationResultMessage: string;\n      public IsCloseLine: boolean;\n      public OriginTypeValue: number;\n      public UnitOfMeasure: string;\n      public SourceDocumentLine: Entities.InventoryInboundOutboundSourceDocumentLine;\n      public SerialNumberLines: Entities.InventoryDocumentSerialNumberLine[];\n      public TrackingDimensionLines: Entities.InventoryDocumentTrackingDimensionLine[];\n      public LongVersion: number;\n      public ToLocationId: string;\n      public AdjustmentTypeValue: number;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.WorkDocumentId = \n                odataObject.WorkDocumentId;\n              \n            this.LineId = \n                odataObject.LineId;\n              \n            this.SourceDocumentRecordId = \n                (odataObject.SourceDocumentRecordId != null) ? parseInt(odataObject.SourceDocumentRecordId, 10) : undefined;\n              \n            this.SourceDocumentLineRecordId = \n                (odataObject.SourceDocumentLineRecordId != null) ? parseInt(odataObject.SourceDocumentLineRecordId, 10) : undefined;\n              \n            this.SourceDocumentTypeValue = \n                odataObject.SourceDocumentTypeValue;\n              \n            this.QuantityOrdered = \n                (odataObject.QuantityOrdered != null) ? parseFloat(odataObject.QuantityOrdered) : undefined;\n              \n            this.QuantityShipped = \n                (odataObject.QuantityShipped != null) ? parseFloat(odataObject.QuantityShipped) : undefined;\n              \n            this.QuantityReceived = \n                (odataObject.QuantityReceived != null) ? parseFloat(odataObject.QuantityReceived) : undefined;\n              \n            this.QuantityCancelled = \n                (odataObject.QuantityCancelled != null) ? parseFloat(odataObject.QuantityCancelled) : undefined;\n              \n            this.QuantityToUpdate = \n                (odataObject.QuantityToUpdate != null) ? parseFloat(odataObject.QuantityToUpdate) : undefined;\n              \n            this.LocationId = \n                odataObject.LocationId;\n              \n            this.ItemId = \n                odataObject.ItemId;\n              \n            this.ProductId = \n                (odataObject.ProductId != null) ? parseInt(odataObject.ProductId, 10) : undefined;\n              \n            this.ItemName = \n                odataObject.ItemName;\n              \n            this.ItemPrimaryImageUrl = \n                odataObject.ItemPrimaryImageUrl;\n              \n            this.IsLocationActive = \n                odataObject.IsLocationActive;\n              \n            this.IsLocationAllowBlankReceiptEnabled = \n                odataObject.IsLocationAllowBlankReceiptEnabled;\n              \n            this.IsLocationBlankIssueAllowed = \n                odataObject.IsLocationBlankIssueAllowed;\n              \n        this.ProductDimensions = undefined;\n        if (odataObject.ProductDimensions) {\n        this.ProductDimensions = [];\n        for (var i = 0; i < odataObject.ProductDimensions.length; i++) {\n        if (odataObject.ProductDimensions[i] != null) {\n        if (odataObject.ProductDimensions[i]['@odata.type'] != null) {\n          var className: string = odataObject.ProductDimensions[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ProductDimensions[i] = new entityDictionary[className](odataObject.ProductDimensions[i])\n          }\n        } else {\n            this.ProductDimensions[i] = new ProductDimensionClass(odataObject.ProductDimensions[i]);\n        }\n                    } else {\n        this.ProductDimensions[i] = undefined;\n        }\n        }\n        }\n      \n            this.Note = \n                odataObject.Note;\n              \n            this.NoteModifiedByStaffId = \n                odataObject.NoteModifiedByStaffId;\n              \n            this.NoteModifiedDateTime = \n                (odataObject.NoteModifiedDateTime instanceof Date) ? odataObject.NoteModifiedDateTime\n                : (odataObject.NoteModifiedDateTime != null) ? jsonLightReadStringPropertyValue(odataObject.NoteModifiedDateTime, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.OperationResultMessage = \n                odataObject.OperationResultMessage;\n              \n            this.IsCloseLine = \n                odataObject.IsCloseLine;\n              \n            this.OriginTypeValue = \n                odataObject.OriginTypeValue;\n              \n            this.UnitOfMeasure = \n                odataObject.UnitOfMeasure;\n              \n        if (odataObject.SourceDocumentLine == null) {\n            this.SourceDocumentLine = undefined;\n        } else if (odataObject.SourceDocumentLine['@odata.type'] == null) {\n            this.SourceDocumentLine = new InventoryInboundOutboundSourceDocumentLineClass(odataObject.SourceDocumentLine);\n        } else {\n            var className: string = odataObject.SourceDocumentLine['@odata.type'];\n            className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n            if (entityDictionary[className]) {\n                this.SourceDocumentLine = new entityDictionary[className](odataObject.SourceDocumentLine)\n            }\n        }\n\n      \n        this.SerialNumberLines = undefined;\n        if (odataObject.SerialNumberLines) {\n        this.SerialNumberLines = [];\n        for (var i = 0; i < odataObject.SerialNumberLines.length; i++) {\n        if (odataObject.SerialNumberLines[i] != null) {\n        if (odataObject.SerialNumberLines[i]['@odata.type'] != null) {\n          var className: string = odataObject.SerialNumberLines[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.SerialNumberLines[i] = new entityDictionary[className](odataObject.SerialNumberLines[i])\n          }\n        } else {\n            this.SerialNumberLines[i] = new InventoryDocumentSerialNumberLineClass(odataObject.SerialNumberLines[i]);\n        }\n                    } else {\n        this.SerialNumberLines[i] = undefined;\n        }\n        }\n        }\n      \n        this.TrackingDimensionLines = undefined;\n        if (odataObject.TrackingDimensionLines) {\n        this.TrackingDimensionLines = [];\n        for (var i = 0; i < odataObject.TrackingDimensionLines.length; i++) {\n        if (odataObject.TrackingDimensionLines[i] != null) {\n        if (odataObject.TrackingDimensionLines[i]['@odata.type'] != null) {\n          var className: string = odataObject.TrackingDimensionLines[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.TrackingDimensionLines[i] = new entityDictionary[className](odataObject.TrackingDimensionLines[i])\n          }\n        } else {\n            this.TrackingDimensionLines[i] = new InventoryDocumentTrackingDimensionLineClass(odataObject.TrackingDimensionLines[i]);\n        }\n                    } else {\n        this.TrackingDimensionLines[i] = undefined;\n        }\n        }\n        }\n      \n            this.LongVersion = \n                (odataObject.LongVersion != null) ? parseInt(odataObject.LongVersion, 10) : undefined;\n              \n            this.ToLocationId = \n                odataObject.ToLocationId;\n              \n            this.AdjustmentTypeValue = \n                odataObject.AdjustmentTypeValue;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['InventoryInboundOutboundDocumentLineClass'] = InventoryInboundOutboundDocumentLineClass;\n    \n      /**\n      * InventoryInboundOutboundSourceDocument entity class.\n      */\n      export class InventoryInboundOutboundSourceDocumentClass implements Entities.InventoryInboundOutboundSourceDocument {\n      public RecordId: number;\n      public DocumentTypeValue: number;\n      public DocumentId: string;\n      public StatusValue: number;\n      public ReceiveDate: Date;\n      public ShipDate: Date;\n      public Sender: string;\n      public Receiver: string;\n      public SenderDetails: string;\n      public ReceiverDetails: string;\n      public DeliveryMode: string;\n      public TotalQuantityOrdered: number;\n      public TotalQuantityShipped: number;\n      public TotalQuantityReceived: number;\n      public TotalQuantityCancelled: number;\n      public DataAreaId: string;\n      public Note: string;\n      public TotalLines: number;\n      public IsChangeAllowed: boolean;\n      public NoteModifiedByStaffId: string;\n      public NoteModifiedDateTime: Date;\n      public DocumentTypeId: string;\n      public Description: string;\n      public StaffId: string;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.RecordId = \n                (odataObject.RecordId != null) ? parseInt(odataObject.RecordId, 10) : undefined;\n              \n            this.DocumentTypeValue = \n                odataObject.DocumentTypeValue;\n              \n            this.DocumentId = \n                odataObject.DocumentId;\n              \n            this.StatusValue = \n                odataObject.StatusValue;\n              \n            this.ReceiveDate = \n                (odataObject.ReceiveDate instanceof Date) ? odataObject.ReceiveDate\n                : (odataObject.ReceiveDate != null) ? jsonLightReadStringPropertyValue(odataObject.ReceiveDate, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.ShipDate = \n                (odataObject.ShipDate instanceof Date) ? odataObject.ShipDate\n                : (odataObject.ShipDate != null) ? jsonLightReadStringPropertyValue(odataObject.ShipDate, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.Sender = \n                odataObject.Sender;\n              \n            this.Receiver = \n                odataObject.Receiver;\n              \n            this.SenderDetails = \n                odataObject.SenderDetails;\n              \n            this.ReceiverDetails = \n                odataObject.ReceiverDetails;\n              \n            this.DeliveryMode = \n                odataObject.DeliveryMode;\n              \n            this.TotalQuantityOrdered = \n                (odataObject.TotalQuantityOrdered != null) ? parseFloat(odataObject.TotalQuantityOrdered) : undefined;\n              \n            this.TotalQuantityShipped = \n                (odataObject.TotalQuantityShipped != null) ? parseFloat(odataObject.TotalQuantityShipped) : undefined;\n              \n            this.TotalQuantityReceived = \n                (odataObject.TotalQuantityReceived != null) ? parseFloat(odataObject.TotalQuantityReceived) : undefined;\n              \n            this.TotalQuantityCancelled = \n                (odataObject.TotalQuantityCancelled != null) ? parseFloat(odataObject.TotalQuantityCancelled) : undefined;\n              \n            this.DataAreaId = \n                odataObject.DataAreaId;\n              \n            this.Note = \n                odataObject.Note;\n              \n            this.TotalLines = \n                (odataObject.TotalLines != null) ? parseInt(odataObject.TotalLines, 10) : undefined;\n              \n            this.IsChangeAllowed = \n                odataObject.IsChangeAllowed;\n              \n            this.NoteModifiedByStaffId = \n                odataObject.NoteModifiedByStaffId;\n              \n            this.NoteModifiedDateTime = \n                (odataObject.NoteModifiedDateTime instanceof Date) ? odataObject.NoteModifiedDateTime\n                : (odataObject.NoteModifiedDateTime != null) ? jsonLightReadStringPropertyValue(odataObject.NoteModifiedDateTime, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.DocumentTypeId = \n                odataObject.DocumentTypeId;\n              \n            this.Description = \n                odataObject.Description;\n              \n            this.StaffId = \n                odataObject.StaffId;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['InventoryInboundOutboundSourceDocumentClass'] = InventoryInboundOutboundSourceDocumentClass;\n    \n      /**\n      * InventoryInboundOutboundSourceDocumentLine entity class.\n      */\n      export class InventoryInboundOutboundSourceDocumentLineClass implements Entities.InventoryInboundOutboundSourceDocumentLine {\n      public DocumentRecordId: number;\n      public DocumentTypeValue: number;\n      public RecordId: number;\n      public LineNumber: number;\n      public ItemId: string;\n      public ProductId: number;\n      public QuantityOrdered: number;\n      public QuantityShipped: number;\n      public QuantityReceived: number;\n      public QuantityCancelled: number;\n      public LocationId: string;\n      public OverDeliveryPercentage: number;\n      public UnderDeliveryPercentage: number;\n      public UnitId: string;\n      public Receiver: string;\n      public DataAreaId: string;\n      public Note: string;\n      public NoteModifiedByStaffId: string;\n      public NoteModifiedDateTime: Date;\n      public DocumentId: string;\n      public ItemName: string;\n      public ItemPrimaryImageUrl: string;\n      public IsLocationActive: boolean;\n      public IsLocationAllowBlankReceiptEnabled: boolean;\n      public IsLocationBlankIssueAllowed: boolean;\n      public HasSerialNumber: boolean;\n      public IsSerialNumberBlankReceiptAllowed: boolean;\n      public IsSerialNumberDuplicateCheckEnabled: boolean;\n      public ProductDimensions: Entities.ProductDimension[];\n      public SerialNumberLines: Entities.InventoryDocumentSourceSerialNumberLine[];\n      public TrackingDimensionLines: Entities.InventoryDocumentSourceTrackingDimensionLine[];\n      public StatusValue: number;\n      public ToProductId: number;\n      public ToLocationId: string;\n      public InventoryDimensionId: string;\n      public ToInventoryDimensionId: string;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.DocumentRecordId = \n                (odataObject.DocumentRecordId != null) ? parseInt(odataObject.DocumentRecordId, 10) : undefined;\n              \n            this.DocumentTypeValue = \n                odataObject.DocumentTypeValue;\n              \n            this.RecordId = \n                (odataObject.RecordId != null) ? parseInt(odataObject.RecordId, 10) : undefined;\n              \n            this.LineNumber = \n                odataObject.LineNumber;\n              \n            this.ItemId = \n                odataObject.ItemId;\n              \n            this.ProductId = \n                (odataObject.ProductId != null) ? parseInt(odataObject.ProductId, 10) : undefined;\n              \n            this.QuantityOrdered = \n                (odataObject.QuantityOrdered != null) ? parseFloat(odataObject.QuantityOrdered) : undefined;\n              \n            this.QuantityShipped = \n                (odataObject.QuantityShipped != null) ? parseFloat(odataObject.QuantityShipped) : undefined;\n              \n            this.QuantityReceived = \n                (odataObject.QuantityReceived != null) ? parseFloat(odataObject.QuantityReceived) : undefined;\n              \n            this.QuantityCancelled = \n                (odataObject.QuantityCancelled != null) ? parseFloat(odataObject.QuantityCancelled) : undefined;\n              \n            this.LocationId = \n                odataObject.LocationId;\n              \n            this.OverDeliveryPercentage = \n                (odataObject.OverDeliveryPercentage != null) ? parseFloat(odataObject.OverDeliveryPercentage) : undefined;\n              \n            this.UnderDeliveryPercentage = \n                (odataObject.UnderDeliveryPercentage != null) ? parseFloat(odataObject.UnderDeliveryPercentage) : undefined;\n              \n            this.UnitId = \n                odataObject.UnitId;\n              \n            this.Receiver = \n                odataObject.Receiver;\n              \n            this.DataAreaId = \n                odataObject.DataAreaId;\n              \n            this.Note = \n                odataObject.Note;\n              \n            this.NoteModifiedByStaffId = \n                odataObject.NoteModifiedByStaffId;\n              \n            this.NoteModifiedDateTime = \n                (odataObject.NoteModifiedDateTime instanceof Date) ? odataObject.NoteModifiedDateTime\n                : (odataObject.NoteModifiedDateTime != null) ? jsonLightReadStringPropertyValue(odataObject.NoteModifiedDateTime, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.DocumentId = \n                odataObject.DocumentId;\n              \n            this.ItemName = \n                odataObject.ItemName;\n              \n            this.ItemPrimaryImageUrl = \n                odataObject.ItemPrimaryImageUrl;\n              \n            this.IsLocationActive = \n                odataObject.IsLocationActive;\n              \n            this.IsLocationAllowBlankReceiptEnabled = \n                odataObject.IsLocationAllowBlankReceiptEnabled;\n              \n            this.IsLocationBlankIssueAllowed = \n                odataObject.IsLocationBlankIssueAllowed;\n              \n            this.HasSerialNumber = \n                odataObject.HasSerialNumber;\n              \n            this.IsSerialNumberBlankReceiptAllowed = \n                odataObject.IsSerialNumberBlankReceiptAllowed;\n              \n            this.IsSerialNumberDuplicateCheckEnabled = \n                odataObject.IsSerialNumberDuplicateCheckEnabled;\n              \n        this.ProductDimensions = undefined;\n        if (odataObject.ProductDimensions) {\n        this.ProductDimensions = [];\n        for (var i = 0; i < odataObject.ProductDimensions.length; i++) {\n        if (odataObject.ProductDimensions[i] != null) {\n        if (odataObject.ProductDimensions[i]['@odata.type'] != null) {\n          var className: string = odataObject.ProductDimensions[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ProductDimensions[i] = new entityDictionary[className](odataObject.ProductDimensions[i])\n          }\n        } else {\n            this.ProductDimensions[i] = new ProductDimensionClass(odataObject.ProductDimensions[i]);\n        }\n                    } else {\n        this.ProductDimensions[i] = undefined;\n        }\n        }\n        }\n      \n        this.SerialNumberLines = undefined;\n        if (odataObject.SerialNumberLines) {\n        this.SerialNumberLines = [];\n        for (var i = 0; i < odataObject.SerialNumberLines.length; i++) {\n        if (odataObject.SerialNumberLines[i] != null) {\n        if (odataObject.SerialNumberLines[i]['@odata.type'] != null) {\n          var className: string = odataObject.SerialNumberLines[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.SerialNumberLines[i] = new entityDictionary[className](odataObject.SerialNumberLines[i])\n          }\n        } else {\n            this.SerialNumberLines[i] = new InventoryDocumentSourceSerialNumberLineClass(odataObject.SerialNumberLines[i]);\n        }\n                    } else {\n        this.SerialNumberLines[i] = undefined;\n        }\n        }\n        }\n      \n        this.TrackingDimensionLines = undefined;\n        if (odataObject.TrackingDimensionLines) {\n        this.TrackingDimensionLines = [];\n        for (var i = 0; i < odataObject.TrackingDimensionLines.length; i++) {\n        if (odataObject.TrackingDimensionLines[i] != null) {\n        if (odataObject.TrackingDimensionLines[i]['@odata.type'] != null) {\n          var className: string = odataObject.TrackingDimensionLines[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.TrackingDimensionLines[i] = new entityDictionary[className](odataObject.TrackingDimensionLines[i])\n          }\n        } else {\n            this.TrackingDimensionLines[i] = new InventoryDocumentSourceTrackingDimensionLineClass(odataObject.TrackingDimensionLines[i]);\n        }\n                    } else {\n        this.TrackingDimensionLines[i] = undefined;\n        }\n        }\n        }\n      \n            this.StatusValue = \n                odataObject.StatusValue;\n              \n            this.ToProductId = \n                (odataObject.ToProductId != null) ? parseInt(odataObject.ToProductId, 10) : undefined;\n              \n            this.ToLocationId = \n                odataObject.ToLocationId;\n              \n            this.InventoryDimensionId = \n                odataObject.InventoryDimensionId;\n              \n            this.ToInventoryDimensionId = \n                odataObject.ToInventoryDimensionId;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['InventoryInboundOutboundSourceDocumentLineClass'] = InventoryInboundOutboundSourceDocumentLineClass;\n    \n      /**\n      * InventoryDocumentLineFilterCriteria entity class.\n      */\n      export class InventoryDocumentLineFilterCriteriaClass implements Entities.InventoryDocumentLineFilterCriteria {\n      public ProductId: number;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.ProductId = \n                (odataObject.ProductId != null) ? parseInt(odataObject.ProductId, 10) : undefined;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['InventoryDocumentLineFilterCriteriaClass'] = InventoryDocumentLineFilterCriteriaClass;\n    \n      /**\n      * InventoryDocumentUpdateLinesAction entity class.\n      */\n      export class InventoryDocumentUpdateLinesActionClass implements Entities.InventoryDocumentUpdateLinesAction {\n      public Quantity: number;\n      public ActionTypeValue: number;\n      public LocationId: string;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.Quantity = \n                (odataObject.Quantity != null) ? parseFloat(odataObject.Quantity) : undefined;\n              \n            this.ActionTypeValue = \n                odataObject.ActionTypeValue;\n              \n            this.LocationId = \n                odataObject.LocationId;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['InventoryDocumentUpdateLinesActionClass'] = InventoryDocumentUpdateLinesActionClass;\n    \n      /**\n      * InventoryDocumentLineOperationResultSettings entity class.\n      */\n      export class InventoryDocumentLineOperationResultSettingsClass implements Entities.InventoryDocumentLineOperationResultSettings {\n      public ModeValue: number;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.ModeValue = \n                odataObject.ModeValue;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['InventoryDocumentLineOperationResultSettingsClass'] = InventoryDocumentLineOperationResultSettingsClass;\n    \n      /**\n      * InventoryDocumentLineSearchCriteria entity class.\n      */\n      export class InventoryDocumentLineSearchCriteriaClass implements Entities.InventoryDocumentLineSearchCriteria {\n      public SourceDocumentId: string;\n      public SourceDocumentTypeValue: number;\n      public WorkDocumentId: string;\n      public ProductId: number;\n      public ItemIds: string[];\n      public AvailableSerializedLineOnly: boolean;\n      public DocumentLineIds: string[];\n      public DocumentOperationTypeValue: number;\n      public OperationTypeValue: number;\n      public LocationId: string;\n      public ToLocationId: string;\n      public AdjustmentTypeValue: number;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.SourceDocumentId = \n                odataObject.SourceDocumentId;\n              \n            this.SourceDocumentTypeValue = \n                odataObject.SourceDocumentTypeValue;\n              \n            this.WorkDocumentId = \n                odataObject.WorkDocumentId;\n              \n            this.ProductId = \n                (odataObject.ProductId != null) ? parseInt(odataObject.ProductId, 10) : undefined;\n              \n        this.ItemIds = undefined;\n        if (odataObject.ItemIds) {\n        this.ItemIds = [];\n        for (var i = 0; i < odataObject.ItemIds.length; i++) {\n        if (odataObject.ItemIds[i] != null) {\n            this.ItemIds[i] = \n                odataObject.ItemIds[i];\n                            } else {\n        this.ItemIds[i] = undefined;\n        }\n        }\n        }\n      \n            this.AvailableSerializedLineOnly = \n                odataObject.AvailableSerializedLineOnly;\n              \n        this.DocumentLineIds = undefined;\n        if (odataObject.DocumentLineIds) {\n        this.DocumentLineIds = [];\n        for (var i = 0; i < odataObject.DocumentLineIds.length; i++) {\n        if (odataObject.DocumentLineIds[i] != null) {\n            this.DocumentLineIds[i] = \n                odataObject.DocumentLineIds[i];\n                            } else {\n        this.DocumentLineIds[i] = undefined;\n        }\n        }\n        }\n      \n            this.DocumentOperationTypeValue = \n                odataObject.DocumentOperationTypeValue;\n              \n            this.OperationTypeValue = \n                odataObject.OperationTypeValue;\n              \n            this.LocationId = \n                odataObject.LocationId;\n              \n            this.ToLocationId = \n                odataObject.ToLocationId;\n              \n            this.AdjustmentTypeValue = \n                odataObject.AdjustmentTypeValue;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['InventoryDocumentLineSearchCriteriaClass'] = InventoryDocumentLineSearchCriteriaClass;\n    \n      /**\n      * InventoryDocumentSearchCriteria entity class.\n      */\n      export class InventoryDocumentSearchCriteriaClass implements Entities.InventoryDocumentSearchCriteria {\n      public DocumentId: string;\n      public TransferFromWarehouse: string;\n      public ShipFromWarehouse: string;\n      public TransferToWarehouse: string;\n      public Description: string;\n      public DocumentTypeIds: string[];\n      public DocumentStateValue: number;\n      public DocumentTypeValues: number[];\n      public CustomFilters: Entities.SearchFilter[];\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.DocumentId = \n                odataObject.DocumentId;\n              \n            this.TransferFromWarehouse = \n                odataObject.TransferFromWarehouse;\n              \n            this.ShipFromWarehouse = \n                odataObject.ShipFromWarehouse;\n              \n            this.TransferToWarehouse = \n                odataObject.TransferToWarehouse;\n              \n            this.Description = \n                odataObject.Description;\n              \n        this.DocumentTypeIds = undefined;\n        if (odataObject.DocumentTypeIds) {\n        this.DocumentTypeIds = [];\n        for (var i = 0; i < odataObject.DocumentTypeIds.length; i++) {\n        if (odataObject.DocumentTypeIds[i] != null) {\n            this.DocumentTypeIds[i] = \n                odataObject.DocumentTypeIds[i];\n                            } else {\n        this.DocumentTypeIds[i] = undefined;\n        }\n        }\n        }\n      \n            this.DocumentStateValue = \n                odataObject.DocumentStateValue;\n              \n        this.DocumentTypeValues = undefined;\n        if (odataObject.DocumentTypeValues) {\n        this.DocumentTypeValues = [];\n        for (var i = 0; i < odataObject.DocumentTypeValues.length; i++) {\n        if (odataObject.DocumentTypeValues[i] != null) {\n            this.DocumentTypeValues[i] = \n                odataObject.DocumentTypeValues[i];\n                            } else {\n        this.DocumentTypeValues[i] = undefined;\n        }\n        }\n        }\n      \n        this.CustomFilters = undefined;\n        if (odataObject.CustomFilters) {\n        this.CustomFilters = [];\n        for (var i = 0; i < odataObject.CustomFilters.length; i++) {\n        if (odataObject.CustomFilters[i] != null) {\n        if (odataObject.CustomFilters[i]['@odata.type'] != null) {\n          var className: string = odataObject.CustomFilters[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.CustomFilters[i] = new entityDictionary[className](odataObject.CustomFilters[i])\n          }\n        } else {\n            this.CustomFilters[i] = new SearchFilterClass(odataObject.CustomFilters[i]);\n        }\n                    } else {\n        this.CustomFilters[i] = undefined;\n        }\n        }\n        }\n      \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['InventoryDocumentSearchCriteriaClass'] = InventoryDocumentSearchCriteriaClass;\n    \n      /**\n      * InventoryDocumentSerialNumberLineSearchCriteria entity class.\n      */\n      export class InventoryDocumentSerialNumberLineSearchCriteriaClass implements Entities.InventoryDocumentSerialNumberLineSearchCriteria {\n      public DocumentLineId: string;\n      public SerialNumber: string;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.DocumentLineId = \n                odataObject.DocumentLineId;\n              \n            this.SerialNumber = \n                odataObject.SerialNumber;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['InventoryDocumentSerialNumberLineSearchCriteriaClass'] = InventoryDocumentSerialNumberLineSearchCriteriaClass;\n    \n      /**\n      * InventoryDocumentSerialNumberLineUpdateAction entity class.\n      */\n      export class InventoryDocumentSerialNumberLineUpdateActionClass implements Entities.InventoryDocumentSerialNumberLineUpdateAction {\n      public DocumentLineId: string;\n      public LineId: string;\n      public SerialNumber: string;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.DocumentLineId = \n                odataObject.DocumentLineId;\n              \n            this.LineId = \n                odataObject.LineId;\n              \n            this.SerialNumber = \n                odataObject.SerialNumber;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['InventoryDocumentSerialNumberLineUpdateActionClass'] = InventoryDocumentSerialNumberLineUpdateActionClass;\n    \n      /**\n      * InventoryDocumentSerialNumberLineResetAction entity class.\n      */\n      export class InventoryDocumentSerialNumberLineResetActionClass implements Entities.InventoryDocumentSerialNumberLineResetAction {\n      public DocumentLineId: string;\n      public LineId: string;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.DocumentLineId = \n                odataObject.DocumentLineId;\n              \n            this.LineId = \n                odataObject.LineId;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['InventoryDocumentSerialNumberLineResetActionClass'] = InventoryDocumentSerialNumberLineResetActionClass;\n    \n      /**\n      * InventoryInboundOutboundDocumentUpdateLinesByCriteriaResult entity class.\n      */\n      export class InventoryInboundOutboundDocumentUpdateLinesByCriteriaResultClass implements Entities.InventoryInboundOutboundDocumentUpdateLinesByCriteriaResult {\n      public UpdatedLines: Entities.InventoryInboundOutboundDocumentLine[];\n      public TotalLinesUpdated: number;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n        this.UpdatedLines = undefined;\n        if (odataObject.UpdatedLines) {\n        this.UpdatedLines = [];\n        for (var i = 0; i < odataObject.UpdatedLines.length; i++) {\n        if (odataObject.UpdatedLines[i] != null) {\n        if (odataObject.UpdatedLines[i]['@odata.type'] != null) {\n          var className: string = odataObject.UpdatedLines[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.UpdatedLines[i] = new entityDictionary[className](odataObject.UpdatedLines[i])\n          }\n        } else {\n            this.UpdatedLines[i] = new InventoryInboundOutboundDocumentLineClass(odataObject.UpdatedLines[i]);\n        }\n                    } else {\n        this.UpdatedLines[i] = undefined;\n        }\n        }\n        }\n      \n            this.TotalLinesUpdated = \n                odataObject.TotalLinesUpdated;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['InventoryInboundOutboundDocumentUpdateLinesByCriteriaResultClass'] = InventoryInboundOutboundDocumentUpdateLinesByCriteriaResultClass;\n    \n      /**\n      * WarehouseLocationSearchCriteria entity class.\n      */\n      export class WarehouseLocationSearchCriteriaClass implements Entities.WarehouseLocationSearchCriteria {\n      public WarehouseIds: string[];\n      public IsLocationProfileRequired: boolean;\n      public SearchText: string;\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n        this.WarehouseIds = undefined;\n        if (odataObject.WarehouseIds) {\n        this.WarehouseIds = [];\n        for (var i = 0; i < odataObject.WarehouseIds.length; i++) {\n        if (odataObject.WarehouseIds[i] != null) {\n            this.WarehouseIds[i] = \n                odataObject.WarehouseIds[i];\n                            } else {\n        this.WarehouseIds[i] = undefined;\n        }\n        }\n        }\n      \n            this.IsLocationProfileRequired = \n                odataObject.IsLocationProfileRequired;\n              \n            this.SearchText = \n                odataObject.SearchText;\n              \n      }\n      }\n      entityDictionary['WarehouseLocationSearchCriteriaClass'] = WarehouseLocationSearchCriteriaClass;\n    \n      /**\n      * InventoryDocumentSerialNumberLine entity class.\n      */\n      export class InventoryDocumentSerialNumberLineClass implements Entities.InventoryDocumentSerialNumberLine {\n      public WorkDocumentId: string;\n      public WorkDocumentLineId: string;\n      public SourceLineId: string;\n      public LineId: string;\n      public Quantity: number;\n      public SerialNumber: string;\n      public StatusValue: number;\n      public ProductId: number;\n      public ModifiedDateTime: Date;\n      public SourceDocumentRecordId: number;\n      public SourceDocumentTypeValue: number;\n      public SourceDocumentLineRecordId: number;\n      public SourceLine: Entities.InventoryDocumentSourceSerialNumberLine;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.WorkDocumentId = \n                odataObject.WorkDocumentId;\n              \n            this.WorkDocumentLineId = \n                odataObject.WorkDocumentLineId;\n              \n            this.SourceLineId = \n                odataObject.SourceLineId;\n              \n            this.LineId = \n                odataObject.LineId;\n              \n            this.Quantity = \n                (odataObject.Quantity != null) ? parseFloat(odataObject.Quantity) : undefined;\n              \n            this.SerialNumber = \n                odataObject.SerialNumber;\n              \n            this.StatusValue = \n                odataObject.StatusValue;\n              \n            this.ProductId = \n                (odataObject.ProductId != null) ? parseInt(odataObject.ProductId, 10) : undefined;\n              \n            this.ModifiedDateTime = \n                (odataObject.ModifiedDateTime instanceof Date) ? odataObject.ModifiedDateTime\n                : (odataObject.ModifiedDateTime != null) ? jsonLightReadStringPropertyValue(odataObject.ModifiedDateTime, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.SourceDocumentRecordId = \n                (odataObject.SourceDocumentRecordId != null) ? parseInt(odataObject.SourceDocumentRecordId, 10) : undefined;\n              \n            this.SourceDocumentTypeValue = \n                odataObject.SourceDocumentTypeValue;\n              \n            this.SourceDocumentLineRecordId = \n                (odataObject.SourceDocumentLineRecordId != null) ? parseInt(odataObject.SourceDocumentLineRecordId, 10) : undefined;\n              \n        if (odataObject.SourceLine == null) {\n            this.SourceLine = undefined;\n        } else if (odataObject.SourceLine['@odata.type'] == null) {\n            this.SourceLine = new InventoryDocumentSourceSerialNumberLineClass(odataObject.SourceLine);\n        } else {\n            var className: string = odataObject.SourceLine['@odata.type'];\n            className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n            if (entityDictionary[className]) {\n                this.SourceLine = new entityDictionary[className](odataObject.SourceLine)\n            }\n        }\n\n      \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['InventoryDocumentSerialNumberLineClass'] = InventoryDocumentSerialNumberLineClass;\n    \n      /**\n      * InventoryDocumentValidationCategoryResultsSummary entity class.\n      */\n      export class InventoryDocumentValidationCategoryResultsSummaryClass implements Entities.InventoryDocumentValidationCategoryResultsSummary {\n      public CategoryName: string;\n      public SeverityValue: number;\n      public TotalValidationResultCount: number;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.CategoryName = \n                odataObject.CategoryName;\n              \n            this.SeverityValue = \n                odataObject.SeverityValue;\n              \n            this.TotalValidationResultCount = \n                odataObject.TotalValidationResultCount;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['InventoryDocumentValidationCategoryResultsSummaryClass'] = InventoryDocumentValidationCategoryResultsSummaryClass;\n    \n      /**\n      * InventoryDocumentValidationResultSummary entity class.\n      */\n      export class InventoryDocumentValidationResultSummaryClass implements Entities.InventoryDocumentValidationResultSummary {\n      public DocumentId: string;\n      public DocumentVersion: number;\n      public CategorySummaries: Entities.InventoryDocumentValidationCategoryResultsSummary[];\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.DocumentId = \n                odataObject.DocumentId;\n              \n            this.DocumentVersion = \n                (odataObject.DocumentVersion != null) ? parseInt(odataObject.DocumentVersion, 10) : undefined;\n              \n        this.CategorySummaries = undefined;\n        if (odataObject.CategorySummaries) {\n        this.CategorySummaries = [];\n        for (var i = 0; i < odataObject.CategorySummaries.length; i++) {\n        if (odataObject.CategorySummaries[i] != null) {\n        if (odataObject.CategorySummaries[i]['@odata.type'] != null) {\n          var className: string = odataObject.CategorySummaries[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.CategorySummaries[i] = new entityDictionary[className](odataObject.CategorySummaries[i])\n          }\n        } else {\n            this.CategorySummaries[i] = new InventoryDocumentValidationCategoryResultsSummaryClass(odataObject.CategorySummaries[i]);\n        }\n                    } else {\n        this.CategorySummaries[i] = undefined;\n        }\n        }\n        }\n      \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['InventoryDocumentValidationResultSummaryClass'] = InventoryDocumentValidationResultSummaryClass;\n    \n      /**\n      * InventoryDocumentValidationResultLine entity class.\n      */\n      export class InventoryDocumentValidationResultLineClass implements Entities.InventoryDocumentValidationResultLine {\n      public DocumentValidationResultLineId: string;\n      public CategoryName: string;\n      public SeverityValue: number;\n      public ErrorCode: number;\n      public ErrorMessage: string;\n      public DocumentId: string;\n      public DocumentLongVersion: number;\n      public DocumentLineId: string;\n      public CreatedDateTime: Date;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.DocumentValidationResultLineId = \n                odataObject.DocumentValidationResultLineId;\n              \n            this.CategoryName = \n                odataObject.CategoryName;\n              \n            this.SeverityValue = \n                odataObject.SeverityValue;\n              \n            this.ErrorCode = \n                odataObject.ErrorCode;\n              \n            this.ErrorMessage = \n                odataObject.ErrorMessage;\n              \n            this.DocumentId = \n                odataObject.DocumentId;\n              \n            this.DocumentLongVersion = \n                (odataObject.DocumentLongVersion != null) ? parseInt(odataObject.DocumentLongVersion, 10) : undefined;\n              \n            this.DocumentLineId = \n                odataObject.DocumentLineId;\n              \n            this.CreatedDateTime = \n                (odataObject.CreatedDateTime instanceof Date) ? odataObject.CreatedDateTime\n                : (odataObject.CreatedDateTime != null) ? jsonLightReadStringPropertyValue(odataObject.CreatedDateTime, \"Edm.DateTimeOffset\", false) : undefined;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['InventoryDocumentValidationResultLineClass'] = InventoryDocumentValidationResultLineClass;\n    \n      /**\n      * InventoryDocumentValidationResultSearchCriteria entity class.\n      */\n      export class InventoryDocumentValidationResultSearchCriteriaClass implements Entities.InventoryDocumentValidationResultSearchCriteria {\n      public DocumentId: string;\n      public DocumentVersion: number;\n      public SeverityValue: number;\n      public Categories: string[];\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.DocumentId = \n                odataObject.DocumentId;\n              \n            this.DocumentVersion = \n                (odataObject.DocumentVersion != null) ? parseInt(odataObject.DocumentVersion, 10) : undefined;\n              \n            this.SeverityValue = \n                odataObject.SeverityValue;\n              \n        this.Categories = undefined;\n        if (odataObject.Categories) {\n        this.Categories = [];\n        for (var i = 0; i < odataObject.Categories.length; i++) {\n        if (odataObject.Categories[i] != null) {\n            this.Categories[i] = \n                odataObject.Categories[i];\n                            } else {\n        this.Categories[i] = undefined;\n        }\n        }\n        }\n      \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['InventoryDocumentValidationResultSearchCriteriaClass'] = InventoryDocumentValidationResultSearchCriteriaClass;\n    \n      /**\n      * ProductDimensionValueInventoryAvailability entity class.\n      */\n      export class ProductDimensionValueInventoryAvailabilityClass implements Entities.ProductDimensionValueInventoryAvailability {\n      public DimensionTypeValue: number;\n      public DimensionValue: Entities.ProductDimensionValue;\n      public ProductIds: number[];\n      public TotalAvailableInventoryLevelLabel: string;\n      public TotalAvailableInventoryLevelCode: string;\n      public PhysicalAvailableInventoryLevelLabel: string;\n      public PhysicalAvailableInventoryLevelCode: string;\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.DimensionTypeValue = \n                odataObject.DimensionTypeValue;\n              \n        if (odataObject.DimensionValue == null) {\n            this.DimensionValue = undefined;\n        } else if (odataObject.DimensionValue['@odata.type'] == null) {\n            this.DimensionValue = new ProductDimensionValueClass(odataObject.DimensionValue);\n        } else {\n            var className: string = odataObject.DimensionValue['@odata.type'];\n            className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n            if (entityDictionary[className]) {\n                this.DimensionValue = new entityDictionary[className](odataObject.DimensionValue)\n            }\n        }\n\n      \n        this.ProductIds = undefined;\n        if (odataObject.ProductIds) {\n        this.ProductIds = [];\n        for (var i = 0; i < odataObject.ProductIds.length; i++) {\n        if (odataObject.ProductIds[i] != null) {\n            this.ProductIds[i] = \n                parseInt(odataObject.ProductIds[i], 10);\n                            } else {\n        this.ProductIds[i] = undefined;\n        }\n        }\n        }\n      \n            this.TotalAvailableInventoryLevelLabel = \n                odataObject.TotalAvailableInventoryLevelLabel;\n              \n            this.TotalAvailableInventoryLevelCode = \n                odataObject.TotalAvailableInventoryLevelCode;\n              \n            this.PhysicalAvailableInventoryLevelLabel = \n                odataObject.PhysicalAvailableInventoryLevelLabel;\n              \n            this.PhysicalAvailableInventoryLevelCode = \n                odataObject.PhysicalAvailableInventoryLevelCode;\n              \n      }\n      }\n      entityDictionary['ProductDimensionValueInventoryAvailabilityClass'] = ProductDimensionValueInventoryAvailabilityClass;\n    \n      /**\n      * UnitOfMeasureSearchCriteria entity class.\n      */\n      export class UnitOfMeasureSearchCriteriaClass implements Entities.UnitOfMeasureSearchCriteria {\n      public IncludeQuantityLimitRules: boolean;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.IncludeQuantityLimitRules = \n                odataObject.IncludeQuantityLimitRules;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['UnitOfMeasureSearchCriteriaClass'] = UnitOfMeasureSearchCriteriaClass;\n    \n      /**\n      * ProductDimension entity class.\n      */\n      export class ProductDimensionClass implements Entities.ProductDimension {\n      public DimensionTypeValue: number;\n      public DimensionValue: Entities.ProductDimensionValue;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.DimensionTypeValue = \n                odataObject.DimensionTypeValue;\n              \n        if (odataObject.DimensionValue == null) {\n            this.DimensionValue = undefined;\n        } else if (odataObject.DimensionValue['@odata.type'] == null) {\n            this.DimensionValue = new ProductDimensionValueClass(odataObject.DimensionValue);\n        } else {\n            var className: string = odataObject.DimensionValue['@odata.type'];\n            className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n            if (entityDictionary[className]) {\n                this.DimensionValue = new entityDictionary[className](odataObject.DimensionValue)\n            }\n        }\n\n      \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['ProductDimensionClass'] = ProductDimensionClass;\n    \n      /**\n      * ProductDimensionValue entity class.\n      */\n      export class ProductDimensionValueClass implements Entities.ProductDimensionValue {\n      public RecordId: number;\n      public Value: string;\n      public DimensionId: string;\n      public ColorHexCode: string;\n      public ImageUrl: string;\n      public RefinerGroup: string;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.RecordId = \n                (odataObject.RecordId != null) ? parseInt(odataObject.RecordId, 10) : undefined;\n              \n            this.Value = \n                odataObject.Value;\n              \n            this.DimensionId = \n                odataObject.DimensionId;\n              \n            this.ColorHexCode = \n                odataObject.ColorHexCode;\n              \n            this.ImageUrl = \n                odataObject.ImageUrl;\n              \n            this.RefinerGroup = \n                odataObject.RefinerGroup;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['ProductDimensionValueClass'] = ProductDimensionValueClass;\n    \n      /**\n      * ProductDimensionCombination entity class.\n      */\n      export class ProductDimensionCombinationClass implements Entities.ProductDimensionCombination {\n      public ProductDimensions: Entities.ProductDimension[];\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n        this.ProductDimensions = undefined;\n        if (odataObject.ProductDimensions) {\n        this.ProductDimensions = [];\n        for (var i = 0; i < odataObject.ProductDimensions.length; i++) {\n        if (odataObject.ProductDimensions[i] != null) {\n        if (odataObject.ProductDimensions[i]['@odata.type'] != null) {\n          var className: string = odataObject.ProductDimensions[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ProductDimensions[i] = new entityDictionary[className](odataObject.ProductDimensions[i])\n          }\n        } else {\n            this.ProductDimensions[i] = new ProductDimensionClass(odataObject.ProductDimensions[i]);\n        }\n                    } else {\n        this.ProductDimensions[i] = undefined;\n        }\n        }\n        }\n      \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['ProductDimensionCombinationClass'] = ProductDimensionCombinationClass;\n    \n      /**\n      * SearchRefiner entity class.\n      */\n      export class SearchRefinerClass implements Entities.SearchRefiner {\n      public RecordId: number;\n      public KeyName: string;\n      public DataTypeValue: number;\n      public RefinerTypeValue: number;\n      public DisplayTemplateValue: number;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.RecordId = \n                (odataObject.RecordId != null) ? parseInt(odataObject.RecordId, 10) : undefined;\n              \n            this.KeyName = \n                odataObject.KeyName;\n              \n            this.DataTypeValue = \n                odataObject.DataTypeValue;\n              \n            this.RefinerTypeValue = \n                odataObject.RefinerTypeValue;\n              \n            this.DisplayTemplateValue = \n                odataObject.DisplayTemplateValue;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['SearchRefinerClass'] = SearchRefinerClass;\n    \n      /**\n      * SearchRefinerValue entity class.\n      */\n      export class SearchRefinerValueClass implements Entities.SearchRefinerValue {\n      public RefinerRecordId: number;\n      public DataTypeValue: number;\n      public LeftValueBoundString: string;\n      public RightValueBoundString: string;\n      public UnitText: string;\n      public RowNumber: number;\n      public Count: number;\n      public LeftValueBoundLocalizedString: string;\n      public RightValueBoundLocalizedString: string;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.RefinerRecordId = \n                (odataObject.RefinerRecordId != null) ? parseInt(odataObject.RefinerRecordId, 10) : undefined;\n              \n            this.DataTypeValue = \n                odataObject.DataTypeValue;\n              \n            this.LeftValueBoundString = \n                odataObject.LeftValueBoundString;\n              \n            this.RightValueBoundString = \n                odataObject.RightValueBoundString;\n              \n            this.UnitText = \n                odataObject.UnitText;\n              \n            this.RowNumber = \n                odataObject.RowNumber;\n              \n            this.Count = \n                odataObject.Count;\n              \n            this.LeftValueBoundLocalizedString = \n                odataObject.LeftValueBoundLocalizedString;\n              \n            this.RightValueBoundLocalizedString = \n                odataObject.RightValueBoundLocalizedString;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['SearchRefinerValueClass'] = SearchRefinerValueClass;\n    \n      /**\n      * ProductRefiner entity class.\n      */\n      export class ProductRefinerClass\n        extends SearchRefinerClass\n       implements Entities.ProductRefiner {\n      public SourceValue: number;\n      public Values: Entities.ProductRefinerValue[];\n      public IsDimension: boolean;\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      super(odataObject);odataObject = odataObject || {};\n            this.SourceValue = \n                odataObject.SourceValue;\n              \n        this.Values = undefined;\n        if (odataObject.Values) {\n        this.Values = [];\n        for (var i = 0; i < odataObject.Values.length; i++) {\n        if (odataObject.Values[i] != null) {\n        if (odataObject.Values[i]['@odata.type'] != null) {\n          var className: string = odataObject.Values[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.Values[i] = new entityDictionary[className](odataObject.Values[i])\n          }\n        } else {\n            this.Values[i] = new ProductRefinerValueClass(odataObject.Values[i]);\n        }\n                    } else {\n        this.Values[i] = undefined;\n        }\n        }\n        }\n      \n            this.IsDimension = \n                odataObject.IsDimension;\n              \n        this[\"@odata.type\"] = \"#Microsoft.Dynamics.Commerce.Runtime.DataModel.ProductRefiner\";\n      \n      }\n      }\n      entityDictionary['ProductRefinerClass'] = ProductRefinerClass;\n    \n      /**\n      * ProductRefinerValue entity class.\n      */\n      export class ProductRefinerValueClass\n        extends SearchRefinerValueClass\n       implements Entities.ProductRefinerValue {\n      public RefinerSourceValue: number;\n      public SwatchImageUrl: string;\n      public SwatchColorHexCode: string;\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      super(odataObject);odataObject = odataObject || {};\n            this.RefinerSourceValue = \n                odataObject.RefinerSourceValue;\n              \n            this.SwatchImageUrl = \n                odataObject.SwatchImageUrl;\n              \n            this.SwatchColorHexCode = \n                odataObject.SwatchColorHexCode;\n              \n        this[\"@odata.type\"] = \"#Microsoft.Dynamics.Commerce.Runtime.DataModel.ProductRefinerValue\";\n      \n      }\n      }\n      entityDictionary['ProductRefinerValueClass'] = ProductRefinerValueClass;\n    \n      /**\n      * ClientBookRefiner entity class.\n      */\n      export class ClientBookRefinerClass\n        extends SearchRefinerClass\n       implements Entities.ClientBookRefiner {\n      public SourceValue: number;\n      public Values: Entities.ClientBookRefinerValue[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      super(odataObject);odataObject = odataObject || {};\n            this.SourceValue = \n                odataObject.SourceValue;\n              \n        this.Values = undefined;\n        if (odataObject.Values) {\n        this.Values = [];\n        for (var i = 0; i < odataObject.Values.length; i++) {\n        if (odataObject.Values[i] != null) {\n        if (odataObject.Values[i]['@odata.type'] != null) {\n          var className: string = odataObject.Values[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.Values[i] = new entityDictionary[className](odataObject.Values[i])\n          }\n        } else {\n            this.Values[i] = new ClientBookRefinerValueClass(odataObject.Values[i]);\n        }\n                    } else {\n        this.Values[i] = undefined;\n        }\n        }\n        }\n      \n        this[\"@odata.type\"] = \"#Microsoft.Dynamics.Commerce.Runtime.DataModel.ClientBookRefiner\";\n      \n      }\n      }\n      entityDictionary['ClientBookRefinerClass'] = ClientBookRefinerClass;\n    \n      /**\n      * ClientBookRefinerValue entity class.\n      */\n      export class ClientBookRefinerValueClass\n        extends SearchRefinerValueClass\n       implements Entities.ClientBookRefinerValue {\n      public RefinerSourceValue: number;\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      super(odataObject);odataObject = odataObject || {};\n            this.RefinerSourceValue = \n                odataObject.RefinerSourceValue;\n              \n        this[\"@odata.type\"] = \"#Microsoft.Dynamics.Commerce.Runtime.DataModel.ClientBookRefinerValue\";\n      \n      }\n      }\n      entityDictionary['ClientBookRefinerValueClass'] = ClientBookRefinerValueClass;\n    \n      /**\n      * ProductRelationType entity class.\n      */\n      export class ProductRelationTypeClass implements Entities.ProductRelationType {\n      public Name: string;\n      public RecordId: number;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.Name = \n                odataObject.Name;\n              \n            this.RecordId = \n                (odataObject.RecordId != null) ? parseInt(odataObject.RecordId, 10) : undefined;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['ProductRelationTypeClass'] = ProductRelationTypeClass;\n    \n      /**\n      * ComponentInSlotRelation entity class.\n      */\n      export class ComponentInSlotRelationClass implements Entities.ComponentInSlotRelation {\n      public ComponentId: number;\n      public SlotId: number;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.ComponentId = \n                (odataObject.ComponentId != null) ? parseInt(odataObject.ComponentId, 10) : undefined;\n              \n            this.SlotId = \n                (odataObject.SlotId != null) ? parseInt(odataObject.SlotId, 10) : undefined;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['ComponentInSlotRelationClass'] = ComponentInSlotRelationClass;\n    \n      /**\n      * ProductRules entity class.\n      */\n      export class ProductRulesClass implements Entities.ProductRules {\n      public HasLinkedProducts: boolean;\n      public IsSerialized: boolean;\n      public IsActiveInSalesProcess: boolean;\n      public IsBlocked: boolean;\n      public DateOfBlocking: Date;\n      public DateToActivate: Date;\n      public DateToBlock: Date;\n      public DefaultUnitOfMeasure: string;\n      public PriceKeyingRequirementValue: number;\n      public QuantityKeyingRequirementValue: number;\n      public MustKeyInComment: boolean;\n      public CanQuantityBecomeNegative: boolean;\n      public MustScaleItem: boolean;\n      public CanPriceBeZero: boolean;\n      public ProductId: number;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.HasLinkedProducts = \n                odataObject.HasLinkedProducts;\n              \n            this.IsSerialized = \n                odataObject.IsSerialized;\n              \n            this.IsActiveInSalesProcess = \n                odataObject.IsActiveInSalesProcess;\n              \n            this.IsBlocked = \n                odataObject.IsBlocked;\n              \n            this.DateOfBlocking = \n                (odataObject.DateOfBlocking instanceof Date) ? odataObject.DateOfBlocking\n                : (odataObject.DateOfBlocking != null) ? jsonLightReadStringPropertyValue(odataObject.DateOfBlocking, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.DateToActivate = \n                (odataObject.DateToActivate instanceof Date) ? odataObject.DateToActivate\n                : (odataObject.DateToActivate != null) ? jsonLightReadStringPropertyValue(odataObject.DateToActivate, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.DateToBlock = \n                (odataObject.DateToBlock instanceof Date) ? odataObject.DateToBlock\n                : (odataObject.DateToBlock != null) ? jsonLightReadStringPropertyValue(odataObject.DateToBlock, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.DefaultUnitOfMeasure = \n                odataObject.DefaultUnitOfMeasure;\n              \n            this.PriceKeyingRequirementValue = \n                odataObject.PriceKeyingRequirementValue;\n              \n            this.QuantityKeyingRequirementValue = \n                odataObject.QuantityKeyingRequirementValue;\n              \n            this.MustKeyInComment = \n                odataObject.MustKeyInComment;\n              \n            this.CanQuantityBecomeNegative = \n                odataObject.CanQuantityBecomeNegative;\n              \n            this.MustScaleItem = \n                odataObject.MustScaleItem;\n              \n            this.CanPriceBeZero = \n                odataObject.CanPriceBeZero;\n              \n            this.ProductId = \n                (odataObject.ProductId != null) ? parseInt(odataObject.ProductId, 10) : undefined;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['ProductRulesClass'] = ProductRulesClass;\n    \n      /**\n      * LocalizedString entity class.\n      */\n      export class LocalizedStringClass implements Entities.LocalizedString {\n      public RecordId: number;\n      public LanguageId: string;\n      public TextId: number;\n      public Text: string;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.RecordId = \n                (odataObject.RecordId != null) ? parseInt(odataObject.RecordId, 10) : undefined;\n              \n            this.LanguageId = \n                odataObject.LanguageId;\n              \n            this.TextId = \n                odataObject.TextId;\n              \n            this.Text = \n                odataObject.Text;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['LocalizedStringClass'] = LocalizedStringClass;\n    \n      /**\n      * LoyaltyCard entity class.\n      */\n      export class LoyaltyCardClass implements Entities.LoyaltyCard {\n      public CardNumber: string;\n      public CardTenderTypeValue: number;\n      public CustomerAccount: string;\n      public LoyaltyGroups: Entities.LoyaltyGroup[];\n      public RewardPoints: Entities.LoyaltyRewardPoint[];\n      public LoyaltyEnrollmentDate: Date;\n      public LoyaltyEnrollmentDateLocal: Date;\n      public LoyaltyEnrollmentTime: number;\n      public LoyaltyEnrollmentTimeLocal: number;\n      public OmOperatingUnitId: number;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.CardNumber = \n                odataObject.CardNumber;\n              \n            this.CardTenderTypeValue = \n                odataObject.CardTenderTypeValue;\n              \n            this.CustomerAccount = \n                odataObject.CustomerAccount;\n              \n        this.LoyaltyGroups = undefined;\n        if (odataObject.LoyaltyGroups) {\n        this.LoyaltyGroups = [];\n        for (var i = 0; i < odataObject.LoyaltyGroups.length; i++) {\n        if (odataObject.LoyaltyGroups[i] != null) {\n        if (odataObject.LoyaltyGroups[i]['@odata.type'] != null) {\n          var className: string = odataObject.LoyaltyGroups[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.LoyaltyGroups[i] = new entityDictionary[className](odataObject.LoyaltyGroups[i])\n          }\n        } else {\n            this.LoyaltyGroups[i] = new LoyaltyGroupClass(odataObject.LoyaltyGroups[i]);\n        }\n                    } else {\n        this.LoyaltyGroups[i] = undefined;\n        }\n        }\n        }\n      \n        this.RewardPoints = undefined;\n        if (odataObject.RewardPoints) {\n        this.RewardPoints = [];\n        for (var i = 0; i < odataObject.RewardPoints.length; i++) {\n        if (odataObject.RewardPoints[i] != null) {\n        if (odataObject.RewardPoints[i]['@odata.type'] != null) {\n          var className: string = odataObject.RewardPoints[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.RewardPoints[i] = new entityDictionary[className](odataObject.RewardPoints[i])\n          }\n        } else {\n            this.RewardPoints[i] = new LoyaltyRewardPointClass(odataObject.RewardPoints[i]);\n        }\n                    } else {\n        this.RewardPoints[i] = undefined;\n        }\n        }\n        }\n      \n            this.LoyaltyEnrollmentDate = \n                (odataObject.LoyaltyEnrollmentDate instanceof Date) ? odataObject.LoyaltyEnrollmentDate\n                : (odataObject.LoyaltyEnrollmentDate != null) ? jsonLightReadStringPropertyValue(odataObject.LoyaltyEnrollmentDate, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.LoyaltyEnrollmentDateLocal = \n                (odataObject.LoyaltyEnrollmentDateLocal instanceof Date) ? odataObject.LoyaltyEnrollmentDateLocal\n                : (odataObject.LoyaltyEnrollmentDateLocal != null) ? jsonLightReadStringPropertyValue(odataObject.LoyaltyEnrollmentDateLocal, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.LoyaltyEnrollmentTime = \n                odataObject.LoyaltyEnrollmentTime;\n              \n            this.LoyaltyEnrollmentTimeLocal = \n                odataObject.LoyaltyEnrollmentTimeLocal;\n              \n            this.OmOperatingUnitId = \n                (odataObject.OmOperatingUnitId != null) ? parseInt(odataObject.OmOperatingUnitId, 10) : undefined;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['LoyaltyCardClass'] = LoyaltyCardClass;\n    \n      /**\n      * ProductComponent entity class.\n      */\n      export class ProductComponentClass implements Entities.ProductComponent {\n      public ProductId: number;\n      public SlotId: number;\n      public Product: Entities.SimpleProduct;\n      public AdditionalChargeForComponent: number;\n      public Behavior: Entities.ProductBehavior;\n      public Description: string;\n      public Dimensions: Entities.ProductDimension[];\n      public ItemId: string;\n      public Name: string;\n      public ProductTypeValue: number;\n      public Quantity: number;\n      public UnitOfMeasure: string;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.ProductId = \n                (odataObject.ProductId != null) ? parseInt(odataObject.ProductId, 10) : undefined;\n              \n            this.SlotId = \n                (odataObject.SlotId != null) ? parseInt(odataObject.SlotId, 10) : undefined;\n              \n        if (odataObject.Product == null) {\n            this.Product = undefined;\n        } else if (odataObject.Product['@odata.type'] == null) {\n            this.Product = new SimpleProductClass(odataObject.Product);\n        } else {\n            var className: string = odataObject.Product['@odata.type'];\n            className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n            if (entityDictionary[className]) {\n                this.Product = new entityDictionary[className](odataObject.Product)\n            }\n        }\n\n      \n            this.AdditionalChargeForComponent = \n                (odataObject.AdditionalChargeForComponent != null) ? parseFloat(odataObject.AdditionalChargeForComponent) : undefined;\n              \n        if (odataObject.Behavior == null) {\n            this.Behavior = undefined;\n        } else if (odataObject.Behavior['@odata.type'] == null) {\n            this.Behavior = new ProductBehaviorClass(odataObject.Behavior);\n        } else {\n            var className: string = odataObject.Behavior['@odata.type'];\n            className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n            if (entityDictionary[className]) {\n                this.Behavior = new entityDictionary[className](odataObject.Behavior)\n            }\n        }\n\n      \n            this.Description = \n                odataObject.Description;\n              \n        this.Dimensions = undefined;\n        if (odataObject.Dimensions) {\n        this.Dimensions = [];\n        for (var i = 0; i < odataObject.Dimensions.length; i++) {\n        if (odataObject.Dimensions[i] != null) {\n        if (odataObject.Dimensions[i]['@odata.type'] != null) {\n          var className: string = odataObject.Dimensions[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.Dimensions[i] = new entityDictionary[className](odataObject.Dimensions[i])\n          }\n        } else {\n            this.Dimensions[i] = new ProductDimensionClass(odataObject.Dimensions[i]);\n        }\n                    } else {\n        this.Dimensions[i] = undefined;\n        }\n        }\n        }\n      \n            this.ItemId = \n                odataObject.ItemId;\n              \n            this.Name = \n                odataObject.Name;\n              \n            this.ProductTypeValue = \n                odataObject.ProductTypeValue;\n              \n            this.Quantity = \n                (odataObject.Quantity != null) ? parseFloat(odataObject.Quantity) : undefined;\n              \n            this.UnitOfMeasure = \n                odataObject.UnitOfMeasure;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['ProductComponentClass'] = ProductComponentClass;\n    \n      /**\n      * SimpleProduct entity class.\n      */\n      export class SimpleProductClass implements Entities.SimpleProduct {\n      public RecordId: number;\n      public ItemId: string;\n      public Name: string;\n      public Description: string;\n      public ProductTypeValue: number;\n      public DefaultUnitOfMeasure: string;\n      public BasePrice: number;\n      public Price: number;\n      public AdjustedPrice: number;\n      public MasterProductId: number;\n      public Components: Entities.ProductComponent[];\n      public IsGiftCard: boolean;\n      public ProductNumber: string;\n      public Dimensions: Entities.ProductDimension[];\n      public Behavior: Entities.ProductBehavior;\n      public LinkedProducts: Entities.SimpleLinkedProduct[];\n      public PrimaryImageUrl: string;\n      public ItemTypeValue: number;\n      public ItemServiceTypeValue: number;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.RecordId = \n                (odataObject.RecordId != null) ? parseInt(odataObject.RecordId, 10) : undefined;\n              \n            this.ItemId = \n                odataObject.ItemId;\n              \n            this.Name = \n                odataObject.Name;\n              \n            this.Description = \n                odataObject.Description;\n              \n            this.ProductTypeValue = \n                odataObject.ProductTypeValue;\n              \n            this.DefaultUnitOfMeasure = \n                odataObject.DefaultUnitOfMeasure;\n              \n            this.BasePrice = \n                (odataObject.BasePrice != null) ? parseFloat(odataObject.BasePrice) : undefined;\n              \n            this.Price = \n                (odataObject.Price != null) ? parseFloat(odataObject.Price) : undefined;\n              \n            this.AdjustedPrice = \n                (odataObject.AdjustedPrice != null) ? parseFloat(odataObject.AdjustedPrice) : undefined;\n              \n            this.MasterProductId = \n                (odataObject.MasterProductId != null) ? parseInt(odataObject.MasterProductId, 10) : undefined;\n              \n        this.Components = undefined;\n        if (odataObject.Components) {\n        this.Components = [];\n        for (var i = 0; i < odataObject.Components.length; i++) {\n        if (odataObject.Components[i] != null) {\n        if (odataObject.Components[i]['@odata.type'] != null) {\n          var className: string = odataObject.Components[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.Components[i] = new entityDictionary[className](odataObject.Components[i])\n          }\n        } else {\n            this.Components[i] = new ProductComponentClass(odataObject.Components[i]);\n        }\n                    } else {\n        this.Components[i] = undefined;\n        }\n        }\n        }\n      \n            this.IsGiftCard = \n                odataObject.IsGiftCard;\n              \n            this.ProductNumber = \n                odataObject.ProductNumber;\n              \n        this.Dimensions = undefined;\n        if (odataObject.Dimensions) {\n        this.Dimensions = [];\n        for (var i = 0; i < odataObject.Dimensions.length; i++) {\n        if (odataObject.Dimensions[i] != null) {\n        if (odataObject.Dimensions[i]['@odata.type'] != null) {\n          var className: string = odataObject.Dimensions[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.Dimensions[i] = new entityDictionary[className](odataObject.Dimensions[i])\n          }\n        } else {\n            this.Dimensions[i] = new ProductDimensionClass(odataObject.Dimensions[i]);\n        }\n                    } else {\n        this.Dimensions[i] = undefined;\n        }\n        }\n        }\n      \n        if (odataObject.Behavior == null) {\n            this.Behavior = undefined;\n        } else if (odataObject.Behavior['@odata.type'] == null) {\n            this.Behavior = new ProductBehaviorClass(odataObject.Behavior);\n        } else {\n            var className: string = odataObject.Behavior['@odata.type'];\n            className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n            if (entityDictionary[className]) {\n                this.Behavior = new entityDictionary[className](odataObject.Behavior)\n            }\n        }\n\n      \n        this.LinkedProducts = undefined;\n        if (odataObject.LinkedProducts) {\n        this.LinkedProducts = [];\n        for (var i = 0; i < odataObject.LinkedProducts.length; i++) {\n        if (odataObject.LinkedProducts[i] != null) {\n        if (odataObject.LinkedProducts[i]['@odata.type'] != null) {\n          var className: string = odataObject.LinkedProducts[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.LinkedProducts[i] = new entityDictionary[className](odataObject.LinkedProducts[i])\n          }\n        } else {\n            this.LinkedProducts[i] = new SimpleLinkedProductClass(odataObject.LinkedProducts[i]);\n        }\n                    } else {\n        this.LinkedProducts[i] = undefined;\n        }\n        }\n        }\n      \n            this.PrimaryImageUrl = \n                odataObject.PrimaryImageUrl;\n              \n            this.ItemTypeValue = \n                odataObject.ItemTypeValue;\n              \n            this.ItemServiceTypeValue = \n                odataObject.ItemServiceTypeValue;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['SimpleProductClass'] = SimpleProductClass;\n    \n      /**\n      * ProductBehavior entity class.\n      */\n      export class ProductBehaviorClass implements Entities.ProductBehavior {\n      public HasSerialNumber: boolean;\n      public IsDiscountAllowed: boolean;\n      public IsManualDiscountAllowed: boolean;\n      public IsKitDisassemblyAllowed: boolean;\n      public IsNegativeQuantityAllowed: boolean;\n      public IsReturnAllowed: boolean;\n      public IsSaleAtPhysicalStoresAllowed: boolean;\n      public IsZeroSalePriceAllowed: boolean;\n      public KeyInPriceValue: number;\n      public KeyInQuantityValue: number;\n      public MustKeyInComment: boolean;\n      public MustPrintIndividualShelfLabelsForVariants: boolean;\n      public MustPromptForSerialNumberOnlyAtSale: boolean;\n      public MustWeighProductAtSale: boolean;\n      public ValidFromDateForSaleAtPhysicalStores: Date;\n      public ValidToDateForSaleAtPhysicalStores: Date;\n      public IsStorageDimensionGroupLocationActive: boolean;\n      public IsStorageDimensionGroupLocationAllowBlankReceiptEnabled: boolean;\n      public AllowNegativePhysicalInventory: boolean;\n      public IsStockedProduct: boolean;\n      public IsBlankSerialNumberAllowed: boolean;\n      public IsBlankSerialNumberReceiptAllowed: boolean;\n      public IsSerialNumberControlEnabled: boolean;\n      public IsStorageDimensionGroupLocationBlankIssueAllowed: boolean;\n      public IsSerialNumberRequired: boolean;\n      public DefaultQuantity: number;\n      public MaximumQuantity: number;\n      public MinimumQuantity: number;\n      public MultipleOfQuantity: number;\n      public InventoryLocationId: string;\n      public IsSaleAtSelfCheckoutRegistersAllowed: boolean;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.HasSerialNumber = \n                odataObject.HasSerialNumber;\n              \n            this.IsDiscountAllowed = \n                odataObject.IsDiscountAllowed;\n              \n            this.IsManualDiscountAllowed = \n                odataObject.IsManualDiscountAllowed;\n              \n            this.IsKitDisassemblyAllowed = \n                odataObject.IsKitDisassemblyAllowed;\n              \n            this.IsNegativeQuantityAllowed = \n                odataObject.IsNegativeQuantityAllowed;\n              \n            this.IsReturnAllowed = \n                odataObject.IsReturnAllowed;\n              \n            this.IsSaleAtPhysicalStoresAllowed = \n                odataObject.IsSaleAtPhysicalStoresAllowed;\n              \n            this.IsZeroSalePriceAllowed = \n                odataObject.IsZeroSalePriceAllowed;\n              \n            this.KeyInPriceValue = \n                odataObject.KeyInPriceValue;\n              \n            this.KeyInQuantityValue = \n                odataObject.KeyInQuantityValue;\n              \n            this.MustKeyInComment = \n                odataObject.MustKeyInComment;\n              \n            this.MustPrintIndividualShelfLabelsForVariants = \n                odataObject.MustPrintIndividualShelfLabelsForVariants;\n              \n            this.MustPromptForSerialNumberOnlyAtSale = \n                odataObject.MustPromptForSerialNumberOnlyAtSale;\n              \n            this.MustWeighProductAtSale = \n                odataObject.MustWeighProductAtSale;\n              \n            this.ValidFromDateForSaleAtPhysicalStores = \n                (odataObject.ValidFromDateForSaleAtPhysicalStores instanceof Date) ? odataObject.ValidFromDateForSaleAtPhysicalStores\n                : (odataObject.ValidFromDateForSaleAtPhysicalStores != null) ? jsonLightReadStringPropertyValue(odataObject.ValidFromDateForSaleAtPhysicalStores, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.ValidToDateForSaleAtPhysicalStores = \n                (odataObject.ValidToDateForSaleAtPhysicalStores instanceof Date) ? odataObject.ValidToDateForSaleAtPhysicalStores\n                : (odataObject.ValidToDateForSaleAtPhysicalStores != null) ? jsonLightReadStringPropertyValue(odataObject.ValidToDateForSaleAtPhysicalStores, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.IsStorageDimensionGroupLocationActive = \n                odataObject.IsStorageDimensionGroupLocationActive;\n              \n            this.IsStorageDimensionGroupLocationAllowBlankReceiptEnabled = \n                odataObject.IsStorageDimensionGroupLocationAllowBlankReceiptEnabled;\n              \n            this.AllowNegativePhysicalInventory = \n                odataObject.AllowNegativePhysicalInventory;\n              \n            this.IsStockedProduct = \n                odataObject.IsStockedProduct;\n              \n            this.IsBlankSerialNumberAllowed = \n                odataObject.IsBlankSerialNumberAllowed;\n              \n            this.IsBlankSerialNumberReceiptAllowed = \n                odataObject.IsBlankSerialNumberReceiptAllowed;\n              \n            this.IsSerialNumberControlEnabled = \n                odataObject.IsSerialNumberControlEnabled;\n              \n            this.IsStorageDimensionGroupLocationBlankIssueAllowed = \n                odataObject.IsStorageDimensionGroupLocationBlankIssueAllowed;\n              \n            this.IsSerialNumberRequired = \n                odataObject.IsSerialNumberRequired;\n              \n            this.DefaultQuantity = \n                (odataObject.DefaultQuantity != null) ? parseFloat(odataObject.DefaultQuantity) : undefined;\n              \n            this.MaximumQuantity = \n                (odataObject.MaximumQuantity != null) ? parseFloat(odataObject.MaximumQuantity) : undefined;\n              \n            this.MinimumQuantity = \n                (odataObject.MinimumQuantity != null) ? parseFloat(odataObject.MinimumQuantity) : undefined;\n              \n            this.MultipleOfQuantity = \n                (odataObject.MultipleOfQuantity != null) ? parseFloat(odataObject.MultipleOfQuantity) : undefined;\n              \n            this.InventoryLocationId = \n                odataObject.InventoryLocationId;\n              \n            this.IsSaleAtSelfCheckoutRegistersAllowed = \n                odataObject.IsSaleAtSelfCheckoutRegistersAllowed;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['ProductBehaviorClass'] = ProductBehaviorClass;\n    \n      /**\n      * SimpleLinkedProduct entity class.\n      */\n      export class SimpleLinkedProductClass implements Entities.SimpleLinkedProduct {\n      public RecordId: number;\n      public ItemId: string;\n      public Name: string;\n      public Description: string;\n      public ProductTypeValue: number;\n      public DefaultUnitOfMeasure: string;\n      public BasePrice: number;\n      public Price: number;\n      public AdjustedPrice: number;\n      public Quantity: number;\n      public Behavior: Entities.ProductBehavior;\n      public Dimensions: Entities.ProductDimension[];\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.RecordId = \n                (odataObject.RecordId != null) ? parseInt(odataObject.RecordId, 10) : undefined;\n              \n            this.ItemId = \n                odataObject.ItemId;\n              \n            this.Name = \n                odataObject.Name;\n              \n            this.Description = \n                odataObject.Description;\n              \n            this.ProductTypeValue = \n                odataObject.ProductTypeValue;\n              \n            this.DefaultUnitOfMeasure = \n                odataObject.DefaultUnitOfMeasure;\n              \n            this.BasePrice = \n                (odataObject.BasePrice != null) ? parseFloat(odataObject.BasePrice) : undefined;\n              \n            this.Price = \n                (odataObject.Price != null) ? parseFloat(odataObject.Price) : undefined;\n              \n            this.AdjustedPrice = \n                (odataObject.AdjustedPrice != null) ? parseFloat(odataObject.AdjustedPrice) : undefined;\n              \n            this.Quantity = \n                (odataObject.Quantity != null) ? parseFloat(odataObject.Quantity) : undefined;\n              \n        if (odataObject.Behavior == null) {\n            this.Behavior = undefined;\n        } else if (odataObject.Behavior['@odata.type'] == null) {\n            this.Behavior = new ProductBehaviorClass(odataObject.Behavior);\n        } else {\n            var className: string = odataObject.Behavior['@odata.type'];\n            className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n            if (entityDictionary[className]) {\n                this.Behavior = new entityDictionary[className](odataObject.Behavior)\n            }\n        }\n\n      \n        this.Dimensions = undefined;\n        if (odataObject.Dimensions) {\n        this.Dimensions = [];\n        for (var i = 0; i < odataObject.Dimensions.length; i++) {\n        if (odataObject.Dimensions[i] != null) {\n        if (odataObject.Dimensions[i]['@odata.type'] != null) {\n          var className: string = odataObject.Dimensions[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.Dimensions[i] = new entityDictionary[className](odataObject.Dimensions[i])\n          }\n        } else {\n            this.Dimensions[i] = new ProductDimensionClass(odataObject.Dimensions[i]);\n        }\n                    } else {\n        this.Dimensions[i] = undefined;\n        }\n        }\n        }\n      \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['SimpleLinkedProductClass'] = SimpleLinkedProductClass;\n    \n      /**\n      * ProductSearchResult entity class.\n      */\n      export class ProductSearchResultClass implements Entities.ProductSearchResult {\n      public ItemId: string;\n      public Name: string;\n      public Price: number;\n      public PrimaryImageUrl: string;\n      public RecordId: number;\n      public ProductNumber: string;\n      public TrackingId: string;\n      public AverageRating: number;\n      public TotalRatings: number;\n      public Description: string;\n      public BasePrice: number;\n      public MinVariantPrice: number;\n      public MaxVariantPrice: number;\n      public DisplayOrder: number;\n      public AttributeValues: Entities.AttributeValue[];\n      public IsMasterProduct: boolean;\n      public MasterProductId: number;\n      public DefaultUnitOfMeasure: string;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.ItemId = \n                odataObject.ItemId;\n              \n            this.Name = \n                odataObject.Name;\n              \n            this.Price = \n                (odataObject.Price != null) ? parseFloat(odataObject.Price) : undefined;\n              \n            this.PrimaryImageUrl = \n                odataObject.PrimaryImageUrl;\n              \n            this.RecordId = \n                (odataObject.RecordId != null) ? parseInt(odataObject.RecordId, 10) : undefined;\n              \n            this.ProductNumber = \n                odataObject.ProductNumber;\n              \n            this.TrackingId = \n                odataObject.TrackingId;\n              \n            this.AverageRating = \n                (odataObject.AverageRating != null) ? parseFloat(odataObject.AverageRating) : undefined;\n              \n            this.TotalRatings = \n                odataObject.TotalRatings;\n              \n            this.Description = \n                odataObject.Description;\n              \n            this.BasePrice = \n                (odataObject.BasePrice != null) ? parseFloat(odataObject.BasePrice) : undefined;\n              \n            this.MinVariantPrice = \n                (odataObject.MinVariantPrice != null) ? parseFloat(odataObject.MinVariantPrice) : undefined;\n              \n            this.MaxVariantPrice = \n                (odataObject.MaxVariantPrice != null) ? parseFloat(odataObject.MaxVariantPrice) : undefined;\n              \n            this.DisplayOrder = \n                (odataObject.DisplayOrder != null) ? parseFloat(odataObject.DisplayOrder) : undefined;\n              \n        this.AttributeValues = undefined;\n        if (odataObject.AttributeValues) {\n        this.AttributeValues = [];\n        for (var i = 0; i < odataObject.AttributeValues.length; i++) {\n        if (odataObject.AttributeValues[i] != null) {\n        if (odataObject.AttributeValues[i]['@odata.type'] != null) {\n          var className: string = odataObject.AttributeValues[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.AttributeValues[i] = new entityDictionary[className](odataObject.AttributeValues[i])\n          }\n        } else {\n            this.AttributeValues[i] = new AttributeValueClass(odataObject.AttributeValues[i]);\n        }\n                    } else {\n        this.AttributeValues[i] = undefined;\n        }\n        }\n        }\n      \n            this.IsMasterProduct = \n                odataObject.IsMasterProduct;\n              \n            this.MasterProductId = \n                (odataObject.MasterProductId != null) ? parseInt(odataObject.MasterProductId, 10) : undefined;\n              \n            this.DefaultUnitOfMeasure = \n                odataObject.DefaultUnitOfMeasure;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['ProductSearchResultClass'] = ProductSearchResultClass;\n    \n      /**\n      * SearchSuggestion entity class.\n      */\n      export class SearchSuggestionClass implements Entities.SearchSuggestion {\n      public Value: string;\n      public Value2: Entities.CommerceProperty;\n      public Value3: Entities.CommerceProperty;\n      public Value4: Entities.CommerceProperty;\n      public SuggestionType: string;\n      public Id: string;\n      public ImageUrl: string;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.Value = \n                odataObject.Value;\n              \n        if (odataObject.Value2 == null) {\n            this.Value2 = undefined;\n        } else if (odataObject.Value2['@odata.type'] == null) {\n            this.Value2 = new CommercePropertyClass(odataObject.Value2);\n        } else {\n            var className: string = odataObject.Value2['@odata.type'];\n            className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n            if (entityDictionary[className]) {\n                this.Value2 = new entityDictionary[className](odataObject.Value2)\n            }\n        }\n\n      \n        if (odataObject.Value3 == null) {\n            this.Value3 = undefined;\n        } else if (odataObject.Value3['@odata.type'] == null) {\n            this.Value3 = new CommercePropertyClass(odataObject.Value3);\n        } else {\n            var className: string = odataObject.Value3['@odata.type'];\n            className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n            if (entityDictionary[className]) {\n                this.Value3 = new entityDictionary[className](odataObject.Value3)\n            }\n        }\n\n      \n        if (odataObject.Value4 == null) {\n            this.Value4 = undefined;\n        } else if (odataObject.Value4['@odata.type'] == null) {\n            this.Value4 = new CommercePropertyClass(odataObject.Value4);\n        } else {\n            var className: string = odataObject.Value4['@odata.type'];\n            className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n            if (entityDictionary[className]) {\n                this.Value4 = new entityDictionary[className](odataObject.Value4)\n            }\n        }\n\n      \n            this.SuggestionType = \n                odataObject.SuggestionType;\n              \n            this.Id = \n                odataObject.Id;\n              \n            this.ImageUrl = \n                odataObject.ImageUrl;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['SearchSuggestionClass'] = SearchSuggestionClass;\n    \n      /**\n      * LoyaltyPointRedemptionEstimate entity class.\n      */\n      export class LoyaltyPointRedemptionEstimateClass implements Entities.LoyaltyPointRedemptionEstimate {\n      public MaxCurrencyValueOfLoyaltyPoints: number;\n      public RewardPointToRedeemList: Entities.LoyaltyRewardPointLine[];\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.MaxCurrencyValueOfLoyaltyPoints = \n                (odataObject.MaxCurrencyValueOfLoyaltyPoints != null) ? parseFloat(odataObject.MaxCurrencyValueOfLoyaltyPoints) : undefined;\n              \n        this.RewardPointToRedeemList = undefined;\n        if (odataObject.RewardPointToRedeemList) {\n        this.RewardPointToRedeemList = [];\n        for (var i = 0; i < odataObject.RewardPointToRedeemList.length; i++) {\n        if (odataObject.RewardPointToRedeemList[i] != null) {\n        if (odataObject.RewardPointToRedeemList[i]['@odata.type'] != null) {\n          var className: string = odataObject.RewardPointToRedeemList[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.RewardPointToRedeemList[i] = new entityDictionary[className](odataObject.RewardPointToRedeemList[i])\n          }\n        } else {\n            this.RewardPointToRedeemList[i] = new LoyaltyRewardPointLineClass(odataObject.RewardPointToRedeemList[i]);\n        }\n                    } else {\n        this.RewardPointToRedeemList[i] = undefined;\n        }\n        }\n        }\n      \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['LoyaltyPointRedemptionEstimateClass'] = LoyaltyPointRedemptionEstimateClass;\n    \n      /**\n      * LoyaltyGroup entity class.\n      */\n      export class LoyaltyGroupClass implements Entities.LoyaltyGroup {\n      public Description: string;\n      public Name: string;\n      public RecordId: number;\n      public LoyaltyTiers: Entities.LoyaltyTier[];\n      public LoyaltyCardTiers: Entities.LoyaltyCardTier[];\n      public HighestActiveLoyaltyCardTier: number;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.Description = \n                odataObject.Description;\n              \n            this.Name = \n                odataObject.Name;\n              \n            this.RecordId = \n                (odataObject.RecordId != null) ? parseInt(odataObject.RecordId, 10) : undefined;\n              \n        this.LoyaltyTiers = undefined;\n        if (odataObject.LoyaltyTiers) {\n        this.LoyaltyTiers = [];\n        for (var i = 0; i < odataObject.LoyaltyTiers.length; i++) {\n        if (odataObject.LoyaltyTiers[i] != null) {\n        if (odataObject.LoyaltyTiers[i]['@odata.type'] != null) {\n          var className: string = odataObject.LoyaltyTiers[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.LoyaltyTiers[i] = new entityDictionary[className](odataObject.LoyaltyTiers[i])\n          }\n        } else {\n            this.LoyaltyTiers[i] = new LoyaltyTierClass(odataObject.LoyaltyTiers[i]);\n        }\n                    } else {\n        this.LoyaltyTiers[i] = undefined;\n        }\n        }\n        }\n      \n        this.LoyaltyCardTiers = undefined;\n        if (odataObject.LoyaltyCardTiers) {\n        this.LoyaltyCardTiers = [];\n        for (var i = 0; i < odataObject.LoyaltyCardTiers.length; i++) {\n        if (odataObject.LoyaltyCardTiers[i] != null) {\n        if (odataObject.LoyaltyCardTiers[i]['@odata.type'] != null) {\n          var className: string = odataObject.LoyaltyCardTiers[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.LoyaltyCardTiers[i] = new entityDictionary[className](odataObject.LoyaltyCardTiers[i])\n          }\n        } else {\n            this.LoyaltyCardTiers[i] = new LoyaltyCardTierClass(odataObject.LoyaltyCardTiers[i]);\n        }\n                    } else {\n        this.LoyaltyCardTiers[i] = undefined;\n        }\n        }\n        }\n      \n            this.HighestActiveLoyaltyCardTier = \n                (odataObject.HighestActiveLoyaltyCardTier != null) ? parseInt(odataObject.HighestActiveLoyaltyCardTier, 10) : undefined;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['LoyaltyGroupClass'] = LoyaltyGroupClass;\n    \n      /**\n      * LoyaltyTier entity class.\n      */\n      export class LoyaltyTierClass implements Entities.LoyaltyTier {\n      public Description: string;\n      public RecordId: number;\n      public TierId: string;\n      public TierLevel: number;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.Description = \n                odataObject.Description;\n              \n            this.RecordId = \n                (odataObject.RecordId != null) ? parseInt(odataObject.RecordId, 10) : undefined;\n              \n            this.TierId = \n                odataObject.TierId;\n              \n            this.TierLevel = \n                (odataObject.TierLevel != null) ? parseFloat(odataObject.TierLevel) : undefined;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['LoyaltyTierClass'] = LoyaltyTierClass;\n    \n      /**\n      * LoyaltyCardTier entity class.\n      */\n      export class LoyaltyCardTierClass implements Entities.LoyaltyCardTier {\n      public RecordId: number;\n      public TierId: string;\n      public LoyaltyTierRecordId: number;\n      public ValidFrom: Date;\n      public ValidTo: Date;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.RecordId = \n                (odataObject.RecordId != null) ? parseInt(odataObject.RecordId, 10) : undefined;\n              \n            this.TierId = \n                odataObject.TierId;\n              \n            this.LoyaltyTierRecordId = \n                (odataObject.LoyaltyTierRecordId != null) ? parseInt(odataObject.LoyaltyTierRecordId, 10) : undefined;\n              \n            this.ValidFrom = \n                (odataObject.ValidFrom instanceof Date) ? odataObject.ValidFrom\n                : (odataObject.ValidFrom != null) ? jsonLightReadStringPropertyValue(odataObject.ValidFrom, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.ValidTo = \n                (odataObject.ValidTo instanceof Date) ? odataObject.ValidTo\n                : (odataObject.ValidTo != null) ? jsonLightReadStringPropertyValue(odataObject.ValidTo, \"Edm.DateTimeOffset\", false) : undefined;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['LoyaltyCardTierClass'] = LoyaltyCardTierClass;\n    \n      /**\n      * LoyaltyRewardPoint entity class.\n      */\n      export class LoyaltyRewardPointClass implements Entities.LoyaltyRewardPoint {\n      public IsRedeemable: boolean;\n      public RewardPointCurrency: string;\n      public RewardPointTypeValue: number;\n      public Description: string;\n      public RewardPointId: string;\n      public IssuedPoints: number;\n      public UsedPoints: number;\n      public ExpiredPoints: number;\n      public ActivePoints: number;\n      public PointsExpiringSoon: number;\n      public UnvestedPoints: number;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.IsRedeemable = \n                odataObject.IsRedeemable;\n              \n            this.RewardPointCurrency = \n                odataObject.RewardPointCurrency;\n              \n            this.RewardPointTypeValue = \n                odataObject.RewardPointTypeValue;\n              \n            this.Description = \n                odataObject.Description;\n              \n            this.RewardPointId = \n                odataObject.RewardPointId;\n              \n            this.IssuedPoints = \n                (odataObject.IssuedPoints != null) ? parseFloat(odataObject.IssuedPoints) : undefined;\n              \n            this.UsedPoints = \n                (odataObject.UsedPoints != null) ? parseFloat(odataObject.UsedPoints) : undefined;\n              \n            this.ExpiredPoints = \n                (odataObject.ExpiredPoints != null) ? parseFloat(odataObject.ExpiredPoints) : undefined;\n              \n            this.ActivePoints = \n                (odataObject.ActivePoints != null) ? parseFloat(odataObject.ActivePoints) : undefined;\n              \n            this.PointsExpiringSoon = \n                (odataObject.PointsExpiringSoon != null) ? parseFloat(odataObject.PointsExpiringSoon) : undefined;\n              \n            this.UnvestedPoints = \n                (odataObject.UnvestedPoints != null) ? parseFloat(odataObject.UnvestedPoints) : undefined;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['LoyaltyRewardPointClass'] = LoyaltyRewardPointClass;\n    \n      /**\n      * LoyaltyCardTransaction entity class.\n      */\n      export class LoyaltyCardTransactionClass implements Entities.LoyaltyCardTransaction {\n      public ChannelName: string;\n      public EntryDateTime: Date;\n      public EntryTypeValue: number;\n      public ExpirationDate: Date;\n      public RewardPointAmountQuantity: number;\n      public TransactionId: string;\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.ChannelName = \n                odataObject.ChannelName;\n              \n            this.EntryDateTime = \n                (odataObject.EntryDateTime instanceof Date) ? odataObject.EntryDateTime\n                : (odataObject.EntryDateTime != null) ? jsonLightReadStringPropertyValue(odataObject.EntryDateTime, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.EntryTypeValue = \n                odataObject.EntryTypeValue;\n              \n            this.ExpirationDate = \n                (odataObject.ExpirationDate instanceof Date) ? odataObject.ExpirationDate\n                : (odataObject.ExpirationDate != null) ? jsonLightReadStringPropertyValue(odataObject.ExpirationDate, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.RewardPointAmountQuantity = \n                (odataObject.RewardPointAmountQuantity != null) ? parseFloat(odataObject.RewardPointAmountQuantity) : undefined;\n              \n            this.TransactionId = \n                odataObject.TransactionId;\n              \n      }\n      }\n      entityDictionary['LoyaltyCardTransactionClass'] = LoyaltyCardTransactionClass;\n    \n      /**\n      * GiftCard entity class.\n      */\n      export class GiftCardClass implements Entities.GiftCard {\n      public Id: string;\n      public Balance: number;\n      public BalanceCurrencyCode: string;\n      public BalanceInCardCurrency: number;\n      public CardCurrencyCode: string;\n      public GiftCardIssueAmount: number;\n      public GiftCardActiveFrom: Date;\n      public GiftCardExpireDate: Date;\n      public GiftCardHistoryDetails: string;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.Id = \n                odataObject.Id;\n              \n            this.Balance = \n                (odataObject.Balance != null) ? parseFloat(odataObject.Balance) : undefined;\n              \n            this.BalanceCurrencyCode = \n                odataObject.BalanceCurrencyCode;\n              \n            this.BalanceInCardCurrency = \n                (odataObject.BalanceInCardCurrency != null) ? parseFloat(odataObject.BalanceInCardCurrency) : undefined;\n              \n            this.CardCurrencyCode = \n                odataObject.CardCurrencyCode;\n              \n            this.GiftCardIssueAmount = \n                (odataObject.GiftCardIssueAmount != null) ? parseFloat(odataObject.GiftCardIssueAmount) : undefined;\n              \n            this.GiftCardActiveFrom = \n                (odataObject.GiftCardActiveFrom instanceof Date) ? odataObject.GiftCardActiveFrom\n                : (odataObject.GiftCardActiveFrom != null) ? jsonLightReadStringPropertyValue(odataObject.GiftCardActiveFrom, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.GiftCardExpireDate = \n                (odataObject.GiftCardExpireDate instanceof Date) ? odataObject.GiftCardExpireDate\n                : (odataObject.GiftCardExpireDate != null) ? jsonLightReadStringPropertyValue(odataObject.GiftCardExpireDate, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.GiftCardHistoryDetails = \n                odataObject.GiftCardHistoryDetails;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['GiftCardClass'] = GiftCardClass;\n    \n      /**\n      * OperationPermission entity class.\n      */\n      export class OperationPermissionClass implements Entities.OperationPermission {\n      public OperationName: string;\n      public OperationId: number;\n      public CheckUserAccess: boolean;\n      public AllowAnonymousAccess: boolean;\n      public AllowCustomerAccess: boolean;\n      public AllowApplicationAccess: boolean;\n      public IsEnabledForTaskManagement: boolean;\n      public Permissions: string[];\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.OperationName = \n                odataObject.OperationName;\n              \n            this.OperationId = \n                odataObject.OperationId;\n              \n            this.CheckUserAccess = \n                odataObject.CheckUserAccess;\n              \n            this.AllowAnonymousAccess = \n                odataObject.AllowAnonymousAccess;\n              \n            this.AllowCustomerAccess = \n                odataObject.AllowCustomerAccess;\n              \n            this.AllowApplicationAccess = \n                odataObject.AllowApplicationAccess;\n              \n            this.IsEnabledForTaskManagement = \n                odataObject.IsEnabledForTaskManagement;\n              \n        this.Permissions = undefined;\n        if (odataObject.Permissions) {\n        this.Permissions = [];\n        for (var i = 0; i < odataObject.Permissions.length; i++) {\n        if (odataObject.Permissions[i] != null) {\n            this.Permissions[i] = \n                odataObject.Permissions[i];\n                            } else {\n        this.Permissions[i] = undefined;\n        }\n        }\n        }\n      \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['OperationPermissionClass'] = OperationPermissionClass;\n    \n      /**\n      * StateProvinceInfo entity class.\n      */\n      export class StateProvinceInfoClass implements Entities.StateProvinceInfo {\n      public CountryRegionId: string;\n      public StateId: string;\n      public StateName: string;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.CountryRegionId = \n                odataObject.CountryRegionId;\n              \n            this.StateId = \n                odataObject.StateId;\n              \n            this.StateName = \n                odataObject.StateName;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['StateProvinceInfoClass'] = StateProvinceInfoClass;\n    \n      /**\n      * TransactionLog entity class.\n      */\n      export class TransactionLogClass\n        extends TransactionClass\n       implements Entities.TransactionLog {\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      super(odataObject);odataObject = odataObject || {};\n        this[\"@odata.type\"] = \"#Microsoft.Dynamics.Commerce.Runtime.DataModel.TransactionLog\";\n      \n      }\n      }\n      entityDictionary['TransactionLogClass'] = TransactionLogClass;\n    \n      /**\n      * KitTransaction entity class.\n      */\n      export class KitTransactionClass\n        extends TransactionLogClass\n       implements Entities.KitTransaction {\n      public KitTransactionLines: Entities.KitTransactionLine[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      super(odataObject);odataObject = odataObject || {};\n        this.KitTransactionLines = undefined;\n        if (odataObject.KitTransactionLines) {\n        this.KitTransactionLines = [];\n        for (var i = 0; i < odataObject.KitTransactionLines.length; i++) {\n        if (odataObject.KitTransactionLines[i] != null) {\n        if (odataObject.KitTransactionLines[i]['@odata.type'] != null) {\n          var className: string = odataObject.KitTransactionLines[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.KitTransactionLines[i] = new entityDictionary[className](odataObject.KitTransactionLines[i])\n          }\n        } else {\n            this.KitTransactionLines[i] = new KitTransactionLineClass(odataObject.KitTransactionLines[i]);\n        }\n                    } else {\n        this.KitTransactionLines[i] = undefined;\n        }\n        }\n        }\n      \n        this[\"@odata.type\"] = \"#Microsoft.Dynamics.Commerce.Runtime.DataModel.KitTransaction\";\n      \n      }\n      }\n      entityDictionary['KitTransactionClass'] = KitTransactionClass;\n    \n      /**\n      * SalesTaxGroup entity class.\n      */\n      export class SalesTaxGroupClass implements Entities.SalesTaxGroup {\n      public RecordId: number;\n      public TaxGroup: string;\n      public TaxGroupName: string;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.RecordId = \n                (odataObject.RecordId != null) ? parseInt(odataObject.RecordId, 10) : undefined;\n              \n            this.TaxGroup = \n                odataObject.TaxGroup;\n              \n            this.TaxGroupName = \n                odataObject.TaxGroupName;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['SalesTaxGroupClass'] = SalesTaxGroupClass;\n    \n      /**\n      * ProductProperty entity class.\n      */\n      export class ProductPropertyClass implements Entities.ProductProperty {\n      public ValueString: string;\n      public UnitText: string;\n      public PropertyTypeValue: number;\n      public KeyName: string;\n      public FriendlyName: string;\n      public RecordId: number;\n      public IsDimensionProperty: boolean;\n      public AttributeValueId: number;\n      public SwatchImageUrl: string;\n      public SwatchColorHexCode: string;\n      public GroupId: number;\n      public GroupTypeValue: number;\n      public GroupName: string;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      public ProductId: number;\n      public CatalogId: number;\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.ValueString = \n                odataObject.ValueString;\n              \n            this.UnitText = \n                odataObject.UnitText;\n              \n            this.PropertyTypeValue = \n                odataObject.PropertyTypeValue;\n              \n            this.KeyName = \n                odataObject.KeyName;\n              \n            this.FriendlyName = \n                odataObject.FriendlyName;\n              \n            this.RecordId = \n                (odataObject.RecordId != null) ? parseInt(odataObject.RecordId, 10) : undefined;\n              \n            this.IsDimensionProperty = \n                odataObject.IsDimensionProperty;\n              \n            this.AttributeValueId = \n                (odataObject.AttributeValueId != null) ? parseInt(odataObject.AttributeValueId, 10) : undefined;\n              \n            this.SwatchImageUrl = \n                odataObject.SwatchImageUrl;\n              \n            this.SwatchColorHexCode = \n                odataObject.SwatchColorHexCode;\n              \n            this.GroupId = \n                (odataObject.GroupId != null) ? parseInt(odataObject.GroupId, 10) : undefined;\n              \n            this.GroupTypeValue = \n                odataObject.GroupTypeValue;\n              \n            this.GroupName = \n                odataObject.GroupName;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n            this.ProductId = \n                (odataObject.ProductId != null) ? parseInt(odataObject.ProductId, 10) : undefined;\n              \n            this.CatalogId = \n                (odataObject.CatalogId != null) ? parseInt(odataObject.CatalogId, 10) : undefined;\n              \n      }\n      }\n      entityDictionary['ProductPropertyClass'] = ProductPropertyClass;\n    \n      /**\n      * ProductCompositionInformation entity class.\n      */\n      export class ProductCompositionInformationClass implements Entities.ProductCompositionInformation {\n      public VariantInformation: Entities.ProductVariantInformation;\n      public KitDefinition: Entities.KitDefinition;\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n        if (odataObject.VariantInformation == null) {\n            this.VariantInformation = undefined;\n        } else if (odataObject.VariantInformation['@odata.type'] == null) {\n            this.VariantInformation = new ProductVariantInformationClass(odataObject.VariantInformation);\n        } else {\n            var className: string = odataObject.VariantInformation['@odata.type'];\n            className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n            if (entityDictionary[className]) {\n                this.VariantInformation = new entityDictionary[className](odataObject.VariantInformation)\n            }\n        }\n\n      \n        if (odataObject.KitDefinition == null) {\n            this.KitDefinition = undefined;\n        } else if (odataObject.KitDefinition['@odata.type'] == null) {\n            this.KitDefinition = new KitDefinitionClass(odataObject.KitDefinition);\n        } else {\n            var className: string = odataObject.KitDefinition['@odata.type'];\n            className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n            if (entityDictionary[className]) {\n                this.KitDefinition = new entityDictionary[className](odataObject.KitDefinition)\n            }\n        }\n\n      \n      }\n      }\n      entityDictionary['ProductCompositionInformationClass'] = ProductCompositionInformationClass;\n    \n      /**\n      * ProductVariantInformation entity class.\n      */\n      export class ProductVariantInformationClass implements Entities.ProductVariantInformation {\n      public ActiveVariantProductId: number;\n      public Variants: Entities.ProductVariant[];\n      public Dimensions: Entities.ProductDimensionSet[];\n      public ItemId: string;\n      public MasterProductId: number;\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.ActiveVariantProductId = \n                (odataObject.ActiveVariantProductId != null) ? parseInt(odataObject.ActiveVariantProductId, 10) : undefined;\n              \n        this.Variants = undefined;\n        if (odataObject.Variants) {\n        this.Variants = [];\n        for (var i = 0; i < odataObject.Variants.length; i++) {\n        if (odataObject.Variants[i] != null) {\n        if (odataObject.Variants[i]['@odata.type'] != null) {\n          var className: string = odataObject.Variants[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.Variants[i] = new entityDictionary[className](odataObject.Variants[i])\n          }\n        } else {\n            this.Variants[i] = new ProductVariantClass(odataObject.Variants[i]);\n        }\n                    } else {\n        this.Variants[i] = undefined;\n        }\n        }\n        }\n      \n        this.Dimensions = undefined;\n        if (odataObject.Dimensions) {\n        this.Dimensions = [];\n        for (var i = 0; i < odataObject.Dimensions.length; i++) {\n        if (odataObject.Dimensions[i] != null) {\n        if (odataObject.Dimensions[i]['@odata.type'] != null) {\n          var className: string = odataObject.Dimensions[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.Dimensions[i] = new entityDictionary[className](odataObject.Dimensions[i])\n          }\n        } else {\n            this.Dimensions[i] = new ProductDimensionSetClass(odataObject.Dimensions[i]);\n        }\n                    } else {\n        this.Dimensions[i] = undefined;\n        }\n        }\n        }\n      \n            this.ItemId = \n                odataObject.ItemId;\n              \n            this.MasterProductId = \n                (odataObject.MasterProductId != null) ? parseInt(odataObject.MasterProductId, 10) : undefined;\n              \n      }\n      }\n      entityDictionary['ProductVariantInformationClass'] = ProductVariantInformationClass;\n    \n      /**\n      * ProductChangeTrackingInformation entity class.\n      */\n      export class ProductChangeTrackingInformationClass implements Entities.ProductChangeTrackingInformation {\n      public ModifiedDateTime: Date;\n      public ChangeActionValue: number;\n      public RequestedActionValue: number;\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.ModifiedDateTime = \n                (odataObject.ModifiedDateTime instanceof Date) ? odataObject.ModifiedDateTime\n                : (odataObject.ModifiedDateTime != null) ? jsonLightReadStringPropertyValue(odataObject.ModifiedDateTime, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.ChangeActionValue = \n                odataObject.ChangeActionValue;\n              \n            this.RequestedActionValue = \n                odataObject.RequestedActionValue;\n              \n      }\n      }\n      entityDictionary['ProductChangeTrackingInformationClass'] = ProductChangeTrackingInformationClass;\n    \n      /**\n      * ProductDimensionSet entity class.\n      */\n      export class ProductDimensionSetClass implements Entities.ProductDimensionSet {\n      public DimensionKey: string;\n      public DimensionValues: Entities.ProductDimensionValueSet[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.DimensionKey = \n                odataObject.DimensionKey;\n              \n        this.DimensionValues = undefined;\n        if (odataObject.DimensionValues) {\n        this.DimensionValues = [];\n        for (var i = 0; i < odataObject.DimensionValues.length; i++) {\n        if (odataObject.DimensionValues[i] != null) {\n        if (odataObject.DimensionValues[i]['@odata.type'] != null) {\n          var className: string = odataObject.DimensionValues[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.DimensionValues[i] = new entityDictionary[className](odataObject.DimensionValues[i])\n          }\n        } else {\n            this.DimensionValues[i] = new ProductDimensionValueSetClass(odataObject.DimensionValues[i]);\n        }\n                    } else {\n        this.DimensionValues[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['ProductDimensionSetClass'] = ProductDimensionSetClass;\n    \n      /**\n      * ProductDimensionValueSet entity class.\n      */\n      export class ProductDimensionValueSetClass implements Entities.ProductDimensionValueSet {\n      public DimensionId: string;\n      public DimensionValue: string;\n      public VariantSet: number[];\n      public Language: string;\n      public SwatchImageUrl: string;\n      public SwatchColorHexCode: string;\n      public SwatchRefinerGroupValue: string;\n      public SwatchRefinerGroupTranslation: string;\n      public SwatchRefinerGroupImageUrl: string;\n      public SwatchRefinerGroupColorHexCode: string;\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.DimensionId = \n                odataObject.DimensionId;\n              \n            this.DimensionValue = \n                odataObject.DimensionValue;\n              \n        this.VariantSet = undefined;\n        if (odataObject.VariantSet) {\n        this.VariantSet = [];\n        for (var i = 0; i < odataObject.VariantSet.length; i++) {\n        if (odataObject.VariantSet[i] != null) {\n            this.VariantSet[i] = \n                parseInt(odataObject.VariantSet[i], 10);\n                            } else {\n        this.VariantSet[i] = undefined;\n        }\n        }\n        }\n      \n            this.Language = \n                odataObject.Language;\n              \n            this.SwatchImageUrl = \n                odataObject.SwatchImageUrl;\n              \n            this.SwatchColorHexCode = \n                odataObject.SwatchColorHexCode;\n              \n            this.SwatchRefinerGroupValue = \n                odataObject.SwatchRefinerGroupValue;\n              \n            this.SwatchRefinerGroupTranslation = \n                odataObject.SwatchRefinerGroupTranslation;\n              \n            this.SwatchRefinerGroupImageUrl = \n                odataObject.SwatchRefinerGroupImageUrl;\n              \n            this.SwatchRefinerGroupColorHexCode = \n                odataObject.SwatchRefinerGroupColorHexCode;\n              \n      }\n      }\n      entityDictionary['ProductDimensionValueSetClass'] = ProductDimensionValueSetClass;\n    \n      /**\n      * RichMediaLocations entity class.\n      */\n      export class RichMediaLocationsClass implements Entities.RichMediaLocations {\n      public Items: Entities.RichMediaLocationsRichMediaLocation[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n        this.Items = undefined;\n        if (odataObject.Items) {\n        this.Items = [];\n        for (var i = 0; i < odataObject.Items.length; i++) {\n        if (odataObject.Items[i] != null) {\n        if (odataObject.Items[i]['@odata.type'] != null) {\n          var className: string = odataObject.Items[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.Items[i] = new entityDictionary[className](odataObject.Items[i])\n          }\n        } else {\n            this.Items[i] = new RichMediaLocationsRichMediaLocationClass(odataObject.Items[i]);\n        }\n                    } else {\n        this.Items[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['RichMediaLocationsClass'] = RichMediaLocationsClass;\n    \n      /**\n      * RichMediaLocationsRichMediaLocation entity class.\n      */\n      export class RichMediaLocationsRichMediaLocationClass implements Entities.RichMediaLocationsRichMediaLocation {\n      public Url: string;\n      public AltText: string;\n      public IsSelfHosted: boolean;\n      public IsDefault: boolean;\n      public Priority: number;\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.Url = \n                odataObject.Url;\n              \n            this.AltText = \n                odataObject.AltText;\n              \n            this.IsSelfHosted = \n                odataObject.IsSelfHosted;\n              \n            this.IsDefault = \n                odataObject.IsDefault;\n              \n            this.Priority = \n                odataObject.Priority;\n              \n      }\n      }\n      entityDictionary['RichMediaLocationsRichMediaLocationClass'] = RichMediaLocationsRichMediaLocationClass;\n    \n      /**\n      * KitDefinition entity class.\n      */\n      export class KitDefinitionClass implements Entities.KitDefinition {\n      public DisassembleAtRegister: boolean;\n      public KitLineDefinitions: Entities.KitLineDefinition[];\n      public KitLineProductToVariantMap: Entities.ComponentKitVariantSet[];\n      public KitVariantToComponentMap: Entities.KitVariantContent[];\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.DisassembleAtRegister = \n                odataObject.DisassembleAtRegister;\n              \n        this.KitLineDefinitions = undefined;\n        if (odataObject.KitLineDefinitions) {\n        this.KitLineDefinitions = [];\n        for (var i = 0; i < odataObject.KitLineDefinitions.length; i++) {\n        if (odataObject.KitLineDefinitions[i] != null) {\n        if (odataObject.KitLineDefinitions[i]['@odata.type'] != null) {\n          var className: string = odataObject.KitLineDefinitions[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.KitLineDefinitions[i] = new entityDictionary[className](odataObject.KitLineDefinitions[i])\n          }\n        } else {\n            this.KitLineDefinitions[i] = new KitLineDefinitionClass(odataObject.KitLineDefinitions[i]);\n        }\n                    } else {\n        this.KitLineDefinitions[i] = undefined;\n        }\n        }\n        }\n      \n        this.KitLineProductToVariantMap = undefined;\n        if (odataObject.KitLineProductToVariantMap) {\n        this.KitLineProductToVariantMap = [];\n        for (var i = 0; i < odataObject.KitLineProductToVariantMap.length; i++) {\n        if (odataObject.KitLineProductToVariantMap[i] != null) {\n        if (odataObject.KitLineProductToVariantMap[i]['@odata.type'] != null) {\n          var className: string = odataObject.KitLineProductToVariantMap[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.KitLineProductToVariantMap[i] = new entityDictionary[className](odataObject.KitLineProductToVariantMap[i])\n          }\n        } else {\n            this.KitLineProductToVariantMap[i] = new ComponentKitVariantSetClass(odataObject.KitLineProductToVariantMap[i]);\n        }\n                    } else {\n        this.KitLineProductToVariantMap[i] = undefined;\n        }\n        }\n        }\n      \n        this.KitVariantToComponentMap = undefined;\n        if (odataObject.KitVariantToComponentMap) {\n        this.KitVariantToComponentMap = [];\n        for (var i = 0; i < odataObject.KitVariantToComponentMap.length; i++) {\n        if (odataObject.KitVariantToComponentMap[i] != null) {\n        if (odataObject.KitVariantToComponentMap[i]['@odata.type'] != null) {\n          var className: string = odataObject.KitVariantToComponentMap[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.KitVariantToComponentMap[i] = new entityDictionary[className](odataObject.KitVariantToComponentMap[i])\n          }\n        } else {\n            this.KitVariantToComponentMap[i] = new KitVariantContentClass(odataObject.KitVariantToComponentMap[i]);\n        }\n                    } else {\n        this.KitVariantToComponentMap[i] = undefined;\n        }\n        }\n        }\n      \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['KitDefinitionClass'] = KitDefinitionClass;\n    \n      /**\n      * ComponentKitVariantSet entity class.\n      */\n      export class ComponentKitVariantSetClass implements Entities.ComponentKitVariantSet {\n      public KitLineProductId: number;\n      public KitVariantIdList: number[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.KitLineProductId = \n                (odataObject.KitLineProductId != null) ? parseInt(odataObject.KitLineProductId, 10) : undefined;\n              \n        this.KitVariantIdList = undefined;\n        if (odataObject.KitVariantIdList) {\n        this.KitVariantIdList = [];\n        for (var i = 0; i < odataObject.KitVariantIdList.length; i++) {\n        if (odataObject.KitVariantIdList[i] != null) {\n            this.KitVariantIdList[i] = \n                parseInt(odataObject.KitVariantIdList[i], 10);\n                            } else {\n        this.KitVariantIdList[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['ComponentKitVariantSetClass'] = ComponentKitVariantSetClass;\n    \n      /**\n      * KitLineDefinition entity class.\n      */\n      export class KitLineDefinitionClass implements Entities.KitLineDefinition {\n      public ComponentProductId: number;\n      public KitLineIdentifier: number;\n      public SubstituteProductIds: number[];\n      public ComponentProperties: Entities.KitLineProductProperty[];\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.ComponentProductId = \n                (odataObject.ComponentProductId != null) ? parseInt(odataObject.ComponentProductId, 10) : undefined;\n              \n            this.KitLineIdentifier = \n                (odataObject.KitLineIdentifier != null) ? parseInt(odataObject.KitLineIdentifier, 10) : undefined;\n              \n        this.SubstituteProductIds = undefined;\n        if (odataObject.SubstituteProductIds) {\n        this.SubstituteProductIds = [];\n        for (var i = 0; i < odataObject.SubstituteProductIds.length; i++) {\n        if (odataObject.SubstituteProductIds[i] != null) {\n            this.SubstituteProductIds[i] = \n                parseInt(odataObject.SubstituteProductIds[i], 10);\n                            } else {\n        this.SubstituteProductIds[i] = undefined;\n        }\n        }\n        }\n      \n        this.ComponentProperties = undefined;\n        if (odataObject.ComponentProperties) {\n        this.ComponentProperties = [];\n        for (var i = 0; i < odataObject.ComponentProperties.length; i++) {\n        if (odataObject.ComponentProperties[i] != null) {\n        if (odataObject.ComponentProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ComponentProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ComponentProperties[i] = new entityDictionary[className](odataObject.ComponentProperties[i])\n          }\n        } else {\n            this.ComponentProperties[i] = new KitLineProductPropertyClass(odataObject.ComponentProperties[i]);\n        }\n                    } else {\n        this.ComponentProperties[i] = undefined;\n        }\n        }\n        }\n      \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['KitLineDefinitionClass'] = KitLineDefinitionClass;\n    \n      /**\n      * KitLineProductProperty entity class.\n      */\n      export class KitLineProductPropertyClass implements Entities.KitLineProductProperty {\n      public KitLineIdentifier: number;\n      public ProductId: number;\n      public Unit: string;\n      public Quantity: number;\n      public Charge: number;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.KitLineIdentifier = \n                (odataObject.KitLineIdentifier != null) ? parseInt(odataObject.KitLineIdentifier, 10) : undefined;\n              \n            this.ProductId = \n                (odataObject.ProductId != null) ? parseInt(odataObject.ProductId, 10) : undefined;\n              \n            this.Unit = \n                odataObject.Unit;\n              \n            this.Quantity = \n                (odataObject.Quantity != null) ? parseFloat(odataObject.Quantity) : undefined;\n              \n            this.Charge = \n                (odataObject.Charge != null) ? parseFloat(odataObject.Charge) : undefined;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['KitLineProductPropertyClass'] = KitLineProductPropertyClass;\n    \n      /**\n      * KitComponentKey entity class.\n      */\n      export class KitComponentKeyClass implements Entities.KitComponentKey {\n      public KitLineIdentifier: number;\n      public DistinctProductId: number;\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.KitLineIdentifier = \n                (odataObject.KitLineIdentifier != null) ? parseInt(odataObject.KitLineIdentifier, 10) : undefined;\n              \n            this.DistinctProductId = \n                (odataObject.DistinctProductId != null) ? parseInt(odataObject.DistinctProductId, 10) : undefined;\n              \n      }\n      }\n      entityDictionary['KitComponentKeyClass'] = KitComponentKeyClass;\n    \n      /**\n      * KitVariantContent entity class.\n      */\n      export class KitVariantContentClass implements Entities.KitVariantContent {\n      public KitVariantId: number;\n      public KitComponentKeyList: Entities.KitComponentKey[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.KitVariantId = \n                (odataObject.KitVariantId != null) ? parseInt(odataObject.KitVariantId, 10) : undefined;\n              \n        this.KitComponentKeyList = undefined;\n        if (odataObject.KitComponentKeyList) {\n        this.KitComponentKeyList = [];\n        for (var i = 0; i < odataObject.KitComponentKeyList.length; i++) {\n        if (odataObject.KitComponentKeyList[i] != null) {\n        if (odataObject.KitComponentKeyList[i]['@odata.type'] != null) {\n          var className: string = odataObject.KitComponentKeyList[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.KitComponentKeyList[i] = new entityDictionary[className](odataObject.KitComponentKeyList[i])\n          }\n        } else {\n            this.KitComponentKeyList[i] = new KitComponentKeyClass(odataObject.KitComponentKeyList[i]);\n        }\n                    } else {\n        this.KitComponentKeyList[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['KitVariantContentClass'] = KitVariantContentClass;\n    \n      /**\n      * ProductLookupClause entity class.\n      */\n      export class ProductLookupClauseClass implements Entities.ProductLookupClause {\n      public ItemId: string;\n      public InventDimensionId: string;\n      public Barcode: string;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.ItemId = \n                odataObject.ItemId;\n              \n            this.InventDimensionId = \n                odataObject.InventDimensionId;\n              \n            this.Barcode = \n                odataObject.Barcode;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['ProductLookupClauseClass'] = ProductLookupClauseClass;\n    \n      /**\n      * ProductAssortmentInterval entity class.\n      */\n      export class ProductAssortmentIntervalClass implements Entities.ProductAssortmentInterval {\n      public ProductId: number;\n      public ValidFrom: Date;\n      public ValidTo: Date;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.ProductId = \n                (odataObject.ProductId != null) ? parseInt(odataObject.ProductId, 10) : undefined;\n              \n            this.ValidFrom = \n                (odataObject.ValidFrom instanceof Date) ? odataObject.ValidFrom\n                : (odataObject.ValidFrom != null) ? jsonLightReadStringPropertyValue(odataObject.ValidFrom, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.ValidTo = \n                (odataObject.ValidTo instanceof Date) ? odataObject.ValidTo\n                : (odataObject.ValidTo != null) ? jsonLightReadStringPropertyValue(odataObject.ValidTo, \"Edm.DateTimeOffset\", false) : undefined;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['ProductAssortmentIntervalClass'] = ProductAssortmentIntervalClass;\n    \n      /**\n      * OrgUnitLocation entity class.\n      */\n      export class OrgUnitLocationClass implements Entities.OrgUnitLocation {\n      public Contacts: Entities.OrgUnitContact[];\n      public ChannelId: number;\n      public Latitude: number;\n      public Longitude: number;\n      public OrgUnitName: string;\n      public OrgUnitNumber: string;\n      public Address: string;\n      public Street: string;\n      public StreetNumber: string;\n      public City: string;\n      public DistrictName: string;\n      public BuildingCompliment: string;\n      public Postbox: string;\n      public Zip: string;\n      public County: string;\n      public CountyName: string;\n      public State: string;\n      public StateName: string;\n      public Country: string;\n      public Distance: number;\n      public InventoryLocationId: string;\n      public InventorySiteId: string;\n      public IsPickupLocation: boolean;\n      public IsShippingLocation: boolean;\n      public PostalAddressId: number;\n      public OpenFrom: number;\n      public OpenTo: number;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n        this.Contacts = undefined;\n        if (odataObject.Contacts) {\n        this.Contacts = [];\n        for (var i = 0; i < odataObject.Contacts.length; i++) {\n        if (odataObject.Contacts[i] != null) {\n        if (odataObject.Contacts[i]['@odata.type'] != null) {\n          var className: string = odataObject.Contacts[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.Contacts[i] = new entityDictionary[className](odataObject.Contacts[i])\n          }\n        } else {\n            this.Contacts[i] = new OrgUnitContactClass(odataObject.Contacts[i]);\n        }\n                    } else {\n        this.Contacts[i] = undefined;\n        }\n        }\n        }\n      \n            this.ChannelId = \n                (odataObject.ChannelId != null) ? parseInt(odataObject.ChannelId, 10) : undefined;\n              \n            this.Latitude = \n                (odataObject.Latitude != null) ? parseFloat(odataObject.Latitude) : undefined;\n              \n            this.Longitude = \n                (odataObject.Longitude != null) ? parseFloat(odataObject.Longitude) : undefined;\n              \n            this.OrgUnitName = \n                odataObject.OrgUnitName;\n              \n            this.OrgUnitNumber = \n                odataObject.OrgUnitNumber;\n              \n            this.Address = \n                odataObject.Address;\n              \n            this.Street = \n                odataObject.Street;\n              \n            this.StreetNumber = \n                odataObject.StreetNumber;\n              \n            this.City = \n                odataObject.City;\n              \n            this.DistrictName = \n                odataObject.DistrictName;\n              \n            this.BuildingCompliment = \n                odataObject.BuildingCompliment;\n              \n            this.Postbox = \n                odataObject.Postbox;\n              \n            this.Zip = \n                odataObject.Zip;\n              \n            this.County = \n                odataObject.County;\n              \n            this.CountyName = \n                odataObject.CountyName;\n              \n            this.State = \n                odataObject.State;\n              \n            this.StateName = \n                odataObject.StateName;\n              \n            this.Country = \n                odataObject.Country;\n              \n            this.Distance = \n                (odataObject.Distance != null) ? parseFloat(odataObject.Distance) : undefined;\n              \n            this.InventoryLocationId = \n                odataObject.InventoryLocationId;\n              \n            this.InventorySiteId = \n                odataObject.InventorySiteId;\n              \n            this.IsPickupLocation = \n                odataObject.IsPickupLocation;\n              \n            this.IsShippingLocation = \n                odataObject.IsShippingLocation;\n              \n            this.PostalAddressId = \n                (odataObject.PostalAddressId != null) ? parseInt(odataObject.PostalAddressId, 10) : undefined;\n              \n            this.OpenFrom = \n                odataObject.OpenFrom;\n              \n            this.OpenTo = \n                odataObject.OpenTo;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['OrgUnitLocationClass'] = OrgUnitLocationClass;\n    \n      /**\n      * OrgUnitContact entity class.\n      */\n      export class OrgUnitContactClass implements Entities.OrgUnitContact {\n      public ChannelId: number;\n      public Locator: string;\n      public LocatorExtension: string;\n      public ContactTypeValue: number;\n      public IsPrimary: boolean;\n      public IsPrivate: boolean;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.ChannelId = \n                (odataObject.ChannelId != null) ? parseInt(odataObject.ChannelId, 10) : undefined;\n              \n            this.Locator = \n                odataObject.Locator;\n              \n            this.LocatorExtension = \n                odataObject.LocatorExtension;\n              \n            this.ContactTypeValue = \n                odataObject.ContactTypeValue;\n              \n            this.IsPrimary = \n                odataObject.IsPrimary;\n              \n            this.IsPrivate = \n                odataObject.IsPrivate;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['OrgUnitContactClass'] = OrgUnitContactClass;\n    \n      /**\n      * SalesLineDeliveryOption entity class.\n      */\n      export class SalesLineDeliveryOptionClass implements Entities.SalesLineDeliveryOption {\n      public SalesLineId: string;\n      public DeliveryOptions: Entities.DeliveryOption[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.SalesLineId = \n                odataObject.SalesLineId;\n              \n        this.DeliveryOptions = undefined;\n        if (odataObject.DeliveryOptions) {\n        this.DeliveryOptions = [];\n        for (var i = 0; i < odataObject.DeliveryOptions.length; i++) {\n        if (odataObject.DeliveryOptions[i] != null) {\n        if (odataObject.DeliveryOptions[i]['@odata.type'] != null) {\n          var className: string = odataObject.DeliveryOptions[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.DeliveryOptions[i] = new entityDictionary[className](odataObject.DeliveryOptions[i])\n          }\n        } else {\n            this.DeliveryOptions[i] = new DeliveryOptionClass(odataObject.DeliveryOptions[i]);\n        }\n                    } else {\n        this.DeliveryOptions[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['SalesLineDeliveryOptionClass'] = SalesLineDeliveryOptionClass;\n    \n      /**\n      * DeliveryOption entity class.\n      */\n      export class DeliveryOptionClass implements Entities.DeliveryOption {\n      public ChargeGroup: string;\n      public Code: string;\n      public Description: string;\n      public RecordId: number;\n      public DeliveryChargeLines: Entities.DeliveryChargeLine[];\n      public TotalChargeAmount: number;\n      public ShippingChargeAmount: number;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.ChargeGroup = \n                odataObject.ChargeGroup;\n              \n            this.Code = \n                odataObject.Code;\n              \n            this.Description = \n                odataObject.Description;\n              \n            this.RecordId = \n                (odataObject.RecordId != null) ? parseInt(odataObject.RecordId, 10) : undefined;\n              \n        this.DeliveryChargeLines = undefined;\n        if (odataObject.DeliveryChargeLines) {\n        this.DeliveryChargeLines = [];\n        for (var i = 0; i < odataObject.DeliveryChargeLines.length; i++) {\n        if (odataObject.DeliveryChargeLines[i] != null) {\n        if (odataObject.DeliveryChargeLines[i]['@odata.type'] != null) {\n          var className: string = odataObject.DeliveryChargeLines[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.DeliveryChargeLines[i] = new entityDictionary[className](odataObject.DeliveryChargeLines[i])\n          }\n        } else {\n            this.DeliveryChargeLines[i] = new DeliveryChargeLineClass(odataObject.DeliveryChargeLines[i]);\n        }\n                    } else {\n        this.DeliveryChargeLines[i] = undefined;\n        }\n        }\n        }\n      \n            this.TotalChargeAmount = \n                (odataObject.TotalChargeAmount != null) ? parseFloat(odataObject.TotalChargeAmount) : undefined;\n              \n            this.ShippingChargeAmount = \n                (odataObject.ShippingChargeAmount != null) ? parseFloat(odataObject.ShippingChargeAmount) : undefined;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['DeliveryOptionClass'] = DeliveryOptionClass;\n    \n      /**\n      * ChannelDeliveryOption entity class.\n      */\n      export class ChannelDeliveryOptionClass implements Entities.ChannelDeliveryOption {\n      public ChannelId: number;\n      public DeliveryOptions: Entities.DeliveryOption[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.ChannelId = \n                (odataObject.ChannelId != null) ? parseInt(odataObject.ChannelId, 10) : undefined;\n              \n        this.DeliveryOptions = undefined;\n        if (odataObject.DeliveryOptions) {\n        this.DeliveryOptions = [];\n        for (var i = 0; i < odataObject.DeliveryOptions.length; i++) {\n        if (odataObject.DeliveryOptions[i] != null) {\n        if (odataObject.DeliveryOptions[i]['@odata.type'] != null) {\n          var className: string = odataObject.DeliveryOptions[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.DeliveryOptions[i] = new entityDictionary[className](odataObject.DeliveryOptions[i])\n          }\n        } else {\n            this.DeliveryOptions[i] = new DeliveryOptionClass(odataObject.DeliveryOptions[i]);\n        }\n                    } else {\n        this.DeliveryOptions[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['ChannelDeliveryOptionClass'] = ChannelDeliveryOptionClass;\n    \n      /**\n      * ChannelIdentity entity class.\n      */\n      export class ChannelIdentityClass implements Entities.ChannelIdentity {\n      public ChannelType: Entities.ExtensibleRetailChannelType;\n      public Name: string;\n      public OperatingUnitNumber: string;\n      public DataAreaId: string;\n      public RecordId: number;\n      public InventoryLocationId: string;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n        if (odataObject.ChannelType == null) {\n            this.ChannelType = undefined;\n        } else if (odataObject.ChannelType['@odata.type'] == null) {\n            this.ChannelType = new ExtensibleRetailChannelTypeClass(odataObject.ChannelType);\n        } else {\n            var className: string = odataObject.ChannelType['@odata.type'];\n            className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n            if (entityDictionary[className]) {\n                this.ChannelType = new entityDictionary[className](odataObject.ChannelType)\n            }\n        }\n\n      \n            this.Name = \n                odataObject.Name;\n              \n            this.OperatingUnitNumber = \n                odataObject.OperatingUnitNumber;\n              \n            this.DataAreaId = \n                odataObject.DataAreaId;\n              \n            this.RecordId = \n                (odataObject.RecordId != null) ? parseInt(odataObject.RecordId, 10) : undefined;\n              \n            this.InventoryLocationId = \n                odataObject.InventoryLocationId;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['ChannelIdentityClass'] = ChannelIdentityClass;\n    \n      /**\n      * ExtensibleRetailChannelType entity class.\n      */\n      export class ExtensibleRetailChannelTypeClass\n        extends ExtensibleEnumerationClass\n       implements Entities.ExtensibleRetailChannelType {\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      super(odataObject);odataObject = odataObject || {};\n        this[\"@odata.type\"] = \"#Microsoft.Dynamics.Commerce.Runtime.DataModel.ExtensibleRetailChannelType\";\n      \n      }\n      }\n      entityDictionary['ExtensibleRetailChannelTypeClass'] = ExtensibleRetailChannelTypeClass;\n    \n      /**\n      * ChannelProfileProperty entity class.\n      */\n      export class ChannelProfilePropertyClass implements Entities.ChannelProfileProperty {\n      public Key: number;\n      public Value: string;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.Key = \n                odataObject.Key;\n              \n            this.Value = \n                odataObject.Value;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['ChannelProfilePropertyClass'] = ChannelProfilePropertyClass;\n    \n      /**\n      * ChannelConfiguration entity class.\n      */\n      export class ChannelConfigurationClass implements Entities.ChannelConfiguration {\n      public RecordId: number;\n      public ChannelNaturalId: string;\n      public MinimumDepositPercentage: number;\n      public QuoteExpirationDays: number;\n      public PickupDeliveryModeCode: string;\n      public CarryoutDeliveryModeCode: string;\n      public CancellationChargePercentage: number;\n      public InventLocation: string;\n      public InventLocationDataAreaId: string;\n      public BingMapsApiKey: string;\n      public BingMapsEnabled: boolean;\n      public Currency: string;\n      public CatalogDefaultImageTemplate: string;\n      public CompanyCurrency: string;\n      public PriceIncludesSalesTax: boolean;\n      public CountryRegionId: string;\n      public ChannelCountryRegionISOCode: string;\n      public DefaultLanguageId: string;\n      public TimeZoneInfoId: string;\n      public EmailDeliveryModeCode: string;\n      public GiftCardItemId: string;\n      public EnableProductRecommendations: boolean;\n      public RefundableShippingAmountWithoutApproval: number;\n      public RefundShippingCharges: boolean;\n      public ReceiptSettingsValue: number;\n      public CustomerAttributeGroupId: number;\n      public ClientBookAttributeGroupId: number;\n      public NotificationRefreshInterval: number;\n      public AllowExchangeOnReturnOrders: boolean;\n      public FiscalRegistrationProcessId: string;\n      public IsInventoryAutomaticValidationEnabled: boolean;\n      public HideSystemInventoryInStockCount: boolean;\n      public EnablePriceChangeTracking: boolean;\n      public ProfileProperties: Entities.ChannelProfileProperty[];\n      public Properties: Entities.ChannelProperty[];\n      public Languages: Entities.ChannelLanguage[];\n      public UseAdvancedAutoCharges: boolean;\n      public UseRTSForOnlineOrderCreation: boolean;\n      public IsWarrantyAutoPromptEnabled: boolean;\n      public EnableProductRatingsForRetailStores: boolean;\n      public EnableFetchingPickingListsForPickingAndReceiving: boolean;\n      public EnableReturnsForMultipleOrderInvoices: boolean;\n      public EnableAnonymousOrderLookupByChannelReferenceId: boolean;\n      public VoidSuspendedTransactionsOnCloseShift: number;\n      public EnableOmniChannelPayments: boolean;\n      public UseAdvancedCashManagement: boolean;\n      public EnableFiscalRegistrationStorageBackup: boolean;\n      public UseSalesReceiptAsDefaultReceiptTypeInJournal: boolean;\n      public SalesOrderHeaderAttributeGroups: number[];\n      public SalesOrderLinesAttributeGroups: number[];\n      public CustomerAddressBooks: Entities.StoreAddressBook[];\n      public EnableReturnPolicies: boolean;\n      public InventAvailabilityCalculationMode: string;\n      public IsPriceInclusiveTaxExemptCalculationEnabled: boolean;\n      public EnableValidationOfSerialNumbersForInStoreReturns: boolean;\n      public DisplayNonRetailOrdersInEcommerceOrderHistory: boolean;\n      public EnableCopilotCustomerInsights: boolean;\n      public EnableCopilotProductInsights: boolean;\n      public EnableCopilotReportInsights: boolean;\n      public EnableStoreCommerceCopilot: boolean;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.RecordId = \n                (odataObject.RecordId != null) ? parseInt(odataObject.RecordId, 10) : undefined;\n              \n            this.ChannelNaturalId = \n                odataObject.ChannelNaturalId;\n              \n            this.MinimumDepositPercentage = \n                (odataObject.MinimumDepositPercentage != null) ? parseFloat(odataObject.MinimumDepositPercentage) : undefined;\n              \n            this.QuoteExpirationDays = \n                odataObject.QuoteExpirationDays;\n              \n            this.PickupDeliveryModeCode = \n                odataObject.PickupDeliveryModeCode;\n              \n            this.CarryoutDeliveryModeCode = \n                odataObject.CarryoutDeliveryModeCode;\n              \n            this.CancellationChargePercentage = \n                (odataObject.CancellationChargePercentage != null) ? parseFloat(odataObject.CancellationChargePercentage) : undefined;\n              \n            this.InventLocation = \n                odataObject.InventLocation;\n              \n            this.InventLocationDataAreaId = \n                odataObject.InventLocationDataAreaId;\n              \n            this.BingMapsApiKey = \n                odataObject.BingMapsApiKey;\n              \n            this.BingMapsEnabled = \n                odataObject.BingMapsEnabled;\n              \n            this.Currency = \n                odataObject.Currency;\n              \n            this.CatalogDefaultImageTemplate = \n                odataObject.CatalogDefaultImageTemplate;\n              \n            this.CompanyCurrency = \n                odataObject.CompanyCurrency;\n              \n            this.PriceIncludesSalesTax = \n                odataObject.PriceIncludesSalesTax;\n              \n            this.CountryRegionId = \n                odataObject.CountryRegionId;\n              \n            this.ChannelCountryRegionISOCode = \n                odataObject.ChannelCountryRegionISOCode;\n              \n            this.DefaultLanguageId = \n                odataObject.DefaultLanguageId;\n              \n            this.TimeZoneInfoId = \n                odataObject.TimeZoneInfoId;\n              \n            this.EmailDeliveryModeCode = \n                odataObject.EmailDeliveryModeCode;\n              \n            this.GiftCardItemId = \n                odataObject.GiftCardItemId;\n              \n            this.EnableProductRecommendations = \n                odataObject.EnableProductRecommendations;\n              \n            this.RefundableShippingAmountWithoutApproval = \n                (odataObject.RefundableShippingAmountWithoutApproval != null) ? parseFloat(odataObject.RefundableShippingAmountWithoutApproval) : undefined;\n              \n            this.RefundShippingCharges = \n                odataObject.RefundShippingCharges;\n              \n            this.ReceiptSettingsValue = \n                odataObject.ReceiptSettingsValue;\n              \n            this.CustomerAttributeGroupId = \n                (odataObject.CustomerAttributeGroupId != null) ? parseInt(odataObject.CustomerAttributeGroupId, 10) : undefined;\n              \n            this.ClientBookAttributeGroupId = \n                (odataObject.ClientBookAttributeGroupId != null) ? parseInt(odataObject.ClientBookAttributeGroupId, 10) : undefined;\n              \n            this.NotificationRefreshInterval = \n                odataObject.NotificationRefreshInterval;\n              \n            this.AllowExchangeOnReturnOrders = \n                odataObject.AllowExchangeOnReturnOrders;\n              \n            this.FiscalRegistrationProcessId = \n                odataObject.FiscalRegistrationProcessId;\n              \n            this.IsInventoryAutomaticValidationEnabled = \n                odataObject.IsInventoryAutomaticValidationEnabled;\n              \n            this.HideSystemInventoryInStockCount = \n                odataObject.HideSystemInventoryInStockCount;\n              \n            this.EnablePriceChangeTracking = \n                odataObject.EnablePriceChangeTracking;\n              \n        this.ProfileProperties = undefined;\n        if (odataObject.ProfileProperties) {\n        this.ProfileProperties = [];\n        for (var i = 0; i < odataObject.ProfileProperties.length; i++) {\n        if (odataObject.ProfileProperties[i] != null) {\n        if (odataObject.ProfileProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ProfileProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ProfileProperties[i] = new entityDictionary[className](odataObject.ProfileProperties[i])\n          }\n        } else {\n            this.ProfileProperties[i] = new ChannelProfilePropertyClass(odataObject.ProfileProperties[i]);\n        }\n                    } else {\n        this.ProfileProperties[i] = undefined;\n        }\n        }\n        }\n      \n        this.Properties = undefined;\n        if (odataObject.Properties) {\n        this.Properties = [];\n        for (var i = 0; i < odataObject.Properties.length; i++) {\n        if (odataObject.Properties[i] != null) {\n        if (odataObject.Properties[i]['@odata.type'] != null) {\n          var className: string = odataObject.Properties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.Properties[i] = new entityDictionary[className](odataObject.Properties[i])\n          }\n        } else {\n            this.Properties[i] = new ChannelPropertyClass(odataObject.Properties[i]);\n        }\n                    } else {\n        this.Properties[i] = undefined;\n        }\n        }\n        }\n      \n        this.Languages = undefined;\n        if (odataObject.Languages) {\n        this.Languages = [];\n        for (var i = 0; i < odataObject.Languages.length; i++) {\n        if (odataObject.Languages[i] != null) {\n        if (odataObject.Languages[i]['@odata.type'] != null) {\n          var className: string = odataObject.Languages[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.Languages[i] = new entityDictionary[className](odataObject.Languages[i])\n          }\n        } else {\n            this.Languages[i] = new ChannelLanguageClass(odataObject.Languages[i]);\n        }\n                    } else {\n        this.Languages[i] = undefined;\n        }\n        }\n        }\n      \n            this.UseAdvancedAutoCharges = \n                odataObject.UseAdvancedAutoCharges;\n              \n            this.UseRTSForOnlineOrderCreation = \n                odataObject.UseRTSForOnlineOrderCreation;\n              \n            this.IsWarrantyAutoPromptEnabled = \n                odataObject.IsWarrantyAutoPromptEnabled;\n              \n            this.EnableProductRatingsForRetailStores = \n                odataObject.EnableProductRatingsForRetailStores;\n              \n            this.EnableFetchingPickingListsForPickingAndReceiving = \n                odataObject.EnableFetchingPickingListsForPickingAndReceiving;\n              \n            this.EnableReturnsForMultipleOrderInvoices = \n                odataObject.EnableReturnsForMultipleOrderInvoices;\n              \n            this.EnableAnonymousOrderLookupByChannelReferenceId = \n                odataObject.EnableAnonymousOrderLookupByChannelReferenceId;\n              \n            this.VoidSuspendedTransactionsOnCloseShift = \n                odataObject.VoidSuspendedTransactionsOnCloseShift;\n              \n            this.EnableOmniChannelPayments = \n                odataObject.EnableOmniChannelPayments;\n              \n            this.UseAdvancedCashManagement = \n                odataObject.UseAdvancedCashManagement;\n              \n            this.EnableFiscalRegistrationStorageBackup = \n                odataObject.EnableFiscalRegistrationStorageBackup;\n              \n            this.UseSalesReceiptAsDefaultReceiptTypeInJournal = \n                odataObject.UseSalesReceiptAsDefaultReceiptTypeInJournal;\n              \n        this.SalesOrderHeaderAttributeGroups = undefined;\n        if (odataObject.SalesOrderHeaderAttributeGroups) {\n        this.SalesOrderHeaderAttributeGroups = [];\n        for (var i = 0; i < odataObject.SalesOrderHeaderAttributeGroups.length; i++) {\n        if (odataObject.SalesOrderHeaderAttributeGroups[i] != null) {\n            this.SalesOrderHeaderAttributeGroups[i] = \n                parseInt(odataObject.SalesOrderHeaderAttributeGroups[i], 10);\n                            } else {\n        this.SalesOrderHeaderAttributeGroups[i] = undefined;\n        }\n        }\n        }\n      \n        this.SalesOrderLinesAttributeGroups = undefined;\n        if (odataObject.SalesOrderLinesAttributeGroups) {\n        this.SalesOrderLinesAttributeGroups = [];\n        for (var i = 0; i < odataObject.SalesOrderLinesAttributeGroups.length; i++) {\n        if (odataObject.SalesOrderLinesAttributeGroups[i] != null) {\n            this.SalesOrderLinesAttributeGroups[i] = \n                parseInt(odataObject.SalesOrderLinesAttributeGroups[i], 10);\n                            } else {\n        this.SalesOrderLinesAttributeGroups[i] = undefined;\n        }\n        }\n        }\n      \n        this.CustomerAddressBooks = undefined;\n        if (odataObject.CustomerAddressBooks) {\n        this.CustomerAddressBooks = [];\n        for (var i = 0; i < odataObject.CustomerAddressBooks.length; i++) {\n        if (odataObject.CustomerAddressBooks[i] != null) {\n        if (odataObject.CustomerAddressBooks[i]['@odata.type'] != null) {\n          var className: string = odataObject.CustomerAddressBooks[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.CustomerAddressBooks[i] = new entityDictionary[className](odataObject.CustomerAddressBooks[i])\n          }\n        } else {\n            this.CustomerAddressBooks[i] = new StoreAddressBookClass(odataObject.CustomerAddressBooks[i]);\n        }\n                    } else {\n        this.CustomerAddressBooks[i] = undefined;\n        }\n        }\n        }\n      \n            this.EnableReturnPolicies = \n                odataObject.EnableReturnPolicies;\n              \n            this.InventAvailabilityCalculationMode = \n                odataObject.InventAvailabilityCalculationMode;\n              \n            this.IsPriceInclusiveTaxExemptCalculationEnabled = \n                odataObject.IsPriceInclusiveTaxExemptCalculationEnabled;\n              \n            this.EnableValidationOfSerialNumbersForInStoreReturns = \n                odataObject.EnableValidationOfSerialNumbersForInStoreReturns;\n              \n            this.DisplayNonRetailOrdersInEcommerceOrderHistory = \n                odataObject.DisplayNonRetailOrdersInEcommerceOrderHistory;\n              \n            this.EnableCopilotCustomerInsights = \n                odataObject.EnableCopilotCustomerInsights;\n              \n            this.EnableCopilotProductInsights = \n                odataObject.EnableCopilotProductInsights;\n              \n            this.EnableCopilotReportInsights = \n                odataObject.EnableCopilotReportInsights;\n              \n            this.EnableStoreCommerceCopilot = \n                odataObject.EnableStoreCommerceCopilot;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['ChannelConfigurationClass'] = ChannelConfigurationClass;\n    \n      /**\n      * ChannelProperty entity class.\n      */\n      export class ChannelPropertyClass implements Entities.ChannelProperty {\n      public Name: string;\n      public Value: string;\n      public Channel: number;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.Name = \n                odataObject.Name;\n              \n            this.Value = \n                odataObject.Value;\n              \n            this.Channel = \n                (odataObject.Channel != null) ? parseInt(odataObject.Channel, 10) : undefined;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['ChannelPropertyClass'] = ChannelPropertyClass;\n    \n      /**\n      * ChannelLanguage entity class.\n      */\n      export class ChannelLanguageClass implements Entities.ChannelLanguage {\n      public LanguageId: string;\n      public IsDefault: boolean;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.LanguageId = \n                odataObject.LanguageId;\n              \n            this.IsDefault = \n                odataObject.IsDefault;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['ChannelLanguageClass'] = ChannelLanguageClass;\n    \n      /**\n      * ChannelDeliveryOptionConfiguration entity class.\n      */\n      export class ChannelDeliveryOptionConfigurationClass implements Entities.ChannelDeliveryOptionConfiguration {\n      public PickupDeliveryModeCodes: string[];\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n        this.PickupDeliveryModeCodes = undefined;\n        if (odataObject.PickupDeliveryModeCodes) {\n        this.PickupDeliveryModeCodes = [];\n        for (var i = 0; i < odataObject.PickupDeliveryModeCodes.length; i++) {\n        if (odataObject.PickupDeliveryModeCodes[i] != null) {\n            this.PickupDeliveryModeCodes[i] = \n                odataObject.PickupDeliveryModeCodes[i];\n                            } else {\n        this.PickupDeliveryModeCodes[i] = undefined;\n        }\n        }\n        }\n      \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['ChannelDeliveryOptionConfigurationClass'] = ChannelDeliveryOptionConfigurationClass;\n    \n      /**\n      * NonSalesTransaction entity class.\n      */\n      export class NonSalesTransactionClass\n        extends TransactionClass\n       implements Entities.NonSalesTransaction {\n      public ReasonCodeLines: Entities.ReasonCodeLine[];\n      public Amount: number;\n      public ForeignCurrency: string;\n      public TenderTypeId: string;\n      public OpenDrawer: boolean;\n      public DenominationDetails: Entities.DenominationDetail[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      super(odataObject);odataObject = odataObject || {};\n        this.ReasonCodeLines = undefined;\n        if (odataObject.ReasonCodeLines) {\n        this.ReasonCodeLines = [];\n        for (var i = 0; i < odataObject.ReasonCodeLines.length; i++) {\n        if (odataObject.ReasonCodeLines[i] != null) {\n        if (odataObject.ReasonCodeLines[i]['@odata.type'] != null) {\n          var className: string = odataObject.ReasonCodeLines[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ReasonCodeLines[i] = new entityDictionary[className](odataObject.ReasonCodeLines[i])\n          }\n        } else {\n            this.ReasonCodeLines[i] = new ReasonCodeLineClass(odataObject.ReasonCodeLines[i]);\n        }\n                    } else {\n        this.ReasonCodeLines[i] = undefined;\n        }\n        }\n        }\n      \n            this.Amount = \n                (odataObject.Amount != null) ? parseFloat(odataObject.Amount) : undefined;\n              \n            this.ForeignCurrency = \n                odataObject.ForeignCurrency;\n              \n            this.TenderTypeId = \n                odataObject.TenderTypeId;\n              \n            this.OpenDrawer = \n                odataObject.OpenDrawer;\n              \n        this.DenominationDetails = undefined;\n        if (odataObject.DenominationDetails) {\n        this.DenominationDetails = [];\n        for (var i = 0; i < odataObject.DenominationDetails.length; i++) {\n        if (odataObject.DenominationDetails[i] != null) {\n        if (odataObject.DenominationDetails[i]['@odata.type'] != null) {\n          var className: string = odataObject.DenominationDetails[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.DenominationDetails[i] = new entityDictionary[className](odataObject.DenominationDetails[i])\n          }\n        } else {\n            this.DenominationDetails[i] = new DenominationDetailClass(odataObject.DenominationDetails[i]);\n        }\n                    } else {\n        this.DenominationDetails[i] = undefined;\n        }\n        }\n        }\n      \n        this[\"@odata.type\"] = \"#Microsoft.Dynamics.Commerce.Runtime.DataModel.NonSalesTransaction\";\n      \n      }\n      }\n      entityDictionary['NonSalesTransactionClass'] = NonSalesTransactionClass;\n    \n      /**\n      * DropAndDeclareTransaction entity class.\n      */\n      export class DropAndDeclareTransactionClass\n        extends TransactionClass\n       implements Entities.DropAndDeclareTransaction {\n      public TenderDetails: Entities.TenderDetail[];\n      public ReasonCodeLines: Entities.ReasonCodeLine[];\n      public OpenDrawer: boolean;\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      super(odataObject);odataObject = odataObject || {};\n        this.TenderDetails = undefined;\n        if (odataObject.TenderDetails) {\n        this.TenderDetails = [];\n        for (var i = 0; i < odataObject.TenderDetails.length; i++) {\n        if (odataObject.TenderDetails[i] != null) {\n        if (odataObject.TenderDetails[i]['@odata.type'] != null) {\n          var className: string = odataObject.TenderDetails[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.TenderDetails[i] = new entityDictionary[className](odataObject.TenderDetails[i])\n          }\n        } else {\n            this.TenderDetails[i] = new TenderDetailClass(odataObject.TenderDetails[i]);\n        }\n                    } else {\n        this.TenderDetails[i] = undefined;\n        }\n        }\n        }\n      \n        this.ReasonCodeLines = undefined;\n        if (odataObject.ReasonCodeLines) {\n        this.ReasonCodeLines = [];\n        for (var i = 0; i < odataObject.ReasonCodeLines.length; i++) {\n        if (odataObject.ReasonCodeLines[i] != null) {\n        if (odataObject.ReasonCodeLines[i]['@odata.type'] != null) {\n          var className: string = odataObject.ReasonCodeLines[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ReasonCodeLines[i] = new entityDictionary[className](odataObject.ReasonCodeLines[i])\n          }\n        } else {\n            this.ReasonCodeLines[i] = new ReasonCodeLineClass(odataObject.ReasonCodeLines[i]);\n        }\n                    } else {\n        this.ReasonCodeLines[i] = undefined;\n        }\n        }\n        }\n      \n            this.OpenDrawer = \n                odataObject.OpenDrawer;\n              \n        this[\"@odata.type\"] = \"#Microsoft.Dynamics.Commerce.Runtime.DataModel.DropAndDeclareTransaction\";\n      \n      }\n      }\n      entityDictionary['DropAndDeclareTransactionClass'] = DropAndDeclareTransactionClass;\n    \n      /**\n      * ProductSearchCriteria entity class.\n      */\n      export class ProductSearchCriteriaClass implements Entities.ProductSearchCriteria {\n      public Ids: number[];\n      public CategoryIds: number[];\n      public IncludeProductsFromDescendantCategories: boolean;\n      public SearchCondition: string;\n      public SkipVariantExpansion: boolean;\n      public IncludeAttributes: boolean;\n      public Barcodes: string[];\n      public ItemIds: Entities.ProductLookupClause[];\n      public Refinement: Entities.ProductRefinerValue[];\n      public CustomerAccountNumber: string;\n      public RecommendationListId: string;\n      public DownloadProductData: boolean;\n      public Context: Entities.ProjectionDomain;\n      public Language: string;\n      public IsOnline: boolean;\n      public DataLevelValue: number;\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n        this.Ids = undefined;\n        if (odataObject.Ids) {\n        this.Ids = [];\n        for (var i = 0; i < odataObject.Ids.length; i++) {\n        if (odataObject.Ids[i] != null) {\n            this.Ids[i] = \n                parseInt(odataObject.Ids[i], 10);\n                            } else {\n        this.Ids[i] = undefined;\n        }\n        }\n        }\n      \n        this.CategoryIds = undefined;\n        if (odataObject.CategoryIds) {\n        this.CategoryIds = [];\n        for (var i = 0; i < odataObject.CategoryIds.length; i++) {\n        if (odataObject.CategoryIds[i] != null) {\n            this.CategoryIds[i] = \n                parseInt(odataObject.CategoryIds[i], 10);\n                            } else {\n        this.CategoryIds[i] = undefined;\n        }\n        }\n        }\n      \n            this.IncludeProductsFromDescendantCategories = \n                odataObject.IncludeProductsFromDescendantCategories;\n              \n            this.SearchCondition = \n                odataObject.SearchCondition;\n              \n            this.SkipVariantExpansion = \n                odataObject.SkipVariantExpansion;\n              \n            this.IncludeAttributes = \n                odataObject.IncludeAttributes;\n              \n        this.Barcodes = undefined;\n        if (odataObject.Barcodes) {\n        this.Barcodes = [];\n        for (var i = 0; i < odataObject.Barcodes.length; i++) {\n        if (odataObject.Barcodes[i] != null) {\n            this.Barcodes[i] = \n                odataObject.Barcodes[i];\n                            } else {\n        this.Barcodes[i] = undefined;\n        }\n        }\n        }\n      \n        this.ItemIds = undefined;\n        if (odataObject.ItemIds) {\n        this.ItemIds = [];\n        for (var i = 0; i < odataObject.ItemIds.length; i++) {\n        if (odataObject.ItemIds[i] != null) {\n        if (odataObject.ItemIds[i]['@odata.type'] != null) {\n          var className: string = odataObject.ItemIds[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ItemIds[i] = new entityDictionary[className](odataObject.ItemIds[i])\n          }\n        } else {\n            this.ItemIds[i] = new ProductLookupClauseClass(odataObject.ItemIds[i]);\n        }\n                    } else {\n        this.ItemIds[i] = undefined;\n        }\n        }\n        }\n      \n        this.Refinement = undefined;\n        if (odataObject.Refinement) {\n        this.Refinement = [];\n        for (var i = 0; i < odataObject.Refinement.length; i++) {\n        if (odataObject.Refinement[i] != null) {\n        if (odataObject.Refinement[i]['@odata.type'] != null) {\n          var className: string = odataObject.Refinement[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.Refinement[i] = new entityDictionary[className](odataObject.Refinement[i])\n          }\n        } else {\n            this.Refinement[i] = new ProductRefinerValueClass(odataObject.Refinement[i]);\n        }\n                    } else {\n        this.Refinement[i] = undefined;\n        }\n        }\n        }\n      \n            this.CustomerAccountNumber = \n                odataObject.CustomerAccountNumber;\n              \n            this.RecommendationListId = \n                odataObject.RecommendationListId;\n              \n            this.DownloadProductData = \n                odataObject.DownloadProductData;\n              \n        if (odataObject.Context == null) {\n            this.Context = undefined;\n        } else if (odataObject.Context['@odata.type'] == null) {\n            this.Context = new ProjectionDomainClass(odataObject.Context);\n        } else {\n            var className: string = odataObject.Context['@odata.type'];\n            className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n            if (entityDictionary[className]) {\n                this.Context = new entityDictionary[className](odataObject.Context)\n            }\n        }\n\n      \n            this.Language = \n                odataObject.Language;\n              \n            this.IsOnline = \n                odataObject.IsOnline;\n              \n            this.DataLevelValue = \n                odataObject.DataLevelValue;\n              \n      }\n      }\n      entityDictionary['ProductSearchCriteriaClass'] = ProductSearchCriteriaClass;\n    \n      /**\n      * ChangedProductsSearchCriteria entity class.\n      */\n      export class ChangedProductsSearchCriteriaClass implements Entities.ChangedProductsSearchCriteria {\n      public SynchronizationToken: string;\n      public Context: Entities.ProjectionDomain;\n      public AsListings: boolean;\n      public Session: Entities.ReadChangedProductsSession;\n      public DataLevelValue: number;\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.SynchronizationToken = \n                odataObject.SynchronizationToken;\n              \n        if (odataObject.Context == null) {\n            this.Context = undefined;\n        } else if (odataObject.Context['@odata.type'] == null) {\n            this.Context = new ProjectionDomainClass(odataObject.Context);\n        } else {\n            var className: string = odataObject.Context['@odata.type'];\n            className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n            if (entityDictionary[className]) {\n                this.Context = new entityDictionary[className](odataObject.Context)\n            }\n        }\n\n      \n            this.AsListings = \n                odataObject.AsListings;\n              \n        if (odataObject.Session == null) {\n            this.Session = undefined;\n        } else if (odataObject.Session['@odata.type'] == null) {\n            this.Session = new ReadChangedProductsSessionClass(odataObject.Session);\n        } else {\n            var className: string = odataObject.Session['@odata.type'];\n            className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n            if (entityDictionary[className]) {\n                this.Session = new entityDictionary[className](odataObject.Session)\n            }\n        }\n\n      \n            this.DataLevelValue = \n                odataObject.DataLevelValue;\n              \n      }\n      }\n      entityDictionary['ChangedProductsSearchCriteriaClass'] = ChangedProductsSearchCriteriaClass;\n    \n      /**\n      * EmployeeActivitySearchCriteria entity class.\n      */\n      export class EmployeeActivitySearchCriteriaClass implements Entities.EmployeeActivitySearchCriteria {\n      public FromDateTimeOffset: Date;\n      public ToDateTimeOffset: Date;\n      public StoreNumber: string;\n      public EmployeeActivityTypeValues: number[];\n      public DataLevelValue: number;\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.FromDateTimeOffset = \n                (odataObject.FromDateTimeOffset instanceof Date) ? odataObject.FromDateTimeOffset\n                : (odataObject.FromDateTimeOffset != null) ? jsonLightReadStringPropertyValue(odataObject.FromDateTimeOffset, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.ToDateTimeOffset = \n                (odataObject.ToDateTimeOffset instanceof Date) ? odataObject.ToDateTimeOffset\n                : (odataObject.ToDateTimeOffset != null) ? jsonLightReadStringPropertyValue(odataObject.ToDateTimeOffset, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.StoreNumber = \n                odataObject.StoreNumber;\n              \n        this.EmployeeActivityTypeValues = undefined;\n        if (odataObject.EmployeeActivityTypeValues) {\n        this.EmployeeActivityTypeValues = [];\n        for (var i = 0; i < odataObject.EmployeeActivityTypeValues.length; i++) {\n        if (odataObject.EmployeeActivityTypeValues[i] != null) {\n            this.EmployeeActivityTypeValues[i] = \n                odataObject.EmployeeActivityTypeValues[i];\n                            } else {\n        this.EmployeeActivityTypeValues[i] = undefined;\n        }\n        }\n        }\n      \n            this.DataLevelValue = \n                odataObject.DataLevelValue;\n              \n      }\n      }\n      entityDictionary['EmployeeActivitySearchCriteriaClass'] = EmployeeActivitySearchCriteriaClass;\n    \n      /**\n      * SearchSuggestionCriteria entity class.\n      */\n      export class SearchSuggestionCriteriaClass implements Entities.SearchSuggestionCriteria {\n      public ProductSearchCriteria: Entities.ProductSearchCriteria;\n      public CustomerSearchCriteria: Entities.CustomerSearchCriteria;\n      public SuggestionType: string;\n      public HitPrefix: string;\n      public HitSuffix: string;\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n        if (odataObject.ProductSearchCriteria == null) {\n            this.ProductSearchCriteria = undefined;\n        } else if (odataObject.ProductSearchCriteria['@odata.type'] == null) {\n            this.ProductSearchCriteria = new ProductSearchCriteriaClass(odataObject.ProductSearchCriteria);\n        } else {\n            var className: string = odataObject.ProductSearchCriteria['@odata.type'];\n            className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n            if (entityDictionary[className]) {\n                this.ProductSearchCriteria = new entityDictionary[className](odataObject.ProductSearchCriteria)\n            }\n        }\n\n      \n        if (odataObject.CustomerSearchCriteria == null) {\n            this.CustomerSearchCriteria = undefined;\n        } else if (odataObject.CustomerSearchCriteria['@odata.type'] == null) {\n            this.CustomerSearchCriteria = new CustomerSearchCriteriaClass(odataObject.CustomerSearchCriteria);\n        } else {\n            var className: string = odataObject.CustomerSearchCriteria['@odata.type'];\n            className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n            if (entityDictionary[className]) {\n                this.CustomerSearchCriteria = new entityDictionary[className](odataObject.CustomerSearchCriteria)\n            }\n        }\n\n      \n            this.SuggestionType = \n                odataObject.SuggestionType;\n              \n            this.HitPrefix = \n                odataObject.HitPrefix;\n              \n            this.HitSuffix = \n                odataObject.HitSuffix;\n              \n      }\n      }\n      entityDictionary['SearchSuggestionCriteriaClass'] = SearchSuggestionCriteriaClass;\n    \n      /**\n      * OrderOriginator entity class.\n      */\n      export class OrderOriginatorClass implements Entities.OrderOriginator {\n      public TransactionId: string;\n      public SalesId: string;\n      public StaffId: string;\n      public StaffName: string;\n      public CustomerId: string;\n      public CustomerName: string;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.TransactionId = \n                odataObject.TransactionId;\n              \n            this.SalesId = \n                odataObject.SalesId;\n              \n            this.StaffId = \n                odataObject.StaffId;\n              \n            this.StaffName = \n                odataObject.StaffName;\n              \n            this.CustomerId = \n                odataObject.CustomerId;\n              \n            this.CustomerName = \n                odataObject.CustomerName;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['OrderOriginatorClass'] = OrderOriginatorClass;\n    \n      /**\n      * OrderOriginatorSearchCriteria entity class.\n      */\n      export class OrderOriginatorSearchCriteriaClass implements Entities.OrderOriginatorSearchCriteria {\n      public TransactionIds: string[];\n      public SalesIds: string[];\n      public SearchLocationValue: number;\n      public DataLevelValue: number;\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n        this.TransactionIds = undefined;\n        if (odataObject.TransactionIds) {\n        this.TransactionIds = [];\n        for (var i = 0; i < odataObject.TransactionIds.length; i++) {\n        if (odataObject.TransactionIds[i] != null) {\n            this.TransactionIds[i] = \n                odataObject.TransactionIds[i];\n                            } else {\n        this.TransactionIds[i] = undefined;\n        }\n        }\n        }\n      \n        this.SalesIds = undefined;\n        if (odataObject.SalesIds) {\n        this.SalesIds = [];\n        for (var i = 0; i < odataObject.SalesIds.length; i++) {\n        if (odataObject.SalesIds[i] != null) {\n            this.SalesIds[i] = \n                odataObject.SalesIds[i];\n                            } else {\n        this.SalesIds[i] = undefined;\n        }\n        }\n        }\n      \n            this.SearchLocationValue = \n                odataObject.SearchLocationValue;\n              \n            this.DataLevelValue = \n                odataObject.DataLevelValue;\n              \n      }\n      }\n      entityDictionary['OrderOriginatorSearchCriteriaClass'] = OrderOriginatorSearchCriteriaClass;\n    \n      /**\n      * SalesOrdersLookupCriteria entity class.\n      */\n      export class SalesOrdersLookupCriteriaClass implements Entities.SalesOrdersLookupCriteria {\n      public SalesOrderLookups: Entities.SalesOrderLookup[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n        this.SalesOrderLookups = undefined;\n        if (odataObject.SalesOrderLookups) {\n        this.SalesOrderLookups = [];\n        for (var i = 0; i < odataObject.SalesOrderLookups.length; i++) {\n        if (odataObject.SalesOrderLookups[i] != null) {\n        if (odataObject.SalesOrderLookups[i]['@odata.type'] != null) {\n          var className: string = odataObject.SalesOrderLookups[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.SalesOrderLookups[i] = new entityDictionary[className](odataObject.SalesOrderLookups[i])\n          }\n        } else {\n            this.SalesOrderLookups[i] = new SalesOrderLookupClass(odataObject.SalesOrderLookups[i]);\n        }\n                    } else {\n        this.SalesOrderLookups[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['SalesOrdersLookupCriteriaClass'] = SalesOrdersLookupCriteriaClass;\n    \n      /**\n      * CartLineDeliveryPreference entity class.\n      */\n      export class CartLineDeliveryPreferenceClass implements Entities.CartLineDeliveryPreference {\n      public LineId: string;\n      public DeliveryPreferenceTypeValues: number[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.LineId = \n                odataObject.LineId;\n              \n        this.DeliveryPreferenceTypeValues = undefined;\n        if (odataObject.DeliveryPreferenceTypeValues) {\n        this.DeliveryPreferenceTypeValues = [];\n        for (var i = 0; i < odataObject.DeliveryPreferenceTypeValues.length; i++) {\n        if (odataObject.DeliveryPreferenceTypeValues[i] != null) {\n            this.DeliveryPreferenceTypeValues[i] = \n                odataObject.DeliveryPreferenceTypeValues[i];\n                            } else {\n        this.DeliveryPreferenceTypeValues[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['CartLineDeliveryPreferenceClass'] = CartLineDeliveryPreferenceClass;\n    \n      /**\n      * CartLinePromotion entity class.\n      */\n      export class CartLinePromotionClass implements Entities.CartLinePromotion {\n      public LineId: string;\n      public Promotions: string[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.LineId = \n                odataObject.LineId;\n              \n        this.Promotions = undefined;\n        if (odataObject.Promotions) {\n        this.Promotions = [];\n        for (var i = 0; i < odataObject.Promotions.length; i++) {\n        if (odataObject.Promotions[i] != null) {\n            this.Promotions[i] = \n                odataObject.Promotions[i];\n                            } else {\n        this.Promotions[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['CartLinePromotionClass'] = CartLinePromotionClass;\n    \n      /**\n      * ProductVariant entity class.\n      */\n      export class ProductVariantClass implements Entities.ProductVariant {\n      public ItemId: string;\n      public MasterProductId: number;\n      public InventoryDimensionId: string;\n      public AdjustedPrice: number;\n      public BasePrice: number;\n      public Price: number;\n      public Color: string;\n      public Style: string;\n      public Size: string;\n      public Configuration: string;\n      public ColorId: string;\n      public StyleId: string;\n      public SizeId: string;\n      public ConfigId: string;\n      public VariantId: string;\n      public Images: Entities.RichMediaLocations[];\n      public DistinctProductVariantId: number;\n      public ProductNumber: string;\n      public PropertiesAsList: Entities.ProductPropertyTranslation[];\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.ItemId = \n                odataObject.ItemId;\n              \n            this.MasterProductId = \n                (odataObject.MasterProductId != null) ? parseInt(odataObject.MasterProductId, 10) : undefined;\n              \n            this.InventoryDimensionId = \n                odataObject.InventoryDimensionId;\n              \n            this.AdjustedPrice = \n                (odataObject.AdjustedPrice != null) ? parseFloat(odataObject.AdjustedPrice) : undefined;\n              \n            this.BasePrice = \n                (odataObject.BasePrice != null) ? parseFloat(odataObject.BasePrice) : undefined;\n              \n            this.Price = \n                (odataObject.Price != null) ? parseFloat(odataObject.Price) : undefined;\n              \n            this.Color = \n                odataObject.Color;\n              \n            this.Style = \n                odataObject.Style;\n              \n            this.Size = \n                odataObject.Size;\n              \n            this.Configuration = \n                odataObject.Configuration;\n              \n            this.ColorId = \n                odataObject.ColorId;\n              \n            this.StyleId = \n                odataObject.StyleId;\n              \n            this.SizeId = \n                odataObject.SizeId;\n              \n            this.ConfigId = \n                odataObject.ConfigId;\n              \n            this.VariantId = \n                odataObject.VariantId;\n              \n        this.Images = undefined;\n        if (odataObject.Images) {\n        this.Images = [];\n        for (var i = 0; i < odataObject.Images.length; i++) {\n        if (odataObject.Images[i] != null) {\n        if (odataObject.Images[i]['@odata.type'] != null) {\n          var className: string = odataObject.Images[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.Images[i] = new entityDictionary[className](odataObject.Images[i])\n          }\n        } else {\n            this.Images[i] = new RichMediaLocationsClass(odataObject.Images[i]);\n        }\n                    } else {\n        this.Images[i] = undefined;\n        }\n        }\n        }\n      \n            this.DistinctProductVariantId = \n                (odataObject.DistinctProductVariantId != null) ? parseInt(odataObject.DistinctProductVariantId, 10) : undefined;\n              \n            this.ProductNumber = \n                odataObject.ProductNumber;\n              \n        this.PropertiesAsList = undefined;\n        if (odataObject.PropertiesAsList) {\n        this.PropertiesAsList = [];\n        for (var i = 0; i < odataObject.PropertiesAsList.length; i++) {\n        if (odataObject.PropertiesAsList[i] != null) {\n        if (odataObject.PropertiesAsList[i]['@odata.type'] != null) {\n          var className: string = odataObject.PropertiesAsList[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.PropertiesAsList[i] = new entityDictionary[className](odataObject.PropertiesAsList[i])\n          }\n        } else {\n            this.PropertiesAsList[i] = new ProductPropertyTranslationClass(odataObject.PropertiesAsList[i]);\n        }\n                    } else {\n        this.PropertiesAsList[i] = undefined;\n        }\n        }\n        }\n      \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['ProductVariantClass'] = ProductVariantClass;\n    \n      /**\n      * HardwareProfilePrinter entity class.\n      */\n      export class HardwareProfilePrinterClass implements Entities.HardwareProfilePrinter {\n      public ProfileId: string;\n      public DeviceTypeValue: number;\n      public DeviceName: string;\n      public DeviceMake: string;\n      public DeviceModel: string;\n      public DeviceDescription: string;\n      public CharacterSet: number;\n      public ReceiptProfileId: string;\n      public BinaryConversion: boolean;\n      public DocInsertRemovalTimeout: number;\n      public Logo: string;\n      public LogoAlignment: string;\n      public KeepConnectionOpen: boolean;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.ProfileId = \n                odataObject.ProfileId;\n              \n            this.DeviceTypeValue = \n                odataObject.DeviceTypeValue;\n              \n            this.DeviceName = \n                odataObject.DeviceName;\n              \n            this.DeviceMake = \n                odataObject.DeviceMake;\n              \n            this.DeviceModel = \n                odataObject.DeviceModel;\n              \n            this.DeviceDescription = \n                odataObject.DeviceDescription;\n              \n            this.CharacterSet = \n                odataObject.CharacterSet;\n              \n            this.ReceiptProfileId = \n                odataObject.ReceiptProfileId;\n              \n            this.BinaryConversion = \n                odataObject.BinaryConversion;\n              \n            this.DocInsertRemovalTimeout = \n                odataObject.DocInsertRemovalTimeout;\n              \n            this.Logo = \n                odataObject.Logo;\n              \n            this.LogoAlignment = \n                odataObject.LogoAlignment;\n              \n            this.KeepConnectionOpen = \n                odataObject.KeepConnectionOpen;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['HardwareProfilePrinterClass'] = HardwareProfilePrinterClass;\n    \n      /**\n      * HardwareProfileScanner entity class.\n      */\n      export class HardwareProfileScannerClass implements Entities.HardwareProfileScanner {\n      public ProfileId: string;\n      public DeviceTypeValue: number;\n      public DeviceName: string;\n      public DeviceDescription: string;\n      public DecodeData: boolean;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.ProfileId = \n                odataObject.ProfileId;\n              \n            this.DeviceTypeValue = \n                odataObject.DeviceTypeValue;\n              \n            this.DeviceName = \n                odataObject.DeviceName;\n              \n            this.DeviceDescription = \n                odataObject.DeviceDescription;\n              \n            this.DecodeData = \n                odataObject.DecodeData;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['HardwareProfileScannerClass'] = HardwareProfileScannerClass;\n    \n      /**\n      * HardwareProfileCashDrawer entity class.\n      */\n      export class HardwareProfileCashDrawerClass implements Entities.HardwareProfileCashDrawer {\n      public ProfileId: string;\n      public DeviceTypeValue: number;\n      public DeviceName: string;\n      public DeviceDescription: string;\n      public DeviceMake: string;\n      public DeviceModel: string;\n      public IsSharedShiftDrawer: boolean;\n      public DrawerKeepConnectionOpen: boolean;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.ProfileId = \n                odataObject.ProfileId;\n              \n            this.DeviceTypeValue = \n                odataObject.DeviceTypeValue;\n              \n            this.DeviceName = \n                odataObject.DeviceName;\n              \n            this.DeviceDescription = \n                odataObject.DeviceDescription;\n              \n            this.DeviceMake = \n                odataObject.DeviceMake;\n              \n            this.DeviceModel = \n                odataObject.DeviceModel;\n              \n            this.IsSharedShiftDrawer = \n                odataObject.IsSharedShiftDrawer;\n              \n            this.DrawerKeepConnectionOpen = \n                odataObject.DrawerKeepConnectionOpen;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['HardwareProfileCashDrawerClass'] = HardwareProfileCashDrawerClass;\n    \n      /**\n      * TillLayout entity class.\n      */\n      export class TillLayoutClass implements Entities.TillLayout {\n      public CashChangerLayoutXml: string;\n      public CustomerLayoutId: string;\n      public CustomerLayoutXml: string;\n      public Height: number;\n      public LayoutId: string;\n      public LayoutTypeValue: number;\n      public LayoutXml: string;\n      public LayoutXmlPortrait: string;\n      public Name: string;\n      public ReceiptId: string;\n      public ReceiptItemsLayoutXml: string;\n      public ReceiptPaymentLayoutXml: string;\n      public TotalId: string;\n      public TotalsLayoutXml: string;\n      public Width: number;\n      public RecordId: number;\n      public StartScreen: number;\n      public ButtonGridZones: Entities.ButtonGridZone[];\n      public ImageZones: Entities.ImageZone[];\n      public ReportZones: Entities.ReportZone[];\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.CashChangerLayoutXml = \n                odataObject.CashChangerLayoutXml;\n              \n            this.CustomerLayoutId = \n                odataObject.CustomerLayoutId;\n              \n            this.CustomerLayoutXml = \n                odataObject.CustomerLayoutXml;\n              \n            this.Height = \n                odataObject.Height;\n              \n            this.LayoutId = \n                odataObject.LayoutId;\n              \n            this.LayoutTypeValue = \n                odataObject.LayoutTypeValue;\n              \n            this.LayoutXml = \n                odataObject.LayoutXml;\n              \n            this.LayoutXmlPortrait = \n                odataObject.LayoutXmlPortrait;\n              \n            this.Name = \n                odataObject.Name;\n              \n            this.ReceiptId = \n                odataObject.ReceiptId;\n              \n            this.ReceiptItemsLayoutXml = \n                odataObject.ReceiptItemsLayoutXml;\n              \n            this.ReceiptPaymentLayoutXml = \n                odataObject.ReceiptPaymentLayoutXml;\n              \n            this.TotalId = \n                odataObject.TotalId;\n              \n            this.TotalsLayoutXml = \n                odataObject.TotalsLayoutXml;\n              \n            this.Width = \n                odataObject.Width;\n              \n            this.RecordId = \n                (odataObject.RecordId != null) ? parseInt(odataObject.RecordId, 10) : undefined;\n              \n            this.StartScreen = \n                odataObject.StartScreen;\n              \n        this.ButtonGridZones = undefined;\n        if (odataObject.ButtonGridZones) {\n        this.ButtonGridZones = [];\n        for (var i = 0; i < odataObject.ButtonGridZones.length; i++) {\n        if (odataObject.ButtonGridZones[i] != null) {\n        if (odataObject.ButtonGridZones[i]['@odata.type'] != null) {\n          var className: string = odataObject.ButtonGridZones[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ButtonGridZones[i] = new entityDictionary[className](odataObject.ButtonGridZones[i])\n          }\n        } else {\n            this.ButtonGridZones[i] = new ButtonGridZoneClass(odataObject.ButtonGridZones[i]);\n        }\n                    } else {\n        this.ButtonGridZones[i] = undefined;\n        }\n        }\n        }\n      \n        this.ImageZones = undefined;\n        if (odataObject.ImageZones) {\n        this.ImageZones = [];\n        for (var i = 0; i < odataObject.ImageZones.length; i++) {\n        if (odataObject.ImageZones[i] != null) {\n        if (odataObject.ImageZones[i]['@odata.type'] != null) {\n          var className: string = odataObject.ImageZones[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ImageZones[i] = new entityDictionary[className](odataObject.ImageZones[i])\n          }\n        } else {\n            this.ImageZones[i] = new ImageZoneClass(odataObject.ImageZones[i]);\n        }\n                    } else {\n        this.ImageZones[i] = undefined;\n        }\n        }\n        }\n      \n        this.ReportZones = undefined;\n        if (odataObject.ReportZones) {\n        this.ReportZones = [];\n        for (var i = 0; i < odataObject.ReportZones.length; i++) {\n        if (odataObject.ReportZones[i] != null) {\n        if (odataObject.ReportZones[i]['@odata.type'] != null) {\n          var className: string = odataObject.ReportZones[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ReportZones[i] = new entityDictionary[className](odataObject.ReportZones[i])\n          }\n        } else {\n            this.ReportZones[i] = new ReportZoneClass(odataObject.ReportZones[i]);\n        }\n                    } else {\n        this.ReportZones[i] = undefined;\n        }\n        }\n        }\n      \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['TillLayoutClass'] = TillLayoutClass;\n    \n      /**\n      * SalesInvoice entity class.\n      */\n      export class SalesInvoiceClass implements Entities.SalesInvoice {\n      public RecordId: number;\n      public ChannelId: number;\n      public Id: string;\n      public SalesId: string;\n      public SalesType: string;\n      public InvoiceDate: Date;\n      public DueDate: Date;\n      public CurrencyCode: string;\n      public InvoiceSubtotal: number;\n      public TotalCharges: number;\n      public TotalTaxAmount: number;\n      public TotalLineDiscount: number;\n      public TotalDiscount: number;\n      public Amount: number;\n      public AmountPaid: number;\n      public AmountBalance: number;\n      public Account: string;\n      public Name: string;\n      public TotalManualDiscountPercentage: number;\n      public TotalManualDiscountAmount: number;\n      public SalesInvoiceLine: Entities.SalesInvoiceLine[];\n      public ChargeLines: Entities.ChargeLine[];\n      public TenderLines: Entities.TenderLine[];\n      public DeliveryModeChargeAmount: number;\n      public OrderAccount: string;\n      public OrderedByCustomerName: string;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.RecordId = \n                (odataObject.RecordId != null) ? parseInt(odataObject.RecordId, 10) : undefined;\n              \n            this.ChannelId = \n                (odataObject.ChannelId != null) ? parseInt(odataObject.ChannelId, 10) : undefined;\n              \n            this.Id = \n                odataObject.Id;\n              \n            this.SalesId = \n                odataObject.SalesId;\n              \n            this.SalesType = \n                odataObject.SalesType;\n              \n            this.InvoiceDate = \n                (odataObject.InvoiceDate instanceof Date) ? odataObject.InvoiceDate\n                : (odataObject.InvoiceDate != null) ? jsonLightReadStringPropertyValue(odataObject.InvoiceDate, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.DueDate = \n                (odataObject.DueDate instanceof Date) ? odataObject.DueDate\n                : (odataObject.DueDate != null) ? jsonLightReadStringPropertyValue(odataObject.DueDate, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.CurrencyCode = \n                odataObject.CurrencyCode;\n              \n            this.InvoiceSubtotal = \n                (odataObject.InvoiceSubtotal != null) ? parseFloat(odataObject.InvoiceSubtotal) : undefined;\n              \n            this.TotalCharges = \n                (odataObject.TotalCharges != null) ? parseFloat(odataObject.TotalCharges) : undefined;\n              \n            this.TotalTaxAmount = \n                (odataObject.TotalTaxAmount != null) ? parseFloat(odataObject.TotalTaxAmount) : undefined;\n              \n            this.TotalLineDiscount = \n                (odataObject.TotalLineDiscount != null) ? parseFloat(odataObject.TotalLineDiscount) : undefined;\n              \n            this.TotalDiscount = \n                (odataObject.TotalDiscount != null) ? parseFloat(odataObject.TotalDiscount) : undefined;\n              \n            this.Amount = \n                (odataObject.Amount != null) ? parseFloat(odataObject.Amount) : undefined;\n              \n            this.AmountPaid = \n                (odataObject.AmountPaid != null) ? parseFloat(odataObject.AmountPaid) : undefined;\n              \n            this.AmountBalance = \n                (odataObject.AmountBalance != null) ? parseFloat(odataObject.AmountBalance) : undefined;\n              \n            this.Account = \n                odataObject.Account;\n              \n            this.Name = \n                odataObject.Name;\n              \n            this.TotalManualDiscountPercentage = \n                (odataObject.TotalManualDiscountPercentage != null) ? parseFloat(odataObject.TotalManualDiscountPercentage) : undefined;\n              \n            this.TotalManualDiscountAmount = \n                (odataObject.TotalManualDiscountAmount != null) ? parseFloat(odataObject.TotalManualDiscountAmount) : undefined;\n              \n        this.SalesInvoiceLine = undefined;\n        if (odataObject.SalesInvoiceLine) {\n        this.SalesInvoiceLine = [];\n        for (var i = 0; i < odataObject.SalesInvoiceLine.length; i++) {\n        if (odataObject.SalesInvoiceLine[i] != null) {\n        if (odataObject.SalesInvoiceLine[i]['@odata.type'] != null) {\n          var className: string = odataObject.SalesInvoiceLine[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.SalesInvoiceLine[i] = new entityDictionary[className](odataObject.SalesInvoiceLine[i])\n          }\n        } else {\n            this.SalesInvoiceLine[i] = new SalesInvoiceLineClass(odataObject.SalesInvoiceLine[i]);\n        }\n                    } else {\n        this.SalesInvoiceLine[i] = undefined;\n        }\n        }\n        }\n      \n        this.ChargeLines = undefined;\n        if (odataObject.ChargeLines) {\n        this.ChargeLines = [];\n        for (var i = 0; i < odataObject.ChargeLines.length; i++) {\n        if (odataObject.ChargeLines[i] != null) {\n        if (odataObject.ChargeLines[i]['@odata.type'] != null) {\n          var className: string = odataObject.ChargeLines[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ChargeLines[i] = new entityDictionary[className](odataObject.ChargeLines[i])\n          }\n        } else {\n            this.ChargeLines[i] = new ChargeLineClass(odataObject.ChargeLines[i]);\n        }\n                    } else {\n        this.ChargeLines[i] = undefined;\n        }\n        }\n        }\n      \n        this.TenderLines = undefined;\n        if (odataObject.TenderLines) {\n        this.TenderLines = [];\n        for (var i = 0; i < odataObject.TenderLines.length; i++) {\n        if (odataObject.TenderLines[i] != null) {\n        if (odataObject.TenderLines[i]['@odata.type'] != null) {\n          var className: string = odataObject.TenderLines[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.TenderLines[i] = new entityDictionary[className](odataObject.TenderLines[i])\n          }\n        } else {\n            this.TenderLines[i] = new TenderLineClass(odataObject.TenderLines[i]);\n        }\n                    } else {\n        this.TenderLines[i] = undefined;\n        }\n        }\n        }\n      \n            this.DeliveryModeChargeAmount = \n                (odataObject.DeliveryModeChargeAmount != null) ? parseFloat(odataObject.DeliveryModeChargeAmount) : undefined;\n              \n            this.OrderAccount = \n                odataObject.OrderAccount;\n              \n            this.OrderedByCustomerName = \n                odataObject.OrderedByCustomerName;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['SalesInvoiceClass'] = SalesInvoiceClass;\n    \n      /**\n      * OrderInvoice entity class.\n      */\n      export class OrderInvoiceClass implements Entities.OrderInvoice {\n      public Id: string;\n      public CustomerAccountNumber: string;\n      public CustomerName: string;\n      public InvoiceDate: Date;\n      public TotalAmount: number;\n      public AmountPaid: number;\n      public AmountBalance: number;\n      public InvoiceTypeValue: number;\n      public CurrencyCode: string;\n      public InvoiceDueDate: Date;\n      public InvoicePaidStatusValue: number;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.Id = \n                odataObject.Id;\n              \n            this.CustomerAccountNumber = \n                odataObject.CustomerAccountNumber;\n              \n            this.CustomerName = \n                odataObject.CustomerName;\n              \n            this.InvoiceDate = \n                (odataObject.InvoiceDate instanceof Date) ? odataObject.InvoiceDate\n                : (odataObject.InvoiceDate != null) ? jsonLightReadStringPropertyValue(odataObject.InvoiceDate, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.TotalAmount = \n                (odataObject.TotalAmount != null) ? parseFloat(odataObject.TotalAmount) : undefined;\n              \n            this.AmountPaid = \n                (odataObject.AmountPaid != null) ? parseFloat(odataObject.AmountPaid) : undefined;\n              \n            this.AmountBalance = \n                (odataObject.AmountBalance != null) ? parseFloat(odataObject.AmountBalance) : undefined;\n              \n            this.InvoiceTypeValue = \n                odataObject.InvoiceTypeValue;\n              \n            this.CurrencyCode = \n                odataObject.CurrencyCode;\n              \n            this.InvoiceDueDate = \n                (odataObject.InvoiceDueDate instanceof Date) ? odataObject.InvoiceDueDate\n                : (odataObject.InvoiceDueDate != null) ? jsonLightReadStringPropertyValue(odataObject.InvoiceDueDate, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.InvoicePaidStatusValue = \n                odataObject.InvoicePaidStatusValue;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['OrderInvoiceClass'] = OrderInvoiceClass;\n    \n      /**\n      * TaxOverride entity class.\n      */\n      export class TaxOverrideClass implements Entities.TaxOverride {\n      public Code: string;\n      public SourceTaxGroup: string;\n      public DestinationTaxGroup: string;\n      public SourceItemTaxGroup: string;\n      public DestinationItemTaxGroup: string;\n      public ChannelId: number;\n      public AdditionalDescription: string;\n      public Status: number;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.Code = \n                odataObject.Code;\n              \n            this.SourceTaxGroup = \n                odataObject.SourceTaxGroup;\n              \n            this.DestinationTaxGroup = \n                odataObject.DestinationTaxGroup;\n              \n            this.SourceItemTaxGroup = \n                odataObject.SourceItemTaxGroup;\n              \n            this.DestinationItemTaxGroup = \n                odataObject.DestinationItemTaxGroup;\n              \n            this.ChannelId = \n                (odataObject.ChannelId != null) ? parseInt(odataObject.ChannelId, 10) : undefined;\n              \n            this.AdditionalDescription = \n                odataObject.AdditionalDescription;\n              \n            this.Status = \n                odataObject.Status;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['TaxOverrideClass'] = TaxOverrideClass;\n    \n      /**\n      * TenderType entity class.\n      */\n      export class TenderTypeClass implements Entities.TenderType {\n      public Function: number;\n      public TenderTypeId: string;\n      public Name: string;\n      public OperationId: number;\n      public OperationName: string;\n      public ChangeTenderTypeId: string;\n      public AboveMinimumChangeAmount: number;\n      public AboveMinimumChangeTenderTypeId: string;\n      public OpenDrawer: boolean;\n      public UseSignatureCaptureDevice: boolean;\n      public MinimumSignatureCaptureAmount: number;\n      public IsOvertenderAllowed: boolean;\n      public IsUndertenderAllowed: boolean;\n      public MaximumOvertenderAmount: number;\n      public MaximumUndertenderAmount: number;\n      public MaximumAmountPerTransaction: number;\n      public MaximumAmountPerLine: number;\n      public MinimumAmountPerTransaction: number;\n      public MinimumAmountPerLine: number;\n      public RoundOff: number;\n      public CountingRequired: number;\n      public TakenToBank: number;\n      public TakenToSafe: number;\n      public ConnectorId: string;\n      public GiftCardItem: string;\n      public GiftCardCashoutOutThreshold: number;\n      public ChangeLineOnReceipt: string;\n      public HideCardInputDetails: boolean;\n      public CashDrawerLimitEnabled: boolean;\n      public CashDrawerLimit: number;\n      public RestrictReturnsWithoutReceipt: boolean;\n      public HasTenderDiscount: boolean;\n      public DefaultCardTypeId: string;\n      public UseForDeclareStartAmount: number;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.Function = \n                odataObject.Function;\n              \n            this.TenderTypeId = \n                odataObject.TenderTypeId;\n              \n            this.Name = \n                odataObject.Name;\n              \n            this.OperationId = \n                odataObject.OperationId;\n              \n            this.OperationName = \n                odataObject.OperationName;\n              \n            this.ChangeTenderTypeId = \n                odataObject.ChangeTenderTypeId;\n              \n            this.AboveMinimumChangeAmount = \n                (odataObject.AboveMinimumChangeAmount != null) ? parseFloat(odataObject.AboveMinimumChangeAmount) : undefined;\n              \n            this.AboveMinimumChangeTenderTypeId = \n                odataObject.AboveMinimumChangeTenderTypeId;\n              \n            this.OpenDrawer = \n                odataObject.OpenDrawer;\n              \n            this.UseSignatureCaptureDevice = \n                odataObject.UseSignatureCaptureDevice;\n              \n            this.MinimumSignatureCaptureAmount = \n                (odataObject.MinimumSignatureCaptureAmount != null) ? parseFloat(odataObject.MinimumSignatureCaptureAmount) : undefined;\n              \n            this.IsOvertenderAllowed = \n                odataObject.IsOvertenderAllowed;\n              \n            this.IsUndertenderAllowed = \n                odataObject.IsUndertenderAllowed;\n              \n            this.MaximumOvertenderAmount = \n                (odataObject.MaximumOvertenderAmount != null) ? parseFloat(odataObject.MaximumOvertenderAmount) : undefined;\n              \n            this.MaximumUndertenderAmount = \n                (odataObject.MaximumUndertenderAmount != null) ? parseFloat(odataObject.MaximumUndertenderAmount) : undefined;\n              \n            this.MaximumAmountPerTransaction = \n                (odataObject.MaximumAmountPerTransaction != null) ? parseFloat(odataObject.MaximumAmountPerTransaction) : undefined;\n              \n            this.MaximumAmountPerLine = \n                (odataObject.MaximumAmountPerLine != null) ? parseFloat(odataObject.MaximumAmountPerLine) : undefined;\n              \n            this.MinimumAmountPerTransaction = \n                (odataObject.MinimumAmountPerTransaction != null) ? parseFloat(odataObject.MinimumAmountPerTransaction) : undefined;\n              \n            this.MinimumAmountPerLine = \n                (odataObject.MinimumAmountPerLine != null) ? parseFloat(odataObject.MinimumAmountPerLine) : undefined;\n              \n            this.RoundOff = \n                (odataObject.RoundOff != null) ? parseFloat(odataObject.RoundOff) : undefined;\n              \n            this.CountingRequired = \n                odataObject.CountingRequired;\n              \n            this.TakenToBank = \n                odataObject.TakenToBank;\n              \n            this.TakenToSafe = \n                odataObject.TakenToSafe;\n              \n            this.ConnectorId = \n                odataObject.ConnectorId;\n              \n            this.GiftCardItem = \n                odataObject.GiftCardItem;\n              \n            this.GiftCardCashoutOutThreshold = \n                (odataObject.GiftCardCashoutOutThreshold != null) ? parseFloat(odataObject.GiftCardCashoutOutThreshold) : undefined;\n              \n            this.ChangeLineOnReceipt = \n                odataObject.ChangeLineOnReceipt;\n              \n            this.HideCardInputDetails = \n                odataObject.HideCardInputDetails;\n              \n            this.CashDrawerLimitEnabled = \n                odataObject.CashDrawerLimitEnabled;\n              \n            this.CashDrawerLimit = \n                (odataObject.CashDrawerLimit != null) ? parseFloat(odataObject.CashDrawerLimit) : undefined;\n              \n            this.RestrictReturnsWithoutReceipt = \n                odataObject.RestrictReturnsWithoutReceipt;\n              \n            this.HasTenderDiscount = \n                odataObject.HasTenderDiscount;\n              \n            this.DefaultCardTypeId = \n                odataObject.DefaultCardTypeId;\n              \n            this.UseForDeclareStartAmount = \n                odataObject.UseForDeclareStartAmount;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['TenderTypeClass'] = TenderTypeClass;\n    \n      /**\n      * ReasonCode entity class.\n      */\n      export class ReasonCodeClass implements Entities.ReasonCode {\n      public InputRequired: boolean;\n      public LinkedReasonCodeId: string;\n      public MaximumLength: number;\n      public MaximumValue: number;\n      public MinimumLength: number;\n      public MinimumValue: number;\n      public OncePerTransaction: boolean;\n      public PrintInputNameOnReceipt: boolean;\n      public PrintInputToReceipt: boolean;\n      public PrintPromptToReceipt: boolean;\n      public Prompt: string;\n      public RandomFactor: number;\n      public RetailUseReasonCode: boolean;\n      public ReasonCodeId: string;\n      public Description: string;\n      public InputTypeValue: number;\n      public ActivityValue: number;\n      public IsMultiLineText: boolean;\n      public ReasonSubCodes: Entities.ReasonSubCode[];\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.InputRequired = \n                odataObject.InputRequired;\n              \n            this.LinkedReasonCodeId = \n                odataObject.LinkedReasonCodeId;\n              \n            this.MaximumLength = \n                odataObject.MaximumLength;\n              \n            this.MaximumValue = \n                (odataObject.MaximumValue != null) ? parseFloat(odataObject.MaximumValue) : undefined;\n              \n            this.MinimumLength = \n                odataObject.MinimumLength;\n              \n            this.MinimumValue = \n                (odataObject.MinimumValue != null) ? parseFloat(odataObject.MinimumValue) : undefined;\n              \n            this.OncePerTransaction = \n                odataObject.OncePerTransaction;\n              \n            this.PrintInputNameOnReceipt = \n                odataObject.PrintInputNameOnReceipt;\n              \n            this.PrintInputToReceipt = \n                odataObject.PrintInputToReceipt;\n              \n            this.PrintPromptToReceipt = \n                odataObject.PrintPromptToReceipt;\n              \n            this.Prompt = \n                odataObject.Prompt;\n              \n            this.RandomFactor = \n                (odataObject.RandomFactor != null) ? parseFloat(odataObject.RandomFactor) : undefined;\n              \n            this.RetailUseReasonCode = \n                odataObject.RetailUseReasonCode;\n              \n            this.ReasonCodeId = \n                odataObject.ReasonCodeId;\n              \n            this.Description = \n                odataObject.Description;\n              \n            this.InputTypeValue = \n                odataObject.InputTypeValue;\n              \n            this.ActivityValue = \n                odataObject.ActivityValue;\n              \n            this.IsMultiLineText = \n                odataObject.IsMultiLineText;\n              \n        this.ReasonSubCodes = undefined;\n        if (odataObject.ReasonSubCodes) {\n        this.ReasonSubCodes = [];\n        for (var i = 0; i < odataObject.ReasonSubCodes.length; i++) {\n        if (odataObject.ReasonSubCodes[i] != null) {\n        if (odataObject.ReasonSubCodes[i]['@odata.type'] != null) {\n          var className: string = odataObject.ReasonSubCodes[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ReasonSubCodes[i] = new entityDictionary[className](odataObject.ReasonSubCodes[i])\n          }\n        } else {\n            this.ReasonSubCodes[i] = new ReasonSubCodeClass(odataObject.ReasonSubCodes[i]);\n        }\n                    } else {\n        this.ReasonSubCodes[i] = undefined;\n        }\n        }\n        }\n      \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['ReasonCodeClass'] = ReasonCodeClass;\n    \n      /**\n      * ReportDataSet entity class.\n      */\n      export class ReportDataSetClass implements Entities.ReportDataSet {\n      public ReportId: string;\n      public Parameters: Entities.CommerceProperty[];\n      public Locale: string;\n      public Output: Entities.ReportRow[];\n      public HasTotalRow: boolean;\n      public HasDisclaimer: boolean;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.ReportId = \n                odataObject.ReportId;\n              \n        this.Parameters = undefined;\n        if (odataObject.Parameters) {\n        this.Parameters = [];\n        for (var i = 0; i < odataObject.Parameters.length; i++) {\n        if (odataObject.Parameters[i] != null) {\n        if (odataObject.Parameters[i]['@odata.type'] != null) {\n          var className: string = odataObject.Parameters[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.Parameters[i] = new entityDictionary[className](odataObject.Parameters[i])\n          }\n        } else {\n            this.Parameters[i] = new CommercePropertyClass(odataObject.Parameters[i]);\n        }\n                    } else {\n        this.Parameters[i] = undefined;\n        }\n        }\n        }\n      \n            this.Locale = \n                odataObject.Locale;\n              \n        this.Output = undefined;\n        if (odataObject.Output) {\n        this.Output = [];\n        for (var i = 0; i < odataObject.Output.length; i++) {\n        if (odataObject.Output[i] != null) {\n        if (odataObject.Output[i]['@odata.type'] != null) {\n          var className: string = odataObject.Output[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.Output[i] = new entityDictionary[className](odataObject.Output[i])\n          }\n        } else {\n            this.Output[i] = new ReportRowClass(odataObject.Output[i]);\n        }\n                    } else {\n        this.Output[i] = undefined;\n        }\n        }\n        }\n      \n            this.HasTotalRow = \n                odataObject.HasTotalRow;\n              \n            this.HasDisclaimer = \n                odataObject.HasDisclaimer;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['ReportDataSetClass'] = ReportDataSetClass;\n    \n      /**\n      * ZipCodeInfo entity class.\n      */\n      export class ZipCodeInfoClass implements Entities.ZipCodeInfo {\n      public ZipPostalCode: string;\n      public StreetName: string;\n      public TimeZone: number;\n      public CountryRegionId: string;\n      public StateId: string;\n      public CountyId: string;\n      public CityName: string;\n      public CityAlias: string;\n      public District: string;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.ZipPostalCode = \n                odataObject.ZipPostalCode;\n              \n            this.StreetName = \n                odataObject.StreetName;\n              \n            this.TimeZone = \n                odataObject.TimeZone;\n              \n            this.CountryRegionId = \n                odataObject.CountryRegionId;\n              \n            this.StateId = \n                odataObject.StateId;\n              \n            this.CountyId = \n                odataObject.CountyId;\n              \n            this.CityName = \n                odataObject.CityName;\n              \n            this.CityAlias = \n                odataObject.CityAlias;\n              \n            this.District = \n                odataObject.District;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['ZipCodeInfoClass'] = ZipCodeInfoClass;\n    \n      /**\n      * ReasonCodeRequirement entity class.\n      */\n      export class ReasonCodeRequirementClass implements Entities.ReasonCodeRequirement {\n      public ReasonCodeId: string;\n      public SourceId: string;\n      public TableRefTypeValue: number;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.ReasonCodeId = \n                odataObject.ReasonCodeId;\n              \n            this.SourceId = \n                odataObject.SourceId;\n              \n            this.TableRefTypeValue = \n                odataObject.TableRefTypeValue;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['ReasonCodeRequirementClass'] = ReasonCodeRequirementClass;\n    \n      /**\n      * QueryResultSettings entity class.\n      */\n      export class QueryResultSettingsClass implements Entities.QueryResultSettings {\n      public Paging: Entities.PagingInfo;\n      public Sorting: Entities.SortingInfo;\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n        if (odataObject.Paging == null) {\n            this.Paging = undefined;\n        } else if (odataObject.Paging['@odata.type'] == null) {\n            this.Paging = new PagingInfoClass(odataObject.Paging);\n        } else {\n            var className: string = odataObject.Paging['@odata.type'];\n            className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n            if (entityDictionary[className]) {\n                this.Paging = new entityDictionary[className](odataObject.Paging)\n            }\n        }\n\n      \n        if (odataObject.Sorting == null) {\n            this.Sorting = undefined;\n        } else if (odataObject.Sorting['@odata.type'] == null) {\n            this.Sorting = new SortingInfoClass(odataObject.Sorting);\n        } else {\n            var className: string = odataObject.Sorting['@odata.type'];\n            className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n            if (entityDictionary[className]) {\n                this.Sorting = new entityDictionary[className](odataObject.Sorting)\n            }\n        }\n\n      \n      }\n      }\n      entityDictionary['QueryResultSettingsClass'] = QueryResultSettingsClass;\n    \n      /**\n      * SortingInfo entity class.\n      */\n      export class SortingInfoClass implements Entities.SortingInfo {\n      public Columns: Entities.SortColumn[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n        this.Columns = undefined;\n        if (odataObject.Columns) {\n        this.Columns = [];\n        for (var i = 0; i < odataObject.Columns.length; i++) {\n        if (odataObject.Columns[i] != null) {\n        if (odataObject.Columns[i]['@odata.type'] != null) {\n          var className: string = odataObject.Columns[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.Columns[i] = new entityDictionary[className](odataObject.Columns[i])\n          }\n        } else {\n            this.Columns[i] = new SortColumnClass(odataObject.Columns[i]);\n        }\n                    } else {\n        this.Columns[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['SortingInfoClass'] = SortingInfoClass;\n    \n      /**\n      * SortColumn entity class.\n      */\n      export class SortColumnClass implements Entities.SortColumn {\n      public ColumnName: string;\n      public IsDescending: boolean;\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.ColumnName = \n                odataObject.ColumnName;\n              \n            this.IsDescending = \n                odataObject.IsDescending;\n              \n      }\n      }\n      entityDictionary['SortColumnClass'] = SortColumnClass;\n    \n      /**\n      * PagingInfo entity class.\n      */\n      export class PagingInfoClass implements Entities.PagingInfo {\n      public NextPageToken: string;\n      public Top: number;\n      public Skip: number;\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.NextPageToken = \n                odataObject.NextPageToken;\n              \n            this.Top = \n                (odataObject.Top != null) ? parseInt(odataObject.Top, 10) : undefined;\n              \n            this.Skip = \n                (odataObject.Skip != null) ? parseInt(odataObject.Skip, 10) : undefined;\n              \n      }\n      }\n      entityDictionary['PagingInfoClass'] = PagingInfoClass;\n    \n      /**\n      * ProductPropertyTranslation entity class.\n      */\n      export class ProductPropertyTranslationClass implements Entities.ProductPropertyTranslation {\n      public TranslationLanguage: string;\n      public TranslatedProperties: Entities.ProductProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.TranslationLanguage = \n                odataObject.TranslationLanguage;\n              \n        this.TranslatedProperties = undefined;\n        if (odataObject.TranslatedProperties) {\n        this.TranslatedProperties = [];\n        for (var i = 0; i < odataObject.TranslatedProperties.length; i++) {\n        if (odataObject.TranslatedProperties[i] != null) {\n        if (odataObject.TranslatedProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.TranslatedProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.TranslatedProperties[i] = new entityDictionary[className](odataObject.TranslatedProperties[i])\n          }\n        } else {\n            this.TranslatedProperties[i] = new ProductPropertyClass(odataObject.TranslatedProperties[i]);\n        }\n                    } else {\n        this.TranslatedProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['ProductPropertyTranslationClass'] = ProductPropertyTranslationClass;\n    \n      /**\n      * NumberSequenceSeedData entity class.\n      */\n      export class NumberSequenceSeedDataClass implements Entities.NumberSequenceSeedData {\n      public DataTypeValue: number;\n      public DataValue: number;\n      public LastTransactionDataValue: number;\n      public LastTransactionCreatedDateTime: Date;\n      public LastTransactionId: string;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.DataTypeValue = \n                odataObject.DataTypeValue;\n              \n            this.DataValue = \n                (odataObject.DataValue != null) ? parseInt(odataObject.DataValue, 10) : undefined;\n              \n            this.LastTransactionDataValue = \n                (odataObject.LastTransactionDataValue != null) ? parseInt(odataObject.LastTransactionDataValue, 10) : undefined;\n              \n            this.LastTransactionCreatedDateTime = \n                (odataObject.LastTransactionCreatedDateTime instanceof Date) ? odataObject.LastTransactionCreatedDateTime\n                : (odataObject.LastTransactionCreatedDateTime != null) ? jsonLightReadStringPropertyValue(odataObject.LastTransactionCreatedDateTime, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.LastTransactionId = \n                odataObject.LastTransactionId;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['NumberSequenceSeedDataClass'] = NumberSequenceSeedDataClass;\n    \n      /**\n      * ReceiptNumberResetInfo entity class.\n      */\n      export class ReceiptNumberResetInfoClass implements Entities.ReceiptNumberResetInfo {\n      public ValidFrom: Date;\n      public ValidTo: Date;\n      public ResetDate: Date;\n      public TypeValue: number;\n      public Enabled: boolean;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.ValidFrom = \n                (odataObject.ValidFrom instanceof Date) ? odataObject.ValidFrom\n                : (odataObject.ValidFrom != null) ? jsonLightReadStringPropertyValue(odataObject.ValidFrom, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.ValidTo = \n                (odataObject.ValidTo instanceof Date) ? odataObject.ValidTo\n                : (odataObject.ValidTo != null) ? jsonLightReadStringPropertyValue(odataObject.ValidTo, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.ResetDate = \n                (odataObject.ResetDate instanceof Date) ? odataObject.ResetDate\n                : (odataObject.ResetDate != null) ? jsonLightReadStringPropertyValue(odataObject.ResetDate, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.TypeValue = \n                odataObject.TypeValue;\n              \n            this.Enabled = \n                odataObject.Enabled;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['ReceiptNumberResetInfoClass'] = ReceiptNumberResetInfoClass;\n    \n      /**\n      * DeviceActivationResult entity class.\n      */\n      export class DeviceActivationResultClass implements Entities.DeviceActivationResult {\n      public Device: Entities.Device;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n        if (odataObject.Device == null) {\n            this.Device = undefined;\n        } else if (odataObject.Device['@odata.type'] == null) {\n            this.Device = new DeviceClass(odataObject.Device);\n        } else {\n            var className: string = odataObject.Device['@odata.type'];\n            className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n            if (entityDictionary[className]) {\n                this.Device = new entityDictionary[className](odataObject.Device)\n            }\n        }\n\n      \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['DeviceActivationResultClass'] = DeviceActivationResultClass;\n    \n      /**\n      * PurchaseHistory entity class.\n      */\n      export class PurchaseHistoryClass implements Entities.PurchaseHistory {\n      public DatePurchased: Date;\n      public ImageUrl: string;\n      public ItemId: string;\n      public ProductId: number;\n      public ProductName: string;\n      public ReceiptId: string;\n      public SalesId: string;\n      public ChannelId: number;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.DatePurchased = \n                (odataObject.DatePurchased instanceof Date) ? odataObject.DatePurchased\n                : (odataObject.DatePurchased != null) ? jsonLightReadStringPropertyValue(odataObject.DatePurchased, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.ImageUrl = \n                odataObject.ImageUrl;\n              \n            this.ItemId = \n                odataObject.ItemId;\n              \n            this.ProductId = \n                (odataObject.ProductId != null) ? parseInt(odataObject.ProductId, 10) : undefined;\n              \n            this.ProductName = \n                odataObject.ProductName;\n              \n            this.ReceiptId = \n                odataObject.ReceiptId;\n              \n            this.SalesId = \n                odataObject.SalesId;\n              \n            this.ChannelId = \n                (odataObject.ChannelId != null) ? parseInt(odataObject.ChannelId, 10) : undefined;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['PurchaseHistoryClass'] = PurchaseHistoryClass;\n    \n      /**\n      * PurchaseHistorySearchCriteria entity class.\n      */\n      export class PurchaseHistorySearchCriteriaClass implements Entities.PurchaseHistorySearchCriteria {\n      public StartDate: Date;\n      public EndDate: Date;\n      public CustomerAccountNumber: string;\n      public ItemId: string;\n      public ProductNameFilter: string;\n      public ReceiptId: string;\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.StartDate = \n                (odataObject.StartDate instanceof Date) ? odataObject.StartDate\n                : (odataObject.StartDate != null) ? jsonLightReadStringPropertyValue(odataObject.StartDate, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.EndDate = \n                (odataObject.EndDate instanceof Date) ? odataObject.EndDate\n                : (odataObject.EndDate != null) ? jsonLightReadStringPropertyValue(odataObject.EndDate, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.CustomerAccountNumber = \n                odataObject.CustomerAccountNumber;\n              \n            this.ItemId = \n                odataObject.ItemId;\n              \n            this.ProductNameFilter = \n                odataObject.ProductNameFilter;\n              \n            this.ReceiptId = \n                odataObject.ReceiptId;\n              \n      }\n      }\n      entityDictionary['PurchaseHistorySearchCriteriaClass'] = PurchaseHistorySearchCriteriaClass;\n    \n      /**\n      * Node entity class.\n      */\n      export class NodeClass implements Entities.Node {\n      public ParentScopeId: string;\n      public ParentSequence: number;\n      public Id: string;\n      public Sequence: number;\n      public Description: string;\n      public ScreenshotUri: string;\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.ParentScopeId = \n                odataObject.ParentScopeId;\n              \n            this.ParentSequence = \n                odataObject.ParentSequence;\n              \n            this.Id = \n                odataObject.Id;\n              \n            this.Sequence = \n                odataObject.Sequence;\n              \n            this.Description = \n                odataObject.Description;\n              \n            this.ScreenshotUri = \n                odataObject.ScreenshotUri;\n              \n      }\n      }\n      entityDictionary['NodeClass'] = NodeClass;\n    \n      /**\n      * Line entity class.\n      */\n      export class LineClass implements Entities.Line {\n      public ChildrenIds: number[];\n      public Id: number;\n      public Name: string;\n      public Description: string;\n      public IsLinked: boolean;\n      public LineMetadataId: number;\n      public Artifacts: Entities.ArtifactSummary[];\n      public MetadataPropertyValues: Entities.MetadataPropertyValue[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n        this.ChildrenIds = undefined;\n        if (odataObject.ChildrenIds) {\n        this.ChildrenIds = [];\n        for (var i = 0; i < odataObject.ChildrenIds.length; i++) {\n        if (odataObject.ChildrenIds[i] != null) {\n            this.ChildrenIds[i] = \n                parseInt(odataObject.ChildrenIds[i], 10);\n                            } else {\n        this.ChildrenIds[i] = undefined;\n        }\n        }\n        }\n      \n            this.Id = \n                (odataObject.Id != null) ? parseInt(odataObject.Id, 10) : undefined;\n              \n            this.Name = \n                odataObject.Name;\n              \n            this.Description = \n                odataObject.Description;\n              \n            this.IsLinked = \n                odataObject.IsLinked;\n              \n            this.LineMetadataId = \n                (odataObject.LineMetadataId != null) ? parseInt(odataObject.LineMetadataId, 10) : undefined;\n              \n        this.Artifacts = undefined;\n        if (odataObject.Artifacts) {\n        this.Artifacts = [];\n        for (var i = 0; i < odataObject.Artifacts.length; i++) {\n        if (odataObject.Artifacts[i] != null) {\n        if (odataObject.Artifacts[i]['@odata.type'] != null) {\n          var className: string = odataObject.Artifacts[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.Artifacts[i] = new entityDictionary[className](odataObject.Artifacts[i])\n          }\n        } else {\n            this.Artifacts[i] = new ArtifactSummaryClass(odataObject.Artifacts[i]);\n        }\n                    } else {\n        this.Artifacts[i] = undefined;\n        }\n        }\n        }\n      \n        this.MetadataPropertyValues = undefined;\n        if (odataObject.MetadataPropertyValues) {\n        this.MetadataPropertyValues = [];\n        for (var i = 0; i < odataObject.MetadataPropertyValues.length; i++) {\n        if (odataObject.MetadataPropertyValues[i] != null) {\n        if (odataObject.MetadataPropertyValues[i]['@odata.type'] != null) {\n          var className: string = odataObject.MetadataPropertyValues[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.MetadataPropertyValues[i] = new entityDictionary[className](odataObject.MetadataPropertyValues[i])\n          }\n        } else {\n            this.MetadataPropertyValues[i] = new MetadataPropertyValueClass(odataObject.MetadataPropertyValues[i]);\n        }\n                    } else {\n        this.MetadataPropertyValues[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['LineClass'] = LineClass;\n    \n      /**\n      * MetadataText entity class.\n      */\n      export class MetadataTextClass implements Entities.MetadataText {\n      public Id: string;\n      public Text: string;\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.Id = \n                odataObject.Id;\n              \n            this.Text = \n                odataObject.Text;\n              \n      }\n      }\n      entityDictionary['MetadataTextClass'] = MetadataTextClass;\n    \n      /**\n      * MetadataHypertextLink entity class.\n      */\n      export class MetadataHypertextLinkClass implements Entities.MetadataHypertextLink {\n      public Id: string;\n      public DisplayName: string;\n      public Url: string;\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.Id = \n                odataObject.Id;\n              \n            this.DisplayName = \n                odataObject.DisplayName;\n              \n            this.Url = \n                odataObject.Url;\n              \n      }\n      }\n      entityDictionary['MetadataHypertextLinkClass'] = MetadataHypertextLinkClass;\n    \n      /**\n      * Scope entity class.\n      */\n      export class ScopeClass\n        extends NodeClass\n       implements Entities.Scope {\n      public Name: string;\n      public ScopeTypeValue: number;\n      public Children: Entities.Node[];\n      public ActiveCount: number;\n      public IsForm: boolean;\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      super(odataObject);odataObject = odataObject || {};\n            this.Name = \n                odataObject.Name;\n              \n            this.ScopeTypeValue = \n                odataObject.ScopeTypeValue;\n              \n        this.Children = undefined;\n        if (odataObject.Children) {\n        this.Children = [];\n        for (var i = 0; i < odataObject.Children.length; i++) {\n        if (odataObject.Children[i] != null) {\n        if (odataObject.Children[i]['@odata.type'] != null) {\n          var className: string = odataObject.Children[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.Children[i] = new entityDictionary[className](odataObject.Children[i])\n          }\n        } else {\n            this.Children[i] = new NodeClass(odataObject.Children[i]);\n        }\n                    } else {\n        this.Children[i] = undefined;\n        }\n        }\n        }\n      \n            this.ActiveCount = \n                odataObject.ActiveCount;\n              \n            this.IsForm = \n                odataObject.IsForm;\n              \n        this[\"@odata.type\"] = \"#Microsoft.Dynamics.Commerce.Runtime.DataModel.Scope\";\n      \n      }\n      }\n      entityDictionary['ScopeClass'] = ScopeClass;\n    \n      /**\n      * Framework entity class.\n      */\n      export class FrameworkClass implements Entities.Framework {\n      public Lines: Entities.Line[];\n      public Id: number;\n      public Name: string;\n      public Access: string;\n      public Hierarchy: Entities.Line[];\n      public Publisher: string;\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n        this.Lines = undefined;\n        if (odataObject.Lines) {\n        this.Lines = [];\n        for (var i = 0; i < odataObject.Lines.length; i++) {\n        if (odataObject.Lines[i] != null) {\n        if (odataObject.Lines[i]['@odata.type'] != null) {\n          var className: string = odataObject.Lines[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.Lines[i] = new entityDictionary[className](odataObject.Lines[i])\n          }\n        } else {\n            this.Lines[i] = new LineClass(odataObject.Lines[i]);\n        }\n                    } else {\n        this.Lines[i] = undefined;\n        }\n        }\n        }\n      \n            this.Id = \n                (odataObject.Id != null) ? parseInt(odataObject.Id, 10) : undefined;\n              \n            this.Name = \n                odataObject.Name;\n              \n            this.Access = \n                odataObject.Access;\n              \n        this.Hierarchy = undefined;\n        if (odataObject.Hierarchy) {\n        this.Hierarchy = [];\n        for (var i = 0; i < odataObject.Hierarchy.length; i++) {\n        if (odataObject.Hierarchy[i] != null) {\n        if (odataObject.Hierarchy[i]['@odata.type'] != null) {\n          var className: string = odataObject.Hierarchy[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.Hierarchy[i] = new entityDictionary[className](odataObject.Hierarchy[i])\n          }\n        } else {\n            this.Hierarchy[i] = new LineClass(odataObject.Hierarchy[i]);\n        }\n                    } else {\n        this.Hierarchy[i] = undefined;\n        }\n        }\n        }\n      \n            this.Publisher = \n                odataObject.Publisher;\n              \n      }\n      }\n      entityDictionary['FrameworkClass'] = FrameworkClass;\n    \n      /**\n      * UserAction entity class.\n      */\n      export class UserActionClass\n        extends NodeClass\n       implements Entities.UserAction {\n      public SystemGenerated: boolean;\n      public GlobalId: string;\n      public Annotations: Entities.Annotation[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      super(odataObject);odataObject = odataObject || {};\n            this.SystemGenerated = \n                odataObject.SystemGenerated;\n              \n            this.GlobalId = \n                odataObject.GlobalId;\n              \n        this.Annotations = undefined;\n        if (odataObject.Annotations) {\n        this.Annotations = [];\n        for (var i = 0; i < odataObject.Annotations.length; i++) {\n        if (odataObject.Annotations[i] != null) {\n        if (odataObject.Annotations[i]['@odata.type'] != null) {\n          var className: string = odataObject.Annotations[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.Annotations[i] = new entityDictionary[className](odataObject.Annotations[i])\n          }\n        } else {\n            this.Annotations[i] = new AnnotationClass(odataObject.Annotations[i]);\n        }\n                    } else {\n        this.Annotations[i] = undefined;\n        }\n        }\n        }\n      \n        this[\"@odata.type\"] = \"#Microsoft.Dynamics.Commerce.Runtime.DataModel.UserAction\";\n      \n      }\n      }\n      entityDictionary['UserActionClass'] = UserActionClass;\n    \n      /**\n      * TaskUserAction entity class.\n      */\n      export class TaskUserActionClass\n        extends UserActionClass\n       implements Entities.TaskUserAction {\n      public UserActionTypeValue: number;\n      public Name: string;\n      public Comment: string;\n      public TaskId: string;\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      super(odataObject);odataObject = odataObject || {};\n            this.UserActionTypeValue = \n                odataObject.UserActionTypeValue;\n              \n            this.Name = \n                odataObject.Name;\n              \n            this.Comment = \n                odataObject.Comment;\n              \n            this.TaskId = \n                odataObject.TaskId;\n              \n        this[\"@odata.type\"] = \"#Microsoft.Dynamics.Commerce.Runtime.DataModel.TaskUserAction\";\n      \n      }\n      }\n      entityDictionary['TaskUserActionClass'] = TaskUserActionClass;\n    \n      /**\n      * FormUserAction entity class.\n      */\n      export class FormUserActionClass\n        extends UserActionClass\n       implements Entities.FormUserAction {\n      public FormId: string;\n      public ControlLabel: string;\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      super(odataObject);odataObject = odataObject || {};\n            this.FormId = \n                odataObject.FormId;\n              \n            this.ControlLabel = \n                odataObject.ControlLabel;\n              \n        this[\"@odata.type\"] = \"#Microsoft.Dynamics.Commerce.Runtime.DataModel.FormUserAction\";\n      \n      }\n      }\n      entityDictionary['FormUserActionClass'] = FormUserActionClass;\n    \n      /**\n      * CommandUserAction entity class.\n      */\n      export class CommandUserActionClass\n        extends FormUserActionClass\n       implements Entities.CommandUserAction {\n      public ReturnTypeValue: number;\n      public CommandName: string;\n      public ControlName: string;\n      public ControlType: string;\n      public Arguments: Entities.CommandArgument[];\n      public LabelId: string;\n      public ReturnValue: string;\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      super(odataObject);odataObject = odataObject || {};\n            this.ReturnTypeValue = \n                odataObject.ReturnTypeValue;\n              \n            this.CommandName = \n                odataObject.CommandName;\n              \n            this.ControlName = \n                odataObject.ControlName;\n              \n            this.ControlType = \n                odataObject.ControlType;\n              \n        this.Arguments = undefined;\n        if (odataObject.Arguments) {\n        this.Arguments = [];\n        for (var i = 0; i < odataObject.Arguments.length; i++) {\n        if (odataObject.Arguments[i] != null) {\n        if (odataObject.Arguments[i]['@odata.type'] != null) {\n          var className: string = odataObject.Arguments[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.Arguments[i] = new entityDictionary[className](odataObject.Arguments[i])\n          }\n        } else {\n            this.Arguments[i] = new CommandArgumentClass(odataObject.Arguments[i]);\n        }\n                    } else {\n        this.Arguments[i] = undefined;\n        }\n        }\n        }\n      \n            this.LabelId = \n                odataObject.LabelId;\n              \n            this.ReturnValue = \n                odataObject.ReturnValue;\n              \n        this[\"@odata.type\"] = \"#Microsoft.Dynamics.Commerce.Runtime.DataModel.CommandUserAction\";\n      \n      }\n      }\n      entityDictionary['CommandUserActionClass'] = CommandUserActionClass;\n    \n      /**\n      * Annotation entity class.\n      */\n      export class AnnotationClass implements Entities.Annotation {\n      public Description: string;\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.Description = \n                odataObject.Description;\n              \n      }\n      }\n      entityDictionary['AnnotationClass'] = AnnotationClass;\n    \n      /**\n      * Recording entity class.\n      */\n      export class RecordingClass implements Entities.Recording {\n      public Scopes: Entities.Scope[];\n      public FormContextEntries: Entities.FormContextDictionaryEntry[];\n      public RootScope: Entities.Scope;\n      public Name: string;\n      public Description: string;\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n        this.Scopes = undefined;\n        if (odataObject.Scopes) {\n        this.Scopes = [];\n        for (var i = 0; i < odataObject.Scopes.length; i++) {\n        if (odataObject.Scopes[i] != null) {\n        if (odataObject.Scopes[i]['@odata.type'] != null) {\n          var className: string = odataObject.Scopes[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.Scopes[i] = new entityDictionary[className](odataObject.Scopes[i])\n          }\n        } else {\n            this.Scopes[i] = new ScopeClass(odataObject.Scopes[i]);\n        }\n                    } else {\n        this.Scopes[i] = undefined;\n        }\n        }\n        }\n      \n        this.FormContextEntries = undefined;\n        if (odataObject.FormContextEntries) {\n        this.FormContextEntries = [];\n        for (var i = 0; i < odataObject.FormContextEntries.length; i++) {\n        if (odataObject.FormContextEntries[i] != null) {\n        if (odataObject.FormContextEntries[i]['@odata.type'] != null) {\n          var className: string = odataObject.FormContextEntries[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.FormContextEntries[i] = new entityDictionary[className](odataObject.FormContextEntries[i])\n          }\n        } else {\n            this.FormContextEntries[i] = new FormContextDictionaryEntryClass(odataObject.FormContextEntries[i]);\n        }\n                    } else {\n        this.FormContextEntries[i] = undefined;\n        }\n        }\n        }\n      \n        if (odataObject.RootScope == null) {\n            this.RootScope = undefined;\n        } else if (odataObject.RootScope['@odata.type'] == null) {\n            this.RootScope = new ScopeClass(odataObject.RootScope);\n        } else {\n            var className: string = odataObject.RootScope['@odata.type'];\n            className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n            if (entityDictionary[className]) {\n                this.RootScope = new entityDictionary[className](odataObject.RootScope)\n            }\n        }\n\n      \n            this.Name = \n                odataObject.Name;\n              \n            this.Description = \n                odataObject.Description;\n              \n      }\n      }\n      entityDictionary['RecordingClass'] = RecordingClass;\n    \n      /**\n      * FormContextDictionaryEntry entity class.\n      */\n      export class FormContextDictionaryEntryClass implements Entities.FormContextDictionaryEntry {\n      public FormId: string;\n      public FormContext: Entities.FormContext;\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.FormId = \n                odataObject.FormId;\n              \n        if (odataObject.FormContext == null) {\n            this.FormContext = undefined;\n        } else if (odataObject.FormContext['@odata.type'] == null) {\n            this.FormContext = new FormContextClass(odataObject.FormContext);\n        } else {\n            var className: string = odataObject.FormContext['@odata.type'];\n            className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n            if (entityDictionary[className]) {\n                this.FormContext = new entityDictionary[className](odataObject.FormContext)\n            }\n        }\n\n      \n      }\n      }\n      entityDictionary['FormContextDictionaryEntryClass'] = FormContextDictionaryEntryClass;\n    \n      /**\n      * ProductVariantResolutionContext entity class.\n      */\n      export class ProductVariantResolutionContextClass implements Entities.ProductVariantResolutionContext {\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n      }\n      }\n      entityDictionary['ProductVariantResolutionContextClass'] = ProductVariantResolutionContextClass;\n    \n      /**\n      * ProductVariantResolutionOnKitSelectionContext entity class.\n      */\n      export class ProductVariantResolutionOnKitSelectionContextClass\n        extends ProductVariantResolutionContextClass\n       implements Entities.ProductVariantResolutionOnKitSelectionContext {\n      public SelectedComponents: Entities.ComponentInSlotRelation[];\n      public SlotId: number;\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      super(odataObject);odataObject = odataObject || {};\n        this.SelectedComponents = undefined;\n        if (odataObject.SelectedComponents) {\n        this.SelectedComponents = [];\n        for (var i = 0; i < odataObject.SelectedComponents.length; i++) {\n        if (odataObject.SelectedComponents[i] != null) {\n        if (odataObject.SelectedComponents[i]['@odata.type'] != null) {\n          var className: string = odataObject.SelectedComponents[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.SelectedComponents[i] = new entityDictionary[className](odataObject.SelectedComponents[i])\n          }\n        } else {\n            this.SelectedComponents[i] = new ComponentInSlotRelationClass(odataObject.SelectedComponents[i]);\n        }\n                    } else {\n        this.SelectedComponents[i] = undefined;\n        }\n        }\n        }\n      \n            this.SlotId = \n                (odataObject.SlotId != null) ? parseInt(odataObject.SlotId, 10) : undefined;\n              \n        this[\"@odata.type\"] = \"#Microsoft.Dynamics.Commerce.Runtime.DataModel.ProductVariantResolutionOnKitSelectionContext\";\n      \n      }\n      }\n      entityDictionary['ProductVariantResolutionOnKitSelectionContextClass'] = ProductVariantResolutionOnKitSelectionContextClass;\n    \n      /**\n      * WarehouseLocation entity class.\n      */\n      export class WarehouseLocationClass implements Entities.WarehouseLocation {\n      public LocationId: string;\n      public IsLicensePlateControlled: boolean;\n      public ProfileId: string;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.LocationId = \n                odataObject.LocationId;\n              \n            this.IsLicensePlateControlled = \n                odataObject.IsLicensePlateControlled;\n              \n            this.ProfileId = \n                odataObject.ProfileId;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['WarehouseLocationClass'] = WarehouseLocationClass;\n    \n      /**\n      * FiscalTransaction entity class.\n      */\n      export class FiscalTransactionClass implements Entities.FiscalTransaction {\n      public CreatedDateTime: Date;\n      public StoreId: string;\n      public TerminalId: string;\n      public TransactionId: string;\n      public TransDateTime: Date;\n      public LineNumber: number;\n      public RegisterResponse: string;\n      public ReceiptCopy: boolean;\n      public RecordGUID: string;\n      public RegisterStoreId: string;\n      public RegisterTerminalId: string;\n      public StaffId: string;\n      public RegistrationStatusValue: number;\n      public RegistrationProcessId: string;\n      public ConnectorGroup: string;\n      public ConnectorName: string;\n      public ConnectorFunctionalityProfileId: string;\n      public RegisterInfo: string;\n      public DocumentNumber: string;\n      public RegistrationTypeValue: number;\n      public ServiceName: string;\n      public CountryRegionIsoCode: string;\n      public TenderLineAdjustments: Entities.FiscalTransactionTenderLineAdjustment[];\n      public SalesLineAdjustments: Entities.FiscalTransactionSalesLineAdjustment[];\n      public ReasonCodeLines: Entities.ReasonCodeLine[];\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.CreatedDateTime = \n                (odataObject.CreatedDateTime instanceof Date) ? odataObject.CreatedDateTime\n                : (odataObject.CreatedDateTime != null) ? jsonLightReadStringPropertyValue(odataObject.CreatedDateTime, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.StoreId = \n                odataObject.StoreId;\n              \n            this.TerminalId = \n                odataObject.TerminalId;\n              \n            this.TransactionId = \n                odataObject.TransactionId;\n              \n            this.TransDateTime = \n                (odataObject.TransDateTime instanceof Date) ? odataObject.TransDateTime\n                : (odataObject.TransDateTime != null) ? jsonLightReadStringPropertyValue(odataObject.TransDateTime, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.LineNumber = \n                (odataObject.LineNumber != null) ? parseFloat(odataObject.LineNumber) : undefined;\n              \n            this.RegisterResponse = \n                odataObject.RegisterResponse;\n              \n            this.ReceiptCopy = \n                odataObject.ReceiptCopy;\n              \n            this.RecordGUID = \n                odataObject.RecordGUID;\n              \n            this.RegisterStoreId = \n                odataObject.RegisterStoreId;\n              \n            this.RegisterTerminalId = \n                odataObject.RegisterTerminalId;\n              \n            this.StaffId = \n                odataObject.StaffId;\n              \n            this.RegistrationStatusValue = \n                odataObject.RegistrationStatusValue;\n              \n            this.RegistrationProcessId = \n                odataObject.RegistrationProcessId;\n              \n            this.ConnectorGroup = \n                odataObject.ConnectorGroup;\n              \n            this.ConnectorName = \n                odataObject.ConnectorName;\n              \n            this.ConnectorFunctionalityProfileId = \n                odataObject.ConnectorFunctionalityProfileId;\n              \n            this.RegisterInfo = \n                odataObject.RegisterInfo;\n              \n            this.DocumentNumber = \n                odataObject.DocumentNumber;\n              \n            this.RegistrationTypeValue = \n                odataObject.RegistrationTypeValue;\n              \n            this.ServiceName = \n                odataObject.ServiceName;\n              \n            this.CountryRegionIsoCode = \n                odataObject.CountryRegionIsoCode;\n              \n        this.TenderLineAdjustments = undefined;\n        if (odataObject.TenderLineAdjustments) {\n        this.TenderLineAdjustments = [];\n        for (var i = 0; i < odataObject.TenderLineAdjustments.length; i++) {\n        if (odataObject.TenderLineAdjustments[i] != null) {\n        if (odataObject.TenderLineAdjustments[i]['@odata.type'] != null) {\n          var className: string = odataObject.TenderLineAdjustments[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.TenderLineAdjustments[i] = new entityDictionary[className](odataObject.TenderLineAdjustments[i])\n          }\n        } else {\n            this.TenderLineAdjustments[i] = new FiscalTransactionTenderLineAdjustmentClass(odataObject.TenderLineAdjustments[i]);\n        }\n                    } else {\n        this.TenderLineAdjustments[i] = undefined;\n        }\n        }\n        }\n      \n        this.SalesLineAdjustments = undefined;\n        if (odataObject.SalesLineAdjustments) {\n        this.SalesLineAdjustments = [];\n        for (var i = 0; i < odataObject.SalesLineAdjustments.length; i++) {\n        if (odataObject.SalesLineAdjustments[i] != null) {\n        if (odataObject.SalesLineAdjustments[i]['@odata.type'] != null) {\n          var className: string = odataObject.SalesLineAdjustments[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.SalesLineAdjustments[i] = new entityDictionary[className](odataObject.SalesLineAdjustments[i])\n          }\n        } else {\n            this.SalesLineAdjustments[i] = new FiscalTransactionSalesLineAdjustmentClass(odataObject.SalesLineAdjustments[i]);\n        }\n                    } else {\n        this.SalesLineAdjustments[i] = undefined;\n        }\n        }\n        }\n      \n        this.ReasonCodeLines = undefined;\n        if (odataObject.ReasonCodeLines) {\n        this.ReasonCodeLines = [];\n        for (var i = 0; i < odataObject.ReasonCodeLines.length; i++) {\n        if (odataObject.ReasonCodeLines[i] != null) {\n        if (odataObject.ReasonCodeLines[i]['@odata.type'] != null) {\n          var className: string = odataObject.ReasonCodeLines[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ReasonCodeLines[i] = new entityDictionary[className](odataObject.ReasonCodeLines[i])\n          }\n        } else {\n            this.ReasonCodeLines[i] = new ReasonCodeLineClass(odataObject.ReasonCodeLines[i]);\n        }\n                    } else {\n        this.ReasonCodeLines[i] = undefined;\n        }\n        }\n        }\n      \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['FiscalTransactionClass'] = FiscalTransactionClass;\n    \n      /**\n      * FulfillmentLine entity class.\n      */\n      export class FulfillmentLineClass implements Entities.FulfillmentLine {\n      public SalesId: string;\n      public SalesPersonStoreId: string;\n      public SalesPersonId: string;\n      public SalesPersonFirstName: string;\n      public SalesPersonLastName: string;\n      public SalesLineNumber: number;\n      public ReceiptId: string;\n      public ChannelReferenceId: string;\n      public CustomerId: string;\n      public CustomerName: string;\n      public EmailAddress: string;\n      public DeliveryModeCode: string;\n      public DocumentStatusValue: number;\n      public FulfillmentDeliveryType: Entities.FulfillmentLineDeliveryType;\n      public DeliveryTypeValue: number;\n      public QuantityOrdered: number;\n      public QuantityNotProcessed: number;\n      public QuantityReserved: number;\n      public QuantityPicked: number;\n      public QuantityPacked: number;\n      public QuantityInvoiced: number;\n      public QuantityNotInvoiced: number;\n      public QuantityNotPacked: number;\n      public QuantityNotPicked: number;\n      public StoreInventoryTotalQuantity: number;\n      public StoreInventoryReservedQuantity: number;\n      public StoreInventoryOrderedQuantity: number;\n      public ItemId: string;\n      public ProductId: number;\n      public ProductVariant: string;\n      public ItemName: string;\n      public SerialNumber: string;\n      public FulfillmentStatus: Entities.FulfillmentLineStatus;\n      public FulfillmentStatusValue: number;\n      public UnitOfMeasureSymbol: string;\n      public RequestedShipDate: Date;\n      public RequestedDeliveryDate: Date;\n      public RequestedReceiptDate: Date;\n      public PickupTimeslotStartDateTime: Date;\n      public PickupTimeslotEndDateTime: Date;\n      public CreatedDate: Date;\n      public TotalAmount: number;\n      public Balance: number;\n      public ShippingAddress: Entities.Address;\n      public DetailedOrderStatusValue: number;\n      public DetailedLineStatusValue: number;\n      public ChannelTypeValue: number;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.SalesId = \n                odataObject.SalesId;\n              \n            this.SalesPersonStoreId = \n                odataObject.SalesPersonStoreId;\n              \n            this.SalesPersonId = \n                odataObject.SalesPersonId;\n              \n            this.SalesPersonFirstName = \n                odataObject.SalesPersonFirstName;\n              \n            this.SalesPersonLastName = \n                odataObject.SalesPersonLastName;\n              \n            this.SalesLineNumber = \n                (odataObject.SalesLineNumber != null) ? parseFloat(odataObject.SalesLineNumber) : undefined;\n              \n            this.ReceiptId = \n                odataObject.ReceiptId;\n              \n            this.ChannelReferenceId = \n                odataObject.ChannelReferenceId;\n              \n            this.CustomerId = \n                odataObject.CustomerId;\n              \n            this.CustomerName = \n                odataObject.CustomerName;\n              \n            this.EmailAddress = \n                odataObject.EmailAddress;\n              \n            this.DeliveryModeCode = \n                odataObject.DeliveryModeCode;\n              \n            this.DocumentStatusValue = \n                odataObject.DocumentStatusValue;\n              \n        if (odataObject.FulfillmentDeliveryType == null) {\n            this.FulfillmentDeliveryType = undefined;\n        } else if (odataObject.FulfillmentDeliveryType['@odata.type'] == null) {\n            this.FulfillmentDeliveryType = new FulfillmentLineDeliveryTypeClass(odataObject.FulfillmentDeliveryType);\n        } else {\n            var className: string = odataObject.FulfillmentDeliveryType['@odata.type'];\n            className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n            if (entityDictionary[className]) {\n                this.FulfillmentDeliveryType = new entityDictionary[className](odataObject.FulfillmentDeliveryType)\n            }\n        }\n\n      \n            this.DeliveryTypeValue = \n                odataObject.DeliveryTypeValue;\n              \n            this.QuantityOrdered = \n                (odataObject.QuantityOrdered != null) ? parseFloat(odataObject.QuantityOrdered) : undefined;\n              \n            this.QuantityNotProcessed = \n                (odataObject.QuantityNotProcessed != null) ? parseFloat(odataObject.QuantityNotProcessed) : undefined;\n              \n            this.QuantityReserved = \n                (odataObject.QuantityReserved != null) ? parseFloat(odataObject.QuantityReserved) : undefined;\n              \n            this.QuantityPicked = \n                (odataObject.QuantityPicked != null) ? parseFloat(odataObject.QuantityPicked) : undefined;\n              \n            this.QuantityPacked = \n                (odataObject.QuantityPacked != null) ? parseFloat(odataObject.QuantityPacked) : undefined;\n              \n            this.QuantityInvoiced = \n                (odataObject.QuantityInvoiced != null) ? parseFloat(odataObject.QuantityInvoiced) : undefined;\n              \n            this.QuantityNotInvoiced = \n                (odataObject.QuantityNotInvoiced != null) ? parseFloat(odataObject.QuantityNotInvoiced) : undefined;\n              \n            this.QuantityNotPacked = \n                (odataObject.QuantityNotPacked != null) ? parseFloat(odataObject.QuantityNotPacked) : undefined;\n              \n            this.QuantityNotPicked = \n                (odataObject.QuantityNotPicked != null) ? parseFloat(odataObject.QuantityNotPicked) : undefined;\n              \n            this.StoreInventoryTotalQuantity = \n                (odataObject.StoreInventoryTotalQuantity != null) ? parseFloat(odataObject.StoreInventoryTotalQuantity) : undefined;\n              \n            this.StoreInventoryReservedQuantity = \n                (odataObject.StoreInventoryReservedQuantity != null) ? parseFloat(odataObject.StoreInventoryReservedQuantity) : undefined;\n              \n            this.StoreInventoryOrderedQuantity = \n                (odataObject.StoreInventoryOrderedQuantity != null) ? parseFloat(odataObject.StoreInventoryOrderedQuantity) : undefined;\n              \n            this.ItemId = \n                odataObject.ItemId;\n              \n            this.ProductId = \n                (odataObject.ProductId != null) ? parseInt(odataObject.ProductId, 10) : undefined;\n              \n            this.ProductVariant = \n                odataObject.ProductVariant;\n              \n            this.ItemName = \n                odataObject.ItemName;\n              \n            this.SerialNumber = \n                odataObject.SerialNumber;\n              \n        if (odataObject.FulfillmentStatus == null) {\n            this.FulfillmentStatus = undefined;\n        } else if (odataObject.FulfillmentStatus['@odata.type'] == null) {\n            this.FulfillmentStatus = new FulfillmentLineStatusClass(odataObject.FulfillmentStatus);\n        } else {\n            var className: string = odataObject.FulfillmentStatus['@odata.type'];\n            className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n            if (entityDictionary[className]) {\n                this.FulfillmentStatus = new entityDictionary[className](odataObject.FulfillmentStatus)\n            }\n        }\n\n      \n            this.FulfillmentStatusValue = \n                odataObject.FulfillmentStatusValue;\n              \n            this.UnitOfMeasureSymbol = \n                odataObject.UnitOfMeasureSymbol;\n              \n            this.RequestedShipDate = \n                (odataObject.RequestedShipDate instanceof Date) ? odataObject.RequestedShipDate\n                : (odataObject.RequestedShipDate != null) ? jsonLightReadStringPropertyValue(odataObject.RequestedShipDate, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.RequestedDeliveryDate = \n                (odataObject.RequestedDeliveryDate instanceof Date) ? odataObject.RequestedDeliveryDate\n                : (odataObject.RequestedDeliveryDate != null) ? jsonLightReadStringPropertyValue(odataObject.RequestedDeliveryDate, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.RequestedReceiptDate = \n                (odataObject.RequestedReceiptDate instanceof Date) ? odataObject.RequestedReceiptDate\n                : (odataObject.RequestedReceiptDate != null) ? jsonLightReadStringPropertyValue(odataObject.RequestedReceiptDate, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.PickupTimeslotStartDateTime = \n                (odataObject.PickupTimeslotStartDateTime instanceof Date) ? odataObject.PickupTimeslotStartDateTime\n                : (odataObject.PickupTimeslotStartDateTime != null) ? jsonLightReadStringPropertyValue(odataObject.PickupTimeslotStartDateTime, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.PickupTimeslotEndDateTime = \n                (odataObject.PickupTimeslotEndDateTime instanceof Date) ? odataObject.PickupTimeslotEndDateTime\n                : (odataObject.PickupTimeslotEndDateTime != null) ? jsonLightReadStringPropertyValue(odataObject.PickupTimeslotEndDateTime, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.CreatedDate = \n                (odataObject.CreatedDate instanceof Date) ? odataObject.CreatedDate\n                : (odataObject.CreatedDate != null) ? jsonLightReadStringPropertyValue(odataObject.CreatedDate, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.TotalAmount = \n                (odataObject.TotalAmount != null) ? parseFloat(odataObject.TotalAmount) : undefined;\n              \n            this.Balance = \n                (odataObject.Balance != null) ? parseFloat(odataObject.Balance) : undefined;\n              \n        if (odataObject.ShippingAddress == null) {\n            this.ShippingAddress = undefined;\n        } else if (odataObject.ShippingAddress['@odata.type'] == null) {\n            this.ShippingAddress = new AddressClass(odataObject.ShippingAddress);\n        } else {\n            var className: string = odataObject.ShippingAddress['@odata.type'];\n            className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n            if (entityDictionary[className]) {\n                this.ShippingAddress = new entityDictionary[className](odataObject.ShippingAddress)\n            }\n        }\n\n      \n            this.DetailedOrderStatusValue = \n                odataObject.DetailedOrderStatusValue;\n              \n            this.DetailedLineStatusValue = \n                odataObject.DetailedLineStatusValue;\n              \n            this.ChannelTypeValue = \n                odataObject.ChannelTypeValue;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['FulfillmentLineClass'] = FulfillmentLineClass;\n    \n      /**\n      * FulfillmentLineSearchCriteria entity class.\n      */\n      export class FulfillmentLineSearchCriteriaClass implements Entities.FulfillmentLineSearchCriteria {\n      public CustomerId: string;\n      public CustomerName: string;\n      public EmailAddress: string;\n      public SalesId: string;\n      public OrderCreatedStartDate: Date;\n      public OrderCreatedEndDate: Date;\n      public ReceiptId: string;\n      public StoreId: string;\n      public ChannelReferenceId: string;\n      public RequestedReceiptStartDate: Date;\n      public RequestedReceiptEndDate: Date;\n      public RequestedDeliveryStartDate: Date;\n      public RequestedDeliveryEndDate: Date;\n      public FulfillmentStatusValues: number[];\n      public DeliveryModeCode: string;\n      public WarehouseId: string;\n      public LoyaltyCardNumber: string;\n      public CustomerPhoneNumber: string;\n      public DeliveryTypeValue: number;\n      public CustomFilters: Entities.SearchFilter[];\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.CustomerId = \n                odataObject.CustomerId;\n              \n            this.CustomerName = \n                odataObject.CustomerName;\n              \n            this.EmailAddress = \n                odataObject.EmailAddress;\n              \n            this.SalesId = \n                odataObject.SalesId;\n              \n            this.OrderCreatedStartDate = \n                (odataObject.OrderCreatedStartDate instanceof Date) ? odataObject.OrderCreatedStartDate\n                : (odataObject.OrderCreatedStartDate != null) ? jsonLightReadStringPropertyValue(odataObject.OrderCreatedStartDate, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.OrderCreatedEndDate = \n                (odataObject.OrderCreatedEndDate instanceof Date) ? odataObject.OrderCreatedEndDate\n                : (odataObject.OrderCreatedEndDate != null) ? jsonLightReadStringPropertyValue(odataObject.OrderCreatedEndDate, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.ReceiptId = \n                odataObject.ReceiptId;\n              \n            this.StoreId = \n                odataObject.StoreId;\n              \n            this.ChannelReferenceId = \n                odataObject.ChannelReferenceId;\n              \n            this.RequestedReceiptStartDate = \n                (odataObject.RequestedReceiptStartDate instanceof Date) ? odataObject.RequestedReceiptStartDate\n                : (odataObject.RequestedReceiptStartDate != null) ? jsonLightReadStringPropertyValue(odataObject.RequestedReceiptStartDate, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.RequestedReceiptEndDate = \n                (odataObject.RequestedReceiptEndDate instanceof Date) ? odataObject.RequestedReceiptEndDate\n                : (odataObject.RequestedReceiptEndDate != null) ? jsonLightReadStringPropertyValue(odataObject.RequestedReceiptEndDate, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.RequestedDeliveryStartDate = \n                (odataObject.RequestedDeliveryStartDate instanceof Date) ? odataObject.RequestedDeliveryStartDate\n                : (odataObject.RequestedDeliveryStartDate != null) ? jsonLightReadStringPropertyValue(odataObject.RequestedDeliveryStartDate, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.RequestedDeliveryEndDate = \n                (odataObject.RequestedDeliveryEndDate instanceof Date) ? odataObject.RequestedDeliveryEndDate\n                : (odataObject.RequestedDeliveryEndDate != null) ? jsonLightReadStringPropertyValue(odataObject.RequestedDeliveryEndDate, \"Edm.DateTimeOffset\", false) : undefined;\n              \n        this.FulfillmentStatusValues = undefined;\n        if (odataObject.FulfillmentStatusValues) {\n        this.FulfillmentStatusValues = [];\n        for (var i = 0; i < odataObject.FulfillmentStatusValues.length; i++) {\n        if (odataObject.FulfillmentStatusValues[i] != null) {\n            this.FulfillmentStatusValues[i] = \n                odataObject.FulfillmentStatusValues[i];\n                            } else {\n        this.FulfillmentStatusValues[i] = undefined;\n        }\n        }\n        }\n      \n            this.DeliveryModeCode = \n                odataObject.DeliveryModeCode;\n              \n            this.WarehouseId = \n                odataObject.WarehouseId;\n              \n            this.LoyaltyCardNumber = \n                odataObject.LoyaltyCardNumber;\n              \n            this.CustomerPhoneNumber = \n                odataObject.CustomerPhoneNumber;\n              \n            this.DeliveryTypeValue = \n                odataObject.DeliveryTypeValue;\n              \n        this.CustomFilters = undefined;\n        if (odataObject.CustomFilters) {\n        this.CustomFilters = [];\n        for (var i = 0; i < odataObject.CustomFilters.length; i++) {\n        if (odataObject.CustomFilters[i] != null) {\n        if (odataObject.CustomFilters[i]['@odata.type'] != null) {\n          var className: string = odataObject.CustomFilters[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.CustomFilters[i] = new entityDictionary[className](odataObject.CustomFilters[i])\n          }\n        } else {\n            this.CustomFilters[i] = new SearchFilterClass(odataObject.CustomFilters[i]);\n        }\n                    } else {\n        this.CustomFilters[i] = undefined;\n        }\n        }\n        }\n      \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['FulfillmentLineSearchCriteriaClass'] = FulfillmentLineSearchCriteriaClass;\n    \n      /**\n      * Comment entity class.\n      */\n      export class CommentClass implements Entities.Comment {\n      public RecordId: number;\n      public AuthorStaffId: string;\n      public AuthorName: string;\n      public Text: string;\n      public CreatedDateTime: Date;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.RecordId = \n                (odataObject.RecordId != null) ? parseInt(odataObject.RecordId, 10) : undefined;\n              \n            this.AuthorStaffId = \n                odataObject.AuthorStaffId;\n              \n            this.AuthorName = \n                odataObject.AuthorName;\n              \n            this.Text = \n                odataObject.Text;\n              \n            this.CreatedDateTime = \n                (odataObject.CreatedDateTime instanceof Date) ? odataObject.CreatedDateTime\n                : (odataObject.CreatedDateTime != null) ? jsonLightReadStringPropertyValue(odataObject.CreatedDateTime, \"Edm.DateTimeOffset\", false) : undefined;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['CommentClass'] = CommentClass;\n    \n      /**\n      * AddressPurpose entity class.\n      */\n      export class AddressPurposeClass implements Entities.AddressPurpose {\n      public RecordId: number;\n      public AddressType: number;\n      public Name: string;\n      public Description: string;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.RecordId = \n                (odataObject.RecordId != null) ? parseInt(odataObject.RecordId, 10) : undefined;\n              \n            this.AddressType = \n                odataObject.AddressType;\n              \n            this.Name = \n                odataObject.Name;\n              \n            this.Description = \n                odataObject.Description;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['AddressPurposeClass'] = AddressPurposeClass;\n    \n      /**\n      * DeliveryChargeLine entity class.\n      */\n      export class DeliveryChargeLineClass implements Entities.DeliveryChargeLine {\n      public ChargeCode: string;\n      public CurrencyCode: string;\n      public CalculatedAmount: number;\n      public Description: string;\n      public IsRefundable: boolean;\n      public IsShipping: boolean;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.ChargeCode = \n                odataObject.ChargeCode;\n              \n            this.CurrencyCode = \n                odataObject.CurrencyCode;\n              \n            this.CalculatedAmount = \n                (odataObject.CalculatedAmount != null) ? parseFloat(odataObject.CalculatedAmount) : undefined;\n              \n            this.Description = \n                odataObject.Description;\n              \n            this.IsRefundable = \n                odataObject.IsRefundable;\n              \n            this.IsShipping = \n                odataObject.IsShipping;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['DeliveryChargeLineClass'] = DeliveryChargeLineClass;\n    \n      /**\n      * ExtensionPackageDefinition entity class.\n      */\n      export class ExtensionPackageDefinitionClass implements Entities.ExtensionPackageDefinition {\n      public Name: string;\n      public Publisher: string;\n      public IsEnabled: boolean;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.Name = \n                odataObject.Name;\n              \n            this.Publisher = \n                odataObject.Publisher;\n              \n            this.IsEnabled = \n                odataObject.IsEnabled;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['ExtensionPackageDefinitionClass'] = ExtensionPackageDefinitionClass;\n    \n      /**\n      * ReturnPolicy entity class.\n      */\n      export class ReturnPolicyClass implements Entities.ReturnPolicy {\n      public RecordId: number;\n      public TenderTypePolicies: Entities.TenderTypePolicy[];\n      public IsManagerOverrideEnabled: boolean;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.RecordId = \n                (odataObject.RecordId != null) ? parseInt(odataObject.RecordId, 10) : undefined;\n              \n        this.TenderTypePolicies = undefined;\n        if (odataObject.TenderTypePolicies) {\n        this.TenderTypePolicies = [];\n        for (var i = 0; i < odataObject.TenderTypePolicies.length; i++) {\n        if (odataObject.TenderTypePolicies[i] != null) {\n        if (odataObject.TenderTypePolicies[i]['@odata.type'] != null) {\n          var className: string = odataObject.TenderTypePolicies[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.TenderTypePolicies[i] = new entityDictionary[className](odataObject.TenderTypePolicies[i])\n          }\n        } else {\n            this.TenderTypePolicies[i] = new TenderTypePolicyClass(odataObject.TenderTypePolicies[i]);\n        }\n                    } else {\n        this.TenderTypePolicies[i] = undefined;\n        }\n        }\n        }\n      \n            this.IsManagerOverrideEnabled = \n                odataObject.IsManagerOverrideEnabled;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['ReturnPolicyClass'] = ReturnPolicyClass;\n    \n      /**\n      * TenderTypeAmount entity class.\n      */\n      export class TenderTypeAmountClass implements Entities.TenderTypeAmount {\n      public TenderTypeId: string;\n      public Amount: number;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.TenderTypeId = \n                odataObject.TenderTypeId;\n              \n            this.Amount = \n                (odataObject.Amount != null) ? parseFloat(odataObject.Amount) : undefined;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['TenderTypeAmountClass'] = TenderTypeAmountClass;\n    \n      /**\n      * FeatureState entity class.\n      */\n      export class FeatureStateClass implements Entities.FeatureState {\n      public Name: string;\n      public IsEnabled: boolean;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.Name = \n                odataObject.Name;\n              \n            this.IsEnabled = \n                odataObject.IsEnabled;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['FeatureStateClass'] = FeatureStateClass;\n    \n      /**\n      * Warranty entity class.\n      */\n      export class WarrantyClass\n        extends SimpleProductClass\n       implements Entities.Warranty {\n      public DurationUnitValue: number;\n      public Duration: number;\n      public ApplicablePriceRangeBaseTypeValue: number;\n      public ApplicablePriceRangeMin: number;\n      public ApplicablePriceRangeMax: number;\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      super(odataObject);odataObject = odataObject || {};\n            this.DurationUnitValue = \n                odataObject.DurationUnitValue;\n              \n            this.Duration = \n                odataObject.Duration;\n              \n            this.ApplicablePriceRangeBaseTypeValue = \n                odataObject.ApplicablePriceRangeBaseTypeValue;\n              \n            this.ApplicablePriceRangeMin = \n                (odataObject.ApplicablePriceRangeMin != null) ? parseFloat(odataObject.ApplicablePriceRangeMin) : undefined;\n              \n            this.ApplicablePriceRangeMax = \n                (odataObject.ApplicablePriceRangeMax != null) ? parseFloat(odataObject.ApplicablePriceRangeMax) : undefined;\n              \n        this[\"@odata.type\"] = \"#Microsoft.Dynamics.Commerce.Runtime.DataModel.Warranty\";\n      \n      }\n      }\n      entityDictionary['WarrantyClass'] = WarrantyClass;\n    \n      /**\n      * RecallInvoicedSalesLineLookup entity class.\n      */\n      export class RecallInvoicedSalesLineLookupClass implements Entities.RecallInvoicedSalesLineLookup {\n      public InvoicedLineId: number;\n      public Quantity: number;\n      public SerialNumber: string;\n      public IgnoreSerialNumberMismatch: boolean;\n      public ReasonCodeLines: Entities.ReasonCodeLine[];\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.InvoicedLineId = \n                (odataObject.InvoicedLineId != null) ? parseInt(odataObject.InvoicedLineId, 10) : undefined;\n              \n            this.Quantity = \n                (odataObject.Quantity != null) ? parseFloat(odataObject.Quantity) : undefined;\n              \n            this.SerialNumber = \n                odataObject.SerialNumber;\n              \n            this.IgnoreSerialNumberMismatch = \n                odataObject.IgnoreSerialNumberMismatch;\n              \n        this.ReasonCodeLines = undefined;\n        if (odataObject.ReasonCodeLines) {\n        this.ReasonCodeLines = [];\n        for (var i = 0; i < odataObject.ReasonCodeLines.length; i++) {\n        if (odataObject.ReasonCodeLines[i] != null) {\n        if (odataObject.ReasonCodeLines[i]['@odata.type'] != null) {\n          var className: string = odataObject.ReasonCodeLines[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ReasonCodeLines[i] = new entityDictionary[className](odataObject.ReasonCodeLines[i])\n          }\n        } else {\n            this.ReasonCodeLines[i] = new ReasonCodeLineClass(odataObject.ReasonCodeLines[i]);\n        }\n                    } else {\n        this.ReasonCodeLines[i] = undefined;\n        }\n        }\n        }\n      \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['RecallInvoicedSalesLineLookupClass'] = RecallInvoicedSalesLineLookupClass;\n    \n      /**\n      * WarrantyGroup entity class.\n      */\n      export class WarrantyGroupClass implements Entities.WarrantyGroup {\n      public Warranties: Entities.Warranty[];\n      public RecordId: number;\n      public GroupName: string;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n        this.Warranties = undefined;\n        if (odataObject.Warranties) {\n        this.Warranties = [];\n        for (var i = 0; i < odataObject.Warranties.length; i++) {\n        if (odataObject.Warranties[i] != null) {\n        if (odataObject.Warranties[i]['@odata.type'] != null) {\n          var className: string = odataObject.Warranties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.Warranties[i] = new entityDictionary[className](odataObject.Warranties[i])\n          }\n        } else {\n            this.Warranties[i] = new WarrantyClass(odataObject.Warranties[i]);\n        }\n                    } else {\n        this.Warranties[i] = undefined;\n        }\n        }\n        }\n      \n            this.RecordId = \n                (odataObject.RecordId != null) ? parseInt(odataObject.RecordId, 10) : undefined;\n              \n            this.GroupName = \n                odataObject.GroupName;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['WarrantyGroupClass'] = WarrantyGroupClass;\n    \n      /**\n      * ProductWarrantiesMapping entity class.\n      */\n      export class ProductWarrantiesMappingClass implements Entities.ProductWarrantiesMapping {\n      public WarrantyGroups: Entities.WarrantyGroup[];\n      public WarrantableProductId: number;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n        this.WarrantyGroups = undefined;\n        if (odataObject.WarrantyGroups) {\n        this.WarrantyGroups = [];\n        for (var i = 0; i < odataObject.WarrantyGroups.length; i++) {\n        if (odataObject.WarrantyGroups[i] != null) {\n        if (odataObject.WarrantyGroups[i]['@odata.type'] != null) {\n          var className: string = odataObject.WarrantyGroups[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.WarrantyGroups[i] = new entityDictionary[className](odataObject.WarrantyGroups[i])\n          }\n        } else {\n            this.WarrantyGroups[i] = new WarrantyGroupClass(odataObject.WarrantyGroups[i]);\n        }\n                    } else {\n        this.WarrantyGroups[i] = undefined;\n        }\n        }\n        }\n      \n            this.WarrantableProductId = \n                (odataObject.WarrantableProductId != null) ? parseInt(odataObject.WarrantableProductId, 10) : undefined;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['ProductWarrantiesMappingClass'] = ProductWarrantiesMappingClass;\n    \n      /**\n      * FulfillmentLineContextualOperationsMap entity class.\n      */\n      export class FulfillmentLineContextualOperationsMapClass implements Entities.FulfillmentLineContextualOperationsMap {\n      public FulfillmentLine: Entities.FulfillmentLine;\n      public ApplicableOperationsValues: number[];\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n        if (odataObject.FulfillmentLine == null) {\n            this.FulfillmentLine = undefined;\n        } else if (odataObject.FulfillmentLine['@odata.type'] == null) {\n            this.FulfillmentLine = new FulfillmentLineClass(odataObject.FulfillmentLine);\n        } else {\n            var className: string = odataObject.FulfillmentLine['@odata.type'];\n            className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n            if (entityDictionary[className]) {\n                this.FulfillmentLine = new entityDictionary[className](odataObject.FulfillmentLine)\n            }\n        }\n\n      \n        this.ApplicableOperationsValues = undefined;\n        if (odataObject.ApplicableOperationsValues) {\n        this.ApplicableOperationsValues = [];\n        for (var i = 0; i < odataObject.ApplicableOperationsValues.length; i++) {\n        if (odataObject.ApplicableOperationsValues[i] != null) {\n            this.ApplicableOperationsValues[i] = \n                odataObject.ApplicableOperationsValues[i];\n                            } else {\n        this.ApplicableOperationsValues[i] = undefined;\n        }\n        }\n        }\n      \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['FulfillmentLineContextualOperationsMapClass'] = FulfillmentLineContextualOperationsMapClass;\n    \n      /**\n      * UserAlert entity class.\n      */\n      export class UserAlertClass implements Entities.UserAlert {\n      public AlertSourceIdValue: number;\n      public LocalizedMessage: string;\n      public IsBlocking: boolean;\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.AlertSourceIdValue = \n                odataObject.AlertSourceIdValue;\n              \n            this.LocalizedMessage = \n                odataObject.LocalizedMessage;\n              \n            this.IsBlocking = \n                odataObject.IsBlocking;\n              \n      }\n      }\n      entityDictionary['UserAlertClass'] = UserAlertClass;\n    \n      /**\n      * CartLineUserAlerts entity class.\n      */\n      export class CartLineUserAlertsClass implements Entities.CartLineUserAlerts {\n      public LineIndex: number;\n      public LineNumber: number;\n      public UserAlerts: Entities.UserAlert[];\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.LineIndex = \n                odataObject.LineIndex;\n              \n            this.LineNumber = \n                (odataObject.LineNumber != null) ? parseFloat(odataObject.LineNumber) : undefined;\n              \n        this.UserAlerts = undefined;\n        if (odataObject.UserAlerts) {\n        this.UserAlerts = [];\n        for (var i = 0; i < odataObject.UserAlerts.length; i++) {\n        if (odataObject.UserAlerts[i] != null) {\n        if (odataObject.UserAlerts[i]['@odata.type'] != null) {\n          var className: string = odataObject.UserAlerts[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.UserAlerts[i] = new entityDictionary[className](odataObject.UserAlerts[i])\n          }\n        } else {\n            this.UserAlerts[i] = new UserAlertClass(odataObject.UserAlerts[i]);\n        }\n                    } else {\n        this.UserAlerts[i] = undefined;\n        }\n        }\n        }\n      \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['CartLineUserAlertsClass'] = CartLineUserAlertsClass;\n    \n      /**\n      * FulfillmentLineUserAlerts entity class.\n      */\n      export class FulfillmentLineUserAlertsClass implements Entities.FulfillmentLineUserAlerts {\n      public SalesId: string;\n      public SalesLineNumber: number;\n      public UserAlerts: Entities.UserAlert[];\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.SalesId = \n                odataObject.SalesId;\n              \n            this.SalesLineNumber = \n                (odataObject.SalesLineNumber != null) ? parseFloat(odataObject.SalesLineNumber) : undefined;\n              \n        this.UserAlerts = undefined;\n        if (odataObject.UserAlerts) {\n        this.UserAlerts = [];\n        for (var i = 0; i < odataObject.UserAlerts.length; i++) {\n        if (odataObject.UserAlerts[i] != null) {\n        if (odataObject.UserAlerts[i]['@odata.type'] != null) {\n          var className: string = odataObject.UserAlerts[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.UserAlerts[i] = new entityDictionary[className](odataObject.UserAlerts[i])\n          }\n        } else {\n            this.UserAlerts[i] = new UserAlertClass(odataObject.UserAlerts[i]);\n        }\n                    } else {\n        this.UserAlerts[i] = undefined;\n        }\n        }\n        }\n      \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['FulfillmentLineUserAlertsClass'] = FulfillmentLineUserAlertsClass;\n    \n      /**\n      * BusinessPartnerProspect entity class.\n      */\n      export class BusinessPartnerProspectClass implements Entities.BusinessPartnerProspect {\n      public FirstName: string;\n      public LastName: string;\n      public CompanyName: string;\n      public Address: Entities.Address;\n      public JobTitle: string;\n      public Department: string;\n      public CompanySize: number;\n      public Comments: string;\n      public LastOperationId: string;\n      public ProspectTypeValue: number;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.FirstName = \n                odataObject.FirstName;\n              \n            this.LastName = \n                odataObject.LastName;\n              \n            this.CompanyName = \n                odataObject.CompanyName;\n              \n        if (odataObject.Address == null) {\n            this.Address = undefined;\n        } else if (odataObject.Address['@odata.type'] == null) {\n            this.Address = new AddressClass(odataObject.Address);\n        } else {\n            var className: string = odataObject.Address['@odata.type'];\n            className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n            if (entityDictionary[className]) {\n                this.Address = new entityDictionary[className](odataObject.Address)\n            }\n        }\n\n      \n            this.JobTitle = \n                odataObject.JobTitle;\n              \n            this.Department = \n                odataObject.Department;\n              \n            this.CompanySize = \n                odataObject.CompanySize;\n              \n            this.Comments = \n                odataObject.Comments;\n              \n            this.LastOperationId = \n                odataObject.LastOperationId;\n              \n            this.ProspectTypeValue = \n                odataObject.ProspectTypeValue;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['BusinessPartnerProspectClass'] = BusinessPartnerProspectClass;\n    \n      /**\n      * ChannelSearchCriteria entity class.\n      */\n      export class ChannelSearchCriteriaClass implements Entities.ChannelSearchCriteria {\n      public SearchLocationValue: number;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.SearchLocationValue = \n                odataObject.SearchLocationValue;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['ChannelSearchCriteriaClass'] = ChannelSearchCriteriaClass;\n    \n      /**\n      * BusinessPartnerOperation entity class.\n      */\n      export class BusinessPartnerOperationClass implements Entities.BusinessPartnerOperation {\n      public TypeValue: number;\n      public StatusValue: number;\n      public Value: string;\n      public Description: string;\n      public CreatedDateTime: Date;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.TypeValue = \n                odataObject.TypeValue;\n              \n            this.StatusValue = \n                odataObject.StatusValue;\n              \n            this.Value = \n                odataObject.Value;\n              \n            this.Description = \n                odataObject.Description;\n              \n            this.CreatedDateTime = \n                (odataObject.CreatedDateTime instanceof Date) ? odataObject.CreatedDateTime\n                : (odataObject.CreatedDateTime != null) ? jsonLightReadStringPropertyValue(odataObject.CreatedDateTime, \"Edm.DateTimeOffset\", false) : undefined;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['BusinessPartnerOperationClass'] = BusinessPartnerOperationClass;\n    \n      /**\n      * BusinessPartnerOperationRequest entity class.\n      */\n      export class BusinessPartnerOperationRequestClass implements Entities.BusinessPartnerOperationRequest {\n      public TypeValue: number;\n      public StatusValue: number;\n      public CreatedDateTime: Date;\n      public Details: Entities.BusinessPartnerOperationRequestDetails;\n      public UserId: string;\n      public UserFirstName: string;\n      public UserLastName: string;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.TypeValue = \n                odataObject.TypeValue;\n              \n            this.StatusValue = \n                odataObject.StatusValue;\n              \n            this.CreatedDateTime = \n                (odataObject.CreatedDateTime instanceof Date) ? odataObject.CreatedDateTime\n                : (odataObject.CreatedDateTime != null) ? jsonLightReadStringPropertyValue(odataObject.CreatedDateTime, \"Edm.DateTimeOffset\", false) : undefined;\n              \n        if (odataObject.Details == null) {\n            this.Details = undefined;\n        } else if (odataObject.Details['@odata.type'] == null) {\n            this.Details = new BusinessPartnerOperationRequestDetailsClass(odataObject.Details);\n        } else {\n            var className: string = odataObject.Details['@odata.type'];\n            className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n            if (entityDictionary[className]) {\n                this.Details = new entityDictionary[className](odataObject.Details)\n            }\n        }\n\n      \n            this.UserId = \n                odataObject.UserId;\n              \n            this.UserFirstName = \n                odataObject.UserFirstName;\n              \n            this.UserLastName = \n                odataObject.UserLastName;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['BusinessPartnerOperationRequestClass'] = BusinessPartnerOperationRequestClass;\n    \n      /**\n      * ReceiptTypesByFormatType entity class.\n      */\n      export class ReceiptTypesByFormatTypeClass implements Entities.ReceiptTypesByFormatType {\n      public ReceiptOutputFormatType: Entities.ReceiptOutputFormatType;\n      public ReceiptTypesValues: number[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n        if (odataObject.ReceiptOutputFormatType == null) {\n            this.ReceiptOutputFormatType = undefined;\n        } else if (odataObject.ReceiptOutputFormatType['@odata.type'] == null) {\n            this.ReceiptOutputFormatType = new ReceiptOutputFormatTypeClass(odataObject.ReceiptOutputFormatType);\n        } else {\n            var className: string = odataObject.ReceiptOutputFormatType['@odata.type'];\n            className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n            if (entityDictionary[className]) {\n                this.ReceiptOutputFormatType = new entityDictionary[className](odataObject.ReceiptOutputFormatType)\n            }\n        }\n\n      \n        this.ReceiptTypesValues = undefined;\n        if (odataObject.ReceiptTypesValues) {\n        this.ReceiptTypesValues = [];\n        for (var i = 0; i < odataObject.ReceiptTypesValues.length; i++) {\n        if (odataObject.ReceiptTypesValues[i] != null) {\n            this.ReceiptTypesValues[i] = \n                odataObject.ReceiptTypesValues[i];\n                            } else {\n        this.ReceiptTypesValues[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['ReceiptTypesByFormatTypeClass'] = ReceiptTypesByFormatTypeClass;\n    \n      /**\n      * InventoryJournalNameSearchCriteria entity class.\n      */\n      export class InventoryJournalNameSearchCriteriaClass implements Entities.InventoryJournalNameSearchCriteria {\n      public JournalNameIds: string[];\n      public DocumentTypeValues: number[];\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n        this.JournalNameIds = undefined;\n        if (odataObject.JournalNameIds) {\n        this.JournalNameIds = [];\n        for (var i = 0; i < odataObject.JournalNameIds.length; i++) {\n        if (odataObject.JournalNameIds[i] != null) {\n            this.JournalNameIds[i] = \n                odataObject.JournalNameIds[i];\n                            } else {\n        this.JournalNameIds[i] = undefined;\n        }\n        }\n        }\n      \n        this.DocumentTypeValues = undefined;\n        if (odataObject.DocumentTypeValues) {\n        this.DocumentTypeValues = [];\n        for (var i = 0; i < odataObject.DocumentTypeValues.length; i++) {\n        if (odataObject.DocumentTypeValues[i] != null) {\n            this.DocumentTypeValues[i] = \n                odataObject.DocumentTypeValues[i];\n                            } else {\n        this.DocumentTypeValues[i] = undefined;\n        }\n        }\n        }\n      \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['InventoryJournalNameSearchCriteriaClass'] = InventoryJournalNameSearchCriteriaClass;\n    \n      /**\n      * AssortedProductIdentity entity class.\n      */\n      export class AssortedProductIdentityClass implements Entities.AssortedProductIdentity {\n      public ProductId: number;\n      public IsRemoteProduct: boolean;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.ProductId = \n                (odataObject.ProductId != null) ? parseInt(odataObject.ProductId, 10) : undefined;\n              \n            this.IsRemoteProduct = \n                odataObject.IsRemoteProduct;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['AssortedProductIdentityClass'] = AssortedProductIdentityClass;\n    \n      /**\n      * ProductExistenceId entity class.\n      */\n      export class ProductExistenceIdClass implements Entities.ProductExistenceId {\n      public ProductId: number;\n      public LanguageId: string;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.ProductId = \n                (odataObject.ProductId != null) ? parseInt(odataObject.ProductId, 10) : undefined;\n              \n            this.LanguageId = \n                odataObject.LanguageId;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['ProductExistenceIdClass'] = ProductExistenceIdClass;\n    \n      /**\n      * ProductExistenceCriteria entity class.\n      */\n      export class ProductExistenceCriteriaClass implements Entities.ProductExistenceCriteria {\n      public ChannelId: number;\n      public CatalogId: number;\n      public Ids: Entities.ProductExistenceId[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.ChannelId = \n                (odataObject.ChannelId != null) ? parseInt(odataObject.ChannelId, 10) : undefined;\n              \n            this.CatalogId = \n                (odataObject.CatalogId != null) ? parseInt(odataObject.CatalogId, 10) : undefined;\n              \n        this.Ids = undefined;\n        if (odataObject.Ids) {\n        this.Ids = [];\n        for (var i = 0; i < odataObject.Ids.length; i++) {\n        if (odataObject.Ids[i] != null) {\n        if (odataObject.Ids[i]['@odata.type'] != null) {\n          var className: string = odataObject.Ids[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.Ids[i] = new entityDictionary[className](odataObject.Ids[i])\n          }\n        } else {\n            this.Ids[i] = new ProductExistenceIdClass(odataObject.Ids[i]);\n        }\n                    } else {\n        this.Ids[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['ProductExistenceCriteriaClass'] = ProductExistenceCriteriaClass;\n    \n      /**\n      * CountryRegion entity class.\n      */\n      export class CountryRegionClass implements Entities.CountryRegion {\n      public CountryRegionId: string;\n      public IsoCode: string;\n      public ShortName: string;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.CountryRegionId = \n                odataObject.CountryRegionId;\n              \n            this.IsoCode = \n                odataObject.IsoCode;\n              \n            this.ShortName = \n                odataObject.ShortName;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['CountryRegionClass'] = CountryRegionClass;\n    \n      /**\n      * BusinessVerticalsIndia entity class.\n      */\n      export class BusinessVerticalsIndiaClass implements Entities.BusinessVerticalsIndia {\n      public RecId: number;\n      public Name: string;\n      public EntityCode: string;\n      public Description: string;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.RecId = \n                (odataObject.RecId != null) ? parseInt(odataObject.RecId, 10) : undefined;\n              \n            this.Name = \n                odataObject.Name;\n              \n            this.EntityCode = \n                odataObject.EntityCode;\n              \n            this.Description = \n                odataObject.Description;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['BusinessVerticalsIndiaClass'] = BusinessVerticalsIndiaClass;\n    \n      /**\n      * AddressTaxInformationIndia entity class.\n      */\n      export class AddressTaxInformationIndiaClass implements Entities.AddressTaxInformationIndia {\n      public RecId: number;\n      public Name: string;\n      public RegistrationLocation: number;\n      public Tin: number;\n      public Gstin: number;\n      public TinRegistrationNumber: Entities.TaxRegistrationNumberIndia;\n      public GstinRegistrationNumber: Entities.TaxRegistrationNumberIndia;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.RecId = \n                (odataObject.RecId != null) ? parseInt(odataObject.RecId, 10) : undefined;\n              \n            this.Name = \n                odataObject.Name;\n              \n            this.RegistrationLocation = \n                (odataObject.RegistrationLocation != null) ? parseInt(odataObject.RegistrationLocation, 10) : undefined;\n              \n            this.Tin = \n                (odataObject.Tin != null) ? parseInt(odataObject.Tin, 10) : undefined;\n              \n            this.Gstin = \n                (odataObject.Gstin != null) ? parseInt(odataObject.Gstin, 10) : undefined;\n              \n        if (odataObject.TinRegistrationNumber == null) {\n            this.TinRegistrationNumber = undefined;\n        } else if (odataObject.TinRegistrationNumber['@odata.type'] == null) {\n            this.TinRegistrationNumber = new TaxRegistrationNumberIndiaClass(odataObject.TinRegistrationNumber);\n        } else {\n            var className: string = odataObject.TinRegistrationNumber['@odata.type'];\n            className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n            if (entityDictionary[className]) {\n                this.TinRegistrationNumber = new entityDictionary[className](odataObject.TinRegistrationNumber)\n            }\n        }\n\n      \n        if (odataObject.GstinRegistrationNumber == null) {\n            this.GstinRegistrationNumber = undefined;\n        } else if (odataObject.GstinRegistrationNumber['@odata.type'] == null) {\n            this.GstinRegistrationNumber = new TaxRegistrationNumberIndiaClass(odataObject.GstinRegistrationNumber);\n        } else {\n            var className: string = odataObject.GstinRegistrationNumber['@odata.type'];\n            className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n            if (entityDictionary[className]) {\n                this.GstinRegistrationNumber = new entityDictionary[className](odataObject.GstinRegistrationNumber)\n            }\n        }\n\n      \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['AddressTaxInformationIndiaClass'] = AddressTaxInformationIndiaClass;\n    \n      /**\n      * CustomerTaxInformation entity class.\n      */\n      export class CustomerTaxInformationClass implements Entities.CustomerTaxInformation {\n      public CustomerId: string;\n      public DataAreaId: string;\n      public IsForeign: boolean;\n      public IsPreferential: boolean;\n      public NatureOfAssessee: string;\n      public PanNumber: string;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.CustomerId = \n                odataObject.CustomerId;\n              \n            this.DataAreaId = \n                odataObject.DataAreaId;\n              \n            this.IsForeign = \n                odataObject.IsForeign;\n              \n            this.IsPreferential = \n                odataObject.IsPreferential;\n              \n            this.NatureOfAssessee = \n                odataObject.NatureOfAssessee;\n              \n            this.PanNumber = \n                odataObject.PanNumber;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['CustomerTaxInformationClass'] = CustomerTaxInformationClass;\n    \n      /**\n      * TaxRegistrationNumberIndia entity class.\n      */\n      export class TaxRegistrationNumberIndiaClass implements Entities.TaxRegistrationNumberIndia {\n      public RecId: number;\n      public RegistrationNumber: string;\n      public RegistrationType: number;\n      public TaxType: number;\n      public Type: number;\n      public BusinessVerticals: number;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.RecId = \n                (odataObject.RecId != null) ? parseInt(odataObject.RecId, 10) : undefined;\n              \n            this.RegistrationNumber = \n                odataObject.RegistrationNumber;\n              \n            this.RegistrationType = \n                odataObject.RegistrationType;\n              \n            this.TaxType = \n                odataObject.TaxType;\n              \n            this.Type = \n                odataObject.Type;\n              \n            this.BusinessVerticals = \n                (odataObject.BusinessVerticals != null) ? parseInt(odataObject.BusinessVerticals, 10) : undefined;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['TaxRegistrationNumberIndiaClass'] = TaxRegistrationNumberIndiaClass;\n    \n      /**\n      * ChecklistTask entity class.\n      */\n      export class ChecklistTaskClass implements Entities.ChecklistTask {\n      public Version: string;\n      public InstructionsVersion: string;\n      public AssignedToPersonnelNumbers: string[];\n      public AssignedToExternalSubId: string;\n      public Id: string;\n      public Name: string;\n      public Description: string;\n      public DueDateTime: Date;\n      public DeepLinkTypeValue: number;\n      public DeepLink: string;\n      public DeepLinkPosOperationName: string;\n      public ContactPersonPersonnelNumber: string;\n      public Instructions: string;\n      public StatusValue: number;\n      public CompletionDateTime: Date;\n      public ResolvedByPersonnelNumber: string;\n      public ChecklistId: string;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.Version = \n                odataObject.Version;\n              \n            this.InstructionsVersion = \n                odataObject.InstructionsVersion;\n              \n        this.AssignedToPersonnelNumbers = undefined;\n        if (odataObject.AssignedToPersonnelNumbers) {\n        this.AssignedToPersonnelNumbers = [];\n        for (var i = 0; i < odataObject.AssignedToPersonnelNumbers.length; i++) {\n        if (odataObject.AssignedToPersonnelNumbers[i] != null) {\n            this.AssignedToPersonnelNumbers[i] = \n                odataObject.AssignedToPersonnelNumbers[i];\n                            } else {\n        this.AssignedToPersonnelNumbers[i] = undefined;\n        }\n        }\n        }\n      \n            this.AssignedToExternalSubId = \n                odataObject.AssignedToExternalSubId;\n              \n            this.Id = \n                odataObject.Id;\n              \n            this.Name = \n                odataObject.Name;\n              \n            this.Description = \n                odataObject.Description;\n              \n            this.DueDateTime = \n                (odataObject.DueDateTime instanceof Date) ? odataObject.DueDateTime\n                : (odataObject.DueDateTime != null) ? jsonLightReadStringPropertyValue(odataObject.DueDateTime, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.DeepLinkTypeValue = \n                odataObject.DeepLinkTypeValue;\n              \n            this.DeepLink = \n                odataObject.DeepLink;\n              \n            this.DeepLinkPosOperationName = \n                odataObject.DeepLinkPosOperationName;\n              \n            this.ContactPersonPersonnelNumber = \n                odataObject.ContactPersonPersonnelNumber;\n              \n            this.Instructions = \n                odataObject.Instructions;\n              \n            this.StatusValue = \n                odataObject.StatusValue;\n              \n            this.CompletionDateTime = \n                (odataObject.CompletionDateTime instanceof Date) ? odataObject.CompletionDateTime\n                : (odataObject.CompletionDateTime != null) ? jsonLightReadStringPropertyValue(odataObject.CompletionDateTime, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.ResolvedByPersonnelNumber = \n                odataObject.ResolvedByPersonnelNumber;\n              \n            this.ChecklistId = \n                odataObject.ChecklistId;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['ChecklistTaskClass'] = ChecklistTaskClass;\n    \n      /**\n      * MediaLocation entity class.\n      */\n      export class MediaLocationClass implements Entities.MediaLocation {\n      public Uri: string;\n      public AltText: string;\n      public IsDefault: boolean;\n      public IsSelfHosted: boolean;\n      public Priority: number;\n      public IsAdditionalMedia: boolean;\n      public MediaTypeValue: number;\n      public DisplayOrder: number;\n      public MediaPurpose: string;\n      public IsApplicableForChildEntities: boolean;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.Uri = \n                odataObject.Uri;\n              \n            this.AltText = \n                odataObject.AltText;\n              \n            this.IsDefault = \n                odataObject.IsDefault;\n              \n            this.IsSelfHosted = \n                odataObject.IsSelfHosted;\n              \n            this.Priority = \n                odataObject.Priority;\n              \n            this.IsAdditionalMedia = \n                odataObject.IsAdditionalMedia;\n              \n            this.MediaTypeValue = \n                odataObject.MediaTypeValue;\n              \n            this.DisplayOrder = \n                (odataObject.DisplayOrder != null) ? parseFloat(odataObject.DisplayOrder) : undefined;\n              \n            this.MediaPurpose = \n                odataObject.MediaPurpose;\n              \n            this.IsApplicableForChildEntities = \n                odataObject.IsApplicableForChildEntities;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['MediaLocationClass'] = MediaLocationClass;\n    \n      /**\n      * EmployeeActivity entity class.\n      */\n      export class EmployeeActivityClass implements Entities.EmployeeActivity {\n      public StaffId: string;\n      public StaffName: string;\n      public Activity: string;\n      public ActivityDateTimeOffset: Date;\n      public StoreNumber: string;\n      public EmployeeActivityTypeValue: number;\n      public BreakCategory: string;\n      public RecordId: number;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.StaffId = \n                odataObject.StaffId;\n              \n            this.StaffName = \n                odataObject.StaffName;\n              \n            this.Activity = \n                odataObject.Activity;\n              \n            this.ActivityDateTimeOffset = \n                (odataObject.ActivityDateTimeOffset instanceof Date) ? odataObject.ActivityDateTimeOffset\n                : (odataObject.ActivityDateTimeOffset != null) ? jsonLightReadStringPropertyValue(odataObject.ActivityDateTimeOffset, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.StoreNumber = \n                odataObject.StoreNumber;\n              \n            this.EmployeeActivityTypeValue = \n                odataObject.EmployeeActivityTypeValue;\n              \n            this.BreakCategory = \n                odataObject.BreakCategory;\n              \n            this.RecordId = \n                (odataObject.RecordId != null) ? parseInt(odataObject.RecordId, 10) : undefined;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['EmployeeActivityClass'] = EmployeeActivityClass;\n    \n      /**\n      * CustomerRefiner entity class.\n      */\n      export class CustomerRefinerClass\n        extends SearchRefinerClass\n       implements Entities.CustomerRefiner {\n      public SourceValue: number;\n      public Values: Entities.CustomerRefinerValue[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      super(odataObject);odataObject = odataObject || {};\n            this.SourceValue = \n                odataObject.SourceValue;\n              \n        this.Values = undefined;\n        if (odataObject.Values) {\n        this.Values = [];\n        for (var i = 0; i < odataObject.Values.length; i++) {\n        if (odataObject.Values[i] != null) {\n        if (odataObject.Values[i]['@odata.type'] != null) {\n          var className: string = odataObject.Values[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.Values[i] = new entityDictionary[className](odataObject.Values[i])\n          }\n        } else {\n            this.Values[i] = new CustomerRefinerValueClass(odataObject.Values[i]);\n        }\n                    } else {\n        this.Values[i] = undefined;\n        }\n        }\n        }\n      \n        this[\"@odata.type\"] = \"#Microsoft.Dynamics.Commerce.Runtime.DataModel.CustomerRefiner\";\n      \n      }\n      }\n      entityDictionary['CustomerRefinerClass'] = CustomerRefinerClass;\n    \n      /**\n      * TokenizedPaymentCard entity class.\n      */\n      export class TokenizedPaymentCardClass implements Entities.TokenizedPaymentCard {\n      public IsSwipe: boolean;\n      public TenderType: string;\n      public CardTokenInfo: Entities.CardTokenInfo;\n      public Phone: string;\n      public Country: string;\n      public House: string;\n      public Address1: string;\n      public Address2: string;\n      public City: string;\n      public State: string;\n      public Zip: string;\n      public NameOnCard: string;\n      public CardTypeId: string;\n      public ExpirationMonth: number;\n      public ExpirationYear: number;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.IsSwipe = \n                odataObject.IsSwipe;\n              \n            this.TenderType = \n                odataObject.TenderType;\n              \n        if (odataObject.CardTokenInfo == null) {\n            this.CardTokenInfo = undefined;\n        } else if (odataObject.CardTokenInfo['@odata.type'] == null) {\n            this.CardTokenInfo = new CardTokenInfoClass(odataObject.CardTokenInfo);\n        } else {\n            var className: string = odataObject.CardTokenInfo['@odata.type'];\n            className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n            if (entityDictionary[className]) {\n                this.CardTokenInfo = new entityDictionary[className](odataObject.CardTokenInfo)\n            }\n        }\n\n      \n            this.Phone = \n                odataObject.Phone;\n              \n            this.Country = \n                odataObject.Country;\n              \n            this.House = \n                odataObject.House;\n              \n            this.Address1 = \n                odataObject.Address1;\n              \n            this.Address2 = \n                odataObject.Address2;\n              \n            this.City = \n                odataObject.City;\n              \n            this.State = \n                odataObject.State;\n              \n            this.Zip = \n                odataObject.Zip;\n              \n            this.NameOnCard = \n                odataObject.NameOnCard;\n              \n            this.CardTypeId = \n                odataObject.CardTypeId;\n              \n            this.ExpirationMonth = \n                odataObject.ExpirationMonth;\n              \n            this.ExpirationYear = \n                odataObject.ExpirationYear;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['TokenizedPaymentCardClass'] = TokenizedPaymentCardClass;\n    \n      /**\n      * ProductDimensionAvailabilitySearchCriteria entity class.\n      */\n      export class ProductDimensionAvailabilitySearchCriteriaClass implements Entities.ProductDimensionAvailabilitySearchCriteria {\n      public RequestedDimensionTypeValue: number;\n      public RequestedDimensionTypeValues: number[];\n      public MatchingDimensionValues: Entities.ProductDimension[];\n      public DefaultWarehouseOnly: boolean;\n      public FilterByChannelFulfillmentGroup: boolean;\n      public DeliveryModeTypeFilterValue: number;\n      public CatalogId: number;\n      public InventoryAccuracyValue: number;\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.RequestedDimensionTypeValue = \n                odataObject.RequestedDimensionTypeValue;\n              \n        this.RequestedDimensionTypeValues = undefined;\n        if (odataObject.RequestedDimensionTypeValues) {\n        this.RequestedDimensionTypeValues = [];\n        for (var i = 0; i < odataObject.RequestedDimensionTypeValues.length; i++) {\n        if (odataObject.RequestedDimensionTypeValues[i] != null) {\n            this.RequestedDimensionTypeValues[i] = \n                odataObject.RequestedDimensionTypeValues[i];\n                            } else {\n        this.RequestedDimensionTypeValues[i] = undefined;\n        }\n        }\n        }\n      \n        this.MatchingDimensionValues = undefined;\n        if (odataObject.MatchingDimensionValues) {\n        this.MatchingDimensionValues = [];\n        for (var i = 0; i < odataObject.MatchingDimensionValues.length; i++) {\n        if (odataObject.MatchingDimensionValues[i] != null) {\n        if (odataObject.MatchingDimensionValues[i]['@odata.type'] != null) {\n          var className: string = odataObject.MatchingDimensionValues[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.MatchingDimensionValues[i] = new entityDictionary[className](odataObject.MatchingDimensionValues[i])\n          }\n        } else {\n            this.MatchingDimensionValues[i] = new ProductDimensionClass(odataObject.MatchingDimensionValues[i]);\n        }\n                    } else {\n        this.MatchingDimensionValues[i] = undefined;\n        }\n        }\n        }\n      \n            this.DefaultWarehouseOnly = \n                odataObject.DefaultWarehouseOnly;\n              \n            this.FilterByChannelFulfillmentGroup = \n                odataObject.FilterByChannelFulfillmentGroup;\n              \n            this.DeliveryModeTypeFilterValue = \n                odataObject.DeliveryModeTypeFilterValue;\n              \n            this.CatalogId = \n                (odataObject.CatalogId != null) ? parseInt(odataObject.CatalogId, 10) : undefined;\n              \n            this.InventoryAccuracyValue = \n                odataObject.InventoryAccuracyValue;\n              \n      }\n      }\n      entityDictionary['ProductDimensionAvailabilitySearchCriteriaClass'] = ProductDimensionAvailabilitySearchCriteriaClass;\n    \n      /**\n      * LineShippingAddress entity class.\n      */\n      export class LineShippingAddressClass implements Entities.LineShippingAddress {\n      public LineId: string;\n      public ShippingAddress: Entities.Address;\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.LineId = \n                odataObject.LineId;\n              \n        if (odataObject.ShippingAddress == null) {\n            this.ShippingAddress = undefined;\n        } else if (odataObject.ShippingAddress['@odata.type'] == null) {\n            this.ShippingAddress = new AddressClass(odataObject.ShippingAddress);\n        } else {\n            var className: string = odataObject.ShippingAddress['@odata.type'];\n            className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n            if (entityDictionary[className]) {\n                this.ShippingAddress = new entityDictionary[className](odataObject.ShippingAddress)\n            }\n        }\n\n      \n      }\n      }\n      entityDictionary['LineShippingAddressClass'] = LineShippingAddressClass;\n    \n      /**\n      * CartDeliveryPreferences entity class.\n      */\n      export class CartDeliveryPreferencesClass implements Entities.CartDeliveryPreferences {\n      public HeaderDeliveryPreferenceTypeValues: number[];\n      public CartLineDeliveryPreferences: Entities.CartLineDeliveryPreference[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n        this.HeaderDeliveryPreferenceTypeValues = undefined;\n        if (odataObject.HeaderDeliveryPreferenceTypeValues) {\n        this.HeaderDeliveryPreferenceTypeValues = [];\n        for (var i = 0; i < odataObject.HeaderDeliveryPreferenceTypeValues.length; i++) {\n        if (odataObject.HeaderDeliveryPreferenceTypeValues[i] != null) {\n            this.HeaderDeliveryPreferenceTypeValues[i] = \n                odataObject.HeaderDeliveryPreferenceTypeValues[i];\n                            } else {\n        this.HeaderDeliveryPreferenceTypeValues[i] = undefined;\n        }\n        }\n        }\n      \n        this.CartLineDeliveryPreferences = undefined;\n        if (odataObject.CartLineDeliveryPreferences) {\n        this.CartLineDeliveryPreferences = [];\n        for (var i = 0; i < odataObject.CartLineDeliveryPreferences.length; i++) {\n        if (odataObject.CartLineDeliveryPreferences[i] != null) {\n        if (odataObject.CartLineDeliveryPreferences[i]['@odata.type'] != null) {\n          var className: string = odataObject.CartLineDeliveryPreferences[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.CartLineDeliveryPreferences[i] = new entityDictionary[className](odataObject.CartLineDeliveryPreferences[i])\n          }\n        } else {\n            this.CartLineDeliveryPreferences[i] = new CartLineDeliveryPreferenceClass(odataObject.CartLineDeliveryPreferences[i]);\n        }\n                    } else {\n        this.CartLineDeliveryPreferences[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['CartDeliveryPreferencesClass'] = CartDeliveryPreferencesClass;\n    \n      /**\n      * LineDeliverySpecification entity class.\n      */\n      export class LineDeliverySpecificationClass implements Entities.LineDeliverySpecification {\n      public LineId: string;\n      public DeliverySpecification: Entities.DeliverySpecification;\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.LineId = \n                odataObject.LineId;\n              \n        if (odataObject.DeliverySpecification == null) {\n            this.DeliverySpecification = undefined;\n        } else if (odataObject.DeliverySpecification['@odata.type'] == null) {\n            this.DeliverySpecification = new DeliverySpecificationClass(odataObject.DeliverySpecification);\n        } else {\n            var className: string = odataObject.DeliverySpecification['@odata.type'];\n            className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n            if (entityDictionary[className]) {\n                this.DeliverySpecification = new entityDictionary[className](odataObject.DeliverySpecification)\n            }\n        }\n\n      \n      }\n      }\n      entityDictionary['LineDeliverySpecificationClass'] = LineDeliverySpecificationClass;\n    \n      /**\n      * DeliverySpecification entity class.\n      */\n      export class DeliverySpecificationClass implements Entities.DeliverySpecification {\n      public DeliveryModeId: string;\n      public DeliveryPreferenceTypeValue: number;\n      public DeliveryAddress: Entities.Address;\n      public RequestedDeliveryDate: Date;\n      public PickUpStoreId: string;\n      public PickupTimeslotStartDateTime: Date;\n      public PickupTimeslotEndDateTime: Date;\n      public ElectronicDeliveryEmailAddress: string;\n      public ElectronicDeliveryEmailContent: string;\n      public ShipFromStoreId: string;\n      public ShipFromWarehouseId: string;\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.DeliveryModeId = \n                odataObject.DeliveryModeId;\n              \n            this.DeliveryPreferenceTypeValue = \n                odataObject.DeliveryPreferenceTypeValue;\n              \n        if (odataObject.DeliveryAddress == null) {\n            this.DeliveryAddress = undefined;\n        } else if (odataObject.DeliveryAddress['@odata.type'] == null) {\n            this.DeliveryAddress = new AddressClass(odataObject.DeliveryAddress);\n        } else {\n            var className: string = odataObject.DeliveryAddress['@odata.type'];\n            className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n            if (entityDictionary[className]) {\n                this.DeliveryAddress = new entityDictionary[className](odataObject.DeliveryAddress)\n            }\n        }\n\n      \n            this.RequestedDeliveryDate = \n                (odataObject.RequestedDeliveryDate instanceof Date) ? odataObject.RequestedDeliveryDate\n                : (odataObject.RequestedDeliveryDate != null) ? jsonLightReadStringPropertyValue(odataObject.RequestedDeliveryDate, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.PickUpStoreId = \n                odataObject.PickUpStoreId;\n              \n            this.PickupTimeslotStartDateTime = \n                (odataObject.PickupTimeslotStartDateTime instanceof Date) ? odataObject.PickupTimeslotStartDateTime\n                : (odataObject.PickupTimeslotStartDateTime != null) ? jsonLightReadStringPropertyValue(odataObject.PickupTimeslotStartDateTime, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.PickupTimeslotEndDateTime = \n                (odataObject.PickupTimeslotEndDateTime instanceof Date) ? odataObject.PickupTimeslotEndDateTime\n                : (odataObject.PickupTimeslotEndDateTime != null) ? jsonLightReadStringPropertyValue(odataObject.PickupTimeslotEndDateTime, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.ElectronicDeliveryEmailAddress = \n                odataObject.ElectronicDeliveryEmailAddress;\n              \n            this.ElectronicDeliveryEmailContent = \n                odataObject.ElectronicDeliveryEmailContent;\n              \n            this.ShipFromStoreId = \n                odataObject.ShipFromStoreId;\n              \n            this.ShipFromWarehouseId = \n                odataObject.ShipFromWarehouseId;\n              \n      }\n      }\n      entityDictionary['DeliverySpecificationClass'] = DeliverySpecificationClass;\n    \n      /**\n      * OrderSearchCriteria entity class.\n      */\n      export class OrderSearchCriteriaClass implements Entities.OrderSearchCriteria {\n      public CustomerAccountNumber: string;\n      public CustomerName: string;\n      public EmailAddress: string;\n      public LoyaltyCardNumber: string;\n      public CustomerPhoneNumber: string;\n      public SalesId: string;\n      public ReceiptId: string;\n      public OrderStatusValues: number[];\n      public DocumentStatusValues: number[];\n      public StartDateTime: Date;\n      public EndDateTime: Date;\n      public ChannelReferenceId: string;\n      public StoreId: string;\n      public OrderType: number;\n      public CustomFilters: Entities.SearchFilter[];\n      public FulfillmentTypeValues: number[];\n      public DeliveryMode: string;\n      public PickupStartDate: Date;\n      public PickupEndDate: Date;\n      public PickupTimeslotStartTime: number;\n      public PickupTimeslotEndTime: number;\n      public BusinessPartnerId: string;\n      public ChannelIds: number[];\n      public CustomerRequisition: string;\n      public SearchOnlyRetailOrders: boolean;\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.CustomerAccountNumber = \n                odataObject.CustomerAccountNumber;\n              \n            this.CustomerName = \n                odataObject.CustomerName;\n              \n            this.EmailAddress = \n                odataObject.EmailAddress;\n              \n            this.LoyaltyCardNumber = \n                odataObject.LoyaltyCardNumber;\n              \n            this.CustomerPhoneNumber = \n                odataObject.CustomerPhoneNumber;\n              \n            this.SalesId = \n                odataObject.SalesId;\n              \n            this.ReceiptId = \n                odataObject.ReceiptId;\n              \n        this.OrderStatusValues = undefined;\n        if (odataObject.OrderStatusValues) {\n        this.OrderStatusValues = [];\n        for (var i = 0; i < odataObject.OrderStatusValues.length; i++) {\n        if (odataObject.OrderStatusValues[i] != null) {\n            this.OrderStatusValues[i] = \n                odataObject.OrderStatusValues[i];\n                            } else {\n        this.OrderStatusValues[i] = undefined;\n        }\n        }\n        }\n      \n        this.DocumentStatusValues = undefined;\n        if (odataObject.DocumentStatusValues) {\n        this.DocumentStatusValues = [];\n        for (var i = 0; i < odataObject.DocumentStatusValues.length; i++) {\n        if (odataObject.DocumentStatusValues[i] != null) {\n            this.DocumentStatusValues[i] = \n                odataObject.DocumentStatusValues[i];\n                            } else {\n        this.DocumentStatusValues[i] = undefined;\n        }\n        }\n        }\n      \n            this.StartDateTime = \n                (odataObject.StartDateTime instanceof Date) ? odataObject.StartDateTime\n                : (odataObject.StartDateTime != null) ? jsonLightReadStringPropertyValue(odataObject.StartDateTime, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.EndDateTime = \n                (odataObject.EndDateTime instanceof Date) ? odataObject.EndDateTime\n                : (odataObject.EndDateTime != null) ? jsonLightReadStringPropertyValue(odataObject.EndDateTime, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.ChannelReferenceId = \n                odataObject.ChannelReferenceId;\n              \n            this.StoreId = \n                odataObject.StoreId;\n              \n            this.OrderType = \n                odataObject.OrderType;\n              \n        this.CustomFilters = undefined;\n        if (odataObject.CustomFilters) {\n        this.CustomFilters = [];\n        for (var i = 0; i < odataObject.CustomFilters.length; i++) {\n        if (odataObject.CustomFilters[i] != null) {\n        if (odataObject.CustomFilters[i]['@odata.type'] != null) {\n          var className: string = odataObject.CustomFilters[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.CustomFilters[i] = new entityDictionary[className](odataObject.CustomFilters[i])\n          }\n        } else {\n            this.CustomFilters[i] = new SearchFilterClass(odataObject.CustomFilters[i]);\n        }\n                    } else {\n        this.CustomFilters[i] = undefined;\n        }\n        }\n        }\n      \n        this.FulfillmentTypeValues = undefined;\n        if (odataObject.FulfillmentTypeValues) {\n        this.FulfillmentTypeValues = [];\n        for (var i = 0; i < odataObject.FulfillmentTypeValues.length; i++) {\n        if (odataObject.FulfillmentTypeValues[i] != null) {\n            this.FulfillmentTypeValues[i] = \n                odataObject.FulfillmentTypeValues[i];\n                            } else {\n        this.FulfillmentTypeValues[i] = undefined;\n        }\n        }\n        }\n      \n            this.DeliveryMode = \n                odataObject.DeliveryMode;\n              \n            this.PickupStartDate = \n                (odataObject.PickupStartDate instanceof Date) ? odataObject.PickupStartDate\n                : (odataObject.PickupStartDate != null) ? jsonLightReadStringPropertyValue(odataObject.PickupStartDate, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.PickupEndDate = \n                (odataObject.PickupEndDate instanceof Date) ? odataObject.PickupEndDate\n                : (odataObject.PickupEndDate != null) ? jsonLightReadStringPropertyValue(odataObject.PickupEndDate, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.PickupTimeslotStartTime = \n                odataObject.PickupTimeslotStartTime;\n              \n            this.PickupTimeslotEndTime = \n                odataObject.PickupTimeslotEndTime;\n              \n            this.BusinessPartnerId = \n                odataObject.BusinessPartnerId;\n              \n        this.ChannelIds = undefined;\n        if (odataObject.ChannelIds) {\n        this.ChannelIds = [];\n        for (var i = 0; i < odataObject.ChannelIds.length; i++) {\n        if (odataObject.ChannelIds[i] != null) {\n            this.ChannelIds[i] = \n                parseInt(odataObject.ChannelIds[i], 10);\n                            } else {\n        this.ChannelIds[i] = undefined;\n        }\n        }\n        }\n      \n            this.CustomerRequisition = \n                odataObject.CustomerRequisition;\n              \n            this.SearchOnlyRetailOrders = \n                odataObject.SearchOnlyRetailOrders;\n              \n      }\n      }\n      entityDictionary['OrderSearchCriteriaClass'] = OrderSearchCriteriaClass;\n    \n      /**\n      * ChecklistSearchCriteria entity class.\n      */\n      export class ChecklistSearchCriteriaClass implements Entities.ChecklistSearchCriteria {\n      public ChannelId: number;\n      public PersonnelNumber: string;\n      public ChecklistIds: string[];\n      public StatusValues: number[];\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.ChannelId = \n                (odataObject.ChannelId != null) ? parseInt(odataObject.ChannelId, 10) : undefined;\n              \n            this.PersonnelNumber = \n                odataObject.PersonnelNumber;\n              \n        this.ChecklistIds = undefined;\n        if (odataObject.ChecklistIds) {\n        this.ChecklistIds = [];\n        for (var i = 0; i < odataObject.ChecklistIds.length; i++) {\n        if (odataObject.ChecklistIds[i] != null) {\n            this.ChecklistIds[i] = \n                odataObject.ChecklistIds[i];\n                            } else {\n        this.ChecklistIds[i] = undefined;\n        }\n        }\n        }\n      \n        this.StatusValues = undefined;\n        if (odataObject.StatusValues) {\n        this.StatusValues = [];\n        for (var i = 0; i < odataObject.StatusValues.length; i++) {\n        if (odataObject.StatusValues[i] != null) {\n            this.StatusValues[i] = \n                odataObject.StatusValues[i];\n                            } else {\n        this.StatusValues[i] = undefined;\n        }\n        }\n        }\n      \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['ChecklistSearchCriteriaClass'] = ChecklistSearchCriteriaClass;\n    \n      /**\n      * TaskSearchCriteria entity class.\n      */\n      export class TaskSearchCriteriaClass implements Entities.TaskSearchCriteria {\n      public ChannelId: number;\n      public PersonnelNumber: string;\n      public TaskIds: string[];\n      public StatusValues: number[];\n      public FilterMyTasks: boolean;\n      public FilterOverdueTasks: boolean;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.ChannelId = \n                (odataObject.ChannelId != null) ? parseInt(odataObject.ChannelId, 10) : undefined;\n              \n            this.PersonnelNumber = \n                odataObject.PersonnelNumber;\n              \n        this.TaskIds = undefined;\n        if (odataObject.TaskIds) {\n        this.TaskIds = [];\n        for (var i = 0; i < odataObject.TaskIds.length; i++) {\n        if (odataObject.TaskIds[i] != null) {\n            this.TaskIds[i] = \n                odataObject.TaskIds[i];\n                            } else {\n        this.TaskIds[i] = undefined;\n        }\n        }\n        }\n      \n        this.StatusValues = undefined;\n        if (odataObject.StatusValues) {\n        this.StatusValues = [];\n        for (var i = 0; i < odataObject.StatusValues.length; i++) {\n        if (odataObject.StatusValues[i] != null) {\n            this.StatusValues[i] = \n                odataObject.StatusValues[i];\n                            } else {\n        this.StatusValues[i] = undefined;\n        }\n        }\n        }\n      \n            this.FilterMyTasks = \n                odataObject.FilterMyTasks;\n              \n            this.FilterOverdueTasks = \n                odataObject.FilterOverdueTasks;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['TaskSearchCriteriaClass'] = TaskSearchCriteriaClass;\n    \n      /**\n      * ChecklistTaskTeamsIntegrationConfiguration entity class.\n      */\n      export class ChecklistTaskTeamsIntegrationConfigurationClass implements Entities.ChecklistTaskTeamsIntegrationConfiguration {\n      public IsEnabled: boolean;\n      public MicrosoftGraphResource: string;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.IsEnabled = \n                odataObject.IsEnabled;\n              \n            this.MicrosoftGraphResource = \n                odataObject.MicrosoftGraphResource;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['ChecklistTaskTeamsIntegrationConfigurationClass'] = ChecklistTaskTeamsIntegrationConfigurationClass;\n    \n      /**\n      * ReturnCartLine entity class.\n      */\n      export class ReturnCartLineClass implements Entities.ReturnCartLine {\n      public Description: string;\n      public ItemId: string;\n      public ProductId: number;\n      public Quantity: number;\n      public ReturnLineNumber: number;\n      public ReturnTransactionId: string;\n      public SerialNumber: string;\n      public IgnoreSerialNumberMismatch: boolean;\n      public ReasonCodeLines: Entities.ReasonCodeLine[];\n      public Price: number;\n      public IsPriceKeyedIn: boolean;\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.Description = \n                odataObject.Description;\n              \n            this.ItemId = \n                odataObject.ItemId;\n              \n            this.ProductId = \n                (odataObject.ProductId != null) ? parseInt(odataObject.ProductId, 10) : undefined;\n              \n            this.Quantity = \n                (odataObject.Quantity != null) ? parseFloat(odataObject.Quantity) : undefined;\n              \n            this.ReturnLineNumber = \n                (odataObject.ReturnLineNumber != null) ? parseFloat(odataObject.ReturnLineNumber) : undefined;\n              \n            this.ReturnTransactionId = \n                odataObject.ReturnTransactionId;\n              \n            this.SerialNumber = \n                odataObject.SerialNumber;\n              \n            this.IgnoreSerialNumberMismatch = \n                odataObject.IgnoreSerialNumberMismatch;\n              \n        this.ReasonCodeLines = undefined;\n        if (odataObject.ReasonCodeLines) {\n        this.ReasonCodeLines = [];\n        for (var i = 0; i < odataObject.ReasonCodeLines.length; i++) {\n        if (odataObject.ReasonCodeLines[i] != null) {\n        if (odataObject.ReasonCodeLines[i]['@odata.type'] != null) {\n          var className: string = odataObject.ReasonCodeLines[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ReasonCodeLines[i] = new entityDictionary[className](odataObject.ReasonCodeLines[i])\n          }\n        } else {\n            this.ReasonCodeLines[i] = new ReasonCodeLineClass(odataObject.ReasonCodeLines[i]);\n        }\n                    } else {\n        this.ReasonCodeLines[i] = undefined;\n        }\n        }\n        }\n      \n            this.Price = \n                (odataObject.Price != null) ? parseFloat(odataObject.Price) : undefined;\n              \n            this.IsPriceKeyedIn = \n                odataObject.IsPriceKeyedIn;\n              \n      }\n      }\n      entityDictionary['ReturnCartLineClass'] = ReturnCartLineClass;\n    \n      /**\n      * TenderDiscountLine entity class.\n      */\n      export class TenderDiscountLineClass implements Entities.TenderDiscountLine {\n      public DiscountAmount: number;\n      public PaymentAmount: number;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.DiscountAmount = \n                (odataObject.DiscountAmount != null) ? parseFloat(odataObject.DiscountAmount) : undefined;\n              \n            this.PaymentAmount = \n                (odataObject.PaymentAmount != null) ? parseFloat(odataObject.PaymentAmount) : undefined;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['TenderDiscountLineClass'] = TenderDiscountLineClass;\n    \n      /**\n      * ReceiptRetrievalCriteria entity class.\n      */\n      export class ReceiptRetrievalCriteriaClass implements Entities.ReceiptRetrievalCriteria {\n      public IsCopy: boolean;\n      public IsRemoteTransaction: boolean;\n      public IsPreview: boolean;\n      public QueryBySalesId: boolean;\n      public ReceiptTypeValue: number;\n      public ShiftId: number;\n      public ShiftTerminalId: string;\n      public HardwareProfileId: string;\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.IsCopy = \n                odataObject.IsCopy;\n              \n            this.IsRemoteTransaction = \n                odataObject.IsRemoteTransaction;\n              \n            this.IsPreview = \n                odataObject.IsPreview;\n              \n            this.QueryBySalesId = \n                odataObject.QueryBySalesId;\n              \n            this.ReceiptTypeValue = \n                odataObject.ReceiptTypeValue;\n              \n            this.ShiftId = \n                (odataObject.ShiftId != null) ? parseInt(odataObject.ShiftId, 10) : undefined;\n              \n            this.ShiftTerminalId = \n                odataObject.ShiftTerminalId;\n              \n            this.HardwareProfileId = \n                odataObject.HardwareProfileId;\n              \n      }\n      }\n      entityDictionary['ReceiptRetrievalCriteriaClass'] = ReceiptRetrievalCriteriaClass;\n    \n      /**\n      * CartSearchCriteria entity class.\n      */\n      export class CartSearchCriteriaClass implements Entities.CartSearchCriteria {\n      public CartId: string;\n      public ExpectedCartVersion: number;\n      public CustomerAccountNumber: string;\n      public IncludeAnonymous: boolean;\n      public SuspendedOnly: boolean;\n      public CartTypeValue: number;\n      public LastModifiedDateTimeFrom: Date;\n      public LastModifiedDateTimeTo: Date;\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.CartId = \n                odataObject.CartId;\n              \n            this.ExpectedCartVersion = \n                (odataObject.ExpectedCartVersion != null) ? parseInt(odataObject.ExpectedCartVersion, 10) : undefined;\n              \n            this.CustomerAccountNumber = \n                odataObject.CustomerAccountNumber;\n              \n            this.IncludeAnonymous = \n                odataObject.IncludeAnonymous;\n              \n            this.SuspendedOnly = \n                odataObject.SuspendedOnly;\n              \n            this.CartTypeValue = \n                odataObject.CartTypeValue;\n              \n            this.LastModifiedDateTimeFrom = \n                (odataObject.LastModifiedDateTimeFrom instanceof Date) ? odataObject.LastModifiedDateTimeFrom\n                : (odataObject.LastModifiedDateTimeFrom != null) ? jsonLightReadStringPropertyValue(odataObject.LastModifiedDateTimeFrom, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.LastModifiedDateTimeTo = \n                (odataObject.LastModifiedDateTimeTo instanceof Date) ? odataObject.LastModifiedDateTimeTo\n                : (odataObject.LastModifiedDateTimeTo != null) ? jsonLightReadStringPropertyValue(odataObject.LastModifiedDateTimeTo, \"Edm.DateTimeOffset\", false) : undefined;\n              \n      }\n      }\n      entityDictionary['CartSearchCriteriaClass'] = CartSearchCriteriaClass;\n    \n      /**\n      * RetrievePaymentResultSettings entity class.\n      */\n      export class RetrievePaymentResultSettingsClass implements Entities.RetrievePaymentResultSettings {\n      public ReturnUrl: string;\n      public PaymentConnectorId: string;\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.ReturnUrl = \n                odataObject.ReturnUrl;\n              \n            this.PaymentConnectorId = \n                odataObject.PaymentConnectorId;\n              \n      }\n      }\n      entityDictionary['RetrievePaymentResultSettingsClass'] = RetrievePaymentResultSettingsClass;\n    \n      /**\n      * SearchReceiptCriteria entity class.\n      */\n      export class SearchReceiptCriteriaClass implements Entities.SearchReceiptCriteria {\n      public TransactionId: string;\n      public ReceiptTypeValue: number;\n      public ReceiptTypesByFormatTypeCollection: Entities.ReceiptTypesByFormatType[];\n      public IsCopy: boolean;\n      public GiftReceiptLineNumbers: number[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.TransactionId = \n                odataObject.TransactionId;\n              \n            this.ReceiptTypeValue = \n                odataObject.ReceiptTypeValue;\n              \n        this.ReceiptTypesByFormatTypeCollection = undefined;\n        if (odataObject.ReceiptTypesByFormatTypeCollection) {\n        this.ReceiptTypesByFormatTypeCollection = [];\n        for (var i = 0; i < odataObject.ReceiptTypesByFormatTypeCollection.length; i++) {\n        if (odataObject.ReceiptTypesByFormatTypeCollection[i] != null) {\n        if (odataObject.ReceiptTypesByFormatTypeCollection[i]['@odata.type'] != null) {\n          var className: string = odataObject.ReceiptTypesByFormatTypeCollection[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ReceiptTypesByFormatTypeCollection[i] = new entityDictionary[className](odataObject.ReceiptTypesByFormatTypeCollection[i])\n          }\n        } else {\n            this.ReceiptTypesByFormatTypeCollection[i] = new ReceiptTypesByFormatTypeClass(odataObject.ReceiptTypesByFormatTypeCollection[i]);\n        }\n                    } else {\n        this.ReceiptTypesByFormatTypeCollection[i] = undefined;\n        }\n        }\n        }\n      \n            this.IsCopy = \n                odataObject.IsCopy;\n              \n        this.GiftReceiptLineNumbers = undefined;\n        if (odataObject.GiftReceiptLineNumbers) {\n        this.GiftReceiptLineNumbers = [];\n        for (var i = 0; i < odataObject.GiftReceiptLineNumbers.length; i++) {\n        if (odataObject.GiftReceiptLineNumbers[i] != null) {\n            this.GiftReceiptLineNumbers[i] = \n                parseFloat(odataObject.GiftReceiptLineNumbers[i]);\n                            } else {\n        this.GiftReceiptLineNumbers[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['SearchReceiptCriteriaClass'] = SearchReceiptCriteriaClass;\n    \n      /**\n      * ElectronicAddress entity class.\n      */\n      export class ElectronicAddressClass implements Entities.ElectronicAddress {\n      public AddressTypeValue: number;\n      public ExtensibleEAddressType: Entities.ExtensibleElectronicAddressType;\n      public Address: string;\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.AddressTypeValue = \n                odataObject.AddressTypeValue;\n              \n        if (odataObject.ExtensibleEAddressType == null) {\n            this.ExtensibleEAddressType = undefined;\n        } else if (odataObject.ExtensibleEAddressType['@odata.type'] == null) {\n            this.ExtensibleEAddressType = new ExtensibleElectronicAddressTypeClass(odataObject.ExtensibleEAddressType);\n        } else {\n            var className: string = odataObject.ExtensibleEAddressType['@odata.type'];\n            className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n            if (entityDictionary[className]) {\n                this.ExtensibleEAddressType = new entityDictionary[className](odataObject.ExtensibleEAddressType)\n            }\n        }\n\n      \n            this.Address = \n                odataObject.Address;\n              \n      }\n      }\n      entityDictionary['ElectronicAddressClass'] = ElectronicAddressClass;\n    \n      /**\n      * ChannelReferenceLookupCriteria entity class.\n      */\n      export class ChannelReferenceLookupCriteriaClass implements Entities.ChannelReferenceLookupCriteria {\n      public ChannelReferenceId: string;\n      public SearchLocationValue: number;\n      public ChannelReferenceAdditionalLookupCriteria: Entities.ChannelReferenceAdditionalLookupCriteria[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.ChannelReferenceId = \n                odataObject.ChannelReferenceId;\n              \n            this.SearchLocationValue = \n                odataObject.SearchLocationValue;\n              \n        this.ChannelReferenceAdditionalLookupCriteria = undefined;\n        if (odataObject.ChannelReferenceAdditionalLookupCriteria) {\n        this.ChannelReferenceAdditionalLookupCriteria = [];\n        for (var i = 0; i < odataObject.ChannelReferenceAdditionalLookupCriteria.length; i++) {\n        if (odataObject.ChannelReferenceAdditionalLookupCriteria[i] != null) {\n        if (odataObject.ChannelReferenceAdditionalLookupCriteria[i]['@odata.type'] != null) {\n          var className: string = odataObject.ChannelReferenceAdditionalLookupCriteria[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ChannelReferenceAdditionalLookupCriteria[i] = new entityDictionary[className](odataObject.ChannelReferenceAdditionalLookupCriteria[i])\n          }\n        } else {\n            this.ChannelReferenceAdditionalLookupCriteria[i] = new ChannelReferenceAdditionalLookupCriteriaClass(odataObject.ChannelReferenceAdditionalLookupCriteria[i]);\n        }\n                    } else {\n        this.ChannelReferenceAdditionalLookupCriteria[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['ChannelReferenceLookupCriteriaClass'] = ChannelReferenceLookupCriteriaClass;\n    \n      /**\n      * FulfillmentLineParameter entity class.\n      */\n      export class FulfillmentLineParameterClass implements Entities.FulfillmentLineParameter {\n      public SalesId: string;\n      public SalesLineNumber: number;\n      public Quantity: number;\n      public SerialNumber: string;\n      public InvoiceDate: Date;\n      public PackingDate: Date;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.SalesId = \n                odataObject.SalesId;\n              \n            this.SalesLineNumber = \n                (odataObject.SalesLineNumber != null) ? parseFloat(odataObject.SalesLineNumber) : undefined;\n              \n            this.Quantity = \n                (odataObject.Quantity != null) ? parseFloat(odataObject.Quantity) : undefined;\n              \n            this.SerialNumber = \n                odataObject.SerialNumber;\n              \n            this.InvoiceDate = \n                (odataObject.InvoiceDate instanceof Date) ? odataObject.InvoiceDate\n                : (odataObject.InvoiceDate != null) ? jsonLightReadStringPropertyValue(odataObject.InvoiceDate, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.PackingDate = \n                (odataObject.PackingDate instanceof Date) ? odataObject.PackingDate\n                : (odataObject.PackingDate != null) ? jsonLightReadStringPropertyValue(odataObject.PackingDate, \"Edm.DateTimeOffset\", false) : undefined;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['FulfillmentLineParameterClass'] = FulfillmentLineParameterClass;\n    \n      /**\n      * ShipFulfillmentLine entity class.\n      */\n      export class ShipFulfillmentLineClass\n        extends FulfillmentLineParameterClass\n       implements Entities.ShipFulfillmentLine {\n      public ProductId: number;\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      super(odataObject);odataObject = odataObject || {};\n            this.ProductId = \n                (odataObject.ProductId != null) ? parseInt(odataObject.ProductId, 10) : undefined;\n              \n        this[\"@odata.type\"] = \"#Microsoft.Dynamics.Commerce.Runtime.DataModel.ShipFulfillmentLine\";\n      \n      }\n      }\n      entityDictionary['ShipFulfillmentLineClass'] = ShipFulfillmentLineClass;\n    \n      /**\n      * RejectFulfillmentLine entity class.\n      */\n      export class RejectFulfillmentLineClass\n        extends FulfillmentLineParameterClass\n       implements Entities.RejectFulfillmentLine {\n      public RejectedQuantity: number;\n      public InfoCodeId: string;\n      public SubInfoCodeId: string;\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      super(odataObject);odataObject = odataObject || {};\n            this.RejectedQuantity = \n                (odataObject.RejectedQuantity != null) ? parseFloat(odataObject.RejectedQuantity) : undefined;\n              \n            this.InfoCodeId = \n                odataObject.InfoCodeId;\n              \n            this.SubInfoCodeId = \n                odataObject.SubInfoCodeId;\n              \n        this[\"@odata.type\"] = \"#Microsoft.Dynamics.Commerce.Runtime.DataModel.RejectFulfillmentLine\";\n      \n      }\n      }\n      entityDictionary['RejectFulfillmentLineClass'] = RejectFulfillmentLineClass;\n    \n      /**\n      * ReadChangedProductsSession entity class.\n      */\n      export class ReadChangedProductsSessionClass implements Entities.ReadChangedProductsSession {\n      public Id: string;\n      public TotalNumberOfProducts: number;\n      public NumberOfProductsRead: number;\n      public NumberOfProductsReadInCurrentPage: number;\n      public NextSynchronizationToken: string;\n      public IsInitialSync: boolean;\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.Id = \n                odataObject.Id;\n              \n            this.TotalNumberOfProducts = \n                odataObject.TotalNumberOfProducts;\n              \n            this.NumberOfProductsRead = \n                odataObject.NumberOfProductsRead;\n              \n            this.NumberOfProductsReadInCurrentPage = \n                odataObject.NumberOfProductsReadInCurrentPage;\n              \n            this.NextSynchronizationToken = \n                odataObject.NextSynchronizationToken;\n              \n            this.IsInitialSync = \n                odataObject.IsInitialSync;\n              \n      }\n      }\n      entityDictionary['ReadChangedProductsSessionClass'] = ReadChangedProductsSessionClass;\n    \n      /**\n      * DeletedListingsResult entity class.\n      */\n      export class DeletedListingsResultClass implements Entities.DeletedListingsResult {\n      public HasMorePublishedListings: boolean;\n      public DeletedListings: Entities.ListingIdentity[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.HasMorePublishedListings = \n                odataObject.HasMorePublishedListings;\n              \n        this.DeletedListings = undefined;\n        if (odataObject.DeletedListings) {\n        this.DeletedListings = [];\n        for (var i = 0; i < odataObject.DeletedListings.length; i++) {\n        if (odataObject.DeletedListings[i] != null) {\n        if (odataObject.DeletedListings[i]['@odata.type'] != null) {\n          var className: string = odataObject.DeletedListings[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.DeletedListings[i] = new entityDictionary[className](odataObject.DeletedListings[i])\n          }\n        } else {\n            this.DeletedListings[i] = new ListingIdentityClass(odataObject.DeletedListings[i]);\n        }\n                    } else {\n        this.DeletedListings[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['DeletedListingsResultClass'] = DeletedListingsResultClass;\n    \n      /**\n      * ProductRating entity class.\n      */\n      export class ProductRatingClass implements Entities.ProductRating {\n      public ProductId: number;\n      public AverageRating: number;\n      public TotalRatings: number;\n      public RatingDistribution: Entities.ProductRatingCount[];\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.ProductId = \n                (odataObject.ProductId != null) ? parseInt(odataObject.ProductId, 10) : undefined;\n              \n            this.AverageRating = \n                (odataObject.AverageRating != null) ? parseFloat(odataObject.AverageRating) : undefined;\n              \n            this.TotalRatings = \n                odataObject.TotalRatings;\n              \n        this.RatingDistribution = undefined;\n        if (odataObject.RatingDistribution) {\n        this.RatingDistribution = [];\n        for (var i = 0; i < odataObject.RatingDistribution.length; i++) {\n        if (odataObject.RatingDistribution[i] != null) {\n        if (odataObject.RatingDistribution[i]['@odata.type'] != null) {\n          var className: string = odataObject.RatingDistribution[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.RatingDistribution[i] = new entityDictionary[className](odataObject.RatingDistribution[i])\n          }\n        } else {\n            this.RatingDistribution[i] = new ProductRatingCountClass(odataObject.RatingDistribution[i]);\n        }\n                    } else {\n        this.RatingDistribution[i] = undefined;\n        }\n        }\n        }\n      \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['ProductRatingClass'] = ProductRatingClass;\n    \n      /**\n      * ProductDeliveryOptions entity class.\n      */\n      export class ProductDeliveryOptionsClass implements Entities.ProductDeliveryOptions {\n      public ProductId: number;\n      public DeliveryOptions: Entities.DeliveryOption[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.ProductId = \n                (odataObject.ProductId != null) ? parseInt(odataObject.ProductId, 10) : undefined;\n              \n        this.DeliveryOptions = undefined;\n        if (odataObject.DeliveryOptions) {\n        this.DeliveryOptions = [];\n        for (var i = 0; i < odataObject.DeliveryOptions.length; i++) {\n        if (odataObject.DeliveryOptions[i] != null) {\n        if (odataObject.DeliveryOptions[i]['@odata.type'] != null) {\n          var className: string = odataObject.DeliveryOptions[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.DeliveryOptions[i] = new entityDictionary[className](odataObject.DeliveryOptions[i])\n          }\n        } else {\n            this.DeliveryOptions[i] = new DeliveryOptionClass(odataObject.DeliveryOptions[i]);\n        }\n                    } else {\n        this.DeliveryOptions[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['ProductDeliveryOptionsClass'] = ProductDeliveryOptionsClass;\n    \n      /**\n      * ListingPublishStatus entity class.\n      */\n      export class ListingPublishStatusClass implements Entities.ListingPublishStatus {\n      public PublishStatusValue: number;\n      public ListingModifiedDateTime: Date;\n      public ChannelListingId: string;\n      public ChannelId: number;\n      public CatalogId: number;\n      public ProductId: number;\n      public LanguageId: string;\n      public AppliedActionValue: number;\n      public StatusMessage: string;\n      public Tag: string;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.PublishStatusValue = \n                odataObject.PublishStatusValue;\n              \n            this.ListingModifiedDateTime = \n                (odataObject.ListingModifiedDateTime instanceof Date) ? odataObject.ListingModifiedDateTime\n                : (odataObject.ListingModifiedDateTime != null) ? jsonLightReadStringPropertyValue(odataObject.ListingModifiedDateTime, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.ChannelListingId = \n                odataObject.ChannelListingId;\n              \n            this.ChannelId = \n                (odataObject.ChannelId != null) ? parseInt(odataObject.ChannelId, 10) : undefined;\n              \n            this.CatalogId = \n                (odataObject.CatalogId != null) ? parseInt(odataObject.CatalogId, 10) : undefined;\n              \n            this.ProductId = \n                (odataObject.ProductId != null) ? parseInt(odataObject.ProductId, 10) : undefined;\n              \n            this.LanguageId = \n                odataObject.LanguageId;\n              \n            this.AppliedActionValue = \n                odataObject.AppliedActionValue;\n              \n            this.StatusMessage = \n                odataObject.StatusMessage;\n              \n            this.Tag = \n                odataObject.Tag;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['ListingPublishStatusClass'] = ListingPublishStatusClass;\n    \n      /**\n      * MediaLocationSearchCriteria entity class.\n      */\n      export class MediaLocationSearchCriteriaClass implements Entities.MediaLocationSearchCriteria {\n      public ProductId: number;\n      public ChannelId: number;\n      public CatalogId: number;\n      public MediaUsageTypeValue: number;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.ProductId = \n                (odataObject.ProductId != null) ? parseInt(odataObject.ProductId, 10) : undefined;\n              \n            this.ChannelId = \n                (odataObject.ChannelId != null) ? parseInt(odataObject.ChannelId, 10) : undefined;\n              \n            this.CatalogId = \n                (odataObject.CatalogId != null) ? parseInt(odataObject.CatalogId, 10) : undefined;\n              \n            this.MediaUsageTypeValue = \n                odataObject.MediaUsageTypeValue;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['MediaLocationSearchCriteriaClass'] = MediaLocationSearchCriteriaClass;\n    \n      /**\n      * OrgUnitLocationSearchCriteria entity class.\n      */\n      export class OrgUnitLocationSearchCriteriaClass implements Entities.OrgUnitLocationSearchCriteria {\n      public OrgUnitNumber: string;\n      public OrgUnitName: string;\n      public InventoryLocationIds: string[];\n      public DeliveryModeTypeFilterValue: number;\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.OrgUnitNumber = \n                odataObject.OrgUnitNumber;\n              \n            this.OrgUnitName = \n                odataObject.OrgUnitName;\n              \n        this.InventoryLocationIds = undefined;\n        if (odataObject.InventoryLocationIds) {\n        this.InventoryLocationIds = [];\n        for (var i = 0; i < odataObject.InventoryLocationIds.length; i++) {\n        if (odataObject.InventoryLocationIds[i] != null) {\n            this.InventoryLocationIds[i] = \n                odataObject.InventoryLocationIds[i];\n                            } else {\n        this.InventoryLocationIds[i] = undefined;\n        }\n        }\n        }\n      \n            this.DeliveryModeTypeFilterValue = \n                odataObject.DeliveryModeTypeFilterValue;\n              \n      }\n      }\n      entityDictionary['OrgUnitLocationSearchCriteriaClass'] = OrgUnitLocationSearchCriteriaClass;\n    \n      /**\n      * StoreHours entity class.\n      */\n      export class StoreHoursClass implements Entities.StoreHours {\n      public RegularStoreHours: Entities.RegularStoreHours;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n        if (odataObject.RegularStoreHours == null) {\n            this.RegularStoreHours = undefined;\n        } else if (odataObject.RegularStoreHours['@odata.type'] == null) {\n            this.RegularStoreHours = new RegularStoreHoursClass(odataObject.RegularStoreHours);\n        } else {\n            var className: string = odataObject.RegularStoreHours['@odata.type'];\n            className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n            if (entityDictionary[className]) {\n                this.RegularStoreHours = new entityDictionary[className](odataObject.RegularStoreHours)\n            }\n        }\n\n      \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['StoreHoursClass'] = StoreHoursClass;\n    \n      /**\n      * RecallOrderSearchCriteria entity class.\n      */\n      export class RecallOrderSearchCriteriaClass implements Entities.RecallOrderSearchCriteria {\n      public TransactionId: string;\n      public Id: string;\n      public SearchLocationValue: number;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.TransactionId = \n                odataObject.TransactionId;\n              \n            this.Id = \n                odataObject.Id;\n              \n            this.SearchLocationValue = \n                odataObject.SearchLocationValue;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['RecallOrderSearchCriteriaClass'] = RecallOrderSearchCriteriaClass;\n    \n      /**\n      * CartPromotions entity class.\n      */\n      export class CartPromotionsClass implements Entities.CartPromotions {\n      public HeaderPromotions: string[];\n      public CartLinePromotions: Entities.CartLinePromotion[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n        this.HeaderPromotions = undefined;\n        if (odataObject.HeaderPromotions) {\n        this.HeaderPromotions = [];\n        for (var i = 0; i < odataObject.HeaderPromotions.length; i++) {\n        if (odataObject.HeaderPromotions[i] != null) {\n            this.HeaderPromotions[i] = \n                odataObject.HeaderPromotions[i];\n                            } else {\n        this.HeaderPromotions[i] = undefined;\n        }\n        }\n        }\n      \n        this.CartLinePromotions = undefined;\n        if (odataObject.CartLinePromotions) {\n        this.CartLinePromotions = [];\n        for (var i = 0; i < odataObject.CartLinePromotions.length; i++) {\n        if (odataObject.CartLinePromotions[i] != null) {\n        if (odataObject.CartLinePromotions[i]['@odata.type'] != null) {\n          var className: string = odataObject.CartLinePromotions[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.CartLinePromotions[i] = new entityDictionary[className](odataObject.CartLinePromotions[i])\n          }\n        } else {\n            this.CartLinePromotions[i] = new CartLinePromotionClass(odataObject.CartLinePromotions[i]);\n        }\n                    } else {\n        this.CartLinePromotions[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['CartPromotionsClass'] = CartPromotionsClass;\n    \n      /**\n      * CartPromotionLine entity class.\n      */\n      export class CartPromotionLineClass implements Entities.CartPromotionLine {\n      public LineId: string;\n      public Promotion: Entities.Promotion;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.LineId = \n                odataObject.LineId;\n              \n        if (odataObject.Promotion == null) {\n            this.Promotion = undefined;\n        } else if (odataObject.Promotion['@odata.type'] == null) {\n            this.Promotion = new PromotionClass(odataObject.Promotion);\n        } else {\n            var className: string = odataObject.Promotion['@odata.type'];\n            className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n            if (entityDictionary[className]) {\n                this.Promotion = new entityDictionary[className](odataObject.Promotion)\n            }\n        }\n\n      \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['CartPromotionLineClass'] = CartPromotionLineClass;\n    \n      /**\n      * ItemUnit entity class.\n      */\n      export class ItemUnitClass implements Entities.ItemUnit {\n      public ItemId: string;\n      public VariantInventoryDimensionId: string;\n      public Product: number;\n      public DistinctProductVariant: number;\n      public UnitOfMeasure: string;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.ItemId = \n                odataObject.ItemId;\n              \n            this.VariantInventoryDimensionId = \n                odataObject.VariantInventoryDimensionId;\n              \n            this.Product = \n                (odataObject.Product != null) ? parseInt(odataObject.Product, 10) : undefined;\n              \n            this.DistinctProductVariant = \n                (odataObject.DistinctProductVariant != null) ? parseInt(odataObject.DistinctProductVariant, 10) : undefined;\n              \n            this.UnitOfMeasure = \n                odataObject.UnitOfMeasure;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['ItemUnitClass'] = ItemUnitClass;\n    \n      /**\n      * ProductAvailableQuantity entity class.\n      */\n      export class ProductAvailableQuantityClass implements Entities.ProductAvailableQuantity {\n      public ProductId: number;\n      public AvailableQuantity: number;\n      public UnitOfMeasure: string;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.ProductId = \n                (odataObject.ProductId != null) ? parseInt(odataObject.ProductId, 10) : undefined;\n              \n            this.AvailableQuantity = \n                (odataObject.AvailableQuantity != null) ? parseFloat(odataObject.AvailableQuantity) : undefined;\n              \n            this.UnitOfMeasure = \n                odataObject.UnitOfMeasure;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['ProductAvailableQuantityClass'] = ProductAvailableQuantityClass;\n    \n      /**\n      * OrgUnitAvailabilitySearchCriteria entity class.\n      */\n      export class OrgUnitAvailabilitySearchCriteriaClass implements Entities.OrgUnitAvailabilitySearchCriteria {\n      public OrgUnitName: string;\n      public OrgUnitNumber: string;\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.OrgUnitName = \n                odataObject.OrgUnitName;\n              \n            this.OrgUnitNumber = \n                odataObject.OrgUnitNumber;\n              \n      }\n      }\n      entityDictionary['OrgUnitAvailabilitySearchCriteriaClass'] = OrgUnitAvailabilitySearchCriteriaClass;\n    \n      /**\n      * AffiliationSearchCriteria entity class.\n      */\n      export class AffiliationSearchCriteriaClass implements Entities.AffiliationSearchCriteria {\n      public FilterTypeValue: number;\n      public AffiliationTypeValue: number;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.FilterTypeValue = \n                odataObject.FilterTypeValue;\n              \n            this.AffiliationTypeValue = \n                odataObject.AffiliationTypeValue;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['AffiliationSearchCriteriaClass'] = AffiliationSearchCriteriaClass;\n    \n      /**\n      * InvoiceSearchCriteria entity class.\n      */\n      export class InvoiceSearchCriteriaClass implements Entities.InvoiceSearchCriteria {\n      public BusinessPartnerId: string;\n      public CustomerId: string;\n      public InvoiceIds: string[];\n      public InvoiceTypeValues: number[];\n      public InvoicePaidStatusValues: number[];\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.BusinessPartnerId = \n                odataObject.BusinessPartnerId;\n              \n            this.CustomerId = \n                odataObject.CustomerId;\n              \n        this.InvoiceIds = undefined;\n        if (odataObject.InvoiceIds) {\n        this.InvoiceIds = [];\n        for (var i = 0; i < odataObject.InvoiceIds.length; i++) {\n        if (odataObject.InvoiceIds[i] != null) {\n            this.InvoiceIds[i] = \n                odataObject.InvoiceIds[i];\n                            } else {\n        this.InvoiceIds[i] = undefined;\n        }\n        }\n        }\n      \n        this.InvoiceTypeValues = undefined;\n        if (odataObject.InvoiceTypeValues) {\n        this.InvoiceTypeValues = [];\n        for (var i = 0; i < odataObject.InvoiceTypeValues.length; i++) {\n        if (odataObject.InvoiceTypeValues[i] != null) {\n            this.InvoiceTypeValues[i] = \n                odataObject.InvoiceTypeValues[i];\n                            } else {\n        this.InvoiceTypeValues[i] = undefined;\n        }\n        }\n        }\n      \n        this.InvoicePaidStatusValues = undefined;\n        if (odataObject.InvoicePaidStatusValues) {\n        this.InvoicePaidStatusValues = [];\n        for (var i = 0; i < odataObject.InvoicePaidStatusValues.length; i++) {\n        if (odataObject.InvoicePaidStatusValues[i] != null) {\n            this.InvoicePaidStatusValues[i] = \n                odataObject.InvoicePaidStatusValues[i];\n                            } else {\n        this.InvoicePaidStatusValues[i] = undefined;\n        }\n        }\n        }\n      \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['InvoiceSearchCriteriaClass'] = InvoiceSearchCriteriaClass;\n    \n      /**\n      * InvoiceDetailsSearchCriteria entity class.\n      */\n      export class InvoiceDetailsSearchCriteriaClass implements Entities.InvoiceDetailsSearchCriteria {\n      public InvoiceId: string;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.InvoiceId = \n                odataObject.InvoiceId;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['InvoiceDetailsSearchCriteriaClass'] = InvoiceDetailsSearchCriteriaClass;\n    \n      /**\n      * InvoicedSalesLinesSearchCriteria entity class.\n      */\n      export class InvoicedSalesLinesSearchCriteriaClass implements Entities.InvoicedSalesLinesSearchCriteria {\n      public SalesIds: string[];\n      public InvoiceIds: string[];\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n        this.SalesIds = undefined;\n        if (odataObject.SalesIds) {\n        this.SalesIds = [];\n        for (var i = 0; i < odataObject.SalesIds.length; i++) {\n        if (odataObject.SalesIds[i] != null) {\n            this.SalesIds[i] = \n                odataObject.SalesIds[i];\n                            } else {\n        this.SalesIds[i] = undefined;\n        }\n        }\n        }\n      \n        this.InvoiceIds = undefined;\n        if (odataObject.InvoiceIds) {\n        this.InvoiceIds = [];\n        for (var i = 0; i < odataObject.InvoiceIds.length; i++) {\n        if (odataObject.InvoiceIds[i] != null) {\n            this.InvoiceIds[i] = \n                odataObject.InvoiceIds[i];\n                            } else {\n        this.InvoiceIds[i] = undefined;\n        }\n        }\n        }\n      \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['InvoicedSalesLinesSearchCriteriaClass'] = InvoicedSalesLinesSearchCriteriaClass;\n    \n      /**\n      * PickAndPackSalesLineParameter entity class.\n      */\n      export class PickAndPackSalesLineParameterClass implements Entities.PickAndPackSalesLineParameter {\n      public SalesLineNumber: number;\n      public Quantity: number;\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.SalesLineNumber = \n                (odataObject.SalesLineNumber != null) ? parseFloat(odataObject.SalesLineNumber) : undefined;\n              \n            this.Quantity = \n                (odataObject.Quantity != null) ? parseFloat(odataObject.Quantity) : undefined;\n              \n      }\n      }\n      entityDictionary['PickAndPackSalesLineParameterClass'] = PickAndPackSalesLineParameterClass;\n    \n      /**\n      * ProductListSearchCriteria entity class.\n      */\n      export class ProductListSearchCriteriaClass implements Entities.ProductListSearchCriteria {\n      public CustomerId: string;\n      public ProductListId: string;\n      public ProductListType: string;\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.CustomerId = \n                odataObject.CustomerId;\n              \n            this.ProductListId = \n                odataObject.ProductListId;\n              \n            this.ProductListType = \n                odataObject.ProductListType;\n              \n      }\n      }\n      entityDictionary['ProductListSearchCriteriaClass'] = ProductListSearchCriteriaClass;\n    \n      /**\n      * ProjectionDomain entity class.\n      */\n      export class ProjectionDomainClass implements Entities.ProjectionDomain {\n      public ChannelId: number;\n      public CatalogId: number;\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.ChannelId = \n                (odataObject.ChannelId != null) ? parseInt(odataObject.ChannelId, 10) : undefined;\n              \n            this.CatalogId = \n                (odataObject.CatalogId != null) ? parseInt(odataObject.CatalogId, 10) : undefined;\n              \n      }\n      }\n      entityDictionary['ProjectionDomainClass'] = ProjectionDomainClass;\n    \n      /**\n      * AffiliationLoyaltyTier entity class.\n      */\n      export class AffiliationLoyaltyTierClass implements Entities.AffiliationLoyaltyTier {\n      public AffiliationId: number;\n      public LoyaltyTierId: number;\n      public AffiliationTypeValue: number;\n      public ReasonCodeLines: Entities.ReasonCodeLine[];\n      public CustomerId: string;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.AffiliationId = \n                (odataObject.AffiliationId != null) ? parseInt(odataObject.AffiliationId, 10) : undefined;\n              \n            this.LoyaltyTierId = \n                (odataObject.LoyaltyTierId != null) ? parseInt(odataObject.LoyaltyTierId, 10) : undefined;\n              \n            this.AffiliationTypeValue = \n                odataObject.AffiliationTypeValue;\n              \n        this.ReasonCodeLines = undefined;\n        if (odataObject.ReasonCodeLines) {\n        this.ReasonCodeLines = [];\n        for (var i = 0; i < odataObject.ReasonCodeLines.length; i++) {\n        if (odataObject.ReasonCodeLines[i] != null) {\n        if (odataObject.ReasonCodeLines[i]['@odata.type'] != null) {\n          var className: string = odataObject.ReasonCodeLines[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ReasonCodeLines[i] = new entityDictionary[className](odataObject.ReasonCodeLines[i])\n          }\n        } else {\n            this.ReasonCodeLines[i] = new ReasonCodeLineClass(odataObject.ReasonCodeLines[i]);\n        }\n                    } else {\n        this.ReasonCodeLines[i] = undefined;\n        }\n        }\n        }\n      \n            this.CustomerId = \n                odataObject.CustomerId;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['AffiliationLoyaltyTierClass'] = AffiliationLoyaltyTierClass;\n    \n      /**\n      * PriceLookupContext entity class.\n      */\n      export class PriceLookupContextClass implements Entities.PriceLookupContext {\n      public HeaderContext: Entities.PriceLookupHeaderContext;\n      public LineContexts: Entities.PriceLookupLineContext[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n        if (odataObject.HeaderContext == null) {\n            this.HeaderContext = undefined;\n        } else if (odataObject.HeaderContext['@odata.type'] == null) {\n            this.HeaderContext = new PriceLookupHeaderContextClass(odataObject.HeaderContext);\n        } else {\n            var className: string = odataObject.HeaderContext['@odata.type'];\n            className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n            if (entityDictionary[className]) {\n                this.HeaderContext = new entityDictionary[className](odataObject.HeaderContext)\n            }\n        }\n\n      \n        this.LineContexts = undefined;\n        if (odataObject.LineContexts) {\n        this.LineContexts = [];\n        for (var i = 0; i < odataObject.LineContexts.length; i++) {\n        if (odataObject.LineContexts[i] != null) {\n        if (odataObject.LineContexts[i]['@odata.type'] != null) {\n          var className: string = odataObject.LineContexts[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.LineContexts[i] = new entityDictionary[className](odataObject.LineContexts[i])\n          }\n        } else {\n            this.LineContexts[i] = new PriceLookupLineContextClass(odataObject.LineContexts[i]);\n        }\n                    } else {\n        this.LineContexts[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['PriceLookupContextClass'] = PriceLookupContextClass;\n    \n      /**\n      * ProductPromotion entity class.\n      */\n      export class ProductPromotionClass implements Entities.ProductPromotion {\n      public ProductId: number;\n      public ProductDiscounts: Entities.Promotion[];\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.ProductId = \n                (odataObject.ProductId != null) ? parseInt(odataObject.ProductId, 10) : undefined;\n              \n        this.ProductDiscounts = undefined;\n        if (odataObject.ProductDiscounts) {\n        this.ProductDiscounts = [];\n        for (var i = 0; i < odataObject.ProductDiscounts.length; i++) {\n        if (odataObject.ProductDiscounts[i] != null) {\n        if (odataObject.ProductDiscounts[i]['@odata.type'] != null) {\n          var className: string = odataObject.ProductDiscounts[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ProductDiscounts[i] = new entityDictionary[className](odataObject.ProductDiscounts[i])\n          }\n        } else {\n            this.ProductDiscounts[i] = new PromotionClass(odataObject.ProductDiscounts[i]);\n        }\n                    } else {\n        this.ProductDiscounts[i] = undefined;\n        }\n        }\n        }\n      \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['ProductPromotionClass'] = ProductPromotionClass;\n    \n      /**\n      * ClientBookCustomerSearchCriteria entity class.\n      */\n      export class ClientBookCustomerSearchCriteriaClass implements Entities.ClientBookCustomerSearchCriteria {\n      public FilterByCurrentEmployee: boolean;\n      public Refinement: Entities.ClientBookRefinerValue[];\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.FilterByCurrentEmployee = \n                odataObject.FilterByCurrentEmployee;\n              \n        this.Refinement = undefined;\n        if (odataObject.Refinement) {\n        this.Refinement = [];\n        for (var i = 0; i < odataObject.Refinement.length; i++) {\n        if (odataObject.Refinement[i] != null) {\n        if (odataObject.Refinement[i]['@odata.type'] != null) {\n          var className: string = odataObject.Refinement[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.Refinement[i] = new entityDictionary[className](odataObject.Refinement[i])\n          }\n        } else {\n            this.Refinement[i] = new ClientBookRefinerValueClass(odataObject.Refinement[i]);\n        }\n                    } else {\n        this.Refinement[i] = undefined;\n        }\n        }\n        }\n      \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['ClientBookCustomerSearchCriteriaClass'] = ClientBookCustomerSearchCriteriaClass;\n    \n      /**\n      * ClientBookCustomer entity class.\n      */\n      export class ClientBookCustomerClass implements Entities.ClientBookCustomer {\n      public CustomerId: string;\n      public Name: string;\n      public Phone: string;\n      public Email: string;\n      public StaffId: string;\n      public ImageUris: Entities.MediaLocation[];\n      public Attributes: Entities.CustomerAttribute[];\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.CustomerId = \n                odataObject.CustomerId;\n              \n            this.Name = \n                odataObject.Name;\n              \n            this.Phone = \n                odataObject.Phone;\n              \n            this.Email = \n                odataObject.Email;\n              \n            this.StaffId = \n                odataObject.StaffId;\n              \n        this.ImageUris = undefined;\n        if (odataObject.ImageUris) {\n        this.ImageUris = [];\n        for (var i = 0; i < odataObject.ImageUris.length; i++) {\n        if (odataObject.ImageUris[i] != null) {\n        if (odataObject.ImageUris[i]['@odata.type'] != null) {\n          var className: string = odataObject.ImageUris[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ImageUris[i] = new entityDictionary[className](odataObject.ImageUris[i])\n          }\n        } else {\n            this.ImageUris[i] = new MediaLocationClass(odataObject.ImageUris[i]);\n        }\n                    } else {\n        this.ImageUris[i] = undefined;\n        }\n        }\n        }\n      \n        this.Attributes = undefined;\n        if (odataObject.Attributes) {\n        this.Attributes = [];\n        for (var i = 0; i < odataObject.Attributes.length; i++) {\n        if (odataObject.Attributes[i] != null) {\n        if (odataObject.Attributes[i]['@odata.type'] != null) {\n          var className: string = odataObject.Attributes[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.Attributes[i] = new entityDictionary[className](odataObject.Attributes[i])\n          }\n        } else {\n            this.Attributes[i] = new CustomerAttributeClass(odataObject.Attributes[i]);\n        }\n                    } else {\n        this.Attributes[i] = undefined;\n        }\n        }\n        }\n      \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['ClientBookCustomerClass'] = ClientBookCustomerClass;\n    \n      /**\n      * ClientBookChanges entity class.\n      */\n      export class ClientBookChangesClass implements Entities.ClientBookChanges {\n      public Changes: Entities.ClientBookChange[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n        this.Changes = undefined;\n        if (odataObject.Changes) {\n        this.Changes = [];\n        for (var i = 0; i < odataObject.Changes.length; i++) {\n        if (odataObject.Changes[i] != null) {\n        if (odataObject.Changes[i]['@odata.type'] != null) {\n          var className: string = odataObject.Changes[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.Changes[i] = new entityDictionary[className](odataObject.Changes[i])\n          }\n        } else {\n            this.Changes[i] = new ClientBookChangeClass(odataObject.Changes[i]);\n        }\n                    } else {\n        this.Changes[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['ClientBookChangesClass'] = ClientBookChangesClass;\n    \n      /**\n      * ChargeCode entity class.\n      */\n      export class ChargeCodeClass implements Entities.ChargeCode {\n      public Code: string;\n      public ModuleTypeValue: number;\n      public Description: string;\n      public ItemTaxGroupId: string;\n      public IsRefundable: boolean;\n      public IsShipping: boolean;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.Code = \n                odataObject.Code;\n              \n            this.ModuleTypeValue = \n                odataObject.ModuleTypeValue;\n              \n            this.Description = \n                odataObject.Description;\n              \n            this.ItemTaxGroupId = \n                odataObject.ItemTaxGroupId;\n              \n            this.IsRefundable = \n                odataObject.IsRefundable;\n              \n            this.IsShipping = \n                odataObject.IsShipping;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['ChargeCodeClass'] = ChargeCodeClass;\n    \n      /**\n      * PaymentMerchantInformation entity class.\n      */\n      export class PaymentMerchantInformationClass implements Entities.PaymentMerchantInformation {\n      public PaymentConnectorPropertiesXml: string;\n      public MerchantPropertiesHashValue: string;\n      public ServiceAccountId: string;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.PaymentConnectorPropertiesXml = \n                odataObject.PaymentConnectorPropertiesXml;\n              \n            this.MerchantPropertiesHashValue = \n                odataObject.MerchantPropertiesHashValue;\n              \n            this.ServiceAccountId = \n                odataObject.ServiceAccountId;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['PaymentMerchantInformationClass'] = PaymentMerchantInformationClass;\n    \n      /**\n      * StoreSafe entity class.\n      */\n      export class StoreSafeClass implements Entities.StoreSafe {\n      public SafeNumber: string;\n      public Name: string;\n      public StoreNumber: string;\n      public SafeBalance: number;\n      public LastUpdatedTime: Date;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.SafeNumber = \n                odataObject.SafeNumber;\n              \n            this.Name = \n                odataObject.Name;\n              \n            this.StoreNumber = \n                odataObject.StoreNumber;\n              \n            this.SafeBalance = \n                (odataObject.SafeBalance != null) ? parseFloat(odataObject.SafeBalance) : undefined;\n              \n            this.LastUpdatedTime = \n                (odataObject.LastUpdatedTime instanceof Date) ? odataObject.LastUpdatedTime\n                : (odataObject.LastUpdatedTime != null) ? jsonLightReadStringPropertyValue(odataObject.LastUpdatedTime, \"Edm.DateTimeOffset\", false) : undefined;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['StoreSafeClass'] = StoreSafeClass;\n    \n      /**\n      * InventoryDocumentReceiptSearchCriteria entity class.\n      */\n      export class InventoryDocumentReceiptSearchCriteriaClass implements Entities.InventoryDocumentReceiptSearchCriteria {\n      public SourceDocumentId: string;\n      public SourceDocumentTypeValue: number;\n      public WorkDocumentId: string;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.SourceDocumentId = \n                odataObject.SourceDocumentId;\n              \n            this.SourceDocumentTypeValue = \n                odataObject.SourceDocumentTypeValue;\n              \n            this.WorkDocumentId = \n                odataObject.WorkDocumentId;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['InventoryDocumentReceiptSearchCriteriaClass'] = InventoryDocumentReceiptSearchCriteriaClass;\n    \n      /**\n      * InventoryDocumentSourceDocumentLineCommitRecordSearchCriteria entity class.\n      */\n      export class InventoryDocumentSourceDocumentLineCommitRecordSearchCriteriaClass implements Entities.InventoryDocumentSourceDocumentLineCommitRecordSearchCriteria {\n      public SourceDocumentRecordId: number;\n      public SourceDocumentTypeValue: number;\n      public SourceDocumentLineRecordId: number;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.SourceDocumentRecordId = \n                (odataObject.SourceDocumentRecordId != null) ? parseInt(odataObject.SourceDocumentRecordId, 10) : undefined;\n              \n            this.SourceDocumentTypeValue = \n                odataObject.SourceDocumentTypeValue;\n              \n            this.SourceDocumentLineRecordId = \n                (odataObject.SourceDocumentLineRecordId != null) ? parseInt(odataObject.SourceDocumentLineRecordId, 10) : undefined;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['InventoryDocumentSourceDocumentLineCommitRecordSearchCriteriaClass'] = InventoryDocumentSourceDocumentLineCommitRecordSearchCriteriaClass;\n    \n      /**\n      * InventoryDocumentSourceDocumentLineCommitRecord entity class.\n      */\n      export class InventoryDocumentSourceDocumentLineCommitRecordClass implements Entities.InventoryDocumentSourceDocumentLineCommitRecord {\n      public WorkDocumentId: string;\n      public LineId: string;\n      public SourceDocumentRecordId: number;\n      public SourceDocumentTypeValue: number;\n      public SourceDocumentLineRecordId: number;\n      public StaffId: string;\n      public UpdateNowQuantity: number;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.WorkDocumentId = \n                odataObject.WorkDocumentId;\n              \n            this.LineId = \n                odataObject.LineId;\n              \n            this.SourceDocumentRecordId = \n                (odataObject.SourceDocumentRecordId != null) ? parseInt(odataObject.SourceDocumentRecordId, 10) : undefined;\n              \n            this.SourceDocumentTypeValue = \n                odataObject.SourceDocumentTypeValue;\n              \n            this.SourceDocumentLineRecordId = \n                (odataObject.SourceDocumentLineRecordId != null) ? parseInt(odataObject.SourceDocumentLineRecordId, 10) : undefined;\n              \n            this.StaffId = \n                odataObject.StaffId;\n              \n            this.UpdateNowQuantity = \n                (odataObject.UpdateNowQuantity != null) ? parseFloat(odataObject.UpdateNowQuantity) : undefined;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['InventoryDocumentSourceDocumentLineCommitRecordClass'] = InventoryDocumentSourceDocumentLineCommitRecordClass;\n    \n      /**\n      * CreateHardwareStationTokenResult entity class.\n      */\n      export class CreateHardwareStationTokenResultClass implements Entities.CreateHardwareStationTokenResult {\n      public HardwareStationToken: string;\n      public PairingKey: string;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.HardwareStationToken = \n                odataObject.HardwareStationToken;\n              \n            this.PairingKey = \n                odataObject.PairingKey;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['CreateHardwareStationTokenResultClass'] = CreateHardwareStationTokenResultClass;\n    \n      /**\n      * ValidateHardwareStationTokenResult entity class.\n      */\n      export class ValidateHardwareStationTokenResultClass implements Entities.ValidateHardwareStationTokenResult {\n      public PairingKey: string;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.PairingKey = \n                odataObject.PairingKey;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['ValidateHardwareStationTokenResultClass'] = ValidateHardwareStationTokenResultClass;\n    \n      /**\n      * MediaBlob entity class.\n      */\n      export class MediaBlobClass implements Entities.MediaBlob {\n      public MediaType: string;\n      public Content: string;\n      public IsDefault: boolean;\n      public AltText: string;\n      public PictureId: number;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.MediaType = \n                odataObject.MediaType;\n              \n            this.Content = \n                odataObject.Content;\n              \n            this.IsDefault = \n                odataObject.IsDefault;\n              \n            this.AltText = \n                odataObject.AltText;\n              \n            this.PictureId = \n                odataObject.PictureId;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['MediaBlobClass'] = MediaBlobClass;\n    \n      /**\n      * OnlineChannel entity class.\n      */\n      export class OnlineChannelClass implements Entities.OnlineChannel {\n      public OnlineStoreCustomerTypeValue: number;\n      public OnlineChannelName: string;\n      public CurrencyCode: string;\n      public OnlineStoreAzureB2CProfile: number;\n      public CountryRegions: Entities.CountryRegion[];\n      public EventNotificationProfileId: string;\n      public RecordId: number;\n      public OMOperatingUnitNumber: string;\n      public OrgUnitTypeValue: number;\n      public Name: string;\n      public DefaultCustomerAccount: string;\n      public CategoryHierarchyId: number;\n      public InventoryLocationId: string;\n      public ChannelProfile: Entities.ChannelProfile;\n      public ChannelProperties: Entities.ChannelProperty[];\n      public ChannelLanguages: Entities.ChannelLanguage[];\n      public Contacts: Entities.OrgUnitContact[];\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.OnlineStoreCustomerTypeValue = \n                odataObject.OnlineStoreCustomerTypeValue;\n              \n            this.OnlineChannelName = \n                odataObject.OnlineChannelName;\n              \n            this.CurrencyCode = \n                odataObject.CurrencyCode;\n              \n            this.OnlineStoreAzureB2CProfile = \n                (odataObject.OnlineStoreAzureB2CProfile != null) ? parseInt(odataObject.OnlineStoreAzureB2CProfile, 10) : undefined;\n              \n        this.CountryRegions = undefined;\n        if (odataObject.CountryRegions) {\n        this.CountryRegions = [];\n        for (var i = 0; i < odataObject.CountryRegions.length; i++) {\n        if (odataObject.CountryRegions[i] != null) {\n        if (odataObject.CountryRegions[i]['@odata.type'] != null) {\n          var className: string = odataObject.CountryRegions[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.CountryRegions[i] = new entityDictionary[className](odataObject.CountryRegions[i])\n          }\n        } else {\n            this.CountryRegions[i] = new CountryRegionClass(odataObject.CountryRegions[i]);\n        }\n                    } else {\n        this.CountryRegions[i] = undefined;\n        }\n        }\n        }\n      \n            this.EventNotificationProfileId = \n                odataObject.EventNotificationProfileId;\n              \n            this.RecordId = \n                (odataObject.RecordId != null) ? parseInt(odataObject.RecordId, 10) : undefined;\n              \n            this.OMOperatingUnitNumber = \n                odataObject.OMOperatingUnitNumber;\n              \n            this.OrgUnitTypeValue = \n                odataObject.OrgUnitTypeValue;\n              \n            this.Name = \n                odataObject.Name;\n              \n            this.DefaultCustomerAccount = \n                odataObject.DefaultCustomerAccount;\n              \n            this.CategoryHierarchyId = \n                (odataObject.CategoryHierarchyId != null) ? parseInt(odataObject.CategoryHierarchyId, 10) : undefined;\n              \n            this.InventoryLocationId = \n                odataObject.InventoryLocationId;\n              \n        if (odataObject.ChannelProfile == null) {\n            this.ChannelProfile = undefined;\n        } else if (odataObject.ChannelProfile['@odata.type'] == null) {\n            this.ChannelProfile = new ChannelProfileClass(odataObject.ChannelProfile);\n        } else {\n            var className: string = odataObject.ChannelProfile['@odata.type'];\n            className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n            if (entityDictionary[className]) {\n                this.ChannelProfile = new entityDictionary[className](odataObject.ChannelProfile)\n            }\n        }\n\n      \n        this.ChannelProperties = undefined;\n        if (odataObject.ChannelProperties) {\n        this.ChannelProperties = [];\n        for (var i = 0; i < odataObject.ChannelProperties.length; i++) {\n        if (odataObject.ChannelProperties[i] != null) {\n        if (odataObject.ChannelProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ChannelProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ChannelProperties[i] = new entityDictionary[className](odataObject.ChannelProperties[i])\n          }\n        } else {\n            this.ChannelProperties[i] = new ChannelPropertyClass(odataObject.ChannelProperties[i]);\n        }\n                    } else {\n        this.ChannelProperties[i] = undefined;\n        }\n        }\n        }\n      \n        this.ChannelLanguages = undefined;\n        if (odataObject.ChannelLanguages) {\n        this.ChannelLanguages = [];\n        for (var i = 0; i < odataObject.ChannelLanguages.length; i++) {\n        if (odataObject.ChannelLanguages[i] != null) {\n        if (odataObject.ChannelLanguages[i]['@odata.type'] != null) {\n          var className: string = odataObject.ChannelLanguages[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ChannelLanguages[i] = new entityDictionary[className](odataObject.ChannelLanguages[i])\n          }\n        } else {\n            this.ChannelLanguages[i] = new ChannelLanguageClass(odataObject.ChannelLanguages[i]);\n        }\n                    } else {\n        this.ChannelLanguages[i] = undefined;\n        }\n        }\n        }\n      \n        this.Contacts = undefined;\n        if (odataObject.Contacts) {\n        this.Contacts = [];\n        for (var i = 0; i < odataObject.Contacts.length; i++) {\n        if (odataObject.Contacts[i] != null) {\n        if (odataObject.Contacts[i]['@odata.type'] != null) {\n          var className: string = odataObject.Contacts[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.Contacts[i] = new entityDictionary[className](odataObject.Contacts[i])\n          }\n        } else {\n            this.Contacts[i] = new OrgUnitContactClass(odataObject.Contacts[i]);\n        }\n                    } else {\n        this.Contacts[i] = undefined;\n        }\n        }\n        }\n      \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['OnlineChannelClass'] = OnlineChannelClass;\n    \n      /**\n      * TerminalDataDownloadRequestInfo entity class.\n      */\n      export class TerminalDataDownloadRequestInfoClass implements Entities.TerminalDataDownloadRequestInfo {\n      public TerminalId: string;\n      public RequiresDataInitialization: boolean;\n      public HasBeenInitializedBefore: boolean;\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.TerminalId = \n                odataObject.TerminalId;\n              \n            this.RequiresDataInitialization = \n                odataObject.RequiresDataInitialization;\n              \n            this.HasBeenInitializedBefore = \n                odataObject.HasBeenInitializedBefore;\n              \n      }\n      }\n      entityDictionary['TerminalDataDownloadRequestInfoClass'] = TerminalDataDownloadRequestInfoClass;\n    \n      /**\n      * DataDownloadParameters entity class.\n      */\n      export class DataDownloadParametersClass implements Entities.DataDownloadParameters {\n      public DownloadInterval: number;\n      public DownloadSessions: Entities.DownloadSession[];\n      public FeatureControlList: Entities.RetailSharedConfigurationParameter[];\n      public DataStore: Entities.CDXDataStore;\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.DownloadInterval = \n                odataObject.DownloadInterval;\n              \n        this.DownloadSessions = undefined;\n        if (odataObject.DownloadSessions) {\n        this.DownloadSessions = [];\n        for (var i = 0; i < odataObject.DownloadSessions.length; i++) {\n        if (odataObject.DownloadSessions[i] != null) {\n        if (odataObject.DownloadSessions[i]['@odata.type'] != null) {\n          var className: string = odataObject.DownloadSessions[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.DownloadSessions[i] = new entityDictionary[className](odataObject.DownloadSessions[i])\n          }\n        } else {\n            this.DownloadSessions[i] = new DownloadSessionClass(odataObject.DownloadSessions[i]);\n        }\n                    } else {\n        this.DownloadSessions[i] = undefined;\n        }\n        }\n        }\n      \n        this.FeatureControlList = undefined;\n        if (odataObject.FeatureControlList) {\n        this.FeatureControlList = [];\n        for (var i = 0; i < odataObject.FeatureControlList.length; i++) {\n        if (odataObject.FeatureControlList[i] != null) {\n        if (odataObject.FeatureControlList[i]['@odata.type'] != null) {\n          var className: string = odataObject.FeatureControlList[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.FeatureControlList[i] = new entityDictionary[className](odataObject.FeatureControlList[i])\n          }\n        } else {\n            this.FeatureControlList[i] = new RetailSharedConfigurationParameterClass(odataObject.FeatureControlList[i]);\n        }\n                    } else {\n        this.FeatureControlList[i] = undefined;\n        }\n        }\n        }\n      \n        if (odataObject.DataStore == null) {\n            this.DataStore = undefined;\n        } else if (odataObject.DataStore['@odata.type'] == null) {\n            this.DataStore = new CDXDataStoreClass(odataObject.DataStore);\n        } else {\n            var className: string = odataObject.DataStore['@odata.type'];\n            className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n            if (entityDictionary[className]) {\n                this.DataStore = new entityDictionary[className](odataObject.DataStore)\n            }\n        }\n\n      \n      }\n      }\n      entityDictionary['DataDownloadParametersClass'] = DataDownloadParametersClass;\n    \n      /**\n      * TerminalDataUploadRequestInfo entity class.\n      */\n      export class TerminalDataUploadRequestInfoClass implements Entities.TerminalDataUploadRequestInfo {\n      public TerminalId: string;\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.TerminalId = \n                odataObject.TerminalId;\n              \n      }\n      }\n      entityDictionary['TerminalDataUploadRequestInfoClass'] = TerminalDataUploadRequestInfoClass;\n    \n      /**\n      * DataUploadParameters entity class.\n      */\n      export class DataUploadParametersClass implements Entities.DataUploadParameters {\n      public UploadInterval: number;\n      public UploadJobPackageRequests: Entities.UploadJobPackageRequest[];\n      public FeatureControlList: Entities.RetailSharedConfigurationParameter[];\n      public DataStore: Entities.CDXDataStore;\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.UploadInterval = \n                odataObject.UploadInterval;\n              \n        this.UploadJobPackageRequests = undefined;\n        if (odataObject.UploadJobPackageRequests) {\n        this.UploadJobPackageRequests = [];\n        for (var i = 0; i < odataObject.UploadJobPackageRequests.length; i++) {\n        if (odataObject.UploadJobPackageRequests[i] != null) {\n        if (odataObject.UploadJobPackageRequests[i]['@odata.type'] != null) {\n          var className: string = odataObject.UploadJobPackageRequests[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.UploadJobPackageRequests[i] = new entityDictionary[className](odataObject.UploadJobPackageRequests[i])\n          }\n        } else {\n            this.UploadJobPackageRequests[i] = new UploadJobPackageRequestClass(odataObject.UploadJobPackageRequests[i]);\n        }\n                    } else {\n        this.UploadJobPackageRequests[i] = undefined;\n        }\n        }\n        }\n      \n        this.FeatureControlList = undefined;\n        if (odataObject.FeatureControlList) {\n        this.FeatureControlList = [];\n        for (var i = 0; i < odataObject.FeatureControlList.length; i++) {\n        if (odataObject.FeatureControlList[i] != null) {\n        if (odataObject.FeatureControlList[i]['@odata.type'] != null) {\n          var className: string = odataObject.FeatureControlList[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.FeatureControlList[i] = new entityDictionary[className](odataObject.FeatureControlList[i])\n          }\n        } else {\n            this.FeatureControlList[i] = new RetailSharedConfigurationParameterClass(odataObject.FeatureControlList[i]);\n        }\n                    } else {\n        this.FeatureControlList[i] = undefined;\n        }\n        }\n        }\n      \n        if (odataObject.DataStore == null) {\n            this.DataStore = undefined;\n        } else if (odataObject.DataStore['@odata.type'] == null) {\n            this.DataStore = new CDXDataStoreClass(odataObject.DataStore);\n        } else {\n            var className: string = odataObject.DataStore['@odata.type'];\n            className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n            if (entityDictionary[className]) {\n                this.DataStore = new entityDictionary[className](odataObject.DataStore)\n            }\n        }\n\n      \n      }\n      }\n      entityDictionary['DataUploadParametersClass'] = DataUploadParametersClass;\n    \n      /**\n      * DownloadSession entity class.\n      */\n      export class DownloadSessionClass implements Entities.DownloadSession {\n      public Id: number;\n      public JobId: string;\n      public JobDescription: string;\n      public FileSize: number;\n      public RowsAffected: number;\n      public Checksum: string;\n      public DateDownloaded: string;\n      public DateRequested: string;\n      public DataStoreName: string;\n      public StatusValue: number;\n      public Message: string;\n      public DownloadLink: string;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.Id = \n                (odataObject.Id != null) ? parseInt(odataObject.Id, 10) : undefined;\n              \n            this.JobId = \n                odataObject.JobId;\n              \n            this.JobDescription = \n                odataObject.JobDescription;\n              \n            this.FileSize = \n                (odataObject.FileSize != null) ? parseInt(odataObject.FileSize, 10) : undefined;\n              \n            this.RowsAffected = \n                odataObject.RowsAffected;\n              \n            this.Checksum = \n                odataObject.Checksum;\n              \n            this.DateDownloaded = \n                odataObject.DateDownloaded;\n              \n            this.DateRequested = \n                odataObject.DateRequested;\n              \n            this.DataStoreName = \n                odataObject.DataStoreName;\n              \n            this.StatusValue = \n                odataObject.StatusValue;\n              \n            this.Message = \n                odataObject.Message;\n              \n            this.DownloadLink = \n                odataObject.DownloadLink;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['DownloadSessionClass'] = DownloadSessionClass;\n    \n      /**\n      * OfflineTerminalState entity class.\n      */\n      export class OfflineTerminalStateClass implements Entities.OfflineTerminalState {\n      public TerminalId: string;\n      public State: string;\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.TerminalId = \n                odataObject.TerminalId;\n              \n            this.State = \n                odataObject.State;\n              \n      }\n      }\n      entityDictionary['OfflineTerminalStateClass'] = OfflineTerminalStateClass;\n    \n      /**\n      * LoyaltyRewardPointActivity entity class.\n      */\n      export class LoyaltyRewardPointActivityClass implements Entities.LoyaltyRewardPointActivity {\n      public ActivityDate: Date;\n      public LoyaltyRewardPointTimelineEntryType: string;\n      public ExtensibleLoyaltyRewardPointActivityEntryTypeValue: number;\n      public LoyaltyPoints: number;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.ActivityDate = \n                (odataObject.ActivityDate instanceof Date) ? odataObject.ActivityDate\n                : (odataObject.ActivityDate != null) ? jsonLightReadStringPropertyValue(odataObject.ActivityDate, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.LoyaltyRewardPointTimelineEntryType = \n                odataObject.LoyaltyRewardPointTimelineEntryType;\n              \n            this.ExtensibleLoyaltyRewardPointActivityEntryTypeValue = \n                odataObject.ExtensibleLoyaltyRewardPointActivityEntryTypeValue;\n              \n            this.LoyaltyPoints = \n                (odataObject.LoyaltyPoints != null) ? parseFloat(odataObject.LoyaltyPoints) : undefined;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['LoyaltyRewardPointActivityClass'] = LoyaltyRewardPointActivityClass;\n    \n      /**\n      * CurrencyRequest entity class.\n      */\n      export class CurrencyRequestClass implements Entities.CurrencyRequest {\n      public AmountToConvert: number;\n      public CurrencyCode: string;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.AmountToConvert = \n                (odataObject.AmountToConvert != null) ? parseFloat(odataObject.AmountToConvert) : undefined;\n              \n            this.CurrencyCode = \n                odataObject.CurrencyCode;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['CurrencyRequestClass'] = CurrencyRequestClass;\n    \n      /**\n      * HardwareStationProfile entity class.\n      */\n      export class HardwareStationProfileClass implements Entities.HardwareStationProfile {\n      public RecordId: number;\n      public HardwareStationId: string;\n      public HardwareStationTypeValue: number;\n      public HardwareProfileId: string;\n      public HardwareStationName: string;\n      public HardwareStationDescription: string;\n      public HardwareStationUrl: string;\n      public HardwareStationHostName: string;\n      public HardwareStationEftTerminalId: string;\n      public HardwareConfigurations: Entities.HardwareConfigurations;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.RecordId = \n                (odataObject.RecordId != null) ? parseInt(odataObject.RecordId, 10) : undefined;\n              \n            this.HardwareStationId = \n                odataObject.HardwareStationId;\n              \n            this.HardwareStationTypeValue = \n                odataObject.HardwareStationTypeValue;\n              \n            this.HardwareProfileId = \n                odataObject.HardwareProfileId;\n              \n            this.HardwareStationName = \n                odataObject.HardwareStationName;\n              \n            this.HardwareStationDescription = \n                odataObject.HardwareStationDescription;\n              \n            this.HardwareStationUrl = \n                odataObject.HardwareStationUrl;\n              \n            this.HardwareStationHostName = \n                odataObject.HardwareStationHostName;\n              \n            this.HardwareStationEftTerminalId = \n                odataObject.HardwareStationEftTerminalId;\n              \n        if (odataObject.HardwareConfigurations == null) {\n            this.HardwareConfigurations = undefined;\n        } else if (odataObject.HardwareConfigurations['@odata.type'] == null) {\n            this.HardwareConfigurations = new HardwareConfigurationsClass(odataObject.HardwareConfigurations);\n        } else {\n            var className: string = odataObject.HardwareConfigurations['@odata.type'];\n            className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n            if (entityDictionary[className]) {\n                this.HardwareConfigurations = new entityDictionary[className](odataObject.HardwareConfigurations)\n            }\n        }\n\n      \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['HardwareStationProfileClass'] = HardwareStationProfileClass;\n    \n      /**\n      * LoyaltyCardSearchCriteria entity class.\n      */\n      export class LoyaltyCardSearchCriteriaClass implements Entities.LoyaltyCardSearchCriteria {\n      public ChannelId: number;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.ChannelId = \n                (odataObject.ChannelId != null) ? parseInt(odataObject.ChannelId, 10) : undefined;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['LoyaltyCardSearchCriteriaClass'] = LoyaltyCardSearchCriteriaClass;\n    \n      /**\n      * NameValuePair entity class.\n      */\n      export class NameValuePairClass implements Entities.NameValuePair {\n      public Name: string;\n      public Value: string;\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.Name = \n                odataObject.Name;\n              \n            this.Value = \n                odataObject.Value;\n              \n      }\n      }\n      entityDictionary['NameValuePairClass'] = NameValuePairClass;\n    \n      /**\n      * LinkToExistingCustomerResult entity class.\n      */\n      export class LinkToExistingCustomerResultClass implements Entities.LinkToExistingCustomerResult {\n      public EmailAddress: string;\n      public ExternalIdentityProvider: string;\n      public ExternalIdentityLinkRecordId: number;\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.EmailAddress = \n                odataObject.EmailAddress;\n              \n            this.ExternalIdentityProvider = \n                odataObject.ExternalIdentityProvider;\n              \n            this.ExternalIdentityLinkRecordId = \n                (odataObject.ExternalIdentityLinkRecordId != null) ? parseInt(odataObject.ExternalIdentityLinkRecordId, 10) : undefined;\n              \n      }\n      }\n      entityDictionary['LinkToExistingCustomerResultClass'] = LinkToExistingCustomerResultClass;\n    \n      /**\n      * OfflineSyncStatsLine entity class.\n      */\n      export class OfflineSyncStatsLineClass implements Entities.OfflineSyncStatsLine {\n      public IsUploadJob: boolean;\n      public JobDescription: string;\n      public LastSyncDateTime: Date;\n      public Status: string;\n      public FileSize: string;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.IsUploadJob = \n                odataObject.IsUploadJob;\n              \n            this.JobDescription = \n                odataObject.JobDescription;\n              \n            this.LastSyncDateTime = \n                (odataObject.LastSyncDateTime instanceof Date) ? odataObject.LastSyncDateTime\n                : (odataObject.LastSyncDateTime != null) ? jsonLightReadStringPropertyValue(odataObject.LastSyncDateTime, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.Status = \n                odataObject.Status;\n              \n            this.FileSize = \n                odataObject.FileSize;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['OfflineSyncStatsLineClass'] = OfflineSyncStatsLineClass;\n    \n      /**\n      * StorageAccessToken entity class.\n      */\n      export class StorageAccessTokenClass implements Entities.StorageAccessToken {\n      public Url: string;\n      public SasKey: string;\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.Url = \n                odataObject.Url;\n              \n            this.SasKey = \n                odataObject.SasKey;\n              \n      }\n      }\n      entityDictionary['StorageAccessTokenClass'] = StorageAccessTokenClass;\n    \n      /**\n      * TaskGuidesSearchResult entity class.\n      */\n      export class TaskGuidesSearchResultClass implements Entities.TaskGuidesSearchResult {\n      public Lines: Entities.Line[];\n      public FrameworkPublisherName: string;\n      public FrameworkName: string;\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n        this.Lines = undefined;\n        if (odataObject.Lines) {\n        this.Lines = [];\n        for (var i = 0; i < odataObject.Lines.length; i++) {\n        if (odataObject.Lines[i] != null) {\n        if (odataObject.Lines[i]['@odata.type'] != null) {\n          var className: string = odataObject.Lines[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.Lines[i] = new entityDictionary[className](odataObject.Lines[i])\n          }\n        } else {\n            this.Lines[i] = new LineClass(odataObject.Lines[i]);\n        }\n                    } else {\n        this.Lines[i] = undefined;\n        }\n        }\n        }\n      \n            this.FrameworkPublisherName = \n                odataObject.FrameworkPublisherName;\n              \n            this.FrameworkName = \n                odataObject.FrameworkName;\n              \n      }\n      }\n      entityDictionary['TaskGuidesSearchResultClass'] = TaskGuidesSearchResultClass;\n    \n      /**\n      * AuditEvent entity class.\n      */\n      export class AuditEventClass implements Entities.AuditEvent {\n      public EventId: number;\n      public EventIdString: string;\n      public Channel: number;\n      public Store: string;\n      public Terminal: string;\n      public UploadType: string;\n      public EventType: string;\n      public EventDateTime: Date;\n      public DurationInMilliseconds: number;\n      public Source: string;\n      public EventMessage: string;\n      public LogLevel: string;\n      public Staff: string;\n      public ShiftId: number;\n      public ClosedShiftId: number;\n      public ReferenceId: number;\n      public RefChannel: number;\n      public RefStore: string;\n      public RefTerminal: string;\n      public RefTransactionId: string;\n      public AuditEventTypeValue: number;\n      public FiscalTransactions: Entities.AuditEventFiscalTransaction[];\n      public FiscalRegistrationLines: Entities.AuditEventFiscalRegistrationLine[];\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.EventId = \n                (odataObject.EventId != null) ? parseInt(odataObject.EventId, 10) : undefined;\n              \n            this.EventIdString = \n                odataObject.EventIdString;\n              \n            this.Channel = \n                (odataObject.Channel != null) ? parseInt(odataObject.Channel, 10) : undefined;\n              \n            this.Store = \n                odataObject.Store;\n              \n            this.Terminal = \n                odataObject.Terminal;\n              \n            this.UploadType = \n                odataObject.UploadType;\n              \n            this.EventType = \n                odataObject.EventType;\n              \n            this.EventDateTime = \n                (odataObject.EventDateTime instanceof Date) ? odataObject.EventDateTime\n                : (odataObject.EventDateTime != null) ? jsonLightReadStringPropertyValue(odataObject.EventDateTime, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.DurationInMilliseconds = \n                odataObject.DurationInMilliseconds;\n              \n            this.Source = \n                odataObject.Source;\n              \n            this.EventMessage = \n                odataObject.EventMessage;\n              \n            this.LogLevel = \n                odataObject.LogLevel;\n              \n            this.Staff = \n                odataObject.Staff;\n              \n            this.ShiftId = \n                (odataObject.ShiftId != null) ? parseInt(odataObject.ShiftId, 10) : undefined;\n              \n            this.ClosedShiftId = \n                (odataObject.ClosedShiftId != null) ? parseInt(odataObject.ClosedShiftId, 10) : undefined;\n              \n            this.ReferenceId = \n                (odataObject.ReferenceId != null) ? parseInt(odataObject.ReferenceId, 10) : undefined;\n              \n            this.RefChannel = \n                (odataObject.RefChannel != null) ? parseInt(odataObject.RefChannel, 10) : undefined;\n              \n            this.RefStore = \n                odataObject.RefStore;\n              \n            this.RefTerminal = \n                odataObject.RefTerminal;\n              \n            this.RefTransactionId = \n                odataObject.RefTransactionId;\n              \n            this.AuditEventTypeValue = \n                odataObject.AuditEventTypeValue;\n              \n        this.FiscalTransactions = undefined;\n        if (odataObject.FiscalTransactions) {\n        this.FiscalTransactions = [];\n        for (var i = 0; i < odataObject.FiscalTransactions.length; i++) {\n        if (odataObject.FiscalTransactions[i] != null) {\n        if (odataObject.FiscalTransactions[i]['@odata.type'] != null) {\n          var className: string = odataObject.FiscalTransactions[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.FiscalTransactions[i] = new entityDictionary[className](odataObject.FiscalTransactions[i])\n          }\n        } else {\n            this.FiscalTransactions[i] = new AuditEventFiscalTransactionClass(odataObject.FiscalTransactions[i]);\n        }\n                    } else {\n        this.FiscalTransactions[i] = undefined;\n        }\n        }\n        }\n      \n        this.FiscalRegistrationLines = undefined;\n        if (odataObject.FiscalRegistrationLines) {\n        this.FiscalRegistrationLines = [];\n        for (var i = 0; i < odataObject.FiscalRegistrationLines.length; i++) {\n        if (odataObject.FiscalRegistrationLines[i] != null) {\n        if (odataObject.FiscalRegistrationLines[i]['@odata.type'] != null) {\n          var className: string = odataObject.FiscalRegistrationLines[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.FiscalRegistrationLines[i] = new entityDictionary[className](odataObject.FiscalRegistrationLines[i])\n          }\n        } else {\n            this.FiscalRegistrationLines[i] = new AuditEventFiscalRegistrationLineClass(odataObject.FiscalRegistrationLines[i]);\n        }\n                    } else {\n        this.FiscalRegistrationLines[i] = undefined;\n        }\n        }\n        }\n      \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['AuditEventClass'] = AuditEventClass;\n    \n      /**\n      * ItemAvailability entity class.\n      */\n      export class ItemAvailabilityClass implements Entities.ItemAvailability {\n      public ItemId: string;\n      public VariantInventoryDimensionId: string;\n      public InventoryLocationId: string;\n      public ProductId: number;\n      public AvailableQuantity: number;\n      public OrderedSum: number;\n      public PhysicalReserved: number;\n      public UnitOfMeasure: string;\n      public InventoryUnitOfMeasure: string;\n      public InventoryUnitOfMeasureDescription: string;\n      public ProductDimensions: Entities.ProductDimension[];\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.ItemId = \n                odataObject.ItemId;\n              \n            this.VariantInventoryDimensionId = \n                odataObject.VariantInventoryDimensionId;\n              \n            this.InventoryLocationId = \n                odataObject.InventoryLocationId;\n              \n            this.ProductId = \n                (odataObject.ProductId != null) ? parseInt(odataObject.ProductId, 10) : undefined;\n              \n            this.AvailableQuantity = \n                (odataObject.AvailableQuantity != null) ? parseFloat(odataObject.AvailableQuantity) : undefined;\n              \n            this.OrderedSum = \n                (odataObject.OrderedSum != null) ? parseFloat(odataObject.OrderedSum) : undefined;\n              \n            this.PhysicalReserved = \n                (odataObject.PhysicalReserved != null) ? parseFloat(odataObject.PhysicalReserved) : undefined;\n              \n            this.UnitOfMeasure = \n                odataObject.UnitOfMeasure;\n              \n            this.InventoryUnitOfMeasure = \n                odataObject.InventoryUnitOfMeasure;\n              \n            this.InventoryUnitOfMeasureDescription = \n                odataObject.InventoryUnitOfMeasureDescription;\n              \n        this.ProductDimensions = undefined;\n        if (odataObject.ProductDimensions) {\n        this.ProductDimensions = [];\n        for (var i = 0; i < odataObject.ProductDimensions.length; i++) {\n        if (odataObject.ProductDimensions[i] != null) {\n        if (odataObject.ProductDimensions[i]['@odata.type'] != null) {\n          var className: string = odataObject.ProductDimensions[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ProductDimensions[i] = new entityDictionary[className](odataObject.ProductDimensions[i])\n          }\n        } else {\n            this.ProductDimensions[i] = new ProductDimensionClass(odataObject.ProductDimensions[i]);\n        }\n                    } else {\n        this.ProductDimensions[i] = undefined;\n        }\n        }\n        }\n      \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['ItemAvailabilityClass'] = ItemAvailabilityClass;\n    \n      /**\n      * InventoryAvailableToPromise entity class.\n      */\n      export class InventoryAvailableToPromiseClass\n        extends ItemAvailabilityClass\n       implements Entities.InventoryAvailableToPromise {\n      public Date: string;\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      super(odataObject);odataObject = odataObject || {};\n            this.Date = \n                odataObject.Date;\n              \n        this[\"@odata.type\"] = \"#Microsoft.Dynamics.Commerce.Runtime.DataModel.InventoryAvailableToPromise\";\n      \n      }\n      }\n      entityDictionary['InventoryAvailableToPromiseClass'] = InventoryAvailableToPromiseClass;\n    \n      /**\n      * NotificationItem entity class.\n      */\n      export class NotificationItemClass implements Entities.NotificationItem {\n      public Action: number;\n      public ActionName: string;\n      public NotificationDetails: Entities.NotificationDetail[];\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.Action = \n                odataObject.Action;\n              \n            this.ActionName = \n                odataObject.ActionName;\n              \n        this.NotificationDetails = undefined;\n        if (odataObject.NotificationDetails) {\n        this.NotificationDetails = [];\n        for (var i = 0; i < odataObject.NotificationDetails.length; i++) {\n        if (odataObject.NotificationDetails[i] != null) {\n        if (odataObject.NotificationDetails[i]['@odata.type'] != null) {\n          var className: string = odataObject.NotificationDetails[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.NotificationDetails[i] = new entityDictionary[className](odataObject.NotificationDetails[i])\n          }\n        } else {\n            this.NotificationDetails[i] = new NotificationDetailClass(odataObject.NotificationDetails[i]);\n        }\n                    } else {\n        this.NotificationDetails[i] = undefined;\n        }\n        }\n        }\n      \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['NotificationItemClass'] = NotificationItemClass;\n    \n      /**\n      * FiscalIntegrationDocumentRetrievalCriteria entity class.\n      */\n      export class FiscalIntegrationDocumentRetrievalCriteriaClass implements Entities.FiscalIntegrationDocumentRetrievalCriteria {\n      public TransactionId: string;\n      public IsRemoteTransaction: boolean;\n      public QueryBySalesId: boolean;\n      public FiscalRegistrationEventTypeValue: number;\n      public ShiftId: number;\n      public ShiftTerminalId: string;\n      public DocumentContext: Entities.FiscalIntegrationDocumentContext;\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.TransactionId = \n                odataObject.TransactionId;\n              \n            this.IsRemoteTransaction = \n                odataObject.IsRemoteTransaction;\n              \n            this.QueryBySalesId = \n                odataObject.QueryBySalesId;\n              \n            this.FiscalRegistrationEventTypeValue = \n                odataObject.FiscalRegistrationEventTypeValue;\n              \n            this.ShiftId = \n                (odataObject.ShiftId != null) ? parseInt(odataObject.ShiftId, 10) : undefined;\n              \n            this.ShiftTerminalId = \n                odataObject.ShiftTerminalId;\n              \n        if (odataObject.DocumentContext == null) {\n            this.DocumentContext = undefined;\n        } else if (odataObject.DocumentContext['@odata.type'] == null) {\n            this.DocumentContext = new FiscalIntegrationDocumentContextClass(odataObject.DocumentContext);\n        } else {\n            var className: string = odataObject.DocumentContext['@odata.type'];\n            className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n            if (entityDictionary[className]) {\n                this.DocumentContext = new entityDictionary[className](odataObject.DocumentContext)\n            }\n        }\n\n      \n      }\n      }\n      entityDictionary['FiscalIntegrationDocumentRetrievalCriteriaClass'] = FiscalIntegrationDocumentRetrievalCriteriaClass;\n    \n      /**\n      * FiscalIntegrationDocument entity class.\n      */\n      export class FiscalIntegrationDocumentClass implements Entities.FiscalIntegrationDocument {\n      public Document: string;\n      public DocumentGenerationResultTypeValue: number;\n      public FiscalConnectorTechnicalProfile: Entities.FiscalIntegrationTechnicalProfile;\n      public DocumentAdjustment: Entities.FiscalIntegrationDocumentAdjustment;\n      public SequentialSignatureDataContext: Entities.FiscalIntegrationSignatureDataContext;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.Document = \n                odataObject.Document;\n              \n            this.DocumentGenerationResultTypeValue = \n                odataObject.DocumentGenerationResultTypeValue;\n              \n        if (odataObject.FiscalConnectorTechnicalProfile == null) {\n            this.FiscalConnectorTechnicalProfile = undefined;\n        } else if (odataObject.FiscalConnectorTechnicalProfile['@odata.type'] == null) {\n            this.FiscalConnectorTechnicalProfile = new FiscalIntegrationTechnicalProfileClass(odataObject.FiscalConnectorTechnicalProfile);\n        } else {\n            var className: string = odataObject.FiscalConnectorTechnicalProfile['@odata.type'];\n            className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n            if (entityDictionary[className]) {\n                this.FiscalConnectorTechnicalProfile = new entityDictionary[className](odataObject.FiscalConnectorTechnicalProfile)\n            }\n        }\n\n      \n        if (odataObject.DocumentAdjustment == null) {\n            this.DocumentAdjustment = undefined;\n        } else if (odataObject.DocumentAdjustment['@odata.type'] == null) {\n            this.DocumentAdjustment = new FiscalIntegrationDocumentAdjustmentClass(odataObject.DocumentAdjustment);\n        } else {\n            var className: string = odataObject.DocumentAdjustment['@odata.type'];\n            className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n            if (entityDictionary[className]) {\n                this.DocumentAdjustment = new entityDictionary[className](odataObject.DocumentAdjustment)\n            }\n        }\n\n      \n        if (odataObject.SequentialSignatureDataContext == null) {\n            this.SequentialSignatureDataContext = undefined;\n        } else if (odataObject.SequentialSignatureDataContext['@odata.type'] == null) {\n            this.SequentialSignatureDataContext = new FiscalIntegrationSignatureDataContextClass(odataObject.SequentialSignatureDataContext);\n        } else {\n            var className: string = odataObject.SequentialSignatureDataContext['@odata.type'];\n            className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n            if (entityDictionary[className]) {\n                this.SequentialSignatureDataContext = new entityDictionary[className](odataObject.SequentialSignatureDataContext)\n            }\n        }\n\n      \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['FiscalIntegrationDocumentClass'] = FiscalIntegrationDocumentClass;\n    \n      /**\n      * FiscalIntegrationRegistrationResult entity class.\n      */\n      export class FiscalIntegrationRegistrationResultClass implements Entities.FiscalIntegrationRegistrationResult {\n      public TransactionID: string;\n      public AuditEventId: string;\n      public Response: string;\n      public SubmittedDocument: string;\n      public RegisterInfo: string;\n      public RegistrationStatusValue: number;\n      public FiscalRegistrationEventTypeValue: number;\n      public DocumentAdjustment: Entities.FiscalIntegrationDocumentAdjustment;\n      public ReasonCodeLines: Entities.ReasonCodeLine[];\n      public SequentialSignatureData: Entities.FiscalIntegrationSequentialSignatureData;\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.TransactionID = \n                odataObject.TransactionID;\n              \n            this.AuditEventId = \n                odataObject.AuditEventId;\n              \n            this.Response = \n                odataObject.Response;\n              \n            this.SubmittedDocument = \n                odataObject.SubmittedDocument;\n              \n            this.RegisterInfo = \n                odataObject.RegisterInfo;\n              \n            this.RegistrationStatusValue = \n                odataObject.RegistrationStatusValue;\n              \n            this.FiscalRegistrationEventTypeValue = \n                odataObject.FiscalRegistrationEventTypeValue;\n              \n        if (odataObject.DocumentAdjustment == null) {\n            this.DocumentAdjustment = undefined;\n        } else if (odataObject.DocumentAdjustment['@odata.type'] == null) {\n            this.DocumentAdjustment = new FiscalIntegrationDocumentAdjustmentClass(odataObject.DocumentAdjustment);\n        } else {\n            var className: string = odataObject.DocumentAdjustment['@odata.type'];\n            className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n            if (entityDictionary[className]) {\n                this.DocumentAdjustment = new entityDictionary[className](odataObject.DocumentAdjustment)\n            }\n        }\n\n      \n        this.ReasonCodeLines = undefined;\n        if (odataObject.ReasonCodeLines) {\n        this.ReasonCodeLines = [];\n        for (var i = 0; i < odataObject.ReasonCodeLines.length; i++) {\n        if (odataObject.ReasonCodeLines[i] != null) {\n        if (odataObject.ReasonCodeLines[i]['@odata.type'] != null) {\n          var className: string = odataObject.ReasonCodeLines[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ReasonCodeLines[i] = new entityDictionary[className](odataObject.ReasonCodeLines[i])\n          }\n        } else {\n            this.ReasonCodeLines[i] = new ReasonCodeLineClass(odataObject.ReasonCodeLines[i]);\n        }\n                    } else {\n        this.ReasonCodeLines[i] = undefined;\n        }\n        }\n        }\n      \n        if (odataObject.SequentialSignatureData == null) {\n            this.SequentialSignatureData = undefined;\n        } else if (odataObject.SequentialSignatureData['@odata.type'] == null) {\n            this.SequentialSignatureData = new FiscalIntegrationSequentialSignatureDataClass(odataObject.SequentialSignatureData);\n        } else {\n            var className: string = odataObject.SequentialSignatureData['@odata.type'];\n            className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n            if (entityDictionary[className]) {\n                this.SequentialSignatureData = new entityDictionary[className](odataObject.SequentialSignatureData)\n            }\n        }\n\n      \n      }\n      }\n      entityDictionary['FiscalIntegrationRegistrationResultClass'] = FiscalIntegrationRegistrationResultClass;\n    \n      /**\n      * FiscalIntegrationRegistrationProcess entity class.\n      */\n      export class FiscalIntegrationRegistrationProcessClass implements Entities.FiscalIntegrationRegistrationProcess {\n      public RecordId: number;\n      public RegistrationProcessId: string;\n      public Description: string;\n      public ModeValue: number;\n      public RegistrationProcessLines: Entities.FiscalIntegrationRegistrationProcessLine[];\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.RecordId = \n                (odataObject.RecordId != null) ? parseInt(odataObject.RecordId, 10) : undefined;\n              \n            this.RegistrationProcessId = \n                odataObject.RegistrationProcessId;\n              \n            this.Description = \n                odataObject.Description;\n              \n            this.ModeValue = \n                odataObject.ModeValue;\n              \n        this.RegistrationProcessLines = undefined;\n        if (odataObject.RegistrationProcessLines) {\n        this.RegistrationProcessLines = [];\n        for (var i = 0; i < odataObject.RegistrationProcessLines.length; i++) {\n        if (odataObject.RegistrationProcessLines[i] != null) {\n        if (odataObject.RegistrationProcessLines[i]['@odata.type'] != null) {\n          var className: string = odataObject.RegistrationProcessLines[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.RegistrationProcessLines[i] = new entityDictionary[className](odataObject.RegistrationProcessLines[i])\n          }\n        } else {\n            this.RegistrationProcessLines[i] = new FiscalIntegrationRegistrationProcessLineClass(odataObject.RegistrationProcessLines[i]);\n        }\n                    } else {\n        this.RegistrationProcessLines[i] = undefined;\n        }\n        }\n        }\n      \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['FiscalIntegrationRegistrationProcessClass'] = FiscalIntegrationRegistrationProcessClass;\n    \n      /**\n      * FiscalIntegrationSupportedEvents entity class.\n      */\n      export class FiscalIntegrationSupportedEventsClass implements Entities.FiscalIntegrationSupportedEvents {\n      public FunctionalityProfileGroupId: string;\n      public SupportedFiscalEventTypes: number[];\n      public SupportedNonFiscalEventTypes: number[];\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.FunctionalityProfileGroupId = \n                odataObject.FunctionalityProfileGroupId;\n              \n        this.SupportedFiscalEventTypes = undefined;\n        if (odataObject.SupportedFiscalEventTypes) {\n        this.SupportedFiscalEventTypes = [];\n        for (var i = 0; i < odataObject.SupportedFiscalEventTypes.length; i++) {\n        if (odataObject.SupportedFiscalEventTypes[i] != null) {\n            this.SupportedFiscalEventTypes[i] = \n                odataObject.SupportedFiscalEventTypes[i];\n                            } else {\n        this.SupportedFiscalEventTypes[i] = undefined;\n        }\n        }\n        }\n      \n        this.SupportedNonFiscalEventTypes = undefined;\n        if (odataObject.SupportedNonFiscalEventTypes) {\n        this.SupportedNonFiscalEventTypes = [];\n        for (var i = 0; i < odataObject.SupportedNonFiscalEventTypes.length; i++) {\n        if (odataObject.SupportedNonFiscalEventTypes[i] != null) {\n            this.SupportedNonFiscalEventTypes[i] = \n                odataObject.SupportedNonFiscalEventTypes[i];\n                            } else {\n        this.SupportedNonFiscalEventTypes[i] = undefined;\n        }\n        }\n        }\n      \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['FiscalIntegrationSupportedEventsClass'] = FiscalIntegrationSupportedEventsClass;\n    \n      /**\n      * FiscalIntegrationTechnicalProfile entity class.\n      */\n      export class FiscalIntegrationTechnicalProfileClass implements Entities.FiscalIntegrationTechnicalProfile {\n      public ProfileId: string;\n      public Description: string;\n      public ConnectorName: string;\n      public ConnectorTypeValue: number;\n      public ConnectorLocationValue: number;\n      public TechnicalProfile: string;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.ProfileId = \n                odataObject.ProfileId;\n              \n            this.Description = \n                odataObject.Description;\n              \n            this.ConnectorName = \n                odataObject.ConnectorName;\n              \n            this.ConnectorTypeValue = \n                odataObject.ConnectorTypeValue;\n              \n            this.ConnectorLocationValue = \n                odataObject.ConnectorLocationValue;\n              \n            this.TechnicalProfile = \n                odataObject.TechnicalProfile;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['FiscalIntegrationTechnicalProfileClass'] = FiscalIntegrationTechnicalProfileClass;\n    \n      /**\n      * FiscalIntegrationFiscalRegistrationProcessSummary entity class.\n      */\n      export class FiscalIntegrationFiscalRegistrationProcessSummaryClass implements Entities.FiscalIntegrationFiscalRegistrationProcessSummary {\n      public RegistrationProcessId: string;\n      public FiscalRegistrationProcessSummaryLines: Entities.FiscalIntegrationFiscalRegistrationProcessSummaryLine[];\n      public ErrorCode: number;\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.RegistrationProcessId = \n                odataObject.RegistrationProcessId;\n              \n        this.FiscalRegistrationProcessSummaryLines = undefined;\n        if (odataObject.FiscalRegistrationProcessSummaryLines) {\n        this.FiscalRegistrationProcessSummaryLines = [];\n        for (var i = 0; i < odataObject.FiscalRegistrationProcessSummaryLines.length; i++) {\n        if (odataObject.FiscalRegistrationProcessSummaryLines[i] != null) {\n        if (odataObject.FiscalRegistrationProcessSummaryLines[i]['@odata.type'] != null) {\n          var className: string = odataObject.FiscalRegistrationProcessSummaryLines[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.FiscalRegistrationProcessSummaryLines[i] = new entityDictionary[className](odataObject.FiscalRegistrationProcessSummaryLines[i])\n          }\n        } else {\n            this.FiscalRegistrationProcessSummaryLines[i] = new FiscalIntegrationFiscalRegistrationProcessSummaryLineClass(odataObject.FiscalRegistrationProcessSummaryLines[i]);\n        }\n                    } else {\n        this.FiscalRegistrationProcessSummaryLines[i] = undefined;\n        }\n        }\n        }\n      \n            this.ErrorCode = \n                odataObject.ErrorCode;\n              \n      }\n      }\n      entityDictionary['FiscalIntegrationFiscalRegistrationProcessSummaryClass'] = FiscalIntegrationFiscalRegistrationProcessSummaryClass;\n    \n      /**\n      * FiscalIntegrationTechnicalProfileSearchCriteria entity class.\n      */\n      export class FiscalIntegrationTechnicalProfileSearchCriteriaClass implements Entities.FiscalIntegrationTechnicalProfileSearchCriteria {\n      public ExcludeOptionalProcessLines: boolean;\n      public FunctionalityProfileGroupIds: string[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.ExcludeOptionalProcessLines = \n                odataObject.ExcludeOptionalProcessLines;\n              \n        this.FunctionalityProfileGroupIds = undefined;\n        if (odataObject.FunctionalityProfileGroupIds) {\n        this.FunctionalityProfileGroupIds = [];\n        for (var i = 0; i < odataObject.FunctionalityProfileGroupIds.length; i++) {\n        if (odataObject.FunctionalityProfileGroupIds[i] != null) {\n            this.FunctionalityProfileGroupIds[i] = \n                odataObject.FunctionalityProfileGroupIds[i];\n                            } else {\n        this.FunctionalityProfileGroupIds[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['FiscalIntegrationTechnicalProfileSearchCriteriaClass'] = FiscalIntegrationTechnicalProfileSearchCriteriaClass;\n    \n      /**\n      * FiscalIntegrationServiceInfo entity class.\n      */\n      export class FiscalIntegrationServiceInfoClass implements Entities.FiscalIntegrationServiceInfo {\n      public ServiceName: string;\n      public ServiceProperties: string;\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.ServiceName = \n                odataObject.ServiceName;\n              \n            this.ServiceProperties = \n                odataObject.ServiceProperties;\n              \n      }\n      }\n      entityDictionary['FiscalIntegrationServiceInfoClass'] = FiscalIntegrationServiceInfoClass;\n    \n      /**\n      * FiscalIntegrationServiceStatus entity class.\n      */\n      export class FiscalIntegrationServiceStatusClass implements Entities.FiscalIntegrationServiceStatus {\n      public IsReady: boolean;\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.IsReady = \n                odataObject.IsReady;\n              \n      }\n      }\n      entityDictionary['FiscalIntegrationServiceStatusClass'] = FiscalIntegrationServiceStatusClass;\n    \n      /**\n      * FiscalIntegrationServiceCommunicationResult entity class.\n      */\n      export class FiscalIntegrationServiceCommunicationResultClass implements Entities.FiscalIntegrationServiceCommunicationResult {\n      public Response: string;\n      public CommunicationResultTypeValue: number;\n      public FailureDetails: Entities.FiscalIntegrationServiceFailureDetails;\n      public FiscalIntegrationServiceInfo: string;\n      public UserNotificationMessage: string;\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.Response = \n                odataObject.Response;\n              \n            this.CommunicationResultTypeValue = \n                odataObject.CommunicationResultTypeValue;\n              \n        if (odataObject.FailureDetails == null) {\n            this.FailureDetails = undefined;\n        } else if (odataObject.FailureDetails['@odata.type'] == null) {\n            this.FailureDetails = new FiscalIntegrationServiceFailureDetailsClass(odataObject.FailureDetails);\n        } else {\n            var className: string = odataObject.FailureDetails['@odata.type'];\n            className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n            if (entityDictionary[className]) {\n                this.FailureDetails = new entityDictionary[className](odataObject.FailureDetails)\n            }\n        }\n\n      \n            this.FiscalIntegrationServiceInfo = \n                odataObject.FiscalIntegrationServiceInfo;\n              \n            this.UserNotificationMessage = \n                odataObject.UserNotificationMessage;\n              \n      }\n      }\n      entityDictionary['FiscalIntegrationServiceCommunicationResultClass'] = FiscalIntegrationServiceCommunicationResultClass;\n    \n      /**\n      * FiscalIntegrationSequentialSignatureData entity class.\n      */\n      export class FiscalIntegrationSequentialSignatureDataClass implements Entities.FiscalIntegrationSequentialSignatureData {\n      public LastRegisterResponse: string;\n      public SequenceKey: string;\n      public IsOffline: boolean;\n      public SequentialNumber: number;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.LastRegisterResponse = \n                odataObject.LastRegisterResponse;\n              \n            this.SequenceKey = \n                odataObject.SequenceKey;\n              \n            this.IsOffline = \n                odataObject.IsOffline;\n              \n            this.SequentialNumber = \n                (odataObject.SequentialNumber != null) ? parseInt(odataObject.SequentialNumber, 10) : undefined;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['FiscalIntegrationSequentialSignatureDataClass'] = FiscalIntegrationSequentialSignatureDataClass;\n    \n      /**\n      * DiscountsSearchCriteria entity class.\n      */\n      export class DiscountsSearchCriteriaClass implements Entities.DiscountsSearchCriteria {\n      public ChannelId: number;\n      public Keyword: string;\n      public IsDiscountCodeRequired: boolean;\n      public StartDate: Date;\n      public EndDate: Date;\n      public IncludeDisabledDiscount: boolean;\n      public ExcludeTenderDiscount: boolean;\n      public DiscountOfferTypeValue: number;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.ChannelId = \n                (odataObject.ChannelId != null) ? parseInt(odataObject.ChannelId, 10) : undefined;\n              \n            this.Keyword = \n                odataObject.Keyword;\n              \n            this.IsDiscountCodeRequired = \n                odataObject.IsDiscountCodeRequired;\n              \n            this.StartDate = \n                (odataObject.StartDate instanceof Date) ? odataObject.StartDate\n                : (odataObject.StartDate != null) ? jsonLightReadStringPropertyValue(odataObject.StartDate, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.EndDate = \n                (odataObject.EndDate instanceof Date) ? odataObject.EndDate\n                : (odataObject.EndDate != null) ? jsonLightReadStringPropertyValue(odataObject.EndDate, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.IncludeDisabledDiscount = \n                odataObject.IncludeDisabledDiscount;\n              \n            this.ExcludeTenderDiscount = \n                odataObject.ExcludeTenderDiscount;\n              \n            this.DiscountOfferTypeValue = \n                odataObject.DiscountOfferTypeValue;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['DiscountsSearchCriteriaClass'] = DiscountsSearchCriteriaClass;\n    \n      /**\n      * Promotion entity class.\n      */\n      export class PromotionClass implements Entities.Promotion {\n      public OfferId: string;\n      public OfferName: string;\n      public PeriodicDiscountTypeValue: number;\n      public IsDiscountCodeRequired: boolean;\n      public ValidationPeriodId: string;\n      public AdditionalRestrictions: string;\n      public Description: string;\n      public ValidFromDate: Date;\n      public ValidToDate: Date;\n      public ValidationPeriod: Entities.ValidationPeriod;\n      public CouponCodes: string[];\n      public DateValidationTypeValue: number;\n      public AreCouponsActiveOnSameDate: boolean;\n      public AreCouponsExpiredOnSameDate: boolean;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.OfferId = \n                odataObject.OfferId;\n              \n            this.OfferName = \n                odataObject.OfferName;\n              \n            this.PeriodicDiscountTypeValue = \n                odataObject.PeriodicDiscountTypeValue;\n              \n            this.IsDiscountCodeRequired = \n                odataObject.IsDiscountCodeRequired;\n              \n            this.ValidationPeriodId = \n                odataObject.ValidationPeriodId;\n              \n            this.AdditionalRestrictions = \n                odataObject.AdditionalRestrictions;\n              \n            this.Description = \n                odataObject.Description;\n              \n            this.ValidFromDate = \n                (odataObject.ValidFromDate instanceof Date) ? odataObject.ValidFromDate\n                : (odataObject.ValidFromDate != null) ? jsonLightReadStringPropertyValue(odataObject.ValidFromDate, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.ValidToDate = \n                (odataObject.ValidToDate instanceof Date) ? odataObject.ValidToDate\n                : (odataObject.ValidToDate != null) ? jsonLightReadStringPropertyValue(odataObject.ValidToDate, \"Edm.DateTimeOffset\", false) : undefined;\n              \n        if (odataObject.ValidationPeriod == null) {\n            this.ValidationPeriod = undefined;\n        } else if (odataObject.ValidationPeriod['@odata.type'] == null) {\n            this.ValidationPeriod = new ValidationPeriodClass(odataObject.ValidationPeriod);\n        } else {\n            var className: string = odataObject.ValidationPeriod['@odata.type'];\n            className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n            if (entityDictionary[className]) {\n                this.ValidationPeriod = new entityDictionary[className](odataObject.ValidationPeriod)\n            }\n        }\n\n      \n        this.CouponCodes = undefined;\n        if (odataObject.CouponCodes) {\n        this.CouponCodes = [];\n        for (var i = 0; i < odataObject.CouponCodes.length; i++) {\n        if (odataObject.CouponCodes[i] != null) {\n            this.CouponCodes[i] = \n                odataObject.CouponCodes[i];\n                            } else {\n        this.CouponCodes[i] = undefined;\n        }\n        }\n        }\n      \n            this.DateValidationTypeValue = \n                odataObject.DateValidationTypeValue;\n              \n            this.AreCouponsActiveOnSameDate = \n                odataObject.AreCouponsActiveOnSameDate;\n              \n            this.AreCouponsExpiredOnSameDate = \n                odataObject.AreCouponsExpiredOnSameDate;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['PromotionClass'] = PromotionClass;\n    \n      /**\n      * CategoryPathLookup entity class.\n      */\n      export class CategoryPathLookupClass implements Entities.CategoryPathLookup {\n      public ProductId: number;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.ProductId = \n                (odataObject.ProductId != null) ? parseInt(odataObject.ProductId, 10) : undefined;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['CategoryPathLookupClass'] = CategoryPathLookupClass;\n    \n      /**\n      * CategoryPathResult entity class.\n      */\n      export class CategoryPathResultClass implements Entities.CategoryPathResult {\n      public ProductId: number;\n      public CategoryPath: Entities.CategoryPath[];\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.ProductId = \n                (odataObject.ProductId != null) ? parseInt(odataObject.ProductId, 10) : undefined;\n              \n        this.CategoryPath = undefined;\n        if (odataObject.CategoryPath) {\n        this.CategoryPath = [];\n        for (var i = 0; i < odataObject.CategoryPath.length; i++) {\n        if (odataObject.CategoryPath[i] != null) {\n        if (odataObject.CategoryPath[i]['@odata.type'] != null) {\n          var className: string = odataObject.CategoryPath[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.CategoryPath[i] = new entityDictionary[className](odataObject.CategoryPath[i])\n          }\n        } else {\n            this.CategoryPath[i] = new CategoryPathClass(odataObject.CategoryPath[i]);\n        }\n                    } else {\n        this.CategoryPath[i] = undefined;\n        }\n        }\n        }\n      \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['CategoryPathResultClass'] = CategoryPathResultClass;\n    \n      /**\n      * PickupTimeslotAvailabilitySearchCriteria entity class.\n      */\n      export class PickupTimeslotAvailabilitySearchCriteriaClass implements Entities.PickupTimeslotAvailabilitySearchCriteria {\n      public DeliveryModeCode: string;\n      public StoreId: string;\n      public StartDate: Date;\n      public EndDate: Date;\n      public SearchOptionValue: number;\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.DeliveryModeCode = \n                odataObject.DeliveryModeCode;\n              \n            this.StoreId = \n                odataObject.StoreId;\n              \n            this.StartDate = \n                (odataObject.StartDate instanceof Date) ? odataObject.StartDate\n                : (odataObject.StartDate != null) ? jsonLightReadStringPropertyValue(odataObject.StartDate, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.EndDate = \n                (odataObject.EndDate instanceof Date) ? odataObject.EndDate\n                : (odataObject.EndDate != null) ? jsonLightReadStringPropertyValue(odataObject.EndDate, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.SearchOptionValue = \n                odataObject.SearchOptionValue;\n              \n      }\n      }\n      entityDictionary['PickupTimeslotAvailabilitySearchCriteriaClass'] = PickupTimeslotAvailabilitySearchCriteriaClass;\n    \n      /**\n      * PickupTimeslotAvailability entity class.\n      */\n      export class PickupTimeslotAvailabilityClass implements Entities.PickupTimeslotAvailability {\n      public AvailableCapacity: number;\n      public StartDateTime: Date;\n      public EndDateTime: Date;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.AvailableCapacity = \n                odataObject.AvailableCapacity;\n              \n            this.StartDateTime = \n                (odataObject.StartDateTime instanceof Date) ? odataObject.StartDateTime\n                : (odataObject.StartDateTime != null) ? jsonLightReadStringPropertyValue(odataObject.StartDateTime, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.EndDateTime = \n                (odataObject.EndDateTime instanceof Date) ? odataObject.EndDateTime\n                : (odataObject.EndDateTime != null) ? jsonLightReadStringPropertyValue(odataObject.EndDateTime, \"Edm.DateTimeOffset\", false) : undefined;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['PickupTimeslotAvailabilityClass'] = PickupTimeslotAvailabilityClass;\n    \n      /**\n      * CheckInForOrderPickupConfirmation entity class.\n      */\n      export class CheckInForOrderPickupConfirmationClass implements Entities.CheckInForOrderPickupConfirmation {\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['CheckInForOrderPickupConfirmationClass'] = CheckInForOrderPickupConfirmationClass;\n    \n      /**\n      * SalesOrderConfirmedShipDateChange entity class.\n      */\n      export class SalesOrderConfirmedShipDateChangeClass implements Entities.SalesOrderConfirmedShipDateChange {\n      public SalesId: string;\n      public ConfirmedShipDate: Date;\n      public LineChanges: Entities.SalesLineConfirmedShipDateChange[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.SalesId = \n                odataObject.SalesId;\n              \n            this.ConfirmedShipDate = \n                (odataObject.ConfirmedShipDate instanceof Date) ? odataObject.ConfirmedShipDate\n                : (odataObject.ConfirmedShipDate != null) ? jsonLightReadStringPropertyValue(odataObject.ConfirmedShipDate, \"Edm.DateTimeOffset\", false) : undefined;\n              \n        this.LineChanges = undefined;\n        if (odataObject.LineChanges) {\n        this.LineChanges = [];\n        for (var i = 0; i < odataObject.LineChanges.length; i++) {\n        if (odataObject.LineChanges[i] != null) {\n        if (odataObject.LineChanges[i]['@odata.type'] != null) {\n          var className: string = odataObject.LineChanges[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.LineChanges[i] = new entityDictionary[className](odataObject.LineChanges[i])\n          }\n        } else {\n            this.LineChanges[i] = new SalesLineConfirmedShipDateChangeClass(odataObject.LineChanges[i]);\n        }\n                    } else {\n        this.LineChanges[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['SalesOrderConfirmedShipDateChangeClass'] = SalesOrderConfirmedShipDateChangeClass;\n    \n      /**\n      * OrderCancellationResult entity class.\n      */\n      export class OrderCancellationResultClass implements Entities.OrderCancellationResult {\n      public DocumentOperationCommitResultValue: number;\n      public DocumentOperationCommitResultCodeValue: number;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.DocumentOperationCommitResultValue = \n                odataObject.DocumentOperationCommitResultValue;\n              \n            this.DocumentOperationCommitResultCodeValue = \n                odataObject.DocumentOperationCommitResultCodeValue;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['OrderCancellationResultClass'] = OrderCancellationResultClass;\n    \n      /**\n      * VendorSearchCriteria entity class.\n      */\n      export class VendorSearchCriteriaClass implements Entities.VendorSearchCriteria {\n      public SearchText: string;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.SearchText = \n                odataObject.SearchText;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['VendorSearchCriteriaClass'] = VendorSearchCriteriaClass;\n    \n      /**\n      * Vendor entity class.\n      */\n      export class VendorClass implements Entities.Vendor {\n      public RecordId: number;\n      public AccountNumber: string;\n      public PartyId: number;\n      public DataAreaId: string;\n      public Name: string;\n      public NameAlias: string;\n      public PartyNumber: string;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.RecordId = \n                (odataObject.RecordId != null) ? parseInt(odataObject.RecordId, 10) : undefined;\n              \n            this.AccountNumber = \n                odataObject.AccountNumber;\n              \n            this.PartyId = \n                (odataObject.PartyId != null) ? parseInt(odataObject.PartyId, 10) : undefined;\n              \n            this.DataAreaId = \n                odataObject.DataAreaId;\n              \n            this.Name = \n                odataObject.Name;\n              \n            this.NameAlias = \n                odataObject.NameAlias;\n              \n            this.PartyNumber = \n                odataObject.PartyNumber;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['VendorClass'] = VendorClass;\n    \n      /**\n      * VendorValidationResult entity class.\n      */\n      export class VendorValidationResultClass implements Entities.VendorValidationResult {\n      public Message: string;\n      public VendorValidationResultLevelValue: number;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.Message = \n                odataObject.Message;\n              \n            this.VendorValidationResultLevelValue = \n                odataObject.VendorValidationResultLevelValue;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['VendorValidationResultClass'] = VendorValidationResultClass;\n    \n      /**\n      * CopilotResponse entity class.\n      */\n      export class CopilotResponseClass implements Entities.CopilotResponse {\n      public Content: string;\n      public Disclaimer: string;\n      public LastRefreshDatetime: Date;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.Content = \n                odataObject.Content;\n              \n            this.Disclaimer = \n                odataObject.Disclaimer;\n              \n            this.LastRefreshDatetime = \n                (odataObject.LastRefreshDatetime instanceof Date) ? odataObject.LastRefreshDatetime\n                : (odataObject.LastRefreshDatetime != null) ? jsonLightReadStringPropertyValue(odataObject.LastRefreshDatetime, \"Edm.DateTimeOffset\", false) : undefined;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['CopilotResponseClass'] = CopilotResponseClass;\n    \n      /**\n      * OnlineChannelAzureB2CConfiguration entity class.\n      */\n      export class OnlineChannelAzureB2CConfigurationClass implements Entities.OnlineChannelAzureB2CConfiguration {\n      public Name: string;\n      public Description: string;\n      public TenantName: string;\n      public SignInSignupPolicyId: string;\n      public PasswordResetPolicyId: string;\n      public SignUpPolicyId: string;\n      public EditProfilePolicyId: string;\n      public LoginDomainName: string;\n      public Scope: string;\n      public ApplicationId: string;\n      public ApplicationSecret: string;\n      public IsDefault: boolean;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.Name = \n                odataObject.Name;\n              \n            this.Description = \n                odataObject.Description;\n              \n            this.TenantName = \n                odataObject.TenantName;\n              \n            this.SignInSignupPolicyId = \n                odataObject.SignInSignupPolicyId;\n              \n            this.PasswordResetPolicyId = \n                odataObject.PasswordResetPolicyId;\n              \n            this.SignUpPolicyId = \n                odataObject.SignUpPolicyId;\n              \n            this.EditProfilePolicyId = \n                odataObject.EditProfilePolicyId;\n              \n            this.LoginDomainName = \n                odataObject.LoginDomainName;\n              \n            this.Scope = \n                odataObject.Scope;\n              \n            this.ApplicationId = \n                odataObject.ApplicationId;\n              \n            this.ApplicationSecret = \n                odataObject.ApplicationSecret;\n              \n            this.IsDefault = \n                odataObject.IsDefault;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['OnlineChannelAzureB2CConfigurationClass'] = OnlineChannelAzureB2CConfigurationClass;\n    \n      /**\n      * ExtensionProfile entity class.\n      */\n      export class ExtensionProfileClass implements Entities.ExtensionProfile {\n      public ExtensionServiceUrl: string;\n      public AttachedServices: Entities.AttachedService[];\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.ExtensionServiceUrl = \n                odataObject.ExtensionServiceUrl;\n              \n        this.AttachedServices = undefined;\n        if (odataObject.AttachedServices) {\n        this.AttachedServices = [];\n        for (var i = 0; i < odataObject.AttachedServices.length; i++) {\n        if (odataObject.AttachedServices[i] != null) {\n        if (odataObject.AttachedServices[i]['@odata.type'] != null) {\n          var className: string = odataObject.AttachedServices[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.AttachedServices[i] = new entityDictionary[className](odataObject.AttachedServices[i])\n          }\n        } else {\n            this.AttachedServices[i] = new AttachedServiceClass(odataObject.AttachedServices[i]);\n        }\n                    } else {\n        this.AttachedServices[i] = undefined;\n        }\n        }\n        }\n      \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['ExtensionProfileClass'] = ExtensionProfileClass;\n    \n      /**\n      * ChannelInventoryConfiguration entity class.\n      */\n      export class ChannelInventoryConfigurationClass implements Entities.ChannelInventoryConfiguration {\n      public RecordId: number;\n      public ChannelId: string;\n      public AllowTransferOrderOverDelivery: boolean;\n      public AllowTransferOrderUnderDelivery: boolean;\n      public UserLocationProfileId: string;\n      public InventoryProductAttributeRecordId: number;\n      public InventoryOutOfStockAttributeValueText: string;\n      public ProductAvailabilitySortableAttributeRecordId: number;\n      public SkipQuantityInputWhenScanBarcode: boolean;\n      public UseInventoryVisibilityServiceAsDataSource: boolean;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.RecordId = \n                (odataObject.RecordId != null) ? parseInt(odataObject.RecordId, 10) : undefined;\n              \n            this.ChannelId = \n                odataObject.ChannelId;\n              \n            this.AllowTransferOrderOverDelivery = \n                odataObject.AllowTransferOrderOverDelivery;\n              \n            this.AllowTransferOrderUnderDelivery = \n                odataObject.AllowTransferOrderUnderDelivery;\n              \n            this.UserLocationProfileId = \n                odataObject.UserLocationProfileId;\n              \n            this.InventoryProductAttributeRecordId = \n                (odataObject.InventoryProductAttributeRecordId != null) ? parseInt(odataObject.InventoryProductAttributeRecordId, 10) : undefined;\n              \n            this.InventoryOutOfStockAttributeValueText = \n                odataObject.InventoryOutOfStockAttributeValueText;\n              \n            this.ProductAvailabilitySortableAttributeRecordId = \n                (odataObject.ProductAvailabilitySortableAttributeRecordId != null) ? parseInt(odataObject.ProductAvailabilitySortableAttributeRecordId, 10) : undefined;\n              \n            this.SkipQuantityInputWhenScanBarcode = \n                odataObject.SkipQuantityInputWhenScanBarcode;\n              \n            this.UseInventoryVisibilityServiceAsDataSource = \n                odataObject.UseInventoryVisibilityServiceAsDataSource;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['ChannelInventoryConfigurationClass'] = ChannelInventoryConfigurationClass;\n    \n      /**\n      * ChannelMerchandisingConfiguration entity class.\n      */\n      export class ChannelMerchandisingConfigurationClass implements Entities.ChannelMerchandisingConfiguration {\n      public RecordId: number;\n      public ChannelId: string;\n      public EnableMultipleUnitsOfMeasure: boolean;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.RecordId = \n                (odataObject.RecordId != null) ? parseInt(odataObject.RecordId, 10) : undefined;\n              \n            this.ChannelId = \n                odataObject.ChannelId;\n              \n            this.EnableMultipleUnitsOfMeasure = \n                odataObject.EnableMultipleUnitsOfMeasure;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['ChannelMerchandisingConfigurationClass'] = ChannelMerchandisingConfigurationClass;\n    \n      /**\n      * ChannelPurchaseConfiguration entity class.\n      */\n      export class ChannelPurchaseConfigurationClass implements Entities.ChannelPurchaseConfiguration {\n      public RecordId: number;\n      public ChannelId: string;\n      public AllowOverDelivery: boolean;\n      public AllowSubDelivery: boolean;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.RecordId = \n                (odataObject.RecordId != null) ? parseInt(odataObject.RecordId, 10) : undefined;\n              \n            this.ChannelId = \n                odataObject.ChannelId;\n              \n            this.AllowOverDelivery = \n                odataObject.AllowOverDelivery;\n              \n            this.AllowSubDelivery = \n                odataObject.AllowSubDelivery;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['ChannelPurchaseConfigurationClass'] = ChannelPurchaseConfigurationClass;\n    \n      /**\n      * InventoryJournalName entity class.\n      */\n      export class InventoryJournalNameClass implements Entities.InventoryJournalName {\n      public RecordId: number;\n      public JournalNameId: string;\n      public InventoryJournalTypeValue: number;\n      public Description: string;\n      public DefaultAdjustmentTypeValue: number;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.RecordId = \n                (odataObject.RecordId != null) ? parseInt(odataObject.RecordId, 10) : undefined;\n              \n            this.JournalNameId = \n                odataObject.JournalNameId;\n              \n            this.InventoryJournalTypeValue = \n                odataObject.InventoryJournalTypeValue;\n              \n            this.Description = \n                odataObject.Description;\n              \n            this.DefaultAdjustmentTypeValue = \n                odataObject.DefaultAdjustmentTypeValue;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['InventoryJournalNameClass'] = InventoryJournalNameClass;\n    \n      /**\n      * ShiftRetrievalCriteria entity class.\n      */\n      export class ShiftRetrievalCriteriaClass implements Entities.ShiftRetrievalCriteria {\n      public ShiftStatusValue: number;\n      public FilterByUserRole: boolean;\n      public IncludeAllShiftsForStore: boolean;\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.ShiftStatusValue = \n                odataObject.ShiftStatusValue;\n              \n            this.FilterByUserRole = \n                odataObject.FilterByUserRole;\n              \n            this.IncludeAllShiftsForStore = \n                odataObject.IncludeAllShiftsForStore;\n              \n      }\n      }\n      entityDictionary['ShiftRetrievalCriteriaClass'] = ShiftRetrievalCriteriaClass;\n    \n      /**\n      * UserDefinedSecretCertificateResult entity class.\n      */\n      export class UserDefinedSecretCertificateResultClass implements Entities.UserDefinedSecretCertificateResult {\n      public CertificateData: string;\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.CertificateData = \n                odataObject.CertificateData;\n              \n      }\n      }\n      entityDictionary['UserDefinedSecretCertificateResultClass'] = UserDefinedSecretCertificateResultClass;\n    \n      /**\n      * TerminalInfo entity class.\n      */\n      export class TerminalInfoClass implements Entities.TerminalInfo {\n      public TerminalId: string;\n      public DeviceNumber: string;\n      public Name: string;\n      public DeviceType: number;\n      public ActivationStatusValue: number;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.TerminalId = \n                odataObject.TerminalId;\n              \n            this.DeviceNumber = \n                odataObject.DeviceNumber;\n              \n            this.Name = \n                odataObject.Name;\n              \n            this.DeviceType = \n                odataObject.DeviceType;\n              \n            this.ActivationStatusValue = \n                odataObject.ActivationStatusValue;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['TerminalInfoClass'] = TerminalInfoClass;\n    \n      /**\n      * CustomerTimelineItemTypeMap entity class.\n      */\n      export class CustomerTimelineItemTypeMapClass implements Entities.CustomerTimelineItemTypeMap {\n      public EntityType: string;\n      public Types: Entities.CustomerTimelineItemType[];\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.EntityType = \n                odataObject.EntityType;\n              \n        this.Types = undefined;\n        if (odataObject.Types) {\n        this.Types = [];\n        for (var i = 0; i < odataObject.Types.length; i++) {\n        if (odataObject.Types[i] != null) {\n        if (odataObject.Types[i]['@odata.type'] != null) {\n          var className: string = odataObject.Types[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.Types[i] = new entityDictionary[className](odataObject.Types[i])\n          }\n        } else {\n            this.Types[i] = new CustomerTimelineItemTypeClass(odataObject.Types[i]);\n        }\n                    } else {\n        this.Types[i] = undefined;\n        }\n        }\n        }\n      \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['CustomerTimelineItemTypeMapClass'] = CustomerTimelineItemTypeMapClass;\n    \n      /**\n      * CustomerTimelineRefiner entity class.\n      */\n      export class CustomerTimelineRefinerClass implements Entities.CustomerTimelineRefiner {\n      public RefinedResultsCount: number;\n      public EntityType: string;\n      public TypeId: string;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.RefinedResultsCount = \n                odataObject.RefinedResultsCount;\n              \n            this.EntityType = \n                odataObject.EntityType;\n              \n            this.TypeId = \n                odataObject.TypeId;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['CustomerTimelineRefinerClass'] = CustomerTimelineRefinerClass;\n    \n      /**\n      * CustomerTitle entity class.\n      */\n      export class CustomerTitleClass implements Entities.CustomerTitle {\n      public Text: string;\n      public RecordId: number;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.Text = \n                odataObject.Text;\n              \n            this.RecordId = \n                (odataObject.RecordId != null) ? parseInt(odataObject.RecordId, 10) : undefined;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['CustomerTitleClass'] = CustomerTitleClass;\n    \n      /**\n      * ProductWarehouse entity class.\n      */\n      export class ProductWarehouseClass implements Entities.ProductWarehouse {\n      public ProductId: number;\n      public InventLocationId: string;\n      public DataAreaId: string;\n      public UnitOfMeasure: string;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.ProductId = \n                (odataObject.ProductId != null) ? parseInt(odataObject.ProductId, 10) : undefined;\n              \n            this.InventLocationId = \n                odataObject.InventLocationId;\n              \n            this.DataAreaId = \n                odataObject.DataAreaId;\n              \n            this.UnitOfMeasure = \n                odataObject.UnitOfMeasure;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['ProductWarehouseClass'] = ProductWarehouseClass;\n    \n      /**\n      * ProductWarehouseInventoryInformation entity class.\n      */\n      export class ProductWarehouseInventoryInformationClass implements Entities.ProductWarehouseInventoryInformation {\n      public ProductWarehouseInventoryAvailabilities: Entities.ProductWarehouseInventoryAvailability[];\n      public AggregatedProductInventoryAvailabilities: Entities.ProductInventoryAvailability[];\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n        this.ProductWarehouseInventoryAvailabilities = undefined;\n        if (odataObject.ProductWarehouseInventoryAvailabilities) {\n        this.ProductWarehouseInventoryAvailabilities = [];\n        for (var i = 0; i < odataObject.ProductWarehouseInventoryAvailabilities.length; i++) {\n        if (odataObject.ProductWarehouseInventoryAvailabilities[i] != null) {\n        if (odataObject.ProductWarehouseInventoryAvailabilities[i]['@odata.type'] != null) {\n          var className: string = odataObject.ProductWarehouseInventoryAvailabilities[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ProductWarehouseInventoryAvailabilities[i] = new entityDictionary[className](odataObject.ProductWarehouseInventoryAvailabilities[i])\n          }\n        } else {\n            this.ProductWarehouseInventoryAvailabilities[i] = new ProductWarehouseInventoryAvailabilityClass(odataObject.ProductWarehouseInventoryAvailabilities[i]);\n        }\n                    } else {\n        this.ProductWarehouseInventoryAvailabilities[i] = undefined;\n        }\n        }\n        }\n      \n        this.AggregatedProductInventoryAvailabilities = undefined;\n        if (odataObject.AggregatedProductInventoryAvailabilities) {\n        this.AggregatedProductInventoryAvailabilities = [];\n        for (var i = 0; i < odataObject.AggregatedProductInventoryAvailabilities.length; i++) {\n        if (odataObject.AggregatedProductInventoryAvailabilities[i] != null) {\n        if (odataObject.AggregatedProductInventoryAvailabilities[i]['@odata.type'] != null) {\n          var className: string = odataObject.AggregatedProductInventoryAvailabilities[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.AggregatedProductInventoryAvailabilities[i] = new entityDictionary[className](odataObject.AggregatedProductInventoryAvailabilities[i])\n          }\n        } else {\n            this.AggregatedProductInventoryAvailabilities[i] = new ProductInventoryAvailabilityClass(odataObject.AggregatedProductInventoryAvailabilities[i]);\n        }\n                    } else {\n        this.AggregatedProductInventoryAvailabilities[i] = undefined;\n        }\n        }\n        }\n      \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['ProductWarehouseInventoryInformationClass'] = ProductWarehouseInventoryInformationClass;\n    \n      /**\n      * ProductWarehouseQuantity entity class.\n      */\n      export class ProductWarehouseQuantityClass implements Entities.ProductWarehouseQuantity {\n      public ProductId: number;\n      public InventoryLocationId: string;\n      public PhysicalInventory: number;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.ProductId = \n                (odataObject.ProductId != null) ? parseInt(odataObject.ProductId, 10) : undefined;\n              \n            this.InventoryLocationId = \n                odataObject.InventoryLocationId;\n              \n            this.PhysicalInventory = \n                (odataObject.PhysicalInventory != null) ? parseFloat(odataObject.PhysicalInventory) : undefined;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['ProductWarehouseQuantityClass'] = ProductWarehouseQuantityClass;\n    \n      /**\n      * UpdateProductWarehouseAvailabilityResult entity class.\n      */\n      export class UpdateProductWarehouseAvailabilityResultClass implements Entities.UpdateProductWarehouseAvailabilityResult {\n      public SuccessfulUpdates: Entities.InventoryQuantity[];\n      public FailedUpdates: Entities.InventoryQuantity[];\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n        this.SuccessfulUpdates = undefined;\n        if (odataObject.SuccessfulUpdates) {\n        this.SuccessfulUpdates = [];\n        for (var i = 0; i < odataObject.SuccessfulUpdates.length; i++) {\n        if (odataObject.SuccessfulUpdates[i] != null) {\n        if (odataObject.SuccessfulUpdates[i]['@odata.type'] != null) {\n          var className: string = odataObject.SuccessfulUpdates[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.SuccessfulUpdates[i] = new entityDictionary[className](odataObject.SuccessfulUpdates[i])\n          }\n        } else {\n            this.SuccessfulUpdates[i] = new InventoryQuantityClass(odataObject.SuccessfulUpdates[i]);\n        }\n                    } else {\n        this.SuccessfulUpdates[i] = undefined;\n        }\n        }\n        }\n      \n        this.FailedUpdates = undefined;\n        if (odataObject.FailedUpdates) {\n        this.FailedUpdates = [];\n        for (var i = 0; i < odataObject.FailedUpdates.length; i++) {\n        if (odataObject.FailedUpdates[i] != null) {\n        if (odataObject.FailedUpdates[i]['@odata.type'] != null) {\n          var className: string = odataObject.FailedUpdates[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.FailedUpdates[i] = new entityDictionary[className](odataObject.FailedUpdates[i])\n          }\n        } else {\n            this.FailedUpdates[i] = new InventoryQuantityClass(odataObject.FailedUpdates[i]);\n        }\n                    } else {\n        this.FailedUpdates[i] = undefined;\n        }\n        }\n        }\n      \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['UpdateProductWarehouseAvailabilityResultClass'] = UpdateProductWarehouseAvailabilityResultClass;\n    \n      /**\n      * InventoryAvailabilitySearchCriteria entity class.\n      */\n      export class InventoryAvailabilitySearchCriteriaClass implements Entities.InventoryAvailabilitySearchCriteria {\n      public ProductIds: number[];\n      public DefaultWarehouseOnly: boolean;\n      public SearchArea: Entities.SearchArea;\n      public FilterByChannelFulfillmentGroup: boolean;\n      public DeliveryModeTypeFilterValue: number;\n      public QuantityUnitTypeValue: number;\n      public ProductUnits: Entities.ProductUnit[];\n      public DataLevelValue: number;\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n        this.ProductIds = undefined;\n        if (odataObject.ProductIds) {\n        this.ProductIds = [];\n        for (var i = 0; i < odataObject.ProductIds.length; i++) {\n        if (odataObject.ProductIds[i] != null) {\n            this.ProductIds[i] = \n                parseInt(odataObject.ProductIds[i], 10);\n                            } else {\n        this.ProductIds[i] = undefined;\n        }\n        }\n        }\n      \n            this.DefaultWarehouseOnly = \n                odataObject.DefaultWarehouseOnly;\n              \n        if (odataObject.SearchArea == null) {\n            this.SearchArea = undefined;\n        } else if (odataObject.SearchArea['@odata.type'] == null) {\n            this.SearchArea = new SearchAreaClass(odataObject.SearchArea);\n        } else {\n            var className: string = odataObject.SearchArea['@odata.type'];\n            className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n            if (entityDictionary[className]) {\n                this.SearchArea = new entityDictionary[className](odataObject.SearchArea)\n            }\n        }\n\n      \n            this.FilterByChannelFulfillmentGroup = \n                odataObject.FilterByChannelFulfillmentGroup;\n              \n            this.DeliveryModeTypeFilterValue = \n                odataObject.DeliveryModeTypeFilterValue;\n              \n            this.QuantityUnitTypeValue = \n                odataObject.QuantityUnitTypeValue;\n              \n        this.ProductUnits = undefined;\n        if (odataObject.ProductUnits) {\n        this.ProductUnits = [];\n        for (var i = 0; i < odataObject.ProductUnits.length; i++) {\n        if (odataObject.ProductUnits[i] != null) {\n        if (odataObject.ProductUnits[i]['@odata.type'] != null) {\n          var className: string = odataObject.ProductUnits[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ProductUnits[i] = new entityDictionary[className](odataObject.ProductUnits[i])\n          }\n        } else {\n            this.ProductUnits[i] = new ProductUnitClass(odataObject.ProductUnits[i]);\n        }\n                    } else {\n        this.ProductUnits[i] = undefined;\n        }\n        }\n        }\n      \n            this.DataLevelValue = \n                odataObject.DataLevelValue;\n              \n      }\n      }\n      entityDictionary['InventoryAvailabilitySearchCriteriaClass'] = InventoryAvailabilitySearchCriteriaClass;\n    \n      /**\n      * ExtensibleEnumerationContainer entity class.\n      */\n      export class ExtensibleEnumerationContainerClass implements Entities.ExtensibleEnumerationContainer {\n      public TypeName: string;\n      public ExtensibleEnumerations: Entities.ExtensibleEnumeration[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.TypeName = \n                odataObject.TypeName;\n              \n        this.ExtensibleEnumerations = undefined;\n        if (odataObject.ExtensibleEnumerations) {\n        this.ExtensibleEnumerations = [];\n        for (var i = 0; i < odataObject.ExtensibleEnumerations.length; i++) {\n        if (odataObject.ExtensibleEnumerations[i] != null) {\n        if (odataObject.ExtensibleEnumerations[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensibleEnumerations[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensibleEnumerations[i] = new entityDictionary[className](odataObject.ExtensibleEnumerations[i])\n          }\n        } else {\n            this.ExtensibleEnumerations[i] = new ExtensibleEnumerationClass(odataObject.ExtensibleEnumerations[i]);\n        }\n                    } else {\n        this.ExtensibleEnumerations[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['ExtensibleEnumerationContainerClass'] = ExtensibleEnumerationContainerClass;\n    \n      /**\n      * PackingSlipData entity class.\n      */\n      export class PackingSlipDataClass implements Entities.PackingSlipData {\n      public PackingSlipId: string;\n      public CreatedDateTime: Date;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.PackingSlipId = \n                odataObject.PackingSlipId;\n              \n            this.CreatedDateTime = \n                (odataObject.CreatedDateTime instanceof Date) ? odataObject.CreatedDateTime\n                : (odataObject.CreatedDateTime != null) ? jsonLightReadStringPropertyValue(odataObject.CreatedDateTime, \"Edm.DateTimeOffset\", false) : undefined;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['PackingSlipDataClass'] = PackingSlipDataClass;\n    \n      /**\n      * CartConfiguration entity class.\n      */\n      export class CartConfigurationClass implements Entities.CartConfiguration {\n      public ValidateDefaultOrderSettingsPerLine: boolean;\n      public IgnoreOrderSettings: boolean;\n      public MaxQuantityPerItem: number;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.ValidateDefaultOrderSettingsPerLine = \n                odataObject.ValidateDefaultOrderSettingsPerLine;\n              \n            this.IgnoreOrderSettings = \n                odataObject.IgnoreOrderSettings;\n              \n            this.MaxQuantityPerItem = \n                (odataObject.MaxQuantityPerItem != null) ? parseFloat(odataObject.MaxQuantityPerItem) : undefined;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['CartConfigurationClass'] = CartConfigurationClass;\n    \n      /**\n      * EmailReceiptSettings entity class.\n      */\n      export class EmailReceiptSettingsClass implements Entities.EmailReceiptSettings {\n      public ReceiptTypeValue: number;\n      public EmailBehaviorValue: number;\n      public ReceiptTitle: string;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.ReceiptTypeValue = \n                odataObject.ReceiptTypeValue;\n              \n            this.EmailBehaviorValue = \n                odataObject.EmailBehaviorValue;\n              \n            this.ReceiptTitle = \n                odataObject.ReceiptTitle;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['EmailReceiptSettingsClass'] = EmailReceiptSettingsClass;\n    \n      /**\n      * FiscalIntegrationComplianceResult entity class.\n      */\n      export class FiscalIntegrationComplianceResultClass implements Entities.FiscalIntegrationComplianceResult {\n      public ErrorMessages: string[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n        this.ErrorMessages = undefined;\n        if (odataObject.ErrorMessages) {\n        this.ErrorMessages = [];\n        for (var i = 0; i < odataObject.ErrorMessages.length; i++) {\n        if (odataObject.ErrorMessages[i] != null) {\n            this.ErrorMessages[i] = \n                odataObject.ErrorMessages[i];\n                            } else {\n        this.ErrorMessages[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['FiscalIntegrationComplianceResultClass'] = FiscalIntegrationComplianceResultClass;\n    \n      /**\n      * OrgUnitAddress entity class.\n      */\n      export class OrgUnitAddressClass\n        extends AddressClass\n       implements Entities.OrgUnitAddress {\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      super(odataObject);odataObject = odataObject || {};\n        this[\"@odata.type\"] = \"#Microsoft.Dynamics.Commerce.Runtime.DataModel.OrgUnitAddress\";\n      \n      }\n      }\n      entityDictionary['OrgUnitAddressClass'] = OrgUnitAddressClass;\n    \n      /**\n      * WarehouseDetails entity class.\n      */\n      export class WarehouseDetailsClass\n        extends AddressClass\n       implements Entities.WarehouseDetails {\n      public InventoryLocationId: string;\n      public InventorySiteId: string;\n      public Latitude: number;\n      public Longitude: number;\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      super(odataObject);odataObject = odataObject || {};\n            this.InventoryLocationId = \n                odataObject.InventoryLocationId;\n              \n            this.InventorySiteId = \n                odataObject.InventorySiteId;\n              \n            this.Latitude = \n                (odataObject.Latitude != null) ? parseFloat(odataObject.Latitude) : undefined;\n              \n            this.Longitude = \n                (odataObject.Longitude != null) ? parseFloat(odataObject.Longitude) : undefined;\n              \n        this[\"@odata.type\"] = \"#Microsoft.Dynamics.Commerce.Runtime.DataModel.WarehouseDetails\";\n      \n      }\n      }\n      entityDictionary['WarehouseDetailsClass'] = WarehouseDetailsClass;\n    \n      /**\n      * AttributeSwatch entity class.\n      */\n      export class AttributeSwatchClass implements Entities.AttributeSwatch {\n      public SwatchValue: string;\n      public SwatchImageUrl: string;\n      public SwatchColorHexCode: string;\n      public IsDefault: boolean;\n      public ProductImageUrls: string[];\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.SwatchValue = \n                odataObject.SwatchValue;\n              \n            this.SwatchImageUrl = \n                odataObject.SwatchImageUrl;\n              \n            this.SwatchColorHexCode = \n                odataObject.SwatchColorHexCode;\n              \n            this.IsDefault = \n                odataObject.IsDefault;\n              \n        this.ProductImageUrls = undefined;\n        if (odataObject.ProductImageUrls) {\n        this.ProductImageUrls = [];\n        for (var i = 0; i < odataObject.ProductImageUrls.length; i++) {\n        if (odataObject.ProductImageUrls[i] != null) {\n            this.ProductImageUrls[i] = \n                odataObject.ProductImageUrls[i];\n                            } else {\n        this.ProductImageUrls[i] = undefined;\n        }\n        }\n        }\n      \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['AttributeSwatchClass'] = AttributeSwatchClass;\n    \n      /**\n      * AttributeBooleanValue entity class.\n      */\n      export class AttributeBooleanValueClass\n        extends AttributeValueBaseClass\n       implements Entities.AttributeBooleanValue {\n      public Value: boolean;\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      super(odataObject);odataObject = odataObject || {};\n            this.Value = \n                odataObject.Value;\n              \n        this[\"@odata.type\"] = \"#Microsoft.Dynamics.Commerce.Runtime.DataModel.AttributeBooleanValue\";\n      \n      }\n      }\n      entityDictionary['AttributeBooleanValueClass'] = AttributeBooleanValueClass;\n    \n      /**\n      * AttributeCurrencyValue entity class.\n      */\n      export class AttributeCurrencyValueClass\n        extends AttributeValueBaseClass\n       implements Entities.AttributeCurrencyValue {\n      public CurrencyValue: number;\n      public CurrencyCode: string;\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      super(odataObject);odataObject = odataObject || {};\n            this.CurrencyValue = \n                (odataObject.CurrencyValue != null) ? parseFloat(odataObject.CurrencyValue) : undefined;\n              \n            this.CurrencyCode = \n                odataObject.CurrencyCode;\n              \n        this[\"@odata.type\"] = \"#Microsoft.Dynamics.Commerce.Runtime.DataModel.AttributeCurrencyValue\";\n      \n      }\n      }\n      entityDictionary['AttributeCurrencyValueClass'] = AttributeCurrencyValueClass;\n    \n      /**\n      * AttributeDateTimeOffsetValue entity class.\n      */\n      export class AttributeDateTimeOffsetValueClass\n        extends AttributeValueBaseClass\n       implements Entities.AttributeDateTimeOffsetValue {\n      public Value: Date;\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      super(odataObject);odataObject = odataObject || {};\n            this.Value = \n                (odataObject.Value instanceof Date) ? odataObject.Value\n                : (odataObject.Value != null) ? jsonLightReadStringPropertyValue(odataObject.Value, \"Edm.DateTimeOffset\", false) : undefined;\n              \n        this[\"@odata.type\"] = \"#Microsoft.Dynamics.Commerce.Runtime.DataModel.AttributeDateTimeOffsetValue\";\n      \n      }\n      }\n      entityDictionary['AttributeDateTimeOffsetValueClass'] = AttributeDateTimeOffsetValueClass;\n    \n      /**\n      * AttributeFloatValue entity class.\n      */\n      export class AttributeFloatValueClass\n        extends AttributeValueBaseClass\n       implements Entities.AttributeFloatValue {\n      public Value: number;\n      public UnitSymbol: string;\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      super(odataObject);odataObject = odataObject || {};\n            this.Value = \n                (odataObject.Value != null) ? parseFloat(odataObject.Value) : undefined;\n              \n            this.UnitSymbol = \n                odataObject.UnitSymbol;\n              \n        this[\"@odata.type\"] = \"#Microsoft.Dynamics.Commerce.Runtime.DataModel.AttributeFloatValue\";\n      \n      }\n      }\n      entityDictionary['AttributeFloatValueClass'] = AttributeFloatValueClass;\n    \n      /**\n      * AttributeIntValue entity class.\n      */\n      export class AttributeIntValueClass\n        extends AttributeValueBaseClass\n       implements Entities.AttributeIntValue {\n      public Value: number;\n      public UnitSymbol: string;\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      super(odataObject);odataObject = odataObject || {};\n            this.Value = \n                odataObject.Value;\n              \n            this.UnitSymbol = \n                odataObject.UnitSymbol;\n              \n        this[\"@odata.type\"] = \"#Microsoft.Dynamics.Commerce.Runtime.DataModel.AttributeIntValue\";\n      \n      }\n      }\n      entityDictionary['AttributeIntValueClass'] = AttributeIntValueClass;\n    \n      /**\n      * AttributeMediaLocationValue entity class.\n      */\n      export class AttributeMediaLocationValueClass\n        extends AttributeValueBaseClass\n       implements Entities.AttributeMediaLocationValue {\n      public Value: Entities.MediaLocation[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      super(odataObject);odataObject = odataObject || {};\n        this.Value = undefined;\n        if (odataObject.Value) {\n        this.Value = [];\n        for (var i = 0; i < odataObject.Value.length; i++) {\n        if (odataObject.Value[i] != null) {\n        if (odataObject.Value[i]['@odata.type'] != null) {\n          var className: string = odataObject.Value[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.Value[i] = new entityDictionary[className](odataObject.Value[i])\n          }\n        } else {\n            this.Value[i] = new MediaLocationClass(odataObject.Value[i]);\n        }\n                    } else {\n        this.Value[i] = undefined;\n        }\n        }\n        }\n      \n        this[\"@odata.type\"] = \"#Microsoft.Dynamics.Commerce.Runtime.DataModel.AttributeMediaLocationValue\";\n      \n      }\n      }\n      entityDictionary['AttributeMediaLocationValueClass'] = AttributeMediaLocationValueClass;\n    \n      /**\n      * AttributeTextValue entity class.\n      */\n      export class AttributeTextValueClass\n        extends AttributeValueBaseClass\n       implements Entities.AttributeTextValue {\n      public RecId: number;\n      public TextValue: string;\n      public TextValueTranslations: Entities.TextValueTranslation[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      super(odataObject);odataObject = odataObject || {};\n            this.RecId = \n                (odataObject.RecId != null) ? parseInt(odataObject.RecId, 10) : undefined;\n              \n            this.TextValue = \n                odataObject.TextValue;\n              \n        this.TextValueTranslations = undefined;\n        if (odataObject.TextValueTranslations) {\n        this.TextValueTranslations = [];\n        for (var i = 0; i < odataObject.TextValueTranslations.length; i++) {\n        if (odataObject.TextValueTranslations[i] != null) {\n        if (odataObject.TextValueTranslations[i]['@odata.type'] != null) {\n          var className: string = odataObject.TextValueTranslations[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.TextValueTranslations[i] = new entityDictionary[className](odataObject.TextValueTranslations[i])\n          }\n        } else {\n            this.TextValueTranslations[i] = new TextValueTranslationClass(odataObject.TextValueTranslations[i]);\n        }\n                    } else {\n        this.TextValueTranslations[i] = undefined;\n        }\n        }\n        }\n      \n        this[\"@odata.type\"] = \"#Microsoft.Dynamics.Commerce.Runtime.DataModel.AttributeTextValue\";\n      \n      }\n      }\n      entityDictionary['AttributeTextValueClass'] = AttributeTextValueClass;\n    \n      /**\n      * ButtonGridButton entity class.\n      */\n      export class ButtonGridButtonClass implements Entities.ButtonGridButton {\n      public Action: number;\n      public ActionProperty: string;\n      public BackColorAsARGB: Entities.ARGBColor;\n      public BorderColorAsARGB: Entities.ARGBColor;\n      public Column: number;\n      public ColumnSpan: number;\n      public DisplayText: string;\n      public FontColorAsARGB: Entities.ARGBColor;\n      public ButtonId: number;\n      public Row: number;\n      public RowSpan: number;\n      public UseCustomLookAndFeel: boolean;\n      public PictureId: number;\n      public PictureAsBase64: string;\n      public FontStyle: number;\n      public FontSize: number;\n      public EnableCustomFontForPOS: boolean;\n      public HideButtonText: boolean;\n      public Tooltip: string;\n      public EnableLiveContent: boolean;\n      public NotificationContentAlignment: number;\n      public ImageAlignment: number;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.Action = \n                odataObject.Action;\n              \n            this.ActionProperty = \n                odataObject.ActionProperty;\n              \n        if (odataObject.BackColorAsARGB == null) {\n            this.BackColorAsARGB = undefined;\n        } else if (odataObject.BackColorAsARGB['@odata.type'] == null) {\n            this.BackColorAsARGB = new ARGBColorClass(odataObject.BackColorAsARGB);\n        } else {\n            var className: string = odataObject.BackColorAsARGB['@odata.type'];\n            className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n            if (entityDictionary[className]) {\n                this.BackColorAsARGB = new entityDictionary[className](odataObject.BackColorAsARGB)\n            }\n        }\n\n      \n        if (odataObject.BorderColorAsARGB == null) {\n            this.BorderColorAsARGB = undefined;\n        } else if (odataObject.BorderColorAsARGB['@odata.type'] == null) {\n            this.BorderColorAsARGB = new ARGBColorClass(odataObject.BorderColorAsARGB);\n        } else {\n            var className: string = odataObject.BorderColorAsARGB['@odata.type'];\n            className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n            if (entityDictionary[className]) {\n                this.BorderColorAsARGB = new entityDictionary[className](odataObject.BorderColorAsARGB)\n            }\n        }\n\n      \n            this.Column = \n                odataObject.Column;\n              \n            this.ColumnSpan = \n                odataObject.ColumnSpan;\n              \n            this.DisplayText = \n                odataObject.DisplayText;\n              \n        if (odataObject.FontColorAsARGB == null) {\n            this.FontColorAsARGB = undefined;\n        } else if (odataObject.FontColorAsARGB['@odata.type'] == null) {\n            this.FontColorAsARGB = new ARGBColorClass(odataObject.FontColorAsARGB);\n        } else {\n            var className: string = odataObject.FontColorAsARGB['@odata.type'];\n            className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n            if (entityDictionary[className]) {\n                this.FontColorAsARGB = new entityDictionary[className](odataObject.FontColorAsARGB)\n            }\n        }\n\n      \n            this.ButtonId = \n                odataObject.ButtonId;\n              \n            this.Row = \n                odataObject.Row;\n              \n            this.RowSpan = \n                odataObject.RowSpan;\n              \n            this.UseCustomLookAndFeel = \n                odataObject.UseCustomLookAndFeel;\n              \n            this.PictureId = \n                odataObject.PictureId;\n              \n            this.PictureAsBase64 = \n                odataObject.PictureAsBase64;\n              \n            this.FontStyle = \n                odataObject.FontStyle;\n              \n            this.FontSize = \n                odataObject.FontSize;\n              \n            this.EnableCustomFontForPOS = \n                odataObject.EnableCustomFontForPOS;\n              \n            this.HideButtonText = \n                odataObject.HideButtonText;\n              \n            this.Tooltip = \n                odataObject.Tooltip;\n              \n            this.EnableLiveContent = \n                odataObject.EnableLiveContent;\n              \n            this.NotificationContentAlignment = \n                odataObject.NotificationContentAlignment;\n              \n            this.ImageAlignment = \n                odataObject.ImageAlignment;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['ButtonGridButtonClass'] = ButtonGridButtonClass;\n    \n      /**\n      * ARGBColor entity class.\n      */\n      export class ARGBColorClass implements Entities.ARGBColor {\n      public A: number;\n      public R: number;\n      public G: number;\n      public B: number;\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.A = \n                (odataObject.A != null) ? parseInt(odataObject.A, 10) : undefined;\n              \n            this.R = \n                (odataObject.R != null) ? parseInt(odataObject.R, 10) : undefined;\n              \n            this.G = \n                (odataObject.G != null) ? parseInt(odataObject.G, 10) : undefined;\n              \n            this.B = \n                (odataObject.B != null) ? parseInt(odataObject.B, 10) : undefined;\n              \n      }\n      }\n      entityDictionary['ARGBColorClass'] = ARGBColorClass;\n    \n      /**\n      * PriceLine entity class.\n      */\n      export class PriceLineClass implements Entities.PriceLine {\n      public RecordId: number;\n      public Value: number;\n      public PriceMethod: string;\n      public OriginId: string;\n      public PriceChangedByExtensions: boolean;\n      public SaleLineNumber: number;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.RecordId = \n                (odataObject.RecordId != null) ? parseInt(odataObject.RecordId, 10) : undefined;\n              \n            this.Value = \n                (odataObject.Value != null) ? parseFloat(odataObject.Value) : undefined;\n              \n            this.PriceMethod = \n                odataObject.PriceMethod;\n              \n            this.OriginId = \n                odataObject.OriginId;\n              \n            this.PriceChangedByExtensions = \n                odataObject.PriceChangedByExtensions;\n              \n            this.SaleLineNumber = \n                (odataObject.SaleLineNumber != null) ? parseFloat(odataObject.SaleLineNumber) : undefined;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['PriceLineClass'] = PriceLineClass;\n    \n      /**\n      * TradeAgreementPriceLine entity class.\n      */\n      export class TradeAgreementPriceLineClass\n        extends PriceLineClass\n       implements Entities.TradeAgreementPriceLine {\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      super(odataObject);odataObject = odataObject || {};\n        this[\"@odata.type\"] = \"#Microsoft.Dynamics.Commerce.Runtime.DataModel.TradeAgreementPriceLine\";\n      \n      }\n      }\n      entityDictionary['TradeAgreementPriceLineClass'] = TradeAgreementPriceLineClass;\n    \n      /**\n      * AttributePricingTradeAgreementPriceLine entity class.\n      */\n      export class AttributePricingTradeAgreementPriceLineClass\n        extends TradeAgreementPriceLineClass\n       implements Entities.AttributePricingTradeAgreementPriceLine {\n      public CanApplyPriceAdjustments: boolean;\n      public PricingPriorityNumber: number;\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      super(odataObject);odataObject = odataObject || {};\n            this.CanApplyPriceAdjustments = \n                odataObject.CanApplyPriceAdjustments;\n              \n            this.PricingPriorityNumber = \n                odataObject.PricingPriorityNumber;\n              \n        this[\"@odata.type\"] = \"#Microsoft.Dynamics.Commerce.Runtime.DataModel.AttributePricingTradeAgreementPriceLine\";\n      \n      }\n      }\n      entityDictionary['AttributePricingTradeAgreementPriceLineClass'] = AttributePricingTradeAgreementPriceLineClass;\n    \n      /**\n      * SalesAgreementPriceLine entity class.\n      */\n      export class SalesAgreementPriceLineClass\n        extends PriceLineClass\n       implements Entities.SalesAgreementPriceLine {\n      public SalesAgreementName: string;\n      public UnitPrice: number;\n      public DiscountAmount: number;\n      public DiscountPercent: number;\n      public SalesAgreementLineTypeValue: number;\n      public PriceUnit: number;\n      public EffectiveDate: Date;\n      public ExpirationDate: Date;\n      public CommittedQuantity: number;\n      public RemainingQuantity: number;\n      public CommittedAmount: number;\n      public RemainingAmount: number;\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      super(odataObject);odataObject = odataObject || {};\n            this.SalesAgreementName = \n                odataObject.SalesAgreementName;\n              \n            this.UnitPrice = \n                (odataObject.UnitPrice != null) ? parseFloat(odataObject.UnitPrice) : undefined;\n              \n            this.DiscountAmount = \n                (odataObject.DiscountAmount != null) ? parseFloat(odataObject.DiscountAmount) : undefined;\n              \n            this.DiscountPercent = \n                (odataObject.DiscountPercent != null) ? parseFloat(odataObject.DiscountPercent) : undefined;\n              \n            this.SalesAgreementLineTypeValue = \n                odataObject.SalesAgreementLineTypeValue;\n              \n            this.PriceUnit = \n                (odataObject.PriceUnit != null) ? parseFloat(odataObject.PriceUnit) : undefined;\n              \n            this.EffectiveDate = \n                (odataObject.EffectiveDate instanceof Date) ? odataObject.EffectiveDate\n                : (odataObject.EffectiveDate != null) ? jsonLightReadStringPropertyValue(odataObject.EffectiveDate, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.ExpirationDate = \n                (odataObject.ExpirationDate instanceof Date) ? odataObject.ExpirationDate\n                : (odataObject.ExpirationDate != null) ? jsonLightReadStringPropertyValue(odataObject.ExpirationDate, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.CommittedQuantity = \n                (odataObject.CommittedQuantity != null) ? parseFloat(odataObject.CommittedQuantity) : undefined;\n              \n            this.RemainingQuantity = \n                (odataObject.RemainingQuantity != null) ? parseFloat(odataObject.RemainingQuantity) : undefined;\n              \n            this.CommittedAmount = \n                (odataObject.CommittedAmount != null) ? parseFloat(odataObject.CommittedAmount) : undefined;\n              \n            this.RemainingAmount = \n                (odataObject.RemainingAmount != null) ? parseFloat(odataObject.RemainingAmount) : undefined;\n              \n        this[\"@odata.type\"] = \"#Microsoft.Dynamics.Commerce.Runtime.DataModel.SalesAgreementPriceLine\";\n      \n      }\n      }\n      entityDictionary['SalesAgreementPriceLineClass'] = SalesAgreementPriceLineClass;\n    \n      /**\n      * PriceAdjustmentPriceLine entity class.\n      */\n      export class PriceAdjustmentPriceLineClass\n        extends PriceLineClass\n       implements Entities.PriceAdjustmentPriceLine {\n      public IsCompoundable: boolean;\n      public Concurrency: string;\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      super(odataObject);odataObject = odataObject || {};\n            this.IsCompoundable = \n                odataObject.IsCompoundable;\n              \n            this.Concurrency = \n                odataObject.Concurrency;\n              \n        this[\"@odata.type\"] = \"#Microsoft.Dynamics.Commerce.Runtime.DataModel.PriceAdjustmentPriceLine\";\n      \n      }\n      }\n      entityDictionary['PriceAdjustmentPriceLineClass'] = PriceAdjustmentPriceLineClass;\n    \n      /**\n      * AttributePricingAdjustmentPriceLine entity class.\n      */\n      export class AttributePricingAdjustmentPriceLineClass\n        extends PriceAdjustmentPriceLineClass\n       implements Entities.AttributePricingAdjustmentPriceLine {\n      public CanCompoundOnAdjustedPrice: boolean;\n      public PricingPriorityNumber: number;\n      public AdjustedAmount: number;\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      super(odataObject);odataObject = odataObject || {};\n            this.CanCompoundOnAdjustedPrice = \n                odataObject.CanCompoundOnAdjustedPrice;\n              \n            this.PricingPriorityNumber = \n                odataObject.PricingPriorityNumber;\n              \n            this.AdjustedAmount = \n                (odataObject.AdjustedAmount != null) ? parseFloat(odataObject.AdjustedAmount) : undefined;\n              \n        this[\"@odata.type\"] = \"#Microsoft.Dynamics.Commerce.Runtime.DataModel.AttributePricingAdjustmentPriceLine\";\n      \n      }\n      }\n      entityDictionary['AttributePricingAdjustmentPriceLineClass'] = AttributePricingAdjustmentPriceLineClass;\n    \n      /**\n      * ManualPriceLine entity class.\n      */\n      export class ManualPriceLineClass\n        extends PriceLineClass\n       implements Entities.ManualPriceLine {\n      public ManualPrice: number;\n      public UnitOfMeasureSymbol: string;\n      public ManualPriceEntryTypeValue: number;\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      super(odataObject);odataObject = odataObject || {};\n            this.ManualPrice = \n                (odataObject.ManualPrice != null) ? parseFloat(odataObject.ManualPrice) : undefined;\n              \n            this.UnitOfMeasureSymbol = \n                odataObject.UnitOfMeasureSymbol;\n              \n            this.ManualPriceEntryTypeValue = \n                odataObject.ManualPriceEntryTypeValue;\n              \n        this[\"@odata.type\"] = \"#Microsoft.Dynamics.Commerce.Runtime.DataModel.ManualPriceLine\";\n      \n      }\n      }\n      entityDictionary['ManualPriceLineClass'] = ManualPriceLineClass;\n    \n      /**\n      * BasePriceLine entity class.\n      */\n      export class BasePriceLineClass\n        extends PriceLineClass\n       implements Entities.BasePriceLine {\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      super(odataObject);odataObject = odataObject || {};\n        this[\"@odata.type\"] = \"#Microsoft.Dynamics.Commerce.Runtime.DataModel.BasePriceLine\";\n      \n      }\n      }\n      entityDictionary['BasePriceLineClass'] = BasePriceLineClass;\n    \n      /**\n      * ExtensiblePeriodicDiscountOfferType entity class.\n      */\n      export class ExtensiblePeriodicDiscountOfferTypeClass\n        extends ExtensibleEnumerationClass\n       implements Entities.ExtensiblePeriodicDiscountOfferType {\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      super(odataObject);odataObject = odataObject || {};\n        this[\"@odata.type\"] = \"#Microsoft.Dynamics.Commerce.Runtime.DataModel.ExtensiblePeriodicDiscountOfferType\";\n      \n      }\n      }\n      entityDictionary['ExtensiblePeriodicDiscountOfferTypeClass'] = ExtensiblePeriodicDiscountOfferTypeClass;\n    \n      /**\n      * ChargeLineOverride entity class.\n      */\n      export class ChargeLineOverrideClass implements Entities.ChargeLineOverride {\n      public OriginalAmount: number;\n      public OverrideAmount: number;\n      public OverrideReasonDescription: string;\n      public OverrideDateTime: Date;\n      public UserId: string;\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.OriginalAmount = \n                (odataObject.OriginalAmount != null) ? parseFloat(odataObject.OriginalAmount) : undefined;\n              \n            this.OverrideAmount = \n                (odataObject.OverrideAmount != null) ? parseFloat(odataObject.OverrideAmount) : undefined;\n              \n            this.OverrideReasonDescription = \n                odataObject.OverrideReasonDescription;\n              \n            this.OverrideDateTime = \n                (odataObject.OverrideDateTime instanceof Date) ? odataObject.OverrideDateTime\n                : (odataObject.OverrideDateTime != null) ? jsonLightReadStringPropertyValue(odataObject.OverrideDateTime, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.UserId = \n                odataObject.UserId;\n              \n      }\n      }\n      entityDictionary['ChargeLineOverrideClass'] = ChargeLineOverrideClass;\n    \n      /**\n      * TaxLineGTE entity class.\n      */\n      export class TaxLineGTEClass\n        extends TaxLineClass\n       implements Entities.TaxLineGTE {\n      public TaxComponent: string;\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      super(odataObject);odataObject = odataObject || {};\n            this.TaxComponent = \n                odataObject.TaxComponent;\n              \n        this[\"@odata.type\"] = \"#Microsoft.Dynamics.Commerce.Runtime.DataModel.TaxLineGTE\";\n      \n      }\n      }\n      entityDictionary['TaxLineGTEClass'] = TaxLineGTEClass;\n    \n      /**\n      * TaxMeasure entity class.\n      */\n      export class TaxMeasureClass implements Entities.TaxMeasure {\n      public Path: string;\n      public Value: number;\n      public DataAreaId: string;\n      public SaleLineNumber: number;\n      public StoreId: string;\n      public TerminalId: string;\n      public TransactionId: string;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.Path = \n                odataObject.Path;\n              \n            this.Value = \n                (odataObject.Value != null) ? parseFloat(odataObject.Value) : undefined;\n              \n            this.DataAreaId = \n                odataObject.DataAreaId;\n              \n            this.SaleLineNumber = \n                (odataObject.SaleLineNumber != null) ? parseFloat(odataObject.SaleLineNumber) : undefined;\n              \n            this.StoreId = \n                odataObject.StoreId;\n              \n            this.TerminalId = \n                odataObject.TerminalId;\n              \n            this.TransactionId = \n                odataObject.TransactionId;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['TaxMeasureClass'] = TaxMeasureClass;\n    \n      /**\n      * DetailedLineStatus entity class.\n      */\n      export class DetailedLineStatusClass\n        extends ExtensibleEnumerationClass\n       implements Entities.DetailedLineStatus {\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      super(odataObject);odataObject = odataObject || {};\n        this[\"@odata.type\"] = \"#Microsoft.Dynamics.Commerce.Runtime.DataModel.DetailedLineStatus\";\n      \n      }\n      }\n      entityDictionary['DetailedLineStatusClass'] = DetailedLineStatusClass;\n    \n      /**\n      * CardTokenInfo entity class.\n      */\n      export class CardTokenInfoClass implements Entities.CardTokenInfo {\n      public CardToken: string;\n      public UniqueCardId: string;\n      public ServiceAccountId: string;\n      public MaskedCardNumber: string;\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.CardToken = \n                odataObject.CardToken;\n              \n            this.UniqueCardId = \n                odataObject.UniqueCardId;\n              \n            this.ServiceAccountId = \n                odataObject.ServiceAccountId;\n              \n            this.MaskedCardNumber = \n                odataObject.MaskedCardNumber;\n              \n      }\n      }\n      entityDictionary['CardTokenInfoClass'] = CardTokenInfoClass;\n    \n      /**\n      * DataverseTenderLine entity class.\n      */\n      export class DataverseTenderLineClass\n        extends TenderLineClass\n       implements Entities.DataverseTenderLine {\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      super(odataObject);odataObject = odataObject || {};\n        this[\"@odata.type\"] = \"#Microsoft.Dynamics.Commerce.Runtime.DataModel.DataverseTenderLine\";\n      \n      }\n      }\n      entityDictionary['DataverseTenderLineClass'] = DataverseTenderLineClass;\n    \n      /**\n      * PaymentError entity class.\n      */\n      export class PaymentErrorClass implements Entities.PaymentError {\n      public Code: string;\n      public Message: string;\n      public IsLocalized: boolean;\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.Code = \n                odataObject.Code;\n              \n            this.Message = \n                odataObject.Message;\n              \n            this.IsLocalized = \n                odataObject.IsLocalized;\n              \n      }\n      }\n      entityDictionary['PaymentErrorClass'] = PaymentErrorClass;\n    \n      /**\n      * ProductAttributeMetadataFlags entity class.\n      */\n      export class ProductAttributeMetadataFlagsClass implements Entities.ProductAttributeMetadataFlags {\n      public IsSearchable: boolean;\n      public IsRetrievable: boolean;\n      public IsQueryable: boolean;\n      public IsRefinable: boolean;\n      public IsSortable: boolean;\n      public IsMultiValue: boolean;\n      public IsTokenNormalization: boolean;\n      public IsCompleteMatch: boolean;\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.IsSearchable = \n                odataObject.IsSearchable;\n              \n            this.IsRetrievable = \n                odataObject.IsRetrievable;\n              \n            this.IsQueryable = \n                odataObject.IsQueryable;\n              \n            this.IsRefinable = \n                odataObject.IsRefinable;\n              \n            this.IsSortable = \n                odataObject.IsSortable;\n              \n            this.IsMultiValue = \n                odataObject.IsMultiValue;\n              \n            this.IsTokenNormalization = \n                odataObject.IsTokenNormalization;\n              \n            this.IsCompleteMatch = \n                odataObject.IsCompleteMatch;\n              \n      }\n      }\n      entityDictionary['ProductAttributeMetadataFlagsClass'] = ProductAttributeMetadataFlagsClass;\n    \n      /**\n      * UnitOfMeasureConversion entity class.\n      */\n      export class UnitOfMeasureConversionClass implements Entities.UnitOfMeasureConversion {\n      public ItemId: string;\n      public FromUnitOfMeasureId: string;\n      public ToUnitOfMeasureId: string;\n      public FromUnitOfMeasureSymbol: string;\n      public ToUnitOfMeasureSymbol: string;\n      public IsBackward: boolean;\n      public RecordId: number;\n      public ProductRecordId: number;\n      public Factor: number;\n      public Numerator: number;\n      public Denominator: number;\n      public InnerOffset: number;\n      public OuterOffset: number;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.ItemId = \n                odataObject.ItemId;\n              \n            this.FromUnitOfMeasureId = \n                odataObject.FromUnitOfMeasureId;\n              \n            this.ToUnitOfMeasureId = \n                odataObject.ToUnitOfMeasureId;\n              \n            this.FromUnitOfMeasureSymbol = \n                odataObject.FromUnitOfMeasureSymbol;\n              \n            this.ToUnitOfMeasureSymbol = \n                odataObject.ToUnitOfMeasureSymbol;\n              \n            this.IsBackward = \n                odataObject.IsBackward;\n              \n            this.RecordId = \n                (odataObject.RecordId != null) ? parseInt(odataObject.RecordId, 10) : undefined;\n              \n            this.ProductRecordId = \n                (odataObject.ProductRecordId != null) ? parseInt(odataObject.ProductRecordId, 10) : undefined;\n              \n            this.Factor = \n                (odataObject.Factor != null) ? parseFloat(odataObject.Factor) : undefined;\n              \n            this.Numerator = \n                odataObject.Numerator;\n              \n            this.Denominator = \n                odataObject.Denominator;\n              \n            this.InnerOffset = \n                (odataObject.InnerOffset != null) ? parseFloat(odataObject.InnerOffset) : undefined;\n              \n            this.OuterOffset = \n                (odataObject.OuterOffset != null) ? parseFloat(odataObject.OuterOffset) : undefined;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['UnitOfMeasureConversionClass'] = UnitOfMeasureConversionClass;\n    \n      /**\n      * ReturnLabelContent entity class.\n      */\n      export class ReturnLabelContentClass implements Entities.ReturnLabelContent {\n      public ReturnLocationText: string;\n      public ReturnWarehouseText: string;\n      public ReturnReasonText: string;\n      public ReturnPalleteText: string;\n      public ItemId: string;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.ReturnLocationText = \n                odataObject.ReturnLocationText;\n              \n            this.ReturnWarehouseText = \n                odataObject.ReturnWarehouseText;\n              \n            this.ReturnReasonText = \n                odataObject.ReturnReasonText;\n              \n            this.ReturnPalleteText = \n                odataObject.ReturnPalleteText;\n              \n            this.ItemId = \n                odataObject.ItemId;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['ReturnLabelContentClass'] = ReturnLabelContentClass;\n    \n      /**\n      * LoyaltyRewardPointLine entity class.\n      */\n      export class LoyaltyRewardPointLineClass implements Entities.LoyaltyRewardPointLine {\n      public TransactionId: string;\n      public SaleLineNumber: number;\n      public LoyaltyGroupRecordId: number;\n      public LoyaltyCardNumber: string;\n      public CustomerAccount: string;\n      public EntryDate: Date;\n      public EntryTime: number;\n      public EntryTypeValue: number;\n      public ExpirationDate: Date;\n      public LineNumber: number;\n      public LoyaltyTierRecordId: number;\n      public RewardPointRecordId: number;\n      public RewardPointAmountQuantity: number;\n      public RewardPointId: string;\n      public RewardPointIsRedeemable: boolean;\n      public RewardPointType: string;\n      public RewardPointCurrency: string;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.TransactionId = \n                odataObject.TransactionId;\n              \n            this.SaleLineNumber = \n                (odataObject.SaleLineNumber != null) ? parseFloat(odataObject.SaleLineNumber) : undefined;\n              \n            this.LoyaltyGroupRecordId = \n                (odataObject.LoyaltyGroupRecordId != null) ? parseInt(odataObject.LoyaltyGroupRecordId, 10) : undefined;\n              \n            this.LoyaltyCardNumber = \n                odataObject.LoyaltyCardNumber;\n              \n            this.CustomerAccount = \n                odataObject.CustomerAccount;\n              \n            this.EntryDate = \n                (odataObject.EntryDate instanceof Date) ? odataObject.EntryDate\n                : (odataObject.EntryDate != null) ? jsonLightReadStringPropertyValue(odataObject.EntryDate, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.EntryTime = \n                odataObject.EntryTime;\n              \n            this.EntryTypeValue = \n                odataObject.EntryTypeValue;\n              \n            this.ExpirationDate = \n                (odataObject.ExpirationDate instanceof Date) ? odataObject.ExpirationDate\n                : (odataObject.ExpirationDate != null) ? jsonLightReadStringPropertyValue(odataObject.ExpirationDate, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.LineNumber = \n                (odataObject.LineNumber != null) ? parseFloat(odataObject.LineNumber) : undefined;\n              \n            this.LoyaltyTierRecordId = \n                (odataObject.LoyaltyTierRecordId != null) ? parseInt(odataObject.LoyaltyTierRecordId, 10) : undefined;\n              \n            this.RewardPointRecordId = \n                (odataObject.RewardPointRecordId != null) ? parseInt(odataObject.RewardPointRecordId, 10) : undefined;\n              \n            this.RewardPointAmountQuantity = \n                (odataObject.RewardPointAmountQuantity != null) ? parseFloat(odataObject.RewardPointAmountQuantity) : undefined;\n              \n            this.RewardPointId = \n                odataObject.RewardPointId;\n              \n            this.RewardPointIsRedeemable = \n                odataObject.RewardPointIsRedeemable;\n              \n            this.RewardPointType = \n                odataObject.RewardPointType;\n              \n            this.RewardPointCurrency = \n                odataObject.RewardPointCurrency;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['LoyaltyRewardPointLineClass'] = LoyaltyRewardPointLineClass;\n    \n      /**\n      * TrackingInfo entity class.\n      */\n      export class TrackingInfoClass implements Entities.TrackingInfo {\n      public TrackingNumber: string;\n      public ServiceType: string;\n      public PackageWeight: Entities.Weight;\n      public ShippedOnDate: Date;\n      public Status: string;\n      public DeliveredOnDate: Date;\n      public EstimatedDeliveryDate: Date;\n      public TrackingUrl: string;\n      public PackagingType: string;\n      public DestinationAddress: Entities.Address;\n      public OriginAddress: Entities.Address;\n      public ShipmentProgress: Entities.ShipmentProgress[];\n      public ShippingCharge: number;\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.TrackingNumber = \n                odataObject.TrackingNumber;\n              \n            this.ServiceType = \n                odataObject.ServiceType;\n              \n        if (odataObject.PackageWeight == null) {\n            this.PackageWeight = undefined;\n        } else if (odataObject.PackageWeight['@odata.type'] == null) {\n            this.PackageWeight = new WeightClass(odataObject.PackageWeight);\n        } else {\n            var className: string = odataObject.PackageWeight['@odata.type'];\n            className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n            if (entityDictionary[className]) {\n                this.PackageWeight = new entityDictionary[className](odataObject.PackageWeight)\n            }\n        }\n\n      \n            this.ShippedOnDate = \n                (odataObject.ShippedOnDate instanceof Date) ? odataObject.ShippedOnDate\n                : (odataObject.ShippedOnDate != null) ? jsonLightReadStringPropertyValue(odataObject.ShippedOnDate, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.Status = \n                odataObject.Status;\n              \n            this.DeliveredOnDate = \n                (odataObject.DeliveredOnDate instanceof Date) ? odataObject.DeliveredOnDate\n                : (odataObject.DeliveredOnDate != null) ? jsonLightReadStringPropertyValue(odataObject.DeliveredOnDate, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.EstimatedDeliveryDate = \n                (odataObject.EstimatedDeliveryDate instanceof Date) ? odataObject.EstimatedDeliveryDate\n                : (odataObject.EstimatedDeliveryDate != null) ? jsonLightReadStringPropertyValue(odataObject.EstimatedDeliveryDate, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.TrackingUrl = \n                odataObject.TrackingUrl;\n              \n            this.PackagingType = \n                odataObject.PackagingType;\n              \n        if (odataObject.DestinationAddress == null) {\n            this.DestinationAddress = undefined;\n        } else if (odataObject.DestinationAddress['@odata.type'] == null) {\n            this.DestinationAddress = new AddressClass(odataObject.DestinationAddress);\n        } else {\n            var className: string = odataObject.DestinationAddress['@odata.type'];\n            className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n            if (entityDictionary[className]) {\n                this.DestinationAddress = new entityDictionary[className](odataObject.DestinationAddress)\n            }\n        }\n\n      \n        if (odataObject.OriginAddress == null) {\n            this.OriginAddress = undefined;\n        } else if (odataObject.OriginAddress['@odata.type'] == null) {\n            this.OriginAddress = new AddressClass(odataObject.OriginAddress);\n        } else {\n            var className: string = odataObject.OriginAddress['@odata.type'];\n            className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n            if (entityDictionary[className]) {\n                this.OriginAddress = new entityDictionary[className](odataObject.OriginAddress)\n            }\n        }\n\n      \n        this.ShipmentProgress = undefined;\n        if (odataObject.ShipmentProgress) {\n        this.ShipmentProgress = [];\n        for (var i = 0; i < odataObject.ShipmentProgress.length; i++) {\n        if (odataObject.ShipmentProgress[i] != null) {\n        if (odataObject.ShipmentProgress[i]['@odata.type'] != null) {\n          var className: string = odataObject.ShipmentProgress[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ShipmentProgress[i] = new entityDictionary[className](odataObject.ShipmentProgress[i])\n          }\n        } else {\n            this.ShipmentProgress[i] = new ShipmentProgressClass(odataObject.ShipmentProgress[i]);\n        }\n                    } else {\n        this.ShipmentProgress[i] = undefined;\n        }\n        }\n        }\n      \n            this.ShippingCharge = \n                (odataObject.ShippingCharge != null) ? parseFloat(odataObject.ShippingCharge) : undefined;\n              \n      }\n      }\n      entityDictionary['TrackingInfoClass'] = TrackingInfoClass;\n    \n      /**\n      * Weight entity class.\n      */\n      export class WeightClass implements Entities.Weight {\n      public Value: number;\n      public Unit: string;\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.Value = \n                (odataObject.Value != null) ? parseFloat(odataObject.Value) : undefined;\n              \n            this.Unit = \n                odataObject.Unit;\n              \n      }\n      }\n      entityDictionary['WeightClass'] = WeightClass;\n    \n      /**\n      * ShipmentProgress entity class.\n      */\n      export class ShipmentProgressClass implements Entities.ShipmentProgress {\n      public Location: Entities.Address;\n      public DateTime: Date;\n      public Activity: string;\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n        if (odataObject.Location == null) {\n            this.Location = undefined;\n        } else if (odataObject.Location['@odata.type'] == null) {\n            this.Location = new AddressClass(odataObject.Location);\n        } else {\n            var className: string = odataObject.Location['@odata.type'];\n            className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n            if (entityDictionary[className]) {\n                this.Location = new entityDictionary[className](odataObject.Location)\n            }\n        }\n\n      \n            this.DateTime = \n                (odataObject.DateTime instanceof Date) ? odataObject.DateTime\n                : (odataObject.DateTime != null) ? jsonLightReadStringPropertyValue(odataObject.DateTime, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.Activity = \n                odataObject.Activity;\n              \n      }\n      }\n      entityDictionary['ShipmentProgressClass'] = ShipmentProgressClass;\n    \n      /**\n      * ShiftKey entity class.\n      */\n      export class ShiftKeyClass implements Entities.ShiftKey {\n      public ShiftTerminalId: string;\n      public ShiftId: number;\n      public Store: string;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.ShiftTerminalId = \n                odataObject.ShiftTerminalId;\n              \n            this.ShiftId = \n                (odataObject.ShiftId != null) ? parseInt(odataObject.ShiftId, 10) : undefined;\n              \n            this.Store = \n                odataObject.Store;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['ShiftKeyClass'] = ShiftKeyClass;\n    \n      /**\n      * LocalizedText entity class.\n      */\n      export class LocalizedTextClass implements Entities.LocalizedText {\n      public RecordId: number;\n      public LanguageId: string;\n      public TextId: string;\n      public Text: string;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.RecordId = \n                (odataObject.RecordId != null) ? parseInt(odataObject.RecordId, 10) : undefined;\n              \n            this.LanguageId = \n                odataObject.LanguageId;\n              \n            this.TextId = \n                odataObject.TextId;\n              \n            this.Text = \n                odataObject.Text;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['LocalizedTextClass'] = LocalizedTextClass;\n    \n      /**\n      * AddressFormattingInfo entity class.\n      */\n      export class AddressFormattingInfoClass implements Entities.AddressFormattingInfo {\n      public AddressComponentNameValue: number;\n      public LineNumber: number;\n      public IsDataEntryOnly: boolean;\n      public NewLine: boolean;\n      public Expand: boolean;\n      public Inactive: boolean;\n      public Special: boolean;\n      public NumberOfSpaces: number;\n      public Separator: string;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.AddressComponentNameValue = \n                odataObject.AddressComponentNameValue;\n              \n            this.LineNumber = \n                odataObject.LineNumber;\n              \n            this.IsDataEntryOnly = \n                odataObject.IsDataEntryOnly;\n              \n            this.NewLine = \n                odataObject.NewLine;\n              \n            this.Expand = \n                odataObject.Expand;\n              \n            this.Inactive = \n                odataObject.Inactive;\n              \n            this.Special = \n                odataObject.Special;\n              \n            this.NumberOfSpaces = \n                odataObject.NumberOfSpaces;\n              \n            this.Separator = \n                odataObject.Separator;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['AddressFormattingInfoClass'] = AddressFormattingInfoClass;\n    \n      /**\n      * HardwareConfigurations entity class.\n      */\n      export class HardwareConfigurationsClass implements Entities.HardwareConfigurations {\n      public CashDrawerConfigurations: Entities.HardwareConfiguration[];\n      public PrinterConfigurations: Entities.HardwareConfiguration[];\n      public PinPadConfiguration: Entities.HardwareConfiguration;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n        this.CashDrawerConfigurations = undefined;\n        if (odataObject.CashDrawerConfigurations) {\n        this.CashDrawerConfigurations = [];\n        for (var i = 0; i < odataObject.CashDrawerConfigurations.length; i++) {\n        if (odataObject.CashDrawerConfigurations[i] != null) {\n        if (odataObject.CashDrawerConfigurations[i]['@odata.type'] != null) {\n          var className: string = odataObject.CashDrawerConfigurations[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.CashDrawerConfigurations[i] = new entityDictionary[className](odataObject.CashDrawerConfigurations[i])\n          }\n        } else {\n            this.CashDrawerConfigurations[i] = new HardwareConfigurationClass(odataObject.CashDrawerConfigurations[i]);\n        }\n                    } else {\n        this.CashDrawerConfigurations[i] = undefined;\n        }\n        }\n        }\n      \n        this.PrinterConfigurations = undefined;\n        if (odataObject.PrinterConfigurations) {\n        this.PrinterConfigurations = [];\n        for (var i = 0; i < odataObject.PrinterConfigurations.length; i++) {\n        if (odataObject.PrinterConfigurations[i] != null) {\n        if (odataObject.PrinterConfigurations[i]['@odata.type'] != null) {\n          var className: string = odataObject.PrinterConfigurations[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.PrinterConfigurations[i] = new entityDictionary[className](odataObject.PrinterConfigurations[i])\n          }\n        } else {\n            this.PrinterConfigurations[i] = new HardwareConfigurationClass(odataObject.PrinterConfigurations[i]);\n        }\n                    } else {\n        this.PrinterConfigurations[i] = undefined;\n        }\n        }\n        }\n      \n        if (odataObject.PinPadConfiguration == null) {\n            this.PinPadConfiguration = undefined;\n        } else if (odataObject.PinPadConfiguration['@odata.type'] == null) {\n            this.PinPadConfiguration = new HardwareConfigurationClass(odataObject.PinPadConfiguration);\n        } else {\n            var className: string = odataObject.PinPadConfiguration['@odata.type'];\n            className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n            if (entityDictionary[className]) {\n                this.PinPadConfiguration = new entityDictionary[className](odataObject.PinPadConfiguration)\n            }\n        }\n\n      \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['HardwareConfigurationsClass'] = HardwareConfigurationsClass;\n    \n      /**\n      * HardwareConfiguration entity class.\n      */\n      export class HardwareConfigurationClass implements Entities.HardwareConfiguration {\n      public RecordId: number;\n      public HardwareStationRecordId: number;\n      public TerminalId: string;\n      public DeviceName: string;\n      public IPAddress: string;\n      public Port: number;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.RecordId = \n                (odataObject.RecordId != null) ? parseInt(odataObject.RecordId, 10) : undefined;\n              \n            this.HardwareStationRecordId = \n                (odataObject.HardwareStationRecordId != null) ? parseInt(odataObject.HardwareStationRecordId, 10) : undefined;\n              \n            this.TerminalId = \n                odataObject.TerminalId;\n              \n            this.DeviceName = \n                odataObject.DeviceName;\n              \n            this.IPAddress = \n                odataObject.IPAddress;\n              \n            this.Port = \n                odataObject.Port;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['HardwareConfigurationClass'] = HardwareConfigurationClass;\n    \n      /**\n      * Printer entity class.\n      */\n      export class PrinterClass implements Entities.Printer {\n      public Name: string;\n      public PrinterType: number;\n      public Terminal: number;\n      public PrintBehaviorValue: number;\n      public ReceiptLayoutId: string;\n      public HardwareProfileId: string;\n      public ReceiptType: string;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.Name = \n                odataObject.Name;\n              \n            this.PrinterType = \n                odataObject.PrinterType;\n              \n            this.Terminal = \n                (odataObject.Terminal != null) ? parseInt(odataObject.Terminal, 10) : undefined;\n              \n            this.PrintBehaviorValue = \n                odataObject.PrintBehaviorValue;\n              \n            this.ReceiptLayoutId = \n                odataObject.ReceiptLayoutId;\n              \n            this.HardwareProfileId = \n                odataObject.HardwareProfileId;\n              \n            this.ReceiptType = \n                odataObject.ReceiptType;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['PrinterClass'] = PrinterClass;\n    \n      /**\n      * ProductQuantityLimitRule entity class.\n      */\n      export class ProductQuantityLimitRuleClass implements Entities.ProductQuantityLimitRule {\n      public DefaultQuantity: number;\n      public MaximumQuantity: number;\n      public MinimumQuantity: number;\n      public MultipleOfQuantity: number;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.DefaultQuantity = \n                (odataObject.DefaultQuantity != null) ? parseFloat(odataObject.DefaultQuantity) : undefined;\n              \n            this.MaximumQuantity = \n                (odataObject.MaximumQuantity != null) ? parseFloat(odataObject.MaximumQuantity) : undefined;\n              \n            this.MinimumQuantity = \n                (odataObject.MinimumQuantity != null) ? parseFloat(odataObject.MinimumQuantity) : undefined;\n              \n            this.MultipleOfQuantity = \n                (odataObject.MultipleOfQuantity != null) ? parseFloat(odataObject.MultipleOfQuantity) : undefined;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['ProductQuantityLimitRuleClass'] = ProductQuantityLimitRuleClass;\n    \n      /**\n      * CustomerRefinerValue entity class.\n      */\n      export class CustomerRefinerValueClass\n        extends SearchRefinerValueClass\n       implements Entities.CustomerRefinerValue {\n      public RefinerSourceValue: number;\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      super(odataObject);odataObject = odataObject || {};\n            this.RefinerSourceValue = \n                odataObject.RefinerSourceValue;\n              \n        this[\"@odata.type\"] = \"#Microsoft.Dynamics.Commerce.Runtime.DataModel.CustomerRefinerValue\";\n      \n      }\n      }\n      entityDictionary['CustomerRefinerValueClass'] = CustomerRefinerValueClass;\n    \n      /**\n      * TransferOrderJournalLine entity class.\n      */\n      export class TransferOrderJournalLineClass implements Entities.TransferOrderJournalLine {\n      public ItemId: string;\n      public ItemName: string;\n      public InventDimId: string;\n      public TotalQuantityShipped: number;\n      public QuantityShipped: number;\n      public TransferQuantity: number;\n      public UnitId: string;\n      public ConfigId: string;\n      public InventSizeId: string;\n      public InventColorId: string;\n      public InventStyleId: string;\n      public ConfigValue: string;\n      public SizeValue: string;\n      public ColorValue: string;\n      public StyleValue: string;\n      public DeliveryMethod: string;\n      public Barcode: string;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.ItemId = \n                odataObject.ItemId;\n              \n            this.ItemName = \n                odataObject.ItemName;\n              \n            this.InventDimId = \n                odataObject.InventDimId;\n              \n            this.TotalQuantityShipped = \n                (odataObject.TotalQuantityShipped != null) ? parseFloat(odataObject.TotalQuantityShipped) : undefined;\n              \n            this.QuantityShipped = \n                (odataObject.QuantityShipped != null) ? parseFloat(odataObject.QuantityShipped) : undefined;\n              \n            this.TransferQuantity = \n                (odataObject.TransferQuantity != null) ? parseFloat(odataObject.TransferQuantity) : undefined;\n              \n            this.UnitId = \n                odataObject.UnitId;\n              \n            this.ConfigId = \n                odataObject.ConfigId;\n              \n            this.InventSizeId = \n                odataObject.InventSizeId;\n              \n            this.InventColorId = \n                odataObject.InventColorId;\n              \n            this.InventStyleId = \n                odataObject.InventStyleId;\n              \n            this.ConfigValue = \n                odataObject.ConfigValue;\n              \n            this.SizeValue = \n                odataObject.SizeValue;\n              \n            this.ColorValue = \n                odataObject.ColorValue;\n              \n            this.StyleValue = \n                odataObject.StyleValue;\n              \n            this.DeliveryMethod = \n                odataObject.DeliveryMethod;\n              \n            this.Barcode = \n                odataObject.Barcode;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['TransferOrderJournalLineClass'] = TransferOrderJournalLineClass;\n    \n      /**\n      * InventoryDocumentSourceSerialNumberLine entity class.\n      */\n      export class InventoryDocumentSourceSerialNumberLineClass implements Entities.InventoryDocumentSourceSerialNumberLine {\n      public SourceDocumentTypeValue: number;\n      public SourceDocumentId: string;\n      public DocumentLineRecordId: number;\n      public InventTransRecordId: number;\n      public LineId: string;\n      public Quantity: number;\n      public SerialNumber: string;\n      public StatusValue: number;\n      public ProductId: number;\n      public DataAreaId: string;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.SourceDocumentTypeValue = \n                odataObject.SourceDocumentTypeValue;\n              \n            this.SourceDocumentId = \n                odataObject.SourceDocumentId;\n              \n            this.DocumentLineRecordId = \n                (odataObject.DocumentLineRecordId != null) ? parseInt(odataObject.DocumentLineRecordId, 10) : undefined;\n              \n            this.InventTransRecordId = \n                (odataObject.InventTransRecordId != null) ? parseInt(odataObject.InventTransRecordId, 10) : undefined;\n              \n            this.LineId = \n                odataObject.LineId;\n              \n            this.Quantity = \n                (odataObject.Quantity != null) ? parseFloat(odataObject.Quantity) : undefined;\n              \n            this.SerialNumber = \n                odataObject.SerialNumber;\n              \n            this.StatusValue = \n                odataObject.StatusValue;\n              \n            this.ProductId = \n                (odataObject.ProductId != null) ? parseInt(odataObject.ProductId, 10) : undefined;\n              \n            this.DataAreaId = \n                odataObject.DataAreaId;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['InventoryDocumentSourceSerialNumberLineClass'] = InventoryDocumentSourceSerialNumberLineClass;\n    \n      /**\n      * InventoryDocumentSourceTrackingDimensionLine entity class.\n      */\n      export class InventoryDocumentSourceTrackingDimensionLineClass implements Entities.InventoryDocumentSourceTrackingDimensionLine {\n      public SourceDocumentTypeValue: number;\n      public SourceDocumentId: string;\n      public DocumentLineRecordId: number;\n      public InventTransRecordId: number;\n      public LineId: string;\n      public Quantity: number;\n      public SerialNumber: string;\n      public BatchNumber: string;\n      public StatusValue: number;\n      public ProductId: number;\n      public DataAreaId: string;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.SourceDocumentTypeValue = \n                odataObject.SourceDocumentTypeValue;\n              \n            this.SourceDocumentId = \n                odataObject.SourceDocumentId;\n              \n            this.DocumentLineRecordId = \n                (odataObject.DocumentLineRecordId != null) ? parseInt(odataObject.DocumentLineRecordId, 10) : undefined;\n              \n            this.InventTransRecordId = \n                (odataObject.InventTransRecordId != null) ? parseInt(odataObject.InventTransRecordId, 10) : undefined;\n              \n            this.LineId = \n                odataObject.LineId;\n              \n            this.Quantity = \n                (odataObject.Quantity != null) ? parseFloat(odataObject.Quantity) : undefined;\n              \n            this.SerialNumber = \n                odataObject.SerialNumber;\n              \n            this.BatchNumber = \n                odataObject.BatchNumber;\n              \n            this.StatusValue = \n                odataObject.StatusValue;\n              \n            this.ProductId = \n                (odataObject.ProductId != null) ? parseInt(odataObject.ProductId, 10) : undefined;\n              \n            this.DataAreaId = \n                odataObject.DataAreaId;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['InventoryDocumentSourceTrackingDimensionLineClass'] = InventoryDocumentSourceTrackingDimensionLineClass;\n    \n      /**\n      * InventoryDocumentTrackingDimensionLine entity class.\n      */\n      export class InventoryDocumentTrackingDimensionLineClass implements Entities.InventoryDocumentTrackingDimensionLine {\n      public WorkDocumentId: string;\n      public WorkDocumentLineId: string;\n      public SourceLineId: string;\n      public LineId: string;\n      public Quantity: number;\n      public SerialNumber: string;\n      public BatchNumber: string;\n      public StatusValue: number;\n      public ProductId: number;\n      public ModifiedDateTime: Date;\n      public SourceDocumentRecordId: number;\n      public SourceDocumentTypeValue: number;\n      public SourceDocumentLineRecordId: number;\n      public SourceLine: Entities.InventoryDocumentSourceTrackingDimensionLine;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.WorkDocumentId = \n                odataObject.WorkDocumentId;\n              \n            this.WorkDocumentLineId = \n                odataObject.WorkDocumentLineId;\n              \n            this.SourceLineId = \n                odataObject.SourceLineId;\n              \n            this.LineId = \n                odataObject.LineId;\n              \n            this.Quantity = \n                (odataObject.Quantity != null) ? parseFloat(odataObject.Quantity) : undefined;\n              \n            this.SerialNumber = \n                odataObject.SerialNumber;\n              \n            this.BatchNumber = \n                odataObject.BatchNumber;\n              \n            this.StatusValue = \n                odataObject.StatusValue;\n              \n            this.ProductId = \n                (odataObject.ProductId != null) ? parseInt(odataObject.ProductId, 10) : undefined;\n              \n            this.ModifiedDateTime = \n                (odataObject.ModifiedDateTime instanceof Date) ? odataObject.ModifiedDateTime\n                : (odataObject.ModifiedDateTime != null) ? jsonLightReadStringPropertyValue(odataObject.ModifiedDateTime, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.SourceDocumentRecordId = \n                (odataObject.SourceDocumentRecordId != null) ? parseInt(odataObject.SourceDocumentRecordId, 10) : undefined;\n              \n            this.SourceDocumentTypeValue = \n                odataObject.SourceDocumentTypeValue;\n              \n            this.SourceDocumentLineRecordId = \n                (odataObject.SourceDocumentLineRecordId != null) ? parseInt(odataObject.SourceDocumentLineRecordId, 10) : undefined;\n              \n        if (odataObject.SourceLine == null) {\n            this.SourceLine = undefined;\n        } else if (odataObject.SourceLine['@odata.type'] == null) {\n            this.SourceLine = new InventoryDocumentSourceTrackingDimensionLineClass(odataObject.SourceLine);\n        } else {\n            var className: string = odataObject.SourceLine['@odata.type'];\n            className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n            if (entityDictionary[className]) {\n                this.SourceLine = new entityDictionary[className](odataObject.SourceLine)\n            }\n        }\n\n      \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['InventoryDocumentTrackingDimensionLineClass'] = InventoryDocumentTrackingDimensionLineClass;\n    \n      /**\n      * KitTransactionLine entity class.\n      */\n      export class KitTransactionLineClass implements Entities.KitTransactionLine {\n      public ItemId: string;\n      public Quantity: number;\n      public InventoryDimensionId: string;\n      public ProductId: number;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.ItemId = \n                odataObject.ItemId;\n              \n            this.Quantity = \n                (odataObject.Quantity != null) ? parseFloat(odataObject.Quantity) : undefined;\n              \n            this.InventoryDimensionId = \n                odataObject.InventoryDimensionId;\n              \n            this.ProductId = \n                (odataObject.ProductId != null) ? parseInt(odataObject.ProductId, 10) : undefined;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['KitTransactionLineClass'] = KitTransactionLineClass;\n    \n      /**\n      * StoreAddressBook entity class.\n      */\n      export class StoreAddressBookClass implements Entities.StoreAddressBook {\n      public AddressBookId: number;\n      public StoreId: number;\n      public AddressBookTypeValue: number;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.AddressBookId = \n                (odataObject.AddressBookId != null) ? parseInt(odataObject.AddressBookId, 10) : undefined;\n              \n            this.StoreId = \n                (odataObject.StoreId != null) ? parseInt(odataObject.StoreId, 10) : undefined;\n              \n            this.AddressBookTypeValue = \n                odataObject.AddressBookTypeValue;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['StoreAddressBookClass'] = StoreAddressBookClass;\n    \n      /**\n      * TenderDetail entity class.\n      */\n      export class TenderDetailClass implements Entities.TenderDetail {\n      public LineNumber: number;\n      public Amount: number;\n      public AmountInForeignCurrency: number;\n      public ForeignCurrencyExchangeRate: number;\n      public ForeignCurrency: string;\n      public BankBagNumber: string;\n      public TenderTypeId: string;\n      public TenderRecount: number;\n      public DenominationDetails: Entities.DenominationDetail[];\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.LineNumber = \n                (odataObject.LineNumber != null) ? parseFloat(odataObject.LineNumber) : undefined;\n              \n            this.Amount = \n                (odataObject.Amount != null) ? parseFloat(odataObject.Amount) : undefined;\n              \n            this.AmountInForeignCurrency = \n                (odataObject.AmountInForeignCurrency != null) ? parseFloat(odataObject.AmountInForeignCurrency) : undefined;\n              \n            this.ForeignCurrencyExchangeRate = \n                (odataObject.ForeignCurrencyExchangeRate != null) ? parseFloat(odataObject.ForeignCurrencyExchangeRate) : undefined;\n              \n            this.ForeignCurrency = \n                odataObject.ForeignCurrency;\n              \n            this.BankBagNumber = \n                odataObject.BankBagNumber;\n              \n            this.TenderTypeId = \n                odataObject.TenderTypeId;\n              \n            this.TenderRecount = \n                odataObject.TenderRecount;\n              \n        this.DenominationDetails = undefined;\n        if (odataObject.DenominationDetails) {\n        this.DenominationDetails = [];\n        for (var i = 0; i < odataObject.DenominationDetails.length; i++) {\n        if (odataObject.DenominationDetails[i] != null) {\n        if (odataObject.DenominationDetails[i]['@odata.type'] != null) {\n          var className: string = odataObject.DenominationDetails[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.DenominationDetails[i] = new entityDictionary[className](odataObject.DenominationDetails[i])\n          }\n        } else {\n            this.DenominationDetails[i] = new DenominationDetailClass(odataObject.DenominationDetails[i]);\n        }\n                    } else {\n        this.DenominationDetails[i] = undefined;\n        }\n        }\n        }\n      \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['TenderDetailClass'] = TenderDetailClass;\n    \n      /**\n      * DenominationDetail entity class.\n      */\n      export class DenominationDetailClass implements Entities.DenominationDetail {\n      public Type: number;\n      public Currency: string;\n      public DenominationAmount: number;\n      public QuantityDeclared: number;\n      public AmountDeclared: number;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.Type = \n                odataObject.Type;\n              \n            this.Currency = \n                odataObject.Currency;\n              \n            this.DenominationAmount = \n                (odataObject.DenominationAmount != null) ? parseFloat(odataObject.DenominationAmount) : undefined;\n              \n            this.QuantityDeclared = \n                odataObject.QuantityDeclared;\n              \n            this.AmountDeclared = \n                (odataObject.AmountDeclared != null) ? parseFloat(odataObject.AmountDeclared) : undefined;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['DenominationDetailClass'] = DenominationDetailClass;\n    \n      /**\n      * SalesOrderLookup entity class.\n      */\n      export class SalesOrderLookupClass implements Entities.SalesOrderLookup {\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['SalesOrderLookupClass'] = SalesOrderLookupClass;\n    \n      /**\n      * SalesOrderLookupByTransactionId entity class.\n      */\n      export class SalesOrderLookupByTransactionIdClass\n        extends SalesOrderLookupClass\n       implements Entities.SalesOrderLookupByTransactionId {\n      public TransactionId: string;\n      public ChannelId: number;\n      public StoreId: string;\n      public TerminalId: string;\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      super(odataObject);odataObject = odataObject || {};\n            this.TransactionId = \n                odataObject.TransactionId;\n              \n            this.ChannelId = \n                (odataObject.ChannelId != null) ? parseInt(odataObject.ChannelId, 10) : undefined;\n              \n            this.StoreId = \n                odataObject.StoreId;\n              \n            this.TerminalId = \n                odataObject.TerminalId;\n              \n        this[\"@odata.type\"] = \"#Microsoft.Dynamics.Commerce.Runtime.DataModel.SalesOrderLookupByTransactionId\";\n      \n      }\n      }\n      entityDictionary['SalesOrderLookupByTransactionIdClass'] = SalesOrderLookupByTransactionIdClass;\n    \n      /**\n      * SalesOrderLookupBySalesId entity class.\n      */\n      export class SalesOrderLookupBySalesIdClass\n        extends SalesOrderLookupClass\n       implements Entities.SalesOrderLookupBySalesId {\n      public SalesId: string;\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      super(odataObject);odataObject = odataObject || {};\n            this.SalesId = \n                odataObject.SalesId;\n              \n        this[\"@odata.type\"] = \"#Microsoft.Dynamics.Commerce.Runtime.DataModel.SalesOrderLookupBySalesId\";\n      \n      }\n      }\n      entityDictionary['SalesOrderLookupBySalesIdClass'] = SalesOrderLookupBySalesIdClass;\n    \n      /**\n      * ButtonGridZone entity class.\n      */\n      export class ButtonGridZoneClass implements Entities.ButtonGridZone {\n      public ButtonGridId: string;\n      public ZoneId: string;\n      public ZoneName: string;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.ButtonGridId = \n                odataObject.ButtonGridId;\n              \n            this.ZoneId = \n                odataObject.ZoneId;\n              \n            this.ZoneName = \n                odataObject.ZoneName;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['ButtonGridZoneClass'] = ButtonGridZoneClass;\n    \n      /**\n      * ImageZone entity class.\n      */\n      export class ImageZoneClass implements Entities.ImageZone {\n      public PictureId: number;\n      public PictureAsBase64: string;\n      public ZoneId: string;\n      public ZoneName: string;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.PictureId = \n                odataObject.PictureId;\n              \n            this.PictureAsBase64 = \n                odataObject.PictureAsBase64;\n              \n            this.ZoneId = \n                odataObject.ZoneId;\n              \n            this.ZoneName = \n                odataObject.ZoneName;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['ImageZoneClass'] = ImageZoneClass;\n    \n      /**\n      * ReportZone entity class.\n      */\n      export class ReportZoneClass implements Entities.ReportZone {\n      public ReportRecordId: number;\n      public ZoneId: string;\n      public ZoneName: string;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.ReportRecordId = \n                (odataObject.ReportRecordId != null) ? parseInt(odataObject.ReportRecordId, 10) : undefined;\n              \n            this.ZoneId = \n                odataObject.ZoneId;\n              \n            this.ZoneName = \n                odataObject.ZoneName;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['ReportZoneClass'] = ReportZoneClass;\n    \n      /**\n      * SalesInvoiceLine entity class.\n      */\n      export class SalesInvoiceLineClass implements Entities.SalesInvoiceLine {\n      public RecordId: number;\n      public ItemId: string;\n      public ProductId: number;\n      public ProductName: string;\n      public InventDimensionId: string;\n      public InventTransactionId: string;\n      public Quantity: number;\n      public Price: number;\n      public DiscountPercent: number;\n      public DiscountAmount: number;\n      public BatchId: string;\n      public NetAmount: number;\n      public Site: string;\n      public Warehouse: string;\n      public SerialId: string;\n      public ColorId: string;\n      public SizeId: string;\n      public StyleId: string;\n      public ConfigId: string;\n      public ColorName: string;\n      public SizeName: string;\n      public StyleName: string;\n      public ConfigName: string;\n      public SalesTaxGroup: string;\n      public ItemTaxGroup: string;\n      public SalesMarkup: number;\n      public TotalDiscount: number;\n      public TotalPercentageDiscount: number;\n      public LineDiscount: number;\n      public PeriodicDiscount: number;\n      public PeriodicPercentageDiscount: number;\n      public LineManualDiscountPercentage: number;\n      public LineManualDiscountAmount: number;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.RecordId = \n                (odataObject.RecordId != null) ? parseInt(odataObject.RecordId, 10) : undefined;\n              \n            this.ItemId = \n                odataObject.ItemId;\n              \n            this.ProductId = \n                (odataObject.ProductId != null) ? parseInt(odataObject.ProductId, 10) : undefined;\n              \n            this.ProductName = \n                odataObject.ProductName;\n              \n            this.InventDimensionId = \n                odataObject.InventDimensionId;\n              \n            this.InventTransactionId = \n                odataObject.InventTransactionId;\n              \n            this.Quantity = \n                (odataObject.Quantity != null) ? parseFloat(odataObject.Quantity) : undefined;\n              \n            this.Price = \n                (odataObject.Price != null) ? parseFloat(odataObject.Price) : undefined;\n              \n            this.DiscountPercent = \n                (odataObject.DiscountPercent != null) ? parseFloat(odataObject.DiscountPercent) : undefined;\n              \n            this.DiscountAmount = \n                (odataObject.DiscountAmount != null) ? parseFloat(odataObject.DiscountAmount) : undefined;\n              \n            this.BatchId = \n                odataObject.BatchId;\n              \n            this.NetAmount = \n                (odataObject.NetAmount != null) ? parseFloat(odataObject.NetAmount) : undefined;\n              \n            this.Site = \n                odataObject.Site;\n              \n            this.Warehouse = \n                odataObject.Warehouse;\n              \n            this.SerialId = \n                odataObject.SerialId;\n              \n            this.ColorId = \n                odataObject.ColorId;\n              \n            this.SizeId = \n                odataObject.SizeId;\n              \n            this.StyleId = \n                odataObject.StyleId;\n              \n            this.ConfigId = \n                odataObject.ConfigId;\n              \n            this.ColorName = \n                odataObject.ColorName;\n              \n            this.SizeName = \n                odataObject.SizeName;\n              \n            this.StyleName = \n                odataObject.StyleName;\n              \n            this.ConfigName = \n                odataObject.ConfigName;\n              \n            this.SalesTaxGroup = \n                odataObject.SalesTaxGroup;\n              \n            this.ItemTaxGroup = \n                odataObject.ItemTaxGroup;\n              \n            this.SalesMarkup = \n                (odataObject.SalesMarkup != null) ? parseFloat(odataObject.SalesMarkup) : undefined;\n              \n            this.TotalDiscount = \n                (odataObject.TotalDiscount != null) ? parseFloat(odataObject.TotalDiscount) : undefined;\n              \n            this.TotalPercentageDiscount = \n                (odataObject.TotalPercentageDiscount != null) ? parseFloat(odataObject.TotalPercentageDiscount) : undefined;\n              \n            this.LineDiscount = \n                (odataObject.LineDiscount != null) ? parseFloat(odataObject.LineDiscount) : undefined;\n              \n            this.PeriodicDiscount = \n                (odataObject.PeriodicDiscount != null) ? parseFloat(odataObject.PeriodicDiscount) : undefined;\n              \n            this.PeriodicPercentageDiscount = \n                (odataObject.PeriodicPercentageDiscount != null) ? parseFloat(odataObject.PeriodicPercentageDiscount) : undefined;\n              \n            this.LineManualDiscountPercentage = \n                (odataObject.LineManualDiscountPercentage != null) ? parseFloat(odataObject.LineManualDiscountPercentage) : undefined;\n              \n            this.LineManualDiscountAmount = \n                (odataObject.LineManualDiscountAmount != null) ? parseFloat(odataObject.LineManualDiscountAmount) : undefined;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['SalesInvoiceLineClass'] = SalesInvoiceLineClass;\n    \n      /**\n      * ReportRow entity class.\n      */\n      export class ReportRowClass implements Entities.ReportRow {\n      public RowData: Entities.CommerceProperty[];\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n        this.RowData = undefined;\n        if (odataObject.RowData) {\n        this.RowData = [];\n        for (var i = 0; i < odataObject.RowData.length; i++) {\n        if (odataObject.RowData[i] != null) {\n        if (odataObject.RowData[i]['@odata.type'] != null) {\n          var className: string = odataObject.RowData[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.RowData[i] = new entityDictionary[className](odataObject.RowData[i])\n          }\n        } else {\n            this.RowData[i] = new CommercePropertyClass(odataObject.RowData[i]);\n        }\n                    } else {\n        this.RowData[i] = undefined;\n        }\n        }\n        }\n      \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['ReportRowClass'] = ReportRowClass;\n    \n      /**\n      * FormAnnotation entity class.\n      */\n      export class FormAnnotationClass\n        extends AnnotationClass\n       implements Entities.FormAnnotation {\n      public MenuItemLabel: string;\n      public MenuItemName: string;\n      public MenuItemType: string;\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      super(odataObject);odataObject = odataObject || {};\n            this.MenuItemLabel = \n                odataObject.MenuItemLabel;\n              \n            this.MenuItemName = \n                odataObject.MenuItemName;\n              \n            this.MenuItemType = \n                odataObject.MenuItemType;\n              \n        this[\"@odata.type\"] = \"#Microsoft.Dynamics.Commerce.Runtime.DataModel.FormAnnotation\";\n      \n      }\n      }\n      entityDictionary['FormAnnotationClass'] = FormAnnotationClass;\n    \n      /**\n      * TaskGuideAnnotation entity class.\n      */\n      export class TaskGuideAnnotationClass\n        extends AnnotationClass\n       implements Entities.TaskGuideAnnotation {\n      public RecordingValueType: string;\n      public Title: string;\n      public ExampleText: string;\n      public Hidden: boolean;\n      public GlobalId: string;\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      super(odataObject);odataObject = odataObject || {};\n            this.RecordingValueType = \n                odataObject.RecordingValueType;\n              \n            this.Title = \n                odataObject.Title;\n              \n            this.ExampleText = \n                odataObject.ExampleText;\n              \n            this.Hidden = \n                odataObject.Hidden;\n              \n            this.GlobalId = \n                odataObject.GlobalId;\n              \n        this[\"@odata.type\"] = \"#Microsoft.Dynamics.Commerce.Runtime.DataModel.TaskGuideAnnotation\";\n      \n      }\n      }\n      entityDictionary['TaskGuideAnnotationClass'] = TaskGuideAnnotationClass;\n    \n      /**\n      * CommandArgument entity class.\n      */\n      export class CommandArgumentClass implements Entities.CommandArgument {\n      public Value: string;\n      public IsReference: boolean;\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.Value = \n                odataObject.Value;\n              \n            this.IsReference = \n                odataObject.IsReference;\n              \n      }\n      }\n      entityDictionary['CommandArgumentClass'] = CommandArgumentClass;\n    \n      /**\n      * PropertyUserAction entity class.\n      */\n      export class PropertyUserActionClass\n        extends FormUserActionClass\n       implements Entities.PropertyUserAction {\n      public Value: string;\n      public ValueLabel: string;\n      public PropertyName: string;\n      public ControlName: string;\n      public ControlType: string;\n      public UserActionType: string;\n      public IsReference: boolean;\n      public LabelId: string;\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      super(odataObject);odataObject = odataObject || {};\n            this.Value = \n                odataObject.Value;\n              \n            this.ValueLabel = \n                odataObject.ValueLabel;\n              \n            this.PropertyName = \n                odataObject.PropertyName;\n              \n            this.ControlName = \n                odataObject.ControlName;\n              \n            this.ControlType = \n                odataObject.ControlType;\n              \n            this.UserActionType = \n                odataObject.UserActionType;\n              \n            this.IsReference = \n                odataObject.IsReference;\n              \n            this.LabelId = \n                odataObject.LabelId;\n              \n        this[\"@odata.type\"] = \"#Microsoft.Dynamics.Commerce.Runtime.DataModel.PropertyUserAction\";\n      \n      }\n      }\n      entityDictionary['PropertyUserActionClass'] = PropertyUserActionClass;\n    \n      /**\n      * InfoUserAction entity class.\n      */\n      export class InfoUserActionClass\n        extends UserActionClass\n       implements Entities.InfoUserAction {\n      public FormId: string;\n      public ControlLabel: string;\n      public ControlLabelId: string;\n      public ControlName: string;\n      public Text: string;\n      public Notes: string;\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      super(odataObject);odataObject = odataObject || {};\n            this.FormId = \n                odataObject.FormId;\n              \n            this.ControlLabel = \n                odataObject.ControlLabel;\n              \n            this.ControlLabelId = \n                odataObject.ControlLabelId;\n              \n            this.ControlName = \n                odataObject.ControlName;\n              \n            this.Text = \n                odataObject.Text;\n              \n            this.Notes = \n                odataObject.Notes;\n              \n        this[\"@odata.type\"] = \"#Microsoft.Dynamics.Commerce.Runtime.DataModel.InfoUserAction\";\n      \n      }\n      }\n      entityDictionary['InfoUserActionClass'] = InfoUserActionClass;\n    \n      /**\n      * MenuItemUserAction entity class.\n      */\n      export class MenuItemUserActionClass\n        extends UserActionClass\n       implements Entities.MenuItemUserAction {\n      public MenuItemName: string;\n      public MenuItemType: string;\n      public NavigationPath: string[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      super(odataObject);odataObject = odataObject || {};\n            this.MenuItemName = \n                odataObject.MenuItemName;\n              \n            this.MenuItemType = \n                odataObject.MenuItemType;\n              \n        this.NavigationPath = undefined;\n        if (odataObject.NavigationPath) {\n        this.NavigationPath = [];\n        for (var i = 0; i < odataObject.NavigationPath.length; i++) {\n        if (odataObject.NavigationPath[i] != null) {\n            this.NavigationPath[i] = \n                odataObject.NavigationPath[i];\n                            } else {\n        this.NavigationPath[i] = undefined;\n        }\n        }\n        }\n      \n        this[\"@odata.type\"] = \"#Microsoft.Dynamics.Commerce.Runtime.DataModel.MenuItemUserAction\";\n      \n      }\n      }\n      entityDictionary['MenuItemUserActionClass'] = MenuItemUserActionClass;\n    \n      /**\n      * ValidationUserAction entity class.\n      */\n      export class ValidationUserActionClass\n        extends UserActionClass\n       implements Entities.ValidationUserAction {\n      public Name: string;\n      public Comment: string;\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      super(odataObject);odataObject = odataObject || {};\n            this.Name = \n                odataObject.Name;\n              \n            this.Comment = \n                odataObject.Comment;\n              \n        this[\"@odata.type\"] = \"#Microsoft.Dynamics.Commerce.Runtime.DataModel.ValidationUserAction\";\n      \n      }\n      }\n      entityDictionary['ValidationUserActionClass'] = ValidationUserActionClass;\n    \n      /**\n      * ArtifactSummary entity class.\n      */\n      export class ArtifactSummaryClass implements Entities.ArtifactSummary {\n      public ArtifactType: string;\n      public LanguageTags: string[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.ArtifactType = \n                odataObject.ArtifactType;\n              \n        this.LanguageTags = undefined;\n        if (odataObject.LanguageTags) {\n        this.LanguageTags = [];\n        for (var i = 0; i < odataObject.LanguageTags.length; i++) {\n        if (odataObject.LanguageTags[i] != null) {\n            this.LanguageTags[i] = \n                odataObject.LanguageTags[i];\n                            } else {\n        this.LanguageTags[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['ArtifactSummaryClass'] = ArtifactSummaryClass;\n    \n      /**\n      * MetadataPropertyValue entity class.\n      */\n      export class MetadataPropertyValueClass implements Entities.MetadataPropertyValue {\n      public PropertyId: string;\n      public SingleValue: string;\n      public MultiValue: Entities.MetadataText[];\n      public Tags: string[];\n      public ComboBox: string;\n      public MultiSelect: string[];\n      public Links: Entities.MetadataHypertextLink[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.PropertyId = \n                odataObject.PropertyId;\n              \n            this.SingleValue = \n                odataObject.SingleValue;\n              \n        this.MultiValue = undefined;\n        if (odataObject.MultiValue) {\n        this.MultiValue = [];\n        for (var i = 0; i < odataObject.MultiValue.length; i++) {\n        if (odataObject.MultiValue[i] != null) {\n        if (odataObject.MultiValue[i]['@odata.type'] != null) {\n          var className: string = odataObject.MultiValue[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.MultiValue[i] = new entityDictionary[className](odataObject.MultiValue[i])\n          }\n        } else {\n            this.MultiValue[i] = new MetadataTextClass(odataObject.MultiValue[i]);\n        }\n                    } else {\n        this.MultiValue[i] = undefined;\n        }\n        }\n        }\n      \n        this.Tags = undefined;\n        if (odataObject.Tags) {\n        this.Tags = [];\n        for (var i = 0; i < odataObject.Tags.length; i++) {\n        if (odataObject.Tags[i] != null) {\n            this.Tags[i] = \n                odataObject.Tags[i];\n                            } else {\n        this.Tags[i] = undefined;\n        }\n        }\n        }\n      \n            this.ComboBox = \n                odataObject.ComboBox;\n              \n        this.MultiSelect = undefined;\n        if (odataObject.MultiSelect) {\n        this.MultiSelect = [];\n        for (var i = 0; i < odataObject.MultiSelect.length; i++) {\n        if (odataObject.MultiSelect[i] != null) {\n            this.MultiSelect[i] = \n                odataObject.MultiSelect[i];\n                            } else {\n        this.MultiSelect[i] = undefined;\n        }\n        }\n        }\n      \n        this.Links = undefined;\n        if (odataObject.Links) {\n        this.Links = [];\n        for (var i = 0; i < odataObject.Links.length; i++) {\n        if (odataObject.Links[i] != null) {\n        if (odataObject.Links[i]['@odata.type'] != null) {\n          var className: string = odataObject.Links[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.Links[i] = new entityDictionary[className](odataObject.Links[i])\n          }\n        } else {\n            this.Links[i] = new MetadataHypertextLinkClass(odataObject.Links[i]);\n        }\n                    } else {\n        this.Links[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['MetadataPropertyValueClass'] = MetadataPropertyValueClass;\n    \n      /**\n      * FormContext entity class.\n      */\n      export class FormContextClass implements Entities.FormContext {\n      public FormID: string;\n      public FormName: string;\n      public RecordingName: string;\n      public HasMetadata: boolean;\n      public Sequence: number;\n      public Annotations: Entities.Annotation[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.FormID = \n                odataObject.FormID;\n              \n            this.FormName = \n                odataObject.FormName;\n              \n            this.RecordingName = \n                odataObject.RecordingName;\n              \n            this.HasMetadata = \n                odataObject.HasMetadata;\n              \n            this.Sequence = \n                odataObject.Sequence;\n              \n        this.Annotations = undefined;\n        if (odataObject.Annotations) {\n        this.Annotations = [];\n        for (var i = 0; i < odataObject.Annotations.length; i++) {\n        if (odataObject.Annotations[i] != null) {\n        if (odataObject.Annotations[i]['@odata.type'] != null) {\n          var className: string = odataObject.Annotations[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.Annotations[i] = new entityDictionary[className](odataObject.Annotations[i])\n          }\n        } else {\n            this.Annotations[i] = new AnnotationClass(odataObject.Annotations[i]);\n        }\n                    } else {\n        this.Annotations[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['FormContextClass'] = FormContextClass;\n    \n      /**\n      * ExtensibleFiscalRegistrationType entity class.\n      */\n      export class ExtensibleFiscalRegistrationTypeClass\n        extends ExtensibleEnumerationClass\n       implements Entities.ExtensibleFiscalRegistrationType {\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      super(odataObject);odataObject = odataObject || {};\n        this[\"@odata.type\"] = \"#Microsoft.Dynamics.Commerce.Runtime.DataModel.ExtensibleFiscalRegistrationType\";\n      \n      }\n      }\n      entityDictionary['ExtensibleFiscalRegistrationTypeClass'] = ExtensibleFiscalRegistrationTypeClass;\n    \n      /**\n      * FiscalTransactionTenderLineAdjustment entity class.\n      */\n      export class FiscalTransactionTenderLineAdjustmentClass implements Entities.FiscalTransactionTenderLineAdjustment {\n      public TenderLineNumber: number;\n      public AdjustmentAmount: number;\n      public RecordGuid: string;\n      public TransactionId: string;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.TenderLineNumber = \n                (odataObject.TenderLineNumber != null) ? parseFloat(odataObject.TenderLineNumber) : undefined;\n              \n            this.AdjustmentAmount = \n                (odataObject.AdjustmentAmount != null) ? parseFloat(odataObject.AdjustmentAmount) : undefined;\n              \n            this.RecordGuid = \n                odataObject.RecordGuid;\n              \n            this.TransactionId = \n                odataObject.TransactionId;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['FiscalTransactionTenderLineAdjustmentClass'] = FiscalTransactionTenderLineAdjustmentClass;\n    \n      /**\n      * FiscalTransactionSalesLineAdjustment entity class.\n      */\n      export class FiscalTransactionSalesLineAdjustmentClass implements Entities.FiscalTransactionSalesLineAdjustment {\n      public SalesLineNumber: number;\n      public Exclude: boolean;\n      public RecordGuid: string;\n      public TransactionId: string;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.SalesLineNumber = \n                (odataObject.SalesLineNumber != null) ? parseFloat(odataObject.SalesLineNumber) : undefined;\n              \n            this.Exclude = \n                odataObject.Exclude;\n              \n            this.RecordGuid = \n                odataObject.RecordGuid;\n              \n            this.TransactionId = \n                odataObject.TransactionId;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['FiscalTransactionSalesLineAdjustmentClass'] = FiscalTransactionSalesLineAdjustmentClass;\n    \n      /**\n      * DetailedOrderStatus entity class.\n      */\n      export class DetailedOrderStatusClass\n        extends ExtensibleEnumerationClass\n       implements Entities.DetailedOrderStatus {\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      super(odataObject);odataObject = odataObject || {};\n        this[\"@odata.type\"] = \"#Microsoft.Dynamics.Commerce.Runtime.DataModel.DetailedOrderStatus\";\n      \n      }\n      }\n      entityDictionary['DetailedOrderStatusClass'] = DetailedOrderStatusClass;\n    \n      /**\n      * LineValidationResult entity class.\n      */\n      export class LineValidationResultClass implements Entities.LineValidationResult {\n      public LineId: string;\n      public ValidationFailures: Entities.DataValidationFailure[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.LineId = \n                odataObject.LineId;\n              \n        this.ValidationFailures = undefined;\n        if (odataObject.ValidationFailures) {\n        this.ValidationFailures = [];\n        for (var i = 0; i < odataObject.ValidationFailures.length; i++) {\n        if (odataObject.ValidationFailures[i] != null) {\n        if (odataObject.ValidationFailures[i]['@odata.type'] != null) {\n          var className: string = odataObject.ValidationFailures[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ValidationFailures[i] = new entityDictionary[className](odataObject.ValidationFailures[i])\n          }\n        } else {\n            this.ValidationFailures[i] = new DataValidationFailureClass(odataObject.ValidationFailures[i]);\n        }\n                    } else {\n        this.ValidationFailures[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['LineValidationResultClass'] = LineValidationResultClass;\n    \n      /**\n      * SalesAffiliationLoyaltyTier entity class.\n      */\n      export class SalesAffiliationLoyaltyTierClass\n        extends AffiliationLoyaltyTierClass\n       implements Entities.SalesAffiliationLoyaltyTier {\n      public TransactionId: string;\n      public ChannelId: number;\n      public TerminalId: string;\n      public ReceiptId: string;\n      public StaffId: string;\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      super(odataObject);odataObject = odataObject || {};\n            this.TransactionId = \n                odataObject.TransactionId;\n              \n            this.ChannelId = \n                (odataObject.ChannelId != null) ? parseInt(odataObject.ChannelId, 10) : undefined;\n              \n            this.TerminalId = \n                odataObject.TerminalId;\n              \n            this.ReceiptId = \n                odataObject.ReceiptId;\n              \n            this.StaffId = \n                odataObject.StaffId;\n              \n        this[\"@odata.type\"] = \"#Microsoft.Dynamics.Commerce.Runtime.DataModel.SalesAffiliationLoyaltyTier\";\n      \n      }\n      }\n      entityDictionary['SalesAffiliationLoyaltyTierClass'] = SalesAffiliationLoyaltyTierClass;\n    \n      /**\n      * TaxViewLine entity class.\n      */\n      export class TaxViewLineClass implements Entities.TaxViewLine {\n      public TaxId: string;\n      public TaxAmount: number;\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.TaxId = \n                odataObject.TaxId;\n              \n            this.TaxAmount = \n                (odataObject.TaxAmount != null) ? parseFloat(odataObject.TaxAmount) : undefined;\n              \n      }\n      }\n      entityDictionary['TaxViewLineClass'] = TaxViewLineClass;\n    \n      /**\n      * Coupon entity class.\n      */\n      export class CouponClass implements Entities.Coupon {\n      public CodeId: string;\n      public Code: string;\n      public DiscountOfferId: string;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.CodeId = \n                odataObject.CodeId;\n              \n            this.Code = \n                odataObject.Code;\n              \n            this.DiscountOfferId = \n                odataObject.DiscountOfferId;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['CouponClass'] = CouponClass;\n    \n      /**\n      * CustomerAccountDepositLine entity class.\n      */\n      export class CustomerAccountDepositLineClass implements Entities.CustomerAccountDepositLine {\n      public Amount: number;\n      public CustomerAccount: string;\n      public Comment: string;\n      public StoreNumber: string;\n      public Terminal: string;\n      public Shift: string;\n      public TransactionStatusValue: number;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.Amount = \n                (odataObject.Amount != null) ? parseFloat(odataObject.Amount) : undefined;\n              \n            this.CustomerAccount = \n                odataObject.CustomerAccount;\n              \n            this.Comment = \n                odataObject.Comment;\n              \n            this.StoreNumber = \n                odataObject.StoreNumber;\n              \n            this.Terminal = \n                odataObject.Terminal;\n              \n            this.Shift = \n                odataObject.Shift;\n              \n            this.TransactionStatusValue = \n                odataObject.TransactionStatusValue;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['CustomerAccountDepositLineClass'] = CustomerAccountDepositLineClass;\n    \n      /**\n      * Note entity class.\n      */\n      export class NoteClass implements Entities.Note {\n      public Title: string;\n      public Description: string;\n      public StaffId: string;\n      public RestrictionValue: number;\n      public DocuRefRecId: number;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.Title = \n                odataObject.Title;\n              \n            this.Description = \n                odataObject.Description;\n              \n            this.StaffId = \n                odataObject.StaffId;\n              \n            this.RestrictionValue = \n                odataObject.RestrictionValue;\n              \n            this.DocuRefRecId = \n                (odataObject.DocuRefRecId != null) ? parseInt(odataObject.DocuRefRecId, 10) : undefined;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['NoteClass'] = NoteClass;\n    \n      /**\n      * CustomerAttribute entity class.\n      */\n      export class CustomerAttributeClass implements Entities.CustomerAttribute {\n      public AttributeValue: Entities.CommercePropertyValue;\n      public Units: string;\n      public RecordId: number;\n      public Name: string;\n      public KeyName: string;\n      public DataTypeValue: number;\n      public Attribute: number;\n      public NameTranslations: Entities.TextValueTranslation[];\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n        if (odataObject.AttributeValue == null) {\n            this.AttributeValue = undefined;\n        } else if (odataObject.AttributeValue['@odata.type'] == null) {\n            this.AttributeValue = new CommercePropertyValueClass(odataObject.AttributeValue);\n        } else {\n            var className: string = odataObject.AttributeValue['@odata.type'];\n            className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n            if (entityDictionary[className]) {\n                this.AttributeValue = new entityDictionary[className](odataObject.AttributeValue)\n            }\n        }\n\n      \n            this.Units = \n                odataObject.Units;\n              \n            this.RecordId = \n                (odataObject.RecordId != null) ? parseInt(odataObject.RecordId, 10) : undefined;\n              \n            this.Name = \n                odataObject.Name;\n              \n            this.KeyName = \n                odataObject.KeyName;\n              \n            this.DataTypeValue = \n                odataObject.DataTypeValue;\n              \n            this.Attribute = \n                (odataObject.Attribute != null) ? parseInt(odataObject.Attribute, 10) : undefined;\n              \n        this.NameTranslations = undefined;\n        if (odataObject.NameTranslations) {\n        this.NameTranslations = [];\n        for (var i = 0; i < odataObject.NameTranslations.length; i++) {\n        if (odataObject.NameTranslations[i] != null) {\n        if (odataObject.NameTranslations[i]['@odata.type'] != null) {\n          var className: string = odataObject.NameTranslations[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.NameTranslations[i] = new entityDictionary[className](odataObject.NameTranslations[i])\n          }\n        } else {\n            this.NameTranslations[i] = new TextValueTranslationClass(odataObject.NameTranslations[i]);\n        }\n                    } else {\n        this.NameTranslations[i] = undefined;\n        }\n        }\n        }\n      \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['CustomerAttributeClass'] = CustomerAttributeClass;\n    \n      /**\n      * ContactInfo entity class.\n      */\n      export class ContactInfoClass implements Entities.ContactInfo {\n      public AddressTypeValue: number;\n      public RecordId: number;\n      public PartyLocationRecordId: number;\n      public PartyRecordId: number;\n      public PartyNumber: string;\n      public Description: string;\n      public Value: string;\n      public ValueExtension: string;\n      public LogisticsLocationId: string;\n      public LogisticsLocationRecordId: number;\n      public ParentLocation: number;\n      public IsPrimary: boolean;\n      public IsMobilePhone: boolean;\n      public IsPrivate: boolean;\n      public IsOptedInMarketing: boolean;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.AddressTypeValue = \n                odataObject.AddressTypeValue;\n              \n            this.RecordId = \n                (odataObject.RecordId != null) ? parseInt(odataObject.RecordId, 10) : undefined;\n              \n            this.PartyLocationRecordId = \n                (odataObject.PartyLocationRecordId != null) ? parseInt(odataObject.PartyLocationRecordId, 10) : undefined;\n              \n            this.PartyRecordId = \n                (odataObject.PartyRecordId != null) ? parseInt(odataObject.PartyRecordId, 10) : undefined;\n              \n            this.PartyNumber = \n                odataObject.PartyNumber;\n              \n            this.Description = \n                odataObject.Description;\n              \n            this.Value = \n                odataObject.Value;\n              \n            this.ValueExtension = \n                odataObject.ValueExtension;\n              \n            this.LogisticsLocationId = \n                odataObject.LogisticsLocationId;\n              \n            this.LogisticsLocationRecordId = \n                (odataObject.LogisticsLocationRecordId != null) ? parseInt(odataObject.LogisticsLocationRecordId, 10) : undefined;\n              \n            this.ParentLocation = \n                (odataObject.ParentLocation != null) ? parseInt(odataObject.ParentLocation, 10) : undefined;\n              \n            this.IsPrimary = \n                odataObject.IsPrimary;\n              \n            this.IsMobilePhone = \n                odataObject.IsMobilePhone;\n              \n            this.IsPrivate = \n                odataObject.IsPrivate;\n              \n            this.IsOptedInMarketing = \n                odataObject.IsOptedInMarketing;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['ContactInfoClass'] = ContactInfoClass;\n    \n      /**\n      * InventoryQuantities entity class.\n      */\n      export class InventoryQuantitiesClass implements Entities.InventoryQuantities {\n      public UnitOfMeasure: string;\n      public QuantityNotProcessed: number;\n      public QuantityReserved: number;\n      public QuantityPicked: number;\n      public QuantityPacked: number;\n      public QuantityInvoiced: number;\n      public QuantityOrdered: number;\n      public QuantityCanceled: number;\n      public QuantityReturned: number;\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.UnitOfMeasure = \n                odataObject.UnitOfMeasure;\n              \n            this.QuantityNotProcessed = \n                (odataObject.QuantityNotProcessed != null) ? parseFloat(odataObject.QuantityNotProcessed) : undefined;\n              \n            this.QuantityReserved = \n                (odataObject.QuantityReserved != null) ? parseFloat(odataObject.QuantityReserved) : undefined;\n              \n            this.QuantityPicked = \n                (odataObject.QuantityPicked != null) ? parseFloat(odataObject.QuantityPicked) : undefined;\n              \n            this.QuantityPacked = \n                (odataObject.QuantityPacked != null) ? parseFloat(odataObject.QuantityPacked) : undefined;\n              \n            this.QuantityInvoiced = \n                (odataObject.QuantityInvoiced != null) ? parseFloat(odataObject.QuantityInvoiced) : undefined;\n              \n            this.QuantityOrdered = \n                (odataObject.QuantityOrdered != null) ? parseFloat(odataObject.QuantityOrdered) : undefined;\n              \n            this.QuantityCanceled = \n                (odataObject.QuantityCanceled != null) ? parseFloat(odataObject.QuantityCanceled) : undefined;\n              \n            this.QuantityReturned = \n                (odataObject.QuantityReturned != null) ? parseFloat(odataObject.QuantityReturned) : undefined;\n              \n      }\n      }\n      entityDictionary['InventoryQuantitiesClass'] = InventoryQuantitiesClass;\n    \n      /**\n      * DeliveryInformation entity class.\n      */\n      export class DeliveryInformationClass implements Entities.DeliveryInformation {\n      public DeliveryMode: string;\n      public DeliveryAddress: Entities.Address;\n      public DeliveryDate: Date;\n      public PickupTimeslotStartDateTime: Date;\n      public PickupTimeslotEndDateTime: Date;\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.DeliveryMode = \n                odataObject.DeliveryMode;\n              \n        if (odataObject.DeliveryAddress == null) {\n            this.DeliveryAddress = undefined;\n        } else if (odataObject.DeliveryAddress['@odata.type'] == null) {\n            this.DeliveryAddress = new AddressClass(odataObject.DeliveryAddress);\n        } else {\n            var className: string = odataObject.DeliveryAddress['@odata.type'];\n            className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n            if (entityDictionary[className]) {\n                this.DeliveryAddress = new entityDictionary[className](odataObject.DeliveryAddress)\n            }\n        }\n\n      \n            this.DeliveryDate = \n                (odataObject.DeliveryDate instanceof Date) ? odataObject.DeliveryDate\n                : (odataObject.DeliveryDate != null) ? jsonLightReadStringPropertyValue(odataObject.DeliveryDate, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.PickupTimeslotStartDateTime = \n                (odataObject.PickupTimeslotStartDateTime instanceof Date) ? odataObject.PickupTimeslotStartDateTime\n                : (odataObject.PickupTimeslotStartDateTime != null) ? jsonLightReadStringPropertyValue(odataObject.PickupTimeslotStartDateTime, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.PickupTimeslotEndDateTime = \n                (odataObject.PickupTimeslotEndDateTime instanceof Date) ? odataObject.PickupTimeslotEndDateTime\n                : (odataObject.PickupTimeslotEndDateTime != null) ? jsonLightReadStringPropertyValue(odataObject.PickupTimeslotEndDateTime, \"Edm.DateTimeOffset\", false) : undefined;\n              \n      }\n      }\n      entityDictionary['DeliveryInformationClass'] = DeliveryInformationClass;\n    \n      /**\n      * ShiftTaxLine entity class.\n      */\n      export class ShiftTaxLineClass implements Entities.ShiftTaxLine {\n      public TaxCode: string;\n      public TaxAmount: number;\n      public TaxRate: number;\n      public NetAmount: number;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.TaxCode = \n                odataObject.TaxCode;\n              \n            this.TaxAmount = \n                (odataObject.TaxAmount != null) ? parseFloat(odataObject.TaxAmount) : undefined;\n              \n            this.TaxRate = \n                (odataObject.TaxRate != null) ? parseFloat(odataObject.TaxRate) : undefined;\n              \n            this.NetAmount = \n                (odataObject.NetAmount != null) ? parseFloat(odataObject.NetAmount) : undefined;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['ShiftTaxLineClass'] = ShiftTaxLineClass;\n    \n      /**\n      * TaxRegistration entity class.\n      */\n      export class TaxRegistrationClass implements Entities.TaxRegistration {\n      public RecordId: number;\n      public Name: string;\n      public CountryRegionId: string;\n      public IsRegistrationNumberUnique: boolean;\n      public IsPrimaryAddressRestricted: boolean;\n      public TypeApplicabilityRuleRecordId: number;\n      public TypeValue: number;\n      public Description: string;\n      public DirPartyLocationRecordId: number;\n      public RegistrationNumber: string;\n      public ValidFrom: Date;\n      public ValidTo: Date;\n      public Issuer: string;\n      public IssueDate: Date;\n      public Section: string;\n      public DirectoryPartyRecordId: number;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.RecordId = \n                (odataObject.RecordId != null) ? parseInt(odataObject.RecordId, 10) : undefined;\n              \n            this.Name = \n                odataObject.Name;\n              \n            this.CountryRegionId = \n                odataObject.CountryRegionId;\n              \n            this.IsRegistrationNumberUnique = \n                odataObject.IsRegistrationNumberUnique;\n              \n            this.IsPrimaryAddressRestricted = \n                odataObject.IsPrimaryAddressRestricted;\n              \n            this.TypeApplicabilityRuleRecordId = \n                (odataObject.TypeApplicabilityRuleRecordId != null) ? parseInt(odataObject.TypeApplicabilityRuleRecordId, 10) : undefined;\n              \n            this.TypeValue = \n                odataObject.TypeValue;\n              \n            this.Description = \n                odataObject.Description;\n              \n            this.DirPartyLocationRecordId = \n                (odataObject.DirPartyLocationRecordId != null) ? parseInt(odataObject.DirPartyLocationRecordId, 10) : undefined;\n              \n            this.RegistrationNumber = \n                odataObject.RegistrationNumber;\n              \n            this.ValidFrom = \n                (odataObject.ValidFrom instanceof Date) ? odataObject.ValidFrom\n                : (odataObject.ValidFrom != null) ? jsonLightReadStringPropertyValue(odataObject.ValidFrom, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.ValidTo = \n                (odataObject.ValidTo instanceof Date) ? odataObject.ValidTo\n                : (odataObject.ValidTo != null) ? jsonLightReadStringPropertyValue(odataObject.ValidTo, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.Issuer = \n                odataObject.Issuer;\n              \n            this.IssueDate = \n                (odataObject.IssueDate instanceof Date) ? odataObject.IssueDate\n                : (odataObject.IssueDate != null) ? jsonLightReadStringPropertyValue(odataObject.IssueDate, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.Section = \n                odataObject.Section;\n              \n            this.DirectoryPartyRecordId = \n                (odataObject.DirectoryPartyRecordId != null) ? parseInt(odataObject.DirectoryPartyRecordId, 10) : undefined;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['TaxRegistrationClass'] = TaxRegistrationClass;\n    \n      /**\n      * ChannelTaxRegistration entity class.\n      */\n      export class ChannelTaxRegistrationClass\n        extends TaxRegistrationClass\n       implements Entities.ChannelTaxRegistration {\n      public ChannelId: number;\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      super(odataObject);odataObject = odataObject || {};\n            this.ChannelId = \n                (odataObject.ChannelId != null) ? parseInt(odataObject.ChannelId, 10) : undefined;\n              \n        this[\"@odata.type\"] = \"#Microsoft.Dynamics.Commerce.Runtime.DataModel.ChannelTaxRegistration\";\n      \n      }\n      }\n      entityDictionary['ChannelTaxRegistrationClass'] = ChannelTaxRegistrationClass;\n    \n      /**\n      * LinkedProduct entity class.\n      */\n      export class LinkedProductClass implements Entities.LinkedProduct {\n      public ProductRecordId: number;\n      public LinkedProductRecordId: number;\n      public Quantity: number;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.ProductRecordId = \n                (odataObject.ProductRecordId != null) ? parseInt(odataObject.ProductRecordId, 10) : undefined;\n              \n            this.LinkedProductRecordId = \n                (odataObject.LinkedProductRecordId != null) ? parseInt(odataObject.LinkedProductRecordId, 10) : undefined;\n              \n            this.Quantity = \n                (odataObject.Quantity != null) ? parseFloat(odataObject.Quantity) : undefined;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['LinkedProductClass'] = LinkedProductClass;\n    \n      /**\n      * DisplayOrderInCategory entity class.\n      */\n      export class DisplayOrderInCategoryClass implements Entities.DisplayOrderInCategory {\n      public CategoryRecordId: number;\n      public DisplayOrder: number;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.CategoryRecordId = \n                (odataObject.CategoryRecordId != null) ? parseInt(odataObject.CategoryRecordId, 10) : undefined;\n              \n            this.DisplayOrder = \n                (odataObject.DisplayOrder != null) ? parseFloat(odataObject.DisplayOrder) : undefined;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['DisplayOrderInCategoryClass'] = DisplayOrderInCategoryClass;\n    \n      /**\n      * RelatedProduct entity class.\n      */\n      export class RelatedProductClass implements Entities.RelatedProduct {\n      public ProductRecordId: number;\n      public RelatedProductRecordId: number;\n      public CatalogId: number;\n      public RelationName: string;\n      public IsExcludedRelation: boolean;\n      public IsDirectRelation: boolean;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.ProductRecordId = \n                (odataObject.ProductRecordId != null) ? parseInt(odataObject.ProductRecordId, 10) : undefined;\n              \n            this.RelatedProductRecordId = \n                (odataObject.RelatedProductRecordId != null) ? parseInt(odataObject.RelatedProductRecordId, 10) : undefined;\n              \n            this.CatalogId = \n                (odataObject.CatalogId != null) ? parseInt(odataObject.CatalogId, 10) : undefined;\n              \n            this.RelationName = \n                odataObject.RelationName;\n              \n            this.IsExcludedRelation = \n                odataObject.IsExcludedRelation;\n              \n            this.IsDirectRelation = \n                odataObject.IsDirectRelation;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['RelatedProductClass'] = RelatedProductClass;\n    \n      /**\n      * KitComponent entity class.\n      */\n      export class KitComponentClass implements Entities.KitComponent {\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['KitComponentClass'] = KitComponentClass;\n    \n      /**\n      * ChannelReferenceAdditionalLookupCriteria entity class.\n      */\n      export class ChannelReferenceAdditionalLookupCriteriaClass implements Entities.ChannelReferenceAdditionalLookupCriteria {\n      public OrderLookupAdditionalCriteriaTypeValue: number;\n      public OrderLookupAdditionalCriteriaTypeParameterValue: string;\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.OrderLookupAdditionalCriteriaTypeValue = \n                odataObject.OrderLookupAdditionalCriteriaTypeValue;\n              \n            this.OrderLookupAdditionalCriteriaTypeParameterValue = \n                odataObject.OrderLookupAdditionalCriteriaTypeParameterValue;\n              \n      }\n      }\n      entityDictionary['ChannelReferenceAdditionalLookupCriteriaClass'] = ChannelReferenceAdditionalLookupCriteriaClass;\n    \n      /**\n      * UserAlertFulfillmentLineParameter entity class.\n      */\n      export class UserAlertFulfillmentLineParameterClass\n        extends FulfillmentLineParameterClass\n       implements Entities.UserAlertFulfillmentLineParameter {\n      public ItemId: string;\n      public ProductId: number;\n      public UnitOfMeasure: string;\n      public SerialNumberInLatestFulfillmentTransaction: string;\n      public LatestFulfillmentTransactionOperationTypeValue: number;\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      super(odataObject);odataObject = odataObject || {};\n            this.ItemId = \n                odataObject.ItemId;\n              \n            this.ProductId = \n                (odataObject.ProductId != null) ? parseInt(odataObject.ProductId, 10) : undefined;\n              \n            this.UnitOfMeasure = \n                odataObject.UnitOfMeasure;\n              \n            this.SerialNumberInLatestFulfillmentTransaction = \n                odataObject.SerialNumberInLatestFulfillmentTransaction;\n              \n            this.LatestFulfillmentTransactionOperationTypeValue = \n                odataObject.LatestFulfillmentTransactionOperationTypeValue;\n              \n        this[\"@odata.type\"] = \"#Microsoft.Dynamics.Commerce.Runtime.DataModel.UserAlertFulfillmentLineParameter\";\n      \n      }\n      }\n      entityDictionary['UserAlertFulfillmentLineParameterClass'] = UserAlertFulfillmentLineParameterClass;\n    \n      /**\n      * ListingIdentity entity class.\n      */\n      export class ListingIdentityClass implements Entities.ListingIdentity {\n      public ProductId: number;\n      public LanguageId: string;\n      public CatalogId: number;\n      public Tag: string;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.ProductId = \n                (odataObject.ProductId != null) ? parseInt(odataObject.ProductId, 10) : undefined;\n              \n            this.LanguageId = \n                odataObject.LanguageId;\n              \n            this.CatalogId = \n                (odataObject.CatalogId != null) ? parseInt(odataObject.CatalogId, 10) : undefined;\n              \n            this.Tag = \n                odataObject.Tag;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['ListingIdentityClass'] = ListingIdentityClass;\n    \n      /**\n      * ProductRatingCount entity class.\n      */\n      export class ProductRatingCountClass implements Entities.ProductRatingCount {\n      public Rating: number;\n      public Count: number;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.Rating = \n                (odataObject.Rating != null) ? parseFloat(odataObject.Rating) : undefined;\n              \n            this.Count = \n                odataObject.Count;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['ProductRatingCountClass'] = ProductRatingCountClass;\n    \n      /**\n      * RegularStoreHours entity class.\n      */\n      export class RegularStoreHoursClass implements Entities.RegularStoreHours {\n      public MondayOpenTime: number;\n      public MondayCloseTime: number;\n      public IsClosedOnMonday: boolean;\n      public TuesdayOpenTime: number;\n      public TuesdayCloseTime: number;\n      public IsClosedOnTuesday: boolean;\n      public WednesdayOpenTime: number;\n      public WednesdayCloseTime: number;\n      public IsClosedOnWednesday: boolean;\n      public ThursdayOpenTime: number;\n      public ThursdayCloseTime: number;\n      public IsClosedOnThursday: boolean;\n      public FridayOpenTime: number;\n      public FridayCloseTime: number;\n      public IsClosedOnFriday: boolean;\n      public SaturdayOpenTime: number;\n      public SaturdayCloseTime: number;\n      public IsClosedOnSaturday: boolean;\n      public SundayOpenTime: number;\n      public SundayCloseTime: number;\n      public IsClosedOnSunday: boolean;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.MondayOpenTime = \n                odataObject.MondayOpenTime;\n              \n            this.MondayCloseTime = \n                odataObject.MondayCloseTime;\n              \n            this.IsClosedOnMonday = \n                odataObject.IsClosedOnMonday;\n              \n            this.TuesdayOpenTime = \n                odataObject.TuesdayOpenTime;\n              \n            this.TuesdayCloseTime = \n                odataObject.TuesdayCloseTime;\n              \n            this.IsClosedOnTuesday = \n                odataObject.IsClosedOnTuesday;\n              \n            this.WednesdayOpenTime = \n                odataObject.WednesdayOpenTime;\n              \n            this.WednesdayCloseTime = \n                odataObject.WednesdayCloseTime;\n              \n            this.IsClosedOnWednesday = \n                odataObject.IsClosedOnWednesday;\n              \n            this.ThursdayOpenTime = \n                odataObject.ThursdayOpenTime;\n              \n            this.ThursdayCloseTime = \n                odataObject.ThursdayCloseTime;\n              \n            this.IsClosedOnThursday = \n                odataObject.IsClosedOnThursday;\n              \n            this.FridayOpenTime = \n                odataObject.FridayOpenTime;\n              \n            this.FridayCloseTime = \n                odataObject.FridayCloseTime;\n              \n            this.IsClosedOnFriday = \n                odataObject.IsClosedOnFriday;\n              \n            this.SaturdayOpenTime = \n                odataObject.SaturdayOpenTime;\n              \n            this.SaturdayCloseTime = \n                odataObject.SaturdayCloseTime;\n              \n            this.IsClosedOnSaturday = \n                odataObject.IsClosedOnSaturday;\n              \n            this.SundayOpenTime = \n                odataObject.SundayOpenTime;\n              \n            this.SundayCloseTime = \n                odataObject.SundayCloseTime;\n              \n            this.IsClosedOnSunday = \n                odataObject.IsClosedOnSunday;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['RegularStoreHoursClass'] = RegularStoreHoursClass;\n    \n      /**\n      * ValidationPeriod entity class.\n      */\n      export class ValidationPeriodClass implements Entities.ValidationPeriod {\n      public RecordId: number;\n      public PeriodId: string;\n      public Description: string;\n      public ValidFrom: Date;\n      public ValidTo: Date;\n      public StartingTime: number;\n      public EndingTime: number;\n      public IsTimeBounded: number;\n      public MondayStartingTime: number;\n      public MondayEndingTime: number;\n      public IsMondayTimeBounded: number;\n      public TuesdayStartingTime: number;\n      public TuesdayEndingTime: number;\n      public IsTuesdayTimeBounded: number;\n      public WednesdayStartingTime: number;\n      public WednesdayEndingTime: number;\n      public IsWednesdayTimeBounded: number;\n      public ThursdayStartingTime: number;\n      public ThursdayEndingTime: number;\n      public IsThursdayTimeBounded: number;\n      public FridayStartingTime: number;\n      public FridayEndingTime: number;\n      public IsFridayTimeBounded: number;\n      public SaturdayStartingTime: number;\n      public SaturdayEndingTime: number;\n      public IsSaturdayTimeBounded: number;\n      public SundayStartingTime: number;\n      public SundayEndingTime: number;\n      public IsSundayTimeBounded: number;\n      public IsEndTimeAfterMidnight: number;\n      public IsMondayEndTimeAfterMidnight: number;\n      public IsTuesdayEndTimeAfterMidnight: number;\n      public IsWednesdayEndTimeAfterMidnight: number;\n      public IsThursdayEndTimeAfterMidnight: number;\n      public IsFridayEndTimeAfterMidnight: number;\n      public IsSaturdayEndTimeAfterMidnight: number;\n      public IsSundayEndTimeAfterMidnight: number;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.RecordId = \n                (odataObject.RecordId != null) ? parseInt(odataObject.RecordId, 10) : undefined;\n              \n            this.PeriodId = \n                odataObject.PeriodId;\n              \n            this.Description = \n                odataObject.Description;\n              \n            this.ValidFrom = \n                (odataObject.ValidFrom instanceof Date) ? odataObject.ValidFrom\n                : (odataObject.ValidFrom != null) ? jsonLightReadStringPropertyValue(odataObject.ValidFrom, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.ValidTo = \n                (odataObject.ValidTo instanceof Date) ? odataObject.ValidTo\n                : (odataObject.ValidTo != null) ? jsonLightReadStringPropertyValue(odataObject.ValidTo, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.StartingTime = \n                odataObject.StartingTime;\n              \n            this.EndingTime = \n                odataObject.EndingTime;\n              \n            this.IsTimeBounded = \n                odataObject.IsTimeBounded;\n              \n            this.MondayStartingTime = \n                odataObject.MondayStartingTime;\n              \n            this.MondayEndingTime = \n                odataObject.MondayEndingTime;\n              \n            this.IsMondayTimeBounded = \n                odataObject.IsMondayTimeBounded;\n              \n            this.TuesdayStartingTime = \n                odataObject.TuesdayStartingTime;\n              \n            this.TuesdayEndingTime = \n                odataObject.TuesdayEndingTime;\n              \n            this.IsTuesdayTimeBounded = \n                odataObject.IsTuesdayTimeBounded;\n              \n            this.WednesdayStartingTime = \n                odataObject.WednesdayStartingTime;\n              \n            this.WednesdayEndingTime = \n                odataObject.WednesdayEndingTime;\n              \n            this.IsWednesdayTimeBounded = \n                odataObject.IsWednesdayTimeBounded;\n              \n            this.ThursdayStartingTime = \n                odataObject.ThursdayStartingTime;\n              \n            this.ThursdayEndingTime = \n                odataObject.ThursdayEndingTime;\n              \n            this.IsThursdayTimeBounded = \n                odataObject.IsThursdayTimeBounded;\n              \n            this.FridayStartingTime = \n                odataObject.FridayStartingTime;\n              \n            this.FridayEndingTime = \n                odataObject.FridayEndingTime;\n              \n            this.IsFridayTimeBounded = \n                odataObject.IsFridayTimeBounded;\n              \n            this.SaturdayStartingTime = \n                odataObject.SaturdayStartingTime;\n              \n            this.SaturdayEndingTime = \n                odataObject.SaturdayEndingTime;\n              \n            this.IsSaturdayTimeBounded = \n                odataObject.IsSaturdayTimeBounded;\n              \n            this.SundayStartingTime = \n                odataObject.SundayStartingTime;\n              \n            this.SundayEndingTime = \n                odataObject.SundayEndingTime;\n              \n            this.IsSundayTimeBounded = \n                odataObject.IsSundayTimeBounded;\n              \n            this.IsEndTimeAfterMidnight = \n                odataObject.IsEndTimeAfterMidnight;\n              \n            this.IsMondayEndTimeAfterMidnight = \n                odataObject.IsMondayEndTimeAfterMidnight;\n              \n            this.IsTuesdayEndTimeAfterMidnight = \n                odataObject.IsTuesdayEndTimeAfterMidnight;\n              \n            this.IsWednesdayEndTimeAfterMidnight = \n                odataObject.IsWednesdayEndTimeAfterMidnight;\n              \n            this.IsThursdayEndTimeAfterMidnight = \n                odataObject.IsThursdayEndTimeAfterMidnight;\n              \n            this.IsFridayEndTimeAfterMidnight = \n                odataObject.IsFridayEndTimeAfterMidnight;\n              \n            this.IsSaturdayEndTimeAfterMidnight = \n                odataObject.IsSaturdayEndTimeAfterMidnight;\n              \n            this.IsSundayEndTimeAfterMidnight = \n                odataObject.IsSundayEndTimeAfterMidnight;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['ValidationPeriodClass'] = ValidationPeriodClass;\n    \n      /**\n      * PriceLookupHeaderContext entity class.\n      */\n      export class PriceLookupHeaderContextClass implements Entities.PriceLookupHeaderContext {\n      public CustomerAccountNumber: string;\n      public AffiliationLoyaltyTierLines: Entities.AffiliationLoyaltyTier[];\n      public SalesOrderProperties: Entities.AttributeValueBase[];\n      public ChannelId: number;\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.CustomerAccountNumber = \n                odataObject.CustomerAccountNumber;\n              \n        this.AffiliationLoyaltyTierLines = undefined;\n        if (odataObject.AffiliationLoyaltyTierLines) {\n        this.AffiliationLoyaltyTierLines = [];\n        for (var i = 0; i < odataObject.AffiliationLoyaltyTierLines.length; i++) {\n        if (odataObject.AffiliationLoyaltyTierLines[i] != null) {\n        if (odataObject.AffiliationLoyaltyTierLines[i]['@odata.type'] != null) {\n          var className: string = odataObject.AffiliationLoyaltyTierLines[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.AffiliationLoyaltyTierLines[i] = new entityDictionary[className](odataObject.AffiliationLoyaltyTierLines[i])\n          }\n        } else {\n            this.AffiliationLoyaltyTierLines[i] = new AffiliationLoyaltyTierClass(odataObject.AffiliationLoyaltyTierLines[i]);\n        }\n                    } else {\n        this.AffiliationLoyaltyTierLines[i] = undefined;\n        }\n        }\n        }\n      \n        this.SalesOrderProperties = undefined;\n        if (odataObject.SalesOrderProperties) {\n        this.SalesOrderProperties = [];\n        for (var i = 0; i < odataObject.SalesOrderProperties.length; i++) {\n        if (odataObject.SalesOrderProperties[i] != null) {\n        if (odataObject.SalesOrderProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.SalesOrderProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.SalesOrderProperties[i] = new entityDictionary[className](odataObject.SalesOrderProperties[i])\n          }\n        } else {\n            this.SalesOrderProperties[i] = new AttributeValueBaseClass(odataObject.SalesOrderProperties[i]);\n        }\n                    } else {\n        this.SalesOrderProperties[i] = undefined;\n        }\n        }\n        }\n      \n            this.ChannelId = \n                (odataObject.ChannelId != null) ? parseInt(odataObject.ChannelId, 10) : undefined;\n              \n      }\n      }\n      entityDictionary['PriceLookupHeaderContextClass'] = PriceLookupHeaderContextClass;\n    \n      /**\n      * PriceLookupLineContext entity class.\n      */\n      export class PriceLookupLineContextClass implements Entities.PriceLookupLineContext {\n      public ProductRecordId: number;\n      public UnitOfMeasureSymbol: string;\n      public InventorySiteId: string;\n      public InventoryLocationId: string;\n      public DeliveryMode: string;\n      public CatalogId: number;\n      public SalesLineProperties: Entities.AttributeValueBase[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.ProductRecordId = \n                (odataObject.ProductRecordId != null) ? parseInt(odataObject.ProductRecordId, 10) : undefined;\n              \n            this.UnitOfMeasureSymbol = \n                odataObject.UnitOfMeasureSymbol;\n              \n            this.InventorySiteId = \n                odataObject.InventorySiteId;\n              \n            this.InventoryLocationId = \n                odataObject.InventoryLocationId;\n              \n            this.DeliveryMode = \n                odataObject.DeliveryMode;\n              \n            this.CatalogId = \n                (odataObject.CatalogId != null) ? parseInt(odataObject.CatalogId, 10) : undefined;\n              \n        this.SalesLineProperties = undefined;\n        if (odataObject.SalesLineProperties) {\n        this.SalesLineProperties = [];\n        for (var i = 0; i < odataObject.SalesLineProperties.length; i++) {\n        if (odataObject.SalesLineProperties[i] != null) {\n        if (odataObject.SalesLineProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.SalesLineProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.SalesLineProperties[i] = new entityDictionary[className](odataObject.SalesLineProperties[i])\n          }\n        } else {\n            this.SalesLineProperties[i] = new AttributeValueBaseClass(odataObject.SalesLineProperties[i]);\n        }\n                    } else {\n        this.SalesLineProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['PriceLookupLineContextClass'] = PriceLookupLineContextClass;\n    \n      /**\n      * ClientBookChange entity class.\n      */\n      export class ClientBookChangeClass implements Entities.ClientBookChange {\n      public FromStaffId: string;\n      public ToStaffId: string;\n      public CustomerId: string;\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.FromStaffId = \n                odataObject.FromStaffId;\n              \n            this.ToStaffId = \n                odataObject.ToStaffId;\n              \n            this.CustomerId = \n                odataObject.CustomerId;\n              \n      }\n      }\n      entityDictionary['ClientBookChangeClass'] = ClientBookChangeClass;\n    \n      /**\n      * ChannelProfile entity class.\n      */\n      export class ChannelProfileClass implements Entities.ChannelProfile {\n      public ProfileProperties: Entities.ChannelProfileProperty[];\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n        this.ProfileProperties = undefined;\n        if (odataObject.ProfileProperties) {\n        this.ProfileProperties = [];\n        for (var i = 0; i < odataObject.ProfileProperties.length; i++) {\n        if (odataObject.ProfileProperties[i] != null) {\n        if (odataObject.ProfileProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ProfileProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ProfileProperties[i] = new entityDictionary[className](odataObject.ProfileProperties[i])\n          }\n        } else {\n            this.ProfileProperties[i] = new ChannelProfilePropertyClass(odataObject.ProfileProperties[i]);\n        }\n                    } else {\n        this.ProfileProperties[i] = undefined;\n        }\n        }\n        }\n      \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['ChannelProfileClass'] = ChannelProfileClass;\n    \n      /**\n      * RetailSharedConfigurationParameter entity class.\n      */\n      export class RetailSharedConfigurationParameterClass implements Entities.RetailSharedConfigurationParameter {\n      public RecordId: number;\n      public Name: string;\n      public Value: string;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.RecordId = \n                (odataObject.RecordId != null) ? parseInt(odataObject.RecordId, 10) : undefined;\n              \n            this.Name = \n                odataObject.Name;\n              \n            this.Value = \n                odataObject.Value;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['RetailSharedConfigurationParameterClass'] = RetailSharedConfigurationParameterClass;\n    \n      /**\n      * CDXDataStore entity class.\n      */\n      export class CDXDataStoreClass implements Entities.CDXDataStore {\n      public Name: string;\n      public RecId: number;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.Name = \n                odataObject.Name;\n              \n            this.RecId = \n                (odataObject.RecId != null) ? parseInt(odataObject.RecId, 10) : undefined;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['CDXDataStoreClass'] = CDXDataStoreClass;\n    \n      /**\n      * UploadJobPackageRequest entity class.\n      */\n      export class UploadJobPackageRequestClass implements Entities.UploadJobPackageRequest {\n      public JobId: string;\n      public RerunUploadSessionId: number;\n      public TargetStorage: string;\n      public UploadJobDefintion: string;\n      public UploadUrl: string;\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.JobId = \n                odataObject.JobId;\n              \n            this.RerunUploadSessionId = \n                (odataObject.RerunUploadSessionId != null) ? parseInt(odataObject.RerunUploadSessionId, 10) : undefined;\n              \n            this.TargetStorage = \n                odataObject.TargetStorage;\n              \n            this.UploadJobDefintion = \n                odataObject.UploadJobDefintion;\n              \n            this.UploadUrl = \n                odataObject.UploadUrl;\n              \n      }\n      }\n      entityDictionary['UploadJobPackageRequestClass'] = UploadJobPackageRequestClass;\n    \n      /**\n      * ExtensibleAuditEventType entity class.\n      */\n      export class ExtensibleAuditEventTypeClass\n        extends ExtensibleEnumerationClass\n       implements Entities.ExtensibleAuditEventType {\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      super(odataObject);odataObject = odataObject || {};\n        this[\"@odata.type\"] = \"#Microsoft.Dynamics.Commerce.Runtime.DataModel.ExtensibleAuditEventType\";\n      \n      }\n      }\n      entityDictionary['ExtensibleAuditEventTypeClass'] = ExtensibleAuditEventTypeClass;\n    \n      /**\n      * AuditEventFiscalTransaction entity class.\n      */\n      export class AuditEventFiscalTransactionClass implements Entities.AuditEventFiscalTransaction {\n      public EventId: number;\n      public LineNumber: number;\n      public RegisterResponse: string;\n      public Store: string;\n      public TransDateTime: Date;\n      public Terminal: string;\n      public UploadType: string;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.EventId = \n                (odataObject.EventId != null) ? parseInt(odataObject.EventId, 10) : undefined;\n              \n            this.LineNumber = \n                (odataObject.LineNumber != null) ? parseFloat(odataObject.LineNumber) : undefined;\n              \n            this.RegisterResponse = \n                odataObject.RegisterResponse;\n              \n            this.Store = \n                odataObject.Store;\n              \n            this.TransDateTime = \n                (odataObject.TransDateTime instanceof Date) ? odataObject.TransDateTime\n                : (odataObject.TransDateTime != null) ? jsonLightReadStringPropertyValue(odataObject.TransDateTime, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.Terminal = \n                odataObject.Terminal;\n              \n            this.UploadType = \n                odataObject.UploadType;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['AuditEventFiscalTransactionClass'] = AuditEventFiscalTransactionClass;\n    \n      /**\n      * AuditEventFiscalRegistrationLine entity class.\n      */\n      export class AuditEventFiscalRegistrationLineClass implements Entities.AuditEventFiscalRegistrationLine {\n      public EventId: number;\n      public RegisterResponse: string;\n      public StoreId: string;\n      public TransactionDateTime: Date;\n      public TerminalId: string;\n      public UploadType: string;\n      public UploadTypeValue: number;\n      public StaffId: string;\n      public RecordGuid: string;\n      public RegistrationStatusValue: number;\n      public RegistrationProcessId: string;\n      public ConnectorGroup: string;\n      public ConnectorName: string;\n      public ConnectorFunctionalityProfileId: string;\n      public RegisterInfo: string;\n      public CreatedDateTime: Date;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.EventId = \n                (odataObject.EventId != null) ? parseInt(odataObject.EventId, 10) : undefined;\n              \n            this.RegisterResponse = \n                odataObject.RegisterResponse;\n              \n            this.StoreId = \n                odataObject.StoreId;\n              \n            this.TransactionDateTime = \n                (odataObject.TransactionDateTime instanceof Date) ? odataObject.TransactionDateTime\n                : (odataObject.TransactionDateTime != null) ? jsonLightReadStringPropertyValue(odataObject.TransactionDateTime, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.TerminalId = \n                odataObject.TerminalId;\n              \n            this.UploadType = \n                odataObject.UploadType;\n              \n            this.UploadTypeValue = \n                odataObject.UploadTypeValue;\n              \n            this.StaffId = \n                odataObject.StaffId;\n              \n            this.RecordGuid = \n                odataObject.RecordGuid;\n              \n            this.RegistrationStatusValue = \n                odataObject.RegistrationStatusValue;\n              \n            this.RegistrationProcessId = \n                odataObject.RegistrationProcessId;\n              \n            this.ConnectorGroup = \n                odataObject.ConnectorGroup;\n              \n            this.ConnectorName = \n                odataObject.ConnectorName;\n              \n            this.ConnectorFunctionalityProfileId = \n                odataObject.ConnectorFunctionalityProfileId;\n              \n            this.RegisterInfo = \n                odataObject.RegisterInfo;\n              \n            this.CreatedDateTime = \n                (odataObject.CreatedDateTime instanceof Date) ? odataObject.CreatedDateTime\n                : (odataObject.CreatedDateTime != null) ? jsonLightReadStringPropertyValue(odataObject.CreatedDateTime, \"Edm.DateTimeOffset\", false) : undefined;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['AuditEventFiscalRegistrationLineClass'] = AuditEventFiscalRegistrationLineClass;\n    \n      /**\n      * NotificationDetail entity class.\n      */\n      export class NotificationDetailClass implements Entities.NotificationDetail {\n      public ActionProperty: string;\n      public ItemCount: number;\n      public DisplayText: string;\n      public IsNew: boolean;\n      public LastUpdatedDateTimeStr: string;\n      public IsSuccess: boolean;\n      public IsLiveContentOnly: boolean;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.ActionProperty = \n                odataObject.ActionProperty;\n              \n            this.ItemCount = \n                (odataObject.ItemCount != null) ? parseInt(odataObject.ItemCount, 10) : undefined;\n              \n            this.DisplayText = \n                odataObject.DisplayText;\n              \n            this.IsNew = \n                odataObject.IsNew;\n              \n            this.LastUpdatedDateTimeStr = \n                odataObject.LastUpdatedDateTimeStr;\n              \n            this.IsSuccess = \n                odataObject.IsSuccess;\n              \n            this.IsLiveContentOnly = \n                odataObject.IsLiveContentOnly;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['NotificationDetailClass'] = NotificationDetailClass;\n    \n      /**\n      * FiscalIntegrationDocumentContext entity class.\n      */\n      export class FiscalIntegrationDocumentContextClass implements Entities.FiscalIntegrationDocumentContext {\n      public AuditEvent: Entities.AuditEvent;\n      public SignatureData: Entities.FiscalIntegrationSequentialSignatureData[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n        if (odataObject.AuditEvent == null) {\n            this.AuditEvent = undefined;\n        } else if (odataObject.AuditEvent['@odata.type'] == null) {\n            this.AuditEvent = new AuditEventClass(odataObject.AuditEvent);\n        } else {\n            var className: string = odataObject.AuditEvent['@odata.type'];\n            className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n            if (entityDictionary[className]) {\n                this.AuditEvent = new entityDictionary[className](odataObject.AuditEvent)\n            }\n        }\n\n      \n        this.SignatureData = undefined;\n        if (odataObject.SignatureData) {\n        this.SignatureData = [];\n        for (var i = 0; i < odataObject.SignatureData.length; i++) {\n        if (odataObject.SignatureData[i] != null) {\n        if (odataObject.SignatureData[i]['@odata.type'] != null) {\n          var className: string = odataObject.SignatureData[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.SignatureData[i] = new entityDictionary[className](odataObject.SignatureData[i])\n          }\n        } else {\n            this.SignatureData[i] = new FiscalIntegrationSequentialSignatureDataClass(odataObject.SignatureData[i]);\n        }\n                    } else {\n        this.SignatureData[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['FiscalIntegrationDocumentContextClass'] = FiscalIntegrationDocumentContextClass;\n    \n      /**\n      * FiscalIntegrationDocumentAdjustment entity class.\n      */\n      export class FiscalIntegrationDocumentAdjustmentClass implements Entities.FiscalIntegrationDocumentAdjustment {\n      public TenderLineAdjustments: Entities.FiscalTransactionTenderLineAdjustment[];\n      public SalesLineAdjustments: Entities.FiscalTransactionSalesLineAdjustment[];\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n        this.TenderLineAdjustments = undefined;\n        if (odataObject.TenderLineAdjustments) {\n        this.TenderLineAdjustments = [];\n        for (var i = 0; i < odataObject.TenderLineAdjustments.length; i++) {\n        if (odataObject.TenderLineAdjustments[i] != null) {\n        if (odataObject.TenderLineAdjustments[i]['@odata.type'] != null) {\n          var className: string = odataObject.TenderLineAdjustments[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.TenderLineAdjustments[i] = new entityDictionary[className](odataObject.TenderLineAdjustments[i])\n          }\n        } else {\n            this.TenderLineAdjustments[i] = new FiscalTransactionTenderLineAdjustmentClass(odataObject.TenderLineAdjustments[i]);\n        }\n                    } else {\n        this.TenderLineAdjustments[i] = undefined;\n        }\n        }\n        }\n      \n        this.SalesLineAdjustments = undefined;\n        if (odataObject.SalesLineAdjustments) {\n        this.SalesLineAdjustments = [];\n        for (var i = 0; i < odataObject.SalesLineAdjustments.length; i++) {\n        if (odataObject.SalesLineAdjustments[i] != null) {\n        if (odataObject.SalesLineAdjustments[i]['@odata.type'] != null) {\n          var className: string = odataObject.SalesLineAdjustments[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.SalesLineAdjustments[i] = new entityDictionary[className](odataObject.SalesLineAdjustments[i])\n          }\n        } else {\n            this.SalesLineAdjustments[i] = new FiscalTransactionSalesLineAdjustmentClass(odataObject.SalesLineAdjustments[i]);\n        }\n                    } else {\n        this.SalesLineAdjustments[i] = undefined;\n        }\n        }\n        }\n      \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['FiscalIntegrationDocumentAdjustmentClass'] = FiscalIntegrationDocumentAdjustmentClass;\n    \n      /**\n      * FiscalIntegrationSignatureDataContext entity class.\n      */\n      export class FiscalIntegrationSignatureDataContextClass implements Entities.FiscalIntegrationSignatureDataContext {\n      public SequentialSignatureKey: string;\n      public SequentialNumber: number;\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.SequentialSignatureKey = \n                odataObject.SequentialSignatureKey;\n              \n            this.SequentialNumber = \n                (odataObject.SequentialNumber != null) ? parseInt(odataObject.SequentialNumber, 10) : undefined;\n              \n      }\n      }\n      entityDictionary['FiscalIntegrationSignatureDataContextClass'] = FiscalIntegrationSignatureDataContextClass;\n    \n      /**\n      * FiscalIntegrationRegistrationProcessLine entity class.\n      */\n      export class FiscalIntegrationRegistrationProcessLineClass implements Entities.FiscalIntegrationRegistrationProcessLine {\n      public RegistrationProcessId: string;\n      public SequenceNumber: number;\n      public Priority: number;\n      public ConnectorTypeValue: number;\n      public FunctionalityProfileGroupId: string;\n      public AllowSkip: boolean;\n      public AllowMarkAsRegistered: boolean;\n      public AllowPostpone: boolean;\n      public Optional: boolean;\n      public RegistrationSettings: Entities.FiscalIntegrationRegistrationSettings;\n      public SupportedFiscalEventTypes: number[];\n      public SupportedNonFiscalEventTypes: number[];\n      public SequentialKeys: string[];\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.RegistrationProcessId = \n                odataObject.RegistrationProcessId;\n              \n            this.SequenceNumber = \n                odataObject.SequenceNumber;\n              \n            this.Priority = \n                odataObject.Priority;\n              \n            this.ConnectorTypeValue = \n                odataObject.ConnectorTypeValue;\n              \n            this.FunctionalityProfileGroupId = \n                odataObject.FunctionalityProfileGroupId;\n              \n            this.AllowSkip = \n                odataObject.AllowSkip;\n              \n            this.AllowMarkAsRegistered = \n                odataObject.AllowMarkAsRegistered;\n              \n            this.AllowPostpone = \n                odataObject.AllowPostpone;\n              \n            this.Optional = \n                odataObject.Optional;\n              \n        if (odataObject.RegistrationSettings == null) {\n            this.RegistrationSettings = undefined;\n        } else if (odataObject.RegistrationSettings['@odata.type'] == null) {\n            this.RegistrationSettings = new FiscalIntegrationRegistrationSettingsClass(odataObject.RegistrationSettings);\n        } else {\n            var className: string = odataObject.RegistrationSettings['@odata.type'];\n            className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n            if (entityDictionary[className]) {\n                this.RegistrationSettings = new entityDictionary[className](odataObject.RegistrationSettings)\n            }\n        }\n\n      \n        this.SupportedFiscalEventTypes = undefined;\n        if (odataObject.SupportedFiscalEventTypes) {\n        this.SupportedFiscalEventTypes = [];\n        for (var i = 0; i < odataObject.SupportedFiscalEventTypes.length; i++) {\n        if (odataObject.SupportedFiscalEventTypes[i] != null) {\n            this.SupportedFiscalEventTypes[i] = \n                odataObject.SupportedFiscalEventTypes[i];\n                            } else {\n        this.SupportedFiscalEventTypes[i] = undefined;\n        }\n        }\n        }\n      \n        this.SupportedNonFiscalEventTypes = undefined;\n        if (odataObject.SupportedNonFiscalEventTypes) {\n        this.SupportedNonFiscalEventTypes = [];\n        for (var i = 0; i < odataObject.SupportedNonFiscalEventTypes.length; i++) {\n        if (odataObject.SupportedNonFiscalEventTypes[i] != null) {\n            this.SupportedNonFiscalEventTypes[i] = \n                odataObject.SupportedNonFiscalEventTypes[i];\n                            } else {\n        this.SupportedNonFiscalEventTypes[i] = undefined;\n        }\n        }\n        }\n      \n        this.SequentialKeys = undefined;\n        if (odataObject.SequentialKeys) {\n        this.SequentialKeys = [];\n        for (var i = 0; i < odataObject.SequentialKeys.length; i++) {\n        if (odataObject.SequentialKeys[i] != null) {\n            this.SequentialKeys[i] = \n                odataObject.SequentialKeys[i];\n                            } else {\n        this.SequentialKeys[i] = undefined;\n        }\n        }\n        }\n      \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['FiscalIntegrationRegistrationProcessLineClass'] = FiscalIntegrationRegistrationProcessLineClass;\n    \n      /**\n      * FiscalIntegrationRegistrationSettings entity class.\n      */\n      export class FiscalIntegrationRegistrationSettingsClass implements Entities.FiscalIntegrationRegistrationSettings {\n      public SkipReasonCode: string;\n      public MarkAsRegisteredReasonCode: string;\n      public PostponeReasonCode: string;\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.SkipReasonCode = \n                odataObject.SkipReasonCode;\n              \n            this.MarkAsRegisteredReasonCode = \n                odataObject.MarkAsRegisteredReasonCode;\n              \n            this.PostponeReasonCode = \n                odataObject.PostponeReasonCode;\n              \n      }\n      }\n      entityDictionary['FiscalIntegrationRegistrationSettingsClass'] = FiscalIntegrationRegistrationSettingsClass;\n    \n      /**\n      * FiscalIntegrationFiscalRegistrationProcessSummaryLine entity class.\n      */\n      export class FiscalIntegrationFiscalRegistrationProcessSummaryLineClass implements Entities.FiscalIntegrationFiscalRegistrationProcessSummaryLine {\n      public RegistrationProcessLine: Entities.FiscalIntegrationRegistrationProcessLine;\n      public ConnectorName: string;\n      public ConnectorTypeValue: number;\n      public ConnectorLocationValue: number;\n      public ConnectionProperties: Entities.FiscalIntegrationConfigurationProperty[];\n      public ErrorCode: number;\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n        if (odataObject.RegistrationProcessLine == null) {\n            this.RegistrationProcessLine = undefined;\n        } else if (odataObject.RegistrationProcessLine['@odata.type'] == null) {\n            this.RegistrationProcessLine = new FiscalIntegrationRegistrationProcessLineClass(odataObject.RegistrationProcessLine);\n        } else {\n            var className: string = odataObject.RegistrationProcessLine['@odata.type'];\n            className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n            if (entityDictionary[className]) {\n                this.RegistrationProcessLine = new entityDictionary[className](odataObject.RegistrationProcessLine)\n            }\n        }\n\n      \n            this.ConnectorName = \n                odataObject.ConnectorName;\n              \n            this.ConnectorTypeValue = \n                odataObject.ConnectorTypeValue;\n              \n            this.ConnectorLocationValue = \n                odataObject.ConnectorLocationValue;\n              \n        this.ConnectionProperties = undefined;\n        if (odataObject.ConnectionProperties) {\n        this.ConnectionProperties = [];\n        for (var i = 0; i < odataObject.ConnectionProperties.length; i++) {\n        if (odataObject.ConnectionProperties[i] != null) {\n        if (odataObject.ConnectionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ConnectionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ConnectionProperties[i] = new entityDictionary[className](odataObject.ConnectionProperties[i])\n          }\n        } else {\n            this.ConnectionProperties[i] = new FiscalIntegrationConfigurationPropertyClass(odataObject.ConnectionProperties[i]);\n        }\n                    } else {\n        this.ConnectionProperties[i] = undefined;\n        }\n        }\n        }\n      \n            this.ErrorCode = \n                odataObject.ErrorCode;\n              \n      }\n      }\n      entityDictionary['FiscalIntegrationFiscalRegistrationProcessSummaryLineClass'] = FiscalIntegrationFiscalRegistrationProcessSummaryLineClass;\n    \n      /**\n      * FiscalIntegrationConfigurationProperty entity class.\n      */\n      export class FiscalIntegrationConfigurationPropertyClass implements Entities.FiscalIntegrationConfigurationProperty {\n      public LabelName: string;\n      public Value: string;\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.LabelName = \n                odataObject.LabelName;\n              \n            this.Value = \n                odataObject.Value;\n              \n      }\n      }\n      entityDictionary['FiscalIntegrationConfigurationPropertyClass'] = FiscalIntegrationConfigurationPropertyClass;\n    \n      /**\n      * FiscalIntegrationServiceFailureDetails entity class.\n      */\n      export class FiscalIntegrationServiceFailureDetailsClass implements Entities.FiscalIntegrationServiceFailureDetails {\n      public FailureTypeValue: number;\n      public IsRetryAllowed: boolean;\n      public ErrorCode: string;\n      public ErrorMessage: string;\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.FailureTypeValue = \n                odataObject.FailureTypeValue;\n              \n            this.IsRetryAllowed = \n                odataObject.IsRetryAllowed;\n              \n            this.ErrorCode = \n                odataObject.ErrorCode;\n              \n            this.ErrorMessage = \n                odataObject.ErrorMessage;\n              \n      }\n      }\n      entityDictionary['FiscalIntegrationServiceFailureDetailsClass'] = FiscalIntegrationServiceFailureDetailsClass;\n    \n      /**\n      * CategoryPath entity class.\n      */\n      export class CategoryPathClass implements Entities.CategoryPath {\n      public Segments: Entities.CategoryPathSegment[];\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n        this.Segments = undefined;\n        if (odataObject.Segments) {\n        this.Segments = [];\n        for (var i = 0; i < odataObject.Segments.length; i++) {\n        if (odataObject.Segments[i] != null) {\n        if (odataObject.Segments[i]['@odata.type'] != null) {\n          var className: string = odataObject.Segments[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.Segments[i] = new entityDictionary[className](odataObject.Segments[i])\n          }\n        } else {\n            this.Segments[i] = new CategoryPathSegmentClass(odataObject.Segments[i]);\n        }\n                    } else {\n        this.Segments[i] = undefined;\n        }\n        }\n        }\n      \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['CategoryPathClass'] = CategoryPathClass;\n    \n      /**\n      * CategoryPathSegment entity class.\n      */\n      export class CategoryPathSegmentClass implements Entities.CategoryPathSegment {\n      public CategoryName: string;\n      public CategoryId: number;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.CategoryName = \n                odataObject.CategoryName;\n              \n            this.CategoryId = \n                (odataObject.CategoryId != null) ? parseInt(odataObject.CategoryId, 10) : undefined;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['CategoryPathSegmentClass'] = CategoryPathSegmentClass;\n    \n      /**\n      * SalesLineConfirmedShipDateChange entity class.\n      */\n      export class SalesLineConfirmedShipDateChangeClass implements Entities.SalesLineConfirmedShipDateChange {\n      public LineNumber: number;\n      public ConfirmedShipDate: Date;\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.LineNumber = \n                (odataObject.LineNumber != null) ? parseFloat(odataObject.LineNumber) : undefined;\n              \n            this.ConfirmedShipDate = \n                (odataObject.ConfirmedShipDate instanceof Date) ? odataObject.ConfirmedShipDate\n                : (odataObject.ConfirmedShipDate != null) ? jsonLightReadStringPropertyValue(odataObject.ConfirmedShipDate, \"Edm.DateTimeOffset\", false) : undefined;\n              \n      }\n      }\n      entityDictionary['SalesLineConfirmedShipDateChangeClass'] = SalesLineConfirmedShipDateChangeClass;\n    \n      /**\n      * AttachedService entity class.\n      */\n      export class AttachedServiceClass implements Entities.AttachedService {\n      public BaseUrl: string;\n      public ServiceId: string;\n      public StatusValue: number;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.BaseUrl = \n                odataObject.BaseUrl;\n              \n            this.ServiceId = \n                odataObject.ServiceId;\n              \n            this.StatusValue = \n                odataObject.StatusValue;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['AttachedServiceClass'] = AttachedServiceClass;\n    \n      /**\n      * ExtensibleInventoryJournalType entity class.\n      */\n      export class ExtensibleInventoryJournalTypeClass\n        extends ExtensibleEnumerationClass\n       implements Entities.ExtensibleInventoryJournalType {\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      super(odataObject);odataObject = odataObject || {};\n        this[\"@odata.type\"] = \"#Microsoft.Dynamics.Commerce.Runtime.DataModel.ExtensibleInventoryJournalType\";\n      \n      }\n      }\n      entityDictionary['ExtensibleInventoryJournalTypeClass'] = ExtensibleInventoryJournalTypeClass;\n    \n      /**\n      * CustomerTimelineItemType entity class.\n      */\n      export class CustomerTimelineItemTypeClass implements Entities.CustomerTimelineItemType {\n      public Description: string;\n      public TypeId: string;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.Description = \n                odataObject.Description;\n              \n            this.TypeId = \n                odataObject.TypeId;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['CustomerTimelineItemTypeClass'] = CustomerTimelineItemTypeClass;\n    \n      /**\n      * ProductWarehouseInventoryAvailability entity class.\n      */\n      export class ProductWarehouseInventoryAvailabilityClass implements Entities.ProductWarehouseInventoryAvailability {\n      public ProductId: number;\n      public InventLocationId: string;\n      public DataAreaId: string;\n      public PhysicalInventory: number;\n      public PhysicalReserved: number;\n      public TotalAvailable: number;\n      public TotalAvailableInventoryLevelLabel: string;\n      public TotalAvailableInventoryLevelCode: string;\n      public OrderedInTotal: number;\n      public PhysicalAvailable: number;\n      public PhysicalAvailableInventoryLevelLabel: string;\n      public PhysicalAvailableInventoryLevelCode: string;\n      public LastInventoryTransactionId: number;\n      public UnpostedOnlineOrderedQuantity: number;\n      public UnpostedFulfilledQuantity: number;\n      public IsInventoryAvailabilityQuantityReturned: boolean;\n      public UnprocessedQuantity: number;\n      public QuantityUnitTypeValue: number;\n      public UnitOfMeasure: string;\n      public MaximumPurchasablePhysicalAvailableQuantity: number;\n      public MaximumPurchasableTotalAvailableQuantity: number;\n      public SumUncountedTransactions: number;\n      public IgnoreQuantityUnitType: boolean;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.ProductId = \n                (odataObject.ProductId != null) ? parseInt(odataObject.ProductId, 10) : undefined;\n              \n            this.InventLocationId = \n                odataObject.InventLocationId;\n              \n            this.DataAreaId = \n                odataObject.DataAreaId;\n              \n            this.PhysicalInventory = \n                (odataObject.PhysicalInventory != null) ? parseFloat(odataObject.PhysicalInventory) : undefined;\n              \n            this.PhysicalReserved = \n                (odataObject.PhysicalReserved != null) ? parseFloat(odataObject.PhysicalReserved) : undefined;\n              \n            this.TotalAvailable = \n                (odataObject.TotalAvailable != null) ? parseFloat(odataObject.TotalAvailable) : undefined;\n              \n            this.TotalAvailableInventoryLevelLabel = \n                odataObject.TotalAvailableInventoryLevelLabel;\n              \n            this.TotalAvailableInventoryLevelCode = \n                odataObject.TotalAvailableInventoryLevelCode;\n              \n            this.OrderedInTotal = \n                (odataObject.OrderedInTotal != null) ? parseFloat(odataObject.OrderedInTotal) : undefined;\n              \n            this.PhysicalAvailable = \n                (odataObject.PhysicalAvailable != null) ? parseFloat(odataObject.PhysicalAvailable) : undefined;\n              \n            this.PhysicalAvailableInventoryLevelLabel = \n                odataObject.PhysicalAvailableInventoryLevelLabel;\n              \n            this.PhysicalAvailableInventoryLevelCode = \n                odataObject.PhysicalAvailableInventoryLevelCode;\n              \n            this.LastInventoryTransactionId = \n                (odataObject.LastInventoryTransactionId != null) ? parseInt(odataObject.LastInventoryTransactionId, 10) : undefined;\n              \n            this.UnpostedOnlineOrderedQuantity = \n                (odataObject.UnpostedOnlineOrderedQuantity != null) ? parseFloat(odataObject.UnpostedOnlineOrderedQuantity) : undefined;\n              \n            this.UnpostedFulfilledQuantity = \n                (odataObject.UnpostedFulfilledQuantity != null) ? parseFloat(odataObject.UnpostedFulfilledQuantity) : undefined;\n              \n            this.IsInventoryAvailabilityQuantityReturned = \n                odataObject.IsInventoryAvailabilityQuantityReturned;\n              \n            this.UnprocessedQuantity = \n                (odataObject.UnprocessedQuantity != null) ? parseFloat(odataObject.UnprocessedQuantity) : undefined;\n              \n            this.QuantityUnitTypeValue = \n                odataObject.QuantityUnitTypeValue;\n              \n            this.UnitOfMeasure = \n                odataObject.UnitOfMeasure;\n              \n            this.MaximumPurchasablePhysicalAvailableQuantity = \n                (odataObject.MaximumPurchasablePhysicalAvailableQuantity != null) ? parseFloat(odataObject.MaximumPurchasablePhysicalAvailableQuantity) : undefined;\n              \n            this.MaximumPurchasableTotalAvailableQuantity = \n                (odataObject.MaximumPurchasableTotalAvailableQuantity != null) ? parseFloat(odataObject.MaximumPurchasableTotalAvailableQuantity) : undefined;\n              \n            this.SumUncountedTransactions = \n                (odataObject.SumUncountedTransactions != null) ? parseFloat(odataObject.SumUncountedTransactions) : undefined;\n              \n            this.IgnoreQuantityUnitType = \n                odataObject.IgnoreQuantityUnitType;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['ProductWarehouseInventoryAvailabilityClass'] = ProductWarehouseInventoryAvailabilityClass;\n    \n      /**\n      * QuantityUnitType entity class.\n      */\n      export class QuantityUnitTypeClass\n        extends ExtensibleEnumerationClass\n       implements Entities.QuantityUnitType {\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      super(odataObject);odataObject = odataObject || {};\n        this[\"@odata.type\"] = \"#Microsoft.Dynamics.Commerce.Runtime.DataModel.QuantityUnitType\";\n      \n      }\n      }\n      entityDictionary['QuantityUnitTypeClass'] = QuantityUnitTypeClass;\n    \n      /**\n      * ProductInventoryAvailability entity class.\n      */\n      export class ProductInventoryAvailabilityClass implements Entities.ProductInventoryAvailability {\n      public ProductId: number;\n      public DataAreaId: string;\n      public TotalAvailableQuantity: number;\n      public TotalAvailableInventoryLevelLabel: string;\n      public TotalAvailableInventoryLevelCode: string;\n      public PhysicalAvailableQuantity: number;\n      public PhysicalAvailableInventoryLevelLabel: string;\n      public PhysicalAvailableInventoryLevelCode: string;\n      public QuantityUnitTypeValue: number;\n      public UnitOfMeasure: string;\n      public MaximumPurchasablePhysicalAvailableQuantity: number;\n      public MaximumPurchasableTotalAvailableQuantity: number;\n      public IgnoreQuantityUnitType: boolean;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.ProductId = \n                (odataObject.ProductId != null) ? parseInt(odataObject.ProductId, 10) : undefined;\n              \n            this.DataAreaId = \n                odataObject.DataAreaId;\n              \n            this.TotalAvailableQuantity = \n                (odataObject.TotalAvailableQuantity != null) ? parseFloat(odataObject.TotalAvailableQuantity) : undefined;\n              \n            this.TotalAvailableInventoryLevelLabel = \n                odataObject.TotalAvailableInventoryLevelLabel;\n              \n            this.TotalAvailableInventoryLevelCode = \n                odataObject.TotalAvailableInventoryLevelCode;\n              \n            this.PhysicalAvailableQuantity = \n                (odataObject.PhysicalAvailableQuantity != null) ? parseFloat(odataObject.PhysicalAvailableQuantity) : undefined;\n              \n            this.PhysicalAvailableInventoryLevelLabel = \n                odataObject.PhysicalAvailableInventoryLevelLabel;\n              \n            this.PhysicalAvailableInventoryLevelCode = \n                odataObject.PhysicalAvailableInventoryLevelCode;\n              \n            this.QuantityUnitTypeValue = \n                odataObject.QuantityUnitTypeValue;\n              \n            this.UnitOfMeasure = \n                odataObject.UnitOfMeasure;\n              \n            this.MaximumPurchasablePhysicalAvailableQuantity = \n                (odataObject.MaximumPurchasablePhysicalAvailableQuantity != null) ? parseFloat(odataObject.MaximumPurchasablePhysicalAvailableQuantity) : undefined;\n              \n            this.MaximumPurchasableTotalAvailableQuantity = \n                (odataObject.MaximumPurchasableTotalAvailableQuantity != null) ? parseFloat(odataObject.MaximumPurchasableTotalAvailableQuantity) : undefined;\n              \n            this.IgnoreQuantityUnitType = \n                odataObject.IgnoreQuantityUnitType;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['ProductInventoryAvailabilityClass'] = ProductInventoryAvailabilityClass;\n    \n      /**\n      * InventoryQuantity entity class.\n      */\n      export class InventoryQuantityClass implements Entities.InventoryQuantity {\n      public ProductId: number;\n      public ItemId: string;\n      public DataAreaId: string;\n      public ColorId: string;\n      public SizeId: string;\n      public StyleId: string;\n      public ConfigurationId: string;\n      public InventoryLocationId: string;\n      public InventorySiteId: string;\n      public TotalAvailable: number;\n      public PhysicalAvailable: number;\n      public PhysicalInventory: number;\n      public PhysicalReserved: number;\n      public OrderedInTotal: number;\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.ProductId = \n                (odataObject.ProductId != null) ? parseInt(odataObject.ProductId, 10) : undefined;\n              \n            this.ItemId = \n                odataObject.ItemId;\n              \n            this.DataAreaId = \n                odataObject.DataAreaId;\n              \n            this.ColorId = \n                odataObject.ColorId;\n              \n            this.SizeId = \n                odataObject.SizeId;\n              \n            this.StyleId = \n                odataObject.StyleId;\n              \n            this.ConfigurationId = \n                odataObject.ConfigurationId;\n              \n            this.InventoryLocationId = \n                odataObject.InventoryLocationId;\n              \n            this.InventorySiteId = \n                odataObject.InventorySiteId;\n              \n            this.TotalAvailable = \n                (odataObject.TotalAvailable != null) ? parseFloat(odataObject.TotalAvailable) : undefined;\n              \n            this.PhysicalAvailable = \n                (odataObject.PhysicalAvailable != null) ? parseFloat(odataObject.PhysicalAvailable) : undefined;\n              \n            this.PhysicalInventory = \n                (odataObject.PhysicalInventory != null) ? parseFloat(odataObject.PhysicalInventory) : undefined;\n              \n            this.PhysicalReserved = \n                (odataObject.PhysicalReserved != null) ? parseFloat(odataObject.PhysicalReserved) : undefined;\n              \n            this.OrderedInTotal = \n                (odataObject.OrderedInTotal != null) ? parseFloat(odataObject.OrderedInTotal) : undefined;\n              \n      }\n      }\n      entityDictionary['InventoryQuantityClass'] = InventoryQuantityClass;\n    \n      /**\n      * ProductUnit entity class.\n      */\n      export class ProductUnitClass implements Entities.ProductUnit {\n      public ProductId: number;\n      public UnitOfMeasure: string;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.ProductId = \n                (odataObject.ProductId != null) ? parseInt(odataObject.ProductId, 10) : undefined;\n              \n            this.UnitOfMeasure = \n                odataObject.UnitOfMeasure;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['ProductUnitClass'] = ProductUnitClass;\n    \n      /**\n      * ParameterSet entity class.\n      */\n      export class ParameterSetClass implements Entities.ParameterSet {\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n      }\n      }\n      entityDictionary['ParameterSetClass'] = ParameterSetClass;\n    \n      /**\n      * CartLineValidationResults entity class.\n      */\n      export class CartLineValidationResultsClass implements Entities.CartLineValidationResults {\n      public ValidationResultsByLineId: Entities.CartLineValidationResultsByLineId;\n      public ValidationFailuresByCartLines: Entities.LineDataValidationFailure[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n        if (odataObject.ValidationResultsByLineId == null) {\n            this.ValidationResultsByLineId = undefined;\n        } else if (odataObject.ValidationResultsByLineId['@odata.type'] == null) {\n            this.ValidationResultsByLineId = new CartLineValidationResultsByLineIdClass(odataObject.ValidationResultsByLineId);\n        } else {\n            var className: string = odataObject.ValidationResultsByLineId['@odata.type'];\n            className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n            if (entityDictionary[className]) {\n                this.ValidationResultsByLineId = new entityDictionary[className](odataObject.ValidationResultsByLineId)\n            }\n        }\n\n      \n        this.ValidationFailuresByCartLines = undefined;\n        if (odataObject.ValidationFailuresByCartLines) {\n        this.ValidationFailuresByCartLines = [];\n        for (var i = 0; i < odataObject.ValidationFailuresByCartLines.length; i++) {\n        if (odataObject.ValidationFailuresByCartLines[i] != null) {\n        if (odataObject.ValidationFailuresByCartLines[i]['@odata.type'] != null) {\n          var className: string = odataObject.ValidationFailuresByCartLines[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ValidationFailuresByCartLines[i] = new entityDictionary[className](odataObject.ValidationFailuresByCartLines[i])\n          }\n        } else {\n            this.ValidationFailuresByCartLines[i] = new LineDataValidationFailureClass(odataObject.ValidationFailuresByCartLines[i]);\n        }\n                    } else {\n        this.ValidationFailuresByCartLines[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['CartLineValidationResultsClass'] = CartLineValidationResultsClass;\n    \n      /**\n      * CommerceException entity class.\n      */\n      export class CommerceExceptionClass implements Entities.CommerceException {\n      public LocalizedMessage: string;\n      public ErrorResourceId: string;\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.LocalizedMessage = \n                odataObject.LocalizedMessage;\n              \n            this.ErrorResourceId = \n                odataObject.ErrorResourceId;\n              \n      }\n      }\n      entityDictionary['CommerceExceptionClass'] = CommerceExceptionClass;\n    \n      /**\n      * DataValidationException entity class.\n      */\n      export class DataValidationExceptionClass\n        extends CommerceExceptionClass\n       implements Entities.DataValidationException {\n      public ValidationResults: Entities.DataValidationFailure[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      super(odataObject);odataObject = odataObject || {};\n        this.ValidationResults = undefined;\n        if (odataObject.ValidationResults) {\n        this.ValidationResults = [];\n        for (var i = 0; i < odataObject.ValidationResults.length; i++) {\n        if (odataObject.ValidationResults[i] != null) {\n        if (odataObject.ValidationResults[i]['@odata.type'] != null) {\n          var className: string = odataObject.ValidationResults[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ValidationResults[i] = new entityDictionary[className](odataObject.ValidationResults[i])\n          }\n        } else {\n            this.ValidationResults[i] = new DataValidationFailureClass(odataObject.ValidationResults[i]);\n        }\n                    } else {\n        this.ValidationResults[i] = undefined;\n        }\n        }\n        }\n      \n        this[\"@odata.type\"] = \"#Microsoft.Dynamics.Commerce.Runtime.DataValidationException\";\n      \n      }\n      }\n      entityDictionary['DataValidationExceptionClass'] = DataValidationExceptionClass;\n    \n      /**\n      * MissingRequiredReasonCodeException entity class.\n      */\n      export class MissingRequiredReasonCodeExceptionClass\n        extends DataValidationExceptionClass\n       implements Entities.MissingRequiredReasonCodeException {\n      public RequiredReasonCodes: Entities.ReasonCode[];\n      public TransactionRequiredReasonCodeIds: string[];\n      public ReasonCodeRequirements: Entities.ReasonCodeRequirement[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      super(odataObject);odataObject = odataObject || {};\n        this.RequiredReasonCodes = undefined;\n        if (odataObject.RequiredReasonCodes) {\n        this.RequiredReasonCodes = [];\n        for (var i = 0; i < odataObject.RequiredReasonCodes.length; i++) {\n        if (odataObject.RequiredReasonCodes[i] != null) {\n        if (odataObject.RequiredReasonCodes[i]['@odata.type'] != null) {\n          var className: string = odataObject.RequiredReasonCodes[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.RequiredReasonCodes[i] = new entityDictionary[className](odataObject.RequiredReasonCodes[i])\n          }\n        } else {\n            this.RequiredReasonCodes[i] = new ReasonCodeClass(odataObject.RequiredReasonCodes[i]);\n        }\n                    } else {\n        this.RequiredReasonCodes[i] = undefined;\n        }\n        }\n        }\n      \n        this.TransactionRequiredReasonCodeIds = undefined;\n        if (odataObject.TransactionRequiredReasonCodeIds) {\n        this.TransactionRequiredReasonCodeIds = [];\n        for (var i = 0; i < odataObject.TransactionRequiredReasonCodeIds.length; i++) {\n        if (odataObject.TransactionRequiredReasonCodeIds[i] != null) {\n            this.TransactionRequiredReasonCodeIds[i] = \n                odataObject.TransactionRequiredReasonCodeIds[i];\n                            } else {\n        this.TransactionRequiredReasonCodeIds[i] = undefined;\n        }\n        }\n        }\n      \n        this.ReasonCodeRequirements = undefined;\n        if (odataObject.ReasonCodeRequirements) {\n        this.ReasonCodeRequirements = [];\n        for (var i = 0; i < odataObject.ReasonCodeRequirements.length; i++) {\n        if (odataObject.ReasonCodeRequirements[i] != null) {\n        if (odataObject.ReasonCodeRequirements[i]['@odata.type'] != null) {\n          var className: string = odataObject.ReasonCodeRequirements[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ReasonCodeRequirements[i] = new entityDictionary[className](odataObject.ReasonCodeRequirements[i])\n          }\n        } else {\n            this.ReasonCodeRequirements[i] = new ReasonCodeRequirementClass(odataObject.ReasonCodeRequirements[i]);\n        }\n                    } else {\n        this.ReasonCodeRequirements[i] = undefined;\n        }\n        }\n        }\n      \n        this[\"@odata.type\"] = \"#Microsoft.Dynamics.Commerce.Runtime.MissingRequiredReasonCodeException\";\n      \n      }\n      }\n      entityDictionary['MissingRequiredReasonCodeExceptionClass'] = MissingRequiredReasonCodeExceptionClass;\n    \n      /**\n      * SecurityException entity class.\n      */\n      export class SecurityExceptionClass\n        extends CommerceExceptionClass\n       implements Entities.SecurityException {\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      super(odataObject);odataObject = odataObject || {};\n        this[\"@odata.type\"] = \"#Microsoft.Dynamics.Commerce.Runtime.SecurityException\";\n      \n      }\n      }\n      entityDictionary['SecurityExceptionClass'] = SecurityExceptionClass;\n    \n      /**\n      * DeviceAuthenticationException entity class.\n      */\n      export class DeviceAuthenticationExceptionClass\n        extends SecurityExceptionClass\n       implements Entities.DeviceAuthenticationException {\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      super(odataObject);odataObject = odataObject || {};\n        this[\"@odata.type\"] = \"#Microsoft.Dynamics.Commerce.Runtime.DeviceAuthenticationException\";\n      \n      }\n      }\n      entityDictionary['DeviceAuthenticationExceptionClass'] = DeviceAuthenticationExceptionClass;\n    \n      /**\n      * HeadquarterTransactionServiceException entity class.\n      */\n      export class HeadquarterTransactionServiceExceptionClass\n        extends CommerceExceptionClass\n       implements Entities.HeadquarterTransactionServiceException {\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      super(odataObject);odataObject = odataObject || {};\n        this[\"@odata.type\"] = \"#Microsoft.Dynamics.Commerce.Runtime.HeadquarterTransactionServiceException\";\n      \n      }\n      }\n      entityDictionary['HeadquarterTransactionServiceExceptionClass'] = HeadquarterTransactionServiceExceptionClass;\n    \n      /**\n      * UserAuthenticationException entity class.\n      */\n      export class UserAuthenticationExceptionClass\n        extends SecurityExceptionClass\n       implements Entities.UserAuthenticationException {\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      super(odataObject);odataObject = odataObject || {};\n        this[\"@odata.type\"] = \"#Microsoft.Dynamics.Commerce.Runtime.UserAuthenticationException\";\n      \n      }\n      }\n      entityDictionary['UserAuthenticationExceptionClass'] = UserAuthenticationExceptionClass;\n    \n      /**\n      * UserAuthorizationException entity class.\n      */\n      export class UserAuthorizationExceptionClass\n        extends SecurityExceptionClass\n       implements Entities.UserAuthorizationException {\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      super(odataObject);odataObject = odataObject || {};\n        this[\"@odata.type\"] = \"#Microsoft.Dynamics.Commerce.Runtime.UserAuthorizationException\";\n      \n      }\n      }\n      entityDictionary['UserAuthorizationExceptionClass'] = UserAuthorizationExceptionClass;\n    \n      /**\n      * FeatureNotSupportedException entity class.\n      */\n      export class FeatureNotSupportedExceptionClass\n        extends CommerceExceptionClass\n       implements Entities.FeatureNotSupportedException {\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      super(odataObject);odataObject = odataObject || {};\n        this[\"@odata.type\"] = \"#Microsoft.Dynamics.Commerce.Runtime.FeatureNotSupportedException\";\n      \n      }\n      }\n      entityDictionary['FeatureNotSupportedExceptionClass'] = FeatureNotSupportedExceptionClass;\n    \n      /**\n      * CartValidationException entity class.\n      */\n      export class CartValidationExceptionClass\n        extends DataValidationExceptionClass\n       implements Entities.CartValidationException {\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      super(odataObject);odataObject = odataObject || {};\n        this[\"@odata.type\"] = \"#Microsoft.Dynamics.Commerce.Runtime.CartValidationException\";\n      \n      }\n      }\n      entityDictionary['CartValidationExceptionClass'] = CartValidationExceptionClass;\n    \n      /**\n      * TenderValidationException entity class.\n      */\n      export class TenderValidationExceptionClass\n        extends DataValidationExceptionClass\n       implements Entities.TenderValidationException {\n      public TenderTypeId: string;\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      super(odataObject);odataObject = odataObject || {};\n            this.TenderTypeId = \n                odataObject.TenderTypeId;\n              \n        this[\"@odata.type\"] = \"#Microsoft.Dynamics.Commerce.Runtime.TenderValidationException\";\n      \n      }\n      }\n      entityDictionary['TenderValidationExceptionClass'] = TenderValidationExceptionClass;\n    \n      /**\n      * CommerceDataExchangeException entity class.\n      */\n      export class CommerceDataExchangeExceptionClass\n        extends CommerceExceptionClass\n       implements Entities.CommerceDataExchangeException {\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      super(odataObject);odataObject = odataObject || {};\n        this[\"@odata.type\"] = \"#Microsoft.Dynamics.Commerce.Runtime.CommerceDataExchangeException\";\n      \n      }\n      }\n      entityDictionary['CommerceDataExchangeExceptionClass'] = CommerceDataExchangeExceptionClass;\n    \n      /**\n      * ExtensibleEnumerationException entity class.\n      */\n      export class ExtensibleEnumerationExceptionClass\n        extends CommerceExceptionClass\n       implements Entities.ExtensibleEnumerationException {\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      super(odataObject);odataObject = odataObject || {};\n        this[\"@odata.type\"] = \"#Microsoft.Dynamics.Commerce.Runtime.ExtensibleEnumerationException\";\n      \n      }\n      }\n      entityDictionary['ExtensibleEnumerationExceptionClass'] = ExtensibleEnumerationExceptionClass;\n    \n      /**\n      * TaskManagementException entity class.\n      */\n      export class TaskManagementExceptionClass\n        extends CommerceExceptionClass\n       implements Entities.TaskManagementException {\n      public TaskManagementErrors: Entities.TaskManagementError[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      super(odataObject);odataObject = odataObject || {};\n        this.TaskManagementErrors = undefined;\n        if (odataObject.TaskManagementErrors) {\n        this.TaskManagementErrors = [];\n        for (var i = 0; i < odataObject.TaskManagementErrors.length; i++) {\n        if (odataObject.TaskManagementErrors[i] != null) {\n        if (odataObject.TaskManagementErrors[i]['@odata.type'] != null) {\n          var className: string = odataObject.TaskManagementErrors[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.TaskManagementErrors[i] = new entityDictionary[className](odataObject.TaskManagementErrors[i])\n          }\n        } else {\n            this.TaskManagementErrors[i] = new TaskManagementErrorClass(odataObject.TaskManagementErrors[i]);\n        }\n                    } else {\n        this.TaskManagementErrors[i] = undefined;\n        }\n        }\n        }\n      \n        this[\"@odata.type\"] = \"#Microsoft.Dynamics.Commerce.Runtime.TaskManagementException\";\n      \n      }\n      }\n      entityDictionary['TaskManagementExceptionClass'] = TaskManagementExceptionClass;\n    \n      /**\n      * TaskManagementServerException entity class.\n      */\n      export class TaskManagementServerExceptionClass\n        extends TaskManagementExceptionClass\n       implements Entities.TaskManagementServerException {\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      super(odataObject);odataObject = odataObject || {};\n        this[\"@odata.type\"] = \"#Microsoft.Dynamics.Commerce.Runtime.TaskManagementServerException\";\n      \n      }\n      }\n      entityDictionary['TaskManagementServerExceptionClass'] = TaskManagementServerExceptionClass;\n    \n      /**\n      * TaskManagementClientException entity class.\n      */\n      export class TaskManagementClientExceptionClass\n        extends TaskManagementExceptionClass\n       implements Entities.TaskManagementClientException {\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      super(odataObject);odataObject = odataObject || {};\n        this[\"@odata.type\"] = \"#Microsoft.Dynamics.Commerce.Runtime.TaskManagementClientException\";\n      \n      }\n      }\n      entityDictionary['TaskManagementClientExceptionClass'] = TaskManagementClientExceptionClass;\n    \n      /**\n      * RemoteServiceNotAvailableException entity class.\n      */\n      export class RemoteServiceNotAvailableExceptionClass\n        extends CommerceExceptionClass\n       implements Entities.RemoteServiceNotAvailableException {\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      super(odataObject);odataObject = odataObject || {};\n        this[\"@odata.type\"] = \"#Microsoft.Dynamics.Commerce.Runtime.RemoteServiceNotAvailableException\";\n      \n      }\n      }\n      entityDictionary['RemoteServiceNotAvailableExceptionClass'] = RemoteServiceNotAvailableExceptionClass;\n    \n      /**\n      * PaymentException entity class.\n      */\n      export class PaymentExceptionClass\n        extends CommerceExceptionClass\n       implements Entities.PaymentException {\n      public AdditionalContext: string;\n      public PaymentSdkErrors: Entities.PaymentError[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      super(odataObject);odataObject = odataObject || {};\n            this.AdditionalContext = \n                odataObject.AdditionalContext;\n              \n        this.PaymentSdkErrors = undefined;\n        if (odataObject.PaymentSdkErrors) {\n        this.PaymentSdkErrors = [];\n        for (var i = 0; i < odataObject.PaymentSdkErrors.length; i++) {\n        if (odataObject.PaymentSdkErrors[i] != null) {\n        if (odataObject.PaymentSdkErrors[i]['@odata.type'] != null) {\n          var className: string = odataObject.PaymentSdkErrors[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.PaymentSdkErrors[i] = new entityDictionary[className](odataObject.PaymentSdkErrors[i])\n          }\n        } else {\n            this.PaymentSdkErrors[i] = new PaymentErrorClass(odataObject.PaymentSdkErrors[i]);\n        }\n                    } else {\n        this.PaymentSdkErrors[i] = undefined;\n        }\n        }\n        }\n      \n        this[\"@odata.type\"] = \"#Microsoft.Dynamics.Commerce.Runtime.PaymentException\";\n      \n      }\n      }\n      entityDictionary['PaymentExceptionClass'] = PaymentExceptionClass;\n    \n      /**\n      * DataValidationFailure entity class.\n      */\n      export class DataValidationFailureClass implements Entities.DataValidationFailure {\n      public ErrorContext: string;\n      public ErrorResourceId: string;\n      public MemberNames: string[];\n      public LocalizedMessage: string;\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.ErrorContext = \n                odataObject.ErrorContext;\n              \n            this.ErrorResourceId = \n                odataObject.ErrorResourceId;\n              \n        this.MemberNames = undefined;\n        if (odataObject.MemberNames) {\n        this.MemberNames = [];\n        for (var i = 0; i < odataObject.MemberNames.length; i++) {\n        if (odataObject.MemberNames[i] != null) {\n            this.MemberNames[i] = \n                odataObject.MemberNames[i];\n                            } else {\n        this.MemberNames[i] = undefined;\n        }\n        }\n        }\n      \n            this.LocalizedMessage = \n                odataObject.LocalizedMessage;\n              \n      }\n      }\n      entityDictionary['DataValidationFailureClass'] = DataValidationFailureClass;\n    \n      /**\n      * ItemDiscontinuedException entity class.\n      */\n      export class ItemDiscontinuedExceptionClass\n        extends CommerceExceptionClass\n       implements Entities.ItemDiscontinuedException {\n      public RemovedUnavailableItemIds: string;\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      super(odataObject);odataObject = odataObject || {};\n            this.RemovedUnavailableItemIds = \n                odataObject.RemovedUnavailableItemIds;\n              \n        this[\"@odata.type\"] = \"#Microsoft.Dynamics.Commerce.Runtime.ItemDiscontinuedException\";\n      \n      }\n      }\n      entityDictionary['ItemDiscontinuedExceptionClass'] = ItemDiscontinuedExceptionClass;\n    \n      /**\n      * InventoryDocumentLockedByOtherTerminalException entity class.\n      */\n      export class InventoryDocumentLockedByOtherTerminalExceptionClass\n        extends DataValidationExceptionClass\n       implements Entities.InventoryDocumentLockedByOtherTerminalException {\n      public WorkingTerminalId: string;\n      public CurrentTerminalId: string;\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      super(odataObject);odataObject = odataObject || {};\n            this.WorkingTerminalId = \n                odataObject.WorkingTerminalId;\n              \n            this.CurrentTerminalId = \n                odataObject.CurrentTerminalId;\n              \n        this[\"@odata.type\"] = \"#Microsoft.Dynamics.Commerce.Runtime.InventoryDocumentLockedByOtherTerminalException\";\n      \n      }\n      }\n      entityDictionary['InventoryDocumentLockedByOtherTerminalExceptionClass'] = InventoryDocumentLockedByOtherTerminalExceptionClass;\n    \n      /**\n      * InventoryDocumentExceedMaximumQuantityException entity class.\n      */\n      export class InventoryDocumentExceedMaximumQuantityExceptionClass\n        extends DataValidationExceptionClass\n       implements Entities.InventoryDocumentExceedMaximumQuantityException {\n      public MaximumQuantity: number;\n      public AllowOverDelivery: boolean;\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      super(odataObject);odataObject = odataObject || {};\n            this.MaximumQuantity = \n                (odataObject.MaximumQuantity != null) ? parseFloat(odataObject.MaximumQuantity) : undefined;\n              \n            this.AllowOverDelivery = \n                odataObject.AllowOverDelivery;\n              \n        this[\"@odata.type\"] = \"#Microsoft.Dynamics.Commerce.Runtime.InventoryDocumentExceedMaximumQuantityException\";\n      \n      }\n      }\n      entityDictionary['InventoryDocumentExceedMaximumQuantityExceptionClass'] = InventoryDocumentExceedMaximumQuantityExceptionClass;\n    \n      /**\n      * ProductPricingConfigurationException entity class.\n      */\n      export class ProductPricingConfigurationExceptionClass\n        extends CommerceExceptionClass\n       implements Entities.ProductPricingConfigurationException {\n      public ProductPricingConfigurationErrors: Entities.ProductPricingConfigurationError[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      super(odataObject);odataObject = odataObject || {};\n        this.ProductPricingConfigurationErrors = undefined;\n        if (odataObject.ProductPricingConfigurationErrors) {\n        this.ProductPricingConfigurationErrors = [];\n        for (var i = 0; i < odataObject.ProductPricingConfigurationErrors.length; i++) {\n        if (odataObject.ProductPricingConfigurationErrors[i] != null) {\n        if (odataObject.ProductPricingConfigurationErrors[i]['@odata.type'] != null) {\n          var className: string = odataObject.ProductPricingConfigurationErrors[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ProductPricingConfigurationErrors[i] = new entityDictionary[className](odataObject.ProductPricingConfigurationErrors[i])\n          }\n        } else {\n            this.ProductPricingConfigurationErrors[i] = new ProductPricingConfigurationErrorClass(odataObject.ProductPricingConfigurationErrors[i]);\n        }\n                    } else {\n        this.ProductPricingConfigurationErrors[i] = undefined;\n        }\n        }\n        }\n      \n        this[\"@odata.type\"] = \"#Microsoft.Dynamics.Commerce.Runtime.ProductPricingConfigurationException\";\n      \n      }\n      }\n      entityDictionary['ProductPricingConfigurationExceptionClass'] = ProductPricingConfigurationExceptionClass;\n    \n      /**\n      * CartLineValidationResultsByLineId entity class.\n      */\n      export class CartLineValidationResultsByLineIdClass implements Entities.CartLineValidationResultsByLineId {\n      public LineIdToProductBehaviorMap: Entities.KeyValuePair_2OfString_ProductBehavior[];\n      public ValidationResultsPairs: Entities.LineValidationResult[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n        this.LineIdToProductBehaviorMap = undefined;\n        if (odataObject.LineIdToProductBehaviorMap) {\n        this.LineIdToProductBehaviorMap = [];\n        for (var i = 0; i < odataObject.LineIdToProductBehaviorMap.length; i++) {\n        if (odataObject.LineIdToProductBehaviorMap[i] != null) {\n        if (odataObject.LineIdToProductBehaviorMap[i]['@odata.type'] != null) {\n          var className: string = odataObject.LineIdToProductBehaviorMap[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.LineIdToProductBehaviorMap[i] = new entityDictionary[className](odataObject.LineIdToProductBehaviorMap[i])\n          }\n        } else {\n            this.LineIdToProductBehaviorMap[i] = new KeyValuePair_2OfString_ProductBehaviorClass(odataObject.LineIdToProductBehaviorMap[i]);\n        }\n                    } else {\n        this.LineIdToProductBehaviorMap[i] = undefined;\n        }\n        }\n        }\n      \n        this.ValidationResultsPairs = undefined;\n        if (odataObject.ValidationResultsPairs) {\n        this.ValidationResultsPairs = [];\n        for (var i = 0; i < odataObject.ValidationResultsPairs.length; i++) {\n        if (odataObject.ValidationResultsPairs[i] != null) {\n        if (odataObject.ValidationResultsPairs[i]['@odata.type'] != null) {\n          var className: string = odataObject.ValidationResultsPairs[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ValidationResultsPairs[i] = new entityDictionary[className](odataObject.ValidationResultsPairs[i])\n          }\n        } else {\n            this.ValidationResultsPairs[i] = new LineValidationResultClass(odataObject.ValidationResultsPairs[i]);\n        }\n                    } else {\n        this.ValidationResultsPairs[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['CartLineValidationResultsByLineIdClass'] = CartLineValidationResultsByLineIdClass;\n    \n      /**\n      * CommerceRuntimeCompositionException entity class.\n      */\n      export class CommerceRuntimeCompositionExceptionClass\n        extends CommerceExceptionClass\n       implements Entities.CommerceRuntimeCompositionException {\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      super(odataObject);odataObject = odataObject || {};\n        this[\"@odata.type\"] = \"#Microsoft.Dynamics.Commerce.Runtime.CommerceRuntimeCompositionException\";\n      \n      }\n      }\n      entityDictionary['CommerceRuntimeCompositionExceptionClass'] = CommerceRuntimeCompositionExceptionClass;\n    \n      /**\n      * ChecklistTaskValidationException entity class.\n      */\n      export class ChecklistTaskValidationExceptionClass\n        extends DataValidationExceptionClass\n       implements Entities.ChecklistTaskValidationException {\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      super(odataObject);odataObject = odataObject || {};\n        this[\"@odata.type\"] = \"#Microsoft.Dynamics.Commerce.Runtime.ChecklistTaskValidationException\";\n      \n      }\n      }\n      entityDictionary['ChecklistTaskValidationExceptionClass'] = ChecklistTaskValidationExceptionClass;\n    \n      /**\n      * InsufficientCredentialLengthException entity class.\n      */\n      export class InsufficientCredentialLengthExceptionClass\n        extends DataValidationExceptionClass\n       implements Entities.InsufficientCredentialLengthException {\n      public ActualLength: number;\n      public MinLength: number;\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      super(odataObject);odataObject = odataObject || {};\n            this.ActualLength = \n                odataObject.ActualLength;\n              \n            this.MinLength = \n                odataObject.MinLength;\n              \n        this[\"@odata.type\"] = \"#Microsoft.Dynamics.Commerce.Runtime.InsufficientCredentialLengthException\";\n      \n      }\n      }\n      entityDictionary['InsufficientCredentialLengthExceptionClass'] = InsufficientCredentialLengthExceptionClass;\n    \n      /**\n      * ExtensibleEnumerationCacheException entity class.\n      */\n      export class ExtensibleEnumerationCacheExceptionClass\n        extends CommerceExceptionClass\n       implements Entities.ExtensibleEnumerationCacheException {\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      super(odataObject);odataObject = odataObject || {};\n        this[\"@odata.type\"] = \"#Microsoft.Dynamics.Commerce.Runtime.ExtensibleEnumerationCacheException\";\n      \n      }\n      }\n      entityDictionary['ExtensibleEnumerationCacheExceptionClass'] = ExtensibleEnumerationCacheExceptionClass;\n    \n      /**\n      * ExtensionConfigurationException entity class.\n      */\n      export class ExtensionConfigurationExceptionClass\n        extends CommerceExceptionClass\n       implements Entities.ExtensionConfigurationException {\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      super(odataObject);odataObject = odataObject || {};\n        this[\"@odata.type\"] = \"#Microsoft.Dynamics.Commerce.Runtime.ExtensionConfigurationException\";\n      \n      }\n      }\n      entityDictionary['ExtensionConfigurationExceptionClass'] = ExtensionConfigurationExceptionClass;\n    \n      /**\n      * StaffPasswordExpiredException entity class.\n      */\n      export class StaffPasswordExpiredExceptionClass\n        extends UserAuthenticationExceptionClass\n       implements Entities.StaffPasswordExpiredException {\n      public StaffId: string;\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      super(odataObject);odataObject = odataObject || {};\n            this.StaffId = \n                odataObject.StaffId;\n              \n        this[\"@odata.type\"] = \"#Microsoft.Dynamics.Commerce.Runtime.StaffPasswordExpiredException\";\n      \n      }\n      }\n      entityDictionary['StaffPasswordExpiredExceptionClass'] = StaffPasswordExpiredExceptionClass;\n    \n      /**\n      * ChannelConfigurationNotFoundException entity class.\n      */\n      export class ChannelConfigurationNotFoundExceptionClass\n        extends CommerceExceptionClass\n       implements Entities.ChannelConfigurationNotFoundException {\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      super(odataObject);odataObject = odataObject || {};\n        this[\"@odata.type\"] = \"#Microsoft.Dynamics.Commerce.Runtime.ChannelConfigurationNotFoundException\";\n      \n      }\n      }\n      entityDictionary['ChannelConfigurationNotFoundExceptionClass'] = ChannelConfigurationNotFoundExceptionClass;\n    \n      /**\n      * CopilotServiceException entity class.\n      */\n      export class CopilotServiceExceptionClass\n        extends CommerceExceptionClass\n       implements Entities.CopilotServiceException {\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      super(odataObject);odataObject = odataObject || {};\n        this[\"@odata.type\"] = \"#Microsoft.Dynamics.Commerce.Runtime.CopilotServiceException\";\n      \n      }\n      }\n      entityDictionary['CopilotServiceExceptionClass'] = CopilotServiceExceptionClass;\n    \n      /**\n      * PaymentConfigurationException entity class.\n      */\n      export class PaymentConfigurationExceptionClass\n        extends CommerceExceptionClass\n       implements Entities.PaymentConfigurationException {\n      public PaymentConfigurationSdkErrors: string[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      super(odataObject);odataObject = odataObject || {};\n        this.PaymentConfigurationSdkErrors = undefined;\n        if (odataObject.PaymentConfigurationSdkErrors) {\n        this.PaymentConfigurationSdkErrors = [];\n        for (var i = 0; i < odataObject.PaymentConfigurationSdkErrors.length; i++) {\n        if (odataObject.PaymentConfigurationSdkErrors[i] != null) {\n            this.PaymentConfigurationSdkErrors[i] = \n                odataObject.PaymentConfigurationSdkErrors[i];\n                            } else {\n        this.PaymentConfigurationSdkErrors[i] = undefined;\n        }\n        }\n        }\n      \n        this[\"@odata.type\"] = \"#Microsoft.Dynamics.Commerce.Runtime.PaymentConfigurationException\";\n      \n      }\n      }\n      entityDictionary['PaymentConfigurationExceptionClass'] = PaymentConfigurationExceptionClass;\n    \n      /**\n      * SecretConfigurationNotFoundException entity class.\n      */\n      export class SecretConfigurationNotFoundExceptionClass\n        extends CommerceExceptionClass\n       implements Entities.SecretConfigurationNotFoundException {\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      super(odataObject);odataObject = odataObject || {};\n        this[\"@odata.type\"] = \"#Microsoft.Dynamics.Commerce.Runtime.SecretConfigurationNotFoundException\";\n      \n      }\n      }\n      entityDictionary['SecretConfigurationNotFoundExceptionClass'] = SecretConfigurationNotFoundExceptionClass;\n    \n      /**\n      * TenderTypePolicy entity class.\n      */\n      export class TenderTypePolicyClass implements Entities.TenderTypePolicy {\n      public OriginalTenderType: string;\n      public AllowedReturnTenderTypes: string[];\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.OriginalTenderType = \n                odataObject.OriginalTenderType;\n              \n        this.AllowedReturnTenderTypes = undefined;\n        if (odataObject.AllowedReturnTenderTypes) {\n        this.AllowedReturnTenderTypes = [];\n        for (var i = 0; i < odataObject.AllowedReturnTenderTypes.length; i++) {\n        if (odataObject.AllowedReturnTenderTypes[i] != null) {\n            this.AllowedReturnTenderTypes[i] = \n                odataObject.AllowedReturnTenderTypes[i];\n                            } else {\n        this.AllowedReturnTenderTypes[i] = undefined;\n        }\n        }\n        }\n      \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['TenderTypePolicyClass'] = TenderTypePolicyClass;\n    \n      /**\n      * AccountStatementRequest entity class.\n      */\n      export class AccountStatementRequestClass implements Entities.AccountStatementRequest {\n      public RequestedUserId: string;\n      public IsForFullOrganization: boolean;\n      public FromDate: Date;\n      public ToDate: Date;\n      public RequestingUserEmail: string;\n      public DeliveryTypeValue: number;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.RequestedUserId = \n                odataObject.RequestedUserId;\n              \n            this.IsForFullOrganization = \n                odataObject.IsForFullOrganization;\n              \n            this.FromDate = \n                (odataObject.FromDate instanceof Date) ? odataObject.FromDate\n                : (odataObject.FromDate != null) ? jsonLightReadStringPropertyValue(odataObject.FromDate, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.ToDate = \n                (odataObject.ToDate instanceof Date) ? odataObject.ToDate\n                : (odataObject.ToDate != null) ? jsonLightReadStringPropertyValue(odataObject.ToDate, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.RequestingUserEmail = \n                odataObject.RequestingUserEmail;\n              \n            this.DeliveryTypeValue = \n                odataObject.DeliveryTypeValue;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['AccountStatementRequestClass'] = AccountStatementRequestClass;\n    \n      /**\n      * BusinessPartnerOperationRequestDetails entity class.\n      */\n      export class BusinessPartnerOperationRequestDetailsClass implements Entities.BusinessPartnerOperationRequestDetails {\n      public InvoiceId: string;\n      public AccountStatementStartDateTime: Date;\n      public AccountStatementEndDateTime: Date;\n      public ExtensionProperties: Entities.CommerceProperty[];\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.InvoiceId = \n                odataObject.InvoiceId;\n              \n            this.AccountStatementStartDateTime = \n                (odataObject.AccountStatementStartDateTime instanceof Date) ? odataObject.AccountStatementStartDateTime\n                : (odataObject.AccountStatementStartDateTime != null) ? jsonLightReadStringPropertyValue(odataObject.AccountStatementStartDateTime, \"Edm.DateTimeOffset\", false) : undefined;\n              \n            this.AccountStatementEndDateTime = \n                (odataObject.AccountStatementEndDateTime instanceof Date) ? odataObject.AccountStatementEndDateTime\n                : (odataObject.AccountStatementEndDateTime != null) ? jsonLightReadStringPropertyValue(odataObject.AccountStatementEndDateTime, \"Edm.DateTimeOffset\", false) : undefined;\n              \n        this.ExtensionProperties = undefined;\n        if (odataObject.ExtensionProperties) {\n        this.ExtensionProperties = [];\n        for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\n        if (odataObject.ExtensionProperties[i] != null) {\n        if (odataObject.ExtensionProperties[i]['@odata.type'] != null) {\n          var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\n          className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n          if (entityDictionary[className]) {\n              this.ExtensionProperties[i] = new entityDictionary[className](odataObject.ExtensionProperties[i])\n          }\n        } else {\n            this.ExtensionProperties[i] = new CommercePropertyClass(odataObject.ExtensionProperties[i]);\n        }\n                    } else {\n        this.ExtensionProperties[i] = undefined;\n        }\n        }\n        }\n      \n      }\n      }\n      entityDictionary['BusinessPartnerOperationRequestDetailsClass'] = BusinessPartnerOperationRequestDetailsClass;\n    \n      /**\n      * ProductPricingConfigurationError entity class.\n      */\n      export class ProductPricingConfigurationErrorClass implements Entities.ProductPricingConfigurationError {\n      public ProductId: string;\n      public ErrorResourceId: string;\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.ProductId = \n                odataObject.ProductId;\n              \n            this.ErrorResourceId = \n                odataObject.ErrorResourceId;\n              \n      }\n      }\n      entityDictionary['ProductPricingConfigurationErrorClass'] = ProductPricingConfigurationErrorClass;\n    \n      /**\n      * TaskManagementError entity class.\n      */\n      export class TaskManagementErrorClass implements Entities.TaskManagementError {\n      public ErrorResourceId: string;\n      public LocalizedMessage: string;\n      public TaskId: string;\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n            this.ErrorResourceId = \n                odataObject.ErrorResourceId;\n              \n            this.LocalizedMessage = \n                odataObject.LocalizedMessage;\n              \n            this.TaskId = \n                odataObject.TaskId;\n              \n      }\n      }\n      entityDictionary['TaskManagementErrorClass'] = TaskManagementErrorClass;\n    \n      /**\n      * LineDataValidationFailure entity class.\n      */\n      export class LineDataValidationFailureClass implements Entities.LineDataValidationFailure {\n      public DataValidationFailure: Entities.DataValidationFailure;\n      public LineIndex: number;\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n        if (odataObject.DataValidationFailure == null) {\n            this.DataValidationFailure = undefined;\n        } else if (odataObject.DataValidationFailure['@odata.type'] == null) {\n            this.DataValidationFailure = new DataValidationFailureClass(odataObject.DataValidationFailure);\n        } else {\n            var className: string = odataObject.DataValidationFailure['@odata.type'];\n            className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\n            if (entityDictionary[className]) {\n                this.DataValidationFailure = new entityDictionary[className](odataObject.DataValidationFailure)\n            }\n        }\n\n      \n            this.LineIndex = \n                odataObject.LineIndex;\n              \n      }\n      }\n      entityDictionary['LineDataValidationFailureClass'] = LineDataValidationFailureClass;\n    \n      /**\n      * WrongEndpointException entity class.\n      */\n      export class WrongEndpointExceptionClass\n        extends CommerceExceptionClass\n       implements Entities.WrongEndpointException {\n      public RedirectUri: string;\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      super(odataObject);odataObject = odataObject || {};\n            this.RedirectUri = \n                odataObject.RedirectUri;\n              \n        this[\"@odata.type\"] = \"#Microsoft.Dynamics.Retail.RetailServerLibrary.WrongEndpointException\";\n      \n      }\n      }\n      entityDictionary['WrongEndpointExceptionClass'] = WrongEndpointExceptionClass;\n    \n      /**\n      * BadRequestException entity class.\n      */\n      export class BadRequestExceptionClass\n        extends CommerceExceptionClass\n       implements Entities.BadRequestException {\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      super(odataObject);odataObject = odataObject || {};\n        this[\"@odata.type\"] = \"#Microsoft.Dynamics.Retail.RetailServerLibrary.BadRequestException\";\n      \n      }\n      }\n      entityDictionary['BadRequestExceptionClass'] = BadRequestExceptionClass;\n    \n      /**\n      * ChargeTaxMeasure entity class.\n      */\n      export class ChargeTaxMeasureClass\n        extends TaxMeasureClass\n       implements Entities.ChargeTaxMeasure {\n      public MarkupLineNumber: number;\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      super(odataObject);odataObject = odataObject || {};\n            this.MarkupLineNumber = \n                (odataObject.MarkupLineNumber != null) ? parseFloat(odataObject.MarkupLineNumber) : undefined;\n              \n        this[\"@odata.type\"] = \"#Microsoft.Dynamics.Commerce.Runtime.Localization.Entities.India.DataModel.Tax.ChargeTaxMeasure\";\n      \n      }\n      }\n      entityDictionary['ChargeTaxMeasureClass'] = ChargeTaxMeasureClass;\n    \n      /**\n      * KeyValuePair_2OfString_ProductBehavior entity class.\n      */\n      export class KeyValuePair_2OfString_ProductBehaviorClass implements Entities.KeyValuePair_2OfString_ProductBehavior {\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      odataObject = odataObject || {};\n      }\n      }\n      entityDictionary['KeyValuePair_2OfString_ProductBehaviorClass'] = KeyValuePair_2OfString_ProductBehaviorClass;\n    \n      /**\n      * CompilationFailedException entity class.\n      */\n      export class CompilationFailedExceptionClass\n        extends CommerceExceptionClass\n       implements Entities.CompilationFailedException {\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      super(odataObject);odataObject = odataObject || {};\n        this[\"@odata.type\"] = \"#Microsoft.Dynamics.Commerce.Runtime.Hosting.Framework.CompilationFailedException\";\n      \n      }\n      }\n      entityDictionary['CompilationFailedExceptionClass'] = CompilationFailedExceptionClass;\n    \n      /**\n      * FranceExtensibleAuditEventType entity class.\n      */\n      export class FranceExtensibleAuditEventTypeClass\n        extends ExtensibleAuditEventTypeClass\n       implements Entities.FranceExtensibleAuditEventType {\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      super(odataObject);odataObject = odataObject || {};\n        this[\"@odata.type\"] = \"#Microsoft.Dynamics.Commerce.Runtime.Localization.Entities.France.Enums.FranceExtensibleAuditEventType\";\n      \n      }\n      }\n      entityDictionary['FranceExtensibleAuditEventTypeClass'] = FranceExtensibleAuditEventTypeClass;\n    \n      /**\n      * AustriaExtensibleAuditEventType entity class.\n      */\n      export class AustriaExtensibleAuditEventTypeClass\n        extends ExtensibleAuditEventTypeClass\n       implements Entities.AustriaExtensibleAuditEventType {\n      \n      // Navigation properties names\n      \n      /**\n      * Construct an object from odata response.\n      *\n      * @param {any} odataObject The odata result object.\n      */\n      constructor(odataObject?: any) {\n      super(odataObject);odataObject = odataObject || {};\n        this[\"@odata.type\"] = \"#Microsoft.Dynamics.Commerce.Runtime.Localization.Entities.Austria.AustriaExtensibleAuditEventType\";\n      \n      }\n      }\n      entityDictionary['AustriaExtensibleAuditEventTypeClass'] = AustriaExtensibleAuditEventTypeClass;\n    "],"names":["entityDictionary","CategoryClass","constructor","odataObject","this","RecordId","parseInt","undefined","OfflineImage","Name","ParentCategory","DisplayOrder","parseFloat","LocalizedDescription","Images","i","length","className","substr","lastIndexOf","concat","MediaLocationClass","NameTranslations","TextValueTranslationClass","ExtensionProperties","CommercePropertyClass","CartClass","AffiliationLines","AffiliationLoyaltyTierClass","IsRequiredAmountPaid","IsDiscountFullyCalculated","IgnoreDiscountCalculation","AmountDue","AmountPaid","AttributeValues","AttributeValueBaseClass","IsTaxIncludedInPrice","BeginDateTime","Date","jsonLightReadStringPropertyValue","BusinessDate","CancellationChargeAmount","EstimatedShippingAmount","CartLines","CartLineClass","CartTypeValue","ChannelId","ChargeAmount","CustomerOrderRemainingBalance","ChargeLines","ChargeLineClass","TaxViewLines","TaxViewLineClass","Comment","InvoiceComment","Coupons","CouponClass","CustomerId","CustomerOrderModeValue","DeliveryMode","DeliveryModeChargeAmount","DiscountAmount","DiscountAmountWithoutTax","DiscountCodes","Id","SuspendedCartId","TransactionTypeValue","CustomerAccountDepositLines","CustomerAccountDepositLineClass","IncomeExpenseLines","IncomeExpenseLineClass","IncomeExpenseTotalAmount","IsReturnByReceipt","ReturnTransactionHasLoyaltyPayment","IsFavorite","IsRecurring","IsSuspended","LoyaltyCardId","ModifiedDateTime","OrderNumber","AvailableDepositAmount","OverriddenDepositAmount","OverriddenDepositWithoutCarryoutAmount","PrepaymentAmountPaid","PrepaymentRoundingDifference","PrepaymentAppliedOnPickup","PrepaymentAmountInvoiced","PromotionLines","QuotationExpiryDate","ReasonCodeLines","ReasonCodeLineClass","ReceiptEmail","RequestedDeliveryDate","RequiredDepositAmount","RequiredDepositWithoutCarryoutAmount","SalesId","ShippingAddress","AddressClass","StaffId","SubtotalAmount","SubtotalAmountWithoutTax","NetPrice","SubtotalSalesAmount","TaxAmount","TaxOnCancellationCharge","TaxOnShippingCharge","TaxOnNonShippingCharges","TaxOverrideCode","TenderLines","TenderLineClass","RefundableTenderLines","TerminalId","TotalAmount","TotalSalesAmount","TotalReturnAmount","TotalCarryoutSalesAmount","TotalCustomerOrderSalesAmount","TotalManualDiscountAmount","TotalManualDiscountPercentage","WarehouseId","IsCreatedOffline","CartStatusValue","ReceiptTransactionTypeValue","CommissionSalesGroup","Version","TotalItems","HasTaxCalculationTriggered","MerchantProperties","PaymentMerchantInformationClass","HasChargeCalculationTriggered","FiscalTransactions","FiscalTransactionClass","ShippingChargeAmount","OtherChargeAmount","PeriodicDiscountsCalculateScopeValue","TaxCalculationTypeValue","Notes","NoteClass","CustomerRequisition","CustomerClass","AccountNumber","CreatedDateTime","ChargeGroup","PriceGroup","IsCustomerTaxInclusive","Phone","PhoneRecordId","PhoneExt","Cellphone","Email","EmailRecordId","Url","UrlRecordId","PersonNameId","FirstName","MiddleName","LastName","DirectoryPartyRecordId","PartyNumber","CustomerTypeValue","Language","CustomerGroup","CurrencyCode","CNPJCPFNumber","IdentificationNumber","InvoiceAccount","MandatoryCreditLimit","CreditRating","CreditLimit","Balance","Blocked","BlockedType","UseOrderNumberReference","OrganizationId","UsePurchaseRequest","MultilineDiscountGroup","TotalDiscountGroup","LineDiscountGroup","TaxGroup","SalesTaxGroup","CommissionSalesGroupId","TaxExemptNumber","VatNumber","TaxOffice","NonChargeableAccount","Tag","ReceiptSettings","OptOutPersonalization","OptOutWebActivityTracking","RetailCustomerTableRecordId","IsAsyncCustomer","NewCustomerPartyNumber","CustomerAffiliations","CustomerAffiliationClass","Addresses","Attributes","CustomerAttributeClass","TitleRecordId","IsFloorLimitBlocked","IsB2b","IsB2bAdmin","BusinessPartnerId","Contacts","ContactInfoClass","AllowOnAccountPayment","DefaultPaymentMethod","EmployeeClass","NameOnReceipt","CultureName","NumberOfDaysToPasswordExpiry","Permissions","EmployeePermissionsClass","DefaultImage","DefaultCommissionSalesGroup","IdentifierTypeValue","ChecklistClass","Tasks","ChecklistTaskClass","ProcessId","Description","AssignedToChannelId","AssignedToWorkerPersonnelNumber","StatusValue","StartDateTime","EndDateTime","TargetDateTime","SalesOrderClass","DocumentStatusValue","McrOrderStopped","Shipments","ShipmentClass","AggregateInventoryQuantities","InventoryQuantitiesClass","UnifiedDeliveryInformation","DeliveryInformationClass","PaymentStatusValue","DetailedOrderStatusValue","AffiliationLoyaltyTierLines","SalesAffiliationLoyaltyTierClass","CalculatedDepositAmount","CancellationCharge","ChannelReferenceId","ContactInformationCollection","ContactInformationClass","CustomerOrderTypeValue","EntryStatusValue","GrossAmount","HasLoyaltyPayment","InternalTransactionId","SuspendedTransactionId","InventoryLocationId","IsTaxExemptedForPriceInclusive","LineDiscount","LineDiscountCalculationTypeValue","LoyaltyDiscountAmount","LoyaltyManualDiscountAmount","LoyaltyRewardPointLines","LoyaltyRewardPointLineClass","NetAmount","NetAmountWithoutTax","NetAmountWithNoTax","NetAmountWithTax","NumberOfItems","PeriodicDiscountAmount","TenderDiscountAmount","PrepaymentAmountAppliedOnPickup","ReceiptId","ConfirmedShipDate","SalesPaymentDifference","SalesLines","SalesLineClass","ShiftId","ShiftTerminalId","StatementCode","StoreId","TaxAmountExclusive","TaxAmountInclusive","TaxLines","TaxLineClass","TotalDiscount","SalesInvoiceAmount","GiftCardActiveFrom","GiftCardBalance","GiftCardExpireDate","GiftCardHistoryDetails","GiftCardIssueAmount","GiftCardIdMasked","IsCommissionSalesGroupOverriddenByCustomer","CommissionSalesGroupSetByCashier","CustomerName","OriginalOrderTransactionId","LanguageId","SalesAgreementRecordId","TransactionDate","TransactionTime","ShiftClass","StartingAmountTotal","FloatingEntryAmountTotal","AddToTenderAmountTotal","SafeDropTotal","BankDropTotal","RemoveTenderAmountTotal","DeclareTenderAmountTotal","OverShortTotal","TenderedTotal","ChangeTotal","IncomeAccountTotal","ExpenseAccountTotal","CashDrawer","StoreRecordId","CurrentStaffId","CloseDateTime","ClosedAtTerminalId","ClosedAtShiftId","CurrentTerminalId","SalesTotal","StatusDateTime","ReturnsTotal","PaidToAccountTotal","TaxTotal","ChargeTotal","DiscountTotal","RoundedAmountTotal","CustomerCount","SaleTransactionCount","NoSaleTransactionCount","VoidTransactionCount","LogOnTransactionCount","SuspendedTransactionCount","TransactionCount","ReceiptsCount","ReturnsCount","GoodsSoldQty","ServicesSoldQty","ReceiptCopiesCount","ReceiptCopiesTotal","PriceOverrideTotal","SuspendedTotal","SalesTotalIncludingTax","SalesTotalExcludingTax","SalesGrandTotal","ReturnsGrandTotal","ShiftTaxLineClass","ShiftTenderLineClass","AccountLines","ShiftAccountLineClass","IsShared","StartingAmountRunningTotal","GiftCardsTotal","GiftCardCashOutTotal","VoidedSalesTotal","ShiftSalesTotal","ShiftReturnsTotal","HasPendingOfflineTransactions","NumberOfUnreconciledLines","StockCountJournalClass","JournalId","InventLocationId","DataAreaId","StockCountTransactionLines","StockCountJournalTransactionClass","Worker","OrgUnitClass","OrgUnitNumber","FunctionalityProfileId","UseCustomerBasedTax","UseCustomerBasedTaxExemption","UseDestinationBasedTax","Currency","TimeZoneCode","OrgUnitAddress","OrgUnitFullAddress","OrgUnitName","Latitude","Longitude","EmailReceiptProfileId","ShippingWarehouseAddress","TaxRegistrations","TaxRegistrationClass","EventNotificationProfileId","OMOperatingUnitNumber","DefaultCustomerAccount","CategoryHierarchyId","ProductClass","ProductName","ProductNumber","IsMasterProduct","IsKit","ItemId","HasLinkedProducts","Rules","ProductRulesClass","DefaultUnitOfMeasure","Locale","IsRemote","ChangeTrackingInformation","ProductChangeTrackingInformationClass","Image","RichMediaLocationsClass","UnitsOfMeasureSymbol","LinkedProducts","LinkedProductClass","BasePrice","Price","AdjustedPrice","RetailContext","ProjectionDomainClass","PrimaryCategoryId","CategoryIds","DisplayOrderInCategories","DisplayOrderInCategoryClass","RelatedProducts","RelatedProductClass","ProductsRelatedToThis","ProductSchema","ProductProperties","ProductPropertyTranslationClass","CompositionInformation","ProductCompositionInformationClass","ParentKits","KitComponentClass","SearchName","ProductCatalogClass","IsSnapshotEnabled","ValidFrom","ValidTo","CreatedOn","ModifiedOn","PublishedOn","CommerceListClass","IsPrivate","IsCollaborative","DueDateTime","CommerceListTypeValue","CommerceListLines","CommerceListLineClass","CommerceListContributors","CommerceListContributorClass","CommerceListInvitations","CommerceListInvitationClass","ProductListClass","LastUpdated","DeletedDateTime","ProductListTypeValue","ProductListLines","ProductListLineClass","RecommendationClass","RecommendationTypeValue","Title","TransferOrderClass","OrderId","Status","Lines","OrderTypeValue","InventLocationIdFrom","InventLocationIdTo","QuantityShipped","QuantityReceived","QuantityShipNow","QuantityReceiveNow","QuantityShipRemaining","QuantityReceiveRemaining","ShipDate","ReceiveDate","DeliveryModeId","OrderLines","TransferOrderLineClass","PurchaseOrderClass","TotalReceived","PurchaseOrderLineClass","PickingListClass","DeliveryDate","PickingListLineClass","WarehouseClass","InventLocation","IsWMSEnabled","DefaultInventoryStatus","DefaultReceiptLocation","DefaultLocationId","DefaultIssueLocation","Address","ScanResultClass","ScannedText","MaskTypeValue","Barcode","BarcodeClass","Product","SimpleProductClass","LoyaltyCard","LoyaltyCardClass","GiftCard","GiftCardClass","Customer","customerPropertyName","SalesOrderContextualOperationsMapClass","ApplicableOperationsValues","SalesOrder","salesOrderPropertyName","InventoryInboundOutboundDocumentClass","WorkDocumentId","CommitRequestId","Sender","Receiver","SenderDetails","ReceiverDetails","OperationTypeValue","Note","OperationResultMessage","DocumentId","LongVersion","SourceDocument","InventoryInboundOutboundSourceDocumentClass","SourceDocumentTypeValue","NoteModifiedByStaffId","NoteModifiedDateTime","DocumentTypeId","BusinessPartnerClass","SellerChannelId","BusinessPartnerUserClass","B2BUserId","SpendingLimit","LastOperationId","IsAdmin","SuspendedCartClass","Cart","cartPropertyName","ExtensibleEnumerationClass","Value","ExtensibleEnumeration_1OfTClass","super","ExtensibleTransactionTypeClass","ExtensibleSalesTransactionTypeClass","FulfillmentLineStatusClass","FulfillmentLineDeliveryTypeClass","ExtensibleAddressTypeClass","ExtensibleLoyaltyRewardPointActivityEntryTypeClass","ExtensibleAttributeDataTypeClass","ReleasedProductServiceTypeClass","ExtensibleElectronicAddressTypeClass","ReceiptOutputFormatTypeClass","OrderLookupAdditionalCriteriaTypeClass","FullAddress","Street","StreetNumber","County","CountyName","City","DistrictName","State","StateName","ZipCode","ThreeLetterISORegionName","EmailContent","TwoLetterISORegionName","Deactivate","AttentionTo","BuildingCompliment","Postbox","AddressTypeValue","IsPrimary","IsAsyncAddress","DirectoryPartyTableRecordId","DirectoryPartyLocationRecordId","DirectoryPartyLocationRoleRecordId","LogisticsLocationId","LogisticsLocationRecordId","LogisticsLocationExtRecordId","LogisticsLocationRoleRecordId","PhoneLogisticsLocationRecordId","PhoneLogisticsLocationId","EmailLogisticsLocationRecordId","EmailLogisticsLocationId","UrlLogisticsLocationRecordId","UrlLogisticsLocationId","ExpireRecordId","SortOrder","RoleCount","RetailAffiliationId","HideInChannels","CustomerBalancesClass","PendingBalance","InvoiceAccountBalance","InvoiceAccountPendingBalance","InvoiceAccountCreditLimit","OpenInvoiceBalance","OpenInvoiceCount","GlobalCustomerClass","FullName","AttributeValueClass","KeyName","UnitOfMeasureSymbol","DataTypeValue","BooleanValue","DateTimeOffsetValue","FloatValue","IntegerValue","TextValue","CurrencyValue","AttributeValueId","Swatches","AttributeSwatchClass","BarcodeId","BarcodePrice","Quantity","EmployeeId","SalespersonId","EANLicenseId","DataEntry","DiscountCode","GiftCardNumber","LoyaltyCardNumber","ItemBarcode","ItemBarcodeClass","EntryMethodTypeValue","ItemType","EnterDimensions","ItemGroupId","ItemDepartmentId","ScaleItem","ZeroPriceValid","NegativeQuantity","DiscountNotAllowed","DateToBeBlocked","DateToBeActivated","CheckDigitValidated","CouponId","Message","IncludedInTotalDiscount","CostPrice","BatchId","BarcodeSetupId","ItemBarcodeValue","InventoryDimensionId","IsBlocked","Display","VariantId","UnitId","UseForInput","UseForPrinting","ButtonGridClass","DefaultColor","SpaceBetweenButtonsInPixels","Buttons","ButtonGridButtonClass","GetButtonGridsByIdsCriteriaClass","ButtonGridIds","LineId","ProductId","ExtendedPrice","SalesTaxGroupId","ItemTaxGroupId","LinePercentageDiscount","LineManualDiscountPercentage","LineManualDiscountAmount","PickupTimeslotStartDateTime","PickupTimeslotEndDateTime","IsWarrantyLine","WarrantableTransactionId","WarrantableSalesId","WarrantableLineNumber","WarrantableSerialNumber","WarrantiedId","ReturnTransactionId","ReturnLineNumber","ReturnInventTransId","ReturnStore","ReturnTerminalId","IsVoided","IsTaxOverideCodeTaxExempt","IsGiftCardLine","IsPriceKeyedIn","GiftCardId","GiftCardCurrencyCode","GiftCardOperationValue","GiftCardTypeValue","SalesStatusValue","QuantityOrdered","QuantityNotProcessed","QuantityReserved","QuantityPicked","QuantityPacked","QuantityInvoiced","QuantityCanceled","FulfillmentStoreId","SerialNumber","ElectronicDeliveryEmail","ElectronicDeliveryEmailContent","IsPriceOverridden","OriginalPrice","IsInvoiceLine","InvoiceId","InvoiceAmount","LineVersion","PriceLines","PriceLineClass","DiscountLines","DiscountLineClass","RelatedDiscountedLineIds","ReturnTaxLines","TaxRatePercent","IsCustomerAccountDeposit","LinkedParentLineId","QuantityReturnable","LineNumber","TrackingId","QuantityRemained","CatalogId","ThirdPartyGiftCardInfo","ThirdPartyGiftCardInfoClass","BarcodeEmbeddedPrice","PriceInBarcode","InvoiceTypeValue","InvoicedSalesId","WarehouseLocation","DetailedLineStatusValue","SalesAgreementLineRecordId","Amount","Authorization","CardTypeInfoClass","TypeId","PaymentMethodId","CardTypeValue","Issuer","NumberFrom","NumberTo","CashBackLimit","AllowManualInput","CheckModulus","HasTenderDiscount","IsPinRequired","IsExpirationDateRequired","ConnectorName","PaymentProcessorMethod","CashDeclarationClass","CashTypeValue","IncludeInQuickPayShortcuts","IncomeExpenseAccountClass","AccountName","AccountNameAlias","AccountTypeValue","Message1Line","Message2Line","SlipText1Line","SlipText2Line","IncomeExpenseAccount","StoreNumber","Terminal","Shift","TransactionStatusValue","CartTenderLineClass","PaymentCard","PaymentCardClass","TokenizedPaymentCard","TokenizedPaymentCardClass","CardPaymentAcceptResult","CardPaymentAcceptResultClass","IsLinkedRefund","LinkedPaymentStore","LinkedPaymentTerminalId","LinkedPaymentTransactionId","LinkedPaymentLineNumber","LinkedPaymentCurrency","TenderLineId","CashBackAmount","AmountInTenderedCurrency","AmountInCompanyCurrency","ExchangeRate","CompanyCurrencyExchangeRate","TenderTypeId","SignatureData","GiftCardPin","GiftCardExpirationYear","GiftCardExpirationMonth","CreditMemoId","CardTypeId","IsChangeLine","IsHistorical","IsVoidable","VoidStatusValue","AuthorizedAmount","PaymentRefRecId","CardPaymentAccountId","ProcessingTypeValue","CardProcessorStatusValue","LinkedPaymentRefRecId","IsPolicyBypassed","ChargeLineId","ChargeCode","ModuleTypeValue","IsHeaderChargeProrated","ChargeTypeValue","ChargeMethodValue","CalculatedAmount","TransactionId","MarkupAutoLineRecordId","MarkupAutoTableRecId","SaleLineNumber","FromAmount","ToAmount","Keep","AmountRefunded","ChargeLineOverrides","ChargeLineOverrideClass","IsRefundable","IsShipping","IsOverridden","IsInvoiced","CalculatedProratedAmount","SpecificUnitSymbol","OriginalSalesTaxGroupId","OriginalItemTaxGroupId","SalesOrderUnitOfMeasure","NetAmountPerUnit","TaxMeasures","TaxMeasureClass","TaxAmountExemptInclusive","NetAmountWithAllInclusiveTax","ReturnLineTaxAmount","TaxExemptPriceInclusiveReductionAmount","TaxExemptPriceInclusiveOriginalPrice","CityInfoClass","CountryRegionId","StateId","CountyId","CommissionSalesGroupClass","GroupId","ContactInformationTypeValue","AttributeCategoryClass","CommercePropertyValueClass","Attribute","AttributeProductClass","MetadataFlags","ProductAttributeMetadataFlagsClass","IsDimension","ProductComparisonEntryClass","AttributeValue","ProductComparisonLineClass","AttributeRecordId","AttributeName","ProductAttributeComparisonEntries","CustomerSearchFieldClass","IsShortcut","DisplayName","CanBeRefined","SearchField","CustomerSearchFieldTypeClass","CustomerSearchByFieldCriteriaClass","Criteria","CustomerSearchByFieldCriterionClass","DataLevelValue","SearchTerm","OrderShipmentsClass","ShipmentId","DeliveryAddress","TermsOfDelivery","WeightUnit","TrackingNumber","TrackingUrl","LatestCarrierTrackingInfo","TrackingInfoClass","CarrierId","CarrierName","ShippingWeight","ShipmentLines","ShipmentLineClass","ShipmentLineId","InventDimId","OrderedQuantity","DeliveredQuantity","RemainingQuantity","InventoryTransactionId","TransactionClass","FromSafe","ToSafe","FromShiftTerminalId","ToShiftTerminalId","FromShiftId","TransactionSourceContextTypeValue","TransactionDestinationContextTypeValue","ToShiftId","TransactionDateTime","ShiftReconciliationLineClass","GroupDescription","ShiftGroupLinesCount","ShiftGroupLinesClosedCount","AmountInOriginalCurrency","TransactionCurrencyCode","TenderType","ShiftReconciliationLineRetrievalCriteriaClass","TransactionTypeValues","ShiftReconciliationLineStatusValue","Shifts","ShiftKeyClass","DestinationShift","SourceShift","SourceSafe","DestinationSafe","SearchConfigurationClass","ProductSortColumns","SortColumnClass","ProductSearchServiceTypeValue","ProductSortColumnsLabels","LocalizedTextClass","CustomerTimelineItemClass","EntityType","AttributeDefinitionClass","AttributeTypeName","ExtDataType","IsHidden","IsMandatory","IsMultiValue","IsEnumeration","TranslationDetails","AttributeTranslationDetailsClass","EnumerationDetails","AttributeEnumerationClass","DefaultValue","UpperBound","LowerBound","FriendlyName","HelpText","OrdinalNumber","EnumerationValue","AttributeEnumerationTranslations","AttributeEnumerationTranslationClass","EnumerationTranslationValue","AttributeDefinitionCriteriaClass","AttributeGroupIdentifier","Languages","AttributeGroupDefinitionClass","AttributeGroupTranslationDetailsClass","AttributeGroupRecordId","AttributeGroupDefinitionCriteriaClass","AttributeGroupIdentifiers","CountyInfoClass","CustomerGroupClass","CustomerGroupNumber","CustomerGroupName","OfferId","OfferName","OfferDescription","DiscountCost","EffectiveAmount","EffectivePercentage","SavedEffectiveAmount","Percentage","DealPrice","DiscountLineTypeValue","ManualDiscountTypeValue","CustomerDiscountTypeValue","PeriodicDiscountTypeValue","DiscountApplicationGroup","ConcurrencyModeValue","IsCompoundable","PricingPriorityNumber","PricingAttributeCombinationPriority","IsDiscountCodeRequired","ThresholdAmountRequired","BundleId","PriceOverrideRestrictionValue","AllowPriceOverride","MaximumDiscountPercentage","MaximumLineDiscountAmount","MaximumLineReturnAmount","MaximumTotalDiscountAmount","MaximumTotalDiscountPercentage","MaxTotalReturnAmount","Roles","AllowUseSharedShift","AllowManageSharedShift","AllowTaskGuides","AllowSaleOutsideAssortment","AllowPrintingReceiptCopy","AllowSkipFiscalRegistration","AllowSkipRegistrationOrMarkAsRegistered","AllowPostponeRegistration","AllowCreateTransferOrder","AllowAcceptOrder","AllowTaskManagement","AllowRejectOrder","AllowMassActivation","AllowPostInventoryAdjustment","AllowPostStockCounting","AllowCreatePurchaseOrder","AllowConfirmPurchaseOrder","Key","ByteValue","DecimalValue","LongValue","StringValue","CountryRegionInfoClass","ShortName","LongName","ISOCode","TimeZone","AddressFormatLines","AddressFormattingInfoClass","AddressFormatId","AddressFormatName","CreditMemoClass","CurrencyClass","CurrencySymbol","RoundOffPrice","RoundOffSales","RoundOffTypePrice","RoundOffTypeSales","NumberOfDecimals","CurrencyAmountClass","ConvertedAmount","RoundedConvertedAmount","ScaleUnitConfigurationClass","Region","EnvironmentConfigurationClass","EnvironmentId","EnvironmentName","TenantId","ClientAppInsightsInstrumentationKey","HardwareStationAppInsightsInstrumentationKey","WindowsPhonePosAppInsightsInstrumentationKey","BaseVersion","ScaleUnit","AADAuthority","FrameworkName","OrderManagementConfigurationClass","EnableContactEditPromptForAsyncOrderCancellation","SkipSalesInvoiceSelectionDuringReturn","OrderAttributeForTIN","DeviceConfigurationClass","UseInMemoryDeviceDataStorage","AllowItemsAggregation","AggregateItemsForPrinting","AggregatePayments","AlwaysExpandTransactionScreenLineDetails","AuditEnabled","DiscountAtTotal","ProductDiscount","ManuallyCalculateComplexDiscounts","DisplaySecondaryTotalCurrency","EndOfTransaction","ItemNotOnFile","LimitStaffListToStore","LineItemTaxChange","MarkUp","MaximumPrice","MaximumQuantity","MinimumPasswordLength","MustKeyInPriceIfZero","NfcEContingencyModeEnabled","NfcEVoided","FunctionalityProfileDescription","OverridePrice","PrintVoidTransactionReceipts","PrintReceiptsOnCardDecline","PrintXZReportsOnTerminal","PrintTenderDetailsOnXReport","ProfileId","RefundSale","ReturnProduct","SalesPerson","SecondaryTotalCurrency","SelectHardwareStationOnTendering","SelectHardwareStationAtStartOfTransaction","ShowStaffListAtLogOn","StaffBarcodeLogOn","StaffBarcodeLogOnRequiresPassword","StaffCardLogOn","StaffCardLogOnRequiresPassword","StartOfTransaction","EnableTimeRegistration","TenderDeclaration","TransactionTaxChange","VoidItem","VoidPayment","SalesModeDefaultsAsCustomerOrder","CreateOfflineCustomerOrders","CreateAsyncCustomers","EnableAxCustomerSearch","VoidTransaction","SystemLegalTermsUrl","SystemPrivacyStatementUrl","HideTrainingMode","StorePhone","StatementMethod","StoreTaxGroup","TaxIdNumber","TaxOverrideGroup","TenderDeclarationCalculation","AutoLogOffTimeoutInMinutes","AutoExitMethodValue","CustomerDisplayText1","CustomerDisplayText2","EFTStoreId","EFTTerminalId","ExitAfterEachTransaction","HardwareProfile","Placement","TerminalDescription","OpenDrawer","OpenDrawerAtLogOnLogOff","PrintTaxRefundChecks","StandAlone","TerminalStatement","VisualProfile","IncludeKitComponents","AccentColor","HeaderColor","Theme","FontScheme","ShowAppBarLabel","LogOnBackgroundPictureAsBase64","LogOnBackgroundPicturePortraitAsBase64","BackgroundPictureAsBase64","LogonBackgroundPictureId","LogonBackgroundPictureIdCompact","LogonBackgroundPictureIdPortrait","LogonBackgroundPictureIdCompactPortrait","BackgroundPictureId","RequireAmountDeclaration","DecimalNotRequiredForMinorCurrencyUnit","MaxTransactionSearchResults","OfflineProfileId","NewOfflineDatabaseCheckInterval","OfflineTransactionUploadInterval","ReconnectToOnlineInterval","SwitchToOfflineTimeout","OfflineSwitchApiPerformanceThresholdInSeconds","ReconnectFromPerformanceInducedOfflineIntervalInSeconds","RetentionDays","HardwareConfigurations","HardwareConfigurationsClass","CreateRecording","PlaybackRecording","ShouldUseDefaultCommisionSalesGroup","AskForSalesRepresentative","IsSalesRepRequired","ProhibitMixingSalesAndReturns","ApplyDiscountsToPriceKeyedIn","ApplyDiscountsToPriceOverrides","IsProductSuggestionsEnabled","ProductSearchType","TerminalRecId","DeviceRecId","DenominationsToDisplayValue","PromptOnSeamlessOffline","RetryCountToOffline","EnableAdvancedOfflineSwitching","SystemHealthCheckInterval","RejectOrderFulfillment","ManuallyCalculateTaxes","EmployeeLogonTypeValue","StartAmountCalculation","BankDropCalculation","GenerateLoyaltyCardNumber","FiscalRegistrationProcessId","IncludeSalesOrderInvoices","IncludeFreeTextInvoices","IncludeProjectInvoices","IncludeCreditNoteInvoices","DisplayTaxExemptInLineDetails","TaxExemptReceiptIndicator","ManuallyCalculateCharges","ChargeOverrideReasonCode","ShiftReconcilation","CustomerAccountFloorLimit","VoidSuspendedTransactionsOnCloseShift","ShowDateTime","UseAdvancedCashManagement","DefaultCustomerSearchModeValue","AllowManualOfflineBeforeSignIn","UseFinancialReconciliationInStore","RequirePaymentForFulfillmentValue","CardNotPresentProcessingConfigurationValue","EnableQuickPayShortcuts","ChangeDueBehaviorValue","AutoSynchronizeDeviceNumberSequences","SelfCheckout","VisualProfileClass","FontSchemeTypeValue","IsAppBarLabelVisible","IsDateTimeVisible","LogOnLayoutTypeValue","LogOnKeyboardTypeValue","CompactLogonBackgroundPictureId","PortraitLogonBackgroundPictureId","CompactPortraitLogonBackgroundPictureId","LogOnLogoPictureId","IsProductIdVisibleOnCartLine","DefaultSearchResultDisplayViewTypeValue","BypassItemAddedDialog","OperationalInsightsConfigurationClass","InstrumentationKey","IsEnabled","PaymentConfigurationClass","AlwaysStoreCardTokenOnOrderBalanceAuthorization","MinOrderProcessingDaysForStoringCardToken","DeviceClass","DeviceNumber","DeviceId","DeviceType","TerminalRecordId","ChannelName","TokenIssueTime","ActivationStatusValue","Token","CountryRegionIsoCode","DiscountCodeClass","Code","ConcurrencyMode","Disclaimer","DistrictInfoClass","CityName","HardwareProfileClass","LineDisplayDelayForLinkedItems","LineDisplayBalanceText","LineDisplayBinaryConversion","LineDisplayCharacterSet","LineDisplayClosedLine1","LineDisplayClosedLine2","LineDisplayDeviceDescription","LineDisplayDeviceTypeValue","LineDisplayDeviceName","LineDisplayDisplayLinkedItem","LineDisplayDisplayTerminalClosed","LineDisplayTotalText","LineDisplayKeepConnectionOpen","DualDisplayActive","DualDisplayWebBrowserUrl","DualDisplayImageRotatorInterval","DualDisplayImageRotatorPath","DualDisplayReceiptWidthPercentage","DualDisplayDisplayType","EftTypeId","EftCompanyId","EftConfiguration","EftPaymentConnectorName","EftData","EftDescription","EftMerchantId","EftPassword","EftServerName","EftServerPort","EftUserId","EftTestMode","MsrEndTrack1","MsrEndTrack2","FiscalPrinterManagementReportPAFIdentification","FiscalPrinterManagementReportConfigParameter","FiscalPrinterManagementReportTenderType","FiscalPrinterManagementReportGiftCard","FiscalRegisterDeviceTypeValue","FiscalRegisterConfiguration","FiscalRegisterDeviceDescription","FiscalRegisterDeviceName","KeyboardMappingId","KeyLockDeviceTypeValue","KeyLockDeviceDescription","KeyLockDeviceName","MsrDeviceTypeValue","MsrDeviceDescription","MsrDeviceName","MsrMake","MsrModel","MsrSeparator","MsrStartTrack","PinPadDeviceTypeValue","PinPadDeviceName","PinPadMake","PinPadModel","PinPadDeviceDescription","ProfileDescription","RFIDDeviceTypeValue","RFIDDeviceName","RFIDDeviceDescription","ScaleDeviceTypeValue","ScaleDeviceName","ScaleDeviceDescription","ScaleManualInputAllowed","ScaleTimeoutInSeconds","SignatureCaptureDeviceTypeValue","SignatureCaptureDeviceName","SignatureCaptureMake","SignatureCaptureModel","SignatureCaptureDeviceDescription","SignatureCaptureFormName","PinPadAllowNfcPayment","Printers","HardwareProfilePrinterClass","Scanners","HardwareProfileScannerClass","FiscalIntegrationTechnicalProfiles","FiscalIntegrationTechnicalProfileClass","CashDrawers","HardwareProfileCashDrawerClass","SupportedLanguageClass","UseShippingAddress","CardNumber","CCID","Track1","Track2","Track3","VoiceAuthorizationCode","EncryptedPin","AdditionalSecurityData","IsSwipe","Country","House","Address1","Address2","Zip","NameOnCard","ExpirationMonth","ExpirationYear","CardPaymentAcceptSettingsClass","HostPageOrigin","AdaptorPath","CardTokenizationEnabled","CardPaymentEnabled","PaymentAmount","HideBillingAddress","RequireShippingAddress","CardPaymentAcceptPointClass","AcceptPageUrl","AcceptPageSubmitUrl","MessageOrigin","AcceptPageContent","PaymentConnectorId","NotReloadAcceptPageContentWhenAmountChanged","TenderLine","PaymentSdkErrors","PaymentErrorClass","AdditionalContext","AccessCode","Settings","RetrievePaymentResultSettingsClass","Information","InformationAmount","InputTypeValue","ItemTender","LineTypeValue","ParentLineId","ReasonCodeId","SubReasonCodeId","SourceCode","SourceCode2","SourceCode3","FiscalTransactionParentGuid","IsChanged","ReasonSubCodeClass","TriggerCode","AmountPercent","SubCodeId","TriggerFunctionTypeValue","PriceTypeValue","ReceiptClass","Header","Body","Footer","Width","LayoutId","ReceiptTitle","ReceiptTypeValue","ReceiptTypeStrValue","PrinterClass","ReceiptMaskClass","IsIndependent","Mask","OriginLineId","MasterProductId","ListingId","TotalPercentageDiscount","PeriodicDiscount","InventorySiteId","InventoryStatusId","LicensePlate","ReservationId","ReturnQuantity","ProductSourceValue","IsInvoiceSettled","IsPriceLocked","AgreementPrice","ReturnChannelId","SalesDate","SavedQuantity","IsSavedDiscount","ElectronicDeliveryEmailAddress","LoyaltyPercentageDiscount","TenderDiscountPercentage","Found","DateToActivateItem","PeriodicPercentageDiscount","QuantityDiscounted","UnitQuantity","UnitOfMeasureConversion","UnitOfMeasureConversionClass","AttainablePriceLines","PeriodicDiscountPossibilities","ReturnLabelProperties","ReturnLabelContentClass","LineMultilineDiscOnItem","LineMultilineDiscOnItemValue","WasChanged","OriginalSalesOrderUnitOfMeasure","InventOrderUnitOfMeasure","IsLoyaltyDiscountApplied","ReturnLoyaltyRewardPointLines","FulfillmentStatus","FulfillmentStatusValue","DetailedLineStatus","DetailedLineStatusClass","LastReturnProcessedTime","SalesAgreementPrice","IsSalesAgreementSkipped","SearchAreaClass","Radius","DistanceUnitValue","TenderTypeName","TenderCurrency","CountingRequired","StartingAmountOfStoreCurrency","StartingAmountOfTenderCurrency","FloatingEntryAmountOfStoreCurrency","FloatingEntryAmountOfTenderCurrency","SafeDropAmountOfStoreCurrency","SafeDropAmountOfTenderCurrency","BankDropAmountOfStoreCurrency","BankDropAmountOfTenderCurrency","RemoveTenderAmountOfStoreCurrency","RemoveTenderAmountOfTenderCurrency","DeclareTenderAmountOfStoreCurrency","DeclareTenderAmountOfTenderCurrency","TenderedAmountOfStoreCurrency","TenderedAmountOfTenderCurrency","ChangeAmountOfStoreCurrency","ChangeAmountOfTenderCurrency","Count","Overridden","OverriddenFloatEntryAmountInStoreCurrency","OverriddenFloatEntryAmountInTenderedCurrency","OverriddenBankDropAmountInStoreCurrency","OverriddenBankDropAmountInTenderedCurrency","OverriddenChangeAmountInStoreCurrency","OverriddenChangeAmountInTenderedCurrency","OverriddenDeclaredTenderAmountInStoreCurrency","OverriddenDeclaredTenderAmountInTenderedCurrency","OverriddenRemovedTenderAmountInStoreCurrency","OverriddenRemovedTenderAmountInTenderedCurrency","OverriddenSafeDropAmountInStoreCurrency","OverriddenSafeDropAmountInTenderedCurrency","OverriddenStartingAmountInStoreCurrency","OverriddenStartingAmountInTenderedCurrency","OverriddenTenderedAmountInStoreCurrency","OverriddenTenderedAmountInTenderedCurrency","OverShortAmountOfTenderCurrency","OperationType","ProductRecordId","ItemName","Counted","EstimatedOnHandQuantity","OnHandCalculationDateTime","Unit","UserId","CountedDate","InventBatchId","WarehouseLocationId","InventoryStatus","WarehousePalletId","InventSiteId","ConfigId","InventSizeId","InventColorId","InventStyleId","InventSerialId","TrackingGuid","UpdatedInAx","IsExempt","TaxBasis","IsIncludedInPrice","TaxCode","IsTaxGroupRounding","RefundableAmount","CaptureToken","CardToken","IncomeExpenseAccountTypeValue","MaskedCardNumber","TenderDate","IsPreProcessed","IsDeposit","IsCustomerAccountFloorLimitUsed","AuthorizationReferenceId","IsIncrementalCaptureEnabled","IsReauthorizationEnabled","IncrementalOffsetAmount","RoundingDifference","RemainingLinkedRefundAmount","Text","UnitOfMeasureClass","DecimalPrecision","Symbol","ProductUnitOfMeasureClass","UnitOfMeasureSourceValue","ProductQuantityLimitRules","ProductQuantityLimitRuleClass","RecommendedElementClass","ElementId","ElementTypeValue","RecommendationCriteriaClass","CustomerAccountNumber","ProductIds","ProductListId","UnitOfMeasure","CommerceListId","InvitationId","Invitee","IsSent","LastRequestDateTime","LastSentDateTime","InvitationTypeValue","SearchFilterClass","FilterTypeValue","SearchValues","SearchFilterValueClass","TransactionSearchCriteriaClass","TransactionIds","CustomerFirstName","CustomerLastName","ReceiptEmailAddress","SearchIdentifiers","SearchLocationTypeValue","CustomFilters","SalesOrderSearchCriteriaClass","SearchTypeValue","IncludeDetails","SalesTransactionTypeValues","TransactionStatusTypeValues","SearchStoreCriteriaClass","ChannelTypeValue","OnlineStoreCustomerTypeValue","CustomerSearchCriteriaClass","Keyword","SearchOnlyCurrentCompany","SearchLocationValue","Refinements","CustomerRefinerValueClass","ProductPriceClass","TradeAgreementPrice","MaxVariantPrice","MinVariantPrice","CustomerContextualPrice","ProductLookupId","PriceSourceTypeValue","OrgUnitAvailabilityClass","OrgUnitLocation","OrgUnitLocationClass","ItemAvailabilities","ItemAvailabilityClass","ProductVariantPropertySetClass","ProductVariantPropertiesAsList","PurchaseQuantity","PurchaseUnit","PurchaseReceived","PurchaseReceivedNow","WMSLocationId","WMSPalletId","IsCommitted","UniqueIdentifier","DeliveryMethod","QuantityTransferred","QuantityRemainShip","QuantityRemainReceive","Guid","TransferOrderJournalClass","VoucherId","UpdatedByWorker","PostingDate","Comments","JournalLines","TransferOrderJournalLineClass","AffiliationClass","AffiliationTypeValue","InventoryInboundOutboundDocumentLinesSummaryClass","InProgressQuantity","TotalLineNumber","InventoryDocumentSerialNumberLinesSummaryClass","RegisteringQuantity","RegisteredQuantity","InventoryInboundOutboundDocumentLineClass","SourceDocumentRecordId","SourceDocumentLineRecordId","QuantityCancelled","QuantityToUpdate","LocationId","ItemPrimaryImageUrl","IsLocationActive","IsLocationAllowBlankReceiptEnabled","IsLocationBlankIssueAllowed","ProductDimensions","ProductDimensionClass","IsCloseLine","OriginTypeValue","SourceDocumentLine","InventoryInboundOutboundSourceDocumentLineClass","SerialNumberLines","InventoryDocumentSerialNumberLineClass","TrackingDimensionLines","InventoryDocumentTrackingDimensionLineClass","ToLocationId","AdjustmentTypeValue","DocumentTypeValue","TotalQuantityOrdered","TotalQuantityShipped","TotalQuantityReceived","TotalQuantityCancelled","TotalLines","IsChangeAllowed","DocumentRecordId","OverDeliveryPercentage","UnderDeliveryPercentage","HasSerialNumber","IsSerialNumberBlankReceiptAllowed","IsSerialNumberDuplicateCheckEnabled","InventoryDocumentSourceSerialNumberLineClass","InventoryDocumentSourceTrackingDimensionLineClass","ToProductId","ToInventoryDimensionId","InventoryDocumentLineFilterCriteriaClass","InventoryDocumentUpdateLinesActionClass","ActionTypeValue","InventoryDocumentLineOperationResultSettingsClass","ModeValue","InventoryDocumentLineSearchCriteriaClass","SourceDocumentId","ItemIds","AvailableSerializedLineOnly","DocumentLineIds","DocumentOperationTypeValue","InventoryDocumentSearchCriteriaClass","TransferFromWarehouse","ShipFromWarehouse","TransferToWarehouse","DocumentTypeIds","DocumentStateValue","DocumentTypeValues","InventoryDocumentSerialNumberLineSearchCriteriaClass","DocumentLineId","InventoryDocumentSerialNumberLineUpdateActionClass","InventoryDocumentSerialNumberLineResetActionClass","InventoryInboundOutboundDocumentUpdateLinesByCriteriaResultClass","UpdatedLines","TotalLinesUpdated","WarehouseLocationSearchCriteriaClass","WarehouseIds","IsLocationProfileRequired","SearchText","WorkDocumentLineId","SourceLineId","SourceLine","InventoryDocumentValidationCategoryResultsSummaryClass","CategoryName","SeverityValue","TotalValidationResultCount","InventoryDocumentValidationResultSummaryClass","DocumentVersion","CategorySummaries","InventoryDocumentValidationResultLineClass","DocumentValidationResultLineId","ErrorCode","ErrorMessage","DocumentLongVersion","InventoryDocumentValidationResultSearchCriteriaClass","Categories","ProductDimensionValueInventoryAvailabilityClass","DimensionTypeValue","DimensionValue","ProductDimensionValueClass","TotalAvailableInventoryLevelLabel","TotalAvailableInventoryLevelCode","PhysicalAvailableInventoryLevelLabel","PhysicalAvailableInventoryLevelCode","UnitOfMeasureSearchCriteriaClass","IncludeQuantityLimitRules","DimensionId","ColorHexCode","ImageUrl","RefinerGroup","ProductDimensionCombinationClass","SearchRefinerClass","RefinerTypeValue","DisplayTemplateValue","SearchRefinerValueClass","RefinerRecordId","LeftValueBoundString","RightValueBoundString","UnitText","RowNumber","LeftValueBoundLocalizedString","RightValueBoundLocalizedString","ProductRefinerClass","SourceValue","Values","ProductRefinerValueClass","RefinerSourceValue","SwatchImageUrl","SwatchColorHexCode","ClientBookRefinerClass","ClientBookRefinerValueClass","ProductRelationTypeClass","ComponentInSlotRelationClass","ComponentId","SlotId","IsSerialized","IsActiveInSalesProcess","DateOfBlocking","DateToActivate","DateToBlock","PriceKeyingRequirementValue","QuantityKeyingRequirementValue","MustKeyInComment","CanQuantityBecomeNegative","MustScaleItem","CanPriceBeZero","LocalizedStringClass","TextId","CardTenderTypeValue","CustomerAccount","LoyaltyGroups","LoyaltyGroupClass","RewardPoints","LoyaltyRewardPointClass","LoyaltyEnrollmentDate","LoyaltyEnrollmentDateLocal","LoyaltyEnrollmentTime","LoyaltyEnrollmentTimeLocal","OmOperatingUnitId","ProductComponentClass","AdditionalChargeForComponent","Behavior","ProductBehaviorClass","Dimensions","ProductTypeValue","Components","IsGiftCard","SimpleLinkedProductClass","PrimaryImageUrl","ItemTypeValue","ItemServiceTypeValue","IsDiscountAllowed","IsManualDiscountAllowed","IsKitDisassemblyAllowed","IsNegativeQuantityAllowed","IsReturnAllowed","IsSaleAtPhysicalStoresAllowed","IsZeroSalePriceAllowed","KeyInPriceValue","KeyInQuantityValue","MustPrintIndividualShelfLabelsForVariants","MustPromptForSerialNumberOnlyAtSale","MustWeighProductAtSale","ValidFromDateForSaleAtPhysicalStores","ValidToDateForSaleAtPhysicalStores","IsStorageDimensionGroupLocationActive","IsStorageDimensionGroupLocationAllowBlankReceiptEnabled","AllowNegativePhysicalInventory","IsStockedProduct","IsBlankSerialNumberAllowed","IsBlankSerialNumberReceiptAllowed","IsSerialNumberControlEnabled","IsStorageDimensionGroupLocationBlankIssueAllowed","IsSerialNumberRequired","DefaultQuantity","MinimumQuantity","MultipleOfQuantity","IsSaleAtSelfCheckoutRegistersAllowed","ProductSearchResultClass","AverageRating","TotalRatings","SearchSuggestionClass","Value2","Value3","Value4","SuggestionType","LoyaltyPointRedemptionEstimateClass","MaxCurrencyValueOfLoyaltyPoints","RewardPointToRedeemList","LoyaltyTiers","LoyaltyTierClass","LoyaltyCardTiers","LoyaltyCardTierClass","HighestActiveLoyaltyCardTier","TierId","TierLevel","LoyaltyTierRecordId","IsRedeemable","RewardPointCurrency","RewardPointTypeValue","RewardPointId","IssuedPoints","UsedPoints","ExpiredPoints","ActivePoints","PointsExpiringSoon","UnvestedPoints","LoyaltyCardTransactionClass","EntryDateTime","EntryTypeValue","ExpirationDate","RewardPointAmountQuantity","BalanceCurrencyCode","BalanceInCardCurrency","CardCurrencyCode","OperationPermissionClass","OperationName","OperationId","CheckUserAccess","AllowAnonymousAccess","AllowCustomerAccess","AllowApplicationAccess","IsEnabledForTaskManagement","StateProvinceInfoClass","TransactionLogClass","KitTransactionClass","KitTransactionLines","KitTransactionLineClass","SalesTaxGroupClass","TaxGroupName","ProductPropertyClass","ValueString","PropertyTypeValue","IsDimensionProperty","GroupTypeValue","GroupName","VariantInformation","ProductVariantInformationClass","KitDefinition","KitDefinitionClass","ActiveVariantProductId","Variants","ProductVariantClass","ProductDimensionSetClass","ChangeActionValue","RequestedActionValue","DimensionKey","DimensionValues","ProductDimensionValueSetClass","VariantSet","SwatchRefinerGroupValue","SwatchRefinerGroupTranslation","SwatchRefinerGroupImageUrl","SwatchRefinerGroupColorHexCode","Items","RichMediaLocationsRichMediaLocationClass","AltText","IsSelfHosted","IsDefault","Priority","DisassembleAtRegister","KitLineDefinitions","KitLineDefinitionClass","KitLineProductToVariantMap","ComponentKitVariantSetClass","KitVariantToComponentMap","KitVariantContentClass","KitLineProductId","KitVariantIdList","ComponentProductId","KitLineIdentifier","SubstituteProductIds","ComponentProperties","KitLineProductPropertyClass","Charge","KitComponentKeyClass","DistinctProductId","KitVariantId","KitComponentKeyList","ProductLookupClauseClass","InventDimensionId","ProductAssortmentIntervalClass","OrgUnitContactClass","Distance","IsPickupLocation","IsShippingLocation","PostalAddressId","OpenFrom","OpenTo","Locator","LocatorExtension","ContactTypeValue","SalesLineDeliveryOptionClass","SalesLineId","DeliveryOptions","DeliveryOptionClass","DeliveryChargeLines","DeliveryChargeLineClass","TotalChargeAmount","ChannelDeliveryOptionClass","ChannelIdentityClass","ChannelType","ExtensibleRetailChannelTypeClass","OperatingUnitNumber","ChannelProfilePropertyClass","ChannelConfigurationClass","ChannelNaturalId","MinimumDepositPercentage","QuoteExpirationDays","PickupDeliveryModeCode","CarryoutDeliveryModeCode","CancellationChargePercentage","InventLocationDataAreaId","BingMapsApiKey","BingMapsEnabled","CatalogDefaultImageTemplate","CompanyCurrency","PriceIncludesSalesTax","ChannelCountryRegionISOCode","DefaultLanguageId","TimeZoneInfoId","EmailDeliveryModeCode","GiftCardItemId","EnableProductRecommendations","RefundableShippingAmountWithoutApproval","RefundShippingCharges","ReceiptSettingsValue","CustomerAttributeGroupId","ClientBookAttributeGroupId","NotificationRefreshInterval","AllowExchangeOnReturnOrders","IsInventoryAutomaticValidationEnabled","HideSystemInventoryInStockCount","EnablePriceChangeTracking","ProfileProperties","Properties","ChannelPropertyClass","ChannelLanguageClass","UseAdvancedAutoCharges","UseRTSForOnlineOrderCreation","IsWarrantyAutoPromptEnabled","EnableProductRatingsForRetailStores","EnableFetchingPickingListsForPickingAndReceiving","EnableReturnsForMultipleOrderInvoices","EnableAnonymousOrderLookupByChannelReferenceId","EnableOmniChannelPayments","EnableFiscalRegistrationStorageBackup","UseSalesReceiptAsDefaultReceiptTypeInJournal","SalesOrderHeaderAttributeGroups","SalesOrderLinesAttributeGroups","CustomerAddressBooks","StoreAddressBookClass","EnableReturnPolicies","InventAvailabilityCalculationMode","IsPriceInclusiveTaxExemptCalculationEnabled","EnableValidationOfSerialNumbersForInStoreReturns","DisplayNonRetailOrdersInEcommerceOrderHistory","EnableCopilotCustomerInsights","EnableCopilotProductInsights","EnableCopilotReportInsights","EnableStoreCommerceCopilot","Channel","ChannelDeliveryOptionConfigurationClass","PickupDeliveryModeCodes","NonSalesTransactionClass","ForeignCurrency","DenominationDetails","DenominationDetailClass","DropAndDeclareTransactionClass","TenderDetails","TenderDetailClass","ProductSearchCriteriaClass","Ids","IncludeProductsFromDescendantCategories","SearchCondition","SkipVariantExpansion","IncludeAttributes","Barcodes","Refinement","RecommendationListId","DownloadProductData","Context","IsOnline","ChangedProductsSearchCriteriaClass","SynchronizationToken","AsListings","Session","ReadChangedProductsSessionClass","EmployeeActivitySearchCriteriaClass","FromDateTimeOffset","ToDateTimeOffset","EmployeeActivityTypeValues","SearchSuggestionCriteriaClass","ProductSearchCriteria","CustomerSearchCriteria","HitPrefix","HitSuffix","OrderOriginatorClass","StaffName","OrderOriginatorSearchCriteriaClass","SalesIds","SalesOrdersLookupCriteriaClass","SalesOrderLookups","SalesOrderLookupClass","CartLineDeliveryPreferenceClass","DeliveryPreferenceTypeValues","CartLinePromotionClass","Promotions","Color","Style","Size","Configuration","ColorId","StyleId","SizeId","DistinctProductVariantId","PropertiesAsList","DeviceTypeValue","DeviceName","DeviceMake","DeviceModel","DeviceDescription","CharacterSet","ReceiptProfileId","BinaryConversion","DocInsertRemovalTimeout","Logo","LogoAlignment","KeepConnectionOpen","DecodeData","IsSharedShiftDrawer","DrawerKeepConnectionOpen","TillLayoutClass","CashChangerLayoutXml","CustomerLayoutId","CustomerLayoutXml","Height","LayoutTypeValue","LayoutXml","LayoutXmlPortrait","ReceiptItemsLayoutXml","ReceiptPaymentLayoutXml","TotalId","TotalsLayoutXml","StartScreen","ButtonGridZones","ButtonGridZoneClass","ImageZones","ImageZoneClass","ReportZones","ReportZoneClass","SalesInvoiceClass","SalesType","InvoiceDate","DueDate","InvoiceSubtotal","TotalCharges","TotalTaxAmount","TotalLineDiscount","AmountBalance","Account","SalesInvoiceLine","SalesInvoiceLineClass","OrderAccount","OrderedByCustomerName","OrderInvoiceClass","InvoiceDueDate","InvoicePaidStatusValue","TaxOverrideClass","SourceTaxGroup","DestinationTaxGroup","SourceItemTaxGroup","DestinationItemTaxGroup","AdditionalDescription","TenderTypeClass","Function","ChangeTenderTypeId","AboveMinimumChangeAmount","AboveMinimumChangeTenderTypeId","UseSignatureCaptureDevice","MinimumSignatureCaptureAmount","IsOvertenderAllowed","IsUndertenderAllowed","MaximumOvertenderAmount","MaximumUndertenderAmount","MaximumAmountPerTransaction","MaximumAmountPerLine","MinimumAmountPerTransaction","MinimumAmountPerLine","RoundOff","TakenToBank","TakenToSafe","ConnectorId","GiftCardItem","GiftCardCashoutOutThreshold","ChangeLineOnReceipt","HideCardInputDetails","CashDrawerLimitEnabled","CashDrawerLimit","RestrictReturnsWithoutReceipt","DefaultCardTypeId","UseForDeclareStartAmount","ReasonCodeClass","InputRequired","LinkedReasonCodeId","MaximumLength","MaximumValue","MinimumLength","MinimumValue","OncePerTransaction","PrintInputNameOnReceipt","PrintInputToReceipt","PrintPromptToReceipt","Prompt","RandomFactor","RetailUseReasonCode","ActivityValue","IsMultiLineText","ReasonSubCodes","ReportDataSetClass","ReportId","Parameters","Output","ReportRowClass","HasTotalRow","HasDisclaimer","ZipCodeInfoClass","ZipPostalCode","StreetName","CityAlias","District","ReasonCodeRequirementClass","SourceId","TableRefTypeValue","QueryResultSettingsClass","Paging","PagingInfoClass","Sorting","SortingInfoClass","Columns","ColumnName","IsDescending","NextPageToken","Top","Skip","TranslationLanguage","TranslatedProperties","NumberSequenceSeedDataClass","DataValue","LastTransactionDataValue","LastTransactionCreatedDateTime","LastTransactionId","ReceiptNumberResetInfoClass","ResetDate","TypeValue","Enabled","DeviceActivationResultClass","Device","PurchaseHistoryClass","DatePurchased","PurchaseHistorySearchCriteriaClass","StartDate","EndDate","ProductNameFilter","NodeClass","ParentScopeId","ParentSequence","Sequence","ScreenshotUri","LineClass","ChildrenIds","IsLinked","LineMetadataId","Artifacts","ArtifactSummaryClass","MetadataPropertyValues","MetadataPropertyValueClass","MetadataTextClass","MetadataHypertextLinkClass","ScopeClass","ScopeTypeValue","Children","ActiveCount","IsForm","FrameworkClass","Access","Hierarchy","Publisher","UserActionClass","SystemGenerated","GlobalId","Annotations","AnnotationClass","TaskUserActionClass","UserActionTypeValue","TaskId","FormUserActionClass","FormId","ControlLabel","CommandUserActionClass","ReturnTypeValue","CommandName","ControlName","ControlType","Arguments","CommandArgumentClass","LabelId","ReturnValue","RecordingClass","Scopes","FormContextEntries","FormContextDictionaryEntryClass","RootScope","FormContext","FormContextClass","ProductVariantResolutionContextClass","ProductVariantResolutionOnKitSelectionContextClass","SelectedComponents","WarehouseLocationClass","IsLicensePlateControlled","TransDateTime","RegisterResponse","ReceiptCopy","RecordGUID","RegisterStoreId","RegisterTerminalId","RegistrationStatusValue","RegistrationProcessId","ConnectorGroup","ConnectorFunctionalityProfileId","RegisterInfo","DocumentNumber","RegistrationTypeValue","ServiceName","TenderLineAdjustments","FiscalTransactionTenderLineAdjustmentClass","SalesLineAdjustments","FiscalTransactionSalesLineAdjustmentClass","FulfillmentLineClass","SalesPersonStoreId","SalesPersonId","SalesPersonFirstName","SalesPersonLastName","SalesLineNumber","EmailAddress","DeliveryModeCode","FulfillmentDeliveryType","DeliveryTypeValue","QuantityNotInvoiced","QuantityNotPacked","QuantityNotPicked","StoreInventoryTotalQuantity","StoreInventoryReservedQuantity","StoreInventoryOrderedQuantity","ProductVariant","RequestedShipDate","RequestedReceiptDate","CreatedDate","FulfillmentLineSearchCriteriaClass","OrderCreatedStartDate","OrderCreatedEndDate","RequestedReceiptStartDate","RequestedReceiptEndDate","RequestedDeliveryStartDate","RequestedDeliveryEndDate","FulfillmentStatusValues","CustomerPhoneNumber","CommentClass","AuthorStaffId","AuthorName","AddressPurposeClass","AddressType","ExtensionPackageDefinitionClass","ReturnPolicyClass","TenderTypePolicies","TenderTypePolicyClass","IsManagerOverrideEnabled","TenderTypeAmountClass","FeatureStateClass","WarrantyClass","DurationUnitValue","Duration","ApplicablePriceRangeBaseTypeValue","ApplicablePriceRangeMin","ApplicablePriceRangeMax","RecallInvoicedSalesLineLookupClass","InvoicedLineId","IgnoreSerialNumberMismatch","WarrantyGroupClass","Warranties","ProductWarrantiesMappingClass","WarrantyGroups","WarrantableProductId","FulfillmentLineContextualOperationsMapClass","FulfillmentLine","UserAlertClass","AlertSourceIdValue","LocalizedMessage","IsBlocking","CartLineUserAlertsClass","LineIndex","UserAlerts","FulfillmentLineUserAlertsClass","BusinessPartnerProspectClass","CompanyName","JobTitle","Department","CompanySize","ProspectTypeValue","ChannelSearchCriteriaClass","BusinessPartnerOperationClass","BusinessPartnerOperationRequestClass","Details","BusinessPartnerOperationRequestDetailsClass","UserFirstName","UserLastName","ReceiptTypesByFormatTypeClass","ReceiptOutputFormatType","ReceiptTypesValues","InventoryJournalNameSearchCriteriaClass","JournalNameIds","AssortedProductIdentityClass","IsRemoteProduct","ProductExistenceIdClass","ProductExistenceCriteriaClass","CountryRegionClass","IsoCode","BusinessVerticalsIndiaClass","RecId","EntityCode","AddressTaxInformationIndiaClass","RegistrationLocation","Tin","Gstin","TinRegistrationNumber","TaxRegistrationNumberIndiaClass","GstinRegistrationNumber","CustomerTaxInformationClass","IsForeign","IsPreferential","NatureOfAssessee","PanNumber","RegistrationNumber","RegistrationType","TaxType","Type","BusinessVerticals","InstructionsVersion","AssignedToPersonnelNumbers","AssignedToExternalSubId","DeepLinkTypeValue","DeepLink","DeepLinkPosOperationName","ContactPersonPersonnelNumber","Instructions","CompletionDateTime","ResolvedByPersonnelNumber","ChecklistId","Uri","IsAdditionalMedia","MediaTypeValue","MediaPurpose","IsApplicableForChildEntities","EmployeeActivityClass","Activity","ActivityDateTimeOffset","EmployeeActivityTypeValue","BreakCategory","CustomerRefinerClass","CardTokenInfo","CardTokenInfoClass","ProductDimensionAvailabilitySearchCriteriaClass","RequestedDimensionTypeValue","RequestedDimensionTypeValues","MatchingDimensionValues","DefaultWarehouseOnly","FilterByChannelFulfillmentGroup","DeliveryModeTypeFilterValue","InventoryAccuracyValue","LineShippingAddressClass","CartDeliveryPreferencesClass","HeaderDeliveryPreferenceTypeValues","CartLineDeliveryPreferences","LineDeliverySpecificationClass","DeliverySpecification","DeliverySpecificationClass","DeliveryPreferenceTypeValue","PickUpStoreId","ShipFromStoreId","ShipFromWarehouseId","OrderSearchCriteriaClass","OrderStatusValues","DocumentStatusValues","OrderType","FulfillmentTypeValues","PickupStartDate","PickupEndDate","PickupTimeslotStartTime","PickupTimeslotEndTime","ChannelIds","SearchOnlyRetailOrders","ChecklistSearchCriteriaClass","PersonnelNumber","ChecklistIds","StatusValues","TaskSearchCriteriaClass","TaskIds","FilterMyTasks","FilterOverdueTasks","ChecklistTaskTeamsIntegrationConfigurationClass","MicrosoftGraphResource","ReturnCartLineClass","TenderDiscountLineClass","ReceiptRetrievalCriteriaClass","IsCopy","IsRemoteTransaction","IsPreview","QueryBySalesId","HardwareProfileId","CartSearchCriteriaClass","CartId","ExpectedCartVersion","IncludeAnonymous","SuspendedOnly","LastModifiedDateTimeFrom","LastModifiedDateTimeTo","ReturnUrl","SearchReceiptCriteriaClass","ReceiptTypesByFormatTypeCollection","GiftReceiptLineNumbers","ElectronicAddressClass","ExtensibleEAddressType","ChannelReferenceLookupCriteriaClass","ChannelReferenceAdditionalLookupCriteria","ChannelReferenceAdditionalLookupCriteriaClass","FulfillmentLineParameterClass","PackingDate","ShipFulfillmentLineClass","RejectFulfillmentLineClass","RejectedQuantity","InfoCodeId","SubInfoCodeId","TotalNumberOfProducts","NumberOfProductsRead","NumberOfProductsReadInCurrentPage","NextSynchronizationToken","IsInitialSync","DeletedListingsResultClass","HasMorePublishedListings","DeletedListings","ListingIdentityClass","ProductRatingClass","RatingDistribution","ProductRatingCountClass","ProductDeliveryOptionsClass","ListingPublishStatusClass","PublishStatusValue","ListingModifiedDateTime","ChannelListingId","AppliedActionValue","StatusMessage","MediaLocationSearchCriteriaClass","MediaUsageTypeValue","OrgUnitLocationSearchCriteriaClass","InventoryLocationIds","StoreHoursClass","RegularStoreHours","RegularStoreHoursClass","RecallOrderSearchCriteriaClass","CartPromotionsClass","HeaderPromotions","CartLinePromotions","CartPromotionLineClass","Promotion","PromotionClass","ItemUnitClass","VariantInventoryDimensionId","DistinctProductVariant","ProductAvailableQuantityClass","AvailableQuantity","OrgUnitAvailabilitySearchCriteriaClass","AffiliationSearchCriteriaClass","InvoiceSearchCriteriaClass","InvoiceIds","InvoiceTypeValues","InvoicePaidStatusValues","InvoiceDetailsSearchCriteriaClass","InvoicedSalesLinesSearchCriteriaClass","PickAndPackSalesLineParameterClass","ProductListSearchCriteriaClass","ProductListType","AffiliationId","LoyaltyTierId","PriceLookupContextClass","HeaderContext","PriceLookupHeaderContextClass","LineContexts","PriceLookupLineContextClass","ProductPromotionClass","ProductDiscounts","ClientBookCustomerSearchCriteriaClass","FilterByCurrentEmployee","ClientBookCustomerClass","ImageUris","ClientBookChangesClass","Changes","ClientBookChangeClass","ChargeCodeClass","PaymentConnectorPropertiesXml","MerchantPropertiesHashValue","ServiceAccountId","StoreSafeClass","SafeNumber","SafeBalance","LastUpdatedTime","InventoryDocumentReceiptSearchCriteriaClass","InventoryDocumentSourceDocumentLineCommitRecordSearchCriteriaClass","InventoryDocumentSourceDocumentLineCommitRecordClass","UpdateNowQuantity","CreateHardwareStationTokenResultClass","HardwareStationToken","PairingKey","ValidateHardwareStationTokenResultClass","MediaBlobClass","MediaType","Content","PictureId","OnlineChannelClass","OnlineChannelName","OnlineStoreAzureB2CProfile","CountryRegions","OrgUnitTypeValue","ChannelProfile","ChannelProfileClass","ChannelProperties","ChannelLanguages","TerminalDataDownloadRequestInfoClass","RequiresDataInitialization","HasBeenInitializedBefore","DataDownloadParametersClass","DownloadInterval","DownloadSessions","DownloadSessionClass","FeatureControlList","RetailSharedConfigurationParameterClass","DataStore","CDXDataStoreClass","TerminalDataUploadRequestInfoClass","DataUploadParametersClass","UploadInterval","UploadJobPackageRequests","UploadJobPackageRequestClass","JobId","JobDescription","FileSize","RowsAffected","Checksum","DateDownloaded","DateRequested","DataStoreName","DownloadLink","OfflineTerminalStateClass","LoyaltyRewardPointActivityClass","ActivityDate","LoyaltyRewardPointTimelineEntryType","ExtensibleLoyaltyRewardPointActivityEntryTypeValue","LoyaltyPoints","CurrencyRequestClass","AmountToConvert","HardwareStationProfileClass","HardwareStationId","HardwareStationTypeValue","HardwareStationName","HardwareStationDescription","HardwareStationUrl","HardwareStationHostName","HardwareStationEftTerminalId","LoyaltyCardSearchCriteriaClass","NameValuePairClass","LinkToExistingCustomerResultClass","ExternalIdentityProvider","ExternalIdentityLinkRecordId","OfflineSyncStatsLineClass","IsUploadJob","LastSyncDateTime","StorageAccessTokenClass","SasKey","TaskGuidesSearchResultClass","FrameworkPublisherName","AuditEventClass","EventId","EventIdString","Store","UploadType","EventType","EventDateTime","DurationInMilliseconds","Source","EventMessage","LogLevel","Staff","ClosedShiftId","ReferenceId","RefChannel","RefStore","RefTerminal","RefTransactionId","AuditEventTypeValue","AuditEventFiscalTransactionClass","FiscalRegistrationLines","AuditEventFiscalRegistrationLineClass","OrderedSum","PhysicalReserved","InventoryUnitOfMeasure","InventoryUnitOfMeasureDescription","InventoryAvailableToPromiseClass","NotificationItemClass","Action","ActionName","NotificationDetails","NotificationDetailClass","FiscalIntegrationDocumentRetrievalCriteriaClass","FiscalRegistrationEventTypeValue","DocumentContext","FiscalIntegrationDocumentContextClass","FiscalIntegrationDocumentClass","Document","DocumentGenerationResultTypeValue","FiscalConnectorTechnicalProfile","DocumentAdjustment","FiscalIntegrationDocumentAdjustmentClass","SequentialSignatureDataContext","FiscalIntegrationSignatureDataContextClass","FiscalIntegrationRegistrationResultClass","TransactionID","AuditEventId","Response","SubmittedDocument","SequentialSignatureData","FiscalIntegrationSequentialSignatureDataClass","FiscalIntegrationRegistrationProcessClass","RegistrationProcessLines","FiscalIntegrationRegistrationProcessLineClass","FiscalIntegrationSupportedEventsClass","FunctionalityProfileGroupId","SupportedFiscalEventTypes","SupportedNonFiscalEventTypes","ConnectorTypeValue","ConnectorLocationValue","TechnicalProfile","FiscalIntegrationFiscalRegistrationProcessSummaryClass","FiscalRegistrationProcessSummaryLines","FiscalIntegrationFiscalRegistrationProcessSummaryLineClass","FiscalIntegrationTechnicalProfileSearchCriteriaClass","ExcludeOptionalProcessLines","FunctionalityProfileGroupIds","FiscalIntegrationServiceInfoClass","ServiceProperties","FiscalIntegrationServiceStatusClass","IsReady","FiscalIntegrationServiceCommunicationResultClass","CommunicationResultTypeValue","FailureDetails","FiscalIntegrationServiceFailureDetailsClass","FiscalIntegrationServiceInfo","UserNotificationMessage","LastRegisterResponse","SequenceKey","IsOffline","SequentialNumber","DiscountsSearchCriteriaClass","IncludeDisabledDiscount","ExcludeTenderDiscount","DiscountOfferTypeValue","ValidationPeriodId","AdditionalRestrictions","ValidFromDate","ValidToDate","ValidationPeriod","ValidationPeriodClass","CouponCodes","DateValidationTypeValue","AreCouponsActiveOnSameDate","AreCouponsExpiredOnSameDate","CategoryPathLookupClass","CategoryPathResultClass","CategoryPath","CategoryPathClass","PickupTimeslotAvailabilitySearchCriteriaClass","SearchOptionValue","PickupTimeslotAvailabilityClass","AvailableCapacity","CheckInForOrderPickupConfirmationClass","SalesOrderConfirmedShipDateChangeClass","LineChanges","SalesLineConfirmedShipDateChangeClass","OrderCancellationResultClass","DocumentOperationCommitResultValue","DocumentOperationCommitResultCodeValue","VendorSearchCriteriaClass","VendorClass","PartyId","NameAlias","VendorValidationResultClass","VendorValidationResultLevelValue","CopilotResponseClass","LastRefreshDatetime","OnlineChannelAzureB2CConfigurationClass","TenantName","SignInSignupPolicyId","PasswordResetPolicyId","SignUpPolicyId","EditProfilePolicyId","LoginDomainName","Scope","ApplicationId","ApplicationSecret","ExtensionProfileClass","ExtensionServiceUrl","AttachedServices","AttachedServiceClass","ChannelInventoryConfigurationClass","AllowTransferOrderOverDelivery","AllowTransferOrderUnderDelivery","UserLocationProfileId","InventoryProductAttributeRecordId","InventoryOutOfStockAttributeValueText","ProductAvailabilitySortableAttributeRecordId","SkipQuantityInputWhenScanBarcode","UseInventoryVisibilityServiceAsDataSource","ChannelMerchandisingConfigurationClass","EnableMultipleUnitsOfMeasure","ChannelPurchaseConfigurationClass","AllowOverDelivery","AllowSubDelivery","InventoryJournalNameClass","JournalNameId","InventoryJournalTypeValue","DefaultAdjustmentTypeValue","ShiftRetrievalCriteriaClass","ShiftStatusValue","FilterByUserRole","IncludeAllShiftsForStore","UserDefinedSecretCertificateResultClass","CertificateData","TerminalInfoClass","CustomerTimelineItemTypeMapClass","Types","CustomerTimelineItemTypeClass","CustomerTimelineRefinerClass","RefinedResultsCount","CustomerTitleClass","ProductWarehouseClass","ProductWarehouseInventoryInformationClass","ProductWarehouseInventoryAvailabilities","ProductWarehouseInventoryAvailabilityClass","AggregatedProductInventoryAvailabilities","ProductInventoryAvailabilityClass","ProductWarehouseQuantityClass","PhysicalInventory","UpdateProductWarehouseAvailabilityResultClass","SuccessfulUpdates","InventoryQuantityClass","FailedUpdates","InventoryAvailabilitySearchCriteriaClass","SearchArea","QuantityUnitTypeValue","ProductUnits","ProductUnitClass","ExtensibleEnumerationContainerClass","TypeName","ExtensibleEnumerations","PackingSlipDataClass","PackingSlipId","CartConfigurationClass","ValidateDefaultOrderSettingsPerLine","IgnoreOrderSettings","MaxQuantityPerItem","EmailReceiptSettingsClass","EmailBehaviorValue","FiscalIntegrationComplianceResultClass","ErrorMessages","OrgUnitAddressClass","WarehouseDetailsClass","SwatchValue","ProductImageUrls","AttributeBooleanValueClass","AttributeCurrencyValueClass","AttributeDateTimeOffsetValueClass","AttributeFloatValueClass","UnitSymbol","AttributeIntValueClass","AttributeMediaLocationValueClass","AttributeTextValueClass","TextValueTranslations","ActionProperty","BackColorAsARGB","ARGBColorClass","BorderColorAsARGB","Column","ColumnSpan","DisplayText","FontColorAsARGB","ButtonId","Row","RowSpan","UseCustomLookAndFeel","PictureAsBase64","FontStyle","FontSize","EnableCustomFontForPOS","HideButtonText","Tooltip","EnableLiveContent","NotificationContentAlignment","ImageAlignment","A","R","G","B","PriceMethod","OriginId","PriceChangedByExtensions","TradeAgreementPriceLineClass","AttributePricingTradeAgreementPriceLineClass","CanApplyPriceAdjustments","SalesAgreementPriceLineClass","SalesAgreementName","UnitPrice","DiscountPercent","SalesAgreementLineTypeValue","PriceUnit","EffectiveDate","CommittedQuantity","CommittedAmount","RemainingAmount","PriceAdjustmentPriceLineClass","Concurrency","AttributePricingAdjustmentPriceLineClass","CanCompoundOnAdjustedPrice","AdjustedAmount","ManualPriceLineClass","ManualPrice","ManualPriceEntryTypeValue","BasePriceLineClass","ExtensiblePeriodicDiscountOfferTypeClass","OriginalAmount","OverrideAmount","OverrideReasonDescription","OverrideDateTime","TaxLineGTEClass","TaxComponent","Path","UniqueCardId","DataverseTenderLineClass","IsLocalized","IsSearchable","IsRetrievable","IsQueryable","IsRefinable","IsSortable","IsTokenNormalization","IsCompleteMatch","FromUnitOfMeasureId","ToUnitOfMeasureId","FromUnitOfMeasureSymbol","ToUnitOfMeasureSymbol","IsBackward","Factor","Numerator","Denominator","InnerOffset","OuterOffset","ReturnLocationText","ReturnWarehouseText","ReturnReasonText","ReturnPalleteText","LoyaltyGroupRecordId","EntryDate","EntryTime","RewardPointRecordId","RewardPointIsRedeemable","RewardPointType","ServiceType","PackageWeight","WeightClass","ShippedOnDate","DeliveredOnDate","EstimatedDeliveryDate","PackagingType","DestinationAddress","OriginAddress","ShipmentProgress","ShipmentProgressClass","ShippingCharge","Location","DateTime","AddressComponentNameValue","IsDataEntryOnly","NewLine","Expand","Inactive","Special","NumberOfSpaces","Separator","CashDrawerConfigurations","HardwareConfigurationClass","PrinterConfigurations","PinPadConfiguration","HardwareStationRecordId","IPAddress","Port","PrinterType","PrintBehaviorValue","ReceiptLayoutId","ReceiptType","TransferQuantity","ConfigValue","SizeValue","ColorValue","StyleValue","DocumentLineRecordId","InventTransRecordId","BatchNumber","AddressBookId","AddressBookTypeValue","AmountInForeignCurrency","ForeignCurrencyExchangeRate","BankBagNumber","TenderRecount","DenominationAmount","QuantityDeclared","AmountDeclared","SalesOrderLookupByTransactionIdClass","SalesOrderLookupBySalesIdClass","ButtonGridId","ZoneId","ZoneName","ReportRecordId","InventTransactionId","Site","Warehouse","SerialId","ColorName","SizeName","StyleName","ConfigName","ItemTaxGroup","SalesMarkup","RowData","FormAnnotationClass","MenuItemLabel","MenuItemName","MenuItemType","TaskGuideAnnotationClass","RecordingValueType","ExampleText","Hidden","IsReference","PropertyUserActionClass","ValueLabel","PropertyName","UserActionType","InfoUserActionClass","ControlLabelId","MenuItemUserActionClass","NavigationPath","ValidationUserActionClass","ArtifactType","LanguageTags","PropertyId","SingleValue","MultiValue","Tags","ComboBox","MultiSelect","Links","FormID","FormName","RecordingName","HasMetadata","ExtensibleFiscalRegistrationTypeClass","TenderLineNumber","AdjustmentAmount","RecordGuid","Exclude","DetailedOrderStatusClass","LineValidationResultClass","ValidationFailures","DataValidationFailureClass","TaxId","CodeId","DiscountOfferId","RestrictionValue","DocuRefRecId","Units","PartyLocationRecordId","PartyRecordId","ValueExtension","ParentLocation","IsMobilePhone","IsOptedInMarketing","QuantityReturned","TaxRate","IsRegistrationNumberUnique","IsPrimaryAddressRestricted","TypeApplicabilityRuleRecordId","DirPartyLocationRecordId","IssueDate","Section","ChannelTaxRegistrationClass","LinkedProductRecordId","CategoryRecordId","RelatedProductRecordId","RelationName","IsExcludedRelation","IsDirectRelation","OrderLookupAdditionalCriteriaTypeValue","OrderLookupAdditionalCriteriaTypeParameterValue","UserAlertFulfillmentLineParameterClass","SerialNumberInLatestFulfillmentTransaction","LatestFulfillmentTransactionOperationTypeValue","Rating","MondayOpenTime","MondayCloseTime","IsClosedOnMonday","TuesdayOpenTime","TuesdayCloseTime","IsClosedOnTuesday","WednesdayOpenTime","WednesdayCloseTime","IsClosedOnWednesday","ThursdayOpenTime","ThursdayCloseTime","IsClosedOnThursday","FridayOpenTime","FridayCloseTime","IsClosedOnFriday","SaturdayOpenTime","SaturdayCloseTime","IsClosedOnSaturday","SundayOpenTime","SundayCloseTime","IsClosedOnSunday","PeriodId","StartingTime","EndingTime","IsTimeBounded","MondayStartingTime","MondayEndingTime","IsMondayTimeBounded","TuesdayStartingTime","TuesdayEndingTime","IsTuesdayTimeBounded","WednesdayStartingTime","WednesdayEndingTime","IsWednesdayTimeBounded","ThursdayStartingTime","ThursdayEndingTime","IsThursdayTimeBounded","FridayStartingTime","FridayEndingTime","IsFridayTimeBounded","SaturdayStartingTime","SaturdayEndingTime","IsSaturdayTimeBounded","SundayStartingTime","SundayEndingTime","IsSundayTimeBounded","IsEndTimeAfterMidnight","IsMondayEndTimeAfterMidnight","IsTuesdayEndTimeAfterMidnight","IsWednesdayEndTimeAfterMidnight","IsThursdayEndTimeAfterMidnight","IsFridayEndTimeAfterMidnight","IsSaturdayEndTimeAfterMidnight","IsSundayEndTimeAfterMidnight","SalesOrderProperties","SalesLineProperties","FromStaffId","ToStaffId","RerunUploadSessionId","TargetStorage","UploadJobDefintion","UploadUrl","ExtensibleAuditEventTypeClass","UploadTypeValue","ItemCount","IsNew","LastUpdatedDateTimeStr","IsSuccess","IsLiveContentOnly","AuditEvent","SequentialSignatureKey","SequenceNumber","AllowSkip","AllowMarkAsRegistered","AllowPostpone","Optional","RegistrationSettings","FiscalIntegrationRegistrationSettingsClass","SequentialKeys","SkipReasonCode","MarkAsRegisteredReasonCode","PostponeReasonCode","RegistrationProcessLine","ConnectionProperties","FiscalIntegrationConfigurationPropertyClass","LabelName","FailureTypeValue","IsRetryAllowed","Segments","CategoryPathSegmentClass","CategoryId","BaseUrl","ServiceId","ExtensibleInventoryJournalTypeClass","TotalAvailable","OrderedInTotal","PhysicalAvailable","LastInventoryTransactionId","UnpostedOnlineOrderedQuantity","UnpostedFulfilledQuantity","IsInventoryAvailabilityQuantityReturned","UnprocessedQuantity","MaximumPurchasablePhysicalAvailableQuantity","MaximumPurchasableTotalAvailableQuantity","SumUncountedTransactions","IgnoreQuantityUnitType","QuantityUnitTypeClass","TotalAvailableQuantity","PhysicalAvailableQuantity","ConfigurationId","ParameterSetClass","CartLineValidationResultsClass","ValidationResultsByLineId","CartLineValidationResultsByLineIdClass","ValidationFailuresByCartLines","LineDataValidationFailureClass","CommerceExceptionClass","ErrorResourceId","DataValidationExceptionClass","ValidationResults","MissingRequiredReasonCodeExceptionClass","RequiredReasonCodes","TransactionRequiredReasonCodeIds","ReasonCodeRequirements","SecurityExceptionClass","DeviceAuthenticationExceptionClass","HeadquarterTransactionServiceExceptionClass","UserAuthenticationExceptionClass","UserAuthorizationExceptionClass","FeatureNotSupportedExceptionClass","CartValidationExceptionClass","TenderValidationExceptionClass","CommerceDataExchangeExceptionClass","ExtensibleEnumerationExceptionClass","TaskManagementExceptionClass","TaskManagementErrors","TaskManagementErrorClass","TaskManagementServerExceptionClass","TaskManagementClientExceptionClass","RemoteServiceNotAvailableExceptionClass","PaymentExceptionClass","ErrorContext","MemberNames","ItemDiscontinuedExceptionClass","RemovedUnavailableItemIds","InventoryDocumentLockedByOtherTerminalExceptionClass","WorkingTerminalId","InventoryDocumentExceedMaximumQuantityExceptionClass","ProductPricingConfigurationExceptionClass","ProductPricingConfigurationErrors","ProductPricingConfigurationErrorClass","LineIdToProductBehaviorMap","KeyValuePair_2OfString_ProductBehaviorClass","ValidationResultsPairs","CommerceRuntimeCompositionExceptionClass","ChecklistTaskValidationExceptionClass","InsufficientCredentialLengthExceptionClass","ActualLength","MinLength","ExtensibleEnumerationCacheExceptionClass","ExtensionConfigurationExceptionClass","StaffPasswordExpiredExceptionClass","ChannelConfigurationNotFoundExceptionClass","CopilotServiceExceptionClass","PaymentConfigurationExceptionClass","PaymentConfigurationSdkErrors","SecretConfigurationNotFoundExceptionClass","OriginalTenderType","AllowedReturnTenderTypes","AccountStatementRequestClass","RequestedUserId","IsForFullOrganization","FromDate","ToDate","RequestingUserEmail","AccountStatementStartDateTime","AccountStatementEndDateTime","DataValidationFailure","WrongEndpointExceptionClass","RedirectUri","BadRequestExceptionClass","ChargeTaxMeasureClass","MarkupLineNumber","CompilationFailedExceptionClass","FranceExtensibleAuditEventTypeClass","AustriaExtensibleAuditEventTypeClass"],"sourceRoot":""}