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;
        }
Ejemplo n.º 2
0
        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;
        }