Files
2021-01-12 22:04:24 +08:00

355 lines
16 KiB
XML

<?xml version="1.0" encoding='UTF-8'?>
<Root>
<!--手工调账确认/撤销-->
<Transaction code="BUI0100007" log_switch="1">
<!-- 根据流水号来查找综合记账流水信息 -->
<DynSentence name="QRY_ACMTACLG_MAINAC">
<Sentence>
SELECT JRN_NO,AC_TYP,SUB_AC,CAP_TYP,DC_FLG,TX_AMT,RMK,AC_DT
FROM ACMTACLG
WHERE JRN_NO=?
</Sentence>
<Fields>JRN_NO|</Fields>
</DynSentence>
<!--确认流水号下的未确认流水-->
<DynSentence name="UPD_ACMTACLG_CMT">
<Sentence>
UPDATE ACMTACLG
SET AC_TX_STS='0',CHK_OPR=?,CHK_TM=?
WHERE JRN_NO=?
</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=?,CHK_TM=?
WHERE JRN_NO=?
</Sentence>
<Fields>CHK_OPR|CHK_TM|JRN_NO|</Fields>
</DynSentence>
<FlowCtrl>
<Set>CONFIRM=conf</Set>
<Set>UPDO=updo</Set>
<Set>CHK_OPR=$CUR_OPR_ID</Set>
<Set>CHK_TM=$GWA.TX_TM</Set>
<If condition="IS_EQUAL_STRING($PARAM,$CONFIRM)"> <!--确认-->
<!--检查借贷平衡关系-->
<Exec func="PUB:QueryInGroup" >
<Arg name="SqlCmd" value="QRY_ACMTACLG_MAINAC"></Arg>
<Arg name="RecordName" value="REC"></Arg>
<Arg name="Limit" value="50"></Arg>
</Exec>
<If condition="~RetCod=2">
<Exec func="PUB:GWASetMsg">
<!-- @msg {1}不存在-->
<Arg name="MsgCd" value="ACM30002"/>
<Arg name="MsgDat" value="待确认的综合记账流水号"></Arg>
</Exec>
<Return/>
</If>
<Set>CAL_DR_TOT_AMT=0</Set>
<Set>CAL_CR_TOT_AMT=0</Set>
<Set>NUM=0</Set>
<While condition="INTCMP($NUM,1,$REC_NUM)">
<Set>NUM=ADD($NUM,1)</Set>
<Set>DC_FLG=REC[$NUM].DC_FLG</Set>
<Set>TX_AMT=REC[$NUM].TX_AMT</Set>
<If condition="$DC_FLG=C"> <!--计算贷方总金额-->
<Set>CAL_CR_TOT_AMT=ADDAMT($CAL_CR_TOT_AMT,$TX_AMT)</Set>
</If>
<ElseIf condition="$DC_FLG=D"> <!--计算借记总金额-->
<Set>CAL_DR_TOT_AMT=ADDAMT($CAL_DR_TOT_AMT,$TX_AMT)</Set>
</ElseIf>
<Else>
<Exec func="PUB:GWASetMsg">
<!-- @msg 借贷标志有误-->
<Arg name="MsgCd" value="ACM30005"/>
</Exec>
<Return/>
</Else>
</While>
<Set>RSP_AMT=AMTCMP($CAL_DR_TOT_AMT,$CAL_CR_TOT_AMT)</Set>
<If condition="$RSP_AMT!=0">
<Exec func="PUB:GWASetMsg">
<!-- @msg 手工调账借贷不平衡-->
<Arg name="MsgCd" value="ACM20021"/>
</Exec>
<Return/>
</If>
<Set>RSP_AMT=</Set> <!-- 置空 -->
<!--逐笔处理手工调账明细-->
<Set>NUM=0</Set>
<While condition="INTCMP($NUM,1,$REC_NUM)">
<Set>NUM=ADD($NUM,1)</Set>
<Set>AC_DT=REC[$NUM].AC_DT</Set>
<Set>AC_DT_QRY=$GWA.AC_DT</Set>
<If condition="IS_NOEQUAL_STRING($AC_DT,$AC_DT_QRY)">
<Exec func="PUB:GWASetMsg">
<!-- @msg 操作日期不符-->
<Arg name="MsgCd" value="ACM30010"/>
</Exec>
<Return/>
</If>
<Set>AC_NO=REC[$NUM].SUB_AC</Set>
<Set>CAP_TYP=REC[$NUM].CAP_TYP</Set>
<Set>AC_TYP=REC[$NUM].AC_TYP</Set>
<Set>TX_AMT=REC[$NUM].TX_AMT</Set>
<Set>DC_FLG=REC[$NUM].DC_FLG</Set>
<Set>RMK=REC[$NUM].RMK</Set>
<Switch expression="$AC_TYP">
<Case value="100"/> <!--主账户-->
<Case value="800"> <!--商户账户-->
<If condition="$AC_TYP=100">
<!-- 根据账号查询手机号与户名 -->
<Set>MAIN_AC_IN.AC_NO=$AC_NO</Set>
<Set>MAIN_AC_IN.AC_TYP=$AC_TYP</Set>
<Exec func="ACM1:QueryAcNoByMblNo" >
<Arg name="_I_INP_DAT" value="MAIN_AC_IN" />
<Arg name="_I_GWA" value="GWA"/>
<Arg name="_O_OUT_DAT" value="MAIN_AC_OUT" />
</Exec>
<If condition="NOT(IS_SUCC(@O.MSG_CD))">
<Exec func="PUB:GWASetMsg">
<Arg name="MsgCd" value="@O.MSG_CD"/>
</Exec>
<Return/>
</If>
<Set>MBL_NO=@O.MAIN_AC_OUT.MBL_NO</Set>
</If>
<If condition="$AC_TYP=800">
<!-- 根据账号查询手机号与户名 -->
<Set>MAIN_AC_IN.AC_NO=$AC_NO</Set>
<Set>MAIN_AC_IN.AC_TYP=$AC_TYP</Set>
<Exec func="ACM1:QueryAcNoByMblNo" >
<Arg name="_I_INP_DAT" value="MAIN_AC_IN" />
<Arg name="_I_GWA" value="GWA"/>
<Arg name="_O_OUT_DAT" value="MAIN_AC_OUT" />
</Exec>
<If condition="NOT(IS_SUCC(@O.MSG_CD))">
<Exec func="PUB:GWASetMsg">
<Arg name="MsgCd" value="@O.MSG_CD"/>
</Exec>
<Return/>
</If>
<Set>MERC_ID=@O.MAIN_AC_OUT.MERC_ID</Set>
</If>
<!--调账处理-->
<Set>MAIN_ACC.AC_NO=$AC_NO</Set>
<Set>MAIN_ACC.CAP_TYP=$CAP_TYP</Set>
<Set>MAIN_ACC.AC_TYP=$AC_TYP</Set>
<Set>MAIN_ACC.AMT=$TX_AMT</Set>
<Set>MAIN_ACC.TX_TYP=35</Set>
<Set>MAIN_ACC.BUS_TYP=0900</Set>
<Set>MAIN_ACC.ORD_TYP =12</Set>
<Set>MAIN_ACC.ORD_NO =$JRN_NO</Set>
<Set>MAIN_ACC.TX_DT=$GWA.TX_DT</Set>
<Set>MAIN_ACC.TX_TM=$GWA.TX_TM</Set>
<Set>MAIN_ACC.TX_CD=$GWA.TX_CD</Set>
<Set>MAIN_ACC.RMK=$RMK</Set>
<If condition="IS_EQUAL_STRING($DC_FLG,D)"> <!--借记调账-->
<Set>MAIN_ACC.BAL_OD_FLG=Y</Set>
<!--组件:主账户支取-->
<Exec func="ACM:MainAccountWithdraw">
<Arg name="_I_INP_DAT" value="MAIN_ACC"/> <!-- 输入信息 -->
<Arg name="_O_OUT_DAT" value="MAIN_AMT"/> <!-- 输出信息 -->
</Exec>
<If condition="NOT(IS_SUCC(@O.MSG_CD))">
<Exec func="PUB:GWASetMsg">
<Arg name="MsgCd" value="@O.MSG_CD"/>
</Exec>
<Return/>
</If>
</If>
<ElseIf condition="IS_EQUAL_STRING($DC_FLG,C)"> <!--贷记调账-->
<!--组件:主账户存入-->
<Exec func="ACM:MainAccountDeposit">
<Arg name="_I_INP_DAT" value="MAIN_ACC"/> <!-- 输入信息 -->
<Arg name="_O_OUT_DAT" value="MAIN_AMT"/> <!-- 输出信息 -->
</Exec>
<If condition="NOT(IS_SUCC(@O.MSG_CD))">
<Exec func="PUB:GWASetMsg">
<Arg name="MsgCd" value="@O.MSG_CD"/>
</Exec>
<Return/>
</If>
</ElseIf>
<Else>
<Exec func="PUB:GWASetMsg">
<!-- @msg 借贷标志有误 -->
<Arg name="MsgCd" value="ACM30005"/>
</Exec>
<Return/>
</Else>
<Break/>
</Case>
<Case value="101"> <!--钱包账户-->
<!--调账处理-->
<Set>PURSE_ACC.APP_SEQ_NO=$AC_NO</Set>
<Set>PURSE_ACC.AC_TYP=$AC_TYP</Set>
<Set>PURSE_ACC.CAP_TYP=$CAP_TYP</Set>
<Set>PURSE_ACC.AMT=$TX_AMT</Set>
<Set>PURSE_ACC.TX_TYP=35</Set>
<Set>PURSE_ACC.BUS_TYP=0900</Set>
<Set>PURSE_ACC.ORD_TYP=12</Set>
<Set>PURSE_ACC.ORD_NO=$JRN_NO</Set>
<Set>PURSE_ACC.TX_DT=$GWA.TX_DT</Set>
<Set>PURSE_ACC.TX_TM=$GWA.TX_TM</Set>
<Set>PURSE_ACC.TX_CD=$GWA.TX_CD</Set>
<Set>PURSE_ACC.RMK=$RMK</Set>
<If condition="IS_EQUAL_STRING($DC_FLG,D)"> <!--借记调账-->
<!--组件:钱包账户支取-->
<Exec func="ACM:PurseAccountWithdraw">
<Arg name="_I_INP_DAT" value="PURSE_ACC"/> <!-- 输入信息 -->
<Arg name="_O_OUT_DAT" value="PURSE_AMT"/> <!-- 输出信息 -->
</Exec>
<If condition="NOT(IS_SUCC(@O.MSG_CD))">
<Exec func="PUB:GWASetMsg">
<Arg name="MsgCd" value="@O.MSG_CD"/>
</Exec>
<Return/>
</If>
</If>
<ElseIf condition="IS_EQUAL_STRING($DC_FLG,C)"> <!--贷记调账-->
<!--组件:钱包账户存入-->
<Exec func="ACM:PurseAccountDeposit">
<Arg name="_I_INP_DAT" value="PURSE_ACC"/> <!-- 输入信息 -->
<Arg name="_O_OUT_DAT" value="PURSE_AMT"/> <!-- 输出信息 -->
</Exec>
<If condition="NOT(IS_SUCC(@O.MSG_CD))">
<Exec func="PUB:GWASetMsg">
<Arg name="MsgCd" value="@O.MSG_CD"/>
</Exec>
<Return/>
</If>
</ElseIf>
<Else>
<Exec func="PUB:GWASetMsg">
<!-- @msg 借贷标志有误 -->
<Arg name="MsgCd" value="ACM30005"/>
</Exec>
<Return/>
</Else>
<Break/>
</Case>
<Default> <!-- 内部账户 -->
<!--调账处理-->
<Set>INNER_ACC.AC_CD=SUBSTR($AC_NO,4,SUB(STRLEN($AC_NO),3))</Set>
<Set>INNER_ACC.AC_TYP=$AC_TYP</Set>
<Set>INNER_ACC.CAP_TYP=$CAP_TYP</Set>
<Set>INNER_ACC.AMT=$TX_AMT</Set>
<Set>INNER_ACC.TX_TYP=35</Set>
<Set>INNER_ACC.BUS_TYP=0900</Set>
<Set>INNER_ACC.ORD_TYP =12</Set>
<Set>INNER_ACC.ORD_NO =$JRN_NO</Set>
<Set>INNER_ACC.TX_DT=$GWA.TX_DT</Set>
<Set>INNER_ACC.TX_TM=$GWA.TX_TM</Set>
<Set>INNER_ACC.TX_CD=$GWA.TX_CD</Set>
<Set>INNER_ACC.RMK=$RMK</Set>
<Set>INNER_ACC.RVS_CLS=N</Set>
<If condition="IS_EQUAL_STRING($AC_TYP,999)"> <!-- 内部户 -->
<Set>INNER_ACC.AC_TYP=SUBSTR($AC_NO,1,3)</Set>
</If>
<If condition="IS_EQUAL_STRING($DC_FLG,D)"> <!--借记调账-->
<!--组件:内部账户支取-->
<Exec func="ACM:InnerAccountWithdraw">
<Arg name="_I_INP_DAT" value="INNER_ACC"/> <!-- 输入信息 -->
<Arg name="_O_OUT_DAT" value="INNER_AMT"/> <!-- 输出信息 -->
</Exec>
<If condition="NOT(IS_SUCC(@O.MSG_CD))">
<Exec func="PUB:GWASetMsg">
<Arg name="MsgCd" value="@O.MSG_CD"/>
</Exec>
<Return/>
</If>
</If>
<ElseIf condition="IS_EQUAL_STRING($DC_FLG,C)"> <!--贷记调账-->
<!--组件:内部账户存入-->
<Exec func="ACM:InnerAccountDeposit">
<Arg name="_I_INP_DAT" value="INNER_ACC"/> <!-- 输入信息 -->
<Arg name="_O_OUT_DAT" value="INNER_AMT"/> <!-- 输出信息 -->
</Exec>
<If condition="NOT(IS_SUCC(@O.MSG_CD))">
<Exec func="PUB:GWASetMsg">
<Arg name="MsgCd" value="@O.MSG_CD"/>
</Exec>
<Return/>
</If>
</ElseIf>
<Else>
<Exec func="PUB:GWASetMsg">
<!-- @msg 借贷标志有误 -->
<Arg name="MsgCd" value="ACM30005"/>
</Exec>
<Return/>
</Else>
<Break/>
</Default>
</Switch>
<!-- 会计日期置空 -->
<Set>AC_DT_QRY=</Set>
</While>
<!--确认该笔未确认流水-->
<Exec func="PUB:ExecSql">
<Arg name="SqlCmd" value="UPD_ACMTACLG_CMT"/>
</Exec>
<If condition="~RetCod=2">
<Exec func="PUB:GWASetMsg">
<!-- @msg {1}不存在 -->
<Arg name="MsgCd" value="ACM30002"/>
<Arg name="MsgDat" value="待确认的综合记账流水号"></Arg>
</Exec>
<Return/>
</If>
<Set>GWA.MSG_INF=确认成功</Set>
</If>
<ElseIf condition="IS_EQUAL_STRING($PARAM,$UPDO)"> <!--撤销-->
<!--撤销该流水号下的未确认流水-->
<Exec func="PUB:ExecSql">
<Arg name="SqlCmd" value="UPD_ACMTACLG_RVS"/>
</Exec>
<If condition="~RetCod=2">
<Exec func="PUB:GWASetMsg">
<!-- @msg {1}不存在 -->
<Arg name="MsgCd" value="ACM30002"/>
<Arg name="MsgDat" value="待确认的综合记账流水号"></Arg>
</Exec>
<Return/>
</If>
<Set>GWA.MSG_INF=撤销成功</Set>
</ElseIf>
<Else>
<Exec func="PUB:GWASetMsg">
<!-- @msg 确认/撤销标志非法 -->
<Arg name="MsgCd" value="ACM30006"/>
</Exec>
<Return/>
</Else>
<Exec func="PUB:GWASetMsg">
<!-- @msg 交易成功 -->
<Arg name="MsgCd" value="ACM00000"/>
</Exec>
</FlowCtrl>
</Transaction>
</Root>