private void OnPrint(Window window) { //Call the print on print & save PurchaseSummaryViewModel psummVM = new PurchaseSummaryViewModel(_showRestrictedCompanies); psummVM.RunningBillNo = BillNo; psummVM.PrintCommand.Execute(null); _closeWindowCommand.Execute(window); }
private void OnSave(object parameter) { if (_isEditMode) { SaveOnEdit(parameter); return; } PanelLoading = true; var purchaseSaveTask = System.Threading.Tasks.Task.Run(() => { //Add free items to free items table //Sum up the free item to main stock var purchase = new Purchase() { RunningBillNo = RunningBillNo, CompanyId = SelectedCompany.Id, Discount = GetDiscountValue(), SpecialDiscount = SpecialDiscountAmount, InvoiceNo = InvoiceNo, TotalBillAmount = TotalAmount, TransportCharges = TransportCharges, CoolieCharges = CoolieCharges, KCoolieCharges = KCoolieCharges, LocalCoolieCharges = LocalCoolieCharges, Tax = TotalTax, PaymentMode = SelectedPaymentId.ToString() }; foreach (var item in _purchaseDetailsList) { if (item.Qty == null || item.Qty <= 0) { Utility.ShowErrorBox("Purchase quantity can't be empty or zero"); return; //App.Current.Dispatcher.BeginInvoke( // (Action)(() => // { // Utility.ShowErrorBox("Purchase quantity can't be empty or zero"); // } // )); } var purchaseDetail = new PurchaseDetail(); purchaseDetail.ProductId = item.ProductId; purchaseDetail.Discount = item.Discount; purchaseDetail.ActualPrice = item.PurchasePrice.Value; purchaseDetail.Tax = item.Tax; var priceDetails = _rmsEntities.PriceDetails.Where(pr => pr.ProductId == item.ProductId && pr.Price == item.CostPrice && pr.SellingPrice == item.SellingPrice); var priceId = 0; PriceDetail priceDetailItem = null; if (priceDetails.Any()) { //Same item exists. Just update the with new billId priceDetailItem = priceDetails.FirstOrDefault(); priceDetailItem.BillId = item.BillId; priceId = priceDetailItem.PriceId; priceDetailItem.SellingPrice = item.SellingPrice.Value; } else { //New Price, add it to price details list priceDetailItem = new PriceDetail() { BillId = RunningBillNo, ProductId = item.ProductId, Price = item.CostPrice, SellingPrice = item.SellingPrice.Value }; _rmsEntities.PriceDetails.Add(priceDetailItem); } var stock = _rmsEntities.Stocks.Where(s => s.ProductId == item.ProductId && s.PriceId == priceId && s.ExpiryDate.CompareTo(item.ExpiryDate.Value) == 0); var qty = item.Qty; if (item.FreeIssue.HasValue) { qty = item.FreeIssue.Value + item.Qty.Value; _rmsEntities.PurchaseFreeDetails.Add( new PurchaseFreeDetail() { ProductId = item.ProductId, FreeQty = item.FreeIssue.Value, FreeAmount = item.PurchasePrice * item.FreeIssue.Value //BillId = RunningBillNo }); } if (stock.Any()) { stock.FirstOrDefault().Quantity += qty.Value; } else { //Add stock for new price var newStock = new Stock() { //PriceId = priceDetailItem.PriceId, ExpiryDate = item.ExpiryDate.Value, Quantity = qty.Value, ProductId = item.ProductId }; _rmsEntities.Stocks.Add(newStock); newStock.PriceDetail = priceDetailItem; } purchaseDetail.PurchasedQty = qty; purchaseDetail.PriceId = priceDetailItem.PriceId; purchaseDetail.PriceDetail = priceDetailItem; purchase.PurchaseDetails.Add(purchaseDetail); } //check if complete amount is paid, else mark it in PaymentDetails table against the customer var outstandingBalance = _totalAmount.Value - AmountPaid; if (outstandingBalance > 0) { //var msg = "Outstanding balance Rs " + outstandingBalance + ". Do you want to keep as pending balance amount?"; //var result = Utility.ShowMessageBoxWithOptions(msg); //if (result == System.Windows.MessageBoxResult.Yes) //{ _rmsEntities.PurchasePaymentDetails.Add ( new PurchasePaymentDetail { PurchaseBillId = purchase.BillId, AmountPaid = AmountPaid, CompanyId = _selectedCompany.Id } ); //} var company = _rmsEntities.Companies.FirstOrDefault(c => c.Id == SelectedCompany.Id); company.DueAmount = company.DueAmount.HasValue ? company.DueAmount.Value + outstandingBalance : outstandingBalance; } var _category = _rmsEntities.Categories.FirstOrDefault(c => c.Id == _categoryId); _category.RollingNo = _runningBillNo; _rmsEntities.Purchases.Add(purchase); _rmsEntities.SaveChanges(); var currentRunningBillNo = _runningBillNo; if (parameter.ToString() == "PrintSave") { App.Current.Dispatcher.BeginInvoke((Action)(() => { //Call the print on print & save PurchaseSummaryViewModel psummVM = new PurchaseSummaryViewModel(_showRestrictedCompanies); psummVM.RunningBillNo = currentRunningBillNo; psummVM.PrintCommand.Execute(null); })); } RMSEntitiesHelper.Instance.SelectRunningBillNo(_categoryId); RunningBillNo = _runningBillNo; Clear(); }).ContinueWith( (t) => { PanelLoading = false; }); }