import { Defaults } from "../../defaults"; import { SalesAppStatus } from "./status"; import { SalesAppAddress } from "./address"; import { SalesAppCustomer } from "./customer"; import { SalesAppOrderLine, WriteSalesAppOrderLine } from "./orderLine"; import { GenericFreeFieldGroup } from "../generic/freeFieldGroup"; export class SalesAppOrder { publicId: string = Defaults.Guid; orderNumber: number = Defaults.Number; description: string = Defaults.String; memo: string = Defaults.String; reference: string = Defaults.String; signature: string = Defaults.String; discount: number = Defaults.Number; discountPercentage: number = Defaults.Number; created: Date = Defaults.Date; modified: Date = Defaults.Date; externalCode?: string orderLines: SalesAppOrderLine[] = Defaults.Array; status: SalesAppStatus = new SalesAppStatus(); customer: SalesAppCustomer = new SalesAppCustomer(); invoiceAddress: SalesAppAddress = new SalesAppAddress(); deliveryAddress: SalesAppAddress = new SalesAppAddress(); groupedFreeFields: GenericFreeFieldGroup[] = [] } export class WriteSalesAppOrder { publicId: string = Defaults.Guid; description?: string; signature?: string; discount?: number = Defaults.Number; orderLines: WriteSalesAppOrderLine[] = Defaults.Array; statusPublicId: string = Defaults.String; customerPublicId: string = Defaults.String; invoiceAddress: SalesAppAddress = new SalesAppAddress(); deliveryAddress: SalesAppAddress = new SalesAppAddress(); groupedFreeFields: GenericFreeFieldGroup[] = []; /** * Map a SalesAppOrder to a WriteSalesAppOrder to send it to the API */ constructor(order: SalesAppOrder) { this.publicId = order.publicId; this.description = order.description; this.signature = order.signature; this.discount = order.discount; this.orderLines = order.orderLines.map(ol => { return { publicId: ol.publicId, discount: ol.discount, amount: ol.amount, articlePublicId: ol.article.publicId, catalogPublicId: ol.catalog?.catalogId, sellPriceExclBtw: ol.article.sellPriceExclBtw } }); this.statusPublicId = order.status.publicId; this.customerPublicId = order.customer.publicId; this.invoiceAddress = order.invoiceAddress; this.deliveryAddress = order.deliveryAddress; this.groupedFreeFields = order.groupedFreeFields; } }