using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace bnhtrade.Core.Model.Account { public class PurchaseInvoice { // the purchase/sales invoice models are fragmented. The sales invoice inherits from an abstract invoice class. However, this purchase invoice // model doesn't, it was setup in the early development to mirror an Amazon report. // At some point I would like to correct this, i.e. have the purchase invoice model inherit from the abstract invoice class. // this will take some unpicking public int PurchaseID { get; set; } public int PurchaseNumber { get; set; } public int? RecordID { get; set; } public DateTime PurchaseDate { get; set; } public Model.Account.Contact Contact { get; set; } public string SupplierRef { get; set; } public string AccountCurrency { get; set; } public string PurchaseChannel { get; set; } public string CurrencyCode { get; set; } public decimal InvoiceNetAmount { get { return InvoiceGrossAmount - InvoiceTaxAmount; } } public decimal InvoiceTaxAmount { get { decimal amount = 0; foreach (var item in InvoiceLines) { amount = amount + item.LineTotalTax; } return amount; } } public decimal InvoiceGrossAmount { get { decimal amount = 0; foreach (var item in InvoiceLines) { amount = amount + item.LineTotalGross; } return amount; } } /// /// Value stored in database to check invoice lines against /// public decimal InvoiceGrossAmountCheck { get; set; } /// /// Don't know what this is for, all the amounts in the db are gross, so this is always true /// public bool VatInclusiveAmounts { get; set; } public DateTime RecordCreated { get; set; } public DateTime RecordModified { get; set; } public bool IsActive { get; set; } public List InvoiceLines { get; set; } public class Line { public int PurchaseLineId { get; set; } public int PurchaseId { get; set; } public string Status { get; set; } public string SupplierRef { get; set; } public DateTime? CheckedIn { get; set; } public string ItemDescription { get; set; } public int ItemQuantity { get; set; } public decimal ItemNet { get { return ItemGross - ItemTax; } } public decimal ItemGross { get; set; } public decimal ItemTax { get; set; } public decimal ShippingNet { get { return ShippingGross - ShippingTax; } } public decimal ShippingGross { get; set; } public decimal ShippingTax { get; set; } public decimal OtherNet { get { return OtherGross - OtherTax; } } public decimal OtherGross { get; set; } public decimal OtherTax { get; set; } public decimal LineTotalNet { get { return (ItemGross + ShippingGross + OtherGross) - (ItemTax + ShippingTax + OtherTax); } } public decimal LineTotalTax { get { return ItemTax + ShippingTax + OtherTax; } } public decimal LineTotalGross { get { return ItemGross + ShippingGross + OtherGross; } } public bnhtrade.Core.Model.Account.TaxCodeInfo AccountTaxCode { get; set; } public int? Tax_AccountTransactionId { get; set; } public int Net_AccountChartOfId { get; set; } public int? Net_AccountTransactionId { get; set; } public DateTime RecordCreated { get; set; } public DateTime RecordModified { get; set; } public bool IsActive { get; set; } } } }