Exemple #1
0
 public void SaveCustomerBillBreakup(CustomerBillBreakup customerBillBreakup)
 {
     customerBillBreakup.TimeStamp = DateHelper.GetDateNowString_Sortable();
     if (customerBillBreakup.Id == 0)
     {
         context.CustomerBillBreakups.Add(customerBillBreakup);
         context.SaveChanges();
     }
     else
     {
         context.CustomerBillBreakups.Attach(customerBillBreakup);
         context.Entry(customerBillBreakup).State = EntityState.Modified;
         context.SaveChanges();
     }
 }
Exemple #2
0
        public void SaveCustomerBillBreakupList(CustomerBill customerBill, List <ProductInCart> productListInCart)
        {
            using (var dbContextTransaction = context.Database.BeginTransaction())
            {
                try
                {
                    SaveCustomerBill(customerBill);
                    foreach (ProductInCart productInCart in productListInCart)
                    {
                        CustomerBillBreakup customerBillBreakup = new CustomerBillBreakup();

                        customerBillBreakup.CustomerBillId      = customerBill.Id;
                        customerBillBreakup.DealerBillBreakupId = productInCart.DealerBillBreakupId;
                        customerBillBreakup.ProductId           = productInCart.ProductId;
                        customerBillBreakup.TotalAmount         = productInCart.SellingAmount;
                        customerBillBreakup.TotalQuantity       = productInCart.SellingQuantity;
                        customerBillBreakup.UnitPrice           = productInCart.SellingUnitPrice;
                        customerBillBreakup.TotalBoxes          = productInCart.TotalBoxes;
                        customerBillBreakup.QuantityInBox       = productInCart.QuantityInBox;
                        SaveCustomerBillBreakup(customerBillBreakup);

                        // Reduce available quantity
                        DealerBillBreakup dealerBillBreakup = context.DealerBillBreakups.Find(customerBillBreakup.DealerBillBreakupId);
                        if (dealerBillBreakup == null)
                        {
                            dbContextTransaction.Rollback();
                            throw new Exception("Dealer bill breakup is not found");
                        }
                        else if (dealerBillBreakup.AvailableQuantity < customerBillBreakup.TotalQuantity)
                        {
                            dbContextTransaction.Rollback();
                            throw new Exception("Available quantity is less than sold quantity");
                        }
                        dealerBillBreakup.AvailableQuantity = dealerBillBreakup.AvailableQuantity - customerBillBreakup.TotalQuantity;
                        SaveDealerBillBreakup(dealerBillBreakup);
                    }

                    dbContextTransaction.Commit();
                }
                catch (Exception ex)
                {
                    dbContextTransaction.Rollback();
                    throw new Exception("Billing failed" + ex.Message);
                }
            }
        }