163 lines
6.1 KiB
XML
163 lines
6.1 KiB
XML
<?xml version='1.0' encoding='UTF-8'?>
|
|
<Tran>
|
|
<Transaction code="204031" log_switch="1" desc="代收代付交易商户清算汇总">
|
|
|
|
<Quote name="MERC_DYN_SQLSENTENCE"/>
|
|
|
|
<FlowCtrl>
|
|
<Set>AC_DT=$GWA.AC_DT</Set>
|
|
|
|
<!--判断清算日是否存在-->
|
|
<Exec func="PUB:IsExistNode" error="IGNORE">
|
|
<Arg name="FieldName" value="STL_DT"/>
|
|
</Exec>
|
|
<!--存在-->
|
|
<If condition="~RetCod=1">
|
|
<Set>STL_DT=$STL_DT</Set>
|
|
</If>
|
|
<Else>
|
|
<Set>STL_DT=$AC_DT</Set>
|
|
</Else>
|
|
|
|
<!--判断该系统今天是否做过清算-->
|
|
<Exec func="PUB:ReadRecord" error="IGNORE">
|
|
<Arg name="SqlCmd" value="QRY_MERCSTS_CAPDAYCTL"/>
|
|
</Exec>
|
|
<If condition="~RetCod=2">
|
|
<Set>Rsp_Cd=222222</Set>
|
|
<Set>Rsp_Msg=代收代付总清算控制表无记录</Set>
|
|
<Exec func="PUB:GWAAddMsg">
|
|
<Arg name="MsgCd" value="STL00000" />
|
|
</Exec>
|
|
<Return/>
|
|
</If>
|
|
<ElseIf condition="~RetCod!=0">
|
|
<Set>Rsp_Cd=999999</Set>
|
|
<Set>Rsp_Msg=查询数据库系统错误</Set>
|
|
<Return/>
|
|
</ElseIf>
|
|
<Else>
|
|
<!--CLR_STS: 交易清算处理结果状态(0-预计 1-交易清算处理中,2-交易清算失败,3-交易清算成功)-->
|
|
<If condition="IS_EQUAL_STRING($CLR_STS,3)">
|
|
<Set>Rsp_Cd=222222</Set>
|
|
<Set>Rsp_Msg=交易清算已经成功了,不允许做该交易</Set>
|
|
<Exec func="PUB:GWAAddMsg">
|
|
<Arg name="MsgCd" value="STL00000" />
|
|
</Exec>
|
|
<Return/>
|
|
</If>
|
|
</Else>
|
|
|
|
<!--更新系统清算控制表商户的状态为处理中-->
|
|
<Set>MERC_CLR_STS=1</Set>
|
|
<Set>MERC_STR_TM=GETDATETIME(HHMISS)</Set>
|
|
<Quote name="UpdMercCapDayCtl"/>
|
|
|
|
<!--查询商户信息-->
|
|
<Exec func="PUB:OpenCursor" error="IGNORE">
|
|
<Arg name="SqlCmd" value="QRY_URMTMINF"/>
|
|
</Exec>
|
|
<If condition="~RetCod!=0">
|
|
<Set>Rsp_Cd=999999</Set>
|
|
<Set>Rsp_Msg=查询商户信息错误</Set>
|
|
<!--更新系统清算控制表-->
|
|
<Set>MERC_CLR_STS=2</Set>
|
|
<Quote name="UpdMercCapDayCtl"/>
|
|
<Return/>
|
|
</If>
|
|
<While>
|
|
<Exec func="PUB:FetchCursor" error="IGNORE"/>
|
|
<If condition="~RetCod=2">
|
|
<If condition="AND(IS_NOEQUAL_STRING($Rsp_Cd,222222),IS_NOEQUAL_STRING($Rsp_Cd,000000))">
|
|
<!--更新系统清算控制表-->
|
|
<Set>MERC_CLR_STS=2</Set>
|
|
<Quote name="UpdMercCapDayCtl"/>
|
|
<Return/>
|
|
</If>
|
|
<Else>
|
|
<Break/>
|
|
</Else>
|
|
</If>
|
|
<ElseIf condition="~RetCod<0">
|
|
<Set>Rsp_Cd=999999</Set>
|
|
<Set>Rsp_Msg="查询数据库错误"</Set>
|
|
<!--更新系统清算控制表-->
|
|
<Set>MERC_CLR_STS=2</Set>
|
|
<Quote name="UpdMercCapDayCtl"/>
|
|
<Exec func="PUB:CloseCursor"/>
|
|
<Return/>
|
|
</ElseIf>
|
|
|
|
<!--判断该商户结算方式-->
|
|
<!--STL_MOD 0净额结算 1收支两条线-->
|
|
<!--0:净额结算-->
|
|
<If condition="INTCMP($STL_MOD,3,0)">
|
|
<Set>Rsp_Msg=STRCAT($MERC_ID,商户是净额结算类型商户)</Set>
|
|
<!--判断该商户是否到结算日-->
|
|
<!--商户没有到达结算日-->
|
|
<If condition="INTCMP($STL_DT,1,$NEXT_STL_DT)">
|
|
<Set>Rsp_Cd=222222</Set>
|
|
<Set>Rsp_Msg=STRCAT($MERC_ID,该商户没有到达清算日)</Set>
|
|
<!--删除关键域避免重复-->
|
|
<Quote name="DeleMercFields"/>
|
|
<Continue/>
|
|
</If>
|
|
<Else>
|
|
<Set>Rsp_Msg=STRCAT($MERC_ID,该商户已经到达了清算日)</Set>
|
|
|
|
<!--计算商户交易金额及手续费-->
|
|
<Quote name="CalcMercAmtFee"/>
|
|
|
|
<!--删除关键域避免重复-->
|
|
<Quote name="DeleMercFields"/>
|
|
|
|
</Else>
|
|
|
|
</If>
|
|
<!--1 收支两条线结算-->
|
|
<ElseIf condition="INTCMP($STL_MOD,3,1)">
|
|
|
|
<Set>Rsp_Msg=STRCAT($MERC_ID,商户是收支两条线类型商户)</Set>
|
|
<!--判断该商户是否到结算日-->
|
|
<!--商户并没有到达结算日-->
|
|
<If condition="INTCMP($STL_DT,1,$NEXT_STL_DT)">
|
|
<Set>Rsp_Msg=STRCAT($MERC_ID,该商户没有到达清算日,需要判断手续费是否到了收费日期)</Set>
|
|
<!--代收代付手续费到期日判断-->
|
|
<Quote name="IsStlMod1MercFeeStlDate"/>
|
|
|
|
<!--删除关键域避免重复-->
|
|
<Quote name="DeleMercFields"/>
|
|
|
|
</If>
|
|
<!--商户到达结算日-->
|
|
<Else>
|
|
<!--收支两条线商户本金的计算-->
|
|
<Quote name="CalcMercAmtFee_BEN"/>
|
|
|
|
<!--代收代付手续费到期日判断-->
|
|
<Quote name="IsStlMod1MercFeeStlDate"/>
|
|
|
|
<!--删除关键域避免重复-->
|
|
<Quote name="DeleMercFields"/>
|
|
|
|
</Else>
|
|
|
|
</ElseIf>
|
|
|
|
</While>
|
|
<Exec func="PUB:CloseCursor" error="IGNORE"/>
|
|
<Exec func="PUB:CommitWork"/> <!--提交事物-->
|
|
|
|
<!--更新系统清算控制表-->
|
|
<Set>MERC_CLR_STS=3</Set>
|
|
<Quote name="UpdMercCapDayCtl"/>
|
|
|
|
<Set>Rsp_Cd=000000</Set>
|
|
<Set>Rsp_Msg=代收代付交易商户清算汇总清算成功</Set>
|
|
<Exec func="PUB:GWAAddMsg">
|
|
<Arg name="MsgCd" value="STL00000" />
|
|
</Exec>
|
|
</FlowCtrl>
|
|
</Transaction>
|
|
</Tran>
|