/// <summary> /// Register receiving returned instrument /// </summary> /// <param name="Con">Register condition object</param> /// <returns></returns> public ActionResult IVS030_cmdConfirm_Cont(IVS030ConfirmCond Con) { ObjectResultData res = new ObjectResultData(); try { IVS030_ScreenParameter prm = GetScreenObject <IVS030_ScreenParameter>(); if (prm.ElemInstrument == null) { prm.ElemInstrument = new List <IVS030INST>(); } IInventoryHandler InvH = ServiceContainer.GetService <IInventoryHandler>() as IInventoryHandler; IInstallationHandler InstallH = ServiceContainer.GetService <IInstallationHandler>() as IInstallationHandler; 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_RECEIVE_RETURN, FunctionID.C_FUNC_ID_OPERATE)) { res.AddErrorMessage(MessageUtil.MODULE_COMMON, MessageUtil.MessageList.MSG0053); return(Json(res)); } //4.6 using (TransactionScope scope = new TransactionScope()) { List <tbt_InventorySlip> doTbt_InventorySlipForUpdate = null; //Comment by Jutarat A. on 11022013 (Move to check before 4.8.1) ////4.7.1 //if (!string.IsNullOrEmpty(prm.ContractCode) && prm.ServiceTypeCode == ServiceType.C_SERVICE_TYPE_SALE) //{ // //4.7.1.1 // bool blnProcessStatus = InstallH.ReceiveReturnInstrument(prm.SlipNo, prm.office.OfficeCode); // //4.7.1.2 // if (!blnProcessStatus) // { // //Rollback // return Json(res); // } // //4.7.1.3 // res.ResultData = MessageUtil.GetMessage(MessageUtil.MODULE_INVENTORY, MessageUtil.MessageList.MSG4019); // return Json(res); //} //End Comment //4.7.1 if (!string.IsNullOrEmpty(prm.ContractCode)) { doTbt_InventorySlipForUpdate = InvH.GetTbt_InventorySlipForReceiveReturn(prm.SlipNo); } else { List <tbt_InventorySlip> doTbt_InventorySlip = InvH.GetTbt_InventorySlip(prm.SlipNo); doTbt_InventorySlipForUpdate = new List <tbt_InventorySlip>(); doTbt_InventorySlipForUpdate.AddRange(doTbt_InventorySlip); } if (doTbt_InventorySlipForUpdate == null) { doTbt_InventorySlipForUpdate = new List <tbt_InventorySlip>(); } //Add by Jutarat A. on 11022013 (Move to check before 4.8.1) //4.7.2 if (!string.IsNullOrEmpty(prm.ContractCode) && prm.ServiceTypeCode == ServiceType.C_SERVICE_TYPE_SALE && (doTbt_InventorySlipForUpdate != null && doTbt_InventorySlipForUpdate.Count > 0 && doTbt_InventorySlipForUpdate[0].SourceLocationCode != InstrumentLocation.C_INV_LOC_WIP && doTbt_InventorySlipForUpdate[0].SourceLocationCode != InstrumentLocation.C_INV_LOC_PARTIAL_OUT)) { //4.7.2.1 bool blnProcessStatus = InstallH.ReceiveReturnInstrument(prm.SlipNo, prm.office.OfficeCode); //4.7.2.2 if (!blnProcessStatus) { //Rollback return(Json(res)); } //4.7.2.3 scope.Complete(); //Add by Jutarat A. on 11022013 (Commit) res.ResultData = MessageUtil.GetMessage(MessageUtil.MODULE_INVENTORY, MessageUtil.MessageList.MSG4019); return(Json(res)); } //End Add //4.8.1 foreach (tbt_InventorySlip i in doTbt_InventorySlipForUpdate) { //4.8.2.1 if (i.DestinationLocationCode == InstrumentLocation.C_INV_LOC_ELIMINATION) { List <tbt_InventorySlip> lstUpdateSlip = InvH.GetTbt_InventorySlip(i.SlipNo); if (lstUpdateSlip.Count > 0) { lstUpdateSlip[0].SlipStatus = InventorySlipStatus.C_INV_SLIP_STATUS_COMPLETE; if (!string.IsNullOrEmpty(prm.Memo)) { lstUpdateSlip[0].Memo = prm.Memo; } if (!string.IsNullOrEmpty(prm.ApproveNo)) { lstUpdateSlip[0].ApproveNo = prm.ApproveNo; } lstUpdateSlip[0].StockInDate = CommonUtil.dsTransData.dtOperationData.ProcessDateTime; //Comment by Jutarat A. on 30052013 (Set at UpdateTbt_InventorySlip()) //lstUpdateSlip[0].UpdateDate = CommonUtil.dsTransData.dtOperationData.ProcessDateTime; //lstUpdateSlip[0].UpdateBy = CommonUtil.dsTransData.dtUserData.EmpNo; //End Comment List <tbt_InventorySlip> doTbt_InventorySlip = InvH.UpdateTbt_InventorySlip(lstUpdateSlip); if (doTbt_InventorySlip == null || doTbt_InventorySlip.Count <= 0) { //Rollback return(Json(res)); } } } else { //4.8.2.2 bool blnProcessUpdate = InvH.RegisterReceiveInstrument(i.SlipNo, prm.Memo, prm.ApproveNo); if (!blnProcessUpdate) { //Rollback return(Json(res)); } } } string strSourceLocationCode = string.Empty; //4.9 foreach (tbt_InventorySlip i in doTbt_InventorySlipForUpdate) { //4.9.1 if (i.DestinationLocationCode == InstrumentLocation.C_INV_LOC_ELIMINATION) { continue; } //4.9.2 if (i.SourceLocationCode == InstrumentLocation.C_INV_LOC_UNOPERATED_WIP || i.SourceLocationCode == InstrumentLocation.C_INV_LOC_WIP || i.SourceLocationCode == InstrumentLocation.C_INV_LOC_PROJECT_WIP || i.SourceLocationCode == InstrumentLocation.C_INV_LOC_PARTIAL_OUT // New WIP concept @ 24-Feb-2015 ) { strSourceLocationCode = InstrumentLocation.C_INV_LOC_WAITING_RETURN; } else { strSourceLocationCode = InstrumentLocation.C_INV_LOC_RETURN_WIP; } //4.9.3 if (InvH.CheckNewInstrument(i.SlipNo) == 1) { //4.9.3.1 List <doGroupNewInstrument> doGroupNewInstrument = InvH.GetGroupNewInstrument(i.SlipNo); foreach (doGroupNewInstrument groupNewIns in doGroupNewInstrument) { //4.9.3.2 groupNewIns.SourceLocationCode = strSourceLocationCode; //4.9.3.3 #region Monthly Price @ 2015 //decimal decMovingAveragePrice = InvH.CalculateMovingAveragePrice(groupNewIns); var decMovingAveragePrice = InvH.GetMonthlyAveragePrice(groupNewIns.Instrumentcode, i.SlipIssueDate, InventoryAccountCode.C_INV_ACCOUNT_CODE_INPROCESS, SECOM_AJIS.Common.Util.ConstantValue.CurrencyUtil.C_CURRENCY_LOCAL, SECOM_AJIS.Common.Util.ConstantValue.CurrencyUtil.C_CURRENCY_US); #endregion int? intReturnInprocess; // New WIP concept @ 24-Feb-2015 bool blnUpdate = InvH.UpdateAccountTransferNewInstrument(groupNewIns, Convert.ToDecimal(decMovingAveragePrice), out intReturnInprocess); // New WIP concept @ 24-Feb-2015 if (!blnUpdate) { //Rollback return(Json(res)); } #region // New WIP concept @ 24-Feb-2015 if ((intReturnInprocess ?? 0) > 0) { List <tbt_AccountInprocess> accountInProcessList = InvH.GetTbt_AccountInProcess( groupNewIns.SourceLocationCode , groupNewIns.ContractCode ?? groupNewIns.ProjectCode , groupNewIns.Instrumentcode ); tbt_AccountStockMoving accountStockMoving = new tbt_AccountStockMoving(); accountStockMoving.SlipNo = i.SlipNo; accountStockMoving.TransferTypeCode = i.TransferTypeCode; accountStockMoving.SourceAccountStockCode = InventoryAccountCode.C_INV_ACCOUNT_CODE_INPROCESS; accountStockMoving.DestinationAccountStockCode = InventoryAccountCode.C_INV_ACCOUNT_CODE_INSTOCK; accountStockMoving.SourceLocationCode = groupNewIns.SourceLocationCode; accountStockMoving.DestinationLocationCode = groupNewIns.DestinationLocationCode; accountStockMoving.InstrumentCode = groupNewIns.Instrumentcode; accountStockMoving.InstrumentQty = intReturnInprocess; if (accountInProcessList.Count != 0) { accountStockMoving.InstrumentPrice = accountInProcessList[0].MovingAveragePrice.Value; } accountStockMoving.CreateDate = CommonUtil.dsTransData.dtOperationData.ProcessDateTime; accountStockMoving.CreateBy = CommonUtil.dsTransData.dtUserData.EmpNo; accountStockMoving.UpdateDate = CommonUtil.dsTransData.dtOperationData.ProcessDateTime; accountStockMoving.UpdateBy = CommonUtil.dsTransData.dtUserData.EmpNo; List <tbt_AccountStockMoving> targetAccountStockMovingList = new List <tbt_AccountStockMoving>(); targetAccountStockMovingList.Add(accountStockMoving); List <tbt_AccountStockMoving> resultAccountStockMovingList = InvH.InsertAccountStockMoving(targetAccountStockMovingList); if (resultAccountStockMovingList.Count <= 0) { throw ApplicationErrorException.ThrowErrorException(MessageUtil.MODULE_COMMON, MessageUtil.MessageList.MSG0148, new string[] { TableName.C_TBL_NAME_INV_ACC_STOCK_MOVING }); } //end if/else } #endregion } } //4.9.4 if (InvH.CheckSecondhandInstrument(i.SlipNo) == 1) { //4.9.4.1 List <doGroupSecondhandInstrument> doGroupSecondhandInstrument = InvH.GetGroupSecondhandInstrument(i.SlipNo); //4.9.4.2 foreach (doGroupSecondhandInstrument doGroupSecond in doGroupSecondhandInstrument) { doGroupSecond.SourceLocationCode = strSourceLocationCode; bool blnUpdate = InvH.UpdateAccountTransferSecondhandInstrument(doGroupSecond); if (!blnUpdate) { //Rollback return(Json(res)); } } } //4.9.5 if (InvH.CheckSampleInstrument(i.SlipNo) == 1) { //4.9.5.1 List <doGroupSampleInstrument> doGroupSampleInstrument = InvH.GetGroupSampleInstrument(i.SlipNo); //4.9.5.2 foreach (doGroupSampleInstrument dogroupSample in doGroupSampleInstrument) { dogroupSample.SourceLocationCode = strSourceLocationCode; int? intReturnInprocess; // New WIP concept @ 24-Feb-2015 bool blnUpdate = InvH.UpdateAccountTransferSampleInstrument(dogroupSample, null, out intReturnInprocess); // New WIP concept @ 24-Feb-2015 if (!blnUpdate) { //Rollback return(Json(res)); } #region // New WIP concept @ 24-Feb-2015 if ((intReturnInprocess ?? 0) > 0) { tbt_AccountStockMoving accountStockMoving = new tbt_AccountStockMoving(); accountStockMoving.SlipNo = i.SlipNo; accountStockMoving.TransferTypeCode = i.TransferTypeCode; accountStockMoving.SourceAccountStockCode = InventoryAccountCode.C_INV_ACCOUNT_CODE_INPROCESS; accountStockMoving.DestinationAccountStockCode = InventoryAccountCode.C_INV_ACCOUNT_CODE_INSTOCK; accountStockMoving.SourceLocationCode = dogroupSample.SourceLocationCode; accountStockMoving.DestinationLocationCode = dogroupSample.DestinationLocationCode; accountStockMoving.InstrumentCode = dogroupSample.Instrumentcode; accountStockMoving.InstrumentQty = intReturnInprocess; accountStockMoving.InstrumentPrice = InventoryConfig.C_INV_DEFAULT_SAMPLE_AMOUNT; accountStockMoving.CreateDate = CommonUtil.dsTransData.dtOperationData.ProcessDateTime; accountStockMoving.CreateBy = CommonUtil.dsTransData.dtUserData.EmpNo; accountStockMoving.UpdateDate = CommonUtil.dsTransData.dtOperationData.ProcessDateTime; accountStockMoving.UpdateBy = CommonUtil.dsTransData.dtUserData.EmpNo; List <tbt_AccountStockMoving> targetAccountStockMovingList = new List <tbt_AccountStockMoving>(); targetAccountStockMovingList.Add(accountStockMoving); List <tbt_AccountStockMoving> resultAccountStockMovingList = InvH.InsertAccountStockMoving(targetAccountStockMovingList); if (resultAccountStockMovingList.Count <= 0) { throw ApplicationErrorException.ThrowErrorException(MessageUtil.MODULE_COMMON, MessageUtil.MessageList.MSG0148, new string[] { TableName.C_TBL_NAME_INV_ACC_STOCK_MOVING }); } //end if/else } #endregion } } } //4.10 if (prm.SlipSelectType == IVS030_ScreenParameter.SlipType.InstallationSlip) { bool blnProcessStatus = InstallH.ReceiveReturnInstrument(prm.SlipNo, prm.office.OfficeCode); if (!blnProcessStatus) { //Rollback return(Json(res)); } } //Genereate Invenotry Slip Report var srvInvDoc = ServiceContainer.GetService <IInventoryDocumentHandler>() as IInventoryDocumentHandler; string invslipnolist = string.Join(",", doTbt_InventorySlipForUpdate.Select(d => d.SlipNo)); srvInvDoc.GenerateIVR210FilePath(invslipnolist, null, CommonUtil.dsTransData.dtUserData.EmpNo, CommonUtil.dsTransData.dtOperationData.ProcessDateTime); res.ResultData = new { SlipNo = prm.SlipNo, Message = MessageUtil.GetMessage(MessageUtil.MODULE_INVENTORY, MessageUtil.MessageList.MSG4019) }; scope.Complete(); } return(Json(res)); } catch (Exception ex) { res.AddErrorMessage(ex); return(Json(res)); } }
/// <summary> /// Register Elimination.<br /> /// - Check system suspending.<br /> /// - Check quantity.<br /> /// - Insert inventory slip.<br /> /// - Update account transfer new/second hand/sample instrument.<br /> /// - Insert account stock moving.<br /> /// - Generate report. /// </summary> /// <returns></returns> public ActionResult IVS050_cmdConfirm() { ObjectResultData res = new ObjectResultData(); try { //Check Suspend IVS050_ScreenParameter prm = GetScreenObject <IVS050_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_ELIMINATION, FunctionID.C_FUNC_ID_OPERATE)) { res.AddErrorMessage(MessageUtil.MODULE_COMMON, MessageUtil.MessageList.MSG0053); return(Json(res)); } IInventoryHandler InvH = ServiceContainer.GetService <IInventoryHandler>() as IInventoryHandler; //8.4.1 bool isError = false; foreach (IVS040INST i in prm.ElemInstrument) { doCheckTransferQty Cond = new doCheckTransferQty(); Cond.OfficeCode = prm.office.OfficeCode; Cond.LocationCode = InstrumentLocation.C_INV_LOC_PRE_ELIMINATION; 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; 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.5 doRegisterTransferInstrumentData data = new doRegisterTransferInstrumentData(); data.SlipId = SlipID.C_INV_SLIPID_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_ELIMINATION; InvSlip.SlipIssueDate = CommonUtil.dsTransData.dtOperationData.ProcessDateTime; InvSlip.StockInDate = CommonUtil.dsTransData.dtOperationData.ProcessDateTime; InvSlip.StockOutDate = CommonUtil.dsTransData.dtOperationData.ProcessDateTime; InvSlip.SourceLocationCode = InstrumentLocation.C_INV_LOC_PRE_ELIMINATION; InvSlip.DestinationLocationCode = InstrumentLocation.C_INV_LOC_ELIMINATION; 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; foreach (IVS040INST i in prm.ElemInstrument) { tbt_InventorySlipDetail SlipDetail = new tbt_InventorySlipDetail(); SlipDetail.SlipNo = null; SlipDetail.RunningNo = iRunNo; SlipDetail.InstrumentCode = i.InstrumentCode; SlipDetail.SourceAreaCode = i.AreaCode; SlipDetail.DestinationAreaCode = i.AreaCode; SlipDetail.SourceShelfNo = i.ShelfNo; SlipDetail.DestinationShelfNo = i.ShelfNo; SlipDetail.TransferQty = i.TransferInstrumentQty; SlipDetail.InstrumentAmount = i.TransferAmount; data.lstTbt_InventorySlipDetail.Add(SlipDetail); iRunNo++; } strInventorySlipNo = InvH.RegisterTransferInstrument(data); List <tbt_AccountStockMoving> listInsertAccStockMoving = new List <tbt_AccountStockMoving>(); if (InvH.CheckNewInstrument(strInventorySlipNo) == 1) { //8.7.1 List <doGroupNewInstrument> groupNewInstrument = InvH.GetGroupNewInstrument(strInventorySlipNo); foreach (doGroupNewInstrument i in groupNewInstrument) { i.DestinationLocationCode = InstrumentLocation.C_INV_LOC_ELIMINATION; #region Monthly Price @ 2015 //decimal decMovingAveragePrice = InvH.CalculateMovingAveragePrice(i); decimal 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 bool canUpdate = InvH.UpdateAccountTransferNewInstrument(i, Convert.ToDecimal(decMovingAveragePrice)); if (!canUpdate) { scope.Dispose(); return(Json(res)); } List <tbt_AccountInstock> listInstock = InvH.GetTbt_AccountInStock(i.Instrumentcode, InstrumentLocation.C_INV_LOC_PRE_ELIMINATION, prm.office.OfficeCode); if (listInstock.Count <= 0) { scope.Dispose(); return(Json(res)); } tbt_AccountStockMoving accountStockMoving = new tbt_AccountStockMoving(); accountStockMoving.SlipNo = strInventorySlipNo; accountStockMoving.TransferTypeCode = TransferType.C_INV_TRANSFERTYPE_ELIMINATION; accountStockMoving.SourceAccountStockCode = InventoryAccountCode.C_INV_ACCOUNT_CODE_INSTOCK; accountStockMoving.DestinationAccountStockCode = InventoryAccountCode.C_INV_ACCOUNT_CODE_ELIMINATE; accountStockMoving.SourceLocationCode = InstrumentLocation.C_INV_LOC_PRE_ELIMINATION; accountStockMoving.DestinationLocationCode = InstrumentLocation.C_INV_LOC_ELIMINATION; accountStockMoving.InstrumentCode = i.Instrumentcode; accountStockMoving.InstrumentQty = i.TransferQty; accountStockMoving.InstrumentPrice = listInstock[0].MovingAveragePrice; accountStockMoving.CreateDate = CommonUtil.dsTransData.dtOperationData.ProcessDateTime; accountStockMoving.CreateBy = CommonUtil.dsTransData.dtUserData.EmpNo; accountStockMoving.UpdateDate = CommonUtil.dsTransData.dtOperationData.ProcessDateTime; accountStockMoving.UpdateBy = CommonUtil.dsTransData.dtUserData.EmpNo; listInsertAccStockMoving.Add(accountStockMoving); } } //8.8 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_ELIMINATION; bool canUpdate = InvH.UpdateAccountTransferSecondhandInstrument(i); if (!canUpdate) { scope.Dispose(); return(Json(res)); } decimal sumTransferAmount = 0; foreach (IVS040INST j in prm.ElemInstrument) { if (i.Instrumentcode == j.InstrumentCode && (j.AreaCode == InstrumentArea.C_INV_AREA_SE_RENTAL || j.AreaCode == InstrumentArea.C_INV_AREA_SE_HANDLING_DEMO)) { sumTransferAmount += j.TransferAmount; } } tbt_AccountStockMoving accountStockMoving = new tbt_AccountStockMoving(); accountStockMoving.SlipNo = strInventorySlipNo; accountStockMoving.TransferTypeCode = TransferType.C_INV_TRANSFERTYPE_ELIMINATION; accountStockMoving.SourceAccountStockCode = InventoryAccountCode.C_INV_ACCOUNT_CODE_INSTALLED; accountStockMoving.DestinationAccountStockCode = InventoryAccountCode.C_INV_ACCOUNT_CODE_ELIMINATE; accountStockMoving.SourceLocationCode = InstrumentLocation.C_INV_LOC_PRE_ELIMINATION; accountStockMoving.DestinationLocationCode = InstrumentLocation.C_INV_LOC_ELIMINATION; accountStockMoving.InstrumentCode = i.Instrumentcode; accountStockMoving.InstrumentQty = i.TransferQty; if (sumTransferAmount != 0) { accountStockMoving.InstrumentPrice = sumTransferAmount / i.TransferQty; } else { accountStockMoving.InstrumentPrice = 0; } accountStockMoving.CreateDate = CommonUtil.dsTransData.dtOperationData.ProcessDateTime; accountStockMoving.CreateBy = CommonUtil.dsTransData.dtUserData.EmpNo; accountStockMoving.UpdateDate = CommonUtil.dsTransData.dtOperationData.ProcessDateTime; accountStockMoving.UpdateBy = CommonUtil.dsTransData.dtUserData.EmpNo; listInsertAccStockMoving.Add(accountStockMoving); } } //8.9 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_ELIMINATION; bool canUpdate = InvH.UpdateAccountTransferSampleInstrument(i, null); if (!canUpdate) { scope.Dispose(); return(Json(res)); } tbt_AccountStockMoving accountStockMoving = new tbt_AccountStockMoving(); accountStockMoving.SlipNo = strInventorySlipNo; accountStockMoving.TransferTypeCode = TransferType.C_INV_TRANSFERTYPE_ELIMINATION; accountStockMoving.SourceAccountStockCode = InventoryAccountCode.C_INV_ACCOUNT_CODE_INSTOCK; accountStockMoving.DestinationAccountStockCode = InventoryAccountCode.C_INV_ACCOUNT_CODE_ELIMINATE; accountStockMoving.SourceLocationCode = InstrumentLocation.C_INV_LOC_PRE_ELIMINATION; accountStockMoving.DestinationLocationCode = InstrumentLocation.C_INV_LOC_ELIMINATION; accountStockMoving.InstrumentCode = i.Instrumentcode; accountStockMoving.InstrumentQty = i.TransferQty; accountStockMoving.InstrumentPrice = InventoryConfig.C_INV_DEFAULT_SAMPLE_AMOUNT; accountStockMoving.CreateDate = CommonUtil.dsTransData.dtOperationData.ProcessDateTime; accountStockMoving.CreateBy = CommonUtil.dsTransData.dtUserData.EmpNo; accountStockMoving.UpdateDate = CommonUtil.dsTransData.dtOperationData.ProcessDateTime; accountStockMoving.UpdateBy = CommonUtil.dsTransData.dtUserData.EmpNo; listInsertAccStockMoving.Add(accountStockMoving); } } //8.10 List <tbt_AccountStockMoving> resultInsert = InvH.InsertAccountStockMoving(listInsertAccStockMoving); if (resultInsert.Count <= 0) { scope.Dispose(); return(Json(res)); } scope.Complete(); } //end transaction scope IInventoryDocumentHandler handlerInventoryDocument = ServiceContainer.GetService <IInventoryDocumentHandler>() as IInventoryDocumentHandler; string reportPath = handlerInventoryDocument.GenerateIVR030FilePath(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)); } }