/// <summary> /// Register transfer instrument data /// </summary> /// <param name="Con">Register condition object</param> /// <returns></returns> public ActionResult IVS210_cmdConfirm(IVS210RegisterCond Con) { ObjectResultData res = new ObjectResultData(); try { IVS210_ScreenParameter prm = GetScreenObject <IVS210_ScreenParameter>(); if (prm.ElemInstrument == null) { prm.ElemInstrument = new List <IVS210INST>(); } //8.1 ICommonHandler ComH = ServiceContainer.GetService <ICommonHandler>() as ICommonHandler; if (ComH.IsSystemSuspending()) { res.AddErrorMessage(MessageUtil.MODULE_COMMON, MessageUtil.MessageList.MSG0049); return(Json(res)); } if (!CheckUserPermission(ScreenID.C_INV_SCREEN_ID_MOVE_SHELF, FunctionID.C_FUNC_ID_OPERATE)) { res.AddErrorMessage(MessageUtil.MODULE_COMMON, MessageUtil.MessageList.MSG0053); return(Json(res)); } IInventoryHandler InvH = ServiceContainer.GetService <IInventoryHandler>() as IInventoryHandler; IShelfMasterHandler ShelfH = ServiceContainer.GetService <IShelfMasterHandler>() as IShelfMasterHandler; if (InvH.CheckStartedStockChecking() == 0) { res.AddErrorMessage(MessageUtil.MODULE_INVENTORY, MessageUtil.MessageList.MSG4003); return(Json(res)); } foreach (IVS210INST i in prm.ElemInstrument) { //8.2.1 if (i.DestinationShelfNo == ShelfNo.C_INV_SHELF_NO_NOT_PRICE || i.DestinationShelfNo == ShelfNo.C_INV_SHELF_NO_NOT_MOVE_SHELF || i.DestinationShelfNo == ShelfNo.C_INV_SHELF_NO_OTHER_LOCATION) { res.AddErrorMessage(MessageUtil.MODULE_INVENTORY, MessageUtil.MessageList.MSG4050, new string[] { i.SourceShelfNo, i.InstrumentCode }, new string[] { i.DestShelfNo_id }); res.ResultData = i.InstrumentCode + "," + i.row_id; i.IsError = true; return(Json(res)); } //8.2.2 if (i.DestinationShelfNo == i.SourceShelfNo) { res.AddErrorMessage(MessageUtil.MODULE_INVENTORY, MessageUtil.MessageList.MSG4053, new string[] { i.SourceShelfNo, i.InstrumentCode }, new string[] { i.DestShelfNo_id }); res.ResultData = i.InstrumentCode + "," + i.row_id; i.IsError = true; return(Json(res)); } //8.2.3 doCheckTransferQty doCheck = new doCheckTransferQty(); doCheck.OfficeCode = prm.Office.OfficeCode; doCheck.LocationCode = prm.Location; doCheck.AreaCode = i.AreaCode; doCheck.ShelfNo = i.SourceShelfNo; doCheck.InstrumentCode = i.InstrumentCode; doCheck.TransferQty = i.TransferQty; doCheckTransferQtyResult doCheckResult = InvH.CheckTransferQty(doCheck); i.InstrumentQty = doCheckResult.CurrentyQty; if (doCheckResult.OverQtyFlag == null) { res.AddErrorMessage(MessageUtil.MODULE_INVENTORY, MessageUtil.MessageList.MSG4009, new string[] { i.InstrumentCode }, new string[] { i.StockOutQty_id }); res.ResultData = prm.ElemInstrument; i.IsError = true; return(Json(res)); } else if (doCheckResult.OverQtyFlag == true) { res.AddErrorMessage(MessageUtil.MODULE_INVENTORY, MessageUtil.MessageList.MSG4008, new string[] { i.InstrumentCode }, new string[] { i.StockOutQty_id }); res.ResultData = prm.ElemInstrument; i.IsError = true; return(Json(res)); } //8.2.4 List <tbm_Shelf> GetTbm_Shelf = ShelfH.GetTbm_Shelf(i.DestinationShelfNo); // 8.2.5 if (GetTbm_Shelf.Count > 0 && GetTbm_Shelf[0].ShelfTypeCode == ShelfType.C_INV_SHELF_TYPE_PROJECT) { continue; } // 8.2.6 doGetShelfOfArea SourceShelf = InvH.GetShelfOfArea(i.AreaCode, i.InstrumentCode); // 8.2.7 if ((SourceShelf != null && SourceShelf.InstrumentQty > 0) && SourceShelf.ShelfNo != i.DestinationShelfNo && SourceShelf.ShelfNo != i.SourceShelfNo) { res.AddErrorMessage(MessageUtil.MODULE_INVENTORY, MessageUtil.MessageList.MSG4054, new string[] { i.SourceShelfNo, i.InstrumentCode }, new string[] { i.DestShelfNo_id }); res.MessageType = MessageModel.MESSAGE_TYPE.WARNING; i.IsError = true; continue; } // 8.2.8 if ((SourceShelf == null || SourceShelf.InstrumentQty == 0)) { List <tbt_InventoryCurrent> doTbt_InventoryCurrent = InvH.GetTbt_InventoryCurrent( prm.Office.OfficeCode, InstrumentLocation.C_INV_LOC_INSTOCK, GetTbm_Shelf[0].AreaCode, GetTbm_Shelf[0].ShelfNo, GetTbm_Shelf[0].InstrumentCode); if (doTbt_InventoryCurrent != null && doTbt_InventoryCurrent.Count != 0 && doTbt_InventoryCurrent[0] != null && doTbt_InventoryCurrent[0].InstrumentQty > 0) { res.AddErrorMessage(MessageUtil.MODULE_INVENTORY, MessageUtil.MessageList.MSG4054, new string[] { i.SourceShelfNo, i.InstrumentCode }, new string[] { i.DestShelfNo_id }); res.MessageType = MessageModel.MESSAGE_TYPE.WARNING; i.IsError = true; continue; } if ((i.ShelfTypeCode == ShelfType.C_INV_SHELF_TYPE_NORMAL) && i.SourceShelfNo != ShelfNo.C_INV_SHELF_NO_NOT_MOVE_SHELF && i.InstrumentQty != i.TransferQty) { res.AddErrorMessage(MessageUtil.MODULE_INVENTORY, MessageUtil.MessageList.MSG4056, new string[] { i.SourceShelfNo, i.InstrumentCode }, new string[] { i.StockOutQty_id }); res.MessageType = MessageModel.MESSAGE_TYPE.WARNING; i.IsError = true; continue; } } #region OLD CODE //8.2.5 //if (GetTbm_Shelf.Count > 0 && GetTbm_Shelf[0].ShelfTypeCode == ShelfType.C_INV_SHELF_TYPE_NORMAL) //{ // //8.2.5.1 // List<tbt_InventoryCurrent> doTbt_InventoryCurrent = InvH.GetTbt_InventoryCurrent(prm.Office.OfficeCode, InstrumentLocation.C_INV_LOC_INSTOCK, i.AreaCode, GetTbm_Shelf[0].ShelfNo, i.InstrumentCode); // if ((i.AreaCode != GetTbm_Shelf[0].AreaCode || string.Compare(i.InstrumentCode, GetTbm_Shelf[0].InstrumentCode, true) != 0) // //&& i.ShelfTypeCode != ShelfType.C_INV_SHELF_TYPE_NORMAL // && (doTbt_InventoryCurrent.Count > 0 && doTbt_InventoryCurrent[0].InstrumentQty > 0) // ) { // //8.2.5.2 // res.AddErrorMessage(MessageUtil.MODULE_INVENTORY, MessageUtil.MessageList.MSG4054, new string[] { i.SourceShelfNo, i.InstrumentCode }, new string[] { i.DestShelfNo_id }); // res.ResultData = i.InstrumentCode + "," + i.row_id; // i.IsError = true; // return Json(res); // } // else if ( // //(i.AreaCode != GetTbm_Shelf[0].AreaCode || string.Compare(i.InstrumentCode, GetTbm_Shelf[0].InstrumentCode, true) != 0) // //&& (doTbt_InventoryCurrent.Count > 0 && doTbt_InventoryCurrent[0].InstrumentQty > 0) // //&& i.ShelfTypeCode == ShelfType.C_INV_SHELF_TYPE_NORMAL // (doTbt_InventoryCurrent.Count == 0 || (doTbt_InventoryCurrent.Count > 0 && doTbt_InventoryCurrent[0].InstrumentQty == 0)) // && i.ShelfTypeCode == ShelfType.C_INV_SHELF_TYPE_NORMAL // && i.InstrumentQty != i.TransferQty // ) { // //8.2.5.3 // res.AddErrorMessage(MessageUtil.MODULE_INVENTORY, MessageUtil.MessageList.MSG4056, new string[] { i.SourceShelfNo, i.InstrumentCode }, new string[] { i.StockOutQty_id }); // res.ResultData = i.InstrumentCode + "," + i.row_id; // i.IsError = true; // return Json(res); // } //} //dtTbm_Shelf.ShelfTypeCode = C_INV_SHELF_TYPE_NORMAL ////8.2.6 //if (GetTbm_Shelf.Count > 0 && GetTbm_Shelf[0].ShelfTypeCode == ShelfType.C_INV_SHELF_TYPE_EMPTY) //{ // //8.2.6.1 // if (i.ShelfTypeCode != ShelfType.C_INV_SHELF_TYPE_NORMAL) // { // doGetShelfOfArea SourceShelf = InvH.GetShelfOfArea(i.AreaCode, i.InstrumentCode); // if (SourceShelf != null && !string.IsNullOrEmpty(SourceShelf.ShelfNo) && SourceShelf.ShelfNo != i.DestinationShelfNo) // { // res.AddErrorMessage(MessageUtil.MODULE_INVENTORY, MessageUtil.MessageList.MSG4055, new string[] { i.SourceShelfNo, i.InstrumentCode }, new string[] { i.DestShelfNo_id }); // res.ResultData = i.InstrumentCode + "," + i.row_id; // i.IsError = true; // return Json(res); // } // } // //8.2.6.2 // if (i.ShelfTypeCode == ShelfType.C_INV_SHELF_TYPE_NORMAL) // { // if (i.InstrumentQty != i.TransferQty) // { // res.AddErrorMessage(MessageUtil.MODULE_INVENTORY, MessageUtil.MessageList.MSG4056, new string[] { i.SourceShelfNo, i.InstrumentCode }, new string[] { i.StockOutQty_id }); // res.ResultData = i.InstrumentCode + "," + i.row_id; // i.IsError = true; // return Json(res); // } // } //} #endregion } using (TransactionScope scope = new TransactionScope()) //Add by Jutarat A. on 18022013 { //8.3 foreach (IVS210INST i in prm.ElemInstrument) { //8.3.1 List <tbt_InventoryCurrent> lstSourceCurr = InvH.GetTbt_InventoryCurrent(prm.Office.OfficeCode, prm.Location, i.AreaCode, i.SourceShelfNo, i.InstrumentCode); if (lstSourceCurr.Count > 0) { lstSourceCurr[0].InstrumentQty = lstSourceCurr[0].InstrumentQty - i.TransferQty; lstSourceCurr[0].UpdateDate = CommonUtil.dsTransData.dtOperationData.ProcessDateTime; lstSourceCurr[0].UpdateBy = CommonUtil.dsTransData.dtUserData.EmpNo; } InvH.UpdateTbt_InventoryCurrent(lstSourceCurr); //8.3.2 List <tbt_InventoryCurrent> lstDestCurr = InvH.GetTbt_InventoryCurrent(prm.Office.OfficeCode, prm.Location, i.AreaCode, i.DestinationShelfNo, i.InstrumentCode); if (lstDestCurr.Count <= 0) { doNormalShelfExistCurrent destShelf = InvH.GetNormalShelfExistCurrent(i.DestinationShelfNo); if (destShelf != null) { InvH.DeleteTbt_InventoryCurrent( prm.Office.OfficeCode, InstrumentLocation.C_INV_LOC_INSTOCK, destShelf.AreaCode, i.DestinationShelfNo, destShelf.InstrumentCode); } tbt_InventoryCurrent newCurr = new tbt_InventoryCurrent(); newCurr.OfficeCode = prm.Office.OfficeCode; newCurr.LocationCode = prm.Location; newCurr.AreaCode = i.AreaCode; newCurr.ShelfNo = i.DestinationShelfNo; newCurr.InstrumentCode = i.InstrumentCode; newCurr.InstrumentQty = i.TransferQty; newCurr.CreateDate = CommonUtil.dsTransData.dtOperationData.ProcessDateTime; newCurr.CreateBy = CommonUtil.dsTransData.dtUserData.EmpNo; List <tbt_InventoryCurrent> CurrentForInsert = new List <tbt_InventoryCurrent>(); CurrentForInsert.Add(newCurr); InvH.InsertTbt_InventoryCurrent(CurrentForInsert); } else { lstDestCurr[0].InstrumentQty = lstDestCurr[0].InstrumentQty + i.TransferQty; lstDestCurr[0].UpdateDate = CommonUtil.dsTransData.dtOperationData.ProcessDateTime; lstDestCurr[0].UpdateBy = CommonUtil.dsTransData.dtUserData.EmpNo; InvH.UpdateTbt_InventoryCurrent(lstDestCurr); } //8.3.3 List <doShelf> dtTbm_DestShelf = ShelfH.GetShelf(i.DestinationShelfNo, null, null, null); //8.3.4 if (dtTbm_DestShelf[0].ShelfTypeCode != ShelfType.C_INV_SHELF_TYPE_PROJECT) { //8.3.5 doGetShelfOfArea SourceShelf = InvH.GetShelfOfArea(i.AreaCode, i.InstrumentCode); //8.3.6 //if (dtTbm_DestShelf.Count > 0 && i.ShelfTypeCode == ShelfType.C_INV_SHELF_TYPE_NORMAL // && (dtTbm_DestShelf[0].ShelfTypeCode == ShelfType.C_INV_SHELF_TYPE_EMPTY || dtTbm_DestShelf[0].ShelfTypeCode == ShelfType.C_INV_SHELF_TYPE_NORMAL)) if (SourceShelf != null && SourceShelf.ShelfNo != i.DestinationShelfNo) { //Update Source Shelf No //List<tbm_Shelf> Tbm_SourceShelf = ShelfH.GetTbm_Shelf(i.SourceShelfNo); List <tbm_Shelf> Tbm_SourceShelf = ShelfH.GetTbm_Shelf(SourceShelf.ShelfNo); if (Tbm_SourceShelf.Count > 0) { Tbm_SourceShelf[0].ShelfTypeCode = ShelfType.C_INV_SHELF_TYPE_EMPTY; Tbm_SourceShelf[0].AreaCode = null; Tbm_SourceShelf[0].InstrumentCode = null; Tbm_SourceShelf[0].UpdateBy = CommonUtil.dsTransData.dtUserData.EmpNo; Tbm_SourceShelf[0].UpdateDate = CommonUtil.dsTransData.dtOperationData.ProcessDateTime; ShelfH.UpdateShelf(Tbm_SourceShelf[0]); } //InvH.DeleteTbt_InventoryCurrent(prm.Office.OfficeCode, InstrumentLocation.C_INV_LOC_INSTOCK, i.AreaCode, i.SourceShelfNo, i.InstrumentCode); InvH.DeleteTbt_InventoryCurrent(prm.Office.OfficeCode, InstrumentLocation.C_INV_LOC_INSTOCK, i.AreaCode, SourceShelf.ShelfNo, i.InstrumentCode); //Update Destination Shelf No List <tbm_Shelf> Tbm_DestShelf = ShelfH.GetTbm_Shelf(i.DestinationShelfNo); if (Tbm_DestShelf.Count > 0) { Tbm_DestShelf[0].ShelfTypeCode = ShelfType.C_INV_SHELF_TYPE_NORMAL; Tbm_DestShelf[0].AreaCode = i.AreaCode; Tbm_DestShelf[0].InstrumentCode = i.InstrumentCode; Tbm_DestShelf[0].UpdateBy = CommonUtil.dsTransData.dtUserData.EmpNo; Tbm_DestShelf[0].UpdateDate = CommonUtil.dsTransData.dtOperationData.ProcessDateTime; ShelfH.UpdateShelf(Tbm_DestShelf[0]); } } //8.3.7 //if (dtTbm_DestShelf.Count > 0 && dtTbm_DestShelf[0].ShelfTypeCode == ShelfType.C_INV_SHELF_TYPE_EMPTY) else if (SourceShelf == null) { List <tbm_Shelf> Tbm_DestShelf = ShelfH.GetTbm_Shelf(i.DestinationShelfNo); if (Tbm_DestShelf.Count > 0) { Tbm_DestShelf[0].ShelfTypeCode = ShelfType.C_INV_SHELF_TYPE_NORMAL; Tbm_DestShelf[0].AreaCode = i.AreaCode; Tbm_DestShelf[0].InstrumentCode = i.InstrumentCode; Tbm_DestShelf[0].UpdateBy = CommonUtil.dsTransData.dtUserData.EmpNo; Tbm_DestShelf[0].UpdateDate = CommonUtil.dsTransData.dtOperationData.ProcessDateTime; ShelfH.UpdateShelf(Tbm_DestShelf[0]); } } } } scope.Complete(); //Add by Jutarat A. on 18022013 } //8.4 res.ResultData = MessageUtil.GetMessage(MessageUtil.MODULE_INVENTORY, MessageUtil.MessageList.MSG4019); return(Json(res)); } catch (Exception ex) { res.AddErrorMessage(ex); return(Json(res)); } }
/// <summary> /// Add check instrument.<br /> /// - Validate require field.<br /> /// - Check shelf type.<br /> /// - Check duplicate add.<br /> /// - Add to list. /// </summary> /// <param name="OfficeCode"></param> /// <param name="gridCurrentPage"></param> /// <param name="data"></param> /// <returns></returns> public ActionResult IVS160_AddInstrumentToList(string OfficeCode, List <tbt_InventoryCheckingSlipDetail> gridCurrentPage, IVS160_AddData data) { IVS160_ScreenParameter param = GetScreenObject <IVS160_ScreenParameter>(); List <dtCheckingDetailList> list = new List <dtCheckingDetailList>(); ObjectResultData res = new ObjectResultData(); res.MessageType = MessageModel.MESSAGE_TYPE.WARNING; try { if (param.DetailList == null) { param.DetailList = new List <tbt_InventoryCheckingSlipDetail>(); param.CurrentPage = 1; } if (param.DetailList_ForView == null) { param.DetailList_ForView = new List <dtCheckingDetailList>(); } // Check required field. if (ModelState.IsValid == false) { ValidatorUtil.BuildErrorMessage(res, this); if (res.IsError) { return(Json(res)); } } // Business checking # 1 IShelfMasterHandler handlerShelfMaster = ServiceContainer.GetService <IShelfMasterHandler>() as IShelfMasterHandler; List <tbm_Shelf> listShelf = handlerShelfMaster.GetTbm_Shelf(data.ShelfNo); if (listShelf.Count <= 0) { res.AddErrorMessage(MessageUtil.MODULE_INVENTORY, MessageUtil.MessageList.MSG4048, new string[] { data.ShelfNo }, new string[] { "ShelfNo" }); return(Json(res)); } else { data.ShelfNo = listShelf[0].ShelfNo; // Business checking # 2 (duplicate) var isExist = param.DetailList.Count == 0 ? false : param.DetailList.Any(d => d.key == data.key); //(from p in param.DetailList where p.key == data.key select p).Any<tbt_InventoryCheckingSlipDetail>(); if (isExist) { res.AddErrorMessage(MessageUtil.MODULE_INVENTORY, MessageUtil.MessageList.MSG4081, null, null); return(Json(res)); } //if (listShelf[0].ShelfTypeCode == ShelfType.C_INV_SHELF_TYPE_NORMAL // && (listShelf[0].AreaCode != data.AreaCode || string.Compare(listShelf[0].InstrumentCode, data.InstrumentCode, true) == 0) // && OfficeCode == ViewBag.HeadOfficeCode) //{ // res.AddErrorMessage(MessageUtil.MODULE_INVENTORY, MessageUtil.MessageList.MSG4079, new string[] { data.ShelfNo }, new string[] { "ShelfNo" }); // return Json(res); //} //if (listShelf[0].ShelfTypeCode == ShelfType.C_INV_SHELF_TYPE_EMPTY) //{ // res.AddErrorMessage(MessageUtil.MODULE_INVENTORY, MessageUtil.MessageList.MSG4080, null, new string[] { "ShelfNo" }); // return Json(res); //} } // Update current page (update value of CheckingQty) // 1. Update DetailList var currentPage = (from p in param.DetailList where p.Page == param.CurrentPage select p).ToList <tbt_InventoryCheckingSlipDetail>(); for (int i = 0; i < currentPage.Count; i++) { if (currentPage[i].key == gridCurrentPage[i].key) { currentPage[i].CheckingQty = gridCurrentPage[i].CheckingQty; // gridCurrentPage[i].CheckingQty.HasValue ? gridCurrentPage[i].CheckingQty.Value : 0; currentPage[i].txtCheckingQtyID = gridCurrentPage[i].txtCheckingQtyID; } } // 2. Update DetailList_ForView var currentPage_ForView = (from p in param.DetailList_ForView where p.Page == param.CurrentPage select p).ToList <dtCheckingDetailList>(); for (int i = 0; i < currentPage_ForView.Count; i++) { if (currentPage_ForView[i].key == gridCurrentPage[i].key) { currentPage_ForView[i].CheckingQty = gridCurrentPage[i].CheckingQty; // gridCurrentPage[i].CheckingQty.HasValue ? gridCurrentPage[i].CheckingQty.Value : 0; currentPage_ForView[i].txtCheckingQtyID = gridCurrentPage[i].txtCheckingQtyID; } } // Add new entry int nextRunningNo = param.DetailList.Count == 0 ? 1 : (param.DetailList[param.DetailList.Count - 1].RunningNoInSlip + 1); // Prepare // 1. RowItem (for save) tbt_InventoryCheckingSlipDetail newRowItem = new tbt_InventoryCheckingSlipDetail() { InstrumentCode = data.InstrumentCode, RunningNoInSlip = nextRunningNo, AreaCode = data.AreaCode, ShelfNo = data.ShelfNo, StockQty = 0, // 0 for add new CheckingQty = null, //0, // defualt 0 , and user will input again in grid AddFlag = true, CreateDate = CommonUtil.dsTransData.dtOperationData.ProcessDateTime, CreateBy = CommonUtil.dsTransData.dtUserData.EmpNo, UpdateDate = CommonUtil.dsTransData.dtOperationData.ProcessDateTime, UpdateBy = CommonUtil.dsTransData.dtUserData.EmpNo, }; // 2. RowItem (for view) dtCheckingDetailList newRowItem_ForView = CommonUtil.CloneObject <IVS160_AddData, dtCheckingDetailList>(data); newRowItem_ForView.CheckingQty = null; // 0; newRowItem_ForView.AddFlag = true; // Add to list param.DetailList.Add(newRowItem); param.DetailList_ForView.Add(newRowItem_ForView); // Prepare list for return to show in grid int maxpage = param.DetailList_ForView.Max(m => m.Page); currentPage_ForView = (from p in param.DetailList_ForView where p.Page == maxpage select p).ToList <dtCheckingDetailList>(); param.CurrentPage = maxpage; list = currentPage_ForView; } catch (Exception ex) { res.MessageType = MessageModel.MESSAGE_TYPE.INFORMATION; res.AddErrorMessage(ex); } res.ResultData = CommonUtil.ConvertToXml <dtCheckingDetailList>(list, "Inventory\\IVS160", CommonUtil.GRID_EMPTY_TYPE.SEARCH); return(Json(res)); }
/// <summary> /// Validate register transfer instrument data /// </summary> /// <param name="Cond">Register condition object</param> /// <returns></returns> public ActionResult IVS210_cmdReg(IVS210RegisterCond Cond) { ObjectResultData res = new ObjectResultData(); try { IVS210_ScreenParameter prm = GetScreenObject <IVS210_ScreenParameter>(); if (prm.ElemInstrument == null) { prm.ElemInstrument = new List <IVS210INST>(); } IInventoryHandler InvH = ServiceContainer.GetService <IInventoryHandler>() as IInventoryHandler; IShelfMasterHandler ShelfH = ServiceContainer.GetService <IShelfMasterHandler>() as IShelfMasterHandler; ICommonHandler ComH = ServiceContainer.GetService <ICommonHandler>() as ICommonHandler; if (ComH.IsSystemSuspending()) { res.AddErrorMessage(MessageUtil.MODULE_COMMON, MessageUtil.MessageList.MSG0049); return(Json(res)); } if (!CheckUserPermission(ScreenID.C_INV_SCREEN_ID_MOVE_SHELF, FunctionID.C_FUNC_ID_OPERATE)) { res.AddErrorMessage(MessageUtil.MODULE_COMMON, MessageUtil.MessageList.MSG0053); return(Json(res)); } if (InvH.CheckStartedStockChecking() == 0) { res.AddErrorMessage(MessageUtil.MODULE_INVENTORY, MessageUtil.MessageList.MSG4003); return(Json(res)); } //6.1.1 if (prm.ElemInstrument.Count <= 0) { res.MessageType = MessageModel.MESSAGE_TYPE.WARNING; res.AddErrorMessage(MessageUtil.MODULE_INVENTORY, MessageUtil.MessageList.MSG4006); return(Json(res)); } prm.ElemInstrument = Cond.StockInInstrument; prm.Location = Cond.Location; List <IVS210INST> arrayEmptyShelf = new List <IVS210INST>(); bool isError = false; foreach (IVS210INST i in prm.ElemInstrument) { //6.1.2 if (i.TransferQty <= 0) { res.MessageType = MessageModel.MESSAGE_TYPE.WARNING; res.AddErrorMessage(MessageUtil.MODULE_INVENTORY, MessageUtil.MessageList.MSG4047, new string[] { i.SourceShelfNo, i.InstrumentCode }, new string[] { i.StockOutQty_id }); isError = true; continue; } //6.1.3 if (string.IsNullOrEmpty(i.DestinationShelfNo)) { res.MessageType = MessageModel.MESSAGE_TYPE.WARNING; res.AddErrorMessage(MessageUtil.MODULE_INVENTORY, MessageUtil.MessageList.MSG4049, new string[] { i.SourceShelfNo, i.InstrumentCode }, new string[] { i.DestShelfNo_id }); isError = true; continue; } //6.1.4 if (i.DestinationShelfNo == ShelfNo.C_INV_SHELF_NO_NOT_PRICE || i.DestinationShelfNo == ShelfNo.C_INV_SHELF_NO_NOT_MOVE_SHELF || i.DestinationShelfNo == ShelfNo.C_INV_SHELF_NO_OTHER_LOCATION) { res.MessageType = MessageModel.MESSAGE_TYPE.WARNING; res.AddErrorMessage(MessageUtil.MODULE_INVENTORY, MessageUtil.MessageList.MSG4050, new string[] { i.SourceShelfNo, i.InstrumentCode }, new string[] { i.DestShelfNo_id }); isError = true; continue; } //6.1.5 if (i.DestinationShelfNo == i.SourceShelfNo) { res.MessageType = MessageModel.MESSAGE_TYPE.WARNING; res.AddErrorMessage(MessageUtil.MODULE_INVENTORY, MessageUtil.MessageList.MSG4053, new string[] { i.SourceShelfNo, i.InstrumentCode }, new string[] { i.DestShelfNo_id }); isError = true; continue; } //6.1.6 doCheckTransferQty doCheck = new doCheckTransferQty(); doCheck.OfficeCode = prm.Office.OfficeCode; doCheck.LocationCode = prm.Location; doCheck.AreaCode = i.AreaCode; doCheck.ShelfNo = i.SourceShelfNo; doCheck.InstrumentCode = i.InstrumentCode; doCheck.TransferQty = i.TransferQty; doCheckTransferQtyResult doCheckResult = InvH.CheckTransferQty(doCheck); i.InstrumentQty = doCheckResult.CurrentyQty; if (doCheckResult.OverQtyFlag == null) { res.AddErrorMessage(MessageUtil.MODULE_INVENTORY, MessageUtil.MessageList.MSG4009, new string[] { i.InstrumentCode }, new string[] { i.StockOutQty_id }); res.MessageType = MessageModel.MESSAGE_TYPE.WARNING; isError = true; continue; } else if (doCheckResult.OverQtyFlag == true) { res.AddErrorMessage(MessageUtil.MODULE_INVENTORY, MessageUtil.MessageList.MSG4008, new string[] { i.InstrumentCode }, new string[] { i.StockOutQty_id }); res.MessageType = MessageModel.MESSAGE_TYPE.WARNING; isError = true; continue; } if (!string.IsNullOrEmpty(i.DestinationShelfNo)) { //6.1.7 List <tbm_Shelf> GetTbm_Shelf = ShelfH.GetTbm_Shelf(i.DestinationShelfNo); //6.1.8 if (GetTbm_Shelf.Count <= 0) { res.AddErrorMessage(MessageUtil.MODULE_INVENTORY, MessageUtil.MessageList.MSG4048, new string[] { i.DestinationShelfNo }, new string[] { i.DestShelfNo_id }); res.MessageType = MessageModel.MESSAGE_TYPE.WARNING; isError = true; continue; } else { i.DestinationShelfNo = GetTbm_Shelf[0].ShelfNo; } //6.1.9 if (GetTbm_Shelf.Count > 0 && GetTbm_Shelf[0].ShelfTypeCode == ShelfType.C_INV_SHELF_TYPE_PROJECT) { continue; } // 6.1.10 doGetShelfOfArea SourceShelf = InvH.GetShelfOfArea(i.AreaCode, i.InstrumentCode); // 6.1.11 if ((SourceShelf != null && SourceShelf.InstrumentQty > 0) && SourceShelf.ShelfNo != i.DestinationShelfNo && SourceShelf.ShelfNo != i.SourceShelfNo) { res.AddErrorMessage(MessageUtil.MODULE_INVENTORY, MessageUtil.MessageList.MSG4054, new string[] { i.SourceShelfNo, i.InstrumentCode }, new string[] { i.DestShelfNo_id }); res.MessageType = MessageModel.MESSAGE_TYPE.WARNING; isError = true; continue; } // 6.1.12 if ((SourceShelf == null || SourceShelf.InstrumentQty == 0) || ((SourceShelf != null || SourceShelf.InstrumentQty > 0) && i.SourceShelfNo == SourceShelf.ShelfNo)) { List <tbt_InventoryCurrent> doTbt_InventoryCurrent = InvH.GetTbt_InventoryCurrent( prm.Office.OfficeCode, InstrumentLocation.C_INV_LOC_INSTOCK, GetTbm_Shelf[0].AreaCode, GetTbm_Shelf[0].ShelfNo, GetTbm_Shelf[0].InstrumentCode); if (doTbt_InventoryCurrent != null && doTbt_InventoryCurrent.Count != 0 && doTbt_InventoryCurrent[0] != null && doTbt_InventoryCurrent[0].InstrumentQty > 0) { res.AddErrorMessage(MessageUtil.MODULE_INVENTORY, MessageUtil.MessageList.MSG4054, new string[] { i.SourceShelfNo, i.InstrumentCode }, new string[] { i.DestShelfNo_id }); res.MessageType = MessageModel.MESSAGE_TYPE.WARNING; isError = true; continue; } if ((i.ShelfTypeCode == ShelfType.C_INV_SHELF_TYPE_NORMAL) && i.SourceShelfNo != ShelfNo.C_INV_SHELF_NO_NOT_MOVE_SHELF && i.InstrumentQty != i.TransferQty) { res.AddErrorMessage(MessageUtil.MODULE_INVENTORY, MessageUtil.MessageList.MSG4056, new string[] { i.SourceShelfNo, i.InstrumentCode }, new string[] { i.StockOutQty_id }); res.MessageType = MessageModel.MESSAGE_TYPE.WARNING; isError = true; continue; } // 6.1.14.3 bool blnDuplicateEmptyShelf = false; foreach (IVS210INST item in arrayEmptyShelf) { //if (item.DestinationShelfNo.ToUpper() == i.DestinationShelfNo.ToUpper() && item.AreaCode != i.AreaCode) if (item.DestinationShelfNo.ToUpper() == i.DestinationShelfNo.ToUpper() && item.InstrumentCode != i.InstrumentCode) //Modify by Jutarat A. on 21062013 { res.AddErrorMessage(MessageUtil.MODULE_INVENTORY, MessageUtil.MessageList.MSG4128, new string[] { i.DestinationShelfNo, i.InstrumentCode }, new string[] { i.DestShelfNo_id }); res.MessageType = MessageModel.MESSAGE_TYPE.WARNING; isError = true; blnDuplicateEmptyShelf = true; break; } } if (blnDuplicateEmptyShelf == false) { arrayEmptyShelf.Add(i); } } #region OLD CODE ////6.1.9 //if (GetTbm_Shelf.Count > 0 && GetTbm_Shelf[0].ShelfTypeCode == ShelfType.C_INV_SHELF_TYPE_NORMAL) //{ // //6.1.9.1 // List<tbt_InventoryCurrent> doTbt_InventoryCurrent = InvH.GetTbt_InventoryCurrent(prm.Office.OfficeCode, InstrumentLocation.C_INV_LOC_INSTOCK, GetTbm_Shelf[0].AreaCode, GetTbm_Shelf[0].ShelfNo, GetTbm_Shelf[0].InstrumentCode); // if ((i.AreaCode != GetTbm_Shelf[0].AreaCode || string.Compare(i.InstrumentCode, GetTbm_Shelf[0].InstrumentCode, true) != 0) // //&& i.ShelfTypeCode != ShelfType.C_INV_SHELF_TYPE_NORMAL // && (doTbt_InventoryCurrent.Count > 0 && doTbt_InventoryCurrent[0].InstrumentQty > 0) // ) // { // //6.1.9.2 // res.AddErrorMessage(MessageUtil.MODULE_INVENTORY, MessageUtil.MessageList.MSG4054, new string[] { i.SourceShelfNo, i.InstrumentCode }, new string[] { i.DestShelfNo_id }); // res.MessageType = MessageModel.MESSAGE_TYPE.WARNING; // isError = true; // continue; // } // else if ( // //(i.AreaCode != GetTbm_Shelf[0].AreaCode || string.Compare(i.InstrumentCode, GetTbm_Shelf[0].InstrumentCode, true) != 0) // //&& (doTbt_InventoryCurrent.Count > 0 && doTbt_InventoryCurrent[0].InstrumentQty > 0) // //&& i.ShelfTypeCode == ShelfType.C_INV_SHELF_TYPE_NORMAL // (doTbt_InventoryCurrent.Count == 0 || (doTbt_InventoryCurrent.Count > 0 && doTbt_InventoryCurrent[0].InstrumentQty == 0)) // && i.ShelfTypeCode == ShelfType.C_INV_SHELF_TYPE_NORMAL // && i.InstrumentQty != i.TransferQty // ) // { // //6.1.9.3 // res.AddErrorMessage(MessageUtil.MODULE_INVENTORY, MessageUtil.MessageList.MSG4056, new string[] { i.SourceShelfNo, i.InstrumentCode }, new string[] { i.StockOutQty_id }); // res.MessageType = MessageModel.MESSAGE_TYPE.WARNING; // isError = true; // continue; // } //} //dtTbm_Shelf.ShelfTypeCode = C_INV_SHELF_TYPE_NORMAL ////6.1.10 //if (GetTbm_Shelf.Count > 0 && GetTbm_Shelf[0].ShelfTypeCode == ShelfType.C_INV_SHELF_TYPE_EMPTY) //{ // //6.1.10.1 // // if (i.ShelfTypeCode != ShelfType.C_INV_SHELF_TYPE_NORMAL) // // { // doGetShelfOfArea SourceShelf = InvH.GetShelfOfArea(i.AreaCode, i.InstrumentCode); // if (SourceShelf != null && !string.IsNullOrEmpty(SourceShelf.ShelfNo) && SourceShelf.ShelfNo != i.DestinationShelfNo) // { // res.AddErrorMessage(MessageUtil.MODULE_INVENTORY, MessageUtil.MessageList.MSG4055, new string[] { i.SourceShelfNo, i.InstrumentCode }, new string[] { i.DestShelfNo_id }); // res.MessageType = MessageModel.MESSAGE_TYPE.WARNING; // isError = true; // continue; // } // // } // //6.1.10.2 // if (i.ShelfTypeCode == ShelfType.C_INV_SHELF_TYPE_NORMAL && i.ShelfNo != ShelfNo.C_INV_SHELF_NO_NOT_MOVE_SHELF) // { // if (i.InstrumentQty != i.TransferQty) // { // res.AddErrorMessage(MessageUtil.MODULE_INVENTORY, MessageUtil.MessageList.MSG4056, new string[] { i.SourceShelfNo, i.InstrumentCode }, new string[] { i.StockOutQty_id }); // res.MessageType = MessageModel.MESSAGE_TYPE.WARNING; // isError = true; // continue; // } // } // //6.1.10.3 // bool blnDuplicateEmptyShelf = false; // foreach (IVS210INST item in arrayEmptyShelf) // { // if (item.DestinationShelfNo.ToUpper() == i.DestinationShelfNo.ToUpper() && item.AreaCode != i.AreaCode) // { // res.AddErrorMessage(MessageUtil.MODULE_INVENTORY, MessageUtil.MessageList.MSG4128, new string[] { i.DestinationShelfNo, i.InstrumentCode }, new string[] { i.DestShelfNo_id }); // res.MessageType = MessageModel.MESSAGE_TYPE.WARNING; // isError = true; // blnDuplicateEmptyShelf = true; // break; // } // } // if (blnDuplicateEmptyShelf == false) // { // arrayEmptyShelf.Add(i); // } //} #endregion } } res.ResultData = prm.ElemInstrument; return(Json(res)); } catch (Exception ex) { res.AddErrorMessage(ex); return(Json(res)); } }