示例#1
0
 /// <summary>
 /// 将页面内控件的值赋值给基类的_receiptBill
 /// </summary>
 private void SetCardCtrlsToDetailDS()
 {
     _receiptBill = new MDLFM_ReceiptBill
     {
         RB_ReceiveTypeName    = cbReceiveTypeName.Text,
         RB_ReceiveTypeCode    = cbReceiveTypeName.Value?.ToString() ?? "",
         RB_Remark             = txtRemark.Text,
         RB_CertificateNo      = txtReceiveCertificateNo.Text,
         RB_ReceiveTotalAmount = Convert.ToDecimal(numThisReceiveAmount.Value ?? 0),
     };
 }
示例#2
0
        /// <summary>
        /// 审核
        /// </summary>
        /// <param name="paramHead">UIModel</param>
        /// <param name="paramDetailList">明细UIModel</param>
        /// <returns></returns>
        public bool ApproveDetailDS(ReceiptBillManagerUIModel paramHead, SkyCarBindingList <ReceiptBillManagerDetailUIModel, MDLFM_ReceiptBillDetail> paramDetailList)
        {
            var funcName = "ApproveDetailDS";

            LogHelper.WriteBussLogStart(BussID, LoginInfoDAX.UserName, funcName, "", "", null);

            if (paramHead == null ||
                string.IsNullOrEmpty(paramHead.RB_ID) ||
                string.IsNullOrEmpty(paramHead.RB_No))
            {
                //没有获取到收款单,审核失败
                ResultMsg = MsgHelp.GetMsg(MsgCode.W_0024, new object[] { SystemTableEnums.Name.FM_ReceiptBill, SystemActionEnum.Name.APPROVE });
                return(false);
            }

            var receiptBillManagerDetailList =
                paramDetailList.Where(x => x.RBD_SourceTypeName == ReceiptBillDetailSourceTypeEnum.Name.SGSK);

            if (receiptBillManagerDetailList.Count() != paramDetailList.Count() || receiptBillManagerDetailList.Count() == 0)
            {
                //收款单不为手工收款,不能审核
                ResultMsg = MsgHelp.GetMsg(MsgCode.E_0017, new object[] { SystemTableEnums.Name.FM_ReceiptBill + MsgParam.NO + MsgParam.BE + PayBillDetailSourceTypeEnum.Name.SGFK, SystemActionEnum.Name.APPROVE });
                return(false);
            }

            #region 定义变量

            //待更新的[收款单]
            MDLFM_ReceiptBill updateReceiptBill = paramHead.ToTBModelForSaveAndDelete <MDLFM_ReceiptBill>();
            //待更新[收款单明细]
            List <MDLFM_ReceiptBillDetail> updateReceiptBillDetailList = new List <MDLFM_ReceiptBillDetail>();
            //待新增对应的[应收单]
            List <MDLFM_AccountReceivableBill> addAccountReceivableBillList = new List <MDLFM_AccountReceivableBill>();
            //待新增对应的[应收单明细]
            List <MDLFM_AccountReceivableBillDetail> addAccountReceivableBillDetailList = new List <MDLFM_AccountReceivableBillDetail>();
            //待更新的[钱包]
            MDLEWM_Wallet updateWallet = new MDLEWM_Wallet();
            //待新增的[钱包异动]
            MDLEWM_WalletTrans addWalletTrans = new MDLEWM_WalletTrans();
            #endregion

            #region 准备数据

            if (paramDetailList[0].RBD_SourceTypeName == ReceiptBillDetailSourceTypeEnum.Name.SGSK)
            {
                #region 新增[应收单]和[应收单明细]

                foreach (var loopDetail in paramDetailList)
                {
                    #region 新增[应收单]

                    MDLFM_AccountReceivableBill accountReceivableBill = new MDLFM_AccountReceivableBill
                    {
                        ARB_ID                      = System.Guid.NewGuid().ToString(),
                        ARB_No                      = BLLCom.GetCoeusDocumentNo(DocumentTypeEnums.Code.ARB),
                        ARB_BillDirectCode          = BillDirectionEnum.Code.PLUS,
                        ARB_BillDirectName          = BillDirectionEnum.Name.PLUS,
                        ARB_SourceTypeCode          = AccountReceivableBillSourceTypeEnum.Code.SGCJ,
                        ARB_SourceTypeName          = AccountReceivableBillSourceTypeEnum.Name.SGCJ,
                        ARB_Org_ID                  = LoginInfoDAX.OrgID,
                        ARB_Org_Name                = LoginInfoDAX.OrgShortName,
                        ARB_PayObjectTypeCode       = paramHead.RB_PayObjectTypeCode,
                        ARB_PayObjectTypeName       = paramHead.RB_PayObjectTypeName,
                        ARB_PayObjectID             = paramHead.RB_PayObjectID,
                        ARB_PayObjectName           = paramHead.RB_PayObjectName,
                        ARB_AccountReceivableAmount = loopDetail.RBD_ReceiveAmount,
                        ARB_ReceivedAmount          = loopDetail.RBD_ReceiveAmount,
                        ARB_UnReceiveAmount         = 0,
                        ARB_BusinessStatusName      = AccountReceivableBillStatusEnum.Name.YWC,
                        ARB_BusinessStatusCode      = AccountReceivableBillStatusEnum.Code.YWC,
                        ARB_ApprovalStatusName      = ApprovalStatusEnum.Name.YSH,
                        ARB_ApprovalStatusCode      = ApprovalStatusEnum.Code.YSH,
                        ARB_IsValid                 = true,
                        ARB_CreatedBy               = LoginInfoDAX.UserName,
                        ARB_CreatedTime             = BLLCom.GetCurStdDatetime(),
                        ARB_UpdatedBy               = LoginInfoDAX.UserName,
                        ARB_UpdatedTime             = BLLCom.GetCurStdDatetime(),
                    };
                    addAccountReceivableBillList.Add(accountReceivableBill);
                    //回写付款单的来源的单号
                    loopDetail.RBD_SrcBillNo = accountReceivableBill.ARB_No;
                    #endregion

                    #region 新增[应收单明细]

                    MDLFM_AccountReceivableBillDetail accountPayableBillDetail = new MDLFM_AccountReceivableBillDetail
                    {
                        ARBD_ID                      = Guid.NewGuid().ToString(),
                        ARBD_ARB_ID                  = accountReceivableBill.ARB_ID,
                        ARBD_IsMinusDetail           = false,
                        ARBD_Org_ID                  = accountReceivableBill.ARB_Org_ID,
                        ARBD_Org_Name                = accountReceivableBill.ARB_Org_Name,
                        ARBD_AccountReceivableAmount = loopDetail.RBD_ReceiveAmount,
                        ARBD_ReceivedAmount          = loopDetail.RBD_ReceiveAmount,
                        ARBD_UnReceiveAmount         = 0,
                        ARBD_BusinessStatusName      = accountReceivableBill.ARB_BusinessStatusName,
                        ARBD_BusinessStatusCode      = accountReceivableBill.ARB_BusinessStatusCode,
                        ARBD_ApprovalStatusName      = accountReceivableBill.ARB_ApprovalStatusName,
                        ARBD_ApprovalStatusCode      = accountReceivableBill.ARB_ApprovalStatusCode,
                        ARBD_IsValid                 = true,
                        ARBD_CreatedBy               = LoginInfoDAX.UserName,
                        ARBD_CreatedTime             = BLLCom.GetCurStdDatetime(),
                        ARBD_UpdatedBy               = LoginInfoDAX.UserName,
                        ARBD_UpdatedTime             = BLLCom.GetCurStdDatetime(),
                    };
                    addAccountReceivableBillDetailList.Add(accountPayableBillDetail);
                    #endregion
                }
                #endregion
            }

            #region 收款单

            //更新收款单[业务状态]为{已完成},[审核状态]为{已审核}
            updateReceiptBill.RB_ApprovalStatusName = ApprovalStatusEnum.Name.YSH;
            updateReceiptBill.RB_ApprovalStatusCode = ApprovalStatusEnum.Code.YSH;
            updateReceiptBill.RB_BusinessStatusName = ReceiptBillStatusEnum.Name.YWC;
            updateReceiptBill.RB_BusinessStatusCode = ReceiptBillStatusEnum.Code.YWC;
            updateReceiptBill.RB_UpdatedBy          = LoginInfoDAX.UserName;
            updateReceiptBill.RB_UpdatedTime        = BLLCom.GetCurStdDatetime();

            #endregion

            #region 更新[付款单明细]数据

            _bll.CopyModelList <ReceiptBillManagerDetailUIModel, MDLFM_ReceiptBillDetail>(paramDetailList, updateReceiptBillDetailList);
            foreach (var loopPayBillDetaill in updateReceiptBillDetailList)
            {
                loopPayBillDetaill.WHERE_RBD_ID        = loopPayBillDetaill.RBD_ID;
                loopPayBillDetaill.WHERE_RBD_VersionNo = loopPayBillDetaill.RBD_VersionNo;
                loopPayBillDetaill.RBD_VersionNo++;
            }

            #endregion

            #region 更新[钱包余额]和新增[钱包异动]

            if (paramHead.RB_ReceiveTypeName == TradeTypeEnum.Name.WALLET)
            {
                #region 更新[钱包]

                updateWallet.WHERE_Wal_ID         = paramHead.Wal_ID;
                updateWallet.WHERE_Wal_VersionNo  = paramHead.Wal_VersionNo;
                updateWallet.Wal_AvailableBalance = paramHead.Wal_AvailableBalance - paramHead.RB_ReceiveTotalAmount;
                paramHead.Wal_AvailableBalance    = updateWallet.Wal_AvailableBalance ?? 0;

                #endregion

                #region 新增[钱包异动]

                addWalletTrans.WalT_ID          = System.Guid.NewGuid().ToString();
                addWalletTrans.WalT_Org_ID      = LoginInfoDAX.OrgID;
                addWalletTrans.WalT_Org_Name    = LoginInfoDAX.OrgShortName;
                addWalletTrans.WalT_Wal_ID      = paramHead.Wal_ID;
                addWalletTrans.WalT_Wal_No      = paramHead.Wal_No;
                addWalletTrans.WalT_Time        = BLLCom.GetCurStdDatetime();
                addWalletTrans.WalT_TypeCode    = WalTransTypeEnum.Code.XF;
                addWalletTrans.WalT_TypeName    = WalTransTypeEnum.Name.XF;
                addWalletTrans.WalT_Amount      = -paramHead.RB_ReceiveTotalAmount;
                addWalletTrans.WalT_BillNo      = paramHead.RB_No;
                addWalletTrans.WalT_IsValid     = true;
                addWalletTrans.WalT_CreatedBy   = LoginInfoDAX.UserName;
                addWalletTrans.WalT_CreatedTime = BLLCom.GetCurStdDatetime();
                addWalletTrans.WalT_UpdatedBy   = LoginInfoDAX.UserName;
                addWalletTrans.WalT_UpdatedTime = BLLCom.GetCurStdDatetime();

                #endregion
            }

            #endregion

            #endregion

            #region 带事务的保存
            try
            {
                DBManager.BeginTransaction(DBCONFIG.Coeus);

                #region 更新[收款单]

                bool updateReceiptBillResult = _bll.Save(updateReceiptBill);
                if (!updateReceiptBillResult)
                {
                    DBManager.RollBackTransaction(DBCONFIG.Coeus);
                    ResultMsg = MsgHelp.GetMsg(MsgCode.E_0010, new object[] { SystemActionEnum.Name.SAVE + SystemTableEnums.Name.FM_ReceiptBill });
                    LogHelper.WriteBussLogEndNG(BussID, LoginInfoDAX.UserName, funcName, ResultMsg, "", null);
                    return(false);
                }
                #endregion

                #region 更新[收款单明细]

                foreach (var loopReceiptBillDetail in updateReceiptBillDetailList)
                {
                    bool updateDetailResult = _bll.Update(loopReceiptBillDetail);
                    if (!updateDetailResult)
                    {
                        DBManager.RollBackTransaction(DBCONFIG.Coeus);
                        ResultMsg = MsgHelp.GetMsg(MsgCode.E_0010, new object[] { SystemActionEnum.Name.APPROVE + SystemTableEnums.Name.FM_ReceiptBillDetail });
                        return(false);
                    }
                }

                #endregion

                #region 新增[应收单]

                bool addAccountReceivableBillResult = _bll.InsertByList <MDLFM_AccountReceivableBill, MDLFM_AccountReceivableBill>(addAccountReceivableBillList);
                if (!addAccountReceivableBillResult)
                {
                    DBManager.RollBackTransaction(DBCONFIG.Coeus);
                    ResultMsg = MsgHelp.GetMsg(MsgCode.E_0010, new object[] { MsgParam.ADD + SystemTableEnums.Name.FM_AccountReceivableBill });
                    return(false);
                }

                #endregion

                #region 新增[应付单明细]

                bool addAccountReceivableBillDetailResult = _bll.InsertByList <MDLFM_AccountReceivableBillDetail, MDLFM_AccountReceivableBillDetail>(addAccountReceivableBillDetailList);
                if (!addAccountReceivableBillDetailResult)
                {
                    DBManager.RollBackTransaction(DBCONFIG.Coeus);
                    ResultMsg = MsgHelp.GetMsg(MsgCode.E_0010, new object[] { MsgParam.ADD + SystemTableEnums.Name.FM_AccountReceivableBillDetail });
                    return(false);
                }

                #endregion

                #region  更新[钱包余额]和新增[钱包异动]

                if (paramHead.RB_ReceiveTypeName == TradeTypeEnum.Name.WALLET)
                {
                    #region 更新[钱包余额]

                    bool updateWalletResult = _bll.Save(updateWallet);
                    if (!updateWalletResult)
                    {
                        DBManager.RollBackTransaction(DBCONFIG.Coeus);
                        ResultMsg = MsgHelp.GetMsg(MsgCode.E_0010, new object[] { MsgParam.UPDATE + SystemTableEnums.Name.EWM_Wallet });
                        LogHelper.WriteBussLogEndNG(BussID, LoginInfoDAX.UserName, funcName, ResultMsg, "", null);
                        return(false);
                    }

                    #endregion

                    #region 新增[钱包异动]

                    bool addWalletTransResult = _bll.Insert <MDLEWM_WalletTrans>(addWalletTrans);
                    if (!addWalletTransResult)
                    {
                        DBManager.RollBackTransaction(DBCONFIG.Coeus);
                        ResultMsg = MsgHelp.GetMsg(MsgCode.E_0010, new object[] { MsgParam.ADD + SystemTableEnums.Name.EWM_WalletTrans });
                        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.APPROVE, ex.Message });
                LogHelper.WriteBussLogEndNG(BussID, LoginInfoDAX.UserName, MethodBase.GetCurrentMethod().ToString(),
                                            ex.Message, "", null);
                return(false);
            }

            #endregion

            //将最新数据回写给DetailDS
            CopyModel(updateReceiptBill, paramHead);
            return(true);
        }
示例#3
0
        /// <summary>
        /// 保存数据
        /// </summary>
        /// <param name="paramReceiptBill"></param>
        /// <param name="paramReceiveableCollectionConfirmList"></param>
        /// <returns></returns>
        public bool SaveReceiveableCollectionConfirmData(MDLFM_ReceiptBill paramReceiptBill, List <ReceiveableCollectionConfirmUIModel> paramReceiveableCollectionConfirmList)
        {
            var funcName = "SaveReceiveableCashierConfirmData";

            LogHelper.WriteBussLogStart(BussID, LoginInfoDAX.UserName, funcName, "", "", null);

            #region 准备数据

            #region 变量定义

            //待保存的[收款单]
            MDLFM_ReceiptBill insertReceiptBill = new MDLFM_ReceiptBill();
            //待保存的[收款单明细]列表
            List <MDLFM_ReceiptBillDetail> insertReceiptBillDetailList = new List <MDLFM_ReceiptBillDetail>();
            //待更新的[应收单]列表
            List <MDLFM_AccountReceivableBill> updateAccountReceivableBillList = new List <MDLFM_AccountReceivableBill>();
            //待更新的[应付单]列表
            List <MDLFM_AccountPayableBill> updateAccountPayableBillList = new List <MDLFM_AccountPayableBill>();
            //待更新的[电子钱包]
            MDLEWM_Wallet updatewallet = new MDLEWM_Wallet();
            //待新增的[电子钱包异动]
            MDLEWM_WalletTrans insertwalletTrans = new MDLEWM_WalletTrans();

            #endregion

            #region 待保存的[收款单]

            insertReceiptBill = new MDLFM_ReceiptBill()
            {
                RB_ID                = Guid.NewGuid().ToString(),
                RB_Rec_Org_ID        = paramReceiveableCollectionConfirmList[0].BusinessOrgID,
                RB_Rec_Org_Name      = paramReceiveableCollectionConfirmList[0].BusinessOrgName,
                RB_No                = BLLCom.GetCoeusDocumentNo(DocumentTypeEnums.Code.RB),
                RB_PayObjectTypeCode = paramReceiveableCollectionConfirmList[0].PayObjectTypeCode,
                RB_PayObjectTypeName = paramReceiveableCollectionConfirmList[0].PayObjectTypeName,

                RB_PayObjectID        = paramReceiveableCollectionConfirmList[0].PayObjectID,
                RB_PayObjectName      = paramReceiveableCollectionConfirmList[0].PayObjectName,
                RB_ReceiveTypeName    = paramReceiptBill.RB_ReceiveTypeName,
                RB_ReceiveTypeCode    = paramReceiptBill.RB_ReceiveTypeCode,
                RB_ReceiveAccount     = paramReceiptBill.RB_ReceiveAccount,
                RB_CertificateNo      = paramReceiptBill.RB_CertificateNo,
                RB_ReceiveTotalAmount = paramReceiptBill.RB_ReceiveTotalAmount,
                RB_BusinessStatusName = ReceiptBillStatusEnum.Name.YWC,
                RB_BusinessStatusCode = ReceiptBillStatusEnum.Code.YWC,
                RB_ApprovalStatusName = ApprovalStatusEnum.Name.YSH,
                RB_ApprovalStatusCode = ApprovalStatusEnum.Code.YSH,
                RB_Date        = BLLCom.GetCurStdDatetime(),
                RB_Remark      = paramReceiptBill.RB_Remark,
                RB_IsValid     = true,
                RB_CreatedBy   = LoginInfoDAX.UserName,
                RB_CreatedTime = BLLCom.GetCurStdDatetime(),
                RB_UpdatedBy   = LoginInfoDAX.UserName,
                RB_UpdatedTime = BLLCom.GetCurStdDatetime(),
            };

            #endregion

            #region  待保存的[收款单明细]列表,待更新[应收单]或[应付单]列表

            foreach (var loopItem in paramReceiveableCollectionConfirmList)
            {
                if (loopItem.ThisReceiveAmount == 0 && loopItem.UnReceiveTotalAmount != 0)
                {
                    continue;
                }

                #region 待保存的[收款单明细]

                MDLFM_ReceiptBillDetail insertReceiptBillDetail = new MDLFM_ReceiptBillDetail
                {
                    RBD_ID    = System.Guid.NewGuid().ToString(),
                    RBD_RB_ID = insertReceiptBill.RB_ID,
                    RBD_RB_No = insertReceiptBill.RB_No,
                    //来源类型
                    RBD_ReceiveAmount = loopItem.ThisReceiveAmount,
                    RBD_IsValid       = true,
                    RBD_CreatedBy     = LoginInfoDAX.UserName,
                    RBD_CreatedTime   = BLLCom.GetCurStdDatetime(),
                    RBD_UpdatedBy     = LoginInfoDAX.UserName,
                    RBD_UpdatedTime   = BLLCom.GetCurStdDatetime()
                };
                if (loopItem.ARB_SourceTypeName == AccountReceivableBillSourceTypeEnum.Name.SGCJ)
                {
                    insertReceiptBillDetail.RBD_SourceTypeName = ReceiptBillDetailSourceTypeEnum.Name.SGSK;
                    insertReceiptBillDetail.RBD_SourceTypeCode = ReceiptBillDetailSourceTypeEnum.Code.SGSK;
                }
                else if (loopItem.ARB_SourceTypeName == AccountReceivableBillSourceTypeEnum.Name.XSYS)
                {
                    insertReceiptBillDetail.RBD_SourceTypeName = ReceiptBillDetailSourceTypeEnum.Name.XSSK;
                    insertReceiptBillDetail.RBD_SourceTypeCode = ReceiptBillDetailSourceTypeEnum.Code.XSSK;
                }
                else if (loopItem.ARB_SourceTypeName == AccountReceivableBillSourceTypeEnum.Name.QTYS)
                {
                    insertReceiptBillDetail.RBD_SourceTypeName = ReceiptBillDetailSourceTypeEnum.Name.QTSK;
                    insertReceiptBillDetail.RBD_SourceTypeCode = ReceiptBillDetailSourceTypeEnum.Code.QTSK;
                }
                else if (loopItem.ARB_SourceTypeName == AccountPayableBillSourceTypeEnum.Name.SHYF)
                {
                    insertReceiptBillDetail.RBD_SourceTypeName = ReceiptBillDetailSourceTypeEnum.Name.RKFK;
                    insertReceiptBillDetail.RBD_SourceTypeCode = ReceiptBillDetailSourceTypeEnum.Code.RKFK;
                }
                else if (loopItem.ARB_SourceTypeName == AccountPayableBillSourceTypeEnum.Name.CKYF)
                {
                    insertReceiptBillDetail.RBD_SourceTypeName = ReceiptBillDetailSourceTypeEnum.Name.THSK;
                    insertReceiptBillDetail.RBD_SourceTypeCode = ReceiptBillDetailSourceTypeEnum.Code.THSK;
                }
                insertReceiptBillDetail.RBD_SrcBillNo = loopItem.ARB_SrcBillNo == "" ? loopItem.ARB_No : loopItem.ARB_SrcBillNo;
                insertReceiptBillDetailList.Add(insertReceiptBillDetail);
                #endregion

                #region 待更新[应付单]或[应收单]列表

                if (loopItem.IsBusinessSourceAccountPayableBill)
                {
                    #region 待更新的[应付单]列表

                    MDLFM_AccountPayableBill updateAccountPayableBill = new MDLFM_AccountPayableBill
                    {
                        APB_ID                   = loopItem.ARB_ID,
                        APB_No                   = loopItem.ARB_No,
                        APB_BillDirectCode       = loopItem.ARB_BillDirectCode,
                        APB_BillDirectName       = loopItem.ARB_BillDirectName,
                        APB_SourceTypeCode       = loopItem.ARB_SourceTypeCode,
                        APB_SourceTypeName       = loopItem.ARB_SourceTypeName,
                        APB_SourceBillNo         = loopItem.ARB_SrcBillNo,
                        APB_Org_ID               = loopItem.ARB_Org_ID,
                        APB_Org_Name             = loopItem.ARB_Org_Name,
                        APB_AccountPayableAmount = loopItem.ARB_AccountReceivableAmount,
                        APB_ApprovalStatusCode   = loopItem.ARB_ApprovalStatusCode,
                        APB_ApprovalStatusName   = loopItem.ARB_ApprovalStatusName,
                        APB_CreatedBy            = loopItem.ARB_CreatedBy,
                        APB_CreatedTime          = loopItem.ARB_CreatedTime,
                        APB_UpdatedBy            = LoginInfoDAX.UserName,
                        APB_UpdatedTime          = BLLCom.GetCurStdDatetime(),
                        APB_VersionNo            = loopItem.ARB_VersionNo,
                        WHERE_APB_ID             = loopItem.ARB_ID,
                        WHERE_APB_VersionNo      = loopItem.ARB_VersionNo
                    };
                    if (updateAccountPayableBill.APB_BillDirectName == BillDirectionEnum.Name.PLUS)
                    {
                        //已付金额
                        updateAccountPayableBill.APB_PaidAmount = (loopItem.ARB_ReceivedAmount ?? 0) + Math.Abs(loopItem.ThisReceiveAmount ?? 0);
                    }
                    else
                    {
                        //已付金额
                        updateAccountPayableBill.APB_PaidAmount = (loopItem.ARB_ReceivedAmount ?? 0) - Math.Abs(loopItem.ThisReceiveAmount ?? 0);
                    }
                    //未付金额
                    updateAccountPayableBill.APB_UnpaidAmount = (loopItem.ARB_AccountReceivableAmount ?? 0) - (updateAccountPayableBill.APB_PaidAmount ?? 0);
                    if (Math.Abs(updateAccountPayableBill.APB_PaidAmount ?? 0) >= Math.Abs(loopItem.ARB_AccountReceivableAmount ?? 0))
                    {
                        updateAccountPayableBill.APB_UnpaidAmount = 0;
                        //单据状态
                        updateAccountPayableBill.APB_BusinessStatusCode = AccountReceivableBillStatusEnum.Code.YWC;
                        updateAccountPayableBill.APB_BusinessStatusName = AccountReceivableBillStatusEnum.Name.YWC;
                    }
                    updateAccountPayableBillList.Add(updateAccountPayableBill);

                    #endregion
                }
                else
                {
                    #region 待更新[应收单]列表

                    //应收单
                    MDLFM_AccountReceivableBill updateReceivableBill = new MDLFM_AccountReceivableBill
                    {
                        ARB_ID                      = loopItem.ARB_ID,
                        ARB_No                      = loopItem.ARB_No,
                        ARB_BillDirectCode          = loopItem.ARB_BillDirectCode,
                        ARB_BillDirectName          = loopItem.ARB_BillDirectName,
                        ARB_SourceTypeCode          = loopItem.ARB_SourceTypeCode,
                        ARB_SourceTypeName          = loopItem.ARB_SourceTypeName,
                        ARB_SrcBillNo               = loopItem.ARB_SrcBillNo,
                        ARB_Org_ID                  = loopItem.ARB_Org_ID,
                        ARB_Org_Name                = loopItem.ARB_Org_Name,
                        ARB_AccountReceivableAmount = loopItem.ARB_AccountReceivableAmount,
                        ARB_ApprovalStatusCode      = loopItem.ARB_ApprovalStatusCode,
                        ARB_ApprovalStatusName      = loopItem.ARB_ApprovalStatusName,
                        ARB_CreatedBy               = loopItem.ARB_CreatedBy,
                        ARB_CreatedTime             = loopItem.ARB_CreatedTime,
                        ARB_UpdatedBy               = LoginInfoDAX.UserName,
                        ARB_UpdatedTime             = BLLCom.GetCurStdDatetime(),
                        ARB_VersionNo               = loopItem.ARB_VersionNo,
                        WHERE_ARB_ID                = loopItem.ARB_ID,
                        WHERE_ARB_VersionNo         = loopItem.ARB_VersionNo
                    };
                    if (updateReceivableBill.ARB_BillDirectName == BillDirectionEnum.Name.PLUS)
                    {
                        //已收金额
                        updateReceivableBill.ARB_ReceivedAmount = (loopItem.ARB_ReceivedAmount ?? 0) + Math.Abs(loopItem.ThisReceiveAmount ?? 0);
                    }
                    else
                    {
                        //已收金额
                        updateReceivableBill.ARB_ReceivedAmount = (loopItem.ARB_ReceivedAmount ?? 0) - Math.Abs(loopItem.ThisReceiveAmount ?? 0);
                    }
                    //未收金额
                    updateReceivableBill.ARB_UnReceiveAmount = (loopItem.ARB_AccountReceivableAmount ?? 0) - (updateReceivableBill.ARB_ReceivedAmount ?? 0);
                    if (Math.Abs(updateReceivableBill.ARB_ReceivedAmount ?? 0) >= Math.Abs(loopItem.ARB_AccountReceivableAmount ?? 0))
                    {
                        updateReceivableBill.ARB_UnReceiveAmount = 0;
                        //单据状态
                        updateReceivableBill.ARB_BusinessStatusCode = AccountReceivableBillStatusEnum.Code.YWC;
                        updateReceivableBill.ARB_BusinessStatusName = AccountReceivableBillStatusEnum.Name.YWC;
                    }
                    updateAccountReceivableBillList.Add(updateReceivableBill);

                    #endregion
                }

                #endregion
            }

            #endregion

            #region 更新的[电子钱包]、新增的[电子钱包异动]

            if (paramReceiptBill.RB_ReceiveTypeName == TradeTypeEnum.Name.WALLET && (!string.IsNullOrEmpty(paramReceiveableCollectionConfirmList[0].Wal_ID)))
            {
                #region 待更新的[电子钱包]

                updatewallet.WHERE_Wal_ID         = paramReceiveableCollectionConfirmList[0].Wal_ID;
                updatewallet.WHERE_Wal_VersionNo  = paramReceiveableCollectionConfirmList[0].Wal_VersionNo;
                updatewallet.Wal_AvailableBalance = paramReceiveableCollectionConfirmList[0].Wal_AvailableBalance -
                                                    paramReceiptBill.RB_ReceiveTotalAmount;
                updatewallet.Wal_VersionNo = paramReceiveableCollectionConfirmList[0].Wal_VersionNo + 1;

                #endregion

                #region 待新增的[电子钱包异动]

                insertwalletTrans.WalT_ID       = System.Guid.NewGuid().ToString();
                insertwalletTrans.WalT_Org_ID   = LoginInfoDAX.OrgID;
                insertwalletTrans.WalT_Org_Name = LoginInfoDAX.OrgShortName;
                insertwalletTrans.WalT_Wal_ID   = paramReceiveableCollectionConfirmList[0].Wal_ID;
                insertwalletTrans.WalT_Wal_No   = paramReceiveableCollectionConfirmList[0].Wal_No;
                insertwalletTrans.WalT_Time     = BLLCom.GetCurStdDatetime();
                insertwalletTrans.WalT_TypeCode = WalTransTypeEnum.Code.XF;
                insertwalletTrans.WalT_TypeName = WalTransTypeEnum.Name.XF;

                insertwalletTrans.WalT_Amount      = -paramReceiptBill.RB_ReceiveTotalAmount;;
                insertwalletTrans.WalT_BillNo      = insertReceiptBill.RB_No;
                insertwalletTrans.WalT_IsValid     = true;
                insertwalletTrans.WalT_CreatedBy   = LoginInfoDAX.UserName;
                insertwalletTrans.WalT_CreatedTime = BLLCom.GetCurStdDatetime();
                insertwalletTrans.WalT_UpdatedBy   = LoginInfoDAX.UserName;
                insertwalletTrans.WalT_UpdatedTime = BLLCom.GetCurStdDatetime();

                #endregion
            }

            #endregion

            #endregion

            #region 带事务的保存

            try
            {
                DBManager.BeginTransaction(DBCONFIG.Coeus);

                #region 保存[收款单]

                bool insertReceiptBillResult = _bll.Insert(insertReceiptBill);
                if (!insertReceiptBillResult)
                {
                    DBManager.RollBackTransaction(DBCONFIG.Coeus);
                    ResultMsg = MsgHelp.GetMsg(MsgCode.E_0010, new object[] { MsgParam.ADD + SystemTableEnums.Name.FM_ReceiptBill });
                    LogHelper.WriteBussLogEndNG(BussID, LoginInfoDAX.UserName, funcName, ResultMsg, "", null);
                    return(false);
                }

                #endregion

                #region 保存[收款单明细]

                if (insertReceiptBillDetailList.Count > 0)
                {
                    bool insertReceiptBillDetailResult = _bll.InsertByList <MDLFM_ReceiptBillDetail, MDLFM_ReceiptBillDetail>(insertReceiptBillDetailList);
                    if (!insertReceiptBillDetailResult)
                    {
                        DBManager.RollBackTransaction(DBCONFIG.Coeus);
                        ResultMsg = MsgHelp.GetMsg(MsgCode.E_0010, new object[] { MsgParam.ADD + SystemTableEnums.Name.FM_PayBillDetail });
                        LogHelper.WriteBussLogEndNG(BussID, LoginInfoDAX.UserName, funcName, ResultMsg, "", null);
                        return(false);
                    }
                }

                #endregion

                #region 更新[应收单]列表

                if (updateAccountReceivableBillList.Count > 0)
                {
                    foreach (var loopAccountReceivableBill in updateAccountReceivableBillList)
                    {
                        bool updateAccountReceivableBill = _bll.Update(loopAccountReceivableBill);
                        if (!updateAccountReceivableBill)
                        {
                            DBManager.RollBackTransaction(DBCONFIG.Coeus);
                            ResultMsg = MsgHelp.GetMsg(MsgCode.E_0010, new object[] { MsgParam.UPDATE + SystemTableEnums.Name.FM_AccountReceivableBill });
                            LogHelper.WriteBussLogEndNG(BussID, LoginInfoDAX.UserName, funcName, ResultMsg, "", null);
                            return(false);
                        }
                    }
                }
                #endregion

                #region 更新[应付单]列表

                if (updateAccountPayableBillList.Count > 0)
                {
                    foreach (var loopAccountPayableBill in updateAccountPayableBillList)
                    {
                        bool updateAccountReceivableBill = _bll.Update(loopAccountPayableBill);
                        if (!updateAccountReceivableBill)
                        {
                            DBManager.RollBackTransaction(DBCONFIG.Coeus);
                            ResultMsg = MsgHelp.GetMsg(MsgCode.E_0010, new object[] { MsgParam.UPDATE + SystemTableEnums.Name.FM_AccountPayableBill });
                            LogHelper.WriteBussLogEndNG(BussID, LoginInfoDAX.UserName, funcName, ResultMsg, "", null);
                            return(false);
                        }
                    }
                }

                #endregion

                #region 更新的[电子钱包]、新增的[电子钱包异动]

                if (paramReceiptBill.RB_ReceiveTypeName == TradeTypeEnum.Name.WALLET && (!string.IsNullOrEmpty(paramReceiveableCollectionConfirmList[0].Wal_ID)))
                {
                    #region 更新的[电子钱包]

                    bool updatewalletResult = _bll.Update(updatewallet);
                    if (!updatewalletResult)
                    {
                        DBManager.RollBackTransaction(DBCONFIG.Coeus);
                        ResultMsg = MsgHelp.GetMsg(MsgCode.E_0010, new object[] { MsgParam.UPDATE + SystemTableEnums.Name.EWM_Wallet });
                        LogHelper.WriteBussLogEndNG(BussID, LoginInfoDAX.UserName, funcName, ResultMsg, "", null);
                        return(false);
                    }

                    #endregion

                    #region 待新增的[电子钱包异动]

                    bool insertwalletTranslResult = _bll.Insert(insertwalletTrans);
                    if (!insertwalletTranslResult)
                    {
                        DBManager.RollBackTransaction(DBCONFIG.Coeus);
                        ResultMsg = MsgHelp.GetMsg(MsgCode.E_0010, new object[] { MsgParam.ADD + SystemTableEnums.Name.EWM_WalletTrans });
                        LogHelper.WriteBussLogEndNG(BussID, LoginInfoDAX.UserName, funcName, ResultMsg, "", null);
                        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.SAVE, ex.Message });
                LogHelper.WriteBussLogEndNG(BussID, LoginInfoDAX.UserName, funcName, ex.Message, "", null);
                return(false);
            }

            #endregion

            return(true);
        }