private void AddLineItem(PackagingSummary item) { LineItemPricingInfo pricingInfo; DiscountType discountType = 0; OrderLineItemType orderLineItemType = 0; decimal unitPrice; decimal vatValue; decimal totalNet; decimal totalVatAmount; decimal totalPrice; decimal productDiscount; decimal totalProductDiscount; pricingInfo = GetLineItemPricing(item, SelectedOutlet.Id); unitPrice = pricingInfo.UnitPrice; vatValue = pricingInfo.VatValue; totalNet = pricingInfo.TotalNetPrice; totalVatAmount = pricingInfo.TotalVatAmount; totalPrice = pricingInfo.TotalPrice; productDiscount = pricingInfo.ProductDiscount; totalProductDiscount = pricingInfo.TotalProductDiscount; using (StructureMap.IContainer cont = NestedContainer) { if (Using<IDiscountProWorkflow>(cont).IsProductFreeOfCharge(item.Product.Id)) { unitPrice = 0m; vatValue = 0m; totalNet = 0m; totalVatAmount = 0m; totalPrice = 0m; totalProductDiscount = 0m; discountType = DiscountType.FreeOfChargeDiscount; orderLineItemType = OrderLineItemType.Discount; } } if (ReceiveReturnable) pricingInfo.UnitPrice = -pricingInfo.UnitPrice; AddLineItem(item.Product.Id, item.Product.Description, unitPrice, vatValue, totalVatAmount, item.Quantity, totalPrice, false, IsEditable, Guid.Empty, item.Product.Id, orderLineItemType, discountType, productDiscount, item.Product.GetType().ToString().Split('.').Last()); List<OrderLineItemBase> lineItems = LineItems.Select(n => n as OrderLineItemBase).ToList(); LineItems.Clear(); _productPackagingSummaryService.OrderLineItems(lineItems) .Select(n => n as EditPOSSaleLineItem) .ToList() .ForEach(LineItems.Add); }
public void ReceiveReturnableLineItem(List<ProductAddSummary> productsummariies, bool IsNew) { using (StructureMap.IContainer cont = NestedContainer) { var receivables = GetReturnableIn(); foreach (ProductAddSummary product in productsummariies) { if (!receivables.Any(n => n.Key == product.ProductId)) continue; var receivableItem = receivables.FirstOrDefault(n => n.Key == product.ProductId); var receivableQty = receivableItem.Value; if (receivableItem.Value >= product.Quantity) receivableQty = product.Quantity; if (receivableItem.Value < product.Quantity) receivableQty = receivableItem.Value; if (receivableQty == 0) return; PackagingSummary ps = new PackagingSummary { Product = Using<IProductRepository>(cont).GetById(product.ProductId), Quantity = receivableQty, }; if (IsNew) AddLineItem(ps); else UpdateReturnableLineItem(ps); } RefreshList(); } }
private void AddOrUpdateLineItem(PackagingSummary packagingSummary) { using (var container = NestedContainer) { IDiscountProWorkflow _discountProService = Using<IDiscountProWorkflow>(container); LineItemPricingInfo pricingInfo = _discountProService.GetLineItemPricing(packagingSummary, OutletId); //if item in LineItems update it else insert ApproveSalesmanOrderItem li = LineItems.FirstOrDefault( n => n.ProductId == packagingSummary.Product.Id && n.OrderLineItemType != OrderLineItemType.Discount); if (li != null) { UpdateLineItem(li.SequenceNo, packagingSummary.Quantity, pricingInfo.TotalVatAmount, pricingInfo.TotalPrice, pricingInfo.ProductDiscount, pricingInfo.TotalProductDiscount); } else { AddLineItem(packagingSummary.Product.Id, packagingSummary.Product.Description, pricingInfo.UnitPrice, pricingInfo.VatValue, pricingInfo.TotalVatAmount, packagingSummary.Quantity, pricingInfo.TotalPrice, IsEditable, packagingSummary.Product.GetType().ToString().Split('.').Last(), Guid.Empty, pricingInfo.ProductDiscount, 0, 0); } } }
public void UpdateReturnableLineItem(PackagingSummary item) { using (StructureMap.IContainer cont = NestedContainer) { LineItemPricingInfo pi = GetLineItemPricing(item, SelectedOutlet.Id); decimal totalVatAmount = pi.TotalVatAmount; decimal totalPrice = pi.TotalPrice; decimal totalProductDiscount = pi.TotalProductDiscount; EditPOSSaleLineItem li = LineItems.First(n => n.ProductId == item.Product.Id && n.TotalPrice < 0); li.Qty = item.Quantity; li.VatAmount = -totalVatAmount; li.TotalPrice = -totalPrice; li.ProductDiscount = -totalProductDiscount; CalcTotals(); //AddOrderLineItem(li); } }
private void InsertSummary(List<PackagingSummary> proccesTemp, Product product, decimal quantity, bool isEditable, bool isAuto, bool isMix, Guid parentProductId) { PackagingSummary summary = null; if (isMix) summary = proccesTemp.FirstOrDefault(p => p.Product.Id == product.Id && p.IsAuto == isAuto); else summary = proccesTemp.FirstOrDefault(p => p.Product.Id == product.Id && p.IsAuto == isAuto && p.ParentProductId == parentProductId); if (summary == null) { summary = new PackagingSummary() { Product = product, Quantity = quantity, IsEditable = isEditable, IsAuto = isAuto, }; if (!isMix) summary.ParentProductId = parentProductId; proccesTemp.Add(summary); } else { summary.Quantity += quantity; } }