/// <summary> /// 生成选中项的值和描述 /// </summary> void GenerateSelectedValueAndText() { SelectedGridList = new List <MDLSD_SalesOrder>(); foreach (var loopSourceItem in ListGridDS) { if (!loopSourceItem.IsChecked) { continue; } MDLSD_SalesOrder argsSalesOrder = new MDLSD_SalesOrder { SO_ID = loopSourceItem.SO_ID, SO_No = loopSourceItem.SO_No, SO_Org_ID = loopSourceItem.SO_Org_ID, SO_SourceTypeCode = loopSourceItem.SO_SourceTypeCode, SO_SourceTypeName = loopSourceItem.SO_SourceTypeName, SO_SourceNo = loopSourceItem.SO_SourceNo, SO_CustomerTypeCode = loopSourceItem.SO_CustomerTypeCode, SO_CustomerTypeName = loopSourceItem.SO_CustomerTypeName, SO_CustomerID = loopSourceItem.SO_CustomerID, SO_CustomerName = loopSourceItem.SO_CustomerName, SO_IsPriceIncludeTax = loopSourceItem.SO_IsPriceIncludeTax, SO_TaxRate = loopSourceItem.SO_TaxRate, SO_TotalTax = loopSourceItem.SO_TotalTax, SO_TotalAmount = loopSourceItem.SO_TotalAmount, SO_TotalNetAmount = loopSourceItem.SO_TotalNetAmount, SO_StatusCode = loopSourceItem.SO_StatusCode, SO_StatusName = loopSourceItem.SO_StatusName, SO_ApprovalStatusCode = loopSourceItem.SO_ApprovalStatusCode, SO_ApprovalStatusName = loopSourceItem.SO_ApprovalStatusName, SO_SalesByID = loopSourceItem.SO_SalesByID, SO_SalesByName = loopSourceItem.SO_SalesByName, SO_Remark = loopSourceItem.SO_Remark, SO_IsValid = loopSourceItem.SO_IsValid, SO_CreatedBy = loopSourceItem.SO_CreatedBy, SO_CreatedTime = loopSourceItem.SO_CreatedTime, SO_UpdatedBy = loopSourceItem.SO_UpdatedBy, SO_UpdatedTime = loopSourceItem.SO_UpdatedTime, SO_VersionNo = loopSourceItem.SO_VersionNo }; SelectedGridList.Add(argsSalesOrder); } }
/// <summary> /// 审核 /// </summary> /// <param name="paramHead">销售订单</param> /// <param name="paramDetailList">销售订单明细列表</param> /// <param name="paramStockOutDetailList">出库明细列表</param> /// <param name="paramReturnStockInDetailList">退货入库明细列表</param> /// <param name="paramIsHasInventory">是否启用进销存模块</param> /// <returns></returns> public bool ApproveDetailDS(SalesReturnOrderManagerUIModel paramHead, SkyCarBindingList <SalesOrderDetailUIModel, MDLSD_SalesOrderDetail> paramDetailList, List <SalesStockOutDetailUIModel> paramStockOutDetailList, List <ReturnStockInDetailUIModel> paramReturnStockInDetailList, bool paramIsHasInventory) { var funcName = "ApproveDetailDS"; LogHelper.WriteBussLogStart(BussID, LoginInfoDAX.UserName, funcName, "", "", null); #region 验证 if (paramHead == null || string.IsNullOrEmpty(paramHead.SO_ID) || string.IsNullOrEmpty(paramHead.SO_No)) { //没有获取到销售订单,审核失败 ResultMsg = MsgHelp.GetMsg(MsgCode.W_0024, new object[] { SystemTableEnums.Name.SD_SalesOrder, SystemActionEnum.Name.APPROVE }); LogHelper.WriteBussLogEndNG(BussID, LoginInfoDAX.UserName, funcName, ResultMsg, "", null); return(false); } #endregion #region 准备数据 #region 变量定义 //待更新的[销售订单] MDLSD_SalesOrder updateSalesOrder = paramHead.ToTBModelForSaveAndDelete <MDLSD_SalesOrder>(); //待新增的退货时的[应收单] MDLFM_AccountReceivableBill newRejectAccountReceivableBill = new MDLFM_AccountReceivableBill(); //待新增的退货时的[应收单明细]列表 List <MDLFM_AccountReceivableBillDetail> newRejectReceivableBillDetailList = new List <MDLFM_AccountReceivableBillDetail>(); //待新增的退货入库[入库单] MDLPIS_StockInBill newReturnStockInBill = new MDLPIS_StockInBill(); //待新增的退货入库[入库单明细]列表 List <MDLPIS_StockInDetail> newReturnStockInDetailList = new List <MDLPIS_StockInDetail>(); //待更新的[库存]列表 List <MDLPIS_Inventory> updateStockInInventoryList = new List <MDLPIS_Inventory>(); //待新增的[库存异动日志]列表 List <MDLPIS_InventoryTransLog> newStockInInventoryTransLogList = new List <MDLPIS_InventoryTransLog>(); #endregion #region 更新销售订单 //更新[销售订单]审核状态为[已审核],单据状态根据[来源类型]决定 updateSalesOrder.SO_VersionNo++; updateSalesOrder.SO_ApprovalStatusCode = ApprovalStatusEnum.Code.YSH; updateSalesOrder.SO_ApprovalStatusName = ApprovalStatusEnum.Name.YSH; updateSalesOrder.SO_UpdatedBy = LoginInfoDAX.UserName; updateSalesOrder.SO_UpdatedTime = BLLCom.GetCurStdDatetime(); #endregion #region [销售订单].[来源类型]为{手工创建退货}、{在线销售退货}、{主动销售退货}的场合 //销售退货的场合,更新[销售订单].[单据状态]为[交易成功] updateSalesOrder.SO_StatusCode = SalesOrderStatusEnum.Code.JYCG; updateSalesOrder.SO_StatusName = SalesOrderStatusEnum.Name.JYCG; #region 创建退货入库的[入库单] //新增[来源类型]为[销售退货],[业务状态]为{已完成},[审核状态]为{已审核}的[入库单] newReturnStockInBill.SIB_ID = Guid.NewGuid().ToString(); newReturnStockInBill.SIB_No = BLLCom.GetCoeusDocumentNo(DocumentTypeEnums.Code.SIB); newReturnStockInBill.SIB_SourceTypeCode = StockInBillSourceTypeEnum.Code.SSTH; newReturnStockInBill.SIB_SourceTypeName = StockInBillSourceTypeEnum.Name.SSTH; newReturnStockInBill.SIB_SourceNo = updateSalesOrder.SO_No; newReturnStockInBill.SIB_Org_ID = updateSalesOrder.SO_Org_ID; newReturnStockInBill.SIB_StatusName = StockInBillStatusEnum.Name.YWC; newReturnStockInBill.SIB_StatusCode = StockInBillStatusEnum.Code.YWC; newReturnStockInBill.SIB_ApprovalStatusCode = ApprovalStatusEnum.Code.YSH; newReturnStockInBill.SIB_ApprovalStatusName = ApprovalStatusEnum.Name.YSH; newReturnStockInBill.SIB_IsValid = true; newReturnStockInBill.SIB_CreatedBy = LoginInfoDAX.UserName; newReturnStockInBill.SIB_CreatedTime = BLLCom.GetCurStdDatetime(); newReturnStockInBill.SIB_UpdatedBy = LoginInfoDAX.UserName; newReturnStockInBill.SIB_UpdatedTime = BLLCom.GetCurStdDatetime(); #endregion #region 创建负向的[应收单] //新增[来源类型]为[销售应收],[单据方向]为[负向],金额为负,[业务状态]为{执行中},[审核状态]为{已审核}的[应收单] newRejectAccountReceivableBill.ARB_ID = Guid.NewGuid().ToString(); newRejectAccountReceivableBill.ARB_No = BLLCom.GetCoeusDocumentNo(DocumentTypeEnums.Code.ARB); newRejectAccountReceivableBill.ARB_BillDirectCode = BillDirectionEnum.Code.MINUS; newRejectAccountReceivableBill.ARB_BillDirectName = BillDirectionEnum.Name.MINUS; newRejectAccountReceivableBill.ARB_SourceTypeCode = AccountReceivableBillSourceTypeEnum.Code.XSYS; newRejectAccountReceivableBill.ARB_SourceTypeName = AccountReceivableBillSourceTypeEnum.Name.XSYS; newRejectAccountReceivableBill.ARB_SrcBillNo = updateSalesOrder.SO_No; newRejectAccountReceivableBill.ARB_Org_ID = LoginInfoDAX.OrgID; newRejectAccountReceivableBill.ARB_Org_Name = LoginInfoDAX.OrgShortName; if (paramHead.SO_CustomerTypeName == CustomerTypeEnum.Name.PTNQXSH) { newRejectAccountReceivableBill.ARB_PayObjectTypeName = AmountTransObjectTypeEnum.Name.PLATFORMAUTOFACTORY; newRejectAccountReceivableBill.ARB_PayObjectTypeCode = AmountTransObjectTypeEnum.Code.PLATFORMAUTOFACTORY; } else if (paramHead.SO_CustomerTypeName == CustomerTypeEnum.Name.YBQXSH) { newRejectAccountReceivableBill.ARB_PayObjectTypeName = AmountTransObjectTypeEnum.Name.GENERALAUTOFACTORY; newRejectAccountReceivableBill.ARB_PayObjectTypeCode = AmountTransObjectTypeEnum.Code.GENERALAUTOFACTORY; } else { newRejectAccountReceivableBill.ARB_PayObjectTypeName = AmountTransObjectTypeEnum.Name.REGULARCUSTOMER; newRejectAccountReceivableBill.ARB_PayObjectTypeCode = AmountTransObjectTypeEnum.Code.REGULARCUSTOMER; } newRejectAccountReceivableBill.ARB_PayObjectName = paramHead.SO_CustomerName; newRejectAccountReceivableBill.ARB_PayObjectID = paramHead.SO_CustomerID; newRejectAccountReceivableBill.ARB_BusinessStatusCode = AccountReceivableBillStatusEnum.Code.ZXZ; newRejectAccountReceivableBill.ARB_BusinessStatusName = AccountReceivableBillStatusEnum.Name.ZXZ; newRejectAccountReceivableBill.ARB_ApprovalStatusCode = ApprovalStatusEnum.Code.YSH; newRejectAccountReceivableBill.ARB_ApprovalStatusName = ApprovalStatusEnum.Name.YSH; newRejectAccountReceivableBill.ARB_IsValid = true; newRejectAccountReceivableBill.ARB_CreatedBy = LoginInfoDAX.UserName; newRejectAccountReceivableBill.ARB_CreatedTime = BLLCom.GetCurStdDatetime(); newRejectAccountReceivableBill.ARB_UpdatedBy = LoginInfoDAX.UserName; newRejectAccountReceivableBill.ARB_UpdatedTime = BLLCom.GetCurStdDatetime(); #endregion //退货产生的应收单.[应收金额] decimal returnReceivableAmount = 0; foreach (var loopSalesOrderReturnDetail in paramDetailList) { #region 退货的[销售订单明细] //[销售订单明细]审核状态 和 单据状态与单头一致 loopSalesOrderReturnDetail.WHERE_SOD_ID = loopSalesOrderReturnDetail.SOD_ID; loopSalesOrderReturnDetail.WHERE_SOD_VersionNo = loopSalesOrderReturnDetail.SOD_VersionNo; loopSalesOrderReturnDetail.SOD_VersionNo++; loopSalesOrderReturnDetail.SOD_ApprovalStatusCode = updateSalesOrder.SO_ApprovalStatusCode; loopSalesOrderReturnDetail.SOD_ApprovalStatusName = updateSalesOrder.SO_ApprovalStatusName; loopSalesOrderReturnDetail.SOD_StatusCode = updateSalesOrder.SO_StatusCode; loopSalesOrderReturnDetail.SOD_StatusName = updateSalesOrder.SO_StatusName; loopSalesOrderReturnDetail.SOD_UpdatedBy = LoginInfoDAX.UserName; loopSalesOrderReturnDetail.SOD_UpdatedTime = BLLCom.GetCurStdDatetime(); #endregion #region 退货的[应收单明细] //新增[来源类型]为[销售应收],[是否负向明细]为[true],金额为负的[应收单明细] MDLFM_AccountReceivableBillDetail newAccountReceivableBillDetail = new MDLFM_AccountReceivableBillDetail { ARBD_ID = Guid.NewGuid().ToString(), ARBD_ARB_ID = newRejectAccountReceivableBill.ARB_ID, ARBD_IsMinusDetail = true, ARBD_SrcBillNo = updateSalesOrder.SO_No, ARBD_SrcBillDetailID = loopSalesOrderReturnDetail.SOD_ID, ARBD_Org_ID = newRejectAccountReceivableBill.ARB_Org_ID, ARBD_Org_Name = newRejectAccountReceivableBill.ARB_Org_Name, //应收金额 = 销售数量(退货数量) * 单价 ARBD_AccountReceivableAmount = -Math.Round((loopSalesOrderReturnDetail.SOD_Qty ?? 0) * (loopSalesOrderReturnDetail.SOD_UnitPrice ?? 0), 2), ARBD_ReceivedAmount = 0, ARBD_UnReceiveAmount = -Math.Round((loopSalesOrderReturnDetail.SOD_Qty ?? 0) * (loopSalesOrderReturnDetail.SOD_UnitPrice ?? 0), 2), ARBD_BusinessStatusCode = newRejectAccountReceivableBill.ARB_BusinessStatusCode, ARBD_BusinessStatusName = newRejectAccountReceivableBill.ARB_BusinessStatusName, ARBD_ApprovalStatusCode = newRejectAccountReceivableBill.ARB_ApprovalStatusCode, ARBD_ApprovalStatusName = newRejectAccountReceivableBill.ARB_ApprovalStatusName, ARBD_IsValid = true, ARBD_CreatedBy = LoginInfoDAX.UserName, ARBD_CreatedTime = BLLCom.GetCurStdDatetime(), ARBD_UpdatedBy = LoginInfoDAX.UserName, ARBD_UpdatedTime = BLLCom.GetCurStdDatetime() }; returnReceivableAmount += (newAccountReceivableBillDetail.ARBD_AccountReceivableAmount ?? 0); newRejectReceivableBillDetailList.Add(newAccountReceivableBillDetail); #endregion } //[应收单].[应收金额] newRejectAccountReceivableBill.ARB_AccountReceivableAmount = returnReceivableAmount; newRejectAccountReceivableBill.ARB_ReceivedAmount = 0; newRejectAccountReceivableBill.ARB_UnReceiveAmount = returnReceivableAmount; //[销售单].[总金额] updateSalesOrder.SO_TotalAmount = returnReceivableAmount; foreach (var loopReturnStockInDetail in paramReturnStockInDetailList) { #region 退货入库的[入库单明细] MDLPIS_StockInDetail newStockInDetail = new MDLPIS_StockInDetail(); _bll.CopyModel(loopReturnStockInDetail, newStockInDetail); newStockInDetail.SID_ID = Guid.NewGuid().ToString(); newStockInDetail.SID_SIB_ID = newReturnStockInBill.SIB_ID; newStockInDetail.SID_SIB_No = newReturnStockInBill.SIB_No; newStockInDetail.SID_IsValid = true; newStockInDetail.SID_CreatedBy = LoginInfoDAX.UserName; newStockInDetail.SID_CreatedTime = BLLCom.GetCurStdDatetime(); newStockInDetail.SID_UpdatedBy = LoginInfoDAX.UserName; newStockInDetail.SID_UpdatedTime = BLLCom.GetCurStdDatetime(); var curInDetailOfSalesDetail = paramDetailList.FirstOrDefault(x => x.SOD_Barcode == newStockInDetail.SID_Barcode); if (curInDetailOfSalesDetail != null) { //[入库单明细].[来源单据明细ID] 为 [销售退货单明细].[ID] newStockInDetail.SID_SourceDetailID = curInDetailOfSalesDetail.SOD_ID; } newReturnStockInDetailList.Add(newStockInDetail); #endregion if (paramIsHasInventory) { #region 进销存 并且 审核销售退货订单的场合,创建相关单据为已审核的场合,更新[库存],创建[库存异动日志] //在[入库单明细]列表中第一次出现的配件[库存]信息 MDLPIS_Inventory inventoryExists = null; foreach (var loopInventory in updateStockInInventoryList) { if (loopInventory.INV_Barcode == loopReturnStockInDetail.SID_Barcode && loopInventory.INV_BatchNo == loopReturnStockInDetail.SID_BatchNo) { inventoryExists = loopInventory; break; } } if (inventoryExists != null) { //[入库单明细]列表中已遍历过该配件,累加数量 inventoryExists.INV_Qty += loopReturnStockInDetail.SID_Qty; inventoryExists.INV_UpdatedBy = LoginInfoDAX.UserName; inventoryExists.INV_UpdatedTime = BLLCom.GetCurStdDatetime(); //生成[库存异动日志] newStockInInventoryTransLogList.Add(GenerateStockInInventoryTransLog(newReturnStockInBill, loopReturnStockInDetail, inventoryExists, paramHead)); } else { //[入库单明细]列表中第一次出现该配件 //查询该配件是否在[库存]中存在 MDLPIS_Inventory resultInventory = new MDLPIS_Inventory(); _bll.QueryForObject <MDLPIS_Inventory, MDLPIS_Inventory>(new MDLPIS_Inventory { WHERE_INV_Org_ID = newReturnStockInBill.SIB_Org_ID, WHERE_INV_Barcode = loopReturnStockInDetail.SID_Barcode, WHERE_INV_BatchNo = loopReturnStockInDetail.SID_BatchNo, WHERE_INV_WH_ID = loopReturnStockInDetail.SID_WH_ID, WHERE_INV_IsValid = true }, resultInventory); //[库存]中不存在该配件 if (string.IsNullOrEmpty(resultInventory.INV_ID)) { //新增一个该配件的库存信息 MDLPIS_Inventory inventoryToInsert = new MDLPIS_Inventory { INV_Org_ID = newReturnStockInBill.SIB_Org_ID, INV_SUPP_ID = loopReturnStockInDetail.SID_SUPP_ID, INV_WH_ID = loopReturnStockInDetail.SID_WH_ID, INV_WHB_ID = loopReturnStockInDetail.SID_WHB_ID, INV_ThirdNo = loopReturnStockInDetail.SID_ThirdNo, INV_OEMNo = loopReturnStockInDetail.SID_OEMNo, INV_Barcode = loopReturnStockInDetail.SID_Barcode, INV_BatchNo = loopReturnStockInDetail.SID_BatchNo, INV_Name = loopReturnStockInDetail.SID_Name, INV_Specification = loopReturnStockInDetail.SID_Specification, INV_Qty = loopReturnStockInDetail.SID_Qty, INV_PurchaseUnitPrice = loopReturnStockInDetail.SID_UnitCostPrice, INV_IsValid = true, INV_CreatedBy = LoginInfoDAX.UserName, INV_CreatedTime = BLLCom.GetCurStdDatetime(), INV_UpdatedBy = LoginInfoDAX.UserName, INV_UpdatedTime = BLLCom.GetCurStdDatetime() }; updateStockInInventoryList.Add(inventoryToInsert); //生成[库存异动日志] newStockInInventoryTransLogList.Add(GenerateStockInInventoryTransLog(newReturnStockInBill, loopReturnStockInDetail, inventoryToInsert, paramHead)); } //[库存]中存在该配件 else { //更新[库存]中该配件的数量 resultInventory.INV_Qty += loopReturnStockInDetail.SID_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; updateStockInInventoryList.Add(resultInventory); //生成[库存异动日志] newStockInInventoryTransLogList.Add(GenerateStockInInventoryTransLog(newReturnStockInBill, loopReturnStockInDetail, resultInventory, paramHead)); } } #endregion } } #endregion #endregion #region 带事务的新增和更新 try { DBManager.BeginTransaction(DBCONFIG.Coeus); #region 更新[销售订单] bool saveSalesOrder = _bll.Save(updateSalesOrder); if (!saveSalesOrder) { DBManager.RollBackTransaction(DBCONFIG.Coeus); ResultMsg = MsgHelp.GetMsg(MsgCode.E_0010, new object[] { MsgParam.UPDATE + SystemTableEnums.Name.SD_SalesOrder }); LogHelper.WriteBussLogEndNG(BussID, LoginInfoDAX.UserName, funcName, ResultMsg, "", null); return(false); } #endregion #region 保存[销售订单明细] bool saveSalesOrderDetailResult = _bll.UnitySave(paramDetailList); if (!saveSalesOrderDetailResult) { DBManager.RollBackTransaction(DBCONFIG.Coeus); ResultMsg = MsgHelp.GetMsg(MsgCode.E_0010, new object[] { SystemActionEnum.Name.SAVE + SystemTableEnums.Name.SD_SalesOrderDetail }); LogHelper.WriteBussLogEndNG(BussID, LoginInfoDAX.UserName, funcName, ResultMsg, "", null); return(false); } #endregion #region 新增[应收单] if (!string.IsNullOrEmpty(newRejectAccountReceivableBill.ARB_ID)) { //销售退货时产生的负向的[销售应收] bool insertAccountReceivableBillResult = _bll.Insert(newRejectAccountReceivableBill); 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 (newRejectReceivableBillDetailList.Count > 0) { bool insertAccountReceivableBillDetailResult = _bll.InsertByList <MDLFM_AccountReceivableBillDetail, MDLFM_AccountReceivableBillDetail>(newRejectReceivableBillDetailList); 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 保存[库存] foreach (var loopInventory in updateStockInInventoryList) { 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 (newStockInInventoryTransLogList.Count > 0) { bool insertInventoryTransLogResult = _bll.InsertByList <MDLPIS_InventoryTransLog, MDLPIS_InventoryTransLog>(newStockInInventoryTransLogList); 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 #region 销售退货入库时生成[入库单] if (!string.IsNullOrEmpty(newReturnStockInBill.SIB_ID)) { bool insertStockInBillResult = _bll.Insert(newReturnStockInBill); if (!insertStockInBillResult) { DBManager.RollBackTransaction(DBCONFIG.Coeus); ResultMsg = MsgHelp.GetMsg(MsgCode.E_0010, new object[] { SystemActionEnum.Name.NEW + SystemTableEnums.Name.PIS_StockInBill }); LogHelper.WriteBussLogEndNG(BussID, LoginInfoDAX.UserName, funcName, ResultMsg, "", null); return(false); } } #endregion #region 销售退货入库时生成[入库单明细] if (newReturnStockInDetailList.Count > 0) { bool insertStockInDetailResult = _bll.InsertByList <MDLPIS_StockInDetail, MDLPIS_StockInDetail>(newReturnStockInDetailList); if (!insertStockInDetailResult) { DBManager.RollBackTransaction(DBCONFIG.Coeus); ResultMsg = MsgHelp.GetMsg(MsgCode.E_0010, new object[] { SystemActionEnum.Name.NEW + SystemTableEnums.Name.PIS_StockInDetail }); 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 _bll.CopyModel(updateSalesOrder, paramHead); return(true); }
/// <summary> /// 反审核 /// </summary> /// <param name="paramHead">物流单</param> /// <param name="paramDetailList">物流单明细列表</param> /// <returns></returns> public bool UnApproveDetailDS(LogisticsBillManagerUIModel paramHead, SkyCarBindingList <LogisticsBillDetailManagerUIModel, MDLSD_LogisticsBillDetail> paramDetailList) { var funcName = "UnApproveDetailDS"; LogHelper.WriteBussLogStart(BussID, LoginInfoDAX.UserName, funcName, "", "", null); if (paramHead == null || string.IsNullOrEmpty(paramHead.LB_ID) || string.IsNullOrEmpty(paramHead.LB_No)) { //没有获取到物流单,反审核失败 ResultMsg = MsgHelp.GetMsg(MsgCode.W_0024, new object[] { SystemTableEnums.Name.SD_LogisticsBill, SystemActionEnum.Name.UNAPPROVE }); LogHelper.WriteBussLogEndNG(BussID, LoginInfoDAX.UserName, funcName, ResultMsg, "", null); return(false); } #region 准备数据 #region 变量定义 //待更新的当前[物流单] var updateCurLogisticsBill = paramHead.ToTBModelForSaveAndDelete <MDLSD_LogisticsBill>(); //待更新的当前[物流单明细]列表 List <MDLSD_LogisticsBillDetail> updateCurLogisticsBillDetailList = new List <MDLSD_LogisticsBillDetail>(); CopyModelList(paramDetailList, updateCurLogisticsBillDetailList); //待新增的当前[物流单日志] MDLSD_LogisticsBillTrans newLogisticsBillTrans = new MDLSD_LogisticsBillTrans(); //待更新的当前物流单对应的[销售单] MDLSD_SalesOrder updateSalesOrder = new MDLSD_SalesOrder(); //待更新的当前物流单对应的[销售退货单明细]列表 List <MDLSD_SalesOrderDetail> updateSalesOrderDetailList = new List <MDLSD_SalesOrderDetail>(); //待更新的[调拨单] MDLPIS_TransferBill transferBill = new MDLPIS_TransferBill(); #endregion #region 更新[物流单] //更新[物流单].[单据状态]为{已生成},[审核状态]为{待审核} updateCurLogisticsBill.LB_StatusCode = LogisticsBillStatusEnum.Code.YSC; updateCurLogisticsBill.LB_StatusName = LogisticsBillStatusEnum.Name.YSC; updateCurLogisticsBill.LB_ApprovalStatusCode = ApprovalStatusEnum.Code.DSH; updateCurLogisticsBill.LB_ApprovalStatusName = ApprovalStatusEnum.Name.DSH; updateCurLogisticsBill.LB_UpdatedBy = LoginInfoDAX.UserName; updateCurLogisticsBill.LB_UpdatedTime = BLLCom.GetCurStdDatetime(); #endregion #region 新增的[物流单异动日志] //新增状态为当前物理状态的[物流单异动日志] newLogisticsBillTrans.LBT_ID = Guid.NewGuid().ToString(); newLogisticsBillTrans.LBT_Org_ID = updateCurLogisticsBill.LB_Org_ID; newLogisticsBillTrans.LBT_Org_Name = updateCurLogisticsBill.LB_Org_Name; newLogisticsBillTrans.LBT_LB_ID = updateCurLogisticsBill.LB_ID ?? updateCurLogisticsBill.WHERE_LB_ID; newLogisticsBillTrans.LBT_LB_NO = updateCurLogisticsBill.LB_No; newLogisticsBillTrans.LBT_Time = BLLCom.GetCurStdDatetime(); newLogisticsBillTrans.LBT_Status = updateCurLogisticsBill.LB_StatusName; newLogisticsBillTrans.LBT_IsValid = true; newLogisticsBillTrans.LBT_CreatedBy = LoginInfoDAX.UserName; newLogisticsBillTrans.LBT_CreatedTime = BLLCom.GetCurStdDatetime(); newLogisticsBillTrans.LBT_UpdatedBy = LoginInfoDAX.UserName; newLogisticsBillTrans.LBT_UpdatedTime = BLLCom.GetCurStdDatetime(); #endregion if (paramHead.LB_SourceTypeName == DeliveryBillSourceTypeEnum.Name.ZZDB) { #region 更新[调拨单] _bll.QueryForObject <MDLPIS_TransferBill, MDLPIS_TransferBill>(new MDLPIS_TransferBill() { WHERE_TB_No = paramHead.LB_SourceNo }, transferBill); if (!string.IsNullOrEmpty(transferBill.TB_ID)) { transferBill.TB_StatusName = TransfeStatusEnum.Name.DFH; transferBill.TB_StatusCode = TransfeStatusEnum.Code.DFH; transferBill.WHERE_TB_ID = transferBill.TB_ID; transferBill.WHERE_TB_VersionNo = transferBill.TB_VersionNo; transferBill.TB_VersionNo = +1; } #endregion } else { #region 更新[销售订单] //查询物流单对应的销售订单 _bll.QueryForObject <MDLSD_SalesOrder, MDLSD_SalesOrder>(new MDLSD_SalesOrder { WHERE_SO_No = updateCurLogisticsBill.LB_SourceNo, WHERE_SO_IsValid = true }, updateSalesOrder); //更新[销售订单].[单据状态]为{待发货} updateSalesOrder.SO_StatusCode = SalesOrderStatusEnum.Code.DFH; updateSalesOrder.SO_StatusName = SalesOrderStatusEnum.Name.DFH; updateSalesOrder.SO_UpdatedBy = LoginInfoDAX.UserName; updateSalesOrder.SO_UpdatedTime = BLLCom.GetCurStdDatetime(); updateSalesOrder.WHERE_SO_ID = updateSalesOrder.SO_ID; updateSalesOrder.WHERE_SO_VersionNo = updateSalesOrder.SO_VersionNo; #endregion #region 获取对应的[销售订单明细]列表 _bll.QueryForList <MDLSD_SalesOrderDetail, MDLSD_SalesOrderDetail>(new MDLSD_SalesOrderDetail { WHERE_SOD_SO_ID = updateSalesOrder.SO_ID, WHERE_SOD_IsValid = true }, updateSalesOrderDetailList); #endregion } #endregion #region 带事务的保存 try { DBManager.BeginTransaction(DBCONFIG.Coeus); #region 保存数据 #region 更新[物流单] bool saveLogisticsBill = _bll.Save(updateCurLogisticsBill); if (!saveLogisticsBill) { DBManager.RollBackTransaction(DBCONFIG.Coeus); ResultMsg = MsgHelp.GetMsg(MsgCode.E_0010, new object[] { MsgParam.UPDATE + SystemTableEnums.Name.SD_LogisticsBill }); return(false); } #endregion #region 更新[物流单明细] foreach (var loopLogisticsBillDetail in updateCurLogisticsBillDetailList) { //更新[物流单明细].[物流状态]为{已生成} loopLogisticsBillDetail.LBD_StatusCode = LogisticsBillDetailStatusEnum.Code.YSC; loopLogisticsBillDetail.LBD_StatusName = LogisticsBillDetailStatusEnum.Name.YSC; loopLogisticsBillDetail.LBD_UpdatedBy = LoginInfoDAX.UserName; loopLogisticsBillDetail.LBD_UpdatedTime = BLLCom.GetCurStdDatetime(); loopLogisticsBillDetail.WHERE_LBD_ID = loopLogisticsBillDetail.LBD_ID; loopLogisticsBillDetail.WHERE_LBD_VersionNo = loopLogisticsBillDetail.LBD_VersionNo; bool updateLogisticsBillDetailResult = _bll.Update(loopLogisticsBillDetail); if (!updateLogisticsBillDetailResult) { DBManager.RollBackTransaction(DBCONFIG.Coeus); ResultMsg = MsgHelp.GetMsg(MsgCode.E_0010, new object[] { MsgParam.UPDATE + SystemTableEnums.Name.SD_LogisticsBillDetail }); return(false); } } #endregion #region 新增的[物流单日志] bool addLogisticsBillTransResult = _bll.Insert(newLogisticsBillTrans); if (!addLogisticsBillTransResult) { DBManager.RollBackTransaction(DBCONFIG.Coeus); ResultMsg = MsgHelp.GetMsg(MsgCode.E_0010, new object[] { SystemActionEnum.Name.NEW + SystemTableEnums.Name.SD_LogisticsBillTrans }); return(false); } #endregion if (paramHead.LB_SourceTypeName == DeliveryBillSourceTypeEnum.Name.ZZDB) { #region 更新[调拨单]数据 if (!string.IsNullOrEmpty(transferBill.TB_ID)) { bool updateTransferBillResult = _bll.Update(transferBill); if (!updateTransferBillResult) { DBManager.RollBackTransaction(DBCONFIG.Coeus); ResultMsg = MsgHelp.GetMsg(MsgCode.E_0010, new object[] { MsgParam.UPDATE + SystemTableEnums.Name.PIS_TransferBill }); return(false); } } #endregion } else { #region 更新[销售订单] if (!string.IsNullOrEmpty(updateSalesOrder.SO_ID)) { bool updateSalesOrderResult = _bll.Update(updateSalesOrder); if (!updateSalesOrderResult) { DBManager.RollBackTransaction(DBCONFIG.Coeus); ResultMsg = MsgHelp.GetMsg(MsgCode.E_0010, new object[] { MsgParam.UPDATE + SystemTableEnums.Name.SD_SalesOrder }); return(false); } } #endregion #region 更新[销售订单明细] if (updateSalesOrderDetailList.Count > 0) { foreach (var loopSalesOrderDetail in updateSalesOrderDetailList) { //更新[销售订单明细].[单据状态]与单头一致 loopSalesOrderDetail.SOD_StatusName = updateSalesOrder.SO_StatusName; loopSalesOrderDetail.SOD_StatusCode = updateSalesOrder.SO_StatusCode; loopSalesOrderDetail.SOD_ApprovalStatusName = updateSalesOrder.SO_ApprovalStatusName; loopSalesOrderDetail.SOD_ApprovalStatusCode = updateSalesOrder.SO_ApprovalStatusCode; loopSalesOrderDetail.SOD_UpdatedBy = LoginInfoDAX.UserName; loopSalesOrderDetail.SOD_UpdatedTime = BLLCom.GetCurStdDatetime(); loopSalesOrderDetail.WHERE_SOD_ID = loopSalesOrderDetail.SOD_ID; loopSalesOrderDetail.WHERE_SOD_VersionNo = loopSalesOrderDetail.SOD_VersionNo; bool updateLogisticsBillDetailResult = _bll.Update(loopSalesOrderDetail); if (!updateLogisticsBillDetailResult) { DBManager.RollBackTransaction(DBCONFIG.Coeus); ResultMsg = MsgHelp.GetMsg(MsgCode.E_0010, new object[] { MsgParam.UPDATE + SystemTableEnums.Name.SD_SalesOrderDetail }); return(false); } } } #endregion } #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, MethodBase.GetCurrentMethod().ToString(), ex.Message, "", null); return(false); } #endregion //将最新数据回写给DetailDS CopyModel(updateCurLogisticsBill, paramHead); //更新明细版本号 if (paramDetailList != null) { foreach (var loopUpdateDetail in paramDetailList) { if (loopUpdateDetail.LBD_VersionNo == null) { //新增时版本号为1 loopUpdateDetail.LBD_VersionNo = 1; } else { //更新时版本号加1 loopUpdateDetail.LBD_VersionNo = loopUpdateDetail.LBD_VersionNo + 1; } } } return(true); }
/// <summary> /// 审核 /// </summary> /// <param name="paramHead">物流单</param> /// <param name="paramDetailList">物流单明细列表</param> /// <returns></returns> public bool ApproveDetailDS(LogisticsBillManagerUIModel paramHead, SkyCarBindingList <LogisticsBillDetailManagerUIModel, MDLSD_LogisticsBillDetail> paramDetailList, Dictionary <string, string> paramPictureNameAndPath) { var funcName = "ApproveDetailDS"; LogHelper.WriteBussLogStart(BussID, LoginInfoDAX.UserName, funcName, "", "", null); if (paramHead == null || string.IsNullOrEmpty(paramHead.LB_ID) || string.IsNullOrEmpty(paramHead.LB_No)) { //没有获取到物流单,审核失败 ResultMsg = MsgHelp.GetMsg(MsgCode.W_0024, new object[] { SystemTableEnums.Name.SD_LogisticsBill, SystemActionEnum.Name.APPROVE }); LogHelper.WriteBussLogEndNG(BussID, LoginInfoDAX.UserName, funcName, ResultMsg, "", null); return(false); } #region 准备数据 #region 变量定义 //待更新的当前[物流单] MDLSD_LogisticsBill updateCurLogisticsBill = new MDLSD_LogisticsBill(); updateCurLogisticsBill = paramHead.ToTBModelForSaveAndDelete <MDLSD_LogisticsBill>(); //待更新的当前[物流单明细]列表 List <MDLSD_LogisticsBillDetail> updateCurLogisticsBillDetailList = new List <MDLSD_LogisticsBillDetail>(); CopyModelList(paramDetailList, updateCurLogisticsBillDetailList); //待新增的当前[物流单异动日志] MDLSD_LogisticsBillTrans newLogisticsBillTrans = new MDLSD_LogisticsBillTrans(); //待更新的当前物流单对应的[销售订单] MDLSD_SalesOrder updateCurSalesOrder = new MDLSD_SalesOrder(); //待更新的当前物流单对应的[销售订单明细]列表 List <MDLSD_SalesOrderDetail> updateCurSalesOrderDetailList = new List <MDLSD_SalesOrderDetail>(); //待更新的[调拨单] MDLPIS_TransferBill transferBill = new MDLPIS_TransferBill(); #endregion #region 更新[物流单] //更新[物流单].[单据状态]为{配送中},[审核状态]为{已审核} updateCurLogisticsBill.LB_StatusCode = LogisticsBillStatusEnum.Code.PSZ; updateCurLogisticsBill.LB_StatusName = LogisticsBillStatusEnum.Name.PSZ; updateCurLogisticsBill.LB_ApprovalStatusCode = ApprovalStatusEnum.Code.YSH; updateCurLogisticsBill.LB_ApprovalStatusName = ApprovalStatusEnum.Name.YSH; updateCurLogisticsBill.LB_UpdatedBy = LoginInfoDAX.UserName; updateCurLogisticsBill.LB_UpdatedTime = BLLCom.GetCurStdDatetime(); #endregion #region 新增[物流单异动日志] //新增状态为 当前物流单状态 的[物流单异动日志] newLogisticsBillTrans.LBT_ID = Guid.NewGuid().ToString(); newLogisticsBillTrans.LBT_Org_ID = updateCurLogisticsBill.LB_Org_ID; newLogisticsBillTrans.LBT_Org_Name = updateCurLogisticsBill.LB_Org_Name; newLogisticsBillTrans.LBT_LB_ID = updateCurLogisticsBill.LB_ID ?? updateCurLogisticsBill.WHERE_LB_ID; newLogisticsBillTrans.LBT_LB_NO = updateCurLogisticsBill.LB_No; newLogisticsBillTrans.LBT_Time = BLLCom.GetCurStdDatetime(); newLogisticsBillTrans.LBT_Status = updateCurLogisticsBill.LB_StatusName; newLogisticsBillTrans.LBT_IsValid = true; newLogisticsBillTrans.LBT_CreatedBy = LoginInfoDAX.UserName; newLogisticsBillTrans.LBT_CreatedTime = BLLCom.GetCurStdDatetime(); newLogisticsBillTrans.LBT_UpdatedBy = LoginInfoDAX.UserName; newLogisticsBillTrans.LBT_UpdatedTime = BLLCom.GetCurStdDatetime(); #endregion if (paramHead.LB_SourceTypeName == DeliveryBillSourceTypeEnum.Name.ZZDB) { #region 更新[调拨单] _bll.QueryForObject <MDLPIS_TransferBill, MDLPIS_TransferBill>(new MDLPIS_TransferBill() { WHERE_TB_No = paramHead.LB_SourceNo }, transferBill); if (!string.IsNullOrEmpty(transferBill.TB_ID)) { transferBill.TB_StatusName = TransfeStatusEnum.Name.YWC; transferBill.TB_StatusCode = TransfeStatusEnum.Code.YWC; transferBill.WHERE_TB_ID = transferBill.TB_ID; transferBill.WHERE_TB_VersionNo = transferBill.TB_VersionNo; transferBill.TB_VersionNo = +1; } #endregion } else { #region 更新[销售订单] //查询物流单对应的销售订单 _bll.QueryForObject <MDLSD_SalesOrder, MDLSD_SalesOrder>(new MDLSD_SalesOrder { WHERE_SO_No = updateCurLogisticsBill.LB_SourceNo, WHERE_SO_IsValid = true }, updateCurSalesOrder); if (!string.IsNullOrEmpty(updateCurSalesOrder.SO_ID)) { //更新[销售订单].[单据状态]为{已发货} updateCurSalesOrder.SO_StatusCode = SalesOrderStatusEnum.Code.YFH; updateCurSalesOrder.SO_StatusName = SalesOrderStatusEnum.Name.YFH; updateCurSalesOrder.SO_UpdatedBy = LoginInfoDAX.UserName; updateCurSalesOrder.SO_UpdatedTime = BLLCom.GetCurStdDatetime(); updateCurSalesOrder.WHERE_SO_ID = updateCurSalesOrder.SO_ID; updateCurSalesOrder.WHERE_SO_VersionNo = updateCurSalesOrder.SO_VersionNo; } #endregion #region 获取对应的[销售订单明细]列表 _bll.QueryForList <MDLSD_SalesOrderDetail, MDLSD_SalesOrderDetail>(new MDLSD_SalesOrderDetail { WHERE_SOD_SO_ID = updateCurSalesOrder.SO_ID, WHERE_SOD_IsValid = true }, updateCurSalesOrderDetailList); #endregion } #region 图片 foreach (var loopPicture in paramPictureNameAndPath) { if (string.IsNullOrEmpty(loopPicture.Key) || string.IsNullOrEmpty(loopPicture.Value)) { continue; } #region 将图片保存到本地以及上传文件服务器 string fileNetUrl = string.Empty; bool savePictureResult = BLLCom.SaveFileByFileName(loopPicture.Value, loopPicture.Key, ref fileNetUrl); if (!savePictureResult) { ResultMsg = MsgHelp.GetMsg(MsgCode.E_0010, new object[] { SystemActionEnum.Name.SAVE + MsgParam.IMAGE }); LogHelper.WriteBussLogEndNG(BussID, LoginInfoDAX.UserName, funcName, ResultMsg, "", null); return(false); } #endregion //截取上传图片返回值中的文件名称 int fileNameStartIndex = fileNetUrl.IndexOf("FileName=", StringComparison.Ordinal) + 1; int fileNameEndIndex = fileNameStartIndex + "FileName=".Length; int length = fileNetUrl.Length; //文件名称 string tempFileName = fileNetUrl.Substring(fileNameEndIndex - 1, length - (fileNameEndIndex - 1)); //给各个图片赋值 if (loopPicture.Key == updateCurLogisticsBill.LB_AcceptPicPath1) { updateCurLogisticsBill.LB_AcceptPicPath1 = tempFileName; } else if (loopPicture.Key == updateCurLogisticsBill.LB_AcceptPicPath2) { updateCurLogisticsBill.LB_AcceptPicPath2 = tempFileName; } else if (loopPicture.Key == updateCurLogisticsBill.LB_ReceivedPicPath1) { updateCurLogisticsBill.LB_ReceivedPicPath1 = tempFileName; } else if (loopPicture.Key == updateCurLogisticsBill.LB_ReceivedPicPath2) { updateCurLogisticsBill.LB_ReceivedPicPath2 = tempFileName; } } #endregion #endregion #region 带事务的保存 try { DBManager.BeginTransaction(DBCONFIG.Coeus); #region 更新[物流单] bool updateLogisticsBillResult = _bll.Save(updateCurLogisticsBill); if (!updateLogisticsBillResult) { DBManager.RollBackTransaction(DBCONFIG.Coeus); foreach (var loopPicture in paramPictureNameAndPath) { if (string.IsNullOrEmpty(loopPicture.Key) || string.IsNullOrEmpty(loopPicture.Value)) { continue; } //保存失败,删除本地以及文件服务器上的图片 var outMsg = string.Empty; BLLCom.DeleteFileByFileName(loopPicture.Key, ref outMsg); } ResultMsg = MsgHelp.GetMsg(MsgCode.E_0010, new object[] { MsgParam.UPDATE + SystemTableEnums.Name.SD_LogisticsBill }); return(false); } #endregion #region 更新[物流单明细] foreach (var loopLogisticsBillDetail in updateCurLogisticsBillDetailList) { //更新[物流单明细].[物流状态]为{配送中} loopLogisticsBillDetail.LBD_StatusCode = LogisticsBillDetailStatusEnum.Code.PSZ; loopLogisticsBillDetail.LBD_StatusName = LogisticsBillDetailStatusEnum.Name.PSZ; loopLogisticsBillDetail.LBD_UpdatedBy = LoginInfoDAX.UserName; loopLogisticsBillDetail.LBD_UpdatedTime = BLLCom.GetCurStdDatetime(); if (paramHead.LB_SourceTypeName == DeliveryBillSourceTypeEnum.Name.ZZDB) { loopLogisticsBillDetail.LBD_SignQty = loopLogisticsBillDetail.LBD_DeliveryQty; } loopLogisticsBillDetail.WHERE_LBD_ID = loopLogisticsBillDetail.LBD_ID; loopLogisticsBillDetail.WHERE_LBD_VersionNo = loopLogisticsBillDetail.LBD_VersionNo; bool updateLogisticsBillDetailResult = _bll.Save(loopLogisticsBillDetail); if (!updateLogisticsBillDetailResult) { DBManager.RollBackTransaction(DBCONFIG.Coeus); foreach (var loopPicture in paramPictureNameAndPath) { if (string.IsNullOrEmpty(loopPicture.Key) || string.IsNullOrEmpty(loopPicture.Value)) { continue; } //保存失败,删除本地以及文件服务器上的图片 var outMsg = string.Empty; BLLCom.DeleteFileByFileName(loopPicture.Key, ref outMsg); } ResultMsg = MsgHelp.GetMsg(MsgCode.E_0010, new object[] { MsgParam.UPDATE + SystemTableEnums.Name.SD_LogisticsBillDetail }); return(false); } } #endregion #region 新增[物流单日志] bool addLogisticsBillTransResult = _bll.Insert(newLogisticsBillTrans); if (!addLogisticsBillTransResult) { DBManager.RollBackTransaction(DBCONFIG.Coeus); foreach (var loopPicture in paramPictureNameAndPath) { if (string.IsNullOrEmpty(loopPicture.Key) || string.IsNullOrEmpty(loopPicture.Value)) { continue; } //保存失败,删除本地以及文件服务器上的图片 var outMsg = string.Empty; BLLCom.DeleteFileByFileName(loopPicture.Key, ref outMsg); } ResultMsg = MsgHelp.GetMsg(MsgCode.E_0010, new object[] { SystemActionEnum.Name.NEW + SystemTableEnums.Name.SD_LogisticsBillTrans }); return(false); } #endregion if (paramHead.LB_SourceTypeName == DeliveryBillSourceTypeEnum.Name.ZZDB) { #region 更新[调拨单]数据 if (!string.IsNullOrEmpty(transferBill.TB_ID)) { bool updateTransferBillResult = _bll.Update(transferBill); if (!updateTransferBillResult) { DBManager.RollBackTransaction(DBCONFIG.Coeus); foreach (var loopPicture in paramPictureNameAndPath) { if (string.IsNullOrEmpty(loopPicture.Key) || string.IsNullOrEmpty(loopPicture.Value)) { continue; } //保存失败,删除本地以及文件服务器上的图片 var outMsg = string.Empty; BLLCom.DeleteFileByFileName(loopPicture.Key, ref outMsg); } ResultMsg = MsgHelp.GetMsg(MsgCode.E_0010, new object[] { MsgParam.UPDATE + SystemTableEnums.Name.PIS_TransferBill }); return(false); } } #endregion } else { #region 更新[销售订单]数据 if (!string.IsNullOrEmpty(updateCurSalesOrder.SO_ID)) { bool updateSalesOrderResult = _bll.Update(updateCurSalesOrder); if (!updateSalesOrderResult) { DBManager.RollBackTransaction(DBCONFIG.Coeus); foreach (var loopPicture in paramPictureNameAndPath) { if (string.IsNullOrEmpty(loopPicture.Key) || string.IsNullOrEmpty(loopPicture.Value)) { continue; } //保存失败,删除本地以及文件服务器上的图片 var outMsg = string.Empty; BLLCom.DeleteFileByFileName(loopPicture.Key, ref outMsg); } ResultMsg = MsgHelp.GetMsg(MsgCode.E_0010, new object[] { MsgParam.UPDATE + SystemTableEnums.Name.SD_SalesOrder }); return(false); } } #endregion #region 更新[销售订单明细]数据 if (updateCurSalesOrderDetailList.Count > 0) { foreach (var loopSalesOrderDetail in updateCurSalesOrderDetailList) { //更新[销售订单明细].[单据状态]与单头一致 loopSalesOrderDetail.SOD_StatusName = updateCurSalesOrder.SO_StatusName; loopSalesOrderDetail.SOD_StatusCode = updateCurSalesOrder.SO_StatusCode; loopSalesOrderDetail.SOD_ApprovalStatusName = updateCurSalesOrder.SO_ApprovalStatusName; loopSalesOrderDetail.SOD_ApprovalStatusCode = updateCurSalesOrder.SO_ApprovalStatusCode; loopSalesOrderDetail.SOD_UpdatedBy = LoginInfoDAX.UserName; loopSalesOrderDetail.SOD_UpdatedTime = BLLCom.GetCurStdDatetime(); loopSalesOrderDetail.WHERE_SOD_ID = loopSalesOrderDetail.SOD_ID; loopSalesOrderDetail.WHERE_SOD_VersionNo = loopSalesOrderDetail.SOD_VersionNo; bool updateLogisticsBillDetailResult = _bll.Update(loopSalesOrderDetail); if (!updateLogisticsBillDetailResult) { DBManager.RollBackTransaction(DBCONFIG.Coeus); foreach (var loopPicture in paramPictureNameAndPath) { if (string.IsNullOrEmpty(loopPicture.Key) || string.IsNullOrEmpty(loopPicture.Value)) { continue; } //保存失败,删除本地以及文件服务器上的图片 var outMsg = string.Empty; BLLCom.DeleteFileByFileName(loopPicture.Key, ref outMsg); } ResultMsg = MsgHelp.GetMsg(MsgCode.E_0010, new object[] { MsgParam.UPDATE + SystemTableEnums.Name.SD_SalesOrderDetail }); return(false); } } } #endregion } DBManager.CommitTransaction(DBCONFIG.Coeus); } catch (Exception ex) { DBManager.RollBackTransaction(DBCONFIG.Coeus); foreach (var loopPicture in paramPictureNameAndPath) { if (string.IsNullOrEmpty(loopPicture.Key) || string.IsNullOrEmpty(loopPicture.Value)) { continue; } //保存失败,删除本地以及文件服务器上的图片 var outMsg = string.Empty; BLLCom.DeleteFileByFileName(loopPicture.Key, ref outMsg); } ResultMsg = MsgHelp.GetMsg(MsgCode.E_0018, new object[] { SystemActionEnum.Name.APPROVE, ex.Message }); LogHelper.WriteBussLogEndNG(BussID, LoginInfoDAX.UserName, MethodBase.GetCurrentMethod().ToString(), ex.Message, "", null); return(false); } #endregion //将最新数据回写给DetailDS CopyModel(updateCurLogisticsBill, paramHead); //更新明细版本号 if (paramDetailList != null) { foreach (var loopUpdateDetail in paramDetailList) { if (loopUpdateDetail.LBD_VersionNo == null) { //新增时版本号为1 loopUpdateDetail.LBD_VersionNo = 1; if (paramHead.LB_SourceTypeName == DeliveryBillSourceTypeEnum.Name.ZZDB) { loopUpdateDetail.LBD_SignQty = loopUpdateDetail.LBD_DeliveryQty; } } else { //更新时版本号加1 loopUpdateDetail.LBD_VersionNo = loopUpdateDetail.LBD_VersionNo + 1; if (paramHead.LB_SourceTypeName == DeliveryBillSourceTypeEnum.Name.ZZDB) { loopUpdateDetail.LBD_SignQty = loopUpdateDetail.LBD_DeliveryQty; } } } } foreach (var loopPicture in paramPictureNameAndPath) { if (string.IsNullOrEmpty(loopPicture.Key) || string.IsNullOrEmpty(loopPicture.Value)) { continue; } //保存成功,删除临时保存的图片 if (File.Exists(loopPicture.Value)) { File.Delete(loopPicture.Value); } } return(true); }