Ejemplo n.º 1
0
        /// <summary>
        /// 返回资金流Model
        /// </summary>
        /// <param name="model"></param>
        /// <param name="personnelInfo"></param>
        /// <param name="flag">true:有手续费;false:无手续费;</param>
        /// <returns></returns>
        public WasteBookInfo AddWasteBookInfo(CostReportInfo model, PersonnelInfo personnelInfo, bool flag)
        {
            decimal income;

            if (flag && model.Poundage > 0)
            {
                income = model.Poundage;
            }
            else
            {
                income = model.RealityCost;
            }
            string auditingMan        = _personnelManager.GetName(personnelInfo.PersonnelId);
            string reportMan          = _personnelManager.GetName(model.ReportPersonnelId);
            var    dateTime           = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
            var    wasteBookTradeCode = _codeManager.GetCode(CodeType.RD);
            int    wasteBookType;
            string strMan, strDes;

            if (income > 0)
            {
                wasteBookType = (int)WasteBookType.Decrease;
                strMan        = "收款";
                strDes        = "减少";
            }
            else
            {
                wasteBookType = (int)WasteBookType.Increase;
                strMan        = "付款";
                strDes        = "增加";
            }

            bool isDeposit = (model.ReportKind == (int)CostReportKind.FeeIncome && !string.IsNullOrEmpty(model.DepositNo));

            var wasteBookDescription = string.Format("[费用申报(申报编号:{0};费用名称:{1};申报人:{2};" + strMan + "单位:{3};完成打款人:{4};手续费:{5};交易流水号:{6};资金" + strDes + ",{7}" + (isDeposit ? "【押金回收】" : "") + ")]", model.ReportNo, model.ReportName, reportMan, model.PayCompany, auditingMan, model.Poundage.ToString("#0.00"), model.TradeNo, dateTime);

            var bankInfo      = _bankAccountsDao.GetBankAccounts(model.PayBankAccountId);
            var wasteBookInfo = new WasteBookInfo(
                Guid.NewGuid(),
                model.PayBankAccountId,
                wasteBookTradeCode,
                wasteBookDescription,
                -income,                         //金额
                (Int32)AuditingState.Yes,
                wasteBookType,
                model.AssumeFilialeId)
            {
                LinkTradeCode = model.ReportNo,
                LinkTradeType = (int)WasteBookLinkTradeType.CostReport,
                BankTradeCode = string.Empty,
                State         = (int)WasteBookState.Currently,
                IsOut         = bankInfo.IsMain
            };

            return(wasteBookInfo);
        }
Ejemplo n.º 2
0
        ///<summary>
        ///更改一笔账目
        /// </summary>
        public void UpdateBll(Guid outWasteBookId, string description, decimal income, string tradecode, decimal poundage, Guid bankAccountsId)
        {
            DateTime dateCreatedUpdate = DateTime.Now;
            var      wasteBookInfo     = _wasteBookDao.GetWasteBook(outWasteBookId);

            if (wasteBookInfo == null)
            {
                return;
            }
            string        des = string.IsNullOrEmpty(wasteBookInfo.Description)?string.Empty:wasteBookInfo.Description;
            WasteBookInfo outWasteBookInfo;

            if (des.IndexOf("[增加资金]", StringComparison.Ordinal) > -1)
            {
                outWasteBookInfo = new WasteBookInfo(outWasteBookId, dateCreatedUpdate, description, income, (int)WasteBookType.Increase);
            }
            else if (des.IndexOf("[减少资金]", StringComparison.Ordinal) > -1)
            {
                outWasteBookInfo = new WasteBookInfo(outWasteBookId, dateCreatedUpdate, description, -income, (int)WasteBookType.Decrease);
            }
            else if (des.IndexOf("[付款]", StringComparison.Ordinal) > -1)
            {
                outWasteBookInfo = new WasteBookInfo(outWasteBookId, dateCreatedUpdate, description, -income, (int)WasteBookType.Decrease);
            }
            else
            {
                outWasteBookInfo = new WasteBookInfo(outWasteBookId, dateCreatedUpdate, description, -income, (int)WasteBookType.Decrease);
            }
            string inWasteBookIds = _wasteBookDao.GetWasteBookIdForUpdate(tradecode);

            using (var ts = new TransactionScope(TransactionScopeOption.Required))
            {
                try
                {
                    _wasteBookDao.Update(outWasteBookInfo);

                    if (des.IndexOf("[增加资金]", StringComparison.Ordinal) <= -1 && des.IndexOf("[减少资金]", StringComparison.Ordinal) <= -1 && des.IndexOf("[付款]", StringComparison.Ordinal) <= -1)
                    {
                        if (!String.IsNullOrEmpty(inWasteBookIds))
                        {
                            var inWasteBookId = new Guid(inWasteBookIds);

                            var inWasteBookInfo = new WasteBookInfo(inWasteBookId, dateCreatedUpdate, description, income, (int)WasteBookType.Increase);
                            _wasteBookDao.Update(inWasteBookInfo);
                            _wasteBookDao.UpdateBankAccountsId(inWasteBookId, bankAccountsId);
                        }
                    }
                    ts.Complete();
                }
                catch
                {
                    throw new ApplicationException("转帐同步失败!");
                }
            }
        }
Ejemplo n.º 3
0
        /// <summary>
        /// 新建手续费
        /// </summary>
        /// <param name="outBankAccountsId"></param>
        /// <param name="tradeCode"></param>
        /// <param name="poundage"></param>
        /// <param name="filialeId"> </param>
        public void InsertPoundage(Guid outBankAccountsId, string tradeCode, decimal poundage, Guid filialeId)
        {
            DateTime dateCreated     = DateTime.Now;
            decimal  outNonceBalance = _wasteBookDao.GetBalance(outBankAccountsId);

            try
            {
                const string PD_DESC         = "[转出] [手续费]";
                var          pdWasteBookInfo = new WasteBookInfo(Guid.NewGuid(), outBankAccountsId, tradeCode, dateCreated,
                                                                 PD_DESC, -poundage, outNonceBalance, (int)AuditingState.Hide,
                                                                 (int)WasteBookType.Decrease, filialeId)
                {
                    LinkTradeCode = string.Empty,
                    LinkTradeType = (int)WasteBookLinkTradeType.Other
                };
                _wasteBookDao.Insert(pdWasteBookInfo);
            }
            catch
            {
                throw new ApplicationException("手续费新建失败!");
            }
        }
Ejemplo n.º 4
0
        /// <summary>
        /// 打款完成
        /// </summary>
        /// <param name="salePlatformId"></param>
        /// <param name="applyId"></param>
        protected void PayFinish(Guid salePlatformId, Guid applyId)
        {
            var errorMsg = new StringBuilder();
            MemberMentionApplyInfo memberMentionApplyInfo = MemberCenterSao.GetMemberMentionApply(salePlatformId, applyId);

            if (memberMentionApplyInfo.State == (int)MemberMentionState.Process)
            {
                var orderNoStr = string.Empty;
                if (!string.IsNullOrWhiteSpace(memberMentionApplyInfo.OrderNo))
                {
                    orderNoStr = string.Format("[订单号:{0}]", memberMentionApplyInfo.OrderNo);
                }
                if (!string.IsNullOrWhiteSpace(memberMentionApplyInfo.ThirdPartyOrderNo) || memberMentionApplyInfo.ThirdPartyOrderNo == "-")
                {
                    orderNoStr = string.Format("{0}[第三方平台订单号:{1}]", orderNoStr, memberMentionApplyInfo.ThirdPartyOrderNo);
                }
                var rdescription = string.Format("[余额提现(提现会员:{0};提现申请单号:{1};提现到:{2};操作人:{3}),资金减少,{4})]", memberMentionApplyInfo.UserName, memberMentionApplyInfo.ApplyNo, memberMentionApplyInfo.BankName, Personnel.RealName, DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));

                var info = new WasteBookInfo(Guid.NewGuid(), new Guid(RCB_BankAccountsId.SelectedValue),
                                             memberMentionApplyInfo.ApplyNo, rdescription + orderNoStr,
                                             -memberMentionApplyInfo.Amount, (Int32)AuditingState.Yes,
                                             (Int32)WasteBookType.Decrease, memberMentionApplyInfo.SaleFilialeId)
                {
                    LinkTradeCode = memberMentionApplyInfo.ApplyNo,
                    LinkTradeType = (int)WasteBookLinkTradeType.WithdrawDeposit,
                    BankTradeCode = string.Empty,
                    State         = (int)WasteBookState.Currently,
                    IsOut         = false
                };

                var memo        = "提现" + memberMentionApplyInfo.ApplyNo + "取走余额;";
                var description = "提现" + memberMentionApplyInfo.ApplyNo + ",提走余额;" + Common.WebControl.RetrunUserAndTime("提现受理");

                #region 提现
                using (var ts = new TransactionScope(TransactionScopeOption.Required))
                {
                    try
                    {
                        if (info.Income != 0)
                        {
                            _wasteBook.Insert(info);
                        }
                        string errorMessage;
                        var    result = MemberCenterSao.CompleteWithdrawApply(salePlatformId, applyId, memo, description, out errorMessage);
                        if (!result)
                        {
                            throw new Exception("会员名:" + memberMentionApplyInfo.UserName + "提现单号:" + memberMentionApplyInfo.ApplyNo + "   " + errorMessage);
                        }
                        //提现打款完成增加操作记录添加
                        Common.WebControl.AddOperationLog(Personnel.PersonnelId, Personnel.RealName, info.WasteBookId, info.TradeCode, OperationPoint.MemberWithdrawCash.PaySuccess.GetBusinessInfo(), string.Empty);
                        ts.Complete();
                    }
                    catch (Exception ex)
                    {
                        errorMsg.Append("提现失败!" + ex.Message).Append("\\n");
                    }
                    finally
                    {
                        ts.Dispose();
                    }
                }
                #endregion

                #region 发送短信
                try
                {
                    MemberBaseInfo memberBaseInfo = MemberCenterSao.GetUserBase(salePlatformId, memberMentionApplyInfo.MemberId);
                    if (memberBaseInfo != null)
                    {
                        if (!string.IsNullOrEmpty(memberBaseInfo.Mobile))
                        {
                            //可得完成打款发送短信
                            var keedeFilialeId = FilialeManager.GetList().First(f => f.Code.ToLower() == "kede").ID;
                            if (memberMentionApplyInfo.SaleFilialeId == keedeFilialeId)
                            {
                                const string MSG = "您好,您的提现申请已收到,现已完成打款,一般2-5个工作日到账,请注意查收。详情可致电4006202020咨询。感谢您对可得网支持!";
                                MailSMSSao.SendShortMessage(memberMentionApplyInfo.SaleFilialeId, memberMentionApplyInfo.SalePlatformId, memberBaseInfo.Mobile, MSG);
                            }
                        }
                    }
                }
                catch (Exception ex)
                {
                    errorMsg.Append("提现成功,短信发送失败! " + "会员名:" + memberMentionApplyInfo.UserName + "提现单号:" + memberMentionApplyInfo.ApplyNo + "   " + ex.Message).Append("\\n");
                }
                #endregion
            }

            if (!string.IsNullOrEmpty(errorMsg.ToString()))
            {
                throw new Exception(errorMsg.ToString());
            }
        }
Ejemplo n.º 5
0
        /// <summary>
        /// 对账
        /// </summary>
        /// <param name="lstModify">需要修改状态的往来账列表</param>
        /// <param name="lstAdd">需要增加的往来账列表</param>
        /// <param name="wastBookinfo">需要添加的资金流信息</param>
        public void Checking(IList <ReckoningInfo> lstModify, IList <ReckoningInfo> lstAdd, WasteBookInfo wastBookinfo)
        {
            using (var scop = new TransactionScope())
            {
                try
                {
                    //1.更新被对账往来为已对账
                    if (lstModify.Count > 0)
                    {
                        _reckoningDao.UpdateCheckState(lstModify, 1);
                    }

                    //2.新增往来账(包括调账)
                    foreach (ReckoningInfo reckoningInfo in lstAdd)
                    {
                        reckoningInfo.AuditingState = (int)AuditingState.Yes;
                        string errorMessage;
                        _reckoningDao.Insert(reckoningInfo, out errorMessage);
                    }

                    //3.资金流 增加一条数据
                    if (wastBookinfo.Income != 0)
                    {
                        _wasteBookManager.Insert(wastBookinfo);
                    }
                    scop.Complete();
                }
                catch (Exception ex)
                {
                    throw new Exception("对账失败!", ex);
                }
            }
        }
Ejemplo n.º 6
0
        /// <summary> 转帐   add chenzhongwen
        /// </summary>
        /// <param name="inBankAccountsId">转入帐号Id</param>
        /// <param name="outBankAccountsId">转出帐号Id</param>
        /// <param name="sum">金额</param>
        /// <param name="poundage">手续费</param>
        /// <param name="description">说明</param>
        /// <param name="tradeCode"></param>
        /// <param name="outFilialeId">转出公司 </param>
        /// <param name="inFilialeId"> 转入公司</param>
        /// <param name="realName"> 操作人</param>
        public WasteBookInfo NewVirement(Guid inBankAccountsId, Guid outBankAccountsId, decimal sum, decimal poundage, string description, string tradeCode, Guid outFilialeId, Guid inFilialeId, string realName)
        {
            WasteBookInfo wasteBookInfo = null;

            if (inBankAccountsId != Guid.Empty && outBankAccountsId != Guid.Empty && sum > 0)
            {
                var inBankInfo  = _bankAccounts.GetBankAccounts(inBankAccountsId);
                var outBankInfo = _bankAccounts.GetBankAccounts(outBankAccountsId);
                if (inBankInfo == null || outBankInfo == null)
                {
                    return(null);
                }
                var      dateTime        = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
                DateTime dateCreated     = DateTime.Now;
                decimal  inNonceBalance  = _wasteBookDao.GetBalance(inBankAccountsId);
                decimal  outNonceBalance = _wasteBookDao.GetBalance(outBankAccountsId);
                string   inDescription;
                string   outDescription;
                Boolean  isOut;
                if (inFilialeId == _reckoningElseFilialeid || outFilialeId == _reckoningElseFilialeid)
                {
                    isOut = false;
                }
                else
                {
                    isOut = true;
                }
                if (outFilialeId == inFilialeId)
                {
                    inDescription  = string.Format("[转入申请(来源银行:{0};申请备注:{1};转出申请人:{2} ;{3})]", outBankInfo.BankName + "-" + outBankInfo.AccountsName, realName, description, dateTime);
                    outDescription = string.Format("[转出申请(目标银行:{0};申请备注:{1};转出申请人:{2};{3})]", inBankInfo.BankName + "-" + inBankInfo.AccountsName, description, realName, dateTime);
                }
                else
                {
                    var inFilialeName  = inFilialeId == _reckoningElseFilialeid ? "其他公司" : FilialeManager.Get(inFilialeId).Name;
                    var outFilialeName = outFilialeId == _reckoningElseFilialeid ? "其他公司" : FilialeManager.Get(outFilialeId).Name;
                    inDescription  = string.Format("[转入申请(来源公司:{0};来源银行:{1};申请备注:{2};转出申请人:{3} ;{4})]", outFilialeName, outBankInfo.BankName + "-" + outBankInfo.AccountsName, realName, description, dateTime);
                    outDescription = string.Format("[转出申请(目标公司:{0};目标银行:{1};申请备注:{2};转出申请人:{3};{4})]", inFilialeName, inBankInfo.BankName + "-" + inBankInfo.AccountsName, description, realName, dateTime);
                }
                const string PD_DESC         = "[转出] [手续费]";
                var          pdWasteBookInfo = new WasteBookInfo(Guid.NewGuid(), outBankAccountsId, tradeCode, dateCreated,
                                                                 PD_DESC, -poundage, outNonceBalance, (int)AuditingState.Hide,
                                                                 (int)WasteBookType.Decrease, outFilialeId)
                {
                    LinkTradeCode = string.Empty,
                    LinkTradeType = (int)WasteBookLinkTradeType.Other,
                    State         = (int)WasteBookState.Currently,
                    IsOut         = isOut
                };
                var inWasteBookInfo = new WasteBookInfo(Guid.NewGuid(), inBankAccountsId, tradeCode, dateCreated,
                                                        inDescription, sum, inNonceBalance, (int)AuditingState.Hide,
                                                        (int)WasteBookType.Increase, inFilialeId)
                {
                    LinkTradeCode = string.Empty,
                    LinkTradeType = (int)WasteBookLinkTradeType.Other,
                    State         = (int)WasteBookState.Currently,
                    IsOut         = isOut
                };
                var outWasteBookInfo = new WasteBookInfo(Guid.NewGuid(), outBankAccountsId, tradeCode, dateCreated,
                                                         outDescription, -sum, outNonceBalance, (int)AuditingState.No,
                                                         (int)WasteBookType.Decrease, outFilialeId)
                {
                    LinkTradeCode = string.Empty,
                    LinkTradeType = (int)WasteBookLinkTradeType.Other,
                    State         = (int)WasteBookState.Currently,
                    IsOut         = isOut
                };
                using (var ts = new TransactionScope(TransactionScopeOption.Required))
                {
                    try
                    {
                        _wasteBookDao.Insert(inWasteBookInfo);

                        if (poundage > 0)
                        {
                            _wasteBookDao.Insert(pdWasteBookInfo);
                        }
                        _wasteBookDao.Insert(outWasteBookInfo);
                        wasteBookInfo = outWasteBookInfo;
                        ts.Complete();
                    }
                    catch
                    {
                        throw new ApplicationException("转帐同步失败!");
                    }
                }
            }
            return(wasteBookInfo);
        }
Ejemplo n.º 7
0
        /// <summary>转帐
        /// </summary>
        /// <param name="inBankAccountsId">转入帐号Id</param>
        /// <param name="outBankAccountsId">转出帐号Id</param>
        /// <param name="sum">金额</param>
        /// <param name="poundage"></param>
        /// <param name="description">说明</param>
        /// <param name="tradeCode"></param>
        /// <param name="filialeId"> </param>
        public void Virement(Guid inBankAccountsId, Guid outBankAccountsId, decimal sum, decimal poundage, string description, string tradeCode, Guid filialeId)
        {
            if (inBankAccountsId != Guid.Empty && outBankAccountsId != Guid.Empty && sum > 0)
            {
                DateTime dateCreated         = DateTime.Now;
                decimal  inNonceBalance      = _wasteBookDao.GetBalance(inBankAccountsId);
                decimal  outNonceBalance     = _wasteBookDao.GetBalance(outBankAccountsId);
                var      outBankAccountsInfo = _bankAccounts.GetBankAccounts(outBankAccountsId);
                var      intBankAccountsInfo = _bankAccounts.GetBankAccounts(inBankAccountsId);
                if (outBankAccountsInfo == null || intBankAccountsInfo == null)
                {
                    return;
                }
                string inDescription   = "[转入] [" + outBankAccountsInfo.BankName + "]" + description;
                var    inWasteBookInfo = new WasteBookInfo(Guid.NewGuid(), inBankAccountsId, tradeCode, dateCreated,
                                                           inDescription, sum, inNonceBalance, (int)AuditingState.Hide,
                                                           (int)WasteBookType.Increase, filialeId)
                {
                    LinkTradeCode = string.Empty,
                    LinkTradeType = (int)WasteBookLinkTradeType.Other
                };

                const string PD_DESC         = "[转出] [手续费]";
                var          pdWasteBookInfo = new WasteBookInfo(Guid.NewGuid(), outBankAccountsId, tradeCode, dateCreated,
                                                                 PD_DESC, -poundage, outNonceBalance, (int)AuditingState.Hide,
                                                                 (int)WasteBookType.Decrease, filialeId)
                {
                    LinkTradeCode = string.Empty,
                    LinkTradeType = (int)WasteBookLinkTradeType.Other
                };


                string outDescription   = "[转出] [" + intBankAccountsInfo.BankName + "]" + description;
                var    outWasteBookInfo = new WasteBookInfo(Guid.NewGuid(), outBankAccountsId, tradeCode, dateCreated,
                                                            outDescription, -sum, outNonceBalance, (int)AuditingState.No,
                                                            (int)WasteBookType.Decrease, filialeId)
                {
                    LinkTradeCode = string.Empty,
                    LinkTradeType = (int)WasteBookLinkTradeType.Other
                };

                using (var ts = new TransactionScope(TransactionScopeOption.Required))
                {
                    try
                    {
                        _wasteBookDao.Insert(inWasteBookInfo);

                        if (poundage > 0)
                        {
                            _wasteBookDao.Insert(pdWasteBookInfo);
                        }

                        _wasteBookDao.Insert(outWasteBookInfo);
                        ts.Complete();
                    }
                    catch
                    {
                        throw new ApplicationException("转帐同步失败!");
                    }
                }
            }
        }