public ActionResult Create([Bind(Include = "PartOID,PartNumber,PartName,PartSpec,PartUnitOID,CreatedDate,PictureAdress,PictureDescription")] Part part) { if (ModelState.IsValid) { if (Request.Files["File1"].ContentLength != 0) { byte[] data = null; using (BinaryReader br = new BinaryReader(Request.Files["File1"].InputStream)) { data = br.ReadBytes(Request.Files["File1"].ContentLength); MemoryStream oMemoryStream = new MemoryStream(data); oMemoryStream.Position = 0; Image a = System.Drawing.Image.FromStream(oMemoryStream); Bitmap oBitmap = new Bitmap(a); string path = part.PartNumber + "-" + part.PartName + ".jpg"; string pathqqq = Path.Combine(Server.MapPath("~/imgs"), path); oBitmap.Save(pathqqq); } } part.PictureAdress = "~/imgs/" + part.PartNumber + "-" + part.PartName + ".jpg"; part.CreatedDate = DateTime.Now; db.Part.Add(part); db.SaveChanges(); string path2 = Server.MapPath("~/imgs"); return(RedirectToAction("Index")); } ViewBag.PartUnitOID = new SelectList(db.PartUnit, "PartUnitOID", "PartUnitName", part.PartUnitOID); return(View(part)); }
// POST: StockInDtls/Create // 若要免於過量張貼攻擊,請啟用想要繫結的特定屬性,如需 // 詳細資訊,請參閱 https://go.microsoft.com/fwlink/?LinkId=317598。 public void Create(string stockInid) { StockInDtl stockInDtl = new StockInDtl(); stockInDtl.StockInID = stockInid; var porid = db.StockIn.Where(w1 => w1.StockInID == stockInid).Select(s => s.PurchaseOrderReceiveID).ToList(); //庫存編號 string si = porid[0]; var code = db.PurchaseOrderReceiveDtl.Where(w => w.PurchaseOrderReceiveID == si).Select(s => s.PurchaseOrderDtlCode); var sz = code.ToList(); foreach (var item in sz) { //1.倉庫必須先有資料才能有入庫明細,不然抓不到庫存編號 //2.必須選擇所要進入的倉庫是哪個,因為一個料件可能存放不同倉庫 //3.等於不能自動產生 var sourcelist = db.PurchaseOrderDtl.Where(w => w.PurchaseOrderDtlCode == item).Select(s => s.SourceListID).ToList(); string list = sourcelist[0]; var codee = db.InventoryDtl.Where(w => w.SourceListID == list).Select(s => s.InventoryCode).ToList(); stockInDtl.InventoryCode = codee[0]; var num = db.PurchaseOrderDtl.Where(w => w.PurchaseOrderDtlCode == item).Select(s => s.PartNumber).ToList(); stockInDtl.PartNumber = num[0]; stockInDtl.StockInQty = 0; if (ModelState.IsValid) { db.StockInDtl.Add(stockInDtl); db.SaveChanges(); } } }
public ActionResult Create([Bind(Include = "ProductOID,ProductNumber,ProductName,PictureAdress,PictureDescription")] Product product) { if (ModelState.IsValid) { db.Product.Add(product); db.SaveChanges(); return(RedirectToAction("Index")); } return(View(product)); }
public ActionResult Create([Bind(Include = "WarehouseInfoOID,WarehouseCode,WarehouseName,Address,EmployeeID,Tel,Remark")] WarehouseInfo warehouseInfo) { if (ModelState.IsValid) { db.WarehouseInfo.Add(warehouseInfo); db.SaveChanges(); return(RedirectToAction("Index")); } ViewBag.EmployeeID = new SelectList(db.Employee, "EmployeeID", "Name", warehouseInfo.EmployeeID); return(View(warehouseInfo)); }
public ActionResult Edit([Bind(Include = "PurchaseOrderOID,PurchaseOrderID,SupplierCode,EmployeeID,ReceiverName,ReceiverTel,ReceiverMobile,ReceiptAddress,CreateDate,PurchaseOrderStatus,SignStatus,SignFlowOID")] PurchaseOrder purchaseOrder) { if (ModelState.IsValid) { db.Entry(purchaseOrder).State = EntityState.Modified; db.SaveChanges(); return(RedirectToAction("Index")); } ViewBag.EmployeeID = new SelectList(db.Employee, "EmployeeID", "Name", purchaseOrder.EmployeeID); ViewBag.SignFlowOID = new SelectList(db.SignFlow, "SignFlowOID", "OriginatorID", purchaseOrder.SignFlowOID); ViewBag.SupplierCode = new SelectList(db.SupplierInfo, "SupplierCode", "SupplierName", purchaseOrder.SupplierCode); return(View(purchaseOrder)); }
public ActionResult Create([Bind(Include = "PurchaseRequisitionOID,PurchaseRequisitionID,ProductNumber,EmployeeID,PRBeginDate,ProcessStatus,SignStatus,SignFlowOID")] PurchaseRequisition purchaseRequisition) { int z = 1; string x = "", year, month, day; year = DateTime.Now.Year.ToString(); month = DateTime.Now.Month.ToString(); day = DateTime.Now.Day.ToString(); x = year + month + day; string y = "PR-" + x + "-00" + z.ToString(); for (int i = 0; i < db.PurchaseRequisition.Count(); i++) { PurchaseRequisition test = db.PurchaseRequisition.Find(y); if (z < 9) { if (test != null) { z += 1; y = "PR-" + x + "-00" + z.ToString(); test = db.PurchaseRequisition.Find(y); } } else if (z < 99) { if (test != null) { z += 1; y = "PR-" + x + "-0" + z.ToString(); test = db.PurchaseRequisition.Find(y); } } else { if (test != null) { z += 1; y = "PR-" + x + "-" + z.ToString(); test = db.PurchaseRequisition.Find(y); } } } purchaseRequisition.EmployeeID = "CE00002"; purchaseRequisition.ProcessStatus = "N"; purchaseRequisition.SignStatus = "S"; purchaseRequisition.PurchaseRequisitionID = y; //PurchaseRequisitionID請購單編號=PR-yyyyMMdd-3碼流水號(PR-20191023-001) if (ModelState.IsValid) { purchaseRequisition.PRBeginDate = DateTime.Now; db.PurchaseRequisition.Add(purchaseRequisition); db.SaveChanges(); return(RedirectToAction("Index")); } ViewBag.EmployeeID = new SelectList(db.Employee, "EmployeeID", "Name", purchaseRequisition.EmployeeID); ViewBag.ProductNumber = new SelectList(db.Product, "ProductNumber", "ProductName", purchaseRequisition.ProductNumber); ViewBag.SignFlowOID = new SelectList(db.SignFlow, "SignFlowOID", "OriginatorID", purchaseRequisition.SignFlowOID); return(View(purchaseRequisition)); }
public ActionResult Create(WarehouseInfo warehouseInfo) { string message = "新增成功!!"; bool status = true; if (ModelState.IsValid) { db.WarehouseInfo.Add(warehouseInfo); db.SaveChanges(); return(Json(new { status = status, message = message, id = db.WarehouseInfo.Max(x => x.WarehouseInfoOID) }, JsonRequestBehavior.AllowGet)); } else { message = "新增失敗!!"; status = false; return(Json(new { status = status, message = message }, JsonRequestBehavior.AllowGet)); } }
public JsonResult UpdateStock([Bind(Include = "UnitsInStock,PartNumber,SourceListOID,SourceListID")] SourceList SourceList) { if (SourceList.SourceListID == null) { return(Json(new { status = "savefail", message = "修改失敗" }, JsonRequestBehavior.AllowGet)); } SourceList sourceList = db.SourceList.Find(SourceList.SourceListID); sourceList.UnitsInStock = SourceList.UnitsInStock; db.Entry(sourceList).State = EntityState.Modified; db.SaveChanges(); return(Json(new { status = "saved", message = "修改成功" }, JsonRequestBehavior.AllowGet)); }
public ActionResult Create([Bind(Include = "SourceListOID,SourceListID,PartNumber,QtyPerUnit,MOQ,UnitPrice,SupplierCode,UnitsInStock,UnitsOnOrder,SafetyQty,EXP")] SourceList sourceList) { if (ModelState.IsValid) { sourceList.UnitsInStock = 0; sourceList.UnitsOnOrder = 0; sourceList.SourceListID = sourceList.PartNumber + "-" + sourceList.SupplierCode; db.SourceList.Add(sourceList); db.SaveChanges(); return(RedirectToAction("Index")); } ViewBag.PartNumber = new SelectList(db.Part, "PartNumber", "PartName", sourceList.PartNumber); ViewBag.SupplierCode = new SelectList(db.SupplierInfo, "SupplierCode", "SupplierName", sourceList.SupplierCode); return(View(sourceList)); }
//[ValidateAntiForgeryToken] public ActionResult changeUnitsInStock([Bind(Include = "UnitsInStock,PartNumber,SourceListOID,SourceListID")] SourceList SourceList) { int?UnitsInStock = SourceList.UnitsInStock; if (UnitsInStock == null || UnitsInStock <= 0) { return(Json("<script>Swal.fire({ title: '庫存數量不得小於零', showClass: { popup: 'animated fadeInDown faster' }, hideClass: { popup: 'animated fadeOutUp faster' } })</script>", JsonRequestBehavior.AllowGet)); } SourceList a = db.SourceList.Find(SourceList.SourceListID); if (a == null) { return(HttpNotFound()); } a.UnitsInStock = (int)UnitsInStock; db.Entry(a).Property(ap => ap.UnitsInStock).IsModified = true; db.SaveChanges(); return(Json(new { value = true }, JsonRequestBehavior.AllowGet)); }
public ActionResult Create(SupInfoViewModel m) { try { if (ModelState.IsValid) { var maxThanOID = db.SupplierInfo.Select(x => x.SupplierInfoOID).Max() + 1; string SupCodestr = String.Format("S{0:00000}", Convert.ToDouble(maxThanOID)); var supInfo = db.SupplierInfo; SupplierInfo s = new SupplierInfo(); s.SupplierCode = SupCodestr; s.SupplierName = m.SupplierName; s.TaxID = m.TaxID; s.Address = m.Address; s.Email = m.Email; s.Tel = m.Tel; s.SupplierRatingOID = m.SupplierRatingOID; supInfo.Add(s); var result = db.SaveChanges(); if (result > 0) { TempData["Success"] = $"{s.SupplierName} 更新成功"; return(View("Index")); } else { ViewBag.Error = "對不起,伺服器發生錯誤,請再試一次。"; return(View(m)); } } } catch (Exception ex) { ViewBag.Error = $"對不起,伺服器發生錯誤: {ex.Message},請再試一次。"; } return(View(m)); }
public ActionResult Create([Bind(Include = "PurchaseOrderOID,PurchaseRequisitionID,CheckedResultSetVM")] PurchaseOrderCreateViewModel model) { if (model == null || model.CheckedResultSetVM.Count(s => s.Checked) == 0) { TempData["ErrorMessage"] = "採購細項請至少勾選一項"; return(RedirectToAction("Create")); } //從暫存新增至正式資料表 DateTime now = DateTime.Now; using (PMSAEntities db = new PMSAEntities()) { //新增採購單 PurchaseOrderTemp pot = db.PurchaseOrderTemp.Find(model.PurchaseOrderOID); db.Entry(pot).State = EntityState.Detached; string poId = $"PO-{now:yyyyMMdd}-"; int count = db.PurchaseOrder.Where(i => i.PurchaseOrderID.StartsWith(poId)).Count(); count++; poId = $"{poId}{count:000}"; PurchaseOrder po = new PurchaseOrder { PurchaseOrderID = poId, SupplierCode = pot.SupplierCode, EmployeeID = pot.EmployeeID, CreateDate = now, PurchaseOrderStatus = "N" }; db.PurchaseOrder.Add(po); db.SaveChanges(); //新增採購單明細 int index = 0; foreach (var item in model.CheckedResultSetVM) { if (!item.Checked) { continue; } var podt = db.PurchaseOrderDtlTemp.Find(item.PurchaseOrderDtlOID); index++; PurchaseOrderDtl pod = new PurchaseOrderDtl { PurchaseOrderDtlCode = $"{poId}-{index:000}", PurchaseOrderID = poId, PartNumber = podt.PartNumber, PartName = podt.PartName, PartSpec = podt.PartSpec, QtyPerUnit = podt.QtyPerUnit, TotalPartQty = podt.TotalPartQty, OriginalUnitPrice = podt.OriginalUnitPrice, Discount = podt.Discount, PurchaseUnitPrice = podt.PurchaseUnitPrice, Qty = podt.Qty, PurchasedQty = podt.PurchasedQty, GoodsInTransitQty = podt.GoodsInTransitQty, Total = podt.Total, DateRequired = podt.DateRequired, CommittedArrivalDate = podt.CommittedArrivalDate, ShipDate = podt.ShipDate, ArrivedDate = podt.ArrivedDate, SourceListID = podt.SourceListID }; db.PurchaseOrderDtl.Add(pod); db.SaveChanges(); //請購單與採購單關聯 //TODO: 應從暫存取出,目前暫以傳入方式處理 PRPORelation rel = new PRPORelation { PurchaseOrderID = poId, PurchaseOrderDtlCode = pod.PurchaseOrderDtlCode, PurchaseRequisitionID = model.PurchaseRequisitionID, PurchaseRequisitionDtlCode = item.PurchaseRequisitionDtlCode, }; db.PRPORelation.Add(rel); db.SaveChanges(); //採購單異動總表 POChanged poc = new POChanged { PurchaseOrderID = poId, POChangedCategoryCode = "N", RequestDate = now, RequesterRole = "P", RequesterID = pot.EmployeeID }; db.POChanged.Add(poc); db.SaveChanges(); //更新PurchaseOrderDtl.POChangedOID pod.POChangedOID = poc.POChangedOID; db.Entry(pod).Property(podp => podp.POChangedOID).IsModified = true; db.SaveChanges(); } //刪除暫存資料 var PRPORelationTemps = db.PRPORelationTemp.Where(i => i.PurchaseOrderOID == model.PurchaseOrderOID); db.PRPORelationTemp.RemoveRange(PRPORelationTemps); db.SaveChanges(); var PurchaseOrderDtlTemps = db.PurchaseOrderDtlTemp.Where(i => i.PurchaseOrderOID == model.PurchaseOrderOID); db.PurchaseOrderDtlTemp.RemoveRange(PurchaseOrderDtlTemps); var PurchaseOrderOld = db.PurchaseOrderTemp.Find(model.PurchaseOrderOID); db.PurchaseOrderTemp.Remove(PurchaseOrderOld); } return(RedirectToAction("Index")); }
public async Task <ActionResult> shipCheckDtl(shipOrderViewModel unshipOrderDtl) { string shipnoticesid = "";//為了進貨單而設立的變數 //////////////////////////////////////////////// //取得供應商帳號資料 SupplierAccount supplier = User.Identity.GetSupplierAccount(); supplierAccount = supplier.SupplierAccountID; supplierCode = supplier.SupplierCode; //////////////////////////////////////////////////// //ShipNoticesUtilities utilities = new ShipNoticesUtilities(); string message = ""; //此LIST要用來存放出貨明細ID 用來寄送電子郵件給公司採購員 List <string> shipDtlList = new List <string>(); List <int> shipDtlListQty = new List <int>(); string shipNoticeID = ""; //建立一個LIST用來接住所有的OrderDtlItemChecked IList <OrderDtlItemChecked> OrderDtlChecked = unshipOrderDtl.orderDtlItemCheckeds; //用來存放確定有要出貨的LIST(有勾選) List <PurchaseOrderDtl> orderDtls = new List <PurchaseOrderDtl>(); //檢查是否有勾選出貨,true為有勾,有則放進orderDtls foreach (var dtl in OrderDtlChecked) { if (dtl.Checked) { PurchaseOrderDtl purchaseOrderDtl = db.PurchaseOrderDtl.Find(dtl.PurchaseOrderDtlCode); orderDtls.Add(purchaseOrderDtl); } } //檢查是否至少一個被勾選,如沒有則跳回去UnshipOrderDtl頁面 if (orderDtls.Count() == 0) { TempData["message"] = "<script>toastr.error('請選擇欲出貨商品!','通知')</script>"; message = "請選擇欲出貨商品!"; return(RedirectToAction("UnshipOrderDtl", "ShipNotices", new { PurchaseOrderID = unshipOrderDtl.PurchaseOrderID, message = message })); } DateTime now = DateTime.Now; //檢查庫存是否足夠,不足則顯示庫存不足的訊息,足夠則扣掉該或源清單庫存 //並新增該採購單明細實際出貨日期,新增出貨明細// foreach (var dtl in orderDtls) { SourceList sourceList = db.SourceList.Find(dtl.SourceListID); if (sourceList.UnitsInStock < unshipOrderDtl.orderDtlItemCheckeds.Where(x => x.PurchaseOrderDtlCode == dtl.PurchaseOrderDtlCode).FirstOrDefault().Qty) { //這裡要return 錯誤訊息,並且回到原頁面 TempData["message"] = "<script>Swal.fire({ icon: 'error', title: 'Oops...', text: '庫存不足!', footer: '<a href>Why do I have this issue?</a>'})</script>"; message = "庫存不足!"; // return Json(new { PurchaseOrderID = unshipOrderDtl.PurchaseOrderID, message = message }, JsonRequestBehavior.AllowGet); return(RedirectToAction("UnshipOrderDtl", "ShipNotices", new { PurchaseOrderID = unshipOrderDtl.PurchaseOrderID, message = message })); } //扣除該料件貨源清單的庫存以及訂單數量 //出貨數量要在這裡檢查,先檢查出貨明細裡面的shipQty比對是否小於同一個採購單明細的Qty, //是的話,扣除該料件貨源清單的庫存以及訂單數量並且更新shipQty if (db.ShipNoticeDtl.Where(x => x.PurchaseOrderDtlCode == dtl.PurchaseOrderDtlCode).FirstOrDefault() != null) { ShipNoticeDtl snd = db.ShipNoticeDtl.Where(x => x.PurchaseOrderDtlCode == dtl.PurchaseOrderDtlCode).FirstOrDefault(); int orderQty = dtl.Qty; if (orderQty > snd.ShipQty || (unshipOrderDtl.orderDtlItemCheckeds.Where(x => x.PurchaseOrderDtlCode == dtl.PurchaseOrderDtlCode).FirstOrDefault().Qty + snd.ShipQty) < orderQty) { sourceList.UnitsInStock = sourceList.UnitsInStock - unshipOrderDtl.orderDtlItemCheckeds.Where(x => x.PurchaseOrderDtlCode == dtl.PurchaseOrderDtlCode).FirstOrDefault().Qty; } } else { sourceList.UnitsInStock = sourceList.UnitsInStock - unshipOrderDtl.orderDtlItemCheckeds.Where(x => x.PurchaseOrderDtlCode == dtl.PurchaseOrderDtlCode).FirstOrDefault().Qty; if (sourceList.UnitsOnOrder < dtl.Qty) { sourceList.UnitsOnOrder = 0; } else { sourceList.UnitsOnOrder = sourceList.UnitsOnOrder - dtl.Qty; } } //新增出貨通知 應該在這 先檢查是否有該筆出貨通知(因為有可能分開出貨,所以同筆訂單後出貨的就不用在增加出貨通知,只要增加出貨明細即可) if (db.ShipNotice.Where(x => x.PurchaseOrderID == unshipOrderDtl.PurchaseOrderID).FirstOrDefault() == null) { //新增出貨通知//感覺應該要在外面再加一個迴圈做出貨通知以及出貨明細 ShipNotice shipNotice = new ShipNotice(); string snId = $"SN-{now:yyyyMMdd}-"; int count = db.ShipNotice.Where(x => x.ShipNoticeID.StartsWith(snId)).Count(); count++; snId = $"{snId}{count:000}"; shipNotice.ShipNoticeID = snId; shipnoticesid = snId; //將出貨ID存入變數中 shipNotice.PurchaseOrderID = unshipOrderDtl.PurchaseOrderID; shipNotice.ShipDate = now; shipNotice.EmployeeID = db.PurchaseOrder.Find(unshipOrderDtl.PurchaseOrderID).EmployeeID; shipNotice.CompanyCode = db.Employee.Find(shipNotice.EmployeeID).CompanyCode; shipNotice.SupplierAccountID = supplierAccount; db.ShipNotice.Add(shipNotice); //先把新增的出貨通知資料存進資料庫 db.SaveChanges(); } //檢查是否有該出貨明細,沒有則新增出貨明細 if (db.ShipNoticeDtl.Where(x => x.PurchaseOrderDtlCode == dtl.PurchaseOrderDtlCode).FirstOrDefault() == null) { //新增出貨明細 保存期限先不填 ShipNoticeDtl shipNoticeDtl = new ShipNoticeDtl(); shipNoticeDtl.ShipNoticeID = db.ShipNotice.Where(x => x.PurchaseOrderID == unshipOrderDtl.PurchaseOrderID).FirstOrDefault().ShipNoticeID; shipnoticesid = shipNoticeDtl.ShipNoticeID; //將出貨ID存入變數中 shipNoticeDtl.PurchaseOrderDtlCode = dtl.PurchaseOrderDtlCode; shipNoticeDtl.ShipQty = unshipOrderDtl.orderDtlItemCheckeds.Where(x => x.PurchaseOrderDtlCode == dtl.PurchaseOrderDtlCode).FirstOrDefault().Qty; //金額為數量*單價*折扣*批量 shipNoticeDtl.ShipAmount = Convert.ToInt32(shipNoticeDtl.ShipQty * dtl.PurchaseUnitPrice * (1 - dtl.Discount) * dtl.QtyPerUnit); //把新出貨明細資料加進資料庫 db.ShipNoticeDtl.Add(shipNoticeDtl); //存進出貨明細OID給寄送電子郵件用,改成存採購單編號CODE,因為OID會有新增先後順序的問題 shipDtlList.Add(dtl.PurchaseOrderDtlCode); shipDtlListQty.Add(unshipOrderDtl.orderDtlItemCheckeds.Where(x => x.PurchaseOrderDtlCode == dtl.PurchaseOrderDtlCode).FirstOrDefault().Qty); } //有的話,則去修改出貨明細表的出貨數量和出貨金額 else { ShipNoticeDtl snd = db.ShipNoticeDtl.Where(x => x.PurchaseOrderDtlCode == dtl.PurchaseOrderDtlCode).FirstOrDefault(); snd.ShipQty += unshipOrderDtl.orderDtlItemCheckeds.Where(x => x.PurchaseOrderDtlCode == dtl.PurchaseOrderDtlCode).FirstOrDefault().Qty; snd.ShipAmount = Convert.ToInt32(snd.ShipQty * dtl.PurchaseUnitPrice * (1 - dtl.Discount) * dtl.QtyPerUnit); db.Entry(snd).State = EntityState.Modified; //存進出貨明細OID給寄送電子郵件用,改成存採購單編號CODE,因為OID會有新增先後順序的問題 shipDtlList.Add(dtl.PurchaseOrderDtlCode); shipDtlListQty.Add(unshipOrderDtl.orderDtlItemCheckeds.Where(x => x.PurchaseOrderDtlCode == dtl.PurchaseOrderDtlCode).FirstOrDefault().Qty); } //不管是採購單明細或是採購單有異動都要新增採購單異動總表 //新增採購單異動總表(明細) POChanged pOChanged = new POChanged(); pOChanged.PurchaseOrderID = unshipOrderDtl.PurchaseOrderID; pOChanged.POChangedCategoryCode = POChangedCategoryCodeShipped; pOChanged.RequestDate = now; pOChanged.DateRequired = dtl.DateRequired; pOChanged.RequesterRole = RequesterRoleSupplier; pOChanged.RequesterID = supplierAccount; pOChanged.PurchaseOrderDtlCode = dtl.PurchaseOrderDtlCode; pOChanged.Qty = db.PurchaseOrderDtl.Find(dtl.PurchaseOrderDtlCode).Qty; db.POChanged.Add(pOChanged); db.SaveChanges(); //新增採購單明細出貨日期欄位以及POchangedOID欄位 dtl.ShipDate = now; //更新採購單明細POChangedOID欄位 //找出最新一筆採購單異動資料且是供應商的 dtl.POChangedOID = utilities.FindPOChangedOIDByDtlCode(RequesterRoleSupplier, dtl.PurchaseOrderDtlCode); //把資料庫中的每筆訂單明細以及貨源清單資料狀態改為追蹤 db.Entry(dtl).State = EntityState.Modified; db.Entry(sourceList).State = EntityState.Modified; } //存進資料庫 db.SaveChanges(); //檢查該筆訂單所有產品是否都已經出貨,如果是,將該筆採購單狀態改為已出貨"S" //預設先當作都已出貨 bool poCheck = true; var q = from pod in db.PurchaseOrderDtl where pod.PurchaseOrderID == unshipOrderDtl.PurchaseOrderID select pod; foreach (var pod in q) { if (pod.ShipDate == null) { //找到未出貨產品,代表尚未全部出貨 poCheck = false; } else { //如果有出貨過,檢查出貨數量是否跟採購單採購數量一致 ShipNoticeDtl snd = db.ShipNoticeDtl.Where(x => x.PurchaseOrderDtlCode == pod.PurchaseOrderDtlCode).SingleOrDefault(); if (snd != null && pod.Qty > snd.ShipQty) { poCheck = false; } } } //確認是否已全部出貨,如果是,修改採購單狀態為已出貨(S)並新增一筆採購單異動資料 //採購單明細的POChangedOID欄位也要更新 if (poCheck) { //改採購單狀態 db.PurchaseOrder.Find(unshipOrderDtl.PurchaseOrderID).PurchaseOrderStatus = POChangedCategoryCodeShipped; //新增採購單異動總表 POChanged pOChanged = new POChanged(); pOChanged.PurchaseOrderID = unshipOrderDtl.PurchaseOrderID; pOChanged.POChangedCategoryCode = POChangedCategoryCodeShipped; pOChanged.RequestDate = now; pOChanged.RequesterRole = RequesterRoleSupplier; pOChanged.RequesterID = supplierAccount; db.POChanged.Add(pOChanged); db.SaveChanges(); //然後把找出來的採購單異動總表最新的POChangedOID更新至採購單明細POChangedOID欄位中 var podQueryForPOChangedOID = from pod in db.PurchaseOrderDtl where pod.PurchaseOrderID == unshipOrderDtl.PurchaseOrderID select pod; int pOChangedOID = utilities.FindPOChangedOID(RequesterRoleSupplier, unshipOrderDtl.PurchaseOrderID); foreach (var pod in podQueryForPOChangedOID) { pod.POChangedOID = pOChangedOID; db.Entry(pod).State = EntityState.Modified; } db.SaveChanges(); // TempData["message"] = "<script>Swal.fire({position: 'top-end',icon: 'success',title: ' 已全部出貨',showConfirmButton: false,timer: 1500})</script>"; message = "已全部出貨"; } //成功回原頁面 //TempData["message"] = "<script>Swal.fire({position: 'top-end',icon: 'success',title: '出貨處理成功,庫存已扣除',showConfirmButton: false,timer: 1500})</script>"; TempData["message"] = "出貨處理成功,庫存已扣除"; if (message == "") { message = "出貨處理成功,庫存已扣除"; } List <OrderDtlForMail> odm = orderDtlForMails(shipDtlList, shipDtlListQty); await SendMailToBuyer(odm); //呼叫新增進貨單方法 PurchaseOrderReceivesController purchaseOrderReceivesController = new PurchaseOrderReceivesController(); purchaseOrderReceivesController.Create(shipnoticesid); //return Json(new { PurchaseOrderID = unshipOrderDtl.PurchaseOrderID, message = message },JsonRequestBehavior.AllowGet); return(RedirectToAction("Index", "ShipNotices", new { PurchaseOrderID = unshipOrderDtl.PurchaseOrderID, message = message })); }
public ActionResult Create(InventoryDtl inventoryDtl) { string message = "新增成功!!"; bool status = true; if (inventoryDtl.SourceListID != null) { int z = 1; string y = inventoryDtl.WarehouseCode + "-" + inventoryDtl.InventoryCategoryCode + "-" + inventoryDtl.SourceListID + "-S0000" + z.ToString(); for (int i = 0; i < db.InventoryDtl.Count(); i++) { InventoryDtl test = new InventoryDtl(); if (z < 9) { if (test != null) { z += 1; y = inventoryDtl.WarehouseCode + "-" + inventoryDtl.InventoryCategoryCode + "-" + inventoryDtl.SourceListID + "-S0000" + z.ToString(); test = db.InventoryDtl.Find(y); } } else if (z < 99) { if (test != null) { z += 1; y = inventoryDtl.WarehouseCode + "-" + inventoryDtl.InventoryCategoryCode + "-" + inventoryDtl.SourceListID + "-S000" + z.ToString(); test = db.InventoryDtl.Find(y); } } else if (z < 999) { if (test != null) { z += 1; y = inventoryDtl.WarehouseCode + "-" + inventoryDtl.InventoryCategoryCode + "-" + inventoryDtl.SourceListID + "-S00" + z.ToString(); test = db.InventoryDtl.Find(y); } } else if (z < 9999) { if (test != null) { z += 1; y = inventoryDtl.WarehouseCode + "-" + inventoryDtl.InventoryCategoryCode + "-" + inventoryDtl.SourceListID + "-S0" + z.ToString(); test = db.InventoryDtl.Find(y); } } else { if (test != null) { z += 1; y = inventoryDtl.WarehouseCode + "-" + inventoryDtl.InventoryCategoryCode + "-" + inventoryDtl.SourceListID + "-S" + z.ToString(); test = db.InventoryDtl.Find(y); } } } inventoryDtl.InventoryCode = y; var q = from p in db.SourceList where p.SourceListID == inventoryDtl.SourceListID select p.PartNumber; var p1 = q.ToList(); var qe = from p in db.SourceList select p.SourceListID; var q1 = from p in db.InventoryDtl select p.SourceListID; var q2 = qe.Except(q1); int ui = inventoryDtl.UnitsInStock; var qt = from p in db.SourceList where p.SourceListID == inventoryDtl.SourceListID select p.QtyPerUnit; var pp = qt.ToList(); int qty = ui * Convert.ToInt32(pp[0].ToString()); if (inventoryDtl.SafetyQty == null) { inventoryDtl.SafetyQty = 0; } var use = User.Identity.GetEmployee(); if (ModelState.IsValid) { inventoryDtl.UnitsInStock = qty; inventoryDtl.PartNumber = p1[0].ToString(); inventoryDtl.CreateEmployeeID = use.EmployeeID; inventoryDtl.LastModifiedEmployeeID = use.EmployeeID; inventoryDtl.UnitsOnStockInOrder = 0; inventoryDtl.UnitsOnStockOutOrder = 0; inventoryDtl.CreateDate = Convert.ToDateTime(DateTime.Now.ToShortDateString()); inventoryDtl.LastModifiedDate = Convert.ToDateTime(DateTime.Now.ToShortDateString()); db.InventoryDtl.Add(inventoryDtl); db.SaveChanges(); var ii = db.InventoryDtl.Max(x => x.InventoryDtlOID); var inventorycode = db.InventoryDtl.Where(w => w.InventoryDtlOID == ii).Select(s => s.InventoryCode); var partnumber = db.InventoryDtl.Where(w => w.InventoryDtlOID == ii).Select(s => s.Part.PartName); var unitsonstockinorder = db.InventoryDtl.Where(w => w.InventoryDtlOID == ii).Select(s => s.UnitsOnStockInOrder); var unitsonstockoutorder = db.InventoryDtl.Where(w => w.InventoryDtlOID == ii).Select(s => s.UnitsOnStockOutOrder); var unit = db.InventoryDtl.Where(w => w.InventoryDtlOID == ii).Select(s => s.UnitsInStock); var inv = inventorycode.ToList(); var c = inv[0].ToString(); var pat = partnumber.ToList(); var pa = pat[0].ToString(); var uio = unitsonstockinorder.ToList(); var uis = uio[0].ToString(); var uoo = unitsonstockoutorder.ToList(); var uos = uoo[0].ToString(); var uin = unit.ToList(); var uii = uin[0].ToString(); return(Json(new { status = status, message = message, id = db.InventoryDtl.Max(x => x.InventoryDtlOID), c, pa, uis, uos, uii }, JsonRequestBehavior.AllowGet)); } else { message = "新增失敗!!"; status = false; return(Json(new { status = status, message = message }, JsonRequestBehavior.AllowGet)); } } else { message = "新增失敗!!目前已沒有新的貨源清單編號可新增庫存!!!!"; status = false; return(Json(new { status = status, message = message }, JsonRequestBehavior.AllowGet)); } }
public ActionResult CreateSupInfo(SupInfoViewModel SupInfoModel) { //if (!ModelState.IsValid) //{ // BuyerSupAcc_Parent p = new BuyerSupAcc_Parent(); // p.SupInfoModel = SupInfoModel; // return View("Create", p); //} //檢查是否有公司可選 var result = getAllSupInfoNoContactOnlySupInfoToIndexAjax().Data; var data = JsonConvert.SerializeObject(result); if (data == "[]") { try { //supInfo var maxsupThanOID = db.SupplierInfo.Select(x => x.SupplierInfoOID).Max() + 1; string SupCodestr = String.Format("S{0:00000}", Convert.ToDouble(maxsupThanOID)); SupplierInfo supinfo = new SupplierInfo(); supinfo.SupplierCode = SupCodestr; supinfo.SupplierName = SupInfoModel.SupplierName; supinfo.TaxID = SupInfoModel.TaxID; supinfo.Tel = SupInfoModel.Tel; supinfo.Email = SupInfoModel.Email; supinfo.Address = SupInfoModel.Address; supinfo.SupplierRatingOID = null; db.SupplierInfo.Add(supinfo); var r1 = db.SaveChanges(); if (r1 > 0) { //新增公司後回到view TempData["Success"] = $"{supinfo.SupplierName} 更新成功"; return(RedirectToAction("Create")); } else { ModelState.AddModelError("", "填寫欄位有錯誤"); BuyerSupAcc_Parent p = new BuyerSupAcc_Parent(); p.SupInfoModel = SupInfoModel; return(View("Create", p)); } } catch (DbEntityValidationException ex) { var entityError = ex.EntityValidationErrors.SelectMany(x => x.ValidationErrors).Select(x => x.ErrorMessage); var getFullMessage = string.Join("; ", entityError); var exceptionMessage = string.Concat(ex.Message, "errors are: ", getFullMessage); Console.WriteLine(exceptionMessage); if (!ModelState.IsValid) { BuyerSupAcc_Parent p = new BuyerSupAcc_Parent(); p.SupInfoModel = SupInfoModel; return(View("Create", p)); } } } //新增公司後回到view TempData["Success"] = "更新成功"; return(RedirectToAction("Create")); }
public IEnumerable <PurchaseOrderDtlItem> GetPurchaseOrderDtlList(string purchaseRequisitionID, string supplierCode) { IEnumerable <PurchaseOrderDtlItem> pods = null; DateTime now = DateTime.Now; //排除時間 now = new DateTime(now.Year, now.Month, now.Day); //取得顯示資料 using (PMSAEntities db = new PMSAEntities()) { var podq = from pr in db.PurchaseRequisition join prd in db.PurchaseRequisitionDtl on new { pr.PurchaseRequisitionID, ID = pr.PurchaseRequisitionID } equals new { prd.PurchaseRequisitionID, ID = purchaseRequisitionID } join sl in db.SourceList on new { prd.PartNumber, SupplierCode = supplierCode } equals new { sl.PartNumber, sl.SupplierCode } join p in db.Part on sl.PartNumber equals p.PartNumber where !(from prdRel in db.PRPORelation select prdRel.PurchaseRequisitionDtlCode).Contains(prd.PurchaseRequisitionDtlCode) && sl.SourceListDtl.Where(d => d.DiscountBeginDate <= now && d.DiscountEndDate >= now).Any() orderby prd.PurchaseRequisitionDtlCode select new PurchaseOrderDtlItem { PartNumber = prd.PartNumber, PartName = p.PartName, PartSpec = p.PartSpec, QtyPerUnit = sl.QtyPerUnit, OriginalUnitPrice = sl.UnitPrice, Qty = sl.MOQ.HasValue && prd.Qty < sl.MOQ.Value ? sl.MOQ.Value : prd.Qty, Discount = 0M, DateRequired = prd.DateRequired, SourceListID = sl.SourceListID, PurchaseRequisitionDtlCode = prd.PurchaseRequisitionDtlCode }; pods = podq.ToList(); } //設定折扣 foreach (PurchaseOrderDtlItem item in pods) { using (PMSAEntities db = new PMSAEntities()) { IEnumerable <SourceListDtl> sldq = db.SourceListDtl.Where(s => s.SourceListID == item.SourceListID && s.DiscountBeginDate <= now && s.DiscountEndDate >= now).OrderBy(o => o.QtyDemanded); foreach (SourceListDtl sld in sldq) { if (item.Qty >= sld.QtyDemanded) { item.Discount = sld.Discount; } } item.TotalPartQty = item.QtyPerUnit * item.Qty; item.PurchaseUnitPrice = (int)Math.Ceiling(item.OriginalUnitPrice * (1 - item.Discount)); item.Total = item.PurchaseUnitPrice * item.Qty; item.DateRequired = item.DateRequired.AddDays(-7); } } //寫入暫存資料表 using (PMSAEntities db = new PMSAEntities()) { //TODO: 多人新增相同請購單來源會有刪除同一筆資料的問題,請購單需要設定[新增中]的狀態 //移除現有資料 var rortq = db.PRPORelationTemp.Where(p => p.PurchaseRequisitionID == purchaseRequisitionID); int?poOid = rortq.FirstOrDefault()?.PurchaseOrderOID; if (poOid.HasValue) { db.PRPORelationTemp.RemoveRange(rortq); var podtq = db.PurchaseOrderDtlTemp.Where(p => p.PurchaseOrderOID == poOid); db.PurchaseOrderDtlTemp.RemoveRange(podtq); var potq = db.PurchaseOrderTemp.Find(poOid); db.PurchaseOrderTemp.Remove(potq); db.SaveChanges(); } //新增暫存資料 PurchaseOrderTemp pot = new PurchaseOrderTemp { SupplierCode = supplierCode, EmployeeID = emp.EmployeeID, CreateDate = DateTime.Now }; db.PurchaseOrderTemp.Add(pot); db.SaveChanges(); //更新暫存OID foreach (var item in pods) { item.PurchaseOrderOID = pot.PurchaseOrderOID; } foreach (var item in pods) { PurchaseOrderDtlTemp podt = new PurchaseOrderDtlTemp { PurchaseOrderOID = pot.PurchaseOrderOID, PartNumber = item.PartNumber, PartName = item.PartName, PartSpec = item.PartSpec, QtyPerUnit = item.QtyPerUnit, TotalPartQty = item.TotalPartQty, OriginalUnitPrice = item.OriginalUnitPrice, Discount = item.Discount, PurchaseUnitPrice = item.PurchaseUnitPrice, Qty = item.Qty, PurchasedQty = 0, GoodsInTransitQty = 0, Total = item.Total, SourceListID = item.SourceListID }; db.PurchaseOrderDtlTemp.Add(podt); db.SaveChanges(); item.PurchaseOrderDtlOID = podt.PurchaseOrderDtlOID; PRPORelationTemp rort = new PRPORelationTemp { PurchaseRequisitionID = purchaseRequisitionID, PurchaseRequisitionDtlCode = item.PurchaseRequisitionDtlCode, PurchaseOrderOID = pot.PurchaseOrderOID, PurchaseOrderDtlOID = podt.PurchaseOrderDtlOID }; db.PRPORelationTemp.Add(rort); db.SaveChanges(); } } return(pods); }
public ActionResult Create() { string id = date(); string message = "新增成功!!"; bool status1 = true; if (id == "false") { message = "目前沒有新的進貨單可以入庫了!!"; status1 = false; return(Json(new { status = status1, message = message }, JsonRequestBehavior.AllowGet)); } else { StockIn stockIn = new StockIn(); //string message = "新增成功!!"; //bool status = true; stockIn.PurchaseOrderReceiveID = id; string stockinid = ""; if (stockIn.PurchaseOrderReceiveID != null) { int z = 1; string y = $"IN-{now:yyyyMMdd}-00{z.ToString()}"; //前面的值 for (int i = 0; i < db.StockIn.Count(); i++) { StockIn test = new StockIn(); if (z < 9) { if (test != null) { z += 1; y = $"IN-{now:yyyyMMdd}-00{z.ToString()}"; test = db.StockIn.Find(y); } } else if (z < 99) { if (test != null) { z += 1; y = $"IN-{now:yyyyMMdd}-0{z.ToString()}"; test = db.StockIn.Find(y); } } else { if (test != null) { z += 1; y = $"IN-{now:yyyyMMdd}-{z.ToString()}"; test = db.StockIn.Find(y); } } } stockIn.StockInID = y; //入庫單號 stockinid = stockIn.StockInID; //進貨單號會直接抓回傳過來的值 //備註預設空值 //加庫存日期可先為空值,加入時再修改日期 var use = User.Identity.GetEmployee(); stockIn.CreateEmployeeID = use.EmployeeID; //建檔人員直接抓登入者就好 //建檔日期 stockIn.CreateDate = Convert.ToDateTime(DateTime.Now.ToShortDateString()); //簽核狀態跟簽核流程總表識別碼都是直接抓進貨總表 var status = db.PurchaseOrderReceive.Where(w => w.PurchaseOrderReceiveID == stockIn.PurchaseOrderReceiveID).Select(s => s.SignStatus); var atus = status.ToList(); stockIn.SignStatus = atus[0]; if (ModelState.IsValid) { db.StockIn.Add(stockIn); db.SaveChanges(); } //------------------------------------------------------------------------------------------ //入庫明細 //------------------------------------------------------------------------------------------ //在此呼叫stockInDtl的新增方法 StockInDtlsController stockInDtls = new StockInDtlsController(); stockInDtls.Create(stockinid); } var oid = db.StockIn.Max(m => m.StockInOID); var inid = db.StockIn.Where(w => w.StockInOID == oid).Select(s => s.StockInID).ToList(); string inid1 = inid[0]; var orid = db.StockIn.Where(w => w.StockInOID == oid).Select(s => s.PurchaseOrderReceiveID).ToList(); string orid1 = orid[0]; var sstus = db.StockIn.Where(w => w.StockInOID == oid).Select(s => s.SignStatus).ToList(); string sstus1 = stut(sstus[0]); var crdate = db.StockIn.Where(w => w.StockInOID == oid).Select(s => s.CreateDate).ToList(); string crdate1 = crdate[0].ToShortDateString(); return(Json(new { status = status1, message = message, id = db.StockIn.Max(x => x.StockInOID), inid1, orid1, sstus1, crdate1 }, JsonRequestBehavior.AllowGet)); } }
public ActionResult shipCheckDtl(UnshipOrderDtlViewModel unshipOrderDtl) { //建立一個LIST用來接住所有的OrderDtlItemChecked IList <OrderDtlItemChecked> OrderDtlChecked = unshipOrderDtl.orderDtlItemCheckeds; //用來存放確定有要出貨的LIST(有勾選) List <PurchaseOrderDtl> orderDtls = new List <PurchaseOrderDtl>(); //檢查是否有勾選出貨,true為有勾,有則放進orderDtls foreach (var dtl in OrderDtlChecked) { if (dtl.Checked) { PurchaseOrderDtl purchaseOrderDtl = db.PurchaseOrderDtl.Find(dtl.PurchaseOrderDtlCode); orderDtls.Add(purchaseOrderDtl); } } DateTime now = DateTime.Now; List <SourceList> sourceLists = new List <SourceList>(); //檢查庫存是否足夠,不足則顯示庫存不足的訊息,足夠則扣掉該或源清單庫存 //並新增該採購單明細實際出貨日期,新增出貨明細// foreach (var dtl in orderDtls) { SourceList sourceList = db.SourceList.Find(dtl.SourceListID); if (sourceList.UnitsInStock < dtl.Qty) { //這裡要return 錯誤訊息,並且回到原頁面 TempData["message"] = "<script>Swal.fire({ icon: 'error', title: 'Oops...', text: '庫存不足!', footer: '<a href>Why do I have this issue?</a>'})</script>"; return(RedirectToAction("UnshipOrderDtl", "ShipNotices", new { PurchaseOrderID = unshipOrderDtl.PurchaseOrderID })); } //扣除該料件貨源清單的庫存以及訂單數量 sourceList.UnitsInStock = sourceList.UnitsInStock - dtl.Qty; if (sourceList.UnitsOnOrder < dtl.Qty) { sourceList.UnitsOnOrder = 0; } else { sourceList.UnitsOnOrder = sourceList.UnitsOnOrder - dtl.Qty; } sourceLists.Add(sourceList); dtl.ShipDate = now; //新增出貨通知 應該在這 先檢查是否有該筆出貨通知(因為有可能分開出貨,所以同筆訂單後出貨的就不用在增加出貨通知,只要增加出貨明細即可) if (db.ShipNotice.Where(x => x.PurchaseOrderID == unshipOrderDtl.PurchaseOrderID).FirstOrDefault() == null) { //新增出貨通知//感覺應該要在外面再加一個迴圈做出貨通知以及出貨明細 ShipNotice shipNotice = new ShipNotice(); string snId = $"SN-{now:yyyyMMdd}-"; int count = db.ShipNotice.Where(x => x.ShipNoticeID.StartsWith(snId)).Count(); count++; snId = $"{snId}{count:000}"; shipNotice.ShipNoticeID = snId; shipNotice.PurchaseOrderID = unshipOrderDtl.PurchaseOrderID; shipNotice.ShipDate = now; shipNotice.EmployeeID = db.PurchaseOrder.Find(unshipOrderDtl.PurchaseOrderID).EmployeeID; shipNotice.CompanyCode = db.Employee.Find(shipNotice.EmployeeID).CompanyCode; shipNotice.SupplierAccountID = supplierAccount; db.ShipNotice.Add(shipNotice); //先把新增的出貨通知資料存進資料庫 db.SaveChanges(); } //新增出貨明細 保存期限先不填 ShipNoticeDtl shipNoticeDtl = new ShipNoticeDtl(); shipNoticeDtl.ShipNoticeID = db.ShipNotice.Where(x => x.PurchaseOrderID == unshipOrderDtl.PurchaseOrderID).FirstOrDefault().ShipNoticeID; shipNoticeDtl.PurchaseOrderDtlCode = dtl.PurchaseOrderDtlCode; shipNoticeDtl.ShipQty = dtl.Qty; //金額為數量*單價*折扣*批量 shipNoticeDtl.ShipAmount = Convert.ToInt32(dtl.Qty * dtl.PurchaseUnitPrice * (1 - dtl.Discount) * dtl.QtyPerUnit); //把新出貨明細資料加進資料庫 db.ShipNoticeDtl.Add(shipNoticeDtl); //把資料庫中的每筆訂單以及貨源清單資料狀態改為追蹤 db.Entry(dtl).State = EntityState.Modified; db.Entry(sourceList).State = EntityState.Modified; } //存進資料庫 db.SaveChanges(); //檢查該筆訂單所有產品是否都已經出貨,如果是,將該筆採購單狀態改為已出貨"S" //預設先當作都已出貨 bool poCheck = true; var q = from pod in db.PurchaseOrderDtl where pod.PurchaseOrderID == unshipOrderDtl.PurchaseOrderID select pod; foreach (var pod in q) { if (pod.ShipDate == null) { //找到未出貨產品,代表尚未全部出貨 poCheck = false; } } //確認是否已全部出貨,如果是修改採購單狀態為已出貨(S)並新增一筆採購單異動資料 //採購單明細的POChangedOID欄位也要更新 if (poCheck) { //改採購單狀態 db.PurchaseOrder.Find(unshipOrderDtl.PurchaseOrderID).PurchaseOrderStatus = POChangedCategoryCodeShipped; //新增採購單異動總表 POChanged pOChanged = new POChanged(); pOChanged.PurchaseOrderID = unshipOrderDtl.PurchaseOrderID; pOChanged.POChangedCategoryCode = POChangedCategoryCodeShipped; pOChanged.RequestDate = now; pOChanged.RequesterRole = RequesterRoleSupplier; pOChanged.RequesterID = supplierAccount; db.POChanged.Add(pOChanged); db.SaveChanges(); //更新採購單明細POChangedOID欄位 //2019 11/20 23:06 下方註解掉的程式碼不知道為甚麼會發生無法辨識此方法,無法放入站存區,所以只好分開來寫 //int a = db.POChanged.Last(x => (x.RequesterRole == RequesterRoleSupplier) && (x.PurchaseOrderID == unshipOrderDtl.PurchaseOrderID)).POChangedOID; //先找出最新一筆採購單異動資料且是供應商的 var poc = db.POChanged.Where(x => (x.RequesterRole == RequesterRoleSupplier) && (x.PurchaseOrderID == unshipOrderDtl.PurchaseOrderID)); DateTime dt = poc.FirstOrDefault().RequestDate; int pOChangedOID = poc.FirstOrDefault().POChangedOID; foreach (var pocD in poc) { if (pocD.RequestDate > dt) { dt = pocD.RequestDate; pOChangedOID = pocD.POChangedOID; } } //然後把找出來的採購單異動總表最新的POChangedOID更新至採購單明細POChangedOID欄位中 var podQueryForPOChangedOID = from pod in db.PurchaseOrderDtl where pod.PurchaseOrderID == unshipOrderDtl.PurchaseOrderID select pod; foreach (var pod in podQueryForPOChangedOID) { pod.POChangedOID = pOChangedOID; db.Entry(pod).State = EntityState.Modified; } db.SaveChanges(); TempData["message"] = "<script>Swal.fire({position: 'top-end',icon: 'success',title: '出貨處理成功,庫存已扣除',showConfirmButton: false,timer: 1500})</script>"; } //成功回原頁面 TempData["message"] = "<script>Swal.fire({position: 'top-end',icon: 'success',title: '已全部出貨',showConfirmButton: false,timer: 1500})</script>"; return(RedirectToAction("UnshipOrderDtl", "ShipNotices", new { PurchaseOrderID = unshipOrderDtl.PurchaseOrderID })); }
//此方法為答交按鈕的方法,此功能為辰哥負責 public async Task <JsonResult> OrderApply(string orderID) { //取得供應商帳號資料 SupplierAccount supplier = User.Identity.GetSupplierAccount(); string supplierAccount = supplier.SupplierAccountID; string supplierCode = supplier.SupplierCode; //供應商答交程式碼 if (string.IsNullOrWhiteSpace(orderID)) { return(Json("fail", JsonRequestBehavior.AllowGet)); } PurchaseOrder orderUpdate = db.PurchaseOrder.Find(orderID); if (orderUpdate == null) { return(Json("fail", JsonRequestBehavior.AllowGet)); } orderUpdate.PurchaseOrderStatus = "E"; ShipNoticesUtilities utilities = new ShipNoticesUtilities(); if (!utilities.AddAPOChanged(orderUpdate, supplierAccount, supplierCode)) { return(Json("fail", JsonRequestBehavior.AllowGet)); } db.Entry(orderUpdate).State = EntityState.Modified; db.SaveChanges(); await SendMailToBuyer(orderUpdate, "已答交", null); return(Json("success", JsonRequestBehavior.AllowGet)); // var q = from poc in db.POChanged // //join po in db.PurchaseOrder on poc.PurchaseOrderID equals po.PurchaseOrderID // //into s // //from po in s.DefaultIfEmpty() // where poc.RequesterRole == "P" && poc.PurchaseOrderID == orderID // select new // { // poc.PurchaseOrderID, // poc.RequesterRole, // }; // var t = q.ToList(); // if (q.Count() == 0 || q.Count() == null) // { // return Json("fail", JsonRequestBehavior.AllowGet); // } ////<<<<<<< HEAD // PurchaseOrder order = (from po in db.PurchaseOrder.AsEnumerable() // where po.PurchaseOrderID == orderID // select po).SingleOrDefault(); // if (utilities.AddAPOChanged(order, supplierAccount, supplierCode) == false) // { // return Json("fail", JsonRequestBehavior.AllowGet); // } // //======= // else // { // PurchaseOrder order = (from po in db.PurchaseOrder.AsEnumerable() // where po.PurchaseOrderID == orderID // select po).SingleOrDefault(); // if (utilities.AddAPOChanged(order, supplierAccount, supplierCode) == false) // { // return Json("fail", JsonRequestBehavior.AllowGet); // } // //採購單狀態W為雙方答交,供應商未出貨訂單判定應為判斷是否為W // order.PurchaseOrderStatus = "E"; // db.Entry(order).State = System.Data.Entity.EntityState.Modified; // db.SaveChanges(); // await SendMailToBuyer(order, "已答交", null); // return Json("success", JsonRequestBehavior.AllowGet); // //>>>>>>> 802426d1abd7d38d1f6e79d3378d39e1746e0b09 // } // //採購單狀態W為雙方答交,供應商未出貨訂單判定應為判斷是否為W // order.PurchaseOrderStatus = "W"; // db.Entry(order).State = System.Data.Entity.EntityState.Modified; // db.SaveChanges(); // await SendMailToBuyer(order, "已答交",null); // return Json("success", JsonRequestBehavior.AllowGet); }
public ActionResult Create([Bind(Include = "InventoryDtlOID,InventoryCode,WarehouseCode,InventoryCategoryCode,SourceListID,PartNumber,UnitsInStock,UnitsOnStockOutOrder,UnitsOnStockInOrder,SafetyQty,CreateDate,CreateEmployeeID,LastModifiedDate,LastModifiedEmployeeID")] InventoryDtl inventoryDtl) { if (inventoryDtl.SourceListID != null) { int z = 1; string y = inventoryDtl.WarehouseCode + "-" + inventoryDtl.InventoryCategoryCode + "-" + inventoryDtl.SourceListID + "-S0000" + z.ToString(); for (int i = 0; i < db.InventoryDtl.Count(); i++) { InventoryDtl test = new InventoryDtl(); if (z < 9) { if (test != null) { z += 1; y = inventoryDtl.WarehouseCode + "-" + inventoryDtl.InventoryCategoryCode + "-" + inventoryDtl.SourceListID + "-S0000" + z.ToString(); test = db.InventoryDtl.Find(y); } } else if (z < 99) { if (test != null) { z += 1; y = inventoryDtl.WarehouseCode + "-" + inventoryDtl.InventoryCategoryCode + "-" + inventoryDtl.SourceListID + "-S000" + z.ToString(); test = db.InventoryDtl.Find(y); } } else if (z < 999) { if (test != null) { z += 1; y = inventoryDtl.WarehouseCode + "-" + inventoryDtl.InventoryCategoryCode + "-" + inventoryDtl.SourceListID + "-S00" + z.ToString(); test = db.InventoryDtl.Find(y); } } else if (z < 9999) { if (test != null) { z += 1; y = inventoryDtl.WarehouseCode + "-" + inventoryDtl.InventoryCategoryCode + "-" + inventoryDtl.SourceListID + "-S0" + z.ToString(); test = db.InventoryDtl.Find(y); } } else { if (test != null) { z += 1; y = inventoryDtl.WarehouseCode + "-" + inventoryDtl.InventoryCategoryCode + "-" + inventoryDtl.SourceListID + "-S" + z.ToString(); test = db.InventoryDtl.Find(y); } } } inventoryDtl.InventoryCode = y; var q = from p in db.SourceList where p.SourceListID == inventoryDtl.SourceListID select p.PartNumber; var p1 = q.ToList(); var qe = from p in db.SourceList select p.SourceListID; var q1 = from p in db.InventoryDtl select p.SourceListID; var q2 = qe.Except(q1); if (inventoryDtl.SafetyQty == null) { inventoryDtl.SafetyQty = 0; } if (ModelState.IsValid) { inventoryDtl.PartNumber = p1[0].ToString(); inventoryDtl.CreateEmployeeID = "CE00001"; inventoryDtl.LastModifiedEmployeeID = "CE00001"; inventoryDtl.UnitsOnStockInOrder = 0; inventoryDtl.UnitsOnStockOutOrder = 0; inventoryDtl.CreateDate = Convert.ToDateTime(DateTime.Now.ToShortDateString()); inventoryDtl.LastModifiedDate = Convert.ToDateTime(DateTime.Now.ToShortDateString()); db.InventoryDtl.Add(inventoryDtl); db.SaveChanges(); return(RedirectToAction("Index")); } ViewBag.CreateEmployeeID = new SelectList(db.Employee, "EmployeeID", "Name", inventoryDtl.CreateEmployeeID); ViewBag.LastModifiedEmployeeID = new SelectList(db.Employee, "EmployeeID", "Name", inventoryDtl.LastModifiedEmployeeID); ViewBag.InventoryCategoryCode = new SelectList(db.InventoryCategory, "InventoryCategoryCode", "InventoryCategoryName", inventoryDtl.InventoryCategoryCode); ViewBag.PartNumber = new SelectList(db.Part, "PartNumber", "PartName", inventoryDtl.PartNumber); ViewBag.SourceListID = new SelectList(q2); ViewBag.WarehouseCode = new SelectList(db.WarehouseInfo, "WarehouseCode", "WarehouseName", inventoryDtl.WarehouseCode); return(View(inventoryDtl)); } else { return(Content("<script>alert('目前已沒有新的貨源清單編號可新增庫存!!!!');</script>")); } }