public Model(SalesOrder order) { var session = order.Strategy.Session; this.Order = new OrderModel(order); this.TakenBy = new TakenByModel((Organisation)order.TakenBy); this.BillTo = new BillToModel(order); this.ShipTo = new ShipToModel(order); this.OrderItems = order.SalesOrderItems.Select(v => new OrderItemModel(v)).ToArray(); this.OrderAdjustments = order.OrderAdjustments.Select(v => new OrderAdjustmentModel(v)).ToArray(); var paymentTerm = new InvoiceTermTypes(session).PaymentNetDays; this.SalesTerms = order.SalesTerms.Where(v => !v.TermType.Equals(paymentTerm)).Select(v => new SalesTermModel(v)).ToArray(); string TakenByCountry = null; if (order.TakenBy.PartyContactMechanisms?.FirstOrDefault(v => v.ContactPurposes.Any(p => Equals(p, new ContactMechanismPurposes(session).RegisteredOffice)))?.ContactMechanism is PostalAddress registeredOffice) { TakenByCountry = registeredOffice.Country.IsoCode; } if (TakenByCountry == "BE") { this.VatClause = order.DerivedVatClause?.LocalisedClauses.FirstOrDefault(v => v.Locale.Equals(new Locales(session).DutchBelgium))?.Text; if (this.VatClause != null && Equals(order.DerivedVatClause, new VatClauses(session).BeArt14Par2)) { var shipToCountry = order.ShipToAddress?.Country?.Name; this.VatClause = this.VatClause.Replace("{shipToCountry}", shipToCountry); } } }
public SalesTermModel(SalesTerm salesTerm) { if (salesTerm is IncoTerm) { this.Name = "INCOTERMS"; } if (salesTerm is Payment) { this.Name = "PAYMENT"; } if (salesTerm is OrderTerm) { this.Name = "ORDERTERMS"; } this.Value = salesTerm.TermValue; var other = new InvoiceTermTypes(salesTerm.Strategy.Session).Other; if (salesTerm.ExistTermType && !salesTerm.TermType.Equals(other)) { this.Value = salesTerm.TermType.Name + " " + this.Value; } }
public Model(SalesInvoice invoice) { this.Invoice = new InvoiceModel(invoice); this.BilledFrom = new BilledFromModel((Organisation)invoice.BilledFrom); this.BillTo = new BillToModel(invoice); this.ShipTo = new ShipToModel(invoice); this.InvoiceItems = invoice.SalesInvoiceItems.Select(v => new InvoiceItemModel(v)).ToArray(); var paymentTerm = new InvoiceTermTypes(invoice.Strategy.Session).PaymentNetDays; this.SalesTerms = invoice.SalesTerms.Where(v => !v.TermType.Equals(paymentTerm)).Select(v => new SalesTermModel(v)).ToArray(); }
public Model(SalesOrder order) { this.Order = new OrderModel(order); this.TakenBy = new TakenByModel((Organisation)order.TakenBy); this.BillTo = new BillToModel(order); this.ShipTo = new ShipToModel(order); this.OrderItems = order.SalesOrderItems.Select(v => new OrderItemModel(v)).ToArray(); var paymentTerm = new InvoiceTermTypes(order.Strategy.Session).PaymentNetDays; this.SalesTerms = order.SalesTerms.Where(v => !v.TermType.Equals(paymentTerm)).Select(v => new SalesTermModel(v)).ToArray(); }