//出貨按鈕ACTION結束在這 ////////////////////////////////////////////////////////////////////////////////////////////////////////////// /// <summary> /// UnshipOrderDtl的patialView方法 /// 改用PARTIALVIEW寫寫看 /// </summary> /// <returns></returns> //回傳PATIALVIEW給UnShipOrderDtl.cshtml //這裡應該要檢查庫存不足,和已出貨的明細,並直接顯示在第一欄 public ActionResult GetPurchaseOrderDtlPatialView(shipOrderViewModel unshipOrderDtlViewModel) { var q = from pod in db.PurchaseOrderDtl.AsEnumerable() join sl in db.SourceList on pod.SourceListID equals sl.SourceListID where pod.PurchaseOrderID == unshipOrderDtlViewModel.PurchaseOrderID select new { pod.PurchaseOrderID, pod.PurchaseOrderDtlOID, pod.PurchaseOrderDtlCode, pod.Qty, pod.PurchasedQty, sl.UnitsInStock }; IList <OrderDtlItemChecked> odc = new List <OrderDtlItemChecked>(); foreach (var item in q) { OrderDtlItemChecked orderDtlItemChecked = new OrderDtlItemChecked(); orderDtlItemChecked.PurchaseOrderDtlOID = item.PurchaseOrderDtlOID; orderDtlItemChecked.PurchaseOrderDtlCode = item.PurchaseOrderDtlCode; int shipQty = 0; if (db.ShipNoticeDtl.Where(x => x.PurchaseOrderDtlCode == item.PurchaseOrderDtlCode).SingleOrDefault() != null) { shipQty = db.ShipNoticeDtl.Where(x => x.PurchaseOrderDtlCode == item.PurchaseOrderDtlCode).SingleOrDefault().ShipQty; } orderDtlItemChecked.Qty = item.Qty - shipQty; //顯示庫存是否足夠 if (item.UnitsInStock >= orderDtlItemChecked.Qty) { orderDtlItemChecked.IsEnough = true; } else { orderDtlItemChecked.IsEnough = false; } //預設為沒有勾選 orderDtlItemChecked.Checked = false; odc.Add(orderDtlItemChecked); } IEnumerable <OrderDtlItem> od = null; var queryOrderitem = from pod in db.PurchaseOrderDtl join sl in db.SourceList on pod.SourceListID equals sl.SourceListID where pod.PurchaseOrderID == unshipOrderDtlViewModel.PurchaseOrderID select new OrderDtlItem { PurchaseOrderDtlOID = pod.PurchaseOrderDtlOID, PurchaseOrderDtlCode = pod.PurchaseOrderDtlCode, PartName = pod.PartName, PartNumber = pod.PartNumber, QtyPerUnit = pod.QtyPerUnit, TotalPartQty = pod.TotalPartQty, PurchaseQty = pod.Qty, SourceListID = pod.SourceListID, CommittedArrivalDate = pod.CommittedArrivalDate, ShipDate = pod.ShipDate, DateRequired = pod.DateRequired, UnitsInStock = sl.UnitsInStock }; od = queryOrderitem.ToList(); //檢查是否有出貨過,有的話要檢查是否出貨明細SHIPQTY是否和採購單QTY是否相同 //相同的話,代表該商品已全部出貨完畢,Unship = true,否則仍然有需要出貨的數量,Unship = false foreach (var orderdtl in od) { if (orderdtl.ShipDate == null) { orderdtl.Unship = true; orderdtl.ShipQty = 0; } else { ShipNoticeDtl snd = db.ShipNoticeDtl.Where(x => x.PurchaseOrderDtlCode == orderdtl.PurchaseOrderDtlCode).SingleOrDefault(); if (snd != null && snd.ShipQty < orderdtl.PurchaseQty) { orderdtl.Unship = true; orderdtl.ShipQty = snd.ShipQty; } else { orderdtl.Unship = false; orderdtl.ShipQty = orderdtl.PurchaseQty; } } } shipOrderViewModel uodvm = new shipOrderViewModel() { PurchaseOrderID = unshipOrderDtlViewModel.PurchaseOrderID, orderDtlItems = od, orderDtlItemCheckeds = odc }; return(PartialView("_GetPurchaseOrderDtlPatialView", uodvm)); }
//出貨按鈕ACTION結束在這 /// <summary> /// UnshipOrderDtl的patialView方法 /// 改用PARTIALVIEW寫寫看 /// </summary> /// <returns></returns> //回傳PATIALVIEW給UnShipOrderDtl.cshtml //這裡應該要檢查庫存不足,和已出貨的明細,並直接顯示在第一欄 public ActionResult GetPurchaseOrderDtlPatialView(UnshipOrderDtlViewModel unshipOrderDtlViewModel) { var q = from pod in db.PurchaseOrderDtl.AsEnumerable() join sl in db.SourceList on pod.SourceListID equals sl.SourceListID where pod.PurchaseOrderID == unshipOrderDtlViewModel.PurchaseOrderID select new { pod.PurchaseOrderID, pod.PurchaseOrderDtlOID, pod.PurchaseOrderDtlCode, pod.Qty, sl.UnitsInStock }; IList <OrderDtlItemChecked> odc = new List <OrderDtlItemChecked>(); foreach (var item in q) { OrderDtlItemChecked orderDtlItemChecked = new OrderDtlItemChecked(); orderDtlItemChecked.PurchaseOrderDtlOID = item.PurchaseOrderDtlOID; orderDtlItemChecked.PurchaseOrderDtlCode = item.PurchaseOrderDtlCode; //顯示庫存是否足夠 if (item.UnitsInStock >= item.Qty) { orderDtlItemChecked.IsEnough = true; } else { orderDtlItemChecked.IsEnough = false; } //預設為沒有勾選 orderDtlItemChecked.Checked = false; odc.Add(orderDtlItemChecked); } IEnumerable <OrderDtlItem> od = null; var queryOrderitem = from pod in db.PurchaseOrderDtl join sl in db.SourceList on pod.SourceListID equals sl.SourceListID where pod.PurchaseOrderID == unshipOrderDtlViewModel.PurchaseOrderID select new OrderDtlItem { PurchaseOrderDtlOID = pod.PurchaseOrderDtlOID, PurchaseOrderDtlCode = pod.PurchaseOrderDtlCode, PartName = pod.PartName, QtyPerUnit = pod.QtyPerUnit, TotalPartQty = pod.TotalPartQty, Qty = pod.Qty, SourceListID = pod.SourceListID, CommittedArrivalDate = pod.CommittedArrivalDate, ShipDate = pod.ShipDate, DateRequired = pod.DateRequired, UnitsInStock = sl.UnitsInStock }; od = queryOrderitem.ToList(); foreach (var orderdtl in od) { if (orderdtl.ShipDate == null) { orderdtl.Unship = true; } else { orderdtl.Unship = false; } } UnshipOrderDtlViewModel uodvm = new UnshipOrderDtlViewModel() { PurchaseOrderID = unshipOrderDtlViewModel.PurchaseOrderID, orderDtlItems = od, orderDtlItemCheckeds = odc }; return(PartialView("_GetPurchaseOrderDtlPatialView", uodvm)); }