Example #1
0
        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));
     }
 }
Example #3
0
        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();
        }
Example #4
0
        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;
            }
        }