/// <summary> /// 服务端检查 /// </summary> /// <param name="paramModel">UIModel</param> /// <returns></returns> private bool ServerCheck(StockOutBillManagerUIModel paramModel, SkyCarBindingList <StockOutBillManagerDetailUIModel, MDLPIS_StockOutBillDetail> paramDetailList) { return(true); }
/// <summary> /// 保存 /// </summary> /// <param name="paramHead">单头UIModel</param> /// <param name="paramDetailList">明细UIModel列表</param> /// <returns></returns> public bool SaveDetailDS(StockOutBillManagerUIModel paramHead, SkyCarBindingList <StockOutBillManagerDetailUIModel, MDLPIS_StockOutBillDetail> paramDetailList) { var funcName = "SaveDetailDS"; LogHelper.WriteBussLogStart(BussID, LoginInfoDAX.UserName, funcName, "", "", null); //服务端检查 if (!ServerCheck(paramHead, paramDetailList)) { LogHelper.WriteBussLogEndNG(BussID, LoginInfoDAX.UserName, funcName, ResultMsg, "", null); return(false); } #region 准备数据 #region 单头 //将UIModel转为TBModel var argsHead = paramHead.ToTBModelForSaveAndDelete <MDLPIS_StockOutBill>(); //判断主键是否被赋值 if (string.IsNullOrEmpty(paramHead.SOB_ID)) { argsHead.SOB_ID = Guid.NewGuid().ToString(); //单号 argsHead.SOB_No = BLLCom.GetCoeusDocumentNo(DocumentTypeEnums.Code.SOB); argsHead.SOB_CreatedBy = LoginInfoDAX.UserName; argsHead.SOB_CreatedTime = BLLCom.GetCurStdDatetime(); } argsHead.SOB_UpdatedBy = LoginInfoDAX.UserName; argsHead.SOB_UpdatedTime = BLLCom.GetCurStdDatetime(); #endregion #region 明细 //添加的明细 if (paramDetailList != null && paramDetailList.InsertList != null && paramDetailList.InsertList.Count > 0) { foreach (var loopDetailItem in paramDetailList.InsertList) { loopDetailItem.SOBD_SOB_ID = argsHead.SOB_ID ?? argsHead.WHERE_SOB_ID; loopDetailItem.SOBD_SOB_No = argsHead.SOB_No; loopDetailItem.SOBD_CreatedBy = LoginInfoDAX.UserName; loopDetailItem.SOBD_CreatedTime = BLLCom.GetCurStdDatetime(); loopDetailItem.SOBD_UpdatedBy = LoginInfoDAX.UserName; loopDetailItem.SOBD_UpdatedTime = BLLCom.GetCurStdDatetime(); } } #endregion #endregion #region 带事务的保存 try { DBManager.BeginTransaction(DBCONFIG.Coeus); #region 保存单头 //执行保存 var saveStockOutBillResult = _bll.Save(argsHead, argsHead.SOB_ID); if (!saveStockOutBillResult) { DBManager.RollBackTransaction(DBCONFIG.Coeus); ResultMsg = MsgHelp.GetMsg(MsgCode.E_0010, new object[] { SystemActionEnum.Name.SAVE + SystemTableEnums.Name.PIS_StockOutBill }); LogHelper.WriteBussLogEndNG(BussID, LoginInfoDAX.UserName, funcName, ResultMsg, "", null); return(false); } #endregion #region 保存明细 //执行保存 var saveStockOutDetailResult = _bll.UnitySave(paramDetailList); if (!saveStockOutDetailResult) { DBManager.RollBackTransaction(DBCONFIG.Coeus); ResultMsg = MsgHelp.GetMsg(MsgCode.E_0010, new object[] { SystemActionEnum.Name.SAVE + SystemTableEnums.Name.PIS_StockOutBillDetail }); LogHelper.WriteBussLogEndNG(BussID, LoginInfoDAX.UserName, funcName, ResultMsg, "", null); return(false); } #endregion DBManager.CommitTransaction(DBCONFIG.Coeus); } catch (Exception ex) { DBManager.RollBackTransaction(DBCONFIG.Coeus); ResultMsg = MsgHelp.GetMsg(MsgCode.E_0018, new object[] { SystemActionEnum.Name.SAVE, ex.Message }); LogHelper.WriteBussLogEndNG(BussID, LoginInfoDAX.UserName, funcName, ex.Message, "", null); return(false); } #endregion //将最新数据回写给DetailDS CopyModel(argsHead, paramHead); //更新明细版本号 if (paramDetailList != null) { if (paramDetailList.InsertList != null) { foreach (var loopInsertDetail in paramDetailList.InsertList) { //新增时版本号为1 loopInsertDetail.SOBD_VersionNo = 1; } } foreach (var loopUpdateDetail in paramDetailList.UpdateList) { //更新时版本号加1 loopUpdateDetail.SOBD_VersionNo = loopUpdateDetail.SOBD_VersionNo + 1; } } return(true); }
/// <summary> /// 反审核 /// </summary> /// <param name="paramHead">UIModel</param> /// <param name="paramDetailList">出库单明细列表</param> /// <returns></returns> public bool UnApproveDetailDS(StockOutBillManagerUIModel paramHead, SkyCarBindingList <StockOutBillManagerDetailUIModel, MDLPIS_StockOutBillDetail> paramDetailList) { var funcName = "UnApproveDetailDS"; LogHelper.WriteBussLogStart(BussID, LoginInfoDAX.UserName, funcName, "", "", null); #region 验证 if (paramHead == null || string.IsNullOrEmpty(paramHead.SOB_ID) || string.IsNullOrEmpty(paramHead.SOB_No)) { //没有获取到出库单,反审核失败 ResultMsg = MsgHelp.GetMsg(MsgCode.W_0024, new object[] { SystemTableEnums.Name.PIS_StockOutBill, SystemActionEnum.Name.UNAPPROVE }); LogHelper.WriteBussLogEndNG(BussID, LoginInfoDAX.UserName, funcName, ResultMsg, "", null); return(false); } #endregion #region 准备数据 #region 变量定义 //待更新的[出库单] var updateStockOutBill = paramHead.ToTBModelForSaveAndDelete <MDLPIS_StockOutBill>(); //待删除的[应收单] MDLFM_AccountReceivableBill deleteAccountReceivableBill = new MDLFM_AccountReceivableBill(); //待删除的[应收单明细]列表 List <MDLFM_AccountReceivableBillDetail> deleteAccountReceivableBillDetailList = new List <MDLFM_AccountReceivableBillDetail>(); //待新增的[库存异动日志]列表 List <MDLPIS_InventoryTransLog> newInventoryTransLogList = new List <MDLPIS_InventoryTransLog>(); //待更新的[库存]列表 List <MDLPIS_Inventory> updateInventoryList = new List <MDLPIS_Inventory>(); #endregion #region 更新[出库单] //将出库单[审核状态]更新为[待审核],[单据状态]更新为[已生成] updateStockOutBill.SOB_VersionNo++; updateStockOutBill.SOB_ApprovalStatusCode = ApprovalStatusEnum.Code.DSH; updateStockOutBill.SOB_ApprovalStatusName = ApprovalStatusEnum.Name.DSH; updateStockOutBill.SOB_UpdatedBy = LoginInfoDAX.UserName; updateStockOutBill.SOB_UpdatedTime = BLLCom.GetCurStdDatetime(); //updateStockOutBill.SOB_StatusCode = StockOutBillStatusEnum.Code.YSC; //updateStockOutBill.SOB_StatusName = StockOutBillStatusEnum.Name.YSC; #endregion #region 获取待删除的[应收单] _bll.QueryForObject <MDLFM_AccountReceivableBill, MDLFM_AccountReceivableBill>(new MDLFM_AccountReceivableBill { WHERE_ARB_SrcBillNo = updateStockOutBill.SOB_No, WHERE_ARB_IsValid = true }, deleteAccountReceivableBill); deleteAccountReceivableBill.WHERE_ARB_ID = deleteAccountReceivableBill.ARB_ID; #endregion #region 获取待删除的[应收单明细]列表 if (!string.IsNullOrEmpty(deleteAccountReceivableBill.ARB_ID)) { _bll.QueryForList <MDLFM_AccountReceivableBillDetail, MDLFM_AccountReceivableBillDetail>(new MDLFM_AccountReceivableBillDetail { WHERE_ARBD_ARB_ID = deleteAccountReceivableBill.ARB_ID, WHERE_ARBD_SrcBillNo = updateStockOutBill.SOB_No, WHERE_ARBD_IsValid = true }, deleteAccountReceivableBillDetailList); } foreach (var loopAccountReceivableBillDetail in deleteAccountReceivableBillDetailList) { if (string.IsNullOrEmpty(loopAccountReceivableBillDetail.ARBD_ID)) { continue; } loopAccountReceivableBillDetail.WHERE_ARBD_ID = loopAccountReceivableBillDetail.ARBD_ID; } #endregion #region 获取待更新的[库存]列表,生成[库存异动日志] foreach (var loopDetail in paramDetailList) { //待更新的[库存] MDLPIS_Inventory updateInventory = new MDLPIS_Inventory(); _bll.QueryForObject <MDLPIS_Inventory, MDLPIS_Inventory>(new MDLPIS_Inventory { WHERE_INV_Org_ID = updateStockOutBill.SOB_Org_ID, WHERE_INV_WH_ID = loopDetail.SOBD_WH_ID, WHERE_INV_WHB_ID = loopDetail.SOBD_WHB_ID, WHERE_INV_Barcode = loopDetail.SOBD_Barcode, WHERE_INV_BatchNo = loopDetail.SOBD_BatchNo, WHERE_INV_IsValid = true }, updateInventory); if (!string.IsNullOrEmpty(updateInventory.INV_ID) && !string.IsNullOrEmpty(updateInventory.INV_Barcode) && !string.IsNullOrEmpty(updateInventory.INV_BatchNo)) { //[反审核]时,恢复[审核]时出库的配件数量 updateInventory.INV_Qty += loopDetail.SOBD_Qty; updateInventory.INV_UpdatedBy = LoginInfoDAX.UserName; updateInventory.INV_UpdatedTime = BLLCom.GetCurStdDatetime(); updateInventory.WHERE_INV_ID = updateInventory.INV_ID; updateInventory.WHERE_INV_VersionNo = updateInventory.INV_VersionNo; } updateInventoryList.Add(updateInventory); //生成[库存异动日志] newInventoryTransLogList.Add(GenerateInventoryTransLogOfUnApprove(updateStockOutBill, loopDetail, updateInventory)); } #endregion #endregion #region 带事务的保存和删除 try { DBManager.BeginTransaction(DBCONFIG.Coeus); #region 更新[出库单] bool updateStockOutBillResult = _bll.Save(updateStockOutBill); if (!updateStockOutBillResult) { DBManager.RollBackTransaction(DBCONFIG.Coeus); ResultMsg = MsgHelp.GetMsg(MsgCode.E_0010, new object[] { SystemActionEnum.Name.SAVE + SystemTableEnums.Name.PIS_StockOutBill }); LogHelper.WriteBussLogEndNG(BussID, LoginInfoDAX.UserName, funcName, ResultMsg, "", null); return(false); } #endregion #region 除[应收单] if (!string.IsNullOrEmpty(deleteAccountReceivableBill.ARB_ID)) { var deleteAccountReceivableBillResult = _bll.Delete <MDLFM_AccountReceivableBill>(deleteAccountReceivableBill); if (!deleteAccountReceivableBillResult) { DBManager.RollBackTransaction(DBCONFIG.Coeus); ResultMsg = MsgHelp.GetMsg(MsgCode.E_0010, new object[] { SystemActionEnum.Name.DELETE + SystemTableEnums.Name.FM_AccountReceivableBill }); LogHelper.WriteBussLogEndNG(BussID, LoginInfoDAX.UserName, funcName, ResultMsg, "", null); return(false); } } #endregion #region 除[应收单明细] if (deleteAccountReceivableBillDetailList.Count > 0) { var deleteAccountReceivableBillDetailResult = _bll.DeleteByList <MDLFM_AccountReceivableBillDetail, MDLFM_AccountReceivableBillDetail>(deleteAccountReceivableBillDetailList); if (!deleteAccountReceivableBillDetailResult) { DBManager.RollBackTransaction(DBCONFIG.Coeus); ResultMsg = MsgHelp.GetMsg(MsgCode.E_0010, new object[] { SystemActionEnum.Name.DELETE + SystemTableEnums.Name.FM_AccountReceivableBillDetail }); LogHelper.WriteBussLogEndNG(BussID, LoginInfoDAX.UserName, funcName, ResultMsg, "", null); return(false); } } #endregion #region 更新[库存] foreach (var loopInventory in updateInventoryList) { bool saveInventoryResult = _bll.Save(loopInventory); if (!saveInventoryResult) { DBManager.RollBackTransaction(DBCONFIG.Coeus); ResultMsg = MsgHelp.GetMsg(MsgCode.E_0010, new object[] { SystemActionEnum.Name.SAVE + SystemTableEnums.Name.PIS_Inventory }); LogHelper.WriteBussLogEndNG(BussID, LoginInfoDAX.UserName, funcName, ResultMsg, "", null); return(false); } } #endregion #region 新增[库存异动日志] if (newInventoryTransLogList.Count > 0) { bool insertInventoryTransLogResult = _bll.InsertByList <MDLPIS_InventoryTransLog, MDLPIS_InventoryTransLog>(newInventoryTransLogList); if (!insertInventoryTransLogResult) { DBManager.RollBackTransaction(DBCONFIG.Coeus); ResultMsg = MsgHelp.GetMsg(MsgCode.E_0010, new object[] { SystemActionEnum.Name.NEW + SystemTableEnums.Name.PIS_InventoryTransLog }); LogHelper.WriteBussLogEndNG(BussID, LoginInfoDAX.UserName, funcName, ResultMsg, "", null); return(false); } } #endregion DBManager.CommitTransaction(DBCONFIG.Coeus); } catch (Exception ex) { DBManager.RollBackTransaction(DBCONFIG.Coeus); ResultMsg = MsgHelp.GetMsg(MsgCode.E_0018, new object[] { SystemActionEnum.Name.UNAPPROVE, ex.Message }); LogHelper.WriteBussLogEndNG(BussID, LoginInfoDAX.UserName, funcName, ex.Message, "", null); return(false); } #endregion //将最新数据回写给DetailDS CopyModel(updateStockOutBill, paramHead); return(true); }
/// <summary> /// 审核 /// </summary> /// <param name="paramHead">UIModel</param> /// <param name="paramDetailList">出库单明细列表</param> /// <returns></returns> public bool ApproveDetailDS(StockOutBillManagerUIModel paramHead, SkyCarBindingList <StockOutBillManagerDetailUIModel, MDLPIS_StockOutBillDetail> paramDetailList) { var funcName = "ApproveDetailDS"; LogHelper.WriteBussLogStart(BussID, LoginInfoDAX.UserName, funcName, "", "", null); #region 验证 if (paramHead == null || string.IsNullOrEmpty(paramHead.SOB_ID) || string.IsNullOrEmpty(paramHead.SOB_No)) { //没有获取到出库单,审核失败 ResultMsg = MsgHelp.GetMsg(MsgCode.W_0024, new object[] { SystemTableEnums.Name.PIS_StockOutBill, SystemActionEnum.Name.APPROVE }); LogHelper.WriteBussLogEndNG(BussID, LoginInfoDAX.UserName, funcName, ResultMsg, "", null); return(false); } #endregion #region 准备数据 #region 变量定义 //待更新的出库单 MDLPIS_StockOutBill updateStockOutBill = paramHead.ToTBModelForSaveAndDelete <MDLPIS_StockOutBill>(); //待新增的[应收单] MDLFM_AccountReceivableBill newAccountReceivableBill = new MDLFM_AccountReceivableBill(); //待新增的[应收单明细]列表 List <MDLFM_AccountReceivableBillDetail> newAccountReceivableBillDetailList = new List <MDLFM_AccountReceivableBillDetail>(); //待更新的[库存]列表 List <MDLPIS_Inventory> updateInventoryList = new List <MDLPIS_Inventory>(); //待新增的[库存异动日志]列表 List <MDLPIS_InventoryTransLog> newInventoryTransLogList = new List <MDLPIS_InventoryTransLog>(); #endregion //计算出库金额 decimal totalStockOutAmount = CalculateStockOutAmount(updateStockOutBill, paramDetailList); #region 创建[应收单]的场合 if (updateStockOutBill.SOB_SourceTypeName == StockOutBillSourceTypeEnum.Name.SGCJ) { //应收单 //TODO newAccountReceivableBill.ARB_ID = Guid.NewGuid().ToString(); newAccountReceivableBill.ARB_No = BLLCom.GetCoeusDocumentNo(DocumentTypeEnums.Code.APB); newAccountReceivableBill.ARB_BillDirectCode = BillDirectionEnum.Code.MINUS; newAccountReceivableBill.ARB_BillDirectName = BillDirectionEnum.Name.MINUS; //newAccountReceivableBill.ARB_SourceTypeCode = AccountReceivableBillSourceTypeEnum.Code.; //newAccountReceivableBill.ARB_SourceTypeName = AccountReceivableBillSourceTypeEnum.Name.CKYF; newAccountReceivableBill.ARB_SrcBillNo = updateStockOutBill.SOB_No; newAccountReceivableBill.ARB_Org_ID = LoginInfoDAX.OrgID; newAccountReceivableBill.ARB_Org_Name = LoginInfoDAX.OrgShortName; //newAccountReceivableBill.ARB_PayObjectTypeCode = AmountTransObjectTypeEnum.Code; //newAccountReceivableBill.ARB_PayObjectTypeName = AmountTransObjectTypeEnum.Name.AUTOPARTSSUPPLIER; newAccountReceivableBill.ARB_PayObjectID = paramHead.SOB_SUPP_ID; newAccountReceivableBill.ARB_PayObjectName = paramHead.SOB_SUPP_Name; newAccountReceivableBill.ARB_AccountReceivableAmount = totalStockOutAmount; newAccountReceivableBill.ARB_ReceivedAmount = 0; newAccountReceivableBill.ARB_UnReceiveAmount = totalStockOutAmount; newAccountReceivableBill.ARB_BusinessStatusCode = AccountReceivableBillStatusEnum.Code.ZXZ; newAccountReceivableBill.ARB_BusinessStatusName = AccountReceivableBillStatusEnum.Name.ZXZ; newAccountReceivableBill.ARB_ApprovalStatusCode = ApprovalStatusEnum.Code.YSH; newAccountReceivableBill.ARB_ApprovalStatusName = ApprovalStatusEnum.Name.YSH; newAccountReceivableBill.ARB_IsValid = true; newAccountReceivableBill.ARB_CreatedBy = LoginInfoDAX.UserName; newAccountReceivableBill.ARB_CreatedTime = BLLCom.GetCurStdDatetime(); newAccountReceivableBill.ARB_UpdatedBy = LoginInfoDAX.UserName; newAccountReceivableBill.ARB_UpdatedTime = BLLCom.GetCurStdDatetime(); } #endregion #region 更新[出库单] //将出库单审核状态更新为[已审核],单据状态更新为[已完成] updateStockOutBill.SOB_VersionNo++; updateStockOutBill.SOB_ApprovalStatusCode = ApprovalStatusEnum.Code.YSH; updateStockOutBill.SOB_ApprovalStatusName = ApprovalStatusEnum.Name.YSH; updateStockOutBill.SOB_UpdatedBy = LoginInfoDAX.UserName; updateStockOutBill.SOB_UpdatedTime = BLLCom.GetCurStdDatetime(); //updateStockOutBill.SOB_StatusCode = StockOutBillStatusEnum.Code.YWC; //updateStockOutBill.SOB_StatusName = StockOutBillStatusEnum.Name.YWC; #endregion #region 遍历[出库单明细]列表,创建[应收单明细]和[应收单明细],创建或更新[库存],创建[库存异动日志] foreach (var loopStockOutBillDetail in paramDetailList) { if (string.IsNullOrEmpty(loopStockOutBillDetail.SOBD_Barcode) || string.IsNullOrEmpty(loopStockOutBillDetail.SOBD_BatchNo)) { continue; } if (updateStockOutBill.SOB_SourceTypeName == StockOutBillSourceTypeEnum.Name.THCK) { //出库明细 loopStockOutBillDetail.WHERE_SOBD_ID = loopStockOutBillDetail.SOBD_ID; loopStockOutBillDetail.WHERE_SOBD_VersionNo = loopStockOutBillDetail.SOBD_VersionNo; #region 应收单明细 MDLFM_AccountReceivableBillDetail newAccountReceivableBillDetail = new MDLFM_AccountReceivableBillDetail { ARBD_ID = Guid.NewGuid().ToString(), ARBD_ARB_ID = newAccountReceivableBill.ARB_ID, ARBD_IsMinusDetail = false, ARBD_SrcBillNo = updateStockOutBill.SOB_No, ARBD_SrcBillDetailID = loopStockOutBillDetail.SOBD_ID, ARBD_Org_ID = newAccountReceivableBill.ARB_Org_ID, ARBD_Org_Name = newAccountReceivableBill.ARB_Org_Name, ARBD_AccountReceivableAmount = loopStockOutBillDetail.SOBD_Amount, ARBD_ReceivedAmount = 0, ARBD_UnReceiveAmount = loopStockOutBillDetail.SOBD_Amount, ARBD_BusinessStatusCode = newAccountReceivableBill.ARB_BusinessStatusCode, ARBD_BusinessStatusName = newAccountReceivableBill.ARB_BusinessStatusName, ARBD_ApprovalStatusCode = newAccountReceivableBill.ARB_ApprovalStatusCode, ARBD_ApprovalStatusName = newAccountReceivableBill.ARB_ApprovalStatusName, ARBD_IsValid = true, ARBD_CreatedBy = LoginInfoDAX.UserName, ARBD_CreatedTime = BLLCom.GetCurStdDatetime(), ARBD_UpdatedBy = LoginInfoDAX.UserName, ARBD_UpdatedTime = BLLCom.GetCurStdDatetime() }; newAccountReceivableBillDetailList.Add(newAccountReceivableBillDetail); #endregion #region 库存和库存异动日志 //在[出库单明细]列表中第一次出现的配件[库存]信息 MDLPIS_Inventory inventoryExists = null; foreach (var loopInventory in updateInventoryList) { if (loopInventory.INV_Barcode == loopStockOutBillDetail.SOBD_Barcode && loopInventory.INV_BatchNo == loopStockOutBillDetail.SOBD_BatchNo) { inventoryExists = loopInventory; break; } } if (inventoryExists != null) { if (inventoryExists.INV_Qty < loopStockOutBillDetail.SOBD_Qty) { //配件:loopStockOutBillDetail.SOBD_Name(条形码:loopStockOutBillDetail.SOBD_Barcode)的库存不足,审核失败 ResultMsg = MsgHelp.GetMsg(MsgCode.E_0030, new object[] { loopStockOutBillDetail.SOBD_Name, loopStockOutBillDetail.SOBD_Barcode, MsgParam.SHORTAGE, SystemActionEnum.Name.APPROVE }); LogHelper.WriteBussLogEndNG(BussID, LoginInfoDAX.UserName, funcName, ResultMsg, "", null); return(false); } //[出库单明细]列表中已遍历过该配件,累减数量 inventoryExists.INV_Qty -= loopStockOutBillDetail.SOBD_Qty; //生成[库存异动日志] newInventoryTransLogList.Add(GenerateInventoryTransLogOfApprove(updateStockOutBill, loopStockOutBillDetail, inventoryExists)); } else { //[出库单明细]列表中第一次出现该配件 //查询该配件是否在[库存]中存在 MDLPIS_Inventory resultInventory = new MDLPIS_Inventory(); _bll.QueryForObject <MDLPIS_Inventory, MDLPIS_Inventory>(new MDLPIS_Inventory { WHERE_INV_Org_ID = updateStockOutBill.SOB_Org_ID, WHERE_INV_Barcode = loopStockOutBillDetail.SOBD_Barcode, WHERE_INV_BatchNo = loopStockOutBillDetail.SOBD_BatchNo, WHERE_INV_WH_ID = loopStockOutBillDetail.SOBD_WH_ID, WHERE_INV_IsValid = true }, resultInventory); //[库存]中不存在该配件 if (string.IsNullOrEmpty(resultInventory.INV_ID)) { //配件:loopStockOutBillDetail.SOBD_Name(条形码:loopStockOutBillDetail.SOBD_Barcode)的库存不存在,审核失败 ResultMsg = MsgHelp.GetMsg(MsgCode.E_0030, new object[] { loopStockOutBillDetail.SOBD_Name, loopStockOutBillDetail.SOBD_Barcode, MsgParam.NOTEXIST, SystemActionEnum.Name.APPROVE }); LogHelper.WriteBussLogEndNG(BussID, LoginInfoDAX.UserName, funcName, ResultMsg, "", null); return(false); } if (resultInventory.INV_Qty < loopStockOutBillDetail.SOBD_Qty) { //配件:loopStockOutBillDetail.SOBD_Name(条形码:loopStockOutBillDetail.SOBD_Barcode)的库存不足,审核失败 ResultMsg = MsgHelp.GetMsg(MsgCode.E_0030, new object[] { loopStockOutBillDetail.SOBD_Name, loopStockOutBillDetail.SOBD_Barcode, MsgParam.SHORTAGE, SystemActionEnum.Name.APPROVE }); LogHelper.WriteBussLogEndNG(BussID, LoginInfoDAX.UserName, funcName, ResultMsg, "", null); return(false); } //[库存]中存在该配件 //更新[库存]中该配件的数量 resultInventory.INV_Qty -= loopStockOutBillDetail.SOBD_Qty; resultInventory.INV_UpdatedBy = LoginInfoDAX.UserName; resultInventory.INV_UpdatedTime = BLLCom.GetCurStdDatetime(); resultInventory.WHERE_INV_ID = resultInventory.INV_ID; resultInventory.WHERE_INV_VersionNo = resultInventory.INV_VersionNo; updateInventoryList.Add(resultInventory); //生成[库存异动日志] newInventoryTransLogList.Add(GenerateInventoryTransLogOfApprove(updateStockOutBill, loopStockOutBillDetail, resultInventory)); } #endregion } } #endregion #endregion #region 带事务的新增和保存 try { DBManager.BeginTransaction(DBCONFIG.Coeus); #region 新增[应收单] if (!string.IsNullOrEmpty(newAccountReceivableBill.ARB_ID)) { bool insertAccountReceivableBillResult = _bll.Insert(newAccountReceivableBill); if (!insertAccountReceivableBillResult) { DBManager.RollBackTransaction(DBCONFIG.Coeus); ResultMsg = MsgHelp.GetMsg(MsgCode.E_0010, new object[] { SystemActionEnum.Name.NEW + SystemTableEnums.Name.FM_AccountReceivableBill }); LogHelper.WriteBussLogEndNG(BussID, LoginInfoDAX.UserName, funcName, ResultMsg, "", null); return(false); } } #endregion #region 新增[应收单明细] if (newAccountReceivableBillDetailList.Count > 0) { bool insertAccountReceivableBillDetailResult = _bll.InsertByList <MDLFM_AccountReceivableBillDetail, MDLFM_AccountReceivableBillDetail>(newAccountReceivableBillDetailList); if (!insertAccountReceivableBillDetailResult) { DBManager.RollBackTransaction(DBCONFIG.Coeus); ResultMsg = MsgHelp.GetMsg(MsgCode.E_0010, new object[] { SystemActionEnum.Name.NEW + SystemTableEnums.Name.FM_AccountReceivableBillDetail }); LogHelper.WriteBussLogEndNG(BussID, LoginInfoDAX.UserName, funcName, ResultMsg, "", null); return(false); } } #endregion #region 保存[出库单] bool updateStockOutBillResult = _bll.Save(updateStockOutBill); if (!updateStockOutBillResult) { DBManager.RollBackTransaction(DBCONFIG.Coeus); ResultMsg = MsgHelp.GetMsg(MsgCode.E_0010, new object[] { MsgParam.UPDATE + SystemTableEnums.Name.PIS_StockOutBill }); LogHelper.WriteBussLogEndNG(BussID, LoginInfoDAX.UserName, funcName, ResultMsg, "", null); return(false); } #endregion #region 保存[出库单明细] var updateDetailList = new List <MDLPIS_StockOutBillDetail>(); //将当前DetailGridDS转换为指定类型的TBModelList paramDetailList.ToTBModelListForUpdateAndDelete <MDLPIS_StockOutBillDetail>(updateDetailList); foreach (var loopStockoutBillDetail in updateDetailList) { bool saveStockOutBillDetailResult = _bll.Save(loopStockoutBillDetail); if (!saveStockOutBillDetailResult) { DBManager.RollBackTransaction(DBCONFIG.Coeus); ResultMsg = MsgHelp.GetMsg(MsgCode.E_0010, new object[] { SystemActionEnum.Name.SAVE + SystemTableEnums.Name.PIS_StockOutBillDetail }); LogHelper.WriteBussLogEndNG(BussID, LoginInfoDAX.UserName, funcName, ResultMsg, "", null); return(false); } } #endregion #region 更新[库存] foreach (var loopInventory in updateInventoryList) { bool saveInventoryResult = _bll.Save(loopInventory); if (!saveInventoryResult) { DBManager.RollBackTransaction(DBCONFIG.Coeus); ResultMsg = MsgHelp.GetMsg(MsgCode.E_0010, new object[] { SystemActionEnum.Name.SAVE + SystemTableEnums.Name.PIS_Inventory }); LogHelper.WriteBussLogEndNG(BussID, LoginInfoDAX.UserName, funcName, ResultMsg, "", null); return(false); } } #endregion #region 新增[库存异动日志] if (newInventoryTransLogList.Count > 0) { bool insertInventoryTransLogResult = _bll.InsertByList <MDLPIS_InventoryTransLog, MDLPIS_InventoryTransLog>(newInventoryTransLogList); if (!insertInventoryTransLogResult) { DBManager.RollBackTransaction(DBCONFIG.Coeus); ResultMsg = MsgHelp.GetMsg(MsgCode.E_0010, new object[] { SystemActionEnum.Name.NEW + SystemTableEnums.Name.PIS_InventoryTransLog }); LogHelper.WriteBussLogEndNG(BussID, LoginInfoDAX.UserName, funcName, ResultMsg, "", null); return(false); } } #endregion DBManager.CommitTransaction(DBCONFIG.Coeus); } catch (Exception ex) { DBManager.RollBackTransaction(DBCONFIG.Coeus); ResultMsg = MsgHelp.GetMsg(MsgCode.E_0018, new object[] { SystemActionEnum.Name.APPROVE, ex.Message }); LogHelper.WriteBussLogEndNG(BussID, LoginInfoDAX.UserName, funcName, ResultMsg, "", null); return(false); } #endregion //将最新数据回写给DetailDS CopyModel(updateStockOutBill, paramHead); //更新明细版本号 foreach (var loopInsertDetail in paramDetailList.InsertList) { //新增时版本号为1 loopInsertDetail.SOBD_VersionNo = 1; } foreach (var loopUpdateDetail in paramDetailList.UpdateList) { //更新时版本号加1 loopUpdateDetail.SOBD_VersionNo = loopUpdateDetail.SOBD_VersionNo + 1; } return(true); }