private OrderItemSummary Map(MainOrderSummary orderSummary, int count) { var orderItemSummary = new OrderItemSummary(); using (var c = NestedContainer) { var pricingService = Using<IDiscountProWorkflow>(c); orderItemSummary.SequenceNo = count + 1; orderItemSummary.OrderId = orderSummary.OrderId; orderItemSummary.TotalVat = orderSummary.TotalVat; orderItemSummary.GrossAmount = orderSummary.GrossAmount.GetTotalGross(); orderItemSummary.NetAmount = orderSummary.NetAmount.GetTotalGross(); orderItemSummary.Required = orderSummary.Required; orderItemSummary.SaleDiscount = orderSummary.SaleDiscount; orderItemSummary.OutstandingAmount = orderSummary.OutstandingAmount; orderItemSummary.OrderReference = orderSummary.OrderReference; orderItemSummary.PaidAmount = orderSummary.PaidAmount; orderItemSummary.Status = orderSummary.Status; orderItemSummary.Salesman = orderSummary.Salesman; orderItemSummary.ExRefNo = orderSummary.ExternalRefNo; orderItemSummary.Outlet = orderSummary.Outlet; } return orderItemSummary; }
internal MainOrderSummary MapSummary(tblDocument tblDocument, bool calculateOutstanding = false, bool getapproveddate = false) { string salesman = ""; var issuer = _ctx.tblCostCentre.Where(s => s.Id == tblDocument.DocumentIssuerCostCentreId).Select( s => new {s.Name, s.CostCentreType.Value, s.Id}).FirstOrDefault(); var recepient = _ctx.tblCostCentre.Where(s => s.Id == tblDocument.DocumentRecipientCostCentre).Select( s => new {s.Name, s.CostCentreType.Value, s.Id}).FirstOrDefault(); var outlet = _ctx.tblCostCentre.Where(s => s.Id == tblDocument.OrderIssuedOnBehalfOfCC).Select( s => new {s.Name, s.CostCentreType.Value, s.Id}).FirstOrDefault(); var mainOrderSummary = new MainOrderSummary(); if (issuer != null && recepient != null && (CostCentreType) issuer.Value == CostCentreType.Distributor) { salesman = recepient.Name + "(" + issuer.Name + ")"; mainOrderSummary.SalesmanId = recepient.Id; } else if (issuer != null && recepient != null) { salesman = issuer.Name + "(" + recepient.Name + ")"; mainOrderSummary.SalesmanId = issuer.Id; } if (outlet != null) { mainOrderSummary.Outlet = outlet.Name; } if (getapproveddate) { var invoicedoc = _ctx.tblDocument.FirstOrDefault(s => s.DocumentParentId == tblDocument.Id); if (invoicedoc != null) mainOrderSummary.DateProcessed = invoicedoc.DocumentDateIssued; } var lineitems = tblDocument.tblLineItems.Where(s => s.LineItemStatusId != (int) MainOrderLineItemStatus.Removed); mainOrderSummary.OrderId = tblDocument.Id; mainOrderSummary.Status = (DocumentStatus) tblDocument.DocumentStatusId; mainOrderSummary.TotalVat = lineitems.Sum(n => (n.Vat ?? 0)*(n.Quantity ?? 0)); mainOrderSummary.GrossAmount = (lineitems.Sum(n => (n.Value ?? 0) * (n.Quantity ?? 0)).GetTruncatedValue() + mainOrderSummary.TotalVat.GetTruncatedValue()).GetTotalGross(); //mainOrderSummary.GrossAmount = lineitems.Sum(n => DiscountProWorkflow.GetTruncatedValue((n.Value ?? 0) * (n.Quantity ?? 0))) + // mainOrderSummary.TotalVat; mainOrderSummary.OrderReference = tblDocument.DocumentReference; mainOrderSummary.Required = tblDocument.OrderDateRequired != null ? tblDocument.OrderDateRequired.Value : DateTime.Now; decimal salediscount = tblDocument.SaleDiscount.HasValue ? tblDocument.SaleDiscount.Value : 0; mainOrderSummary.SaleDiscount = salediscount; mainOrderSummary.NetAmount = (mainOrderSummary.GrossAmount) - mainOrderSummary.SaleDiscount; mainOrderSummary.Salesman = salesman; mainOrderSummary.ExternalRefNo = tblDocument.ExtDocumentReference ?? ""; if (tblDocument.OrderIssuedOnBehalfOfCC != null) mainOrderSummary.OutletId = tblDocument.OrderIssuedOnBehalfOfCC.Value; if (calculateOutstanding) { var invoiceList = (from d in _ctx.tblDocument where d.DocumentTypeId == (int) DocumentType.Invoice where d.InvoiceOrderId == tblDocument.Id from l in d.tblLineItems select new {l.Quantity, l.Value, l.Vat}).ToList(); var invoiceAmount =invoiceList.Sum(x => ((x.Quantity.Value * x.Value.Value) + (x.Vat.Value * x.Quantity.GetValueOrDefault(0))).GetTruncatedValue()).GetTotalGross(); //var invoiceAmount = (decimal?) (from d in _ctx.tblDocument // where d.DocumentTypeId == (int) DocumentType.Invoice // where d.InvoiceOrderId == tblDocument.Id // from l in d.tblLineItems // select new {l.Quantity, l.Value, l.Vat}) // .Sum(x => (x.Quantity*x.Value) + (x.Vat*x.Quantity)) ?? 0; var receiptAmount = (decimal?) (from d in _ctx.tblDocument where d.DocumentTypeId == (int) DocumentType.Receipt where d.DocumentParentId == tblDocument.Id from l in d.tblLineItems select new {l.Value}) .Sum(x => x.Value) ?? 0; var creditNoteSum = (decimal?) (from d in _ctx.tblDocument where d.DocumentTypeId == (int) DocumentType.CreditNote where d.DocumentParentId == tblDocument.Id from l in d.tblLineItems select new {l.Quantity, l.Value, l.Vat}) .Sum(x => (x.Quantity*x.Value) + (x.Vat*x.Quantity)) ?? 0; decimal totalInvoiceAmount =(invoiceAmount - salediscount).GetTotalGross(); decimal totalPaidAmount = (receiptAmount + creditNoteSum); decimal outstandingAmount = totalInvoiceAmount - totalPaidAmount; mainOrderSummary.OutstandingAmount = outstandingAmount>0?outstandingAmount:0; mainOrderSummary.PaidAmount = receiptAmount; } return mainOrderSummary; }
OrderViewModel.OrderViewModelItem MapMainOrderSummary(MainOrderSummary order) { OrderViewModel.OrderViewModelItem orderViewModelItem = new OrderViewModel.OrderViewModelItem(); orderViewModelItem.documentReference = order.OrderReference; orderViewModelItem.gross = order.GrossAmount; orderViewModelItem.net = order.NetAmount; orderViewModelItem.vat = order.TotalVat; orderViewModelItem.status = order.Status; //orderViewModelItem.orderDate = ; orderViewModelItem.isseuedOnBehalf = order.Salesman; orderViewModelItem.id = order.OrderId; return orderViewModelItem; }