FundTransferMgt.cs 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Data;
  6. using CoreFS.CA06;
  7. using DbHelp = Core.StlMes.Client.Sale.DbHelp;
  8. namespace Core.StlMes.Client.Sale.SaleFundMgt.FundBLL.FundTransferMgt
  9. {
  10. public class FundTransferMgt: FundBaseBLL.FundBaseBLL
  11. {
  12. private OpeBase _ob;
  13. public FundTransferMgt(OpeBase ob)
  14. : base(ob)
  15. {
  16. _ob = ob;
  17. }
  18. /// <summary>
  19. /// 从客户账户转二级账户
  20. /// </summary>
  21. /// <param name="acct"></param>
  22. /// <param name="errMsg"></param>
  23. public void TransferMoneyCustToSecondAccount(Model.SEL_FUND_TRANS_SECONDACCOUNT acct,out string errMsg)
  24. {
  25. errMsg = "";
  26. try
  27. {
  28. errMsg = "";
  29. Model.SEL_FUND_CUST_ACCOUNT cust = base.GetFundCustAccountInstance().
  30. GetSelFundCustAccountModelByBalanceAndBuyercode(acct.FUND_TRANS_CUST.BALANCESUBJECT, acct.FUND_TRANS_CUST.BUYERCODE);
  31. if (cust == null)
  32. {
  33. return;
  34. }
  35. // 检查资金是否足够
  36. if (cust.LEAVEMONEY < acct.TRANS_MONEY)
  37. {
  38. errMsg = base._errMsgMoneyNotEnough;
  39. return;
  40. }
  41. // 二级账户是否存在
  42. if (acct.SECONDACCOUNT.Length == 0)
  43. {
  44. errMsg = base._errMsgMoneyNotEnough;
  45. return;
  46. }
  47. Model.SEL_FUND_CUST_USEDDETAIL detail = null;
  48. Model.SEL_FUND_SECONDLE_USEDETAIL secdetaill = null;
  49. string busiseq = Common.SaleFundCommon.GetBusiSeq();
  50. // 事务开启
  51. acct.FUND_TRANS_CUST.TRANS_MONEY = -acct.FUND_TRANS_CUST.TRANS_MONEY;
  52. detail = new Model.SEL_FUND_CUST_USEDDETAIL(acct, busiseq);
  53. secdetaill = new Model.SEL_FUND_SECONDLE_USEDETAIL(acct,busiseq);
  54. System.Collections.ArrayList list = new System.Collections.ArrayList();
  55. list.Add(base.GetFundCustAccountInstance().Sql_AddLeaveMoneyCustAccount(acct.FUND_TRANS_CUST));
  56. list.Add(base.GetFundCustUsedDetailInstance().Sql_Insert(detail));
  57. list.Add(base.GetFundSecondAccountInstance().Sql_AddMoneyToSecondLevelAccount(acct));
  58. list.Add(base.GetFundSecondUsedDetailInstance().Sql_Insert(secdetaill));
  59. base.ExecuteNoReader(list, out errMsg);
  60. //// 客户账户总资金减少
  61. //base.GetFundCustAccountInstance().AddLeaveMoneyCustAccount(acct.FUND_TRANS_CUST, transaction);
  62. //// 写明细
  63. //base.GetFundCustUsedDetailInstance().Insert(detail,transaction);
  64. //// 二级账户总资金和剩余资金增加
  65. //base.GetFundSecondAccountInstance().AddMoneyToSecondLevelAccount(acct, transaction);
  66. //// 写明细
  67. //base.GetFundSecondUsedDetailInstance().Insert(secdetaill, transaction);
  68. }
  69. catch(Exception ex)
  70. {
  71. errMsg = ex.Message;
  72. }
  73. }
  74. public System.Collections.ArrayList GetTransferMoneyCustToSecondAccount(Model.SEL_FUND_TRANS_SECONDACCOUNT acct, out string errMsg)
  75. {
  76. errMsg = "";
  77. try
  78. {
  79. errMsg = "";
  80. Model.SEL_FUND_CUST_USEDDETAIL detail = null;
  81. Model.SEL_FUND_SECONDLE_USEDETAIL secdetaill = null;
  82. string busiseq = Common.SaleFundCommon.GetBusiSeq();
  83. // 事务开启
  84. acct.FUND_TRANS_CUST.TRANS_MONEY = -acct.FUND_TRANS_CUST.TRANS_MONEY;
  85. detail = new Model.SEL_FUND_CUST_USEDDETAIL(acct, busiseq);
  86. secdetaill = new Model.SEL_FUND_SECONDLE_USEDETAIL(acct, busiseq);
  87. System.Collections.ArrayList list = new System.Collections.ArrayList();
  88. list.Add(base.GetFundCustAccountInstance().Sql_AddLeaveMoneyCustAccount(acct.FUND_TRANS_CUST));
  89. list.Add(base.GetFundCustUsedDetailInstance().Sql_Insert(detail));
  90. list.Add(base.GetFundSecondAccountInstance().Sql_AddMoneyToSecondLevelAccount(acct));
  91. list.Add(base.GetFundSecondUsedDetailInstance().Sql_Insert(secdetaill));
  92. return list;
  93. //// 客户账户总资金减少
  94. //base.GetFundCustAccountInstance().AddLeaveMoneyCustAccount(acct.FUND_TRANS_CUST, transaction);
  95. //// 写明细
  96. //base.GetFundCustUsedDetailInstance().Insert(detail,transaction);
  97. //// 二级账户总资金和剩余资金增加
  98. //base.GetFundSecondAccountInstance().AddMoneyToSecondLevelAccount(acct, transaction);
  99. //// 写明细
  100. //base.GetFundSecondUsedDetailInstance().Insert(secdetaill, transaction);
  101. }
  102. catch (Exception ex)
  103. {
  104. errMsg = ex.Message;
  105. return new System.Collections.ArrayList();
  106. }
  107. }
  108. public void TransferMoneyCustToSecondAccountWithNoLeaveMoneyCheck(Model.SEL_FUND_TRANS_SECONDACCOUNT acct, out string errMsg)
  109. {
  110. errMsg = "";
  111. // DbHelp.DbTransaction transaction = base.GetTransaction();
  112. try
  113. {
  114. errMsg = "";
  115. Model.SEL_FUND_CUST_ACCOUNT cust = base.GetFundCustAccountInstance().
  116. GetSelFundCustAccountModelByBalanceAndBuyercode(acct.FUND_TRANS_CUST.BALANCESUBJECT, acct.FUND_TRANS_CUST.BUYERCODE);
  117. if (cust == null)
  118. {
  119. return;
  120. }
  121. // 二级账户是否存在
  122. if (acct.SECONDACCOUNT.Length == 0)
  123. {
  124. errMsg = base._errMsgMoneyNotEnough;
  125. return;
  126. }
  127. Model.SEL_FUND_CUST_USEDDETAIL detail = null;
  128. Model.SEL_FUND_SECONDLE_USEDETAIL secdetaill = null;
  129. string busiseq = Common.SaleFundCommon.GetBusiSeq();
  130. // 事务开启
  131. // transaction.BeginTransaction();
  132. System.Collections.ArrayList list = new System.Collections.ArrayList();
  133. acct.FUND_TRANS_CUST.TRANS_MONEY = -acct.FUND_TRANS_CUST.TRANS_MONEY;
  134. detail = new Model.SEL_FUND_CUST_USEDDETAIL(acct, busiseq);
  135. secdetaill = new Model.SEL_FUND_SECONDLE_USEDETAIL(acct, busiseq);
  136. list.Add(base.GetFundCustAccountInstance().Sql_AddLeaveMoneyCustAccount(acct.FUND_TRANS_CUST));
  137. list.Add(base.GetFundCustUsedDetailInstance().Sql_Insert(detail));
  138. list.Add( base.GetFundSecondAccountInstance().Sql_AddMoneyToSecondLevelAccount(acct));
  139. list.Add( base.GetFundSecondUsedDetailInstance().Sql_Insert(secdetaill));
  140. base.ExecuteNoReader(list,out errMsg);
  141. //// 客户账户总资金减少
  142. //base.GetFundCustAccountInstance().AddLeaveMoneyCustAccount(acct.FUND_TRANS_CUST, transaction);
  143. //// 写明细
  144. //base.GetFundCustUsedDetailInstance().Insert(detail, transaction);
  145. //// 二级账户总资金和剩余资金增加
  146. //base.GetFundSecondAccountInstance().AddMoneyToSecondLevelAccount(acct, transaction);
  147. //// 写明细
  148. //base.GetFundSecondUsedDetailInstance().Insert(secdetaill, transaction);
  149. // 提交
  150. //errMsg = transaction.ErrMsg;
  151. //transaction.Commit();
  152. }
  153. catch (Exception ex)
  154. {
  155. errMsg = ex.Message;
  156. }
  157. }
  158. /// <summary>
  159. /// 二级账户到客户账户
  160. /// 二级账户总资金,剩余资金减少
  161. /// 客户账户总资金不变,剩余资金增加
  162. /// </summary>
  163. /// <param name="acct"></param>
  164. /// <param name="errMsg"></param>
  165. public void TransferMoneySecondAccountToCust(Model.SEL_FUND_TRANS_SECONDACCOUNT acct, out string errMsg)
  166. {
  167. errMsg = "";
  168. DbHelp.DbTransaction transaction = base.GetTransaction();
  169. try
  170. {
  171. // 检查二级账户剩余资金是否足够
  172. Model.SEL_FUND_SECONDLEVEL_ACCOUNT secacct =
  173. base.GetFundSecondAccountInstance().
  174. GetSelFundSecondAccountBySecondAccount(acct.FUND_TRANS_CUST.BALANCESUBJECT,
  175. acct.FUND_TRANS_CUST.BUYERCODE,
  176. acct.SECONDACCOUNT);
  177. if (secacct == null)
  178. {
  179. errMsg = base._errDefaultMsg;
  180. return;
  181. }
  182. // 小于转移资金
  183. if (secacct.LEAVEMONEY < acct.TRANS_MONEY)
  184. {
  185. errMsg = base._errMsgMoneyNotEnough;
  186. return;
  187. }
  188. Model.SEL_FUND_CUST_USEDDETAIL detail = null;
  189. Model.SEL_FUND_SECONDLE_USEDETAIL secdetaill = null;
  190. string busiseq = Common.SaleFundCommon.GetBusiSeq();
  191. // 二级账户总资金和剩余资金减少
  192. acct.FUND_TRANS_CUST.TRANS_MONEY = acct.TRANS_MONEY;
  193. acct.TRANS_MONEY = -acct.TRANS_MONEY;
  194. detail = new Model.SEL_FUND_CUST_USEDDETAIL(acct, busiseq);
  195. secdetaill = new Model.SEL_FUND_SECONDLE_USEDETAIL(acct, busiseq);
  196. // 开启事务
  197. System.Collections.ArrayList list = new System.Collections.ArrayList();
  198. list.Add(base.GetFundSecondAccountInstance().Sql_AddMoneyToSecondLevelAccount(acct));
  199. list.Add(base.GetFundSecondUsedDetailInstance().Sql_Insert(secdetaill));
  200. list.Add(base.GetFundCustAccountInstance().Sql_AddLeaveMoneyCustAccount(acct.FUND_TRANS_CUST));
  201. list.Add(base.GetFundCustUsedDetailInstance().Sql_Insert(detail));
  202. //base.GetFundSecondAccountInstance().AddMoneyToSecondLevelAccount(acct, transaction);
  203. //base.GetFundSecondUsedDetailInstance().Insert(secdetaill,transaction);
  204. //// 客户账户剩余资金增加,总资金不变
  205. //base.GetFundCustAccountInstance().AddLeaveMoneyCustAccount(acct.FUND_TRANS_CUST, transaction);
  206. //base.GetFundCustUsedDetailInstance().Insert(detail,transaction);
  207. base.ExecuteNoReader(list, out errMsg);
  208. }
  209. catch(Exception ex)
  210. {
  211. errMsg = ex.Message;
  212. }
  213. }
  214. public System.Collections.ArrayList GetTransferMoneySecondAccountToCust(Model.SEL_FUND_TRANS_SECONDACCOUNT acct, out string errMsg)
  215. {
  216. errMsg = "";
  217. try
  218. {
  219. // 检查二级账户剩余资金是否足够
  220. Model.SEL_FUND_SECONDLEVEL_ACCOUNT secacct =
  221. base.GetFundSecondAccountInstance().
  222. GetSelFundSecondAccountBySecondAccount(acct.FUND_TRANS_CUST.BALANCESUBJECT,
  223. acct.FUND_TRANS_CUST.BUYERCODE,
  224. acct.SECONDACCOUNT);
  225. Model.SEL_FUND_CUST_USEDDETAIL detail = null;
  226. Model.SEL_FUND_SECONDLE_USEDETAIL secdetaill = null;
  227. string busiseq = Common.SaleFundCommon.GetBusiSeq();
  228. // 二级账户总资金和剩余资金减少
  229. acct.FUND_TRANS_CUST.TRANS_MONEY = acct.TRANS_MONEY;
  230. acct.TRANS_MONEY = -acct.TRANS_MONEY;
  231. detail = new Model.SEL_FUND_CUST_USEDDETAIL(acct, busiseq);
  232. secdetaill = new Model.SEL_FUND_SECONDLE_USEDETAIL(acct, busiseq);
  233. // 开启事务
  234. System.Collections.ArrayList list = new System.Collections.ArrayList();
  235. list.Add(base.GetFundSecondAccountInstance().Sql_AddMoneyToSecondLevelAccount(acct));
  236. list.Add(base.GetFundSecondUsedDetailInstance().Sql_Insert(secdetaill));
  237. list.Add(base.GetFundCustAccountInstance().Sql_AddLeaveMoneyCustAccount(acct.FUND_TRANS_CUST));
  238. list.Add(base.GetFundCustUsedDetailInstance().Sql_Insert(detail));
  239. return list;
  240. //base.GetFundSecondAccountInstance().AddMoneyToSecondLevelAccount(acct, transaction);
  241. //base.GetFundSecondUsedDetailInstance().Insert(secdetaill,transaction);
  242. //// 客户账户剩余资金增加,总资金不变
  243. //base.GetFundCustAccountInstance().AddLeaveMoneyCustAccount(acct.FUND_TRANS_CUST, transaction);
  244. //base.GetFundCustUsedDetailInstance().Insert(detail,transaction);
  245. }
  246. catch (Exception ex)
  247. {
  248. errMsg = ex.Message;
  249. return new System.Collections.ArrayList();
  250. }
  251. }
  252. /// <summary>
  253. /// 二级账户到合同账户
  254. /// </summary>
  255. /// <param name="acct"></param>
  256. /// <param name="errMsg"></param>
  257. public void TransferMoneySecondAccountToPact(Model.SEL_FUND_TRANS_PACT acct, out string errMsg)
  258. {
  259. errMsg = "";
  260. DbHelp.DbTransaction transaction = base.GetTransaction();
  261. string busiseq = Common.SaleFundCommon.GetBusiSeq();
  262. try
  263. {
  264. // 检查二级账户剩余资金是否足够
  265. Model.SEL_FUND_SECONDLEVEL_ACCOUNT secacct =
  266. base.GetFundSecondAccountInstance().
  267. GetSelFundSecondAccountBySecondAccount(acct.FUND_TRANS_SECONDACCOUNT.FUND_TRANS_CUST.BALANCESUBJECT,
  268. acct.FUND_TRANS_SECONDACCOUNT.FUND_TRANS_CUST.BUYERCODE,
  269. acct.FUND_TRANS_SECONDACCOUNT.SECONDACCOUNT);
  270. if (secacct == null)
  271. {
  272. errMsg = base._errDefaultMsg;
  273. return;
  274. }
  275. // 小于转移资金
  276. if (secacct.LEAVEMONEY < acct.TRANS_MONEY)
  277. {
  278. errMsg = base._errMsgMoneyNotEnough;
  279. return;
  280. }
  281. // 二级账户总资金减少
  282. acct.FUND_TRANS_SECONDACCOUNT.TRANS_MONEY = -acct.TRANS_MONEY;
  283. Model.SEL_FUND_PACT_TRANSDETAIL detal =
  284. new Model.SEL_FUND_PACT_TRANSDETAIL(acct, busiseq);
  285. Model.SEL_FUND_SECONDLE_USEDETAIL detailSec =
  286. new Model.SEL_FUND_SECONDLE_USEDETAIL(acct,busiseq);
  287. // 开启事务
  288. transaction.BeginTransaction();
  289. System.Collections.ArrayList list = new System.Collections.ArrayList();
  290. list.Add(base.GetFundSecondAccountInstance().Sql_AddSecondLevelAccountLeavemoney(acct.FUND_TRANS_SECONDACCOUNT));
  291. list.Add(base.GetFundSecondUsedDetailInstance().Sql_Insert(detailSec));
  292. list.Add(base.GetFundPactAccountInstance().Sql_AddFundPactAccountTotalMoneyAndLeavemoney(acct));
  293. list.Add(base.GetFundPactTransDetailInstance().Sql_Insert(detal));
  294. base.ExecuteNoReader(list, out errMsg);
  295. //base.GetFundSecondAccountInstance().AddSecondLevelAccountLeavemoney(acct.FUND_TRANS_SECONDACCOUNT, transaction);
  296. //base.GetFundSecondUsedDetailInstance().Insert(detailSec, transaction);
  297. //// 合同账户总资金和剩余资金增加
  298. //base.GetFundPactAccountInstance().AddFundPactAccountTotalMoneyAndLeavemoney(acct, transaction);
  299. //base.GetFundPactTransDetailInstance().Insert(detal,transaction);
  300. // 提交
  301. }
  302. catch(Exception ex)
  303. {
  304. errMsg = ex.Message;
  305. }
  306. }
  307. /// <summary>
  308. /// 合同账户到二级账户
  309. /// </summary>
  310. /// <param name="acct"></param>
  311. /// <param name="errMsg"></param>
  312. public void TransferMoneyPactToSecondAccount(Model.SEL_FUND_TRANS_PACT acct, out string errMsg)
  313. {
  314. errMsg = "";
  315. DbHelp.DbTransaction transaction = base.GetTransaction();
  316. string busiseq = Common.SaleFundCommon.GetBusiSeq();
  317. try
  318. {
  319. if (!Model.SEL_FUND_TRANS_PACT.IsAvailable(acct))
  320. {
  321. errMsg = base._errDefaultMsg;
  322. return;
  323. }
  324. Model.SEL_FUND_PACT_ACCOUNT acctpact = new Model.SEL_FUND_PACT_ACCOUNT();
  325. acctpact.BALANCESUBJECT = acct.FUND_TRANS_SECONDACCOUNT.FUND_TRANS_CUST.BALANCESUBJECT;
  326. acctpact.BUYERCODE = acct.FUND_TRANS_SECONDACCOUNT.FUND_TRANS_CUST.BUYERCODE;
  327. acctpact.SECONDACCOUNT = acct.FUND_TRANS_SECONDACCOUNT.SECONDACCOUNT;
  328. acctpact.PACTNO = acct.PACTNO;
  329. Model.SEL_FUND_PACT_ACCOUNT pactact =
  330. base.GetFundPactAccountInstance().GetSelFundPactAccountModel(acctpact);
  331. // 检查剩余资金
  332. if (pactact.LEAVEMONEY < acct.TRANS_MONEY)
  333. {
  334. errMsg = base._errMsgMoneyNotEnough;
  335. return;
  336. }
  337. // 二级账户总资金不变,剩余资金增加
  338. acct.FUND_TRANS_SECONDACCOUNT.TRANS_MONEY = acct.TRANS_MONEY;
  339. // 合同账户总资金,剩余资金较少
  340. acct.TRANS_MONEY = -acct.TRANS_MONEY;
  341. Model.SEL_FUND_PACT_TRANSDETAIL detal =
  342. new Model.SEL_FUND_PACT_TRANSDETAIL(acct, busiseq);
  343. Model.SEL_FUND_SECONDLE_USEDETAIL detailSec =
  344. new Model.SEL_FUND_SECONDLE_USEDETAIL(acct, busiseq);
  345. // transaction.BeginTransaction();
  346. System.Collections.ArrayList list = new System.Collections.ArrayList();
  347. list.Add( base.GetFundPactAccountInstance().Sql_AddFundPactAccountTotalMoneyAndLeavemoney(acct));
  348. list.Add(base.GetFundPactTransDetailInstance().Sql_Insert(detal));
  349. list.Add( base.GetFundSecondAccountInstance().Sql_AddSecondLevelAccountLeavemoney(acct.FUND_TRANS_SECONDACCOUNT));
  350. list.Add(base.GetFundSecondUsedDetailInstance().Sql_Insert(detailSec));
  351. // base.GetFundPactAccountInstance().AddFundPactAccountTotalMoneyAndLeavemoney(acct, transaction);
  352. // base.GetFundPactTransDetailInstance().Insert(detal, transaction);
  353. //二级账户剩余资金增加,总资金不变
  354. // base.GetFundSecondAccountInstance().AddSecondLevelAccountLeavemoney(acct.FUND_TRANS_SECONDACCOUNT, transaction);
  355. // base.GetFundSecondUsedDetailInstance().Insert(detailSec, transaction);
  356. // 提交
  357. // errMsg = transaction.ErrMsg;
  358. // transaction.Commit();
  359. base.ExecuteNoReader(list,out errMsg);
  360. }
  361. catch(Exception ex)
  362. {
  363. errMsg = ex.Message;
  364. }
  365. }
  366. }
  367. }