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

189 lines
7.6 KiB
XML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?xml version='1.0' encoding='UTF-8'?>
<Application name="lps" trace="yes">
<!--消费撤销冲正(POS)-->
<Transaction code="2111019" log_switch="1">
<!--查询卡片主账号信息-->
<DynSentence name="QRY_LPSTCRD_MAINAC">
<Sentence>
SELECT MAIN_AC FROM LPSTCRD WHERE SUB_AC=?
</Sentence>
<Fields>SUB_AC|</Fields>
</DynSentence>
<!-- 检验是否存在成功的消费撤销交易 -->
<DynSentence name="CHK_LPSTRVS_INFO">
<Sentence>
SELECT JRN_NO,AC_DT
FROM LPSTRVS
WHERE SUB_AC=? AND OCSM_POS_TRM =? AND OCSM_POS_JRN=? AND RVS_FLG='C' AND OCSM_TRM_DT=? AND OCSM_TRM_TM=? AND MERC_ID=? AND BIL_STS='1'
FOR UPDATE
</Sentence>
<Fields>SUB_AC|OCSM_POS_TRM|OCSM_POS_JRN|OCSM_TRM_DT|OCSM_TRM_TM|OCSM_MERC|</Fields>
</DynSentence>
<!-- 更新消费撤销交易记录状态 -->
<DynSentence name="UPD_LPSTRVS_STS">
<Sentence>
UPDATE LPSTRVS
SET BIL_STS=? ,TM_SMP=?
WHERE SUB_AC=? AND OCSM_POS_TRM =? AND OCSM_POS_JRN=? AND OCSM_TRM_DT=? AND OCSM_TRM_TM=? AND MERC_ID=? AND RVS_FLG='C' AND BIL_STS='1'
</Sentence>
<Fields>BIL_STS|SYS_TM_SMP|SUB_AC|OCSM_POS_TRM|OCSM_POS_JRN|OCSM_TRM_DT|OCSM_TRM_TM|OCSM_MERC|</Fields>
</DynSentence>
<FlowCtrl>
<!--验证交易TAC-->
<If condition="NOT(ISNULL($TAC_BLOCK))">
<Set>TAC_CRD_OWN_FLG=SUBSTR($TAC_BLOCK,1,16)</Set>
<Set>TAC_MK_IDX=SUBSTR($TAC_BLOCK,17,2)</Set>
<Set>TAC_MK_VER=SUBSTR($TAC_BLOCK,19,2)</Set>
<Set>TAC=SUBSTR($TAC_BLOCK,21,8)</Set>
<Set>TAC_AMT=SUBSTR($TAC_BLOCK,29,8)</Set>
<Set>TAC_POS_TX_TYP=SUBSTR($TAC_BLOCK,37,2)</Set>
<Set>TAC_OCSM_TRM=SUBSTR($TAC_BLOCK,39,12)</Set>
<Set>TAC_OCSM_TRM_SEQ=SUBSTR($TAC_BLOCK,51,8)</Set>
<Set>TAC_OTX_DT=SUBSTR($TAC_BLOCK,59,8)</Set>
<Set>TAC_OTX_TM=SUBSTR($TAC_BLOCK,67,6)</Set>
<Set>TAC_CRD_BAL=SUBSTR($TAC_BLOCK,73,8)</Set>
<!-- 验证交易TAC -->
<Call package="LPS_PUB" function="CheckTransactionTAC">
<Input>SUB_AC|TAC_AMT|TAC_POS_TX_TYP|TAC_OCSM_TRM|TAC_OCSM_TRM_SEQ|TAC_OTX_DT|TAC_OTX_TM|TAC|</Input>
<Output>MSG_CD|</Output>
</Call>
<If condition="NOT(IS_SUCC(@O.MSG_CD))"> <!-- 生成交易TAC失败 -->
<Set>~MSG_DAT=生成交易TAC失败</Set>
<Exec func="PUB:GWASetMsg">
<Arg name="MsgCd" value="@O.MSG_CD"/>
</Exec>
<Return/>
</If>
</If>
<!--检查该笔撤销交易是否已存在-->
<Exec func="PUB:ReadRecord" error="IGNORE">
<Arg name="SqlCmd" value="CHK_LPSTRVS_INFO"/>
</Exec>
<If condition="~RetCod=2">
<Set>~MSG_DAT=成功的消费撤销请求不存在</Set>
<Exec func="PUB:GWASetMsg">
<Arg name="MsgCd" value="LPS00000"/>
</Exec>
<Return/>
</If>
<ElseIf condition="~RetCod!=0">
<Exec func="PUB:GWASetMsg">
<Arg name="MsgCd" value="LPS00001"/>
<Arg name="MsgDat" value="数据库操作失败"/>
</Exec>
<Return/>
</ElseIf>
<!-- 平台记录此笔交易撤销失败 -->
<!--If condition="IS_EQUAL_STRING($BIL_STS,2)">
<Set>~MSG_DAT=此笔交易撤销失败,无需撤销冲正</Set>
<Exec func="PUB:CommitWork"/>
<Exec func="PUB:GWASetMsg">
<Arg name="MsgCd" value="LPS00000"/>
</Exec>
<Return/>
</If-->
<!-- 平台记录此笔交易撤销交易已冲正 -->
<!--If condition="IS_EQUAL_STRING($BIL_STS,3)">
<Set>~MSG_DAT=此笔交易撤销交易已冲正,无需再次冲正</Set>
<Exec func="PUB:GWASetMsg">
<Arg name="MsgCd" value="LPS00000"/>
</Exec>
<Return/>
</If-->
<!-- 调用用户-检查商户状态 -->
<Set>INP_DAT.MERC_ID=$OCSM_MERC</Set>
<Set>INP_DAT.MERC_TX_TYP=07</Set>
<Set>INP_DAT.TX_CD=2111019</Set>
<Set>INP_DAT.MERC_CAP_TYP=1</Set>
<Set>INP_DAT.DC_PTY_FLG=C</Set>
<Call package="URM_PUB" function="CHK_MER_STS">
<Input>INP_DAT|GWA|</Input>
<Output>OUT_DAT|MSG_CD|</Output>
</Call>
<If condition="NOT(IS_SUCC(@O.MSG_CD))"> <!-- 商户状态不合法 -->
<Exec func="PUB:GWASetMsg">
<Arg name="MsgCd" value="@O.MSG_CD"/>
</Exec>
<Return/>
</If>
<!--查询卡片信息-->
<Exec func="PUB:ReadRecord" error="IGNORE">
<Arg name="SqlCmd" value="QRY_LPSTCRD_MAINAC"/>
</Exec>
<If condition="~RetCod!=0">
<Exec func="PUB:GWASetMsg">
<Arg name="MsgCd" value="LPS19999"/>
<Arg name="MsgDat" value="系统错误"/>
</Exec>
<Return/>
</If>
<!-- 消费撤销冲正-账务处理 开始 -->
<!-- 调用账户-子账户支出冲正 -->
<Set>S_PAW.OLD_APP_SEQ_NO=$SUB_AC</Set>
<Set>S_PAW.OLD_JRN_NO=$JRN_NO</Set>
<Set>S_PAW.OLD_AC_DT=$AC_DT</Set>
<Set>S_PAW.OLD_CAP_TYP=1</Set>
<Set>S_PAW.OLD_AMT=AMTSIMPLEFMT($OTX_AMT)</Set>
<Exec func="ACM:PurseAccountWithdrawCancel">
<Arg name="_I_GWA" value="GWA"/>
<Arg name="_I_INP_DAT" value="S_PAW"/>
<Arg name="_O_OUT_DAT" value="S_PAW_OUT"/>
</Exec>
<If condition="NOT(IS_SUCC(@O.MSG_CD))"> <!--子账户支出冲正失败 -->
<Set>~MSG_DAT=子账户支取冲正失败</Set>
<Exec func="PUB:GWASetMsg">
<Arg name="MsgCd" value="@O.MSG_CD"/>
</Exec>
<Return/>
</If>
<!-- 调用账户-主账户存入冲正 -->
<Set>M_MAD.OLD_AC_NO=$MAIN_AC</Set>
<Set>M_MAD.OLD_JRN_NO=$JRN_NO</Set>
<Set>M_MAD.OLD_CAP_TYP=1</Set>
<Set>M_MAD.OLD_AMT=AMTSIMPLEFMT($OTX_AMT)</Set>
<Set>M_MAD.OLD_AC_DT=$AC_DT</Set>
<Exec func="ACM:MainAccountDepositCancel">
<Arg name="_I_GWA" value="GWA"/>
<Arg name="_I_INP_DAT" value="M_MAD"/>
<Arg name="_O_OUT_DAT" value="M_MAD_OUT"/>
</Exec>
<If condition="NOT(IS_SUCC(@O.MSG_CD))"> <!--主账户存入冲正失败 -->
<Set>~MSG_DAT=主账户存入冲正失败</Set>
<Exec func="PUB:GWASetMsg">
<Arg name="MsgCd" value="@O.MSG_CD"/>
</Exec>
<Return/>
</If>
<!-- 消费撤销冲正-账务处理结束 -->
<!-- 更新撤销记录为已冲正 -->
<Set>BIL_STS=3</Set>
<Exec func="PUB:ExecSql" error="IGNORE">
<Arg name="SqlCmd" value="UPD_LPSTRVS_STS"/>
</Exec>
<If condition="~RetCod!=0">
<Exec func="PUB:GWASetMsg">
<Arg name="MsgCd" value="LPS20078"/>
<Arg name="MsgDat" value="更新消费撤销状态失败"/>
</Exec>
<Return/>
</If>
<Exec func="PUB:GWASetMsg">
<Arg name="MsgCd" value="LPS00000"/>
</Exec>
</FlowCtrl>
</Transaction>
</Application>