示例#1
0
        public ActionResult Edit(int pid)
        {
            VM_PurchaseAndDetails vM_PurchaseAndDetails = new VM_PurchaseAndDetails();

            vM_PurchaseAndDetails.purchase        = db.Purchase.Include("Supplier").Where(x => x.PurchaseID == pid).FirstOrDefault();
            vM_PurchaseAndDetails.purchasedeatils = db.PurchaseDeatils.Include("Item").Where(x => x.PurchaseID == pid && x.Status != AppUtils.TableStatusIsDelete).ToList();

            ViewBag.lstPurchaseStatus = new SelectList(Enum.GetValues(typeof(ItemFor)).Cast <ItemFor>().Select(v => new SelectListItem
            {
                Text  = Enum.GetName(typeof(PurchaseStatus), v),
                Value = ((int)v).ToString()
            }).ToList(), "Value", "Text", vM_PurchaseAndDetails.purchase.PurchaseStatus);

            ViewBag.lstSupplier = new SelectList(db.Supplier.Select(x => new { x.SupplierID, x.SupplierName }).ToList(), "SupplierID", "SupplierName", vM_PurchaseAndDetails.purchase.SupplierID);

            List <SelectListItem> lstSelectListItem = new List <SelectListItem>();

            lstSelectListItem.Add(new SelectListItem()
            {
                Text = "BDT", Value = "1"
            });
            lstSelectListItem.Add(new SelectListItem()
            {
                Text = "USD", Value = "2"
            });
            ViewBag.lstCurrencyID = new SelectList(lstSelectListItem, "Value", "Text", 1);

            ViewBag.PublishStatus = new SelectList(Enum.GetValues(typeof(PublishStatus)).Cast <PublishStatus>().Select(v => new SelectListItem
            {
                Text  = Enum.GetName(typeof(PublishStatus), v),
                Value = ((int)v).ToString()
            }).ToList(), "Value", "Text", vM_PurchaseAndDetails.purchase.PublishStatus);

            return(View(vM_PurchaseAndDetails));
        }
示例#2
0
        public ActionResult PurchasePayment(int pid)
        {
            VM_PurchaseAndDetails vM_PurchaseAndDetails = new VM_PurchaseAndDetails();

            vM_PurchaseAndDetails.purchase        = db.Purchase.Include("Supplier").Where(x => x.PurchaseID == pid).FirstOrDefault();
            vM_PurchaseAndDetails.purchasedeatils = db.PurchaseDeatils.Include("Item").Where(x => x.PurchaseID == pid && x.Status != AppUtils.TableStatusIsDelete).ToList();

            ViewBag.lstAccount       = new SelectList(db.AccountList.Select(x => new { x.AccountListID, x.AccountTitle }).ToList(), "AccountListID", "AccountTitle");
            ViewBag.lstPaymentMethod = new SelectList(Enum.GetValues(typeof(PaymentMethod)).Cast <ItemFor>().Select(v => new SelectListItem
            {
                Text  = Enum.GetName(typeof(PaymentMethod), v),
                Value = ((int)v).ToString()
            }).ToList(), "Value", "Text");//new SelectList(db.PaymentBy.Where(x => x.Status != AppUtils.TableStatusIsDelete).Select(x => new { x.PaymentByID, x.PaymentByName }).ToList(), "PaymentByID", "PaymentByName");
            return(View(vM_PurchaseAndDetails));
        }
示例#3
0
        public ActionResult SavePurchase(VM_PurchaseAndDetails VM_PurchaseAndDetails)
        {
            if (VM_PurchaseAndDetails.purchase.PurchaseID == 0)
            {
                Purchase purchase = db.Purchase.Where(x => x.InvoiceID.ToLower().ToString() == VM_PurchaseAndDetails.purchase.InvoiceID.ToLower().ToString()).FirstOrDefault();
                if (purchase != null)
                {
                    return(Json(new { Success = false, Message = "Sorry Invoice Id Already Exist. Please Add Different One." }, JsonRequestBehavior.AllowGet));
                }
                if (VM_PurchaseAndDetails.purchasedeatils.Count() == 0)
                {
                    return(Json(new { Success = false, Message = "Add Item In Purchsase List." }, JsonRequestBehavior.AllowGet));
                }

                VM_PurchaseAndDetails.purchase.Total = VM_PurchaseAndDetails.purchasedeatils.Sum(x => x.Price);
                //if (VM_PurchaseAndDetails.purchase.DiscountPercentOrFixedAmount > 0)
                //{
                //    if (VM_PurchaseAndDetails.purchase.DiscountType == 1)
                //    {
                //        VM_PurchaseAndDetails.purchase.DiscountAmount = (VM_PurchaseAndDetails.purchase.Total / 100) * VM_PurchaseAndDetails.purchase.DiscountPercentOrFixedAmount;
                //    }
                //    else
                //    {
                //        VM_PurchaseAndDetails.purchase.DiscountAmount = VM_PurchaseAndDetails.purchase.DiscountPercentOrFixedAmount;
                //    }
                //}
                if (VM_PurchaseAndDetails.purchase.Discount > 0)
                {
                    if (VM_PurchaseAndDetails.purchase.DiscountType == 1)
                    {
                        VM_PurchaseAndDetails.purchase.DiscountAmount = (VM_PurchaseAndDetails.purchase.Total / 100) * VM_PurchaseAndDetails.purchase.Discount;
                    }
                    else
                    {
                        VM_PurchaseAndDetails.purchase.DiscountAmount = VM_PurchaseAndDetails.purchase.Discount;
                    }
                }
                VM_PurchaseAndDetails.purchase.SubTotal = VM_PurchaseAndDetails.purchase.Total - VM_PurchaseAndDetails.purchase.DiscountAmount;
                if (VM_PurchaseAndDetails.purchase.IssuedAt.Year == 1)
                {
                    VM_PurchaseAndDetails.purchase.IssuedAt = AppUtils.GetDateNow();
                }
                VM_PurchaseAndDetails.purchase.Status     = AppUtils.TableStatusIsActive;
                VM_PurchaseAndDetails.purchase.CreateBy   = AppUtils.GetLoginUserID();
                VM_PurchaseAndDetails.purchase.CreateDate = AppUtils.GetDateTimeNow();

                db.Purchase.Add(VM_PurchaseAndDetails.purchase);
                db.SaveChanges();

                if (VM_PurchaseAndDetails.purchase.PurchaseID > 0)
                {
                    foreach (var item in VM_PurchaseAndDetails.purchasedeatils)
                    {
                        item.PurchaseID = VM_PurchaseAndDetails.purchase.PurchaseID;
                        item.Status     = AppUtils.TableStatusIsActive;
                        item.CreateBy   = AppUtils.GetLoginUserID();
                        item.CreateDate = AppUtils.GetDateTimeNow();
                    }
                    db.PurchaseDeatils.AddRange(VM_PurchaseAndDetails.purchasedeatils);
                    db.SaveChanges();

                    AccountingHistory accountingHistory = new AccountingHistory();
                    //Mode 1 mean Create 2 mean Update
                    SetInformationForAccountHistory(ref accountingHistory, VM_PurchaseAndDetails.purchase, 1);
                    db.AccountingHistory.Add(accountingHistory);
                    db.SaveChanges();
                }
                return(Json(new { Type = "create", Success = true, Message = "Purchase Saved Successfully." }, JsonRequestBehavior.AllowGet));
            }
            else
            {
                Purchase purchase = db.Purchase.Where(x => x.InvoiceID.ToLower().ToString() == VM_PurchaseAndDetails.purchase.InvoiceID.ToLower().ToString() && x.PurchaseID != VM_PurchaseAndDetails.purchase.PurchaseID).FirstOrDefault();
                if (purchase != null)
                {
                    return(Json(new { Success = false, Message = "Sorry Invoice Id Already Exist. Please Add Different One." }, JsonRequestBehavior.AllowGet));
                }
                if (VM_PurchaseAndDetails.purchasedeatils.Count() == 0)
                {
                    return(Json(new { Success = false, Message = "Add Item In Purchsase List." }, JsonRequestBehavior.AllowGet));
                }

                Purchase purchaseDB = db.Purchase.Where(x => x.PurchaseID == VM_PurchaseAndDetails.purchase.PurchaseID).FirstOrDefault();
                List <PurchaseDeatils> lstNewPurchaseDetails = VM_PurchaseAndDetails.purchasedeatils.Where(x => x.PurchaseDeatilsID == 0).ToList();
                List <PurchaseDeatils> lstOldPurchaseDeatils = VM_PurchaseAndDetails.purchasedeatils.Where(x => x.PurchaseDeatilsID > 0).ToList();

                //deleting item if delete from client
                List <int>             lstOldPurchaseDetails    = lstOldPurchaseDeatils.Select(x => x.PurchaseDeatilsID).ToList();
                List <PurchaseDeatils> lstDeletePurchaseDetails = db.PurchaseDeatils
                                                                  .Where(x => !lstOldPurchaseDetails.Contains(x.PurchaseDeatilsID) && x.PurchaseID == VM_PurchaseAndDetails.purchase.PurchaseID && x.Status != AppUtils.TableStatusIsDelete).ToList();
                if (lstDeletePurchaseDetails.Count() > 0)
                {
                    lstDeletePurchaseDetails.ForEach(x => { x.Status = AppUtils.TableStatusIsDelete; x.DeleteBy = AppUtils.GetLoginUserID(); x.DeleteDate = AppUtils.GetDateTimeNow(); });
                    db.SaveChanges();
                }
                //delete done

                // Updating Part
                foreach (var item in lstOldPurchaseDeatils)
                {
                    var purchaseDetails = db.PurchaseDeatils.Where(x => x.PurchaseDeatilsID == item.PurchaseDeatilsID).FirstOrDefault();
                    purchaseDetails.Serial          = item.Serial;
                    purchaseDetails.Price           = item.Price;
                    purchaseDetails.HasWarrenty     = item.HasWarrenty;
                    purchaseDetails.WarrentyStart   = item.WarrentyStart;
                    purchaseDetails.WarrentyEnd     = item.WarrentyEnd;
                    purchaseDetails.UpdateBy        = AppUtils.GetLoginUserID();
                    purchaseDetails.UpdateDate      = AppUtils.GetDateTimeNow();
                    db.Entry(purchaseDetails).State = System.Data.Entity.EntityState.Modified;
                    db.SaveChanges();
                }
                // Update Done

                //Create New Details In Purchase
                foreach (var item in lstNewPurchaseDetails)
                {
                    item.PurchaseID = VM_PurchaseAndDetails.purchase.PurchaseID;
                    item.CreateBy   = AppUtils.GetLoginUserID();
                    item.CreateDate = AppUtils.GetDateTimeNow();
                    db.PurchaseDeatils.Add(item);
                    db.SaveChanges();
                }
                //Create Done

                //Updating Purchase
                purchaseDB.Total = VM_PurchaseAndDetails.purchasedeatils.Where(x => x.Status != AppUtils.TableStatusIsDelete).Sum(x => x.Price);

                //if (VM_PurchaseAndDetails.purchase.DiscountType == 1)
                //{
                //    purchaseDB.DiscountPercentOrFixedAmount = Math.Round(VM_PurchaseAndDetails.purchase.DiscountPercentOrFixedAmount);
                //    purchaseDB.DiscountAmount = Math.Round((purchaseDB.Total / 100) * VM_PurchaseAndDetails.purchase.DiscountPercentOrFixedAmount);
                //}
                //else
                //{
                //    purchaseDB.DiscountPercentOrFixedAmount = Math.Round(VM_PurchaseAndDetails.purchase.DiscountPercentOrFixedAmount);
                //    purchaseDB.DiscountAmount = Math.Round(VM_PurchaseAndDetails.purchase.DiscountPercentOrFixedAmount);
                //}

                if (VM_PurchaseAndDetails.purchase.Discount > 0)
                {
                    if (VM_PurchaseAndDetails.purchase.DiscountType == 1)
                    {
                        purchaseDB.DiscountAmount = Math.Round((purchaseDB.Total / 100) * VM_PurchaseAndDetails.purchase.Discount);
                    }
                    else
                    {
                        purchaseDB.DiscountAmount = Math.Round(VM_PurchaseAndDetails.purchase.Discount);
                    }
                }
                purchaseDB.SubTotal        = Math.Round(purchaseDB.Total - purchaseDB.DiscountAmount);
                purchaseDB.DiscountType    = VM_PurchaseAndDetails.purchase.DiscountType;
                purchaseDB.UpdateBy        = AppUtils.GetLoginUserID();
                purchaseDB.UpdateDate      = AppUtils.GetDateTimeNow();
                purchaseDB.SupplierNoted   = VM_PurchaseAndDetails.purchase.SupplierNoted;
                db.Entry(purchaseDB).State = System.Data.Entity.EntityState.Modified;
                db.SaveChanges();
                //Updating Purchase Done


                AccountingHistory accountingHistory = db.AccountingHistory.Where(x => x.PurchaseID == purchaseDB.PurchaseID).FirstOrDefault();
                //Mode 1 mean Create 2 mean Update
                SetInformationForAccountHistory(ref accountingHistory, purchaseDB, 1);
                db.Entry(purchaseDB).State = System.Data.Entity.EntityState.Modified;
                db.SaveChanges();

                return(Json(new { Type = "update", Success = true, Message = "Purchase Update Successfully." }, JsonRequestBehavior.AllowGet));
            }
        }