using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data; using CoreFS.CA06; using DbHelp = Core.StlMes.Client.Sale.DbHelp; namespace Core.StlMes.Client.Sale.SaleFundMgt.FundBLL.FundTransferMgt { public class FundTransferMgt: FundBaseBLL.FundBaseBLL { private OpeBase _ob; public FundTransferMgt(OpeBase ob) : base(ob) { _ob = ob; } /// /// 从客户账户转二级账户 /// /// /// public void TransferMoneyCustToSecondAccount(Model.SEL_FUND_TRANS_SECONDACCOUNT acct,out string errMsg) { errMsg = ""; try { errMsg = ""; Model.SEL_FUND_CUST_ACCOUNT cust = base.GetFundCustAccountInstance(). GetSelFundCustAccountModelByBalanceAndBuyercode(acct.FUND_TRANS_CUST.BALANCESUBJECT, acct.FUND_TRANS_CUST.BUYERCODE); if (cust == null) { return; } // 检查资金是否足够 if (cust.LEAVEMONEY < acct.TRANS_MONEY) { errMsg = base._errMsgMoneyNotEnough; return; } // 二级账户是否存在 if (acct.SECONDACCOUNT.Length == 0) { errMsg = base._errMsgMoneyNotEnough; return; } Model.SEL_FUND_CUST_USEDDETAIL detail = null; Model.SEL_FUND_SECONDLE_USEDETAIL secdetaill = null; string busiseq = Common.SaleFundCommon.GetBusiSeq(); // 事务开启 acct.FUND_TRANS_CUST.TRANS_MONEY = -acct.FUND_TRANS_CUST.TRANS_MONEY; detail = new Model.SEL_FUND_CUST_USEDDETAIL(acct, busiseq); secdetaill = new Model.SEL_FUND_SECONDLE_USEDETAIL(acct,busiseq); System.Collections.ArrayList list = new System.Collections.ArrayList(); list.Add(base.GetFundCustAccountInstance().Sql_AddLeaveMoneyCustAccount(acct.FUND_TRANS_CUST)); list.Add(base.GetFundCustUsedDetailInstance().Sql_Insert(detail)); list.Add(base.GetFundSecondAccountInstance().Sql_AddMoneyToSecondLevelAccount(acct)); list.Add(base.GetFundSecondUsedDetailInstance().Sql_Insert(secdetaill)); base.ExecuteNoReader(list, out errMsg); //// 客户账户总资金减少 //base.GetFundCustAccountInstance().AddLeaveMoneyCustAccount(acct.FUND_TRANS_CUST, transaction); //// 写明细 //base.GetFundCustUsedDetailInstance().Insert(detail,transaction); //// 二级账户总资金和剩余资金增加 //base.GetFundSecondAccountInstance().AddMoneyToSecondLevelAccount(acct, transaction); //// 写明细 //base.GetFundSecondUsedDetailInstance().Insert(secdetaill, transaction); } catch(Exception ex) { errMsg = ex.Message; } } public System.Collections.ArrayList GetTransferMoneyCustToSecondAccount(Model.SEL_FUND_TRANS_SECONDACCOUNT acct, out string errMsg) { errMsg = ""; try { errMsg = ""; Model.SEL_FUND_CUST_USEDDETAIL detail = null; Model.SEL_FUND_SECONDLE_USEDETAIL secdetaill = null; string busiseq = Common.SaleFundCommon.GetBusiSeq(); // 事务开启 acct.FUND_TRANS_CUST.TRANS_MONEY = -acct.FUND_TRANS_CUST.TRANS_MONEY; detail = new Model.SEL_FUND_CUST_USEDDETAIL(acct, busiseq); secdetaill = new Model.SEL_FUND_SECONDLE_USEDETAIL(acct, busiseq); System.Collections.ArrayList list = new System.Collections.ArrayList(); list.Add(base.GetFundCustAccountInstance().Sql_AddLeaveMoneyCustAccount(acct.FUND_TRANS_CUST)); list.Add(base.GetFundCustUsedDetailInstance().Sql_Insert(detail)); list.Add(base.GetFundSecondAccountInstance().Sql_AddMoneyToSecondLevelAccount(acct)); list.Add(base.GetFundSecondUsedDetailInstance().Sql_Insert(secdetaill)); return list; //// 客户账户总资金减少 //base.GetFundCustAccountInstance().AddLeaveMoneyCustAccount(acct.FUND_TRANS_CUST, transaction); //// 写明细 //base.GetFundCustUsedDetailInstance().Insert(detail,transaction); //// 二级账户总资金和剩余资金增加 //base.GetFundSecondAccountInstance().AddMoneyToSecondLevelAccount(acct, transaction); //// 写明细 //base.GetFundSecondUsedDetailInstance().Insert(secdetaill, transaction); } catch (Exception ex) { errMsg = ex.Message; return new System.Collections.ArrayList(); } } public void TransferMoneyCustToSecondAccountWithNoLeaveMoneyCheck(Model.SEL_FUND_TRANS_SECONDACCOUNT acct, out string errMsg) { errMsg = ""; // DbHelp.DbTransaction transaction = base.GetTransaction(); try { errMsg = ""; Model.SEL_FUND_CUST_ACCOUNT cust = base.GetFundCustAccountInstance(). GetSelFundCustAccountModelByBalanceAndBuyercode(acct.FUND_TRANS_CUST.BALANCESUBJECT, acct.FUND_TRANS_CUST.BUYERCODE); if (cust == null) { return; } // 二级账户是否存在 if (acct.SECONDACCOUNT.Length == 0) { errMsg = base._errMsgMoneyNotEnough; return; } Model.SEL_FUND_CUST_USEDDETAIL detail = null; Model.SEL_FUND_SECONDLE_USEDETAIL secdetaill = null; string busiseq = Common.SaleFundCommon.GetBusiSeq(); // 事务开启 // transaction.BeginTransaction(); System.Collections.ArrayList list = new System.Collections.ArrayList(); acct.FUND_TRANS_CUST.TRANS_MONEY = -acct.FUND_TRANS_CUST.TRANS_MONEY; detail = new Model.SEL_FUND_CUST_USEDDETAIL(acct, busiseq); secdetaill = new Model.SEL_FUND_SECONDLE_USEDETAIL(acct, busiseq); list.Add(base.GetFundCustAccountInstance().Sql_AddLeaveMoneyCustAccount(acct.FUND_TRANS_CUST)); list.Add(base.GetFundCustUsedDetailInstance().Sql_Insert(detail)); list.Add( base.GetFundSecondAccountInstance().Sql_AddMoneyToSecondLevelAccount(acct)); list.Add( base.GetFundSecondUsedDetailInstance().Sql_Insert(secdetaill)); base.ExecuteNoReader(list,out errMsg); //// 客户账户总资金减少 //base.GetFundCustAccountInstance().AddLeaveMoneyCustAccount(acct.FUND_TRANS_CUST, transaction); //// 写明细 //base.GetFundCustUsedDetailInstance().Insert(detail, transaction); //// 二级账户总资金和剩余资金增加 //base.GetFundSecondAccountInstance().AddMoneyToSecondLevelAccount(acct, transaction); //// 写明细 //base.GetFundSecondUsedDetailInstance().Insert(secdetaill, transaction); // 提交 //errMsg = transaction.ErrMsg; //transaction.Commit(); } catch (Exception ex) { errMsg = ex.Message; } } /// /// 二级账户到客户账户 /// 二级账户总资金,剩余资金减少 /// 客户账户总资金不变,剩余资金增加 /// /// /// public void TransferMoneySecondAccountToCust(Model.SEL_FUND_TRANS_SECONDACCOUNT acct, out string errMsg) { errMsg = ""; DbHelp.DbTransaction transaction = base.GetTransaction(); try { // 检查二级账户剩余资金是否足够 Model.SEL_FUND_SECONDLEVEL_ACCOUNT secacct = base.GetFundSecondAccountInstance(). GetSelFundSecondAccountBySecondAccount(acct.FUND_TRANS_CUST.BALANCESUBJECT, acct.FUND_TRANS_CUST.BUYERCODE, acct.SECONDACCOUNT); if (secacct == null) { errMsg = base._errDefaultMsg; return; } // 小于转移资金 if (secacct.LEAVEMONEY < acct.TRANS_MONEY) { errMsg = base._errMsgMoneyNotEnough; return; } Model.SEL_FUND_CUST_USEDDETAIL detail = null; Model.SEL_FUND_SECONDLE_USEDETAIL secdetaill = null; string busiseq = Common.SaleFundCommon.GetBusiSeq(); // 二级账户总资金和剩余资金减少 acct.FUND_TRANS_CUST.TRANS_MONEY = acct.TRANS_MONEY; acct.TRANS_MONEY = -acct.TRANS_MONEY; detail = new Model.SEL_FUND_CUST_USEDDETAIL(acct, busiseq); secdetaill = new Model.SEL_FUND_SECONDLE_USEDETAIL(acct, busiseq); // 开启事务 System.Collections.ArrayList list = new System.Collections.ArrayList(); list.Add(base.GetFundSecondAccountInstance().Sql_AddMoneyToSecondLevelAccount(acct)); list.Add(base.GetFundSecondUsedDetailInstance().Sql_Insert(secdetaill)); list.Add(base.GetFundCustAccountInstance().Sql_AddLeaveMoneyCustAccount(acct.FUND_TRANS_CUST)); list.Add(base.GetFundCustUsedDetailInstance().Sql_Insert(detail)); //base.GetFundSecondAccountInstance().AddMoneyToSecondLevelAccount(acct, transaction); //base.GetFundSecondUsedDetailInstance().Insert(secdetaill,transaction); //// 客户账户剩余资金增加,总资金不变 //base.GetFundCustAccountInstance().AddLeaveMoneyCustAccount(acct.FUND_TRANS_CUST, transaction); //base.GetFundCustUsedDetailInstance().Insert(detail,transaction); base.ExecuteNoReader(list, out errMsg); } catch(Exception ex) { errMsg = ex.Message; } } public System.Collections.ArrayList GetTransferMoneySecondAccountToCust(Model.SEL_FUND_TRANS_SECONDACCOUNT acct, out string errMsg) { errMsg = ""; try { // 检查二级账户剩余资金是否足够 Model.SEL_FUND_SECONDLEVEL_ACCOUNT secacct = base.GetFundSecondAccountInstance(). GetSelFundSecondAccountBySecondAccount(acct.FUND_TRANS_CUST.BALANCESUBJECT, acct.FUND_TRANS_CUST.BUYERCODE, acct.SECONDACCOUNT); Model.SEL_FUND_CUST_USEDDETAIL detail = null; Model.SEL_FUND_SECONDLE_USEDETAIL secdetaill = null; string busiseq = Common.SaleFundCommon.GetBusiSeq(); // 二级账户总资金和剩余资金减少 acct.FUND_TRANS_CUST.TRANS_MONEY = acct.TRANS_MONEY; acct.TRANS_MONEY = -acct.TRANS_MONEY; detail = new Model.SEL_FUND_CUST_USEDDETAIL(acct, busiseq); secdetaill = new Model.SEL_FUND_SECONDLE_USEDETAIL(acct, busiseq); // 开启事务 System.Collections.ArrayList list = new System.Collections.ArrayList(); list.Add(base.GetFundSecondAccountInstance().Sql_AddMoneyToSecondLevelAccount(acct)); list.Add(base.GetFundSecondUsedDetailInstance().Sql_Insert(secdetaill)); list.Add(base.GetFundCustAccountInstance().Sql_AddLeaveMoneyCustAccount(acct.FUND_TRANS_CUST)); list.Add(base.GetFundCustUsedDetailInstance().Sql_Insert(detail)); return list; //base.GetFundSecondAccountInstance().AddMoneyToSecondLevelAccount(acct, transaction); //base.GetFundSecondUsedDetailInstance().Insert(secdetaill,transaction); //// 客户账户剩余资金增加,总资金不变 //base.GetFundCustAccountInstance().AddLeaveMoneyCustAccount(acct.FUND_TRANS_CUST, transaction); //base.GetFundCustUsedDetailInstance().Insert(detail,transaction); } catch (Exception ex) { errMsg = ex.Message; return new System.Collections.ArrayList(); } } /// /// 二级账户到合同账户 /// /// /// public void TransferMoneySecondAccountToPact(Model.SEL_FUND_TRANS_PACT acct, out string errMsg) { errMsg = ""; DbHelp.DbTransaction transaction = base.GetTransaction(); string busiseq = Common.SaleFundCommon.GetBusiSeq(); try { // 检查二级账户剩余资金是否足够 Model.SEL_FUND_SECONDLEVEL_ACCOUNT secacct = base.GetFundSecondAccountInstance(). GetSelFundSecondAccountBySecondAccount(acct.FUND_TRANS_SECONDACCOUNT.FUND_TRANS_CUST.BALANCESUBJECT, acct.FUND_TRANS_SECONDACCOUNT.FUND_TRANS_CUST.BUYERCODE, acct.FUND_TRANS_SECONDACCOUNT.SECONDACCOUNT); if (secacct == null) { errMsg = base._errDefaultMsg; return; } // 小于转移资金 if (secacct.LEAVEMONEY < acct.TRANS_MONEY) { errMsg = base._errMsgMoneyNotEnough; return; } // 二级账户总资金减少 acct.FUND_TRANS_SECONDACCOUNT.TRANS_MONEY = -acct.TRANS_MONEY; Model.SEL_FUND_PACT_TRANSDETAIL detal = new Model.SEL_FUND_PACT_TRANSDETAIL(acct, busiseq); Model.SEL_FUND_SECONDLE_USEDETAIL detailSec = new Model.SEL_FUND_SECONDLE_USEDETAIL(acct,busiseq); // 开启事务 transaction.BeginTransaction(); System.Collections.ArrayList list = new System.Collections.ArrayList(); list.Add(base.GetFundSecondAccountInstance().Sql_AddSecondLevelAccountLeavemoney(acct.FUND_TRANS_SECONDACCOUNT)); list.Add(base.GetFundSecondUsedDetailInstance().Sql_Insert(detailSec)); list.Add(base.GetFundPactAccountInstance().Sql_AddFundPactAccountTotalMoneyAndLeavemoney(acct)); list.Add(base.GetFundPactTransDetailInstance().Sql_Insert(detal)); base.ExecuteNoReader(list, out errMsg); //base.GetFundSecondAccountInstance().AddSecondLevelAccountLeavemoney(acct.FUND_TRANS_SECONDACCOUNT, transaction); //base.GetFundSecondUsedDetailInstance().Insert(detailSec, transaction); //// 合同账户总资金和剩余资金增加 //base.GetFundPactAccountInstance().AddFundPactAccountTotalMoneyAndLeavemoney(acct, transaction); //base.GetFundPactTransDetailInstance().Insert(detal,transaction); // 提交 } catch(Exception ex) { errMsg = ex.Message; } } /// /// 合同账户到二级账户 /// /// /// public void TransferMoneyPactToSecondAccount(Model.SEL_FUND_TRANS_PACT acct, out string errMsg) { errMsg = ""; DbHelp.DbTransaction transaction = base.GetTransaction(); string busiseq = Common.SaleFundCommon.GetBusiSeq(); try { if (!Model.SEL_FUND_TRANS_PACT.IsAvailable(acct)) { errMsg = base._errDefaultMsg; return; } Model.SEL_FUND_PACT_ACCOUNT acctpact = new Model.SEL_FUND_PACT_ACCOUNT(); acctpact.BALANCESUBJECT = acct.FUND_TRANS_SECONDACCOUNT.FUND_TRANS_CUST.BALANCESUBJECT; acctpact.BUYERCODE = acct.FUND_TRANS_SECONDACCOUNT.FUND_TRANS_CUST.BUYERCODE; acctpact.SECONDACCOUNT = acct.FUND_TRANS_SECONDACCOUNT.SECONDACCOUNT; acctpact.PACTNO = acct.PACTNO; Model.SEL_FUND_PACT_ACCOUNT pactact = base.GetFundPactAccountInstance().GetSelFundPactAccountModel(acctpact); // 检查剩余资金 if (pactact.LEAVEMONEY < acct.TRANS_MONEY) { errMsg = base._errMsgMoneyNotEnough; return; } // 二级账户总资金不变,剩余资金增加 acct.FUND_TRANS_SECONDACCOUNT.TRANS_MONEY = acct.TRANS_MONEY; // 合同账户总资金,剩余资金较少 acct.TRANS_MONEY = -acct.TRANS_MONEY; Model.SEL_FUND_PACT_TRANSDETAIL detal = new Model.SEL_FUND_PACT_TRANSDETAIL(acct, busiseq); Model.SEL_FUND_SECONDLE_USEDETAIL detailSec = new Model.SEL_FUND_SECONDLE_USEDETAIL(acct, busiseq); // transaction.BeginTransaction(); System.Collections.ArrayList list = new System.Collections.ArrayList(); list.Add( base.GetFundPactAccountInstance().Sql_AddFundPactAccountTotalMoneyAndLeavemoney(acct)); list.Add(base.GetFundPactTransDetailInstance().Sql_Insert(detal)); list.Add( base.GetFundSecondAccountInstance().Sql_AddSecondLevelAccountLeavemoney(acct.FUND_TRANS_SECONDACCOUNT)); list.Add(base.GetFundSecondUsedDetailInstance().Sql_Insert(detailSec)); // base.GetFundPactAccountInstance().AddFundPactAccountTotalMoneyAndLeavemoney(acct, transaction); // base.GetFundPactTransDetailInstance().Insert(detal, transaction); //二级账户剩余资金增加,总资金不变 // base.GetFundSecondAccountInstance().AddSecondLevelAccountLeavemoney(acct.FUND_TRANS_SECONDACCOUNT, transaction); // base.GetFundSecondUsedDetailInstance().Insert(detailSec, transaction); // 提交 // errMsg = transaction.ErrMsg; // transaction.Commit(); base.ExecuteNoReader(list,out errMsg); } catch(Exception ex) { errMsg = ex.Message; } } } }