Files
2021-01-12 23:30:48 +08:00

185 lines
7.1 KiB
XML

<?xml version='1.0' encoding='UTF-8'?>
<Tran>
<Transaction code="204032" log_switch="1" desc="代收代付交易机构清算汇总">
<Attributes>
<Attribute name="nodatabase" value="2"/> <!--数据库长连接-->
</Attributes>
<Quote name="CORG_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_ORGSTS_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>ORG_CLR_STS=1</Set>
<Set>ORG_STR_TM=GETDATETIME(HHMISS)</Set>
<Quote name="UpdCorgCapDayCtl"/>
<!--查询机构信息-->
<Exec func="PUB:OpenCursor" error="IGNORE">
<Arg name="SqlCmd" value="QRY_CMMTORGN"/>
</Exec>
<If condition="~RetCod!=0">
<Set>Rsp_Cd=999999</Set>
<Set>Rsp_Msg=查询机构信息错误</Set>
<Set>ORG_CLR_STS=2</Set>
<Quote name="UpdCorgCapDayCtl"/>
<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>ORG_CLR_STS=2</Set>
<Quote name="UpdCorgCapDayCtl"/>
<Return/>
</If>
<Else>
<Break/>
</Else>
</If>
<ElseIf condition="~RetCod&lt;0">
<Set>Rsp_Cd=999999</Set>
<Set>Rsp_Msg="查询数据库错误"</Set>
<Set>ORG_CLR_STS=2</Set>
<Quote name="UpdCorgCapDayCtl"/>
<Exec func="PUB:CloseCursor"/>
<Return/>
</ElseIf>
<If condition="IS_EQUAL_STRING($CORG_NO,SZFS)"> <!-- 判断机构是否是结算中心 -->
<Exec func="PUB:CallThirdComm" error="IGNORE">
<Arg name="HTxnCd" value="204034"/>
<Arg name="ObjSvr" value="OFRTSTL1"/>
</Exec>
<If condition="~RetCod!=0">
<!-- @msg 农业银行卡通交易请求失败 -->
<Exec func="PUB:CmpSetMsg">
<Arg name="MsgCd" value="PWM23064" />
</Exec>
</If>
<Continue />
</If>
<!--判断该机构结算方式-->
<!--STL_MOD 0:净额结算 1收支两条线-->
<!--0:净额结算-->
<If condition="INTCMP($STL_MOD,3,0)">
<Set>Rsp_Msg=STRCAT($CORG_NO,机构是净额结算类型机构)</Set>
<!--判断该机构是否到结算日-->
<!--机构并没有到达结算日-->
<If condition="INTCMP($STL_DT,1,$NEXT_STL_DT)">
<Set>Rsp_Cd=222222</Set>
<Set>Rsp_Msg=STRCAT($CORG_NO,该机构还没有到达清算日)</Set>
<!--删除关键域避免重复-->
<Quote name="DeleCorgFields"/>
<Continue/>
</If>
<Else>
<Set>Rsp_Msg=STRCAT($CORG_NO,该机构已经到达了清算日)</Set>
<!--计算机构交易金额及手续费-->
<Quote name="CalcCorgAmtFee"/>
<!--删除关键域避免重复-->
<Quote name="DeleCorgFields"/>
</Else>
</If>
<!--1 收支两条线结算-->
<ElseIf condition="INTCMP($STL_MOD,3,1)">
<Set>Rsp_Msg=STRCAT($CORG_NO,机构是收支两条线类型机构)</Set>
<!--判断该机构是否到结算日-->
<!--机构并没有到达结算日-->
<If condition="INTCMP($STL_DT,1,$NEXT_STL_DT)">
<Set>Rsp_Msg=STRCAT($CORG_NO,该机构还没有到达清算日)</Set>
<!--代收代付手续费到期日判断-->
<Quote name="IsStlMod1CorgFeeStlDate"/>
<!--删除关键域避免重复-->
<Quote name="DeleCorgFields"/>
</If>
<!--机构到达结算日-->
<Else>
<!--合作机构计算手续费及金额-->
<Quote name="CalcCorgAmtFee_BEN"/>
<!--代收代付手续费到期日判断-->
<Quote name="IsStlMod1CorgFeeStlDate"/>
<!--删除关键域避免重复-->
<Quote name="DeleCorgFields"/>
</Else>
</ElseIf>
</While>
<Exec func="PUB:CloseCursor" error="IGNORE"/>
<Exec func="PUB:CommitWork"/> <!--提交事物-->
<!--更新系统清算控制表-->
<Set>ORG_CLR_STS=3</Set>
<Set>ORG_END_TM=GETDATETIME(HHMISS)</Set>
<!--更新系统清分控制表-->
<Exec func="PUB:ExecSql" error="IGNORE">
<Arg name="SqlCmd" value="UPD_ORGSTS_CAPDAYCTL"/>
</Exec>
<If condition="~RetCod != 0">
<Set>Rsp_Cd=999999</Set>
<Set>Rsp_Msg=更新系统清分控制表失败</Set>
<Return/>
</If>
<Set>Rsp_Cd=000000</Set>
<Set>Rsp_Msg=交易成功</Set>
<Exec func="PUB:GWAAddMsg">
<Arg name="MsgCd" value="STL00000" />
</Exec>
</FlowCtrl>
</Transaction>
</Tran>