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