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;
}
}
}
}