예제 #1
0
 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();
            }
        }