430 lines
18 KiB
XML
430 lines
18 KiB
XML
<?xml version="1.0" encoding='UTF-8'?>
|
|
<Root>
|
|
<!--手工调账确认/撤销-->
|
|
<Transaction code="0100007" log_switch="1">
|
|
<!--检查主账户/商户账户是否存在-->
|
|
<DynSentence name="QRY_ACMTACIN_MAINAC">
|
|
<Sentence>
|
|
SELECT AC_STS FROM ACMTACIN WHERE AC_NO='%s' AND AC_TYP="%s"
|
|
</Sentence>
|
|
<Fields>AC_NO|AC_TYP|</Fields>
|
|
</DynSentence>
|
|
|
|
<!--检查主账户/商户账户余额信息档-->
|
|
<DynSentence name="QRY_ACMTACBL_MAINACBL">
|
|
<Sentence>
|
|
SELECT CAP_TYP_STS FROM ACMTACBL WHERE AC_NO='%s' AND CAP_TYP='%s' AND AC_TYP="%s"
|
|
</Sentence>
|
|
<Fields>AC_NO|CAP_TYP|AC_TYP|</Fields>
|
|
</DynSentence>
|
|
|
|
<!--插入主账户/商户账户余额信息-->
|
|
<DynSentence name="INS_ACMTACBL">
|
|
<Sentence>
|
|
INSERT INTO ACMTACLG (AC_NO,CAP_TYP,CCY,AC_TYP,USR_NO,USR_PROV,USR_CITY,AC_PROV,AC_CITY,AC_ORG,CAP_TYP_STS,CRE_DT,LAST_AC_BAL,CUR_AC_BAL,UAVA_BAL,OD_LMT,TOT_OD_AMT,MAX_BAL_LMT,MIN_BAL_LMT,MIN_TRG_VAL,BAL_TAG,UPD_DT,UPD_JRN,TM_SMP)
|
|
VALUES('%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s')
|
|
</Sentence>
|
|
<Fields>AC_NO|CAP_TYP|CCY|AC_TYP|USR_NO|USR_PROV|USR_CITY|AC_PROV|AC_CITY|AC_ORG|CAP_TYP_STS|CRE_DT|LAST_AC_BAL|CUR_AC_BAL|UAVA_BAL|OD_LMT|TOT_OD_AMT|MAX_BAL_LMT|MIN_BAL_LMT|MIN_TRG_VAL|BAL_TAG|UPD_DT|UPD_JRN|TM_SMP|</Fields>
|
|
</DynSentence>
|
|
|
|
<!--检查钱包账户余额信息档-->
|
|
<DynSentence name="QRY_ACMTSBBL_SUBACBL">
|
|
<Sentence>
|
|
SELECT CAP_TYP_STS FROM ACMTSBBL WHERE AC_NO='%s' AND CAP_TYP='%s' AND AC_TYP="%s"
|
|
</Sentence>
|
|
<Fields>AC_NO|CAP_TYP|AC_TYP|</Fields>
|
|
</DynSentence>
|
|
|
|
<!--插入钱包账户余额-->
|
|
<DynSentence name="INS_ACMTSBBL">
|
|
<Sentence>
|
|
INSERT INTO ACMTSBBL (AC_NO,CAP_TYP,CCY,AC_TYP,USR_NO,USR_PROV,USR_CITY,AC_PROV,AC_CITY,AC_ORG,CAP_TYP_STS,CRE_DT,LAST_AC_BAL,CUR_AC_BAL,UAVA_BAL,OD_LMT,MAX_BAL_LMT,MIN_BAL_LMT,BAL_TAG,UPD_DT,UPD_JRN,TM_SMP)
|
|
VALUES('%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s')
|
|
</Sentence>
|
|
<Fields>AC_NO|CAP_TYP|CCY|AC_TYP|USR_NO|USR_PROV|USR_CITY|AC_PROV|AC_CITY|AC_ORG|CAP_TYP_STS|CRE_DT|LAST_AC_BAL|CUR_AC_BAL|UAVA_BAL|OD_LMT|MAX_BAL_LMT|MIN_BAL_LMT|BAL_TAG|UPD_DT|UPD_JRN|TM_SMP|</Fields>
|
|
</DynSentence>
|
|
|
|
<!--检查内部账户是否存在-->
|
|
<DynSentence name="QRY_ACMTINIF_ACCINF">
|
|
<Sentence>
|
|
SELECT IN_AC_STS FROM ACMTINIF WHERE AC_NO='%s'
|
|
</Sentence>
|
|
<Fields>AC_NO|</Fields>
|
|
</DynSentence>
|
|
|
|
<!--检查内部账户余额信息档-->
|
|
<DynSentence name="QRY_ACMTINBL_INACBL">
|
|
<Sentence>
|
|
SELECT CUR_AC_BAL FROM ACMTINBL WHERE AC_NO='%s' AND CAP_TYP='%s'
|
|
</Sentence>
|
|
<Fields>AC_NO|CAP_TYP|</Fields>
|
|
</DynSentence>
|
|
|
|
<!--插入内部账户余额-->
|
|
<DynSentence name="INS_ACMTINBL">
|
|
<Sentence>
|
|
INSERT INTO ACMTINBL (AC_NO,CAP_TYP,CCY,IN_AC_TYP,AC_PROV,AC_CITY,AC_ORG,CRE_DT,LAST_AC_BAL,CUR_AC_BAL,UAVA_BAL,OD_LMT,MAX_BAL_LMT,MIN_BAL_LMT,BAL_TAG,UPD_JRN,UPD_DT,TM_SMP)
|
|
VALUES('%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s')
|
|
</Sentence>
|
|
<Fields>AC_NO|CAP_TYP|CCY|IN_AC_TYP|AC_PROV|AC_CITY|AC_ORG|CRE_DT|LAST_AC_BAL|CUR_AC_BAL|UAVA_BAL|OD_LMT|MAX_BAL_LMT|MIN_BAL_LMT|BAL_TAG|UPD_JRN|UPD_DT|TM_SMP|</Fields>
|
|
</DynSentence>
|
|
|
|
<!--检查内部账户是否允许手工调账-->
|
|
<DynSentence name="QRY_ACMTITMR_MNU_AC_FLG">
|
|
<Sentence>
|
|
SELECT MNU_AC_FLG FROM ACMTINIF WHERE AC_TYP='%s' AND CAP_TYP='%s'
|
|
</Sentence>
|
|
<Fields>AC_TYP|CAP_TYP|</Fields>
|
|
</DynSentence>
|
|
|
|
|
|
<!--确认流水号下的未确认流水-->
|
|
<DynSentence name="UPD_ACMTACLG_CMT">
|
|
<Sentence>
|
|
UPDATE ACMTACLG SET AC_TX_STS='0',CHK_OPR='%s',CHK_TM='%s' WHERE JRN_NO='%s'
|
|
</Sentence>
|
|
<Fields>CHK_OPR|CHK_TM|JRN_NO|</Fields>
|
|
</DynSentence>
|
|
|
|
<!--撤销流水号下的未确认流水-->
|
|
<DynSentence name="UPD_ACMTACLG_RVS">
|
|
<Sentence>
|
|
UPDATE ACMTACLG SET AC_TX_STS='2',CHK_OPR='%s',CHK_TM='%s' WHERE JRN_NO='%s'
|
|
</Sentence>
|
|
<Fields>CHK_OPR|CHK_TM|JRN_NO|</Fields>
|
|
</DynSentence>
|
|
|
|
|
|
|
|
<FlowCtrl>
|
|
<If condition="IS_EQUAL_STRING($CFM_FLG,1)"> <!--确认-->
|
|
<!--检查借贷平衡关系-->
|
|
<Set>CAL_DR_TOT_AMT=0</Set>
|
|
<Set>CAL_CR_TOT_AMT=0</Set>
|
|
<Set>i=1</Set>
|
|
<While condition="$i<=$TOT_NUM">
|
|
<If condition="$DC_FLG=C"> <!--计算借方总金额-->
|
|
<Set>CAL_CR_TOT_AMT=ADD($CAL_CR_TOT_AMT,$TX_AMT)</Set>
|
|
|
|
</If>
|
|
<ElseIf condition="$DC_FLG=D"> <!--计算贷记总金额-->
|
|
<Set>CAL_DR_TOT_AMT=ADD($CAL_DR_TOT_AMT,$TX_AMT)</Set>
|
|
|
|
</ElseIf>
|
|
<Else>
|
|
<Set>RSP_CD=</Set>
|
|
<Set>RSP_MSG=借贷标志有有误</Set>
|
|
<Return/>
|
|
</Else>
|
|
|
|
|
|
</While>
|
|
|
|
<!--检查交易的借贷平衡关系-->
|
|
<If condition="AND(IS_EQUAL_INT($CAL_CR_TOT_AMT,$CAL_DR_TOT_AMT),IS_EQUAL_INT($DR_TOT_AMT,$CR_TOT_AMT),IS_EQUAL_INT($CAL_CR_TOT_AMT,$CR_TOT_AMT))">
|
|
|
|
</If>
|
|
<Else>
|
|
<Set>RSP_CD=ACM20021</Set>
|
|
<Set>RSP_MSG=手工调账借贷不平衡</Set>
|
|
<Return/>
|
|
</Else>
|
|
|
|
|
|
|
|
<!--逐笔处理手工调账明细-->
|
|
<Set>CHK_TM=GETDATETIME(HHMISS)</Set>
|
|
<Set>i=1</Set>
|
|
<While condition="$i<=$TOT_NUM">
|
|
<Switch express="$AC_TYP">
|
|
<Case value="100"/> <!--主账户-->
|
|
<Case value="800"> <!--商户账户-->
|
|
<!--检查账户是否存在-->
|
|
<Exec func="PUB:ReadRecord" error="IGNORE">
|
|
<Arg name="SqlCmd" value="QRY_ACMTACIN_MAINAC"/>
|
|
</Exec>
|
|
<If condition="~RetCod=0">
|
|
<If condition="IS_NOEQUAL_STRING($AC_STS,0)">
|
|
<Set>RSP_CD=ACM20004</Set>
|
|
<Set>RSP_MSG=账户状态不正常</Set>
|
|
<Return/>
|
|
</If>
|
|
|
|
</If>
|
|
<ElseIf condition="~RetCod=2">
|
|
<Set>RSP_CD=ACM20011</Set>
|
|
<Set>RSP_MSG=账户不存在</Set>
|
|
<Return/>
|
|
</ElseIf>
|
|
<Else>
|
|
<Set>RSP_CD=ACM00001</Set>
|
|
<Set>RSP_MSG=数据库错误</Set>
|
|
<Return/>
|
|
</Else>
|
|
|
|
|
|
<!--检查余额信息档-->
|
|
<Exec func="PUB:ReadRecord" error="IGNORE">
|
|
<Arg name="SqlCmd" value="QRY_ACMTACBL_MAINACBL"/>
|
|
</Exec>
|
|
<If condition="~RetCod=0">
|
|
|
|
</If>
|
|
<ElseIf condition="~RetCod=2">
|
|
<If condition="IS_EQUAL_STRING($DC_FLG,C)">
|
|
<Set>RSP_CD=ACM20005</Set>
|
|
<Set>RSP_MSG=账户余额不足</Set>
|
|
<Return/>
|
|
</If>
|
|
<ElseIf condition="IS_EQUAL_STRING($DC_FLG,D)">
|
|
<!--插入主账户余额记录-->
|
|
<Exec func="PUB:ExecSql">
|
|
<Arg name="SqlCmd" value="INS_ACMTACBL"/>
|
|
</Exec>
|
|
</ElseIf>
|
|
<Else>
|
|
<Set>RSP_CD=</Set>
|
|
<Set>RSP_MSG=借贷标志有有误</Set>
|
|
<Return/>
|
|
|
|
</Else>
|
|
|
|
</ElseIf>
|
|
<Else>
|
|
<Set>RSP_CD=ACM00001</Set>
|
|
<Set>RSP_MSG=数据库错误</Set>
|
|
<Return/>
|
|
</Else>
|
|
|
|
|
|
<!--调账处理-->
|
|
<If condition="IS_EQUAL_STRING($DC_FLG,C)"> <!--借记调账-->
|
|
<!--组件:主账户支取-->
|
|
|
|
|
|
</If>
|
|
<ElseIf condition="IS_EQUAL_STRING($DC_FLG,D)"> <!--贷记调账-->
|
|
<!--组件:主账户存入-->
|
|
|
|
|
|
</ElseIf>
|
|
<Else>
|
|
|
|
|
|
</Else>
|
|
|
|
|
|
<Break/>
|
|
</Case>
|
|
<Case value="101"> <!--钱包账户-->
|
|
<!--检查账户是否存在,调用现场组件-->
|
|
|
|
|
|
|
|
|
|
<!--检查余额信息档-->
|
|
<Exec func="PUB:ReadRecord" error="IGNORE">
|
|
<Arg name="SqlCmd" value="QRY_ACMTSBBL_SUBACBL"/>
|
|
</Exec>
|
|
<If condition="~RetCod=0">
|
|
|
|
</If>
|
|
<ElseIf condition="~RetCod=2">
|
|
<If condition="IS_EQUAL_STRING($DC_FLG,C)">
|
|
<Set>RSP_CD=ACM20005</Set>
|
|
<Set>RSP_MSG=账户余额不足</Set>
|
|
<Return/>
|
|
</If>
|
|
<ElseIf condition="IS_EQUAL_STRING($DC_FLG,D)">
|
|
<!--插入主账户余额记录-->
|
|
<Exec func="PUB:ExecSql">
|
|
<Arg name="SqlCmd" value="INS_ACMTSBBL"/>
|
|
</Exec>
|
|
</ElseIf>
|
|
<Else>
|
|
<Set>RSP_CD=</Set>
|
|
<Set>RSP_MSG=借贷标志有有误</Set>
|
|
<Return/>
|
|
|
|
</Else>
|
|
|
|
</ElseIf>
|
|
<Else>
|
|
<Set>RSP_CD=ACM00001</Set>
|
|
<Set>RSP_MSG=数据库错误</Set>
|
|
<Return/>
|
|
</Else>
|
|
|
|
|
|
<!--调账处理-->
|
|
<If condition="IS_EQUAL_STRING($DC_FLG,C)"> <!--借记调账-->
|
|
<!--组件:钱包账户支取-->
|
|
|
|
|
|
</If>
|
|
<ElseIf condition="IS_EQUAL_STRING($DC_FLG,D)"> <!--贷记调账-->
|
|
<!--组件:钱包账户存入-->
|
|
|
|
|
|
</ElseIf>
|
|
<Else>
|
|
|
|
|
|
</Else>
|
|
|
|
|
|
|
|
<Break/>
|
|
</Case>
|
|
<Case value="001"/> <!--内部账户-->
|
|
<Case value="002"/> <!--内部账户-->
|
|
<Case value="003"/> <!--内部账户-->
|
|
<Case value="004"/> <!--内部账户-->
|
|
<Case value="005"/> <!--内部账户-->
|
|
<Case value="006"> <!--内部账户-->
|
|
<!--检查账户是否存在-->
|
|
<Exec func="PUB:ReadRecord" error="IGNORE">
|
|
<Arg name="SqlCmd" value="QRY_ACMTINIF_ACCINF"/>
|
|
</Exec>
|
|
<If condition="~RetCod=0">
|
|
<If condition="IS_NOEQUAL_STRING($IN_AC_STS,0)">
|
|
<Set>RSP_CD=ACM20004</Set>
|
|
<Set>RSP_MSG=账户状态不正常</Set>
|
|
<Return/>
|
|
</If>
|
|
|
|
</If>
|
|
<ElseIf condition="~RetCod=2">
|
|
<Set>RSP_CD=ACM20011</Set>
|
|
<Set>RSP_MSG=账户不存在</Set>
|
|
<Return/>
|
|
</ElseIf>
|
|
<Else>
|
|
<Set>RSP_CD=ACM00001</Set>
|
|
<Set>RSP_MSG=数据库错误</Set>
|
|
<Return/>
|
|
</Else>
|
|
|
|
|
|
<!--根据账户种类、资金种类查询该内部账户是否允许手工调账-->
|
|
<Exec func="PUB:ReadRecord" error="IGNORE">
|
|
<Arg name="SqlCmd" value="QRY_ACMTITMR_MNU_AC_FLG"/>
|
|
</Exec>
|
|
<If condition="~RetCod=0">
|
|
<If condition="IS_NOEQUAL_STRING($MNU_AC_FLG,0)">
|
|
<Set>RSP_CD=ACM20033</Set>
|
|
<Set>RSP_MSG=该账户不允许手工调账</Set>
|
|
<Return/>
|
|
</If>
|
|
|
|
</If>
|
|
<ElseIf condition="~RetCod=2">
|
|
<Set>RSP_CD=ACM20018</Set>
|
|
<Set>RSP_MSG=未建立科目对照关系</Set>
|
|
<Return/>
|
|
</ElseIf>
|
|
<Else>
|
|
<Set>RSP_CD=ACM00001</Set>
|
|
<Set>RSP_MSG=数据库错误</Set>
|
|
<Return/>
|
|
</Else>
|
|
|
|
|
|
<!--检查余额信息档-->
|
|
<Exec func="PUB:ReadRecord" error="IGNORE">
|
|
<Arg name="SqlCmd" value="QRY_ACMTINBL_INACBL"/>
|
|
</Exec>
|
|
<If condition="~RetCod=0">
|
|
|
|
</If>
|
|
<ElseIf condition="~RetCod=2">
|
|
<If condition="IS_EQUAL_STRING($DC_FLG,C)">
|
|
<Set>RSP_CD=ACM20005</Set>
|
|
<Set>RSP_MSG=账户余额不足</Set>
|
|
<Return/>
|
|
</If>
|
|
<ElseIf condition="IS_EQUAL_STRING($DC_FLG,D)">
|
|
<!--插入主账户余额记录-->
|
|
<Exec func="PUB:ExecSql">
|
|
<Arg name="SqlCmd" value="INS_ACMTINBL"/>
|
|
</Exec>
|
|
</ElseIf>
|
|
<Else>
|
|
<Set>RSP_CD=</Set>
|
|
<Set>RSP_MSG=借贷标志有有误</Set>
|
|
<Return/>
|
|
|
|
</Else>
|
|
|
|
</ElseIf>
|
|
<Else>
|
|
<Set>RSP_CD=ACM00001</Set>
|
|
<Set>RSP_MSG=数据库错误</Set>
|
|
<Return/>
|
|
</Else>
|
|
|
|
|
|
<!--调账处理-->
|
|
<If condition="IS_EQUAL_STRING($DC_FLG,C)"> <!--借记调账-->
|
|
<!--组件:内部账户支取-->
|
|
|
|
|
|
</If>
|
|
<ElseIf condition="IS_EQUAL_STRING($DC_FLG,D)"> <!--贷记调账-->
|
|
<!--组件:内部账户存入-->
|
|
|
|
|
|
</ElseIf>
|
|
<Else>
|
|
|
|
|
|
</Else>
|
|
|
|
|
|
<Break/>
|
|
</Case>
|
|
<Default>
|
|
|
|
|
|
<Break/>
|
|
</Default>
|
|
</Switch>
|
|
|
|
|
|
|
|
|
|
</While>
|
|
|
|
|
|
|
|
<!--确认该笔未确认流水-->
|
|
<Exec func="PUB:ExecSql">
|
|
<Arg name="SqlCmd" value="UPD_ACMTACLG_CMT"/>
|
|
</Exec>
|
|
|
|
|
|
</If>
|
|
<ElseIf condition="IS_EQUAL_STRING($CFM_FLG,0)"> <!--撤销-->
|
|
<!--撤销该流水号下的未确认流水-->
|
|
<Exec func="PUB:ExecSql">
|
|
<Arg name="SqlCmd" value="UPD_ACMTACLG_RVS"/>
|
|
</Exec>
|
|
|
|
|
|
</ElseIf>
|
|
<Else> <!--确认/撤销标志非法-->
|
|
<Set>RSP_CD=</Set>
|
|
<Set>RSP_MSG=确认/撤销标志非法</Set>
|
|
<Return/>
|
|
</Else>
|
|
|
|
<!--登记操作员操作日志-->
|
|
|
|
|
|
|
|
|
|
</FlowCtrl>
|
|
</Transaction>
|
|
|
|
</Root>
|