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);
        }
Beispiel #2
0
        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;
            });
        }