private PriceDetail GetPriceDetails(PurchaseDetailExtn purchaseDetailItemExtn, IQueryable <PriceDetail> priceDetails, ref int priceId) { PriceDetail priceDetailItem; if (priceDetails.Any()) { //Same item exists. Just update the with new billId priceDetailItem = priceDetails.FirstOrDefault(); priceDetailItem.BillId = purchaseDetailItemExtn.BillId; priceId = priceDetailItem.PriceId; priceDetailItem.SellingPrice = purchaseDetailItemExtn.SellingPrice.Value; } else { //New Price, add it to price details list priceDetailItem = new PriceDetail() { BillId = RunningBillNo, ProductId = purchaseDetailItemExtn.ProductId, Price = purchaseDetailItemExtn.PurchasePrice.Value, SellingPrice = purchaseDetailItemExtn.SellingPrice.Value }; _rmsEntities.PriceDetails.Add(priceDetailItem); } return(priceDetailItem); }
private void SetPurchaseDetailItem(PurchaseDetailExtn purchaseDetailExtn, PurchaseDetail purchaseDetail) { purchaseDetail.Discount = purchaseDetailExtn.Discount; purchaseDetail.PriceId = purchaseDetailExtn.PriceId; purchaseDetail.ProductId = purchaseDetailExtn.ProductId; purchaseDetail.PurchasedQty = purchaseDetailExtn.Qty + purchaseDetailExtn.FreeIssue; purchaseDetail.ActualPrice = purchaseDetailExtn.PurchasePrice.Value; purchaseDetail.BillId = _editBillNo.Value; purchaseDetail.Tax = purchaseDetailExtn.Tax; }
private void OnEditBill(int?billNo) { if (billNo == null) { throw new ArgumentNullException("Please enter a bill no"); } var runningBillNo = billNo; var purchases = _rmsEntities.Purchases.Where(b => b.RunningBillNo == runningBillNo && b.CompanyId == _purchaseParams.CompanyId).FirstOrDefault(); _editBillNo = purchases.BillId; SelectedCompany = purchases.Company; SelectedCompanyText = SelectedCompany.Name; TranscationDate = purchases.AddedOn.Value; SelectedPaymentId = Char.Parse(purchases.PaymentMode); InvoiceNo = purchases.InvoiceNo; //only free items without any purchase var freeIssueOnly = _rmsEntities.PurchaseFreeDetails.Where(p => p.BillId == _editBillNo).FirstOrDefault(); if (freeIssueOnly != null && freeIssueOnly.FreeQty != 0) { var purchaseDetailExtn = new PurchaseDetailExtn() { ProductId = freeIssueOnly.ProductId, Qty = freeIssueOnly.FreeQty, //SellingPrice = item.SellingPrice, BillId = freeIssueOnly.BillId }; _purchaseDetailsList.Add(purchaseDetailExtn); } var purchaseDetailsForBill = _rmsEntities.PurchaseDetails.Where(b => b.BillId == purchases.BillId).ToList(); var tempTotalAmount = 0.0M; foreach (var item in purchaseDetailsForBill.ToList()) { var productPrice = _productsPriceList.Where(p => p.PriceId == item.PriceId).FirstOrDefault(); var freeIssue = _rmsEntities.PurchaseFreeDetails.Where(p => p.BillId == item.BillId && p.ProductId == item.ProductId).FirstOrDefault(); var freeIssueQty = freeIssue != null ? freeIssue.FreeQty : 0; var purchaseDetailExtn = new PurchaseDetailExtn() { Discount = item.Discount, PriceId = item.PriceId.Value, ProductId = item.ProductId.Value, Qty = item.PurchasedQty - freeIssueQty, OriginalQty = item.PurchasedQty - freeIssueQty, //SellingPrice = item.SellingPrice, BillId = item.BillId, CostPrice = productPrice.Price, AvailableStock = productPrice.Quantity, Amount = item.ActualPrice * (item.PurchasedQty - freeIssueQty) }; _purchaseDetailsList.Add(purchaseDetailExtn); SetPurchaseDetailExtn(productPrice, purchaseDetailExtn); purchaseDetailExtn.PurchasePrice = item.ActualPrice; purchaseDetailExtn.DiscountAmount = item.Discount.Value; purchaseDetailExtn.FreeIssue = freeIssueQty; var itemAmount = item.ActualPrice * (item.PurchasedQty - freeIssueQty); tempTotalAmount += itemAmount.Value; } TotalAmount = tempTotalAmount; CoolieCharges = purchases.CoolieCharges; KCoolieCharges = purchases.KCoolieCharges; TransportCharges = purchases.TransportCharges; LocalCoolieCharges = purchases.TransportCharges; SpecialDiscountAmount = purchases.SpecialDiscount; TotalDiscountAmount = purchases.Discount; RunningBillNo = runningBillNo.Value; _isEditMode = true; if (_deletedItems == null) { _deletedItems = new List <PurchaseDetailExtn>(); } else { _deletedItems.Clear(); } }
private void SetPurchaseDetailExtn(ProductPrice productPrice, PurchaseDetailExtn purchaseDetailExtn) { if (purchaseDetailExtn != null) { //selectedRowSaleDetail.Qty = productPrice.Quantity; purchaseDetailExtn.PurchasePrice = productPrice.Price; purchaseDetailExtn.OldCostPrice = productPrice.Price; purchaseDetailExtn.CostPrice = productPrice.Price; purchaseDetailExtn.PriceId = productPrice.PriceId; purchaseDetailExtn.AvailableStock = productPrice.Quantity; purchaseDetailExtn.SellingPrice = productPrice.SellingPrice; purchaseDetailExtn.OldSellingPrice = productPrice.SellingPrice; var stock = _rmsEntities.Stocks.Where(s => s.ProductId == productPrice.ProductId && s.PriceId == productPrice.PriceId).FirstOrDefault(); if (stock != null) { purchaseDetailExtn.ExpiryDate = stock.ExpiryDate; } purchaseDetailExtn.PropertyChanged += (sender, e) => { var prop = e.PropertyName; var totalQtyWithFreeIssue = 0.0M; if (purchaseDetailExtn.FreeIssue.HasValue) { totalQtyWithFreeIssue = purchaseDetailExtn.Qty.HasValue ? purchaseDetailExtn.Qty.Value + purchaseDetailExtn.FreeIssue.Value : 0; } else { totalQtyWithFreeIssue = purchaseDetailExtn.Qty.HasValue ? purchaseDetailExtn.Qty.Value : 0; } switch (e.PropertyName) { case Constants.FREE_ISSUE: { if (purchaseDetailExtn.Qty.HasValue && purchaseDetailExtn.FreeIssue.HasValue) { purchaseDetailExtn.CostPrice = purchaseDetailExtn.Amount.Value / totalQtyWithFreeIssue; } break; } case Constants.AMOUNT: { TotalAmount = _purchaseDetailsList.Sum(a => a.Amount); if (totalQtyWithFreeIssue == 0) { return; } purchaseDetailExtn.CostPrice = purchaseDetailExtn.Amount.Value / totalQtyWithFreeIssue; break; } } var amount = purchaseDetailExtn.PurchasePrice * purchaseDetailExtn.Qty; var discountAmount = purchaseDetailExtn.DiscountPercentage != 0 ? amount - (amount * (purchaseDetailExtn.DiscountPercentage / 100)) : purchaseDetailExtn.DiscountAmount != 0 ? amount - purchaseDetailExtn.DiscountAmount : 0; if (discountAmount != 0) { purchaseDetailExtn.Amount = discountAmount; purchaseDetailExtn.Discount = amount - discountAmount; if (purchaseDetailExtn.Qty.HasValue) { purchaseDetailExtn.CostPrice = purchaseDetailExtn.Amount.Value / totalQtyWithFreeIssue; } return; } purchaseDetailExtn.Amount = amount; purchaseDetailExtn.Discount = 0; }; } }