private void Save() { try { var purchasePayment = new PurchasePaymentModel(); purchasePayment.CheckNumber = txtCheckNumber.Text.ToInt(); purchasePayment.Amount = txtAmount.Text.ToDecimal(); purchasePayment.PaymentDate = dtPaymentDate.Value; purchasePayment.PurchaseID = _purchaseID; purchasePayment.PaymentMethodID = _paymentMethodID; _purchaseService.AddPurchasePayment(purchasePayment); ResetInputs(); LoadPurchasePayments(); SetPurchaseData(); MetroMessageBox.Show(this, "New Purchase Payment has been saved!", "New Purchase Payment", MessageBoxButtons.OK, MessageBoxIcon.Information); } catch (CustomBaseException ex) { MetroMessageBox.Show(this, ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } catch (Exception ex) { MetroMessageBox.Show(this, ex.ToString(), "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } }
public void AddPurchasePayment(PurchasePaymentModel model) { using (var db = new DataContext()) { var purchase = db.Purchases.Find(model.PurchaseID); CheckDecimalIfLessThanOrEqual(model.Amount, 0, "Amount"); //payment date must be greater than purchase date. if (model.PaymentDate.Date < purchase.DatePurchase.Date) { throw new InvalidFieldException2("Payment Date must be greater than Purchase Date"); } var paymentMethod = db.PaymentMethods.FirstOrDefault(x => x.PaymentMethodID == model.PaymentMethodID); // check payment logic CheckObjectIfExists(paymentMethod, "Payment Method"); if (model.PaymentMethodID == 2 && model.CheckNumber == 0) { throw new InvalidFieldException("Check Number"); } var total = GetPurchaseProducts(model.PurchaseID).Sum(r => r.Total); var totalPayment = GetAllPurchasePayments(model.PurchaseID).Sum(r => r.Amount); var balance = total - totalPayment - model.Amount; if (balance < 0) { throw new OverPaymentException("Payment for Purchase Product Exceeded to total amount!"); } // for fully paid set isfullypaid to true if (balance == 0) { purchase.IsFullyPaid = true; db.Entry(purchase).State = EntityState.Modified; } var purchasePayment = Mapping.Mapper.Map <PurchasePayment>(model); db.PurchasePayments.Add(purchasePayment); db.SaveChanges(); } }