Ejemplo n.º 1
0
        /// <summary>
        /// 添加往来单位收付款到ERP 返回生成的单据号
        /// modifyed by liangcanren 2015-03-13
        /// </summary>
        /// <param name="fundReceiptInfo"></param>
        /// <returns></returns>
        public string InsertCompanyFundReceipt(CompanyFundReceiptInfo fundReceiptInfo)
        {
            string tradeCode =
                _codeManager.GetCode(fundReceiptInfo.ReceiptType == (int)CompanyFundReceiptType.Receive ? CodeType.GT : CodeType.PY);

            if (string.IsNullOrEmpty(tradeCode))
            {
                return(string.Empty);
            }
            fundReceiptInfo.ReceiptNo = string.Format("{0}{1}", "S", tradeCode);
            fundReceiptInfo.IsOut     = false;
            var result = _companyFundReceipt.Insert(fundReceiptInfo);

            if (result)
            {
                return(fundReceiptInfo.ReceiptNo);
            }
            return(string.Empty);
        }
Ejemplo n.º 2
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        // ReSharper disable once FunctionComplexityOverflow
        protected void OnFinishClick(object sender, EventArgs e)
        {
            if (!_submitController.Enabled)
            {
                RAM.Alert("请不要重复提交!");
                return;
            }
            if (rgCheckHistory.SelectedItems.Count == 0)
            {
                RAM.Alert("请选择待完成帐!");
                return;
            }
            var checkList  = new List <CheckDataRecordInfo>();
            var dictionary = new Dictionary <Guid, int>();

            foreach (GridDataItem item in rgCheckHistory.SelectedItems)
            {
                var checkId = new Guid(item.GetDataKeyValue("CheckId").ToString());
                var info    = _checkDataManagerWrite.GetCheckDataInfoById(checkId);
                if (info != null)
                {
                    switch (info.CheckDataState)
                    {
                    case (int)CheckDataState.Finished:
                        checkList.Add(info);
                        dictionary.Add(info.CheckId, info.CheckType);
                        break;

                    default:
                        RAM.Alert("系统提示:选项中存在已完成或处理中对账记录!");
                        return;
                    }
                }
            }
            var companyList = checkList.GroupBy(act => act.CheckCompanyId).Select(act => act.Key).ToList();

            if (companyList.Count > 1)
            {
                RAM.Alert("系统提示:多条记录对账只能在同快递公司之间!");
                return;
            }
            IList <CompanyFundReceiptInfo> receiptList = new List <CompanyFundReceiptInfo>();
            var personnelInfo = CurrentSession.Personnel.Get();

            IList <ExceptionReckoningInfo> newList = new BindingList <ExceptionReckoningInfo>();

            #region [计算当前选择的对账记录需要生成的各公司的收付款记录]

            //计算当前选择的对账记录需要生成的各公司的收付款记录
            foreach (var key in dictionary.Keys)
            {
                var list = _checkDataManagerWrite.GetTotalMoney(key); //实际对账金额 (实收金额累计)
                foreach (var item in list)
                {
                    decimal totalMoney  = 0;
                    decimal serverMoney = 0;
                    decimal exceptionMoney;
                    if (dictionary[key] == (int)ReckoningCheckType.Carriage)
                    {
                        totalMoney    -= item.SumFinanceConfirmMoney;
                        serverMoney   -= item.SumConfirmMoney;
                        exceptionMoney = item.SumConfirmMoney - item.SumFinanceConfirmMoney;
                    }
                    else
                    {
                        totalMoney    += item.SumFinanceConfirmMoney;
                        serverMoney   += item.SumConfirmMoney;
                        exceptionMoney = item.SumFinanceConfirmMoney - item.SumConfirmMoney;
                    }
                    if (totalMoney == 0)
                    {
                        continue;
                    }
                    //公司收付款
                    if (item.IsOut)
                    {
                        var tempInfo = newList.FirstOrDefault(ent => ent.FilialeId == item.FilialeId && ent.IsOut);
                        if (tempInfo != null)
                        {
                            /*------公司账务合并------||-------------------------收款----------------------------||-------------------------付款----------------------------*/
                            //zal 2015-11-23
                            if (CKB_Merger.Checked || (totalMoney > 0 && tempInfo.SumFinanceConfirmMoney > 0) || (totalMoney < 0 && tempInfo.SumFinanceConfirmMoney < 0))
                            {
                                tempInfo.FilialeId               = item.FilialeId;
                                tempInfo.FilialeName             = item.FilialeName;
                                tempInfo.DiffMoney              += exceptionMoney;
                                tempInfo.SumConfirmMoney        += serverMoney;
                                tempInfo.SumFinanceConfirmMoney += totalMoney;
                                tempInfo.IsOut = true;
                            }
                            else
                            {
                                var tempInfo1 = new ExceptionReckoningInfo
                                {
                                    FilialeId              = item.FilialeId,
                                    FilialeName            = item.FilialeName,
                                    DiffMoney              = exceptionMoney,
                                    SumConfirmMoney        = serverMoney,
                                    SumFinanceConfirmMoney = totalMoney,
                                    IsOut = true
                                };
                                newList.Add(tempInfo1);
                            }
                        }
                        else
                        {
                            var tempInfo1 = new ExceptionReckoningInfo
                            {
                                FilialeId              = item.FilialeId,
                                FilialeName            = item.FilialeName,
                                DiffMoney              = exceptionMoney,
                                SumConfirmMoney        = serverMoney,
                                SumFinanceConfirmMoney = totalMoney,
                                IsOut = true
                            };
                            newList.Add(tempInfo1);
                        }
                    }
                    else
                    {
                        var tempInfo = newList.FirstOrDefault(ent => ent.FilialeId == _reckoningElseFilialeid && ent.IsOut == false);
                        if (tempInfo != null)
                        {
                            /*------公司账务合并------||-------------------------收款----------------------------||-------------------------付款----------------------------*/
                            //zal 2015-11-23
                            if (CKB_Merger.Checked || (totalMoney > 0 && tempInfo.SumFinanceConfirmMoney > 0) || (totalMoney < 0 && tempInfo.SumFinanceConfirmMoney < 0))
                            {
                                tempInfo.FilialeId               = _reckoningElseFilialeid;
                                tempInfo.FilialeName             = "ERP";
                                tempInfo.DiffMoney              += exceptionMoney;
                                tempInfo.SumConfirmMoney        += serverMoney;
                                tempInfo.SumFinanceConfirmMoney += totalMoney;
                                tempInfo.IsOut = false;
                            }
                            else
                            {
                                var tempInfo1 = new ExceptionReckoningInfo
                                {
                                    FilialeId              = _reckoningElseFilialeid,
                                    FilialeName            = "ERP",
                                    DiffMoney              = exceptionMoney,
                                    SumConfirmMoney        = serverMoney,
                                    SumFinanceConfirmMoney = totalMoney,
                                    IsOut = false
                                };
                                newList.Add(tempInfo1);
                            }
                        }
                        else
                        {
                            var tempInfo1 = new ExceptionReckoningInfo
                            {
                                FilialeId              = _reckoningElseFilialeid,
                                FilialeName            = "ERP",
                                DiffMoney              = exceptionMoney,
                                SumConfirmMoney        = serverMoney,
                                SumFinanceConfirmMoney = totalMoney,
                                IsOut = false
                            };
                            newList.Add(tempInfo1);
                        }
                    }
                }
            }

            #endregion

            #region [生成个公司收付款单据]
            //生成个公司收付款单据
            foreach (var info in newList)
            {
                if (info.IsOut)
                {
                    //生成往来单位收付款
                    var receipt = new CompanyFundReceiptInfo
                    {
                        ReceiptNo       = _codeManager.GetCode(info.SumFinanceConfirmMoney > 0 ? CodeType.GT : CodeType.PY),
                        ReceiptType     = Convert.ToInt32(info.SumFinanceConfirmMoney > 0 ? CompanyFundReceiptType.Receive : CompanyFundReceiptType.Payment),
                        ApplyDateTime   = DateTime.Now,
                        ApplicantID     = personnelInfo.PersonnelId,
                        PurchaseOrderNo = string.Empty,
                        CompanyID       = companyList[0]
                    };
                    string msg = "{0} 应{1}总额:{2},我方总额:{3},异常总额:{4}";  //确认金额,系统金额,异常金额
                    msg = string.Format(msg, info.FilialeName, info.SumFinanceConfirmMoney > 0 ? "收" : "付", Math.Abs(info.SumFinanceConfirmMoney).ToString("f2"),
                                        Math.Abs(info.SumConfirmMoney).ToString("f2"), Math.Abs(info.DiffMoney).ToString("f2"));
                    receipt.HasInvoice           = true;
                    receipt.SettleStartDate      = Convert.ToDateTime("1999-09-09");
                    receipt.SettleEndDate        = Convert.ToDateTime("1999-09-09");
                    receipt.ExpectBalance        = Math.Abs(info.SumFinanceConfirmMoney);
                    receipt.RealityBalance       = Math.Abs(info.SumFinanceConfirmMoney);
                    receipt.DiscountMoney        = 0;
                    receipt.DiscountCaption      = string.Empty;
                    receipt.OtherDiscountCaption = "[快递对账生成的收付款]";
                    receipt.FilialeId            = info.FilialeId;
                    receipt.ReceiptStatus        = info.SumFinanceConfirmMoney < 0
                        ? Convert.ToInt32(CompanyFundReceiptState.WaitAuditing)
                        : Convert.ToInt32(CompanyFundReceiptState.WaitInvoice);
                    receipt.StockOrderNos = string.Empty;
                    receipt.Remark        = WebControl.RetrunUserAndTime(msg);
                    receipt.IsOut         = true;
                    receipt.PaymentDate   = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM"));
                    receiptList.Add(receipt);
                }
                else
                {
                    var receipt = new CompanyFundReceiptInfo
                    {
                        ReceiptNo       = _codeManager.GetCode(info.SumFinanceConfirmMoney > 0 ? CodeType.GT : CodeType.PY),
                        ReceiptType     = Convert.ToInt32(info.SumFinanceConfirmMoney > 0 ? CompanyFundReceiptType.Receive : CompanyFundReceiptType.Payment),
                        ApplyDateTime   = DateTime.Now,
                        ApplicantID     = personnelInfo.PersonnelId,
                        PurchaseOrderNo = string.Empty,
                        CompanyID       = companyList[0]
                    };
                    string msg = "{0} 应{1}总额:{2},我方总额:{3},异常总额:{4}";  //确认金额,系统金额,异常金额
                    msg = string.Format(msg, "其他公司", info.SumFinanceConfirmMoney > 0 ? "收" : "付", Math.Abs(info.SumFinanceConfirmMoney).ToString("f2"), Math.Abs(info.SumConfirmMoney).ToString("f2"), Math.Abs(info.DiffMoney).ToString("f2"));
                    receipt.HasInvoice           = false;
                    receipt.SettleStartDate      = Convert.ToDateTime("1999-09-09");
                    receipt.SettleEndDate        = Convert.ToDateTime("1999-09-09");
                    receipt.ExpectBalance        = Math.Abs(info.SumFinanceConfirmMoney);
                    receipt.RealityBalance       = Math.Abs(info.SumFinanceConfirmMoney);
                    receipt.DiscountMoney        = 0;
                    receipt.DiscountCaption      = string.Empty;
                    receipt.OtherDiscountCaption = "[快递对账生成的收付款]";
                    receipt.FilialeId            = _reckoningElseFilialeid;
                    receipt.ReceiptStatus        = info.SumFinanceConfirmMoney < 0
                        ? Convert.ToInt32(CompanyFundReceiptState.WaitAuditing)
                        : Convert.ToInt32(CompanyFundReceiptState.Audited);
                    receipt.StockOrderNos = string.Empty;
                    receipt.Remark        = WebControl.RetrunUserAndTime(msg);
                    receipt.IsOut         = false;
                    receipt.PaymentDate   = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM"));
                    receiptList.Add(receipt);
                }
            }
            #endregion

            #region [最初处理方式暂注释]
            //foreach (var key in dictionary.Keys)
            //{
            //    //decimal money = checkDataManager.GetTotalMoney(key);
            //    //decimal server = checkDataManager.GetServerMoney(key);
            //    var list = checkDataManager.GetTotalMoney(key); //实际对账金额 (实收金额累计)
            //    IList<ExceptionReckoningInfo> filialeExceptionReckoningInfoList = new BindingList<ExceptionReckoningInfo>();
            //    IList<ExceptionReckoningInfo> elseExceptionReckoningInfoList = new BindingList<ExceptionReckoningInfo>();
            //    foreach (var item in list)
            //    {
            //        if (item.IsOut)
            //            filialeExceptionReckoningInfoList.Add(item);
            //        else
            //            elseExceptionReckoningInfoList.Add(item);
            //    }
            //    //生成公司的往来单位收付款
            //    foreach (var item in filialeExceptionReckoningInfoList)
            //    {
            //        decimal totalMoney = 0;
            //        decimal serverMoney = 0;
            //        decimal exceptionMoney;
            //        if (dictionary[key] == (int)ReckoningCheckType.Carriage)
            //        {
            //            totalMoney -= item.SumFinanceConfirmMoney;
            //            serverMoney -= item.SumConfirmMoney;
            //            exceptionMoney = item.SumConfirmMoney - item.SumFinanceConfirmMoney;
            //        }
            //        else
            //        {
            //            totalMoney += item.SumFinanceConfirmMoney;
            //            serverMoney += item.SumConfirmMoney;
            //            exceptionMoney = item.SumFinanceConfirmMoney - item.SumConfirmMoney;
            //        }
            //        if (totalMoney == 0) continue;
            //        //生成往来单位收付款
            //        var receipt = new CompanyFundReceiptInfo
            //        {
            //            ReceiptNo = codeManager.GetCode(totalMoney > 0 ? CodeType.GT : CodeType.PY),
            //            ReceiptType = Convert.ToInt32(totalMoney > 0 ? CompanyFundReceiptType.Receive : CompanyFundReceiptType.Payment),
            //            ApplyDateTime = DateTime.Now,
            //            ApplicantID = personnelInfo.PersonnelId,
            //            PurchaseOrderNo = string.Empty,
            //            CompanyID = companyList[0]
            //        };
            //        string msg = "{0} 应{1}总额:{2},我方总额:{3},异常总额:{4}";  //确认金额,系统金额,异常金额
            //        msg = string.Format(msg, item.FilialeName, totalMoney > 0 ? "收" : "付", Math.Abs(totalMoney).ToString("f2"),
            //            Math.Abs(serverMoney).ToString("f2"), Math.Abs(exceptionMoney).ToString("f2"));
            //        receipt.HasInvoice = item.IsOut;
            //        receipt.SettleStartDate = Convert.ToDateTime("1999-09-09");
            //        receipt.SettleEndDate = Convert.ToDateTime("1999-09-09");
            //        receipt.ExpectBalance = Math.Abs(totalMoney);
            //        receipt.RealityBalance = Math.Abs(totalMoney);
            //        receipt.DiscountMoney = 0;
            //        receipt.DiscountCaption = string.Empty;
            //        receipt.OtherDiscountCaption = "[快递对账生成的收付款]";
            //        receipt.FilialeId = item.FilialeId;
            //        receipt.ReceiptStatus = totalMoney < 0
            //            ? Convert.ToInt32(CompanyFundReceiptState.WaitAuditing)
            //            : Convert.ToInt32(CompanyFundReceiptState.WaitInvoice);
            //        receipt.StockOrderNos = string.Empty;
            //        receipt.Remark = WebControl.RetrunUserAndTime(msg);
            //        receipt.IsOut = item.IsOut;
            //        receiptList.Add(receipt);
            //    }

            //    if (elseExceptionReckoningInfoList.Count > 0)
            //    {
            //        decimal totalMoney = 0;
            //        decimal serverMoney = 0;
            //        decimal exceptionMoney;
            //        var sumFinanceConfirmMoney = elseExceptionReckoningInfoList.Sum(ent => ent.SumFinanceConfirmMoney);
            //        var sumConfirmMoney = elseExceptionReckoningInfoList.Sum(ent => ent.SumConfirmMoney);
            //        if (dictionary[key] == (int)ReckoningCheckType.Carriage)
            //        {
            //            totalMoney -= sumFinanceConfirmMoney;
            //            serverMoney -= sumConfirmMoney;
            //            exceptionMoney = sumConfirmMoney - sumFinanceConfirmMoney;
            //        }
            //        else
            //        {
            //            totalMoney += sumFinanceConfirmMoney;
            //            serverMoney += sumConfirmMoney;
            //            exceptionMoney = sumFinanceConfirmMoney - sumConfirmMoney;
            //        }
            //        if (totalMoney == 0) continue;
            //        //生成往来单位收付款
            //        var receipt = new CompanyFundReceiptInfo
            //        {
            //            ReceiptNo = codeManager.GetCode(totalMoney > 0 ? CodeType.GT : CodeType.PY),
            //            ReceiptType = Convert.ToInt32(totalMoney > 0 ? CompanyFundReceiptType.Receive : CompanyFundReceiptType.Payment),
            //            ApplyDateTime = DateTime.Now,
            //            ApplicantID = personnelInfo.PersonnelId,
            //            PurchaseOrderNo = string.Empty,
            //            CompanyID = companyList[0]
            //        };
            //        string msg = "{0} 应{1}总额:{2},我方总额:{3},异常总额:{4}";  //确认金额,系统金额,异常金额
            //        msg = string.Format(msg, "其他公司", totalMoney > 0 ? "收" : "付", Math.Abs(totalMoney).ToString("f2"), Math.Abs(serverMoney).ToString("f2"), Math.Abs(exceptionMoney).ToString("f2"));
            //        receipt.HasInvoice = false;
            //        receipt.SettleStartDate = Convert.ToDateTime("1999-09-09");
            //        receipt.SettleEndDate = Convert.ToDateTime("1999-09-09");
            //        receipt.ExpectBalance = Math.Abs(totalMoney);
            //        receipt.RealityBalance = Math.Abs(totalMoney);
            //        receipt.DiscountMoney = 0;
            //        receipt.DiscountCaption = string.Empty;
            //        receipt.OtherDiscountCaption = "[快递对账生成的收付款]";
            //        receipt.FilialeId = _reckoningElseFilialeid;
            //        receipt.ReceiptStatus = totalMoney < 0
            //            ? Convert.ToInt32(CompanyFundReceiptState.WaitAuditing)
            //            : Convert.ToInt32(CompanyFundReceiptState.Audited);
            //        receipt.StockOrderNos = string.Empty;
            //        receipt.Remark = WebControl.RetrunUserAndTime(msg);
            //        receipt.IsOut = false;
            //        receiptList.Add(receipt);
            //    }

            //}
            #endregion

            #region  添加往来账,修改往来账
            try
            {
                using (var scop = new TransactionScope())
                {
                    if (receiptList.Count > 0)
                    {
                        ICompanyFundReceipt companyFundReceipt = new DAL.Implement.Inventory.CompanyFundReceipt(GlobalConfig.DB.FromType.Write);
                        foreach (var item in receiptList)
                        {
                            bool isInsert = companyFundReceipt.Insert(item);
                            var  info     = companyFundReceipt.GetFundReceiptInfoByReceiptNo(item.ReceiptNo);
                            if (isInsert && info.ReceiptID != Guid.Empty)
                            {
                                WebControl.AddOperationLog(personnelInfo.PersonnelId, personnelInfo.RealName,
                                                           info.ReceiptID, info.ReceiptNo, item.RealityBalance > 0
                                        ? OperationPoint.CurrentReceivedPayment.FillBill.GetBusinessInfo()
                                        : OperationPoint.CurrentReceivedPayment.FillPayment.GetBusinessInfo(), string.Empty);
                                WebControl.AddOperationLog(personnelInfo.PersonnelId, personnelInfo.RealName, info.ReceiptID, info.ReceiptNo, OperationPoint.CurrentReceivedPayment.Remarks.GetBusinessInfo(), string.Empty);
                            }
                        }
                    }
                    var mediumReckoning = MediumReckoning.WriteInstance;
                    foreach (var key in dictionary.Keys)
                    {
                        _checkDataManagerWrite.UpdateState(key, (int)CheckDataState.Checked);
                        mediumReckoning.DeleteTempReckoning(key);
                    }
                    scop.Complete();
                }
                _submitController.Submit();
            }
            catch (Exception ex)
            {
                RAM.Alert("往来账处理异常:" + ex.Message);
                return;
            }
            //if (!string.IsNullOrWhiteSpace(receiptNo))
            //{
            //    RAM.ResponseScripts.Add(string.Format("return ShowCheckHistoryForm('{0}')", receiptNo));
            //}
            //else
            //{
            RAM.Alert("往来账收付款生成完毕!");
            // }
            #endregion
            rgCheckHistory.Rebind();
        }
Ejemplo n.º 3
0
        /// <summary>
        /// 供应商对账
        /// </summary>
        /// <param name="checkType">往来单据付款类型</param>
        /// <param name="receiptInfo">往来单位收付款</param>
        /// <param name="description">描述备注</param>
        /// <param name="reckoningInfos">待添加的往来帐</param>
        /// <param name="stockOrderNos">入库单据集合</param>
        /// <param name="removeNos"></param>
        /// <param name="receiveBill">收款单</param>
        /// <param name="errorMsg">错误信息</param>
        /// <returns></returns>
        public static bool CheckCompany(int checkType, CompanyFundReceiptInfo receiptInfo,
                                        string description, IList <ReckoningInfo> reckoningInfos,
                                        IList <string> stockOrderNos, IList <string> removeNos, out CompanyFundReceiptInfo receiveBill, out string errorMsg)
        {
            receiveBill = null;
            var             codeManager        = new CodeManager();
            ICompanyCussent companyCussent     = new CompanyCussent(GlobalConfig.DB.FromType.Write);
            var             companyCussentInfo = companyCussent.GetCompanyCussent(receiptInfo.CompanyID); //判断往来单位是否为内部公司

            if (companyCussentInfo == null)
            {
                errorMsg = "往来单位信息获取失败";
                return(false);
            }
            var reckoningId   = Guid.NewGuid();
            var reckoningInfo = new ReckoningInfo(reckoningId, receiptInfo.FilialeId, receiptInfo.CompanyID, codeManager.GetCode(CodeType.PY), description,
                                                  receiptInfo.RealityBalance, (int)ReckoningType.Income,
                                                  (int)ReckoningStateType.Currently,
                                                  (int)CheckType.IsChecked, (int)AuditingState.Yes,
                                                  receiptInfo.ReceiptNo, Guid.Empty)
            {
                IsOut = receiptInfo.IsOut
            };
            IReckoning reckoning        = new Reckoning(GlobalConfig.DB.FromType.Write);
            var        thirdCompanyInfo = companyCussent.GetCompanyByRelevanceFilialeId(receiptInfo.FilialeId);

            #region 如果公司内部付款时 生成对应的已完成的收款往来单据)
            if (companyCussentInfo.RelevanceFilialeId != Guid.Empty)
            {
                if (thirdCompanyInfo == null)
                {
                    errorMsg = "付款公司未关联供应商";
                    return(false);
                }
                receiveBill = new CompanyFundReceiptInfo
                {
                    FilialeId            = companyCussentInfo.RelevanceFilialeId,
                    CompanyID            = thirdCompanyInfo.CompanyId,
                    PayBankAccountsId    = receiptInfo.ReceiveBankAccountId,
                    ReceiptType          = (int)CompanyFundReceiptType.Receive,
                    ReceiptStatus        = (int)CompanyFundReceiptState.Finish,
                    ReceiptID            = Guid.NewGuid(),
                    ReceiptNo            = codeManager.GetCode(CodeType.GT),
                    ApplyDateTime        = receiptInfo.ApplyDateTime,
                    PurchaseOrderNo      = "",
                    ReceiveBankAccountId = Guid.Empty,
                    StockOrderNos        = "",
                    DealFlowNo           = "",
                    FinishDate           = DateTime.Now,
                    AuditingDate         = receiptInfo.AuditingDate,
                    AuditorID            = receiptInfo.AuditorID,
                    Poundage             = 0,
                    ExecuteDateTime      = DateTime.Now,
                    Remark = string.Format("[公司内部付款单:{0}]", receiptInfo.ReceiptNo),
                    OtherDiscountCaption = "",
                    DiscountCaption      = "",
                    DiscountMoney        = 0,
                    DebarStockNos        = "",
                    LastRebate           = 0,
                    ApplicantID          = receiptInfo.ApplicantID,
                    AuditFailureReason   = "",
                    CompanyName          = thirdCompanyInfo.CompanyName,
                    ExpectBalance        = receiptInfo.RealityBalance,
                    HasInvoice           = receiptInfo.HasInvoice,
                    RealityBalance       = receiptInfo.RealityBalance,
                    IncludeStockNos      = "",
                    PaymentDate          = receiptInfo.PaymentDate,
                    SettleStartDate      = receiptInfo.SettleStartDate,
                    SettleEndDate        = receiptInfo.SettleEndDate
                };
            }
            #endregion
            switch (checkType)
            {
                #region //按采购单进行付款   如果往来单位是关联内部公司:ex:可得向可镜采购  那么可得付完款平账完成  可镜收款完成 平账
            case 1:
                var purchaseOrderNos = receiptInfo.PurchaseOrderNo.Split(',');
                if (purchaseOrderNos.Length > 1)
                {
                    IPurchasing purchasing = new Purchasing(GlobalConfig.DB.FromType.Read);
                    foreach (var purchaseOrderNo in purchaseOrderNos)
                    {
                        var totalPrice = purchasing.GetPurchasingAmount(purchaseOrderNo);
                        if (receiptInfo.DiscountMoney != 0)
                        {
                            totalPrice -= Math.Abs(receiptInfo.DiscountMoney);
                        }
                        if (receiptInfo.LastRebate != 0)
                        {
                            totalPrice -= Math.Abs(receiptInfo.LastRebate);
                        }
                        reckoningInfos.Add(new ReckoningInfo(Guid.NewGuid(), receiptInfo.FilialeId, receiptInfo.CompanyID, codeManager.GetCode(CodeType.PY), description,
                                                             totalPrice, (int)ReckoningType.Income,
                                                             (int)ReckoningStateType.Currently,
                                                             (int)CheckType.IsChecked, (int)AuditingState.Yes,
                                                             purchaseOrderNo, Guid.Empty)
                        {
                            IsOut         = receiptInfo.IsOut,
                            LinkTradeType = (int)ReckoningLinkTradeType.PurchasingNo
                        });

                        if (companyCussentInfo.RelevanceFilialeId != Guid.Empty)
                        {
                            reckoningInfos.Add(new ReckoningInfo(Guid.NewGuid(), companyCussentInfo.RelevanceFilialeId, thirdCompanyInfo.CompanyId, codeManager.GetCode(CodeType.PY), description,
                                                                 -totalPrice, (int)ReckoningType.Defray,
                                                                 (int)ReckoningStateType.Currently,
                                                                 (int)CheckType.IsChecked, (int)AuditingState.Yes,
                                                                 purchaseOrderNo, Guid.Empty)
                            {
                                IsOut         = receiptInfo.IsOut,
                                LinkTradeType = (int)ReckoningLinkTradeType.PurchasingNo
                            });
                        }
                    }
                    //将物流公司销售出库给销售公司的往来账平掉
                    reckoning.CheckByPurchaseOrder(purchaseOrderNos, reckoningInfo.FilialeId, receiptInfo.CompanyID, receiptInfo.SettleStartDate);
                    if (companyCussentInfo.RelevanceFilialeId != Guid.Empty)
                    {
                        reckoning.CheckByPurchaseOrder(purchaseOrderNos, companyCussentInfo.RelevanceFilialeId, thirdCompanyInfo.CompanyId, receiptInfo.SettleStartDate);
                    }
                }
                else
                {
                    reckoningInfo.LinkTradeCode = receiptInfo.PurchaseOrderNo;
                    reckoningInfo.LinkTradeType = (int)ReckoningLinkTradeType.PurchasingNo;
                    reckoningInfos.Add(reckoningInfo);
                    //将物流公司销售出库给销售公司的往来账平掉
                    reckoning.CheckByPurchaseOrder(purchaseOrderNos, reckoningInfo.FilialeId, receiptInfo.CompanyID, receiptInfo.SettleStartDate);
                    if (companyCussentInfo.RelevanceFilialeId != Guid.Empty)
                    {
                        reckoningInfos.Add(new ReckoningInfo(Guid.NewGuid(), companyCussentInfo.RelevanceFilialeId, thirdCompanyInfo.CompanyId, codeManager.GetCode(CodeType.PY), description,
                                                             -receiptInfo.RealityBalance, (int)ReckoningType.Defray,
                                                             (int)ReckoningStateType.Currently,
                                                             (int)CheckType.IsChecked, (int)AuditingState.Yes,
                                                             receiptInfo.PurchaseOrderNo, Guid.Empty)
                        {
                            IsOut         = receiptInfo.IsOut,
                            LinkTradeType = (int)ReckoningLinkTradeType.PurchasingNo
                        });
                        reckoning.CheckByPurchaseOrder(purchaseOrderNos, companyCussentInfo.RelevanceFilialeId, receiptInfo.CompanyID, receiptInfo.SettleStartDate);
                    }
                }

                break;
                #endregion

            case 2:      //按入库单进行付款
                var stockNos = receiptInfo.StockOrderNos.Split(',');
                reckoning.CheckByStorageTradeCode(stockNos, reckoningInfo.FilialeId, receiptInfo.CompanyID, receiptInfo.SettleStartDate);
                reckoningInfo.LinkTradeType = (int)ReckoningLinkTradeType.StockIn;
                reckoningInfos.Add(reckoningInfo);

                if (companyCussentInfo.RelevanceFilialeId != Guid.Empty)
                {
                    reckoningInfos.Add(new ReckoningInfo(Guid.NewGuid(), companyCussentInfo.RelevanceFilialeId, thirdCompanyInfo.CompanyId, codeManager.GetCode(CodeType.PY), description,
                                                         -receiptInfo.RealityBalance, (int)ReckoningType.Defray,
                                                         (int)ReckoningStateType.Currently,
                                                         (int)CheckType.IsChecked, (int)AuditingState.Yes,
                                                         receiptInfo.ReceiptNo, Guid.Empty)
                    {
                        IsOut = receiptInfo.IsOut
                    });
                    reckoning.CheckByStorageTradeCode(stockNos, companyCussentInfo.RelevanceFilialeId, thirdCompanyInfo.CompanyId, receiptInfo.SettleStartDate);
                }
                break;

            case 3:     //按日期付款
                reckoningInfo.LinkTradeType = (int)ReckoningLinkTradeType.CompanyFundReceipt;
                var result = reckoning.CheckByDate(receiptInfo.CompanyID, reckoningInfo.FilialeId, receiptInfo.SettleStartDate, receiptInfo.SettleEndDate.AddDays(1).AddSeconds(-1), (int)CheckType.NotCheck, stockOrderNos, removeNos);
                if (result)
                {
                    if (companyCussentInfo.RelevanceFilialeId != Guid.Empty)
                    {
                        reckoningInfos.Add(new ReckoningInfo(Guid.NewGuid(), companyCussentInfo.RelevanceFilialeId, thirdCompanyInfo.CompanyId, codeManager.GetCode(CodeType.PY), description,
                                                             -receiptInfo.RealityBalance, (int)ReckoningType.Defray,
                                                             (int)ReckoningStateType.Currently,
                                                             (int)CheckType.IsChecked, (int)AuditingState.Yes,
                                                             receiptInfo.ReceiptNo, Guid.Empty)
                        {
                            IsOut = receiptInfo.IsOut
                        });
                        //反向更新往来单位和公司的帐务
                        result = reckoning.CheckByDate(thirdCompanyInfo.CompanyId, companyCussentInfo.RelevanceFilialeId, receiptInfo.SettleStartDate, receiptInfo.SettleEndDate.AddDays(1).AddSeconds(-1), (int)CheckType.NotCheck, stockOrderNos, removeNos);
                        if (!result)
                        {
                            errorMsg = "反向更新往来单位和公司间往来帐状态失败!";
                            return(false);
                        }
                    }
                }
                else
                {
                    errorMsg = "按日期结算往来帐查询无效!";
                    return(false);
                }
                reckoningInfos.Add(reckoningInfo);
                break;

            default:
                if (companyCussentInfo.RelevanceFilialeId != Guid.Empty)
                {
                    reckoningInfos.Add(new ReckoningInfo(Guid.NewGuid(), companyCussentInfo.RelevanceFilialeId, thirdCompanyInfo.CompanyId, codeManager.GetCode(CodeType.PY), description,
                                                         -receiptInfo.RealityBalance, (int)ReckoningType.Defray,
                                                         (int)ReckoningStateType.Currently,
                                                         (int)CheckType.IsChecked, (int)AuditingState.Yes,
                                                         receiptInfo.ReceiptNo, Guid.Empty)
                    {
                        IsOut = receiptInfo.IsOut
                    });
                }
                reckoningInfo.LinkTradeType = (int)ReckoningLinkTradeType.CompanyFundReceipt;
                reckoningInfos.Add(reckoningInfo);
                break;
            }
            errorMsg = "";
            return(true);
        }