/// <summary> /// Register pre-elimination.<br /> /// - Check system suspending.<br /> /// - Check permission.<br /> /// - Check quantity.<br /> /// - Insert inventory slip.<br /> /// - Update account transfer new/second hand/sample instrument.<br /> /// - Generate report. /// </summary> /// <returns></returns> public ActionResult IVS040_cmdConfirm() { ObjectResultData res = new ObjectResultData(); try { //Check Suspend IVS040_ScreenParameter prm = GetScreenObject <IVS040_ScreenParameter>(); if (prm.ElemInstrument == null) { prm.ElemInstrument = new List <IVS040INST>(); } 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_PRE_ELIMINATION, FunctionID.C_FUNC_ID_OPERATE)) { res.AddErrorMessage(MessageUtil.MODULE_COMMON, MessageUtil.MessageList.MSG0053); return(Json(res)); } IInventoryHandler InvH = ServiceContainer.GetService <IInventoryHandler>() as IInventoryHandler; bool isError = false; foreach (IVS040INST i in prm.ElemInstrument) { doCheckTransferQty Cond = new doCheckTransferQty(); Cond.OfficeCode = prm.office.OfficeCode; Cond.LocationCode = prm.Location; Cond.AreaCode = i.AreaCode; Cond.ShelfNo = i.ShelfNo; Cond.InstrumentCode = i.InstrumentCode; Cond.TransferQty = i.TransferInstrumentQty; doCheckTransferQtyResult TransferQtyResult = InvH.CheckTransferQty(Cond); i.InstrumentQty = TransferQtyResult.CurrentyQty; //8.2.1 if (TransferQtyResult.OverQtyFlag == null) { res.AddErrorMessage(MessageUtil.MODULE_INVENTORY, MessageUtil.MessageList.MSG4009, new string[] { i.InstrumentCode }, new string[] { i.TransQtyID }); //res.ResultData = i.InstrumentCode + "," + i.row_id; isError = true; } else if (TransferQtyResult.OverQtyFlag == true) { res.AddErrorMessage(MessageUtil.MODULE_INVENTORY, MessageUtil.MessageList.MSG4008, new string[] { i.InstrumentCode }, new string[] { i.TransQtyID }); //res.ResultData = i.InstrumentCode + "," + i.row_id; isError = true; } } if (isError) { //res.MessageType = MessageModel.MESSAGE_TYPE.WARNING; res.ResultData = prm.ElemInstrument; return(Json(res)); } string strInventorySlipNo = null; using (TransactionScope scope = new TransactionScope()) { //8.3 doRegisterTransferInstrumentData data = new doRegisterTransferInstrumentData(); data.SlipId = SlipID.C_INV_SLIPID_PRE_ELIMINATE; data.InventorySlip = new tbt_InventorySlip(); data.lstTbt_InventorySlipDetail = new List <tbt_InventorySlipDetail>(); tbt_InventorySlip InvSlip = new tbt_InventorySlip(); InvSlip.SlipStatus = InventorySlipStatus.C_INV_SLIP_STATUS_COMPLETE; InvSlip.TransferTypeCode = TransferType.C_INV_TRANSFERTYPE_PRE_ELIMINATION; InvSlip.SlipIssueDate = CommonUtil.dsTransData.dtOperationData.ProcessDateTime; InvSlip.StockInDate = CommonUtil.dsTransData.dtOperationData.ProcessDateTime; InvSlip.StockOutDate = CommonUtil.dsTransData.dtOperationData.ProcessDateTime; InvSlip.SourceLocationCode = prm.Location; //InvSlip.DestinationLocationCode = InstrumentLocation.C_INV_LOC_PRE_ELIMINATION; InvSlip.DestinationLocationCode = prm.DestinationLocation; InvSlip.SourceOfficeCode = prm.office.OfficeCode; InvSlip.DestinationOfficeCode = prm.office.OfficeCode; InvSlip.ApproveNo = prm.ApproveNo; InvSlip.Memo = prm.Memo; InvSlip.ShelfType = ShelfType.C_INV_SHELF_TYPE_NORMAL; InvSlip.CreateBy = CommonUtil.dsTransData.dtUserData.EmpNo; InvSlip.CreateDate = CommonUtil.dsTransData.dtOperationData.ProcessDateTime; InvSlip.UpdateDate = CommonUtil.dsTransData.dtOperationData.ProcessDateTime; InvSlip.UpdateBy = CommonUtil.dsTransData.dtUserData.EmpNo; data.InventorySlip = InvSlip; data.lstTbt_InventorySlipDetail = new List <tbt_InventorySlipDetail>(); int iRunNo = 1; List <IVS040INST> sortedList = ( from row in prm.ElemInstrument orderby row.InstrumentCode, row.AreaCode select row ).ToList <IVS040INST>(); foreach (IVS040INST i in sortedList) { tbt_InventorySlipDetail SlipDetail = new tbt_InventorySlipDetail(); SlipDetail.RunningNo = iRunNo; SlipDetail.InstrumentCode = i.InstrumentCode; SlipDetail.SourceAreaCode = i.AreaCode; SlipDetail.DestinationAreaCode = i.AreaCode; SlipDetail.SourceShelfNo = i.ShelfNo; if (InstrumentLocation.C_INV_LOC_INSTOCK == prm.DestinationLocation) { SlipDetail.DestinationShelfNo = ShelfNo.C_INV_SHELF_NO_NOT_MOVE_SHELF; } else { SlipDetail.DestinationShelfNo = ShelfNo.C_INV_SHELF_NO_OTHER_LOCATION; } //SlipDetail.DestinationShelfNo = ShelfNo.C_INV_SHELF_NO_OTHER_LOCATION; SlipDetail.TransferQty = i.TransferInstrumentQty; data.lstTbt_InventorySlipDetail.Add(SlipDetail); iRunNo++; } strInventorySlipNo = InvH.RegisterTransferInstrument(data); if (InvH.CheckNewInstrument(strInventorySlipNo) == 1) { //8.5.1 List <doGroupNewInstrument> groupNewInstrument = InvH.GetGroupNewInstrument(strInventorySlipNo); foreach (doGroupNewInstrument i in groupNewInstrument) { //i.DestinationLocationCode = InstrumentLocation.C_INV_LOC_PRE_ELIMINATION; #region Monthly Price @ 2015 //decimal decMovingAveragePrice = InvH.CalculateMovingAveragePrice(i); var decMovingAveragePrice = InvH.GetMonthlyAveragePrice(i.Instrumentcode, InvSlip.SlipIssueDate, InventoryAccountCode.C_INV_ACCOUNT_CODE_INSTOCK, SECOM_AJIS.Common.Util.ConstantValue.CurrencyUtil.C_CURRENCY_LOCAL, SECOM_AJIS.Common.Util.ConstantValue.CurrencyUtil.C_CURRENCY_US); #endregion InvH.UpdateAccountTransferNewInstrument(i, Convert.ToDecimal(decMovingAveragePrice)); } } //8.6 int blnCheckSecondhandInstrument = InvH.CheckSecondhandInstrument(strInventorySlipNo); if (blnCheckSecondhandInstrument == 1) { List <doGroupSecondhandInstrument> GroupSecondHandInstrument = InvH.GetGroupSecondhandInstrument(strInventorySlipNo); foreach (doGroupSecondhandInstrument i in GroupSecondHandInstrument) { //i.DestinationLocationCode = InstrumentLocation.C_INV_LOC_PRE_ELIMINATION; InvH.UpdateAccountTransferSecondhandInstrument(i); } } //8.7 int blnCheckSampleInstrument = InvH.CheckSampleInstrument(strInventorySlipNo); if (blnCheckSampleInstrument == 1) { List <doGroupSampleInstrument> GroupSampleInstrument = InvH.GetGroupSampleInstrument(strInventorySlipNo); foreach (doGroupSampleInstrument i in GroupSampleInstrument) { //i.DestinationLocationCode = InstrumentLocation.C_INV_LOC_PRE_ELIMINATION; InvH.UpdateAccountTransferSampleInstrument(i, null); } } scope.Complete(); } //end transaction scope //8.8 IInventoryDocumentHandler handlerInventoryDocument = ServiceContainer.GetService <IInventoryDocumentHandler>() as IInventoryDocumentHandler; string reportPath = handlerInventoryDocument.GenerateIVR020FilePath(strInventorySlipNo, prm.office.OfficeCode, CommonUtil.dsTransData.dtUserData.EmpNo, CommonUtil.dsTransData.dtOperationData.ProcessDateTime); prm.slipNo = strInventorySlipNo; prm.reportFilePath = reportPath; UpdateScreenObject(prm); res.ResultData = strInventorySlipNo; return(Json(res)); } catch (Exception ex) { res.ResultData = "toregister"; res.AddErrorMessage(ex); return(Json(res)); } }