public dtoPurchase GetPurchase(int id) { dtoPurchase purchase = new dtoPurchase(); purchase.DatePurchased = DateTime.Now; if (id != 0) { purchase = (from p in _db.Purchases join i in _db.Items on p.ItemId equals i.ItemId where p.PurchaseId == id select new dtoPurchase { PurchaseId = p.PurchaseId, PortalId = p.PortalId, InventoryTypeId = i.ProductCategory.InventoryTypeId, ProductCategoryId = i.ProductCategoryId, ItemId = p.ItemId, Subname = p.Subname, Qty = p.Qty, Total = p.Total, Remarks = p.Remarks, Percentage = p.Percentage, Rate = p.Rate, StockOut = p.StockOut, DatePurchased = p.DatePurchased }).FirstOrDefault(); } purchase.InventoryTypes = _db.InventoryTypes.ToList(); purchase.ProductCategories = _db.ProductCategories.ToList(); purchase.Items = _db.Items.ToList(); purchase.Portals = _db.Portals.ToList(); return(purchase); }
public ActionResult AddOrEdit(dtoPurchase dtoPurchase) { try { if (dtoPurchase.PurchaseId == 0) { _purchaseRepo.SavePurchase(dtoPurchase); return(Json(new { success = true, message = "Saved Successfully" }, JsonRequestBehavior.AllowGet)); } else { _purchaseRepo.UpdatePurchase(dtoPurchase); return(Json(new { success = true, message = "Updated Successfully" }, JsonRequestBehavior.AllowGet)); } } catch (Exception e) { return(Json(new { success = false, message = "Error in " + (dtoPurchase.PurchaseId == 0 ? "saving" : "updation") + "\n" + e.Message }, JsonRequestBehavior.AllowGet)); } }
public void UpdatePurchase(dtoPurchase dtoPurchase) { Purchase purchase = _db.Purchases.FirstOrDefault(p => p.PurchaseId.Equals(dtoPurchase.PurchaseId)); Stock stock = _db.Stocks.FirstOrDefault(s => s.ItemId.Equals(dtoPurchase.ItemId)); if (stock != null) { //sto } purchase.ItemId = dtoPurchase.ItemId; purchase.Total = dtoPurchase.Total; purchase.Remarks = dtoPurchase.Remarks; purchase.PortalId = dtoPurchase.PortalId; purchase.Qty = dtoPurchase.Qty; purchase.Subname = dtoPurchase.Subname; purchase.Percentage = dtoPurchase.Percentage; purchase.Rate = dtoPurchase.Rate; purchase.StockOut = dtoPurchase.StockOut; purchase.DatePurchased = dtoPurchase.DatePurchased; _db.Entry(purchase).State = EntityState.Modified; _db.SaveChanges(); }
public void SavePurchase(dtoPurchase dtoPurchase) { try { using (var transaction = _db.Database.BeginTransaction()) { #region Save In PurchaseTable InventoryType type = _db.InventoryTypes.FirstOrDefault(t => t.InventoryTypeId.Equals(dtoPurchase.InventoryTypeId)); int purchaseId = _db.Purchases.Max(v => (int?)v.Pid) ?? 0; ++purchaseId; Purchase purchase = new Purchase { //PurchaseId = dtoPurchase.PurchaseId, ItemId = dtoPurchase.ItemId, Total = dtoPurchase.Total, Remarks = dtoPurchase.Remarks, PortalId = dtoPurchase.PortalId, Qty = dtoPurchase.Qty, Subname = dtoPurchase.Subname, Percentage = dtoPurchase.Percentage, Rate = dtoPurchase.Rate, //StockOut = (type.Name == "Tangible") ? dtoPurchase.Qty : dtoPurchase.Total, DatePurchased = dtoPurchase.DatePurchased }; _db.Purchases.Add(purchase); _db.SaveChanges(); #endregion #region Save In Stock //int purchaseId = purchase.PurchaseId; Stock stock = _db.Stocks.FirstOrDefault(s => s.ItemId.Equals(dtoPurchase.ItemId)); if (stock == null) { stock = new Stock { ItemId = dtoPurchase.ItemId, NetQty = dtoPurchase.Qty, PurchaseId = purchaseId, AvgRate = type.Name == "Tangible" ? dtoPurchase.Rate : dtoPurchase.Percentage }; _db.Stocks.Add(stock); } else { //stock.ItemId = dtoPurchase.ItemId, stock.NetQty = dtoPurchase.Qty + stock.NetQty; stock.PurchaseId = purchaseId; stock.AvgRate = ((type.Name == "Tangible" ? dtoPurchase.Rate : dtoPurchase.Percentage) + stock.AvgRate) / 2; _db.Entry(stock).State = EntityState.Modified; } _db.SaveChanges(); #endregion #region PurchaseVoucher Entry if (type.Name == "Tangible") { Portal portal = _db.Portals.Single(p => p.PortalId.Equals(purchase.PortalId)); var maxVno = _db.AccVouchers.Max(v => (int?)v.VNo) ?? 0; AccAccount acc = _db.AccAccounts.Single(a => a.AccString.Equals(portal.AccString)); maxVno = ++maxVno; AccVoucher voucher = new AccVoucher { VDate = purchase.DatePurchased, SessionId = 0, AccString = portal.AccString, VNo = maxVno, VType = "JV", VSrNo = 1, VDescription = purchase.Remarks, Debit = 0, Credit = purchase.Total, UserCode = 0, OID = 0, BID = 0, CID = 0, HeadCode = acc.HeadCode, SubHeadCode = acc.SubHeadCode, AccCode = acc.AccCode, ChequeNo = "0", InvNo = purchase.PurchaseId.ToString(), InvType = "Purchase" }; _db.AccVouchers.Add(voucher); _db.SaveChanges(); Item item = _db.Items.Single(i => i.ItemId.Equals(purchase.ItemId)); acc = new AccAccount(); acc = _db.AccAccounts.Single(a => a.AccString.Equals(item.AccString)); voucher = new AccVoucher(); voucher = new AccVoucher { VDate = purchase.DatePurchased, SessionId = 0, AccString = item.AccString, VNo = maxVno, VType = "JV", VSrNo = 2, VDescription = purchase.Remarks, Debit = purchase.Total, Credit = 0, UserCode = 0, OID = 0, BID = 0, CID = 0, HeadCode = acc.HeadCode, SubHeadCode = acc.SubHeadCode, AccCode = acc.AccCode, ChequeNo = "0", InvNo = purchase.PurchaseId.ToString(), InvType = "Purchase" }; _db.AccVouchers.Add(voucher); _db.SaveChanges(); } else { Portal portal = _db.Portals.Single(p => p.PortalId.Equals(purchase.PortalId)); var maxVno = _db.AccVouchers.Max(v => (int?)v.VNo) ?? 0; ++maxVno; AccAccount acc = _db.AccAccounts.Single(a => a.AccString.Equals(portal.AccString)); Item item = _db.Items.Single(i => i.ItemId.Equals(dtoPurchase.ItemId)); AccAccount itemAcc = _db.AccAccounts.Single(a => a.AccString.Equals(item.AccString)); AccAccount purchDisc = _db.AccAccounts.Single(a => a.AccString.Equals(item.PurDiscString)); IList <AccVoucher> vouchers = new List <AccVoucher>() { //Supplier Credit new AccVoucher { VDate = purchase.DatePurchased, SessionId = 0, AccString = portal.AccString, VNo = maxVno, VType = "JV", VSrNo = 1, VDescription = purchase.Remarks, Debit = 0, Credit = purchase.Total, UserCode = 0, OID = 0, BID = 0, CID = 0, HeadCode = acc.HeadCode, SubHeadCode = acc.SubHeadCode, AccCode = acc.AccCode, ChequeNo = "0", InvNo = purchase.PurchaseId.ToString(), InvType = "Purchase" }, //Item Value new AccVoucher { VDate = purchase.DatePurchased, SessionId = 0, AccString = itemAcc.AccString, VNo = maxVno, VType = "JV", VSrNo = 2, VDescription = purchase.Remarks, Debit = purchase.Qty, Credit = 0, UserCode = 0, OID = 0, BID = 0, CID = 0, HeadCode = itemAcc.HeadCode, SubHeadCode = itemAcc.SubHeadCode, AccCode = itemAcc.AccCode, ChequeNo = "0", InvNo = purchase.PurchaseId.ToString(), InvType = "Purchase" }, //Cash Daily new AccVoucher { VDate = purchase.DatePurchased, SessionId = 0, AccString = "14-02-0001", VNo = maxVno, VType = "JV", VSrNo = 3, VDescription = purchase.Remarks, Debit = 0, Credit = purchase.Total, UserCode = 0, OID = 0, BID = 0, CID = 0, HeadCode = 14, SubHeadCode = 2, AccCode = 1, ChequeNo = "0", InvNo = purchase.PurchaseId.ToString(), InvType = "Purchase" }, //Supplier Debit new AccVoucher { VDate = purchase.DatePurchased, SessionId = 0, AccString = portal.AccString, VNo = maxVno, VType = "JV", VSrNo = 4, VDescription = purchase.Remarks, Debit = purchase.Total, Credit = 0, UserCode = 0, OID = 0, BID = 0, CID = 0, HeadCode = acc.HeadCode, SubHeadCode = acc.SubHeadCode, AccCode = acc.AccCode, ChequeNo = "0", InvNo = purchase.PurchaseId.ToString(), InvType = "Purchase" }, //Purchase Discount new AccVoucher { VDate = purchase.DatePurchased, SessionId = 0, AccString = purchDisc.AccString, VNo = maxVno, VType = "JV", VSrNo = 5, VDescription = purchase.Remarks, Debit = 0, Credit = purchase.Qty - purchase.Total, UserCode = 0, OID = 0, BID = 0, CID = 0, HeadCode = purchDisc.HeadCode, SubHeadCode = purchDisc.SubHeadCode, AccCode = purchDisc.AccCode, ChequeNo = "0", InvNo = purchase.PurchaseId.ToString(), InvType = "Purchase" } }; _db.AccVouchers.AddRange(vouchers); _db.SaveChanges(); } #endregion transaction.Commit(); } } catch (DbEntityValidationException ex) { foreach (var eve in ex.EntityValidationErrors) { Console.WriteLine("Entity of type \"{0}\" in state \"{1}\" has the following validation errors:", eve.Entry.Entity.GetType().Name, eve.Entry.State); foreach (var ve in eve.ValidationErrors) { Console.WriteLine("- Property: \"{0}\", Error: \"{1}\"", ve.PropertyName, ve.ErrorMessage); } } throw; } }