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(); } }
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); } } }