public DtoTangiblePurchase GetTangiblePurchase(int id = 0) { DtoTangiblePurchase purchase = new DtoTangiblePurchase(); purchase.DatePurchased = DateTime.Now; purchase.Items = (from i in _db.Items join c in _db.ProductCategories on i.ProductCategoryId equals c.ProductCategoryId join t in _db.InventoryTypes on c.InventoryTypeId equals t.InventoryTypeId where t.Name == "Tangible" select i).ToList(); purchase.Portals = _db.Portals.ToList(); return(purchase); }
public void SaveTangiblePurchase(DtoTangiblePurchase dtoTangible) { using (var transaction = _db.Database.BeginTransaction()) { #region Save In PurchaseTable int purchaseId = _db.Purchases.Max(v => (int?)v.Pid) ?? 0; ++purchaseId; //InventoryType type = // _db.InventoryTypes.FirstOrDefault(t => t.InventoryTypeId.Equals(dtoPurchase.InventoryTypeId)); dtoTangible.Numbers.ForEach(a => { Purchase purchase = new Purchase { //PurchaseId = dtoPurchase.PurchaseId, ItemId = dtoTangible.ItemId, Total = dtoTangible.Rate,//dtoTangible.Total, Remarks = dtoTangible.Remarks, PortalId = dtoTangible.PortalId, Qty = 1,//dtoTangible.Numbers.Count, Subname = dtoTangible.Subname, Percentage = 0, Rate = dtoTangible.Rate, StockOut = 1,//dtoTangible.Numbers.Count, DatePurchased = dtoTangible.DatePurchased, Pid = purchaseId, Number = a }; _db.Purchases.Add(purchase); _db.SaveChanges(); //purchaseId = purchase.PurchaseId; }); #endregion Stock stock = _db.Stocks.FirstOrDefault(s => s.ItemId.Equals(dtoTangible.ItemId)); if (stock == null) { stock = new Stock { ItemId = dtoTangible.ItemId, NetQty = dtoTangible.Numbers.Count, PurchaseId = purchaseId, AvgRate = dtoTangible.Rate }; _db.Stocks.Add(stock); } else { //stock.ItemId = dtoPurchase.ItemId, stock.NetQty = dtoTangible.Numbers.Count + stock.NetQty; stock.PurchaseId = purchaseId; stock.AvgRate = (dtoTangible.Rate + stock.AvgRate) / 2; _db.Entry(stock).State = EntityState.Modified; } _db.SaveChanges(); #region Coucher Entry Portal portal = _db.Portals.Single(p => p.PortalId.Equals(dtoTangible.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 = dtoTangible.DatePurchased, SessionId = 0, AccString = portal.AccString, VNo = maxVno, VType = "JV", VSrNo = 1, VDescription = dtoTangible.Remarks, Debit = 0, Credit = dtoTangible.Total, UserCode = 0, OID = 0, BID = 0, CID = 0, HeadCode = acc.HeadCode, SubHeadCode = acc.SubHeadCode, AccCode = acc.AccCode, ChequeNo = "0", InvNo = purchaseId.ToString(), InvType = "Purchase" }; _db.AccVouchers.Add(voucher); _db.SaveChanges(); Item item = _db.Items.Single(i => i.ItemId.Equals(dtoTangible.ItemId)); acc = new AccAccount(); acc = _db.AccAccounts.Single(a => a.AccString.Equals(item.AccString)); voucher = new AccVoucher(); voucher = new AccVoucher { VDate = dtoTangible.DatePurchased, SessionId = 0, AccString = item.AccString, VNo = maxVno, VType = "JV", VSrNo = 2, VDescription = dtoTangible.Remarks, Debit = dtoTangible.Total, Credit = 0, UserCode = 0, OID = 0, BID = 0, CID = 0, HeadCode = acc.HeadCode, SubHeadCode = acc.SubHeadCode, AccCode = acc.AccCode, ChequeNo = "0", InvNo = purchaseId.ToString(), InvType = "Purchase" }; _db.AccVouchers.Add(voucher); _db.SaveChanges(); #endregion transaction.Commit(); } }
public ActionResult TangiblePurchase(DtoTangiblePurchase purchase) { _purchaseRepo.SaveTangiblePurchase(purchase); return(Json(new { success = true, message = "Saved Successfully" }, JsonRequestBehavior.AllowGet)); }