Files
2021-02-02 13:54:05 +08:00

1483 lines
65 KiB
XML

<?xml version='1.0' encoding='UTF-8'?>
<FrontTab>
<!--删除关键域避免重复-->
<Macro name="DeleCorgFields">
<Delete>CORG_NO</Delete>
<Delete>CORG_TYP</Delete>
<Delete>CORG_NM</Delete>
</Macro>
<!--计算机构交易金额及手续费-->
<Macro name="CalcCorgAmtFee">
<!--代付机构计算交易金额、手续费及交易净额-->
<Quote name="CalcPayCorgAmtFee"/>
<!--判断该合作机构的交易总金额是否为0-->
<If condition="DOUBLECMP($TO_CORG_AMT,4,0)">
<!--计算机构的代付的交易金额、手续费及交易净额-->
<Quote name="InsertCapStlAgt"/>
<!--判断手续费是否空-->
<If condition="IS_EQUAL_STRING($FEE_PERD_UNIT,NULL)">
<Delete>FEE_PERD_UNIT</Delete>
<Delete>FEE_PERD_NUM</Delete>
</If>
<!--计算机构的代收的交易金额及手续费-->
<Quote name="InsertCapAgtFee"/>
</If>
<!--删除关键域-->
<Delete>TO_CORG_AMT</Delete>
<Delete>TO_CORG_SUCC_CNT</Delete>
<Delete>TO_CORG_FEE_AMT</Delete>
<Delete>TO_CORG_STL_AMT</Delete>
<!--更新机构的下一个结算日期-->
<Quote name="UpdCorgNextStlDate"/>
</Macro>
<!--计算结算中心交易金额及手续费-->
<Macro name="CalcCorgSZFSAmtFee">
<!--代收结算中心计算交易金额、手续费及交易净额-->
<Quote name="CalcRecCorgSZFSAmtFee"/>
<!--判断该合作机构的交易总金额是否为0-->
<If condition="DOUBLECMP($TO_CORG_AMT,4,0)">
<!--计算机构的代收的交易金额、手续费及交易净额-->
<Quote name="InsertCapStlAgt"/>
<!--判断手续费是否空-->
<If condition="IS_EQUAL_STRING($FEE_PERD_UNIT,NULL)">
<Delete>FEE_PERD_UNIT</Delete>
<Delete>FEE_PERD_NUM</Delete>
</If>
<!--计算机构的代收的交易金额及手续费-->
<Quote name="InsertCapAgtFee"/>
</If>
<!--删除关键域-->
<Delete>TO_CORG_AMT</Delete>
<Delete>TO_CORG_SUCC_CNT</Delete>
<Delete>TO_CORG_FEE_AMT</Delete>
<Delete>TO_CORG_STL_AMT</Delete>
<!--代付机构计算交易金额、手续费及交易净额-->
<Quote name="CalcPayCorgSZFSAmtFee"/>
<!--判断该合作机构的交易总金额是否为0-->
<If condition="DOUBLECMP($TO_CORG_AMT,4,0)">
<!--计算机构的代付的交易金额、手续费及交易净额-->
<Quote name="InsertCapStlAgt"/>
<!--判断手续费是否空-->
<If condition="IS_EQUAL_STRING($FEE_PERD_UNIT,NULL)">
<Delete>FEE_PERD_UNIT</Delete>
<Delete>FEE_PERD_NUM</Delete>
</If>
<!--计算机构的代收的交易金额及手续费-->
<Quote name="InsertCapAgtFee"/>
</If>
<!--删除关键域-->
<Delete>TO_CORG_AMT</Delete>
<Delete>TO_CORG_SUCC_CNT</Delete>
<Delete>TO_CORG_FEE_AMT</Delete>
<Delete>TO_CORG_STL_AMT</Delete>
<!--更新机构的下一个结算日期-->
<Quote name="UpdCorgNextStlDate"/>
</Macro>
<!--净额代收机构计算交易金额、手续费及交易净额-->
<Macro name="CalcRecCorgAmtFee">
<!-- 支付类型 11:代收 -->
<Set>PAY_TYP=11</Set>
<!-- 订单类型 11:代收 -->
<Set>ORD_TYP=11</Set>
<!-- 计算代收的净额机构手续费 -->
<Call package="CORG" function="CAL_STLMOD_0_CORG_AMT_FEE_FUNC">
<Input>GWA|ORD_TYP|PAY_TYP|STL_DT|STL_MOD|STL_PERD|STL_DAY|STL_DAY_BIT|STL_TRF_DAYS|NEXT_STL_DT|CORG_NO|CORG_TYP|CORG_NM|</Input>
<Output>MSG_CD|STL_STT_DT|STL_END_DT|CORG_SUCC_CNT|CORG_AMT|CORG_FEE_AMT|CORG_STL_AMT|CORG_FEE_CAL_MTH|CORG_FEE_MOD|</Output>
</Call>
<!--记录不存在-->
<If condition="IS_EQUAL_STRING(SUBSTR(@O.MSG_CD,4,5),22222)">
<!--清算开始日期-->
<Set>STL_STT_DT=@O.STL_STT_DT</Set>
<!--清算结束日期-->
<Set>STL_END_DT=@O.STL_END_DT</Set>
<!--代收机构成功笔数-->
<Set>TO_CORG_SUCC_CNT=@O.CORG_SUCC_CNT</Set>
<!--代收机构交易金额-->
<Set>TO_CORG_AMT=@O.CORG_AMT</Set>
<!--代收机构手续费金额-->
<Set>TO_CORG_FEE_AMT=@O.CORG_FEE_AMT</Set>
<!--代收机构净额-->
<Set>TO_CORG_STL_AMT=@O.CORG_STL_AMT</Set>
<!--收费方式-->
<Set>CORG_FEE_MOD=@O.CORG_FEE_MOD</Set>
<!--计费方法-->
<Set>CORG_FEE_CAL_MTH=@O.CORG_FEE_CAL_MTH</Set>
<Set>Rsp_Cd=222222</Set>
<Set>Rsp_Msg=STRCAT($CORG_NO,代收机构清算明细表无数据,无需计算手续费)</Set>
</If>
<ElseIf condition="AND(IS_NOEQUAL_STRING(SUBSTR(@O.MSG_CD,4,5),00000),IS_NOEQUAL_STRING(SUBSTR(@O.MSG_CD,4,5),11111))">
<Set>Rsp_Cd=999999</Set>
<Set>Rsp_Msg=STRCAT($CORG_NO,机构对应的,$PAY_TYP,代收机构计算手续费失败)</Set>
<Continue/>
</ElseIf>
<ElseIf condition="IS_EQUAL_STRING(SUBSTR(@O.MSG_CD,4,5),11111)">
<!--清算开始日期-->
<Set>STL_STT_DT=@O.STL_STT_DT</Set>
<!--清算结束日期-->
<Set>STL_END_DT=@O.STL_END_DT</Set>
<!--代收机构成功笔数-->
<Set>TO_CORG_SUCC_CNT=@O.CORG_SUCC_CNT</Set>
<!--代收机构交易金额-->
<Set>TO_CORG_AMT=@O.CORG_AMT</Set>
<!--代收机构手续费金额-->
<Set>TO_CORG_FEE_AMT=@O.CORG_FEE_AMT</Set>
<!--代收机构净额-->
<Set>TO_CORG_STL_AMT=@O.CORG_STL_AMT</Set>
<!--收费方式-->
<Set>CORG_FEE_MOD=@O.CORG_FEE_MOD</Set>
<!--计费方法-->
<Set>CORG_FEE_CAL_MTH=@O.CORG_FEE_CAL_MTH</Set>
<Set>Rsp_Cd=111111</Set>
<Set>Rsp_Msg=STRCAT($CORG_NO,机构对应的,$PAY_TYP,代收机构在机构服务费费率表没有记录,无需计算手续费)</Set>
</ElseIf>
<Else>
<!--清算开始日期-->
<Set>STL_STT_DT=@O.STL_STT_DT</Set>
<!--清算结束日期-->
<Set>STL_END_DT=@O.STL_END_DT</Set>
<!--代收机构成功笔数-->
<Set>TO_CORG_SUCC_CNT=@O.CORG_SUCC_CNT</Set>
<!--代收机构交易金额-->
<Set>TO_CORG_AMT=@O.CORG_AMT</Set>
<!--代收机构手续费金额-->
<Set>TO_CORG_FEE_AMT=@O.CORG_FEE_AMT</Set>
<!--代收机构净额-->
<Set>TO_CORG_STL_AMT=@O.CORG_STL_AMT</Set>
<!--收费方式-->
<Set>CORG_FEE_MOD=@O.CORG_FEE_MOD</Set>
<!--计费方法-->
<Set>CORG_FEE_CAL_MTH=@O.CORG_FEE_CAL_MTH</Set>
<Set>Rsp_Cd=000000</Set>
<Set>Rsp_Msg=STRCAT($CORG_NO,机构对应的,$PAY_TYP,代收机构计算手续费成功)</Set>
</Else>
</Macro>
<!--净额代收结算中心计算交易金额、手续费及交易净额-->
<Macro name="CalcRecCorgSZFSAmtFee">
<!-- 支付类型 11:代收 -->
<Set>PAY_TYP=11</Set>
<!-- 订单类型 11:代收 -->
<Set>ORD_TYP=11</Set>
<!-- 计算代收的净额机构手续费 -->
<Call package="CORG" function="CAL_STLMOD_0_CORG_SZFS_AMT_FEE_FUNC">
<Input>GWA|ORD_TYP|PAY_TYP|STL_DT|STL_MOD|STL_PERD|STL_DAY|STL_DAY_BIT|STL_TRF_DAYS|NEXT_STL_DT|CORG_NO|CORG_TYP|CORG_NM|STL_TXN_TYP|STL_ACC_TYP|STL_FEE_TYP|</Input>
<Output>MSG_CD|STL_STT_DT|STL_END_DT|CORG_SUCC_CNT|CORG_AMT|CORG_FEE_AMT|CORG_STL_AMT|CORG_FEE_CAL_MTH|CORG_FEE_MOD|</Output>
</Call>
<!--记录不存在-->
<If condition="IS_EQUAL_STRING(SUBSTR(@O.MSG_CD,4,5),22222)">
<!--清算开始日期-->
<Set>STL_STT_DT=@O.STL_STT_DT</Set>
<!--清算结束日期-->
<Set>STL_END_DT=@O.STL_END_DT</Set>
<!--代收机构成功笔数-->
<Set>TO_CORG_SUCC_CNT=@O.CORG_SUCC_CNT</Set>
<!--代收机构交易金额-->
<Set>TO_CORG_AMT=@O.CORG_AMT</Set>
<!--代收机构手续费金额-->
<Set>TO_CORG_FEE_AMT=@O.CORG_FEE_AMT</Set>
<!--代收机构净额-->
<Set>TO_CORG_STL_AMT=@O.CORG_STL_AMT</Set>
<!--收费方式-->
<Set>CORG_FEE_MOD=@O.CORG_FEE_MOD</Set>
<!--计费方法-->
<Set>CORG_FEE_CAL_MTH=@O.CORG_FEE_CAL_MTH</Set>
<Set>Rsp_Cd=222222</Set>
<Set>Rsp_Msg=STRCAT($CORG_NO,代收机构清算明细表无数据,无需计算手续费)</Set>
</If>
<ElseIf condition="AND(IS_NOEQUAL_STRING(SUBSTR(@O.MSG_CD,4,5),00000),IS_NOEQUAL_STRING(SUBSTR(@O.MSG_CD,4,5),11111))">
<Set>Rsp_Cd=999999</Set>
<Set>Rsp_Msg=STRCAT($CORG_NO,机构对应的,$PAY_TYP,代收机构计算手续费失败)</Set>
<Continue/>
</ElseIf>
<ElseIf condition="IS_EQUAL_STRING(SUBSTR(@O.MSG_CD,4,5),11111)">
<!--清算开始日期-->
<Set>STL_STT_DT=@O.STL_STT_DT</Set>
<!--清算结束日期-->
<Set>STL_END_DT=@O.STL_END_DT</Set>
<!--代收机构成功笔数-->
<Set>TO_CORG_SUCC_CNT=@O.CORG_SUCC_CNT</Set>
<!--代收机构交易金额-->
<Set>TO_CORG_AMT=@O.CORG_AMT</Set>
<!--代收机构手续费金额-->
<Set>TO_CORG_FEE_AMT=@O.CORG_FEE_AMT</Set>
<!--代收机构净额-->
<Set>TO_CORG_STL_AMT=@O.CORG_STL_AMT</Set>
<!--收费方式-->
<Set>CORG_FEE_MOD=@O.CORG_FEE_MOD</Set>
<!--计费方法-->
<Set>CORG_FEE_CAL_MTH=@O.CORG_FEE_CAL_MTH</Set>
<Set>Rsp_Cd=111111</Set>
<Set>Rsp_Msg=STRCAT($CORG_NO,机构对应的,$PAY_TYP,代收机构在机构服务费费率表没有记录,无需计算手续费)</Set>
</ElseIf>
<Else>
<!--清算开始日期-->
<Set>STL_STT_DT=@O.STL_STT_DT</Set>
<!--清算结束日期-->
<Set>STL_END_DT=@O.STL_END_DT</Set>
<!--代收机构成功笔数-->
<Set>TO_CORG_SUCC_CNT=@O.CORG_SUCC_CNT</Set>
<!--代收机构交易金额-->
<Set>TO_CORG_AMT=@O.CORG_AMT</Set>
<!--代收机构手续费金额-->
<Set>TO_CORG_FEE_AMT=@O.CORG_FEE_AMT</Set>
<!--代收机构净额-->
<Set>TO_CORG_STL_AMT=@O.CORG_STL_AMT</Set>
<!--收费方式-->
<Set>CORG_FEE_MOD=@O.CORG_FEE_MOD</Set>
<!--计费方法-->
<Set>CORG_FEE_CAL_MTH=@O.CORG_FEE_CAL_MTH</Set>
<Set>Rsp_Cd=000000</Set>
<Set>Rsp_Msg=STRCAT($CORG_NO,机构对应的,$PAY_TYP,代收机构计算手续费成功)</Set>
</Else>
</Macro>
<!--净额代付机构计算交易金额、手续费及交易净额-->
<Macro name="CalcPayCorgAmtFee">
<!-- 支付类型 12:代付 -->
<Set>PAY_TYP=12</Set>
<!-- 订单类型 12:代付 -->
<Set>ORD_TYP=12</Set>
<!-- 计算代付的机构手续费 -->
<Call package="CORG" function="CAL_STLMOD_0_CORG_AMT_FEE_FUNC">
<Input>GWA|ORD_TYP|PAY_TYP|STL_DT|STL_MOD|STL_PERD|STL_DAY|STL_DAY_BIT|STL_TRF_DAYS|NEXT_STL_DT|CORG_NO|CORG_TYP|CORG_NM|</Input>
<Output>MSG_CD|STL_STT_DT|STL_END_DT|CORG_SUCC_CNT|CORG_AMT|CORG_FEE_AMT|CORG_STL_AMT|CORG_FEE_CAL_MTH|CORG_FEE_MOD|</Output>
</Call>
<!--记录不存在-->
<If condition="IS_EQUAL_STRING(SUBSTR(@O.MSG_CD,4,5),22222)">
<!--清算开始日期-->
<Set>STL_STT_DT=@O.STL_STT_DT</Set>
<!--清算结束日期-->
<Set>STL_END_DT=@O.STL_END_DT</Set>
<!--代收机构成功笔数-->
<Set>TO_CORG_SUCC_CNT=@O.CORG_SUCC_CNT</Set>
<!--代收机构交易金额-->
<Set>TO_CORG_AMT=@O.CORG_AMT</Set>
<!--代收机构手续费金额-->
<Set>TO_CORG_FEE_AMT=@O.CORG_FEE_AMT</Set>
<!--代收机构净额-->
<Set>TO_CORG_STL_AMT=@O.CORG_STL_AMT</Set>
<!--收费方式-->
<Set>CORG_FEE_MOD=@O.CORG_FEE_MOD</Set>
<!--计费方法-->
<Set>CORG_FEE_CAL_MTH=@O.CORG_FEE_CAL_MTH</Set>
<Set>Rsp_Cd=222222</Set>
<Set>Rsp_Msg=STRCAT($CORG_NO,代付机构清算明细表无数据,无需计算手续费)</Set>
</If>
<ElseIf condition="AND(IS_NOEQUAL_STRING(SUBSTR(@O.MSG_CD,4,5),00000),IS_NOEQUAL_STRING(SUBSTR(@O.MSG_CD,4,5),11111))">
<Set>Rsp_Cd=999999</Set>
<Set>Rsp_Msg=STRCAT($CORG_NO,机构对应的,$PAY_TYP,代付机构计算手续费失败)</Set>
<Continue/>
</ElseIf>
<ElseIf condition="IS_EQUAL_STRING(SUBSTR(@O.MSG_CD,4,5),11111)">
<!--清算开始日期-->
<Set>STL_STT_DT=@O.STL_STT_DT</Set>
<!--清算结束日期-->
<Set>STL_END_DT=@O.STL_END_DT</Set>
<!--代收机构成功笔数-->
<Set>TO_CORG_SUCC_CNT=@O.CORG_SUCC_CNT</Set>
<!--代收机构交易金额-->
<Set>TO_CORG_AMT=@O.CORG_AMT</Set>
<!--代收机构手续费金额-->
<Set>TO_CORG_FEE_AMT=@O.CORG_FEE_AMT</Set>
<!--代收机构净额-->
<Set>TO_CORG_STL_AMT=@O.CORG_STL_AMT</Set>
<!--收费方式-->
<Set>CORG_FEE_MOD=@O.CORG_FEE_MOD</Set>
<!--计费方法-->
<Set>CORG_FEE_CAL_MTH=@O.CORG_FEE_CAL_MTH</Set>
<Set>Rsp_Cd=111111</Set>
<Set>Rsp_Msg=STRCAT($CORG_NO,机构对应的,$PAY_TYP,代付机构在机构服务费费率表没有记录,无需计算手续费)</Set>
</ElseIf>
<Else>
<!--清算开始日期-->
<Set>STL_STT_DT=@O.STL_STT_DT</Set>
<!--清算结束日期-->
<Set>STL_END_DT=@O.STL_END_DT</Set>
<!--代收机构成功笔数-->
<Set>TO_CORG_SUCC_CNT=@O.CORG_SUCC_CNT</Set>
<!--代收机构交易金额-->
<Set>TO_CORG_AMT=@O.CORG_AMT</Set>
<!--代收机构手续费金额-->
<Set>TO_CORG_FEE_AMT=@O.CORG_FEE_AMT</Set>
<!--代收机构净额-->
<Set>TO_CORG_STL_AMT=@O.CORG_STL_AMT</Set>
<!--收费方式-->
<Set>CORG_FEE_MOD=@O.CORG_FEE_MOD</Set>
<!--计费方法-->
<Set>CORG_FEE_CAL_MTH=@O.CORG_FEE_CAL_MTH</Set>
<Set>Rsp_Cd=000000</Set>
<Set>Rsp_Msg=STRCAT($CORG_NO,机构对应的,$PAY_TYP,代付机构计算手续费成功)</Set>
</Else>
</Macro>
<!--净额代付机构计算交易金额、手续费及交易净额-->
<Macro name="CalcPayCorgSZFSAmtFee">
<!-- 支付类型 12:代付 -->
<Set>PAY_TYP=12</Set>
<!-- 订单类型 12:代付 -->
<Set>ORD_TYP=12</Set>
<!-- 计算代付的结算中心手续费 -->
<Call package="CORG" function="CAL_STLMOD_0_CORG_SZFS_AMT_FEE_FUNC">
<Input>GWA|ORD_TYP|PAY_TYP|STL_DT|STL_MOD|STL_PERD|STL_DAY|STL_DAY_BIT|STL_TRF_DAYS|NEXT_STL_DT|CORG_NO|CORG_TYP|CORG_NM|STL_TXN_TYP|STL_ACC_TYP|STL_FEE_TYP|</Input>
<Output>MSG_CD|STL_STT_DT|STL_END_DT|CORG_SUCC_CNT|CORG_AMT|CORG_FEE_AMT|CORG_STL_AMT|CORG_FEE_CAL_MTH|CORG_FEE_MOD|</Output>
</Call>
<!--记录不存在-->
<If condition="IS_EQUAL_STRING(SUBSTR(@O.MSG_CD,4,5),22222)">
<!--清算开始日期-->
<Set>STL_STT_DT=@O.STL_STT_DT</Set>
<!--清算结束日期-->
<Set>STL_END_DT=@O.STL_END_DT</Set>
<!--代收机构成功笔数-->
<Set>TO_CORG_SUCC_CNT=@O.CORG_SUCC_CNT</Set>
<!--代收机构交易金额-->
<Set>TO_CORG_AMT=@O.CORG_AMT</Set>
<!--代收机构手续费金额-->
<Set>TO_CORG_FEE_AMT=@O.CORG_FEE_AMT</Set>
<!--代收机构净额-->
<Set>TO_CORG_STL_AMT=@O.CORG_STL_AMT</Set>
<!--收费方式-->
<Set>CORG_FEE_MOD=@O.CORG_FEE_MOD</Set>
<!--计费方法-->
<Set>CORG_FEE_CAL_MTH=@O.CORG_FEE_CAL_MTH</Set>
<Set>Rsp_Cd=222222</Set>
<Set>Rsp_Msg=STRCAT($CORG_NO,代付机构清算明细表无数据,无需计算手续费)</Set>
</If>
<ElseIf condition="AND(IS_NOEQUAL_STRING(SUBSTR(@O.MSG_CD,4,5),00000),IS_NOEQUAL_STRING(SUBSTR(@O.MSG_CD,4,5),11111))">
<Set>Rsp_Cd=999999</Set>
<Set>Rsp_Msg=STRCAT($CORG_NO,机构对应的,$PAY_TYP,代付机构计算手续费失败)</Set>
<Continue/>
</ElseIf>
<ElseIf condition="IS_EQUAL_STRING(SUBSTR(@O.MSG_CD,4,5),11111)">
<!--清算开始日期-->
<Set>STL_STT_DT=@O.STL_STT_DT</Set>
<!--清算结束日期-->
<Set>STL_END_DT=@O.STL_END_DT</Set>
<!--代收机构成功笔数-->
<Set>TO_CORG_SUCC_CNT=@O.CORG_SUCC_CNT</Set>
<!--代收机构交易金额-->
<Set>TO_CORG_AMT=@O.CORG_AMT</Set>
<!--代收机构手续费金额-->
<Set>TO_CORG_FEE_AMT=@O.CORG_FEE_AMT</Set>
<!--代收机构净额-->
<Set>TO_CORG_STL_AMT=@O.CORG_STL_AMT</Set>
<!--收费方式-->
<Set>CORG_FEE_MOD=@O.CORG_FEE_MOD</Set>
<!--计费方法-->
<Set>CORG_FEE_CAL_MTH=@O.CORG_FEE_CAL_MTH</Set>
<Set>Rsp_Cd=111111</Set>
<Set>Rsp_Msg=STRCAT($CORG_NO,机构对应的,$PAY_TYP,代付机构在机构服务费费率表没有记录,无需计算手续费)</Set>
</ElseIf>
<Else>
<!--清算开始日期-->
<Set>STL_STT_DT=@O.STL_STT_DT</Set>
<!--清算结束日期-->
<Set>STL_END_DT=@O.STL_END_DT</Set>
<!--代收机构成功笔数-->
<Set>TO_CORG_SUCC_CNT=@O.CORG_SUCC_CNT</Set>
<!--代收机构交易金额-->
<Set>TO_CORG_AMT=@O.CORG_AMT</Set>
<!--代收机构手续费金额-->
<Set>TO_CORG_FEE_AMT=@O.CORG_FEE_AMT</Set>
<!--代收机构净额-->
<Set>TO_CORG_STL_AMT=@O.CORG_STL_AMT</Set>
<!--收费方式-->
<Set>CORG_FEE_MOD=@O.CORG_FEE_MOD</Set>
<!--计费方法-->
<Set>CORG_FEE_CAL_MTH=@O.CORG_FEE_CAL_MTH</Set>
<Set>Rsp_Cd=000000</Set>
<Set>Rsp_Msg=STRCAT($CORG_NO,机构对应的,$PAY_TYP,代付机构计算手续费成功)</Set>
</Else>
</Macro>
<!--计算机构的代收代付的交易金额、手续费及交易净额-->
<Macro name="InsertCapStlAgt">
<!--收支两条线,不插入手续费-->
<If condition="IS_EQUAL_STRING($STL_MOD,1)">
<!--商户手续费-->
<Set>TO_CORG_FEE_AMT=$TO_CORG_FEE_AMT</Set>
<Set>TO_CORG_FEE_AMT=0</Set>
</If>
<!--代收代付机构清算登记表-->
<Exec func="PUB:InsertRecord" error="IGNORE">
<Arg name="TblNam" value="CAPSTLAGT"/>
</Exec>
<If condition="~RetCod=-1">
<Set>Rsp_Cd=999999</Set>
<Set>Rsp_Msg=STRCAT($CORG_NO,插入代收代付机构清算登记表CAPSTLREG表失败)</Set>
<Exec func="PUB:CmpSetMsg">
<Arg name="MsgCd" value="STL99999"/>
<Arg name="MsgDat" value="插入代收代付机构清算登记表CAPSTLREG表失败"/>
</Exec>
<Return/>
</If>
</Macro>
<!--更新机构下一个结算日期-->
<Macro name="UpdCorgNextStlDate">
<!-- 更新机构下一个结算日期 -->
<!-- 计算机构下一个结算日期 -->
<!--结算周期 0:日 1:周 2:旬 3:月 4:季 5:半年 6:年 7:指定日-->
<Set>INP_STL.STL_PERD=$STL_PERD</Set>
<!-- 结算日 -->
<Set>INP_STL.STL_DAY=$STL_DAY</Set>
<!--结算日标识位 -->
<Set>INP_STL.STL_DAT_FLG=$STL_DAY_BIT</Set>
<!-- 联机批量标识 Y:批量 -->
<Set>INP_STL.BAT_FLG=Y</Set>
<Exec func="URM:CalculateSTLDate"> <!-- 计算下一计算日 -->
<Arg name="_I_INP_DAT" value="INP_STL" />
<Arg name="_O_OUT_DAT" value="OUT_STL" />
</Exec>
<If condition="~RetCod!=0">
<!--@msg 计算机构结算日失败 -->
<Set>Rsp_Cd=999999</Set>
<Set>Rsp_Msg=计算机构结算日失败</Set>
<Continue/>
</If>
<If condition='IS_SUCC(@O.MSG_CD)=0'>
<Set>MSG_CD=@O.MSG_CD</Set>
<Set>Rsp_Cd=999999</Set>
<Set>Rsp_Msg=计算机构结算日失败</Set>
<Continue/>
</If>
<Set>NEXT_STL_DT=@O.OUT_STL.STL_DT</Set> <!-- 下一结算日 -->
<!-- 上一结算日 -->
<Set>LAST_STL_DT=$STL_DT</Set>
<!-- 更新机构结算信息-->
<Exec func="PUB:ExecSql">
<Arg name="SqlCmd" value="UPD_CMMTMSTL" />
</Exec>
<If condition="~RetCod!=0">
<Set>TBNM=CMMTMSTL</Set>
<Set>Rsp_Cd=999999</Set>
<Set>Rsp_Msg=STRCAT($TBNM,更新失败)</Set>
<Continue/>
</If>
<Delete>NEXT_STL_DT</Delete>
</Macro>
<!--收支两条线代收代付手续费到期日计算-->
<Macro name="IsStlMod1CorgFeeStlDate">
<!--代收手续费到达手续费清算日-->
<Quote name="IsStlMod1RecCorgFeeStlDate"/>
<!--手续费收费周期单位,字段非空,需要计算收取的手续费-->
<If condition="IS_NOEQUAL_STRING($FEE_PERD_UNIT,NULL)">
<!--计算代收机构手续费-->
<Quote name="CalcStlMod1RecCorgFee"/>
<!--判断该合作机构的交易总金额是否为0-->
<If condition="DOUBLECMP($TO_CORG_AMT,4,0)">
<!--计算机构的代收的交易金额及手续费-->
<Quote name="InsertCapAgtFee"/>
</If>
<!--删除关键域-->
<Delete>TO_CORG_AMT</Delete>
<Delete>TO_CORG_SUCC_CNT</Delete>
<Delete>TO_CORG_FEE_AMT</Delete>
<Delete>TO_CORG_STL_AMT</Delete>
<!--更新代收机构下一个手续费结算日期-->
<!--Quote name="UpdStlMod1RecCorgNextFeeDate"/-->
</If>
<Else>
<Set>Rsp_Msg=STRCAT($CORG_NO,手续费率为空或者清算数据无记录)</Set>
</Else>
<!--代付机构手续费到达手续费清算日-->
<Quote name="IsStlMod1PayCorgFeeStlDate"/>
<!--手续费收费周期单位 字段非空-->
<If condition="IS_NOEQUAL_STRING($FEE_PERD_UNIT,NULL)">
<!--计算代付机构手续费-->
<Quote name="CalcStlMod1PayCorgFee"/>
<!--判断该合作机构的交易总金额是否为0-->
<If condition="DOUBLECMP($TO_CORG_AMT,4,0)">
<!--计算机构的代收的交易金额及手续费-->
<Quote name="InsertCapAgtFee"/>
</If>
<!--删除关键域-->
<Delete>TO_CORG_AMT</Delete>
<Delete>TO_CORG_SUCC_CNT</Delete>
<Delete>TO_CORG_FEE_AMT</Delete>
<Delete>TO_CORG_STL_AMT</Delete>
<!--更新代付机构下一个手续费结算日期-->
<!--Quote name="UpdStlMod1PayCorgNextFeeDate"/-->
</If>
<Else>
<Set>Rsp_Msg=STRCAT($CORG_NO,手续费率为空或者清算数据无记录)</Set>
</Else>
</Macro>
<!--收支两条线代收代付手续费到期日计算-->
<Macro name="IsStlMod1CorgSZFSFeeStlDate">
<!--代收成功笔数-->
<Set>TO_CORG_SUCC_CNT1=0</Set>
<!--代收交易金额-->
<Set>TO_CORG_AMT1=0</Set>
<!--代收手续费金额-->
<Set>TO_CORG_FEE_AMT1=0</Set>
<!--批量代收手续费到达手续费清算日-->
<Set>STL_TXN_TYP=1</Set>
<Quote name="IsStlMod1RecCorgSZFSFeeStlDate"/>
<!--手续费收费周期单位,字段非空,需要计算收取的手续费-->
<If condition="IS_NOEQUAL_STRING($FEE_PERD_UNIT,NULL)">
<!--计算代收机构手续费-->
<Quote name="CalcStlMod1RecCorgSZFSFee"/>
<Set>TO_CORG_SUCC_CNT1=ADD($TO_CORG_SUCC_CNT1,$TO_CORG_SUCC_CNT)</Set>
<Set>TO_CORG_AMT1=FADD($TO_CORG_AMT1,$TO_CORG_AMT,2)</Set>
<Set>TO_CORG_FEE_AMT1=FADD($TO_CORG_FEE_AMT1,$TO_CORG_FEE_AMT,2)</Set>
<!--删除关键域-->
<Delete>TO_CORG_AMT</Delete>
<Delete>TO_CORG_SUCC_CNT</Delete>
<Delete>TO_CORG_FEE_AMT</Delete>
<Delete>TO_CORG_STL_AMT</Delete>
<!--更新代收机构下一个手续费结算日期-->
<!--Quote name="UpdStlMod1RecCorgNextFeeDate"/-->
</If>
<Else>
<Set>Rsp_Msg=STRCAT($CORG_NO,批量代收手续费率为空或者清算数据无记录)</Set>
</Else>
<Delete>STL_TXN_TYP</Delete>
<Set>STL_TXN_TYP=2</Set>
<!--单笔代收手续费到达手续费清算日-->
<Quote name="IsStlMod1RecCorgSZFSFeeStlDate"/>
<!--手续费收费周期单位,字段非空,需要计算收取的手续费-->
<If condition="IS_NOEQUAL_STRING($FEE_PERD_UNIT,NULL)">
<!--计算代收机构手续费-->
<Quote name="CalcStlMod1RecCorgSZFSFee"/>
<Set>TO_CORG_SUCC_CNT1=ADD($TO_CORG_SUCC_CNT1,$TO_CORG_SUCC_CNT)</Set>
<Set>TO_CORG_AMT1=FADD($TO_CORG_AMT1,$TO_CORG_AMT,2)</Set>
<Set>TO_CORG_FEE_AMT1=FADD($TO_CORG_FEE_AMT1,$TO_CORG_FEE_AMT,2)</Set>
<!--删除关键域-->
<Delete>TO_CORG_AMT</Delete>
<Delete>TO_CORG_SUCC_CNT</Delete>
<Delete>TO_CORG_FEE_AMT</Delete>
<Delete>TO_CORG_STL_AMT</Delete>
<Set>TO_CORG_SUCC_CNT=$TO_CORG_SUCC_CNT1</Set>
<Set>TO_CORG_AMT=$TO_CORG_AMT1</Set>
<Set>TO_CORG_FEE_AMT=$TO_CORG_FEE_AMT1</Set>
<!--判断该合作机构的交易总金额是否为0-->
<If condition="DOUBLECMP($TO_CORG_AMT,4,0)">
<!--计算机构的代收的交易金额及手续费-->
<Quote name="InsertCapAgtFee"/>
</If>
<!--更新代收机构下一个手续费结算日期-->
<!--Quote name="UpdStlMod1RecCorgNextFeeDate"/-->
</If>
<Else>
<Set>Rsp_Msg=STRCAT($CORG_NO,单笔代收手续费率为空或者清算数据无记录)</Set>
</Else>
<Delete>STL_TXN_TYP</Delete>
<!--Set>STL_TXN_TYP=3</Set-->
<!--代收身份校验手续费到达手续费清算日-->
<!--Quote name="IsStlMod1RecCorgSZFSFeeStlDate"/-->
<!--手续费收费周期单位,字段非空,需要计算收取的手续费-->
<!--If condition="IS_NOEQUAL_STRING($FEE_PERD_UNIT,NULL)"-->
<!--计算代收机构手续费-->
<!--Quote name="CalcStlMod1RecCorgSZFSFee"/>
<Set>TO_CORG_SUCC_CNT1=ADD($TO_CORG_SUCC_CNT1,$TO_CORG_SUCC_CNT)</Set>
<Set>TO_CORG_AMT1=FADD($TO_CORG_AMT1,$TO_CORG_AMT,2)</Set>
<Set>TO_CORG_FEE_AMT1=FADD($TO_CORG_FEE_AMT1,$TO_CORG_FEE_AMT,2)</Set-->
<!--删除关键域-->
<!--Delete>TO_CORG_AMT</Delete>
<Delete>TO_CORG_SUCC_CNT</Delete>
<Delete>TO_CORG_FEE_AMT</Delete>
<Delete>TO_CORG_STL_AMT</Delete>
<Set>TO_CORG_SUCC_CNT=$TO_CORG_SUCC_CNT1</Set>
<Set>TO_CORG_AMT=$TO_CORG_AMT1</Set>
<Set>TO_CORG_FEE_AMT=$TO_CORG_FEE_AMT1</Set-->
<!--判断该合作机构的交易总金额是否为0-->
<!--If condition="DOUBLECMP($TO_CORG_AMT,4,0)"-->
<!--计算机构的代收的交易金额及手续费-->
<!--Quote name="InsertCapAgtFee"/>
</If-->
<!--删除关键域-->
<!--Delete>TO_CORG_AMT</Delete>
<Delete>TO_CORG_SUCC_CNT</Delete>
<Delete>TO_CORG_FEE_AMT</Delete>
<Delete>TO_CORG_STL_AMT</Delete-->
<!--更新代收机构下一个手续费结算日期-->
<!--Quote name="UpdStlMod1RecCorgNextFeeDate"/-->
<!--/If>
<Else>
<Set>Rsp_Msg=STRCAT($CORG_NO,单笔代收手续费率为空或者清算数据无记录)</Set>
</Else>
<Delete>STL_TXN_TYP</Delete-->
<!--代收成功笔数-->
<Set>TO_CORG_SUCC_CNT2=0</Set>
<!--代收交易金额-->
<Set>TO_CORG_AMT2=0</Set>
<!--代收手续费金额-->
<Set>TO_CORG_FEE_AMT2=0</Set>
<!--批量代付机构手续费到达手续费清算日-->
<Set>STL_TXN_TYP=1</Set>
<Quote name="IsStlMod1PayCorgSZFSFeeStlDate"/>
<!--手续费收费周期单位 字段非空-->
<If condition="IS_NOEQUAL_STRING($FEE_PERD_UNIT,NULL)">
<!--计算代付机构手续费-->
<Quote name="CalcStlMod1PayCorgSZFSFee"/>
<Set>TO_CORG_SUCC_CNT2=ADD($TO_CORG_SUCC_CNT2,$TO_CORG_SUCC_CNT)</Set>
<Set>TO_CORG_AMT2=FADD($TO_CORG_AMT2,$TO_CORG_AMT,2)</Set>
<Set>TO_CORG_FEE_AMT2=FADD($TO_CORG_FEE_AMT2,$TO_CORG_FEE_AMT,2)</Set>
<!--删除关键域-->
<Delete>TO_CORG_AMT</Delete>
<Delete>TO_CORG_SUCC_CNT</Delete>
<Delete>TO_CORG_FEE_AMT</Delete>
<Delete>TO_CORG_STL_AMT</Delete>
<!--更新代付机构下一个手续费结算日期-->
<!--Quote name="UpdStlMod1PayCorgNextFeeDate"/-->
</If>
<Else>
<Set>Rsp_Msg=STRCAT($CORG_NO,手续费率为空或者清算数据无记录)</Set>
</Else>
<Delete>STL_TXN_TYP</Delete>
<!--单笔代付机构手续费到达手续费清算日-->
<Set>STL_TXN_TYP=2</Set>
<Quote name="IsStlMod1PayCorgSZFSFeeStlDate"/>
<!--手续费收费周期单位 字段非空-->
<If condition="IS_NOEQUAL_STRING($FEE_PERD_UNIT,NULL)">
<!--计算代付机构手续费-->
<Quote name="CalcStlMod1PayCorgSZFSFee"/>
<Set>TO_CORG_SUCC_CNT2=ADD($TO_CORG_SUCC_CNT2,$TO_CORG_SUCC_CNT)</Set>
<Set>TO_CORG_AMT2=FADD($TO_CORG_AMT2,$TO_CORG_AMT,2)</Set>
<Set>TO_CORG_FEE_AMT2=FADD($TO_CORG_FEE_AMT2,$TO_CORG_FEE_AMT,2)</Set>
<!--删除关键域-->
<Delete>TO_CORG_AMT</Delete>
<Delete>TO_CORG_SUCC_CNT</Delete>
<Delete>TO_CORG_FEE_AMT</Delete>
<Delete>TO_CORG_STL_AMT</Delete>
<Set>TO_CORG_SUCC_CNT=$TO_CORG_SUCC_CNT2</Set>
<Set>TO_CORG_AMT=$TO_CORG_AMT2</Set>
<Set>TO_CORG_FEE_AMT=$TO_CORG_FEE_AMT2</Set>
<!--判断该合作机构的交易总金额是否为0-->
<If condition="DOUBLECMP($TO_CORG_AMT,4,0)">
<!--计算机构的代收的交易金额及手续费-->
<Quote name="InsertCapAgtFee"/>
</If>
<!--删除关键域-->
<Delete>TO_CORG_AMT</Delete>
<Delete>TO_CORG_SUCC_CNT</Delete>
<Delete>TO_CORG_FEE_AMT</Delete>
<Delete>TO_CORG_STL_AMT</Delete>
<!--更新代付机构下一个手续费结算日期-->
<!--Quote name="UpdStlMod1PayCorgNextFeeDate"/-->
</If>
<Else>
<Set>Rsp_Msg=STRCAT($CORG_NO,手续费率为空或者清算数据无记录)</Set>
</Else>
<Delete>STL_TXN_TYP</Delete>
<!--代付机构身份验证手续费到达手续费清算日-->
<!--Set>STL_TXN_TYP=3</Set>
<Quote name="IsStlMod1PayCorgSZFSFeeStlDate"/-->
<!--手续费收费周期单位 字段非空-->
<!--If condition="IS_NOEQUAL_STRING($FEE_PERD_UNIT,NULL)"-->
<!--计算代付机构手续费-->
<!--Quote name="CalcStlMod1PayCorgSZFSFee"/>
<Set>TO_CORG_SUCC_CNT2=ADD($TO_CORG_SUCC_CNT2,$TO_CORG_SUCC_CNT)</Set>
<Set>TO_CORG_AMT2=FADD($TO_CORG_AMT2,$TO_CORG_AMT,2)</Set>
<Set>TO_CORG_FEE_AMT2=FADD($TO_CORG_FEE_AMT2,$TO_CORG_FEE_AMT,2)</Set-->
<!--删除关键域-->
<!--Delete>TO_CORG_AMT</Delete>
<Delete>TO_CORG_SUCC_CNT</Delete>
<Delete>TO_CORG_FEE_AMT</Delete>
<Delete>TO_CORG_STL_AMT</Delete>
<Set>TO_CORG_SUCC_CNT=$TO_CORG_SUCC_CNT2</Set>
<Set>TO_CORG_AMT=$TO_CORG_AMT2</Set>
<Set>TO_CORG_FEE_AMT=$TO_CORG_FEE_AMT2</Set-->
<!--判断该合作机构的交易总金额是否为0-->
<!--If condition="DOUBLECMP($TO_CORG_AMT,4,0)"-->
<!--计算机构的代收的交易金额及手续费-->
<!--Quote name="InsertCapAgtFee"/>
</If-->
<!--删除关键域-->
<!--Delete>TO_CORG_AMT</Delete>
<Delete>TO_CORG_SUCC_CNT</Delete>
<Delete>TO_CORG_FEE_AMT</Delete>
<Delete>TO_CORG_STL_AMT</Delete-->
<!--更新代付机构下一个手续费结算日期-->
<!--Quote name="UpdStlMod1PayCorgNextFeeDate"/-->
<!--/If>
<Else>
<Set>Rsp_Msg=STRCAT($CORG_NO,手续费率为空或者清算数据无记录)</Set>
</Else>
<Delete>STL_TXN_TYP</Delete-->
</Macro>
<!--判断代收机构是否到达手续费结算日期-->
<Macro name="IsStlMod1RecCorgFeeStlDate">
<Set>Rsp_Msg=STRCAT($CORG_NO,判断代收手续费是否到了收费日期)</Set>
<!--判断代收机构是否到达手续费结算日期-->
<!--11 代收-->
<!-- 支付类型 11:代收 -->
<Set>PAY_TYP=11</Set>
<!-- 订单类型 11:代收 -->
<Set>ORD_TYP=11</Set>
<!--查询收支两条线对应机构费率-->
<Call package="CORG" function="IS_STLMOD_1_CORG_NEXT_FEE_DATE_FUNC">
<Input>GWA|ORD_TYP|PAY_TYP|STL_DT|STL_MOD|CORG_NO|CORG_TYP|CORG_NM|</Input>
<Output>MSG_CD|FEE_PERD_UNIT|FEE_PERD_NUM|CORG_FEE_MOD|CORG_FEE_CAL_MTH|NEXT_FEE_DT|</Output>
</Call>
<!--手续费到了结算日期-->
<If condition="IS_EQUAL_STRING(SUBSTR(@O.MSG_CD,4,5),00000)">
<Set>Rsp_Cd=000000</Set>
<Set>Rsp_Msg=STRCAT($CORG_NO,对应的收付类型, $PAY_TYP,代收的收支两条线已经到了收费日期)</Set>
<!--手续费收费周期单位 0: 年 1: 月 2: 日-->
<Set>FEE_PERD_UNIT=@O.FEE_PERD_UNIT</Set>
<!--手续费收费同期数量-->
<Set>FEE_PERD_NUM=@O.FEE_PERD_NUM</Set>
<!--代收收费方式 0:不收取 1:实时单笔收取 2:单笔计算、按周期收取 3:按周期汇总计算并收取-->
<Set>CORG_FEE_MOD=@O.CORG_FEE_MOD</Set>
<!--1:按固定金额收取 2:按金额固定百分比收取-->
<Set>CORG_FEE_CAL_MTH=@O.CORG_FEE_CAL_MTH</Set>
<!--手续费结算日-->
<Set>NEXT_FEE_DT=@O.NEXT_FEE_DT</Set>
</If>
<ElseIf condition="IS_NOEQUAL_STRING(SUBSTR(@O.MSG_CD,4,5),11111)">
<Set>Rsp_Msg=STRCAT($CORG_NO,对应的收付类型, $PAY_TYP,代收的收支两条线机构在机构服务费费率表没有记录)</Set>
<!--手续费收费周期单位 0: 年 1: 月 2: 日-->
<Set>FEE_PERD_UNIT=@O.FEE_PERD_UNIT</Set>
<!--手续费收费同期数量-->
<Set>FEE_PERD_NUM=@O.FEE_PERD_NUM</Set>
<!--代收收费方式 0:不收取 1:实时单笔收取 2:单笔计算、按周期收取 3:按周期汇总计算并收取-->
<Set>CORG_FEE_MOD=@O.CORG_FEE_MOD</Set>
<!--1:按固定金额收取 2:按金额固定百分比收取-->
<Set>CORG_FEE_CAL_MTH=@O.CORG_FEE_CAL_MTH</Set>
<!--手续费结算日-->
<Set>NEXT_FEE_DT=@O.NEXT_FEE_DT</Set>
<!--代收成功笔数-->
<Set>TO_CORG_SUCC_CNT=0</Set>
<!--代收交易金额-->
<Set>TO_CORG_AMT=0</Set>
<!--代收手续费金额-->
<Set>TO_CORG_FEE_AMT=0</Set>
</ElseIf>
<ElseIf condition="IS_NOEQUAL_STRING(SUBSTR(@O.MSG_CD,4,5),22222)">
<Set>Rsp_Msg=STRCAT($CORG_NO,对应的收付类型, $PAY_TYP,代收的收支两条线机构没有到收费日期)</Set>
<!--手续费收费周期单位 0: 年 1: 月 2: 日-->
<Set>FEE_PERD_UNIT=@O.FEE_PERD_UNIT</Set>
<!--手续费收费同期数量-->
<Set>FEE_PERD_NUM=@O.FEE_PERD_NUM</Set>
<!--代收收费方式 0:不收取 1:实时单笔收取 2:单笔计算、按周期收取 3:按周期汇总计算并收取-->
<Set>CORG_FEE_MOD=@O.CORG_FEE_MOD</Set>
<!--1:按固定金额收取 2:按金额固定百分比收取-->
<Set>CORG_FEE_CAL_MTH=@O.CORG_FEE_CAL_MTH</Set>
<!--手续费结算日-->
<Set>NEXT_FEE_DT=@O.NEXT_FEE_DT</Set>
<!--代收成功笔数-->
<Set>TO_CORG_SUCC_CNT=0</Set>
<!--代收交易金额-->
<Set>TO_CORG_AMT=0</Set>
<!--代收手续费金额-->
<Set>TO_CORG_FEE_AMT=0</Set>
</ElseIf>
<Else>
<Set>MSG=@O.MSG_CD</Set>
<Set>Rsp_Cd=999999</Set>
<Set>Rsp_Msg=查询代收的收支两条线对应机构费率失败</Set>
<Continue/>
</Else>
</Macro>
<!--判断代收机构是否到达手续费结算日期-->
<Macro name="IsStlMod1RecCorgSZFSFeeStlDate">
<Set>Rsp_Msg=STRCAT($CORG_NO,判断批量代收手续费是否到了收费日期)</Set>
<!--判断代收机构是否到达手续费结算日期-->
<!--11 代收-->
<!-- 支付类型 11:代收 -->
<Set>PAY_TYP=11</Set>
<!-- 订单类型 11:代收 -->
<Set>ORD_TYP=11</Set>
<Set>STL_TXN_TYP=$STL_TXN_TYP</Set>
<!--查询收支两条线对应机构费率-->
<Call package="CORG" function="IS_STLMOD_1_CORG_SZFS_NEXT_FEE_DATE_FUNC">
<Input>GWA|ORD_TYP|PAY_TYP|STL_DT|STL_MOD|CORG_NO|CORG_TYP|CORG_NM|STL_TXN_TYP|</Input>
<Output>MSG_CD|FEE_PERD_UNIT|FEE_PERD_NUM|CORG_FEE_MOD|CORG_FEE_CAL_MTH|NEXT_FEE_DT|</Output>
</Call>
<!--手续费到了结算日期-->
<If condition="IS_EQUAL_STRING(SUBSTR(@O.MSG_CD,4,5),00000)">
<Set>Rsp_Cd=000000</Set>
<Set>Rsp_Msg=STRCAT($CORG_NO,对应的收付类型, $PAY_TYP,对应的业务类型, $STL_TXN_TYP,代收的收支两条线已经到了收费日期)</Set>
<!--手续费收费周期单位 0: 年 1: 月 2: 日-->
<Set>FEE_PERD_UNIT=@O.FEE_PERD_UNIT</Set>
<!--手续费收费同期数量-->
<Set>FEE_PERD_NUM=@O.FEE_PERD_NUM</Set>
<!--代收收费方式 0:不收取 1:实时单笔收取 2:单笔计算、按周期收取 3:按周期汇总计算并收取-->
<Set>CORG_FEE_MOD=@O.CORG_FEE_MOD</Set>
<!--1:按固定金额收取 2:按金额固定百分比收取-->
<Set>CORG_FEE_CAL_MTH=@O.CORG_FEE_CAL_MTH</Set>
<!--手续费结算日-->
<Set>NEXT_FEE_DT=@O.NEXT_FEE_DT</Set>
</If>
<ElseIf condition="IS_NOEQUAL_STRING(SUBSTR(@O.MSG_CD,4,5),11111)">
<Set>Rsp_Msg=STRCAT($CORG_NO,对应的收付类型, $PAY_TYP,对应的业务类型, $STL_TXN_TYP,代收的收支两条线机构在机构服务费费率表没有记录)</Set>
<!--手续费收费周期单位 0: 年 1: 月 2: 日-->
<Set>FEE_PERD_UNIT=@O.FEE_PERD_UNIT</Set>
<!--手续费收费同期数量-->
<Set>FEE_PERD_NUM=@O.FEE_PERD_NUM</Set>
<!--代收收费方式 0:不收取 1:实时单笔收取 2:单笔计算、按周期收取 3:按周期汇总计算并收取-->
<Set>CORG_FEE_MOD=@O.CORG_FEE_MOD</Set>
<!--1:按固定金额收取 2:按金额固定百分比收取-->
<Set>CORG_FEE_CAL_MTH=@O.CORG_FEE_CAL_MTH</Set>
<!--手续费结算日-->
<Set>NEXT_FEE_DT=@O.NEXT_FEE_DT</Set>
<!--代收成功笔数-->
<Set>TO_CORG_SUCC_CNT=0</Set>
<!--代收交易金额-->
<Set>TO_CORG_AMT=0</Set>
<!--代收手续费金额-->
<Set>TO_CORG_FEE_AMT=0</Set>
</ElseIf>
<ElseIf condition="IS_NOEQUAL_STRING(SUBSTR(@O.MSG_CD,4,5),22222)">
<Set>Rsp_Msg=STRCAT($CORG_NO,对应的收付类型, $PAY_TYP,对应的业务类型, $STL_TXN_TYP,代收的收支两条线机构没有到收费日期)</Set>
<!--手续费收费周期单位 0: 年 1: 月 2: 日-->
<Set>FEE_PERD_UNIT=@O.FEE_PERD_UNIT</Set>
<!--手续费收费同期数量-->
<Set>FEE_PERD_NUM=@O.FEE_PERD_NUM</Set>
<!--代收收费方式 0:不收取 1:实时单笔收取 2:单笔计算、按周期收取 3:按周期汇总计算并收取-->
<Set>CORG_FEE_MOD=@O.CORG_FEE_MOD</Set>
<!--1:按固定金额收取 2:按金额固定百分比收取-->
<Set>CORG_FEE_CAL_MTH=@O.CORG_FEE_CAL_MTH</Set>
<!--手续费结算日-->
<Set>NEXT_FEE_DT=@O.NEXT_FEE_DT</Set>
<!--代收成功笔数-->
<Set>TO_CORG_SUCC_CNT=0</Set>
<!--代收交易金额-->
<Set>TO_CORG_AMT=0</Set>
<Set>TO_CORG_FEE_AMT=0</Set>
</ElseIf>
<Else>
<Set>MSG=@O.MSG_CD</Set>
<Set>Rsp_Cd=999999</Set>
<Set>Rsp_Msg=查询代收的收支两条线对应机构费率失败</Set>
<Continue/>
</Else>
</Macro>
<!--收支两条线代收机构计算手续费-->
<Macro name="CalcStlMod1RecCorgFee">
<Set>Rsp_Msg=STRCAT($CORG_NO,对应的收付类型, $PAY_TYP,代收的收支两条线机构开始计算代收机构手续费)</Set>
<!-- 订单支付类型 11:代收 12:代付 -->
<Set>PAY_TYP=11</Set>
<!-- 订单类型 11:代收 12:代付 -->
<Set>ORD_TYP=11</Set>
<Set>CORG_FEE_MOD=$CORG_FEE_MOD</Set>
<!-- 计算代收的机构手续费 -->
<Call package="CORG" function="CAL_STLMOD_1_CORG_FEE_FUNC">
<Input>GWA|ORD_TYP|PAY_TYP|STL_DT|STL_MOD|NEXT_FEE_DT|CORG_NO|CORG_TYP|CORG_NM|CORG_FEE_MOD|</Input>
<Output>MSG_CD|CORG_SUCC_CNT|CORG_AMT|CORG_FEE_AMT|</Output>
</Call>
<!--记录不存在-->
<If condition="IS_EQUAL_STRING(SUBSTR(@O.MSG_CD,4,5),22222)">
<!--代收成功笔数-->
<Set>TO_CORG_SUCC_CNT=@O.CORG_SUCC_CNT</Set>
<!--代收交易金额-->
<Set>TO_CORG_AMT=@O.CORG_AMT</Set>
<!--代收手续费金额-->
<Set>TO_CORG_FEE_AMT=@O.CORG_FEE_AMT</Set>
<Set>Rsp_Cd=222222</Set>
<Set>Rsp_Msg=STRCAT($CORG_NO,对应的收付类型, $PAY_TYP,代收机构清算明细表无数据,无需计算手续费)</Set>
</If>
<ElseIf condition="IS_NOEQUAL_STRING(SUBSTR(@O.MSG_CD,4,5),00000)">
<Set>MSG=@O.MSG_CD</Set>
<Set>Rsp_Cd=999999</Set>
<Set>Rsp_Msg=计算代收机构手续费失败</Set>
<Continue/>
</ElseIf>
<Else>
<!--代收成功笔数-->
<Set>TO_CORG_SUCC_CNT=@O.CORG_SUCC_CNT</Set>
<!--代收交易金额-->
<Set>TO_CORG_AMT=@O.CORG_AMT</Set>
<!--代收手续费金额-->
<Set>TO_CORG_FEE_AMT=@O.CORG_FEE_AMT</Set>
<Set>Rsp_Msg=STRCAT($CORG_NO,对应的收付类型, $PAY_TYP,计算机构手续费成功)</Set>
</Else>
</Macro>
<!--收支两条线代收机构计算手续费-->
<Macro name="CalcStlMod1RecCorgSZFSFee">
<Set>Rsp_Msg=STRCAT($CORG_NO,对应的收付类型, $PAY_TYP,代收的收支两条线机构开始计算代收机构手续费)</Set>
<!-- 订单支付类型 11:代收 12:代付 -->
<Set>PAY_TYP=11</Set>
<!-- 订单类型 11:代收 12:代付 -->
<Set>ORD_TYP=11</Set>
<Set>CORG_FEE_MOD=$CORG_FEE_MOD</Set>
<Set>STL_TXN_TYP=$STL_TXN_TYP</Set>
<!-- 计算代收的结算中心手续费 -->
<Call package="CORG" function="CAL_STLMOD_1_CORG_SZFS_FEE_FUNC">
<Input>GWA|ORD_TYP|PAY_TYP|STL_DT|STL_MOD|NEXT_FEE_DT|CORG_NO|CORG_TYP|CORG_NM|CORG_FEE_MOD|STL_TXN_TYP|STL_ACC_TYP|STL_FEE_TYP|</Input>
<Output>MSG_CD|CORG_SUCC_CNT|CORG_AMT|CORG_FEE_AMT|</Output>
</Call>
<!--记录不存在-->
<If condition="IS_EQUAL_STRING(SUBSTR(@O.MSG_CD,4,5),22222)">
<!--代收成功笔数-->
<Set>TO_CORG_SUCC_CNT=@O.CORG_SUCC_CNT</Set>
<!--代收交易金额-->
<Set>TO_CORG_AMT=@O.CORG_AMT</Set>
<!--代收手续费金额-->
<Set>TO_CORG_FEE_AMT=@O.CORG_FEE_AMT</Set>
<Set>Rsp_Cd=222222</Set>
<Set>Rsp_Msg=STRCAT($CORG_NO,对应的收付类型, $PAY_TYP,对应的业务类型, $STL_TXN_TYP,代收机构清算明细表无数据,无需计算手续费)</Set>
</If>
<ElseIf condition="IS_NOEQUAL_STRING(SUBSTR(@O.MSG_CD,4,5),00000)">
<Set>MSG=@O.MSG_CD</Set>
<Set>Rsp_Cd=999999</Set>
<Set>Rsp_Msg=计算代收机构手续费失败</Set>
<Continue/>
</ElseIf>
<Else>
<!--代收成功笔数-->
<Set>TO_CORG_SUCC_CNT=@O.CORG_SUCC_CNT</Set>
<!--代收交易金额-->
<Set>TO_CORG_AMT=@O.CORG_AMT</Set>
<!--代收手续费金额-->
<Set>TO_CORG_FEE_AMT=@O.CORG_FEE_AMT</Set>
<Set>Rsp_Msg=STRCAT($CORG_NO,对应的收付类型, $PAY_TYP,对应的业务类型, $STL_TXN_TYP,计算机构手续费成功)</Set>
</Else>
</Macro>
<!--更新代收机构下一个手续费结算日期-->
<Macro name="UpdStlMod1RecCorgNextFeeDate">
<Set>Rsp_Msg=STRCAT($CORG_NO,对应的收付类型, $PAY_TYP,对应的业务类型, $STL_TXN_TYP,更新代收机构下一个手续费结算日期)</Set>
<!--计算手续费的下一个结算日,按日-->
<If condition="INTCMP($FEE_PERD_UNIT,3,2)">
<Set>NEXT_FEE_DT=CALCDATE($NEXT_FEE_DT,+,d,$FEE_PERD_NUM)</Set>
</If>
<!--计算手续费的下一个结算日,按月-->
<ElseIf condition="INTCMP($FEE_PERD_UNIT,3,2)">
<Set>NEXT_FEE_DT=CALCDATE($NEXT_FEE_DT,+,m,$FEE_PERD_NUM)</Set>
</ElseIf>
<!--计算手续费的下一个结算日,按年-->
<ElseIf condition="INTCMP($FEE_PERD_UNIT,3,2)">
<Set>NEXT_FEE_DT=CALCDATE($NEXT_FEE_DT,+,y,$FEE_PERD_NUM)</Set>
</ElseIf>
<Else>
<!--@msg 计算商户结算日失败 -->
<Set>Rsp_Cd=999999</Set>
<Set>Rsp_Msg=计算代收手续费率下一个收费日期失败</Set>
<Continue/>
</Else>
<!-- 更新机构手续费率-->
<Exec func="PUB:ExecSql">
<Arg name="SqlCmd" value="UPD_CMMTMFEE" />
</Exec>
<If condition="~RetCod!=0">
<Set>TBNM=CMMTMFEE</Set>
<Set>Rsp_Cd=999999</Set>
<Set>Rsp_Msg=$TBNM</Set>
<Continue/>
</If>
<Delete>NEXT_FEE_DT</Delete>
</Macro>
<!--判断代付机构是否到达手续费结算日期-->
<Macro name="IsStlMod1PayCorgFeeStlDate">
<Set>Rsp_Msg=STRCAT($CORG_NO,判断代付手续费是否到了收费日期)</Set>
<!-- 支付类型 12:代付 -->
<Set>PAY_TYP=12</Set>
<!-- 订单类型 12:代付 -->
<Set>ORD_TYP=12</Set>
<!--查询收支两条线对应机构费率-->
<Call package="CORG" function="IS_STLMOD_1_CORG_NEXT_FEE_DATE_FUNC">
<Input>GWA|ORD_TYP|PAY_TYP|STL_DT|STL_MOD|CORG_NO|CORG_TYP|CORG_NM|</Input>
<Output>MSG_CD|FEE_PERD_UNIT|FEE_PERD_NUM|CORG_FEE_MOD|CORG_FEE_CAL_MTH|NEXT_FEE_DT|</Output>
</Call>
<!--手续费到了结算日期-->
<If condition="IS_EQUAL_STRING(SUBSTR(@O.MSG_CD,4,5),00000)">
<Set>Rsp_Cd=000000</Set>
<Set>Rsp_Msg=STRCAT($CORG_NO,对应的收付类型, $PAY_TYP,代付的收支两条线已经到了收费日期)</Set>
<!--手续费收费周期单位 0: 年 1: 月 2: 日-->
<Set>FEE_PERD_UNIT=@O.FEE_PERD_UNIT</Set>
<!--手续费收费同期数量-->
<Set>FEE_PERD_NUM=@O.FEE_PERD_NUM</Set>
<!--代付收费方式 0:不收取 1:实时单笔收取 2:单笔计算、按周期收取 3:按周期汇总计算并收取-->
<Set>CORG_FEE_MOD=@O.CORG_FEE_MOD</Set>
<!--1:按固定金额收取 2:按金额固定百分比收取-->
<Set>CORG_FEE_CAL_MTH=@O.CORG_FEE_CAL_MTH</Set>
<!--手续费结算日-->
<Set>NEXT_FEE_DT=@O.NEXT_FEE_DT</Set>
</If>
<ElseIf condition="IS_NOEQUAL_STRING(SUBSTR(@O.MSG_CD,4,5),11111)">
<Set>Rsp_Msg=STRCAT($CORG_NO,对应的收付类型, $PAY_TYP,代付的收支两条线机构在机构服务费费率表没有记录)</Set>
<!--手续费收费周期单位 0: 年 1: 月 2: 日-->
<Set>FEE_PERD_UNIT=@O.FEE_PERD_UNIT</Set>
<!--手续费收费同期数量-->
<Set>FEE_PERD_NUM=@O.FEE_PERD_NUM</Set>
<!--代付收费方式 0:不收取 1:实时单笔收取 2:单笔计算、按周期收取 3:按周期汇总计算并收取-->
<Set>CORG_FEE_MOD=@O.CORG_FEE_MOD</Set>
<!--1:按固定金额收取 2:按金额固定百分比收取-->
<Set>CORG_FEE_CAL_MTH=@O.CORG_FEE_CAL_MTH</Set>
<!--手续费结算日-->
<Set>NEXT_FEE_DT=@O.NEXT_FEE_DT</Set>
<!--代付成功笔数-->
<Set>TO_CORG_SUCC_CNT=0</Set>
<!--代付交易金额-->
<Set>TO_CORG_AMT=0</Set>
<!--代付手续费金额-->
<Set>TO_CORG_FEE_AMT=0</Set>
<!--代付机构净额-->
<Set>TO_CORG_STL_AMT=0</Set>
</ElseIf>
<ElseIf condition="IS_NOEQUAL_STRING(SUBSTR(@O.MSG_CD,4,5),22222)">
<Set>Rsp_Msg=STRCAT($CORG_NO,对应的收付类型, $PAY_TYP,代付的收支两条线机构没有到收费日期)</Set>
<!--手续费收费周期单位 0: 年 1: 月 2: 日-->
<Set>FEE_PERD_UNIT=@O.FEE_PERD_UNIT</Set>
<!--手续费收费同期数量-->
<Set>FEE_PERD_NUM=@O.FEE_PERD_NUM</Set>
<!--代付收费方式 0:不收取 1:实时单笔收取 2:单笔计算、按周期收取 3:按周期汇总计算并收取-->
<Set>CORG_FEE_MOD=@O.CORG_FEE_MOD</Set>
<!--1:按固定金额收取 2:按金额固定百分比收取-->
<Set>CORG_FEE_CAL_MTH=@O.CORG_FEE_CAL_MTH</Set>
<!--手续费结算日-->
<Set>NEXT_FEE_DT=@O.NEXT_FEE_DT</Set>
<!--代付成功笔数-->
<Set>TO_CORG_SUCC_CNT=0</Set>
<!--代付交易金额-->
<Set>TO_CORG_AMT=0</Set>
<!--代付手续费金额-->
<Set>TO_CORG_FEE_AMT=0</Set>
<!--代付机构净额-->
<Set>TO_CORG_STL_AMT=0</Set>
</ElseIf>
<Else>
<Set>MSG=@O.MSG_CD</Set>
<Set>Rsp_Cd=999999</Set>
<Set>Rsp_Msg=查询代付的收支两条线对应机构费率失败</Set>
<Continue/>
</Else>
</Macro>
<!--判断代付结算中心是否到达手续费结算日期-->
<Macro name="IsStlMod1PayCorgSZFSFeeStlDate">
<Set>Rsp_Msg=STRCAT($CORG_NO,判断代付手续费是否到了收费日期)</Set>
<!-- 支付类型 12:代付 -->
<Set>PAY_TYP=12</Set>
<!-- 订单类型 12:代付 -->
<Set>ORD_TYP=12</Set>
<Set>STL_TXN_TYP=$STL_TXN_TYP</Set>
<!--查询收支两条线对应机构费率-->
<Call package="CORG" function="IS_STLMOD_1_CORG_SZFS_NEXT_FEE_DATE_FUNC">
<Input>GWA|ORD_TYP|PAY_TYP|STL_DT|STL_MOD|CORG_NO|CORG_TYP|CORG_NM|STL_TXN_TYP|</Input>
<Output>MSG_CD|FEE_PERD_UNIT|FEE_PERD_NUM|CORG_FEE_MOD|CORG_FEE_CAL_MTH|NEXT_FEE_DT|</Output>
</Call>
<!--手续费到了结算日期-->
<If condition="IS_EQUAL_STRING(SUBSTR(@O.MSG_CD,4,5),00000)">
<Set>Rsp_Cd=000000</Set>
<Set>Rsp_Msg=STRCAT($CORG_NO,对应的收付类型, $PAY_TYP,对应的业务类型, $STL_TXN_TYP,代付的收支两条线已经到了收费日期)</Set>
<!--手续费收费周期单位 0: 年 1: 月 2: 日-->
<Set>FEE_PERD_UNIT=@O.FEE_PERD_UNIT</Set>
<!--手续费收费同期数量-->
<Set>FEE_PERD_NUM=@O.FEE_PERD_NUM</Set>
<!--代付收费方式 0:不收取 1:实时单笔收取 2:单笔计算、按周期收取 3:按周期汇总计算并收取-->
<Set>CORG_FEE_MOD=@O.CORG_FEE_MOD</Set>
<!--1:按固定金额收取 2:按金额固定百分比收取-->
<Set>CORG_FEE_CAL_MTH=@O.CORG_FEE_CAL_MTH</Set>
<!--手续费结算日-->
<Set>NEXT_FEE_DT=@O.NEXT_FEE_DT</Set>
</If>
<ElseIf condition="IS_NOEQUAL_STRING(SUBSTR(@O.MSG_CD,4,5),11111)">
<Set>Rsp_Msg=STRCAT($CORG_NO,对应的收付类型, $PAY_TYP,对应的业务类型, $STL_TXN_TYP,代付的收支两条线机构在机构服务费费率表没有记录)</Set>
<!--手续费收费周期单位 0: 年 1: 月 2: 日-->
<Set>FEE_PERD_UNIT=@O.FEE_PERD_UNIT</Set>
<!--手续费收费同期数量-->
<Set>FEE_PERD_NUM=@O.FEE_PERD_NUM</Set>
<!--代付收费方式 0:不收取 1:实时单笔收取 2:单笔计算、按周期收取 3:按周期汇总计算并收取-->
<Set>CORG_FEE_MOD=@O.CORG_FEE_MOD</Set>
<!--1:按固定金额收取 2:按金额固定百分比收取-->
<Set>CORG_FEE_CAL_MTH=@O.CORG_FEE_CAL_MTH</Set>
<!--手续费结算日-->
<Set>NEXT_FEE_DT=@O.NEXT_FEE_DT</Set>
<!--代付成功笔数-->
<Set>TO_CORG_SUCC_CNT=0</Set>
<!--代付交易金额-->
<Set>TO_CORG_AMT=0</Set>
<!--代付手续费金额-->
<Set>TO_CORG_FEE_AMT=0</Set>
<!--代付机构净额-->
<Set>TO_CORG_STL_AMT=0</Set>
</ElseIf>
<ElseIf condition="IS_NOEQUAL_STRING(SUBSTR(@O.MSG_CD,4,5),22222)">
<Set>Rsp_Msg=STRCAT($CORG_NO,对应的收付类型, $PAY_TYP,对应的业务类型, $STL_TXN_TYP,代付的收支两条线机构没有到收费日期)</Set>
<!--手续费收费周期单位 0: 年 1: 月 2: 日-->
<Set>FEE_PERD_UNIT=@O.FEE_PERD_UNIT</Set>
<!--手续费收费同期数量-->
<Set>FEE_PERD_NUM=@O.FEE_PERD_NUM</Set>
<!--代付收费方式 0:不收取 1:实时单笔收取 2:单笔计算、按周期收取 3:按周期汇总计算并收取-->
<Set>CORG_FEE_MOD=@O.CORG_FEE_MOD</Set>
<!--1:按固定金额收取 2:按金额固定百分比收取-->
<Set>CORG_FEE_CAL_MTH=@O.CORG_FEE_CAL_MTH</Set>
<!--手续费结算日-->
<Set>NEXT_FEE_DT=@O.NEXT_FEE_DT</Set>
<!--代付成功笔数-->
<Set>TO_CORG_SUCC_CNT=0</Set>
<!--代付交易金额-->
<Set>TO_CORG_AMT=0</Set>
<!--代付手续费金额-->
<Set>TO_CORG_FEE_AMT=0</Set>
<!--代付机构净额-->
<Set>TO_CORG_STL_AMT=0</Set>
</ElseIf>
<Else>
<Set>MSG=@O.MSG_CD</Set>
<Set>Rsp_Cd=999999</Set>
<Set>Rsp_Msg=查询代付的收支两条线对应机构费率失败</Set>
<Continue/>
</Else>
</Macro>
<!--收支两条线代付机构计算手续费-->
<Macro name="CalcStlMod1PayCorgFee">
<Set>Rsp_Msg=STRCAT($CORG_NO,对应的收付类型, $PAY_TYP,代付的收支两条线机构开始计算代收手续费)</Set>
<!-- 支付类型 12:代付 -->
<Set>PAY_TYP=12</Set>
<!-- 订单类型 12:代付 -->
<Set>ORD_TYP=12</Set>
<Set>CORG_FEE_MOD=$CORG_FEE_MOD</Set>
<!-- 计算代收的机构手续费 -->
<Call package="CORG" function="CAL_STLMOD_1_CORG_FEE_FUNC">
<Input>GWA|ORD_TYP|PAY_TYP|STL_DT|STL_MOD|NEXT_FEE_DT|CORG_NO|CORG_TYP|CORG_NM|CORG_FEE_MOD</Input>
<Output>MSG_CD|CORG_SUCC_CNT|CORG_AMT|CORG_FEE_AMT|</Output>
</Call>
<!--记录不存在-->
<If condition="IS_EQUAL_STRING(SUBSTR(@O.MSG_CD,4,5),22222)">
<!--代付成功笔数-->
<Set>TO_CORG_SUCC_CNT=@O.CORG_SUCC_CNT</Set>
<!--代付交易金额-->
<Set>TO_CORG_AMT=@O.CORG_AMT</Set>
<!--代付手续费金额-->
<Set>TO_CORG_FEE_AMT=@O.CORG_FEE_AMT</Set>
<Set>Rsp_Cd=222222</Set>
<Set>Rsp_Msg=代付机构清算明细表无数据,无需计算手续费</Set>
</If>
<ElseIf condition="IS_NOEQUAL_STRING(SUBSTR(@O.MSG_CD,4,5),00000)">
<Set>MSG=@O.MSG_CD</Set>
<Set>Rsp_Cd=999999</Set>
<Set>Rsp_Msg=计算代付机构手续费失败</Set>
<Continue/>
</ElseIf>
<Else>
<!--代付成功笔数-->
<Set>TO_CORG_SUCC_CNT=@O.CORG_SUCC_CNT</Set>
<!--代付交易金额-->
<Set>TO_CORG_AMT=@O.CORG_AMT</Set>
<!--代付手续费金额-->
<Set>TO_CORG_FEE_AMT=@O.CORG_FEE_AMT</Set>
</Else>
</Macro>
<!--收支两条线代付结算中心计算手续费-->
<Macro name="CalcStlMod1PayCorgSZFSFee">
<Set>Rsp_Msg=STRCAT($CORG_NO,对应的收付类型, $PAY_TYP,对应的业务类型, $STL_TXN_TYP,代付的收支两条线机构开始计算代收手续费)</Set>
<!-- 支付类型 12:代付 -->
<Set>PAY_TYP=12</Set>
<!-- 订单类型 12:代付 -->
<Set>ORD_TYP=12</Set>
<Set>CORG_FEE_MOD=$CORG_FEE_MOD</Set>
<Set>STL_TXN_TYP=$STL_TXN_TYP</Set>
<!-- 计算代收的机构手续费 -->
<Call package="CORG" function="CAL_STLMOD_1_CORG_SZFS_FEE_FUNC">
<Input>GWA|ORD_TYP|PAY_TYP|STL_DT|STL_MOD|NEXT_FEE_DT|CORG_NO|CORG_TYP|CORG_NM|CORG_FEE_MOD|STL_TXN_TYP|STL_ACC_TYP|STL_FEE_TYP|</Input>
<Output>MSG_CD|CORG_SUCC_CNT|CORG_AMT|CORG_FEE_AMT|</Output>
</Call>
<!--记录不存在-->
<If condition="IS_EQUAL_STRING(SUBSTR(@O.MSG_CD,4,5),22222)">
<!--代付成功笔数-->
<Set>TO_CORG_SUCC_CNT=@O.CORG_SUCC_CNT</Set>
<!--代付交易金额-->
<Set>TO_CORG_AMT=@O.CORG_AMT</Set>
<!--代付手续费金额-->
<Set>TO_CORG_FEE_AMT=@O.CORG_FEE_AMT</Set>
<Set>Rsp_Cd=222222</Set>
<Set>Rsp_Msg=代付机构清算明细表无数据,无需计算手续费</Set>
</If>
<ElseIf condition="IS_NOEQUAL_STRING(SUBSTR(@O.MSG_CD,4,5),00000)">
<Set>MSG=@O.MSG_CD</Set>
<Set>Rsp_Cd=999999</Set>
<Set>Rsp_Msg=计算代付机构手续费失败</Set>
<Continue/>
</ElseIf>
<Else>
<!--代付成功笔数-->
<Set>TO_CORG_SUCC_CNT=@O.CORG_SUCC_CNT</Set>
<!--代付交易金额-->
<Set>TO_CORG_AMT=@O.CORG_AMT</Set>
<!--代付手续费金额-->
<Set>TO_CORG_FEE_AMT=@O.CORG_FEE_AMT</Set>
</Else>
</Macro>
<!--更新代付机构下一个手续费结算日期-->
<Macro name="UpdStlMod1PayCorgNextFeeDate">
<Set>Rsp_Msg=STRCAT($CORG_NO,对应的收付类型, $PAY_TYP,更新代付机构下一个手续费结算日期)</Set>
<!--计算手续费的下一个结算日,按日-->
<If condition="INTCMP($FEE_PERD_UNIT,3,2)">
<Set>NEXT_FEE_DT=CALCDATE($NEXT_FEE_DT,+,d,$FEE_PERD_NUM)</Set>
</If>
<!--计算手续费的下一个结算日,按月-->
<ElseIf condition="INTCMP($FEE_PERD_UNIT,3,2)">
<Set>NEXT_FEE_DT=CALCDATE($NEXT_FEE_DT,+,m,$FEE_PERD_NUM)</Set>
</ElseIf>
<!--计算手续费的下一个结算日,按年-->
<ElseIf condition="INTCMP($FEE_PERD_UNIT,3,2)">
<Set>NEXT_FEE_DT=CALCDATE($NEXT_FEE_DT,+,y,$FEE_PERD_NUM)</Set>
</ElseIf>
<Else>
<!--@msg 计算商户结算日失败 -->
<Set>Rsp_Cd=999999</Set>
<Set>Rsp_Msg=计算代收手续费率下一个收费日期失败</Set>
<Continue/>
</Else>
<!-- 更新机构手续费率-->
<Exec func="PUB:ExecSql">
<Arg name="SqlCmd" value="UPD_CMMTMFEE" />
</Exec>
<If condition="~RetCod!=0">
<Set>TBNM=CMMTMFEE</Set>
<Set>Rsp_Cd=999999</Set>
<Set>Rsp_Msg=$TBNM</Set>
<Continue/>
</If>
<Delete>NEXT_FEE_DT</Delete>
</Macro>
<!--计算机构的代收代付的交易金额、手续费及交易净额-->
<Macro name="InsertCapAgtFee">
<Set>FEE_STL_DT=$STL_DT</Set>
<Exec func="PUB:InsertRecord" error="IGNORE">
<Arg name="TblNam" value="CAPAGTFEE"/>
</Exec>
<If condition="~RetCod=-1">
<Set>Rsp_Cd=999999</Set>
<Set>Rsp_Msg=插入CAPAGTFEE表失败</Set>
<Exec func="PUB:CmpSetMsg">
<Arg name="MsgCd" value="STL99999"/>
<Arg name="MsgDat" value="插入CAPAGTFEE表失败"/>
</Exec>
<Return/>
</If>
</Macro>
<Macro name="UpdCorgCapDayCtl">
<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>
<Else>
<Set>Rsp_Cd=000000</Set>
<Set>Rsp_Msg=更新系统清分控制表成功</Set>
<Exec func="PUB:GWAAddMsg">
<Arg name="MsgCd" value="STL00000" />
</Exec>
</Else>
</Macro>
<Macro name="CalcCorgAmtFee_BEN">
<Set>STL_STT_DT=$STL_DT</Set>
<!-- 计算协议付款日 = 当前会计日期 + 结算划款天数 -->
<Set>STL_END_DT=CALCDATE($STL_DT,+,d,$STL_TRF_DAYS)</Set>
<Delete>CORG_FEE_MOD</Delete>
<Delete>CORG_FEE_CAL_MTH</Delete>
<!-- 支付类型 11:代收 -->
<Set>PAY_TYP=11</Set>
<!-- 订单类型 11:代收 -->
<Set>ORD_TYP=11</Set>
<!--代收商户计算交易金额、手续费及交易净额-->
<!--根据对应订单类型查询代收代付商户清算明细表(手续费已清分)-->
<Exec func="PUB:ReadRecord" error="IGNORE">
<Arg name="SqlCmd" value="QrySUMJnl_BEN"/>
</Exec>
<If condition="~RetCod=2">
<Set>TO_CORG_SUCC_CNT=0</Set> <!-- 交易成功笔数 -->
<Set>TO_CORG_AMT=0</Set> <!-- 合作机构总金额-->
<Set>TO_CORG_FEE_AMT=0</Set> <!-- 合作机构手续费 -->
<Set>TO_CORG_STL_AMT=0</Set> <!-- 合作机构结算金额 -->
</If>
<ElseIf condition="~RetCod!=0">
<Set>Rsp_Cd=999999</Set>
<Set>Rsp_Msg=系统错误</Set>
<Return/>
</ElseIf>
<Else>
<Set>TO_CORG_STL_AMT=$TO_CORG_AMT</Set> <!-- 商户结算金额-->
<Set>CORG_CLR_FLG=1</Set>
<Set>CORG_CLR_DT=$GWA.AC_DT</Set>
<Exec func="PUB:ExecSql" error="IGNORE">
<Arg name="SqlCmd" value="UpdSUMJnl_BEN"/>
</Exec>
<If condition="~RetCod = -1">
<Set>Rsp_Cd=999999</Set>
<Set>Rsp_Msg=更新清分表失败</Set>
<Return/>
</If>
</Else>
<!--判断该合作机构的交易总金额是否为0-->
<If condition="DOUBLECMP($TO_CORG_AMT,4,0)">
<!--计算机构的代收的交易金额、手续费及交易净额-->
<Quote name="InsertCapStlAgt"/>
</If>
<!--删除关键域-->
<Delete>TO_CORG_AMT</Delete>
<Delete>TO_CORG_SUCC_CNT</Delete>
<Delete>TO_CORG_FEE_AMT</Delete>
<Delete>TO_CORG_STL_AMT</Delete>
<!-- 支付类型 11:代付 -->
<Set>PAY_TYP=12</Set>
<!-- 订单类型 11:代付 -->
<Set>ORD_TYP=12</Set>
<!--代收商户计算交易金额、手续费及交易净额-->
<!--根据对应订单类型查询代收代付商户清算明细表(手续费已清分)-->
<Exec func="PUB:ReadRecord" error="IGNORE">
<Arg name="SqlCmd" value="QrySUMJnl_BEN"/>
</Exec>
<If condition="~RetCod=2">
<Set>TO_CORG_SUCC_CNT=0</Set> <!-- 交易成功笔数 -->
<Set>TO_CORG_AMT=0</Set> <!-- 合作机构总金额-->
<Set>TO_CORG_FEE_AMT=0</Set> <!-- 合作机构手续费 -->
<Set>TO_CORG_STL_AMT=0</Set> <!-- 合作机构结算金额 -->
</If>
<ElseIf condition="~RetCod!=0">
<Set>Rsp_Cd=999999</Set>
<Set>Rsp_Msg=系统错误</Set>
<Return/>
</ElseIf>
<Else>
<Set>TO_CORG_STL_AMT=$TO_CORG_AMT</Set> <!-- 商户结算金额-->
<Set>CORG_CLR_FLG=1</Set>
<Set>CORG_CLR_DT=$GWA.AC_DT</Set>
<Exec func="PUB:ExecSql" error="IGNORE">
<Arg name="SqlCmd" value="UpdSUMJnl_BEN"/>
</Exec>
<If condition="~RetCod = -1">
<Set>Rsp_Cd=999999</Set>
<Set>Rsp_Msg=更新清分表失败</Set>
<Return/>
</If>
</Else>
<!--判断该合作机构的交易总金额是否为0-->
<If condition="DOUBLECMP($TO_CORG_AMT,4,0)">
<!--计算机构的代付的交易金额、手续费及交易净额-->
<Quote name="InsertCapStlAgt"/>
</If>
<!--删除关键域-->
<Delete>TO_CORG_AMT</Delete>
<Delete>TO_CORG_SUCC_CNT</Delete>
<Delete>TO_CORG_FEE_AMT</Delete>
<Delete>TO_CORG_STL_AMT</Delete>
<!--更新机构的下一个结算日期-->
<Quote name="UpdCorgNextStlDate"/>
</Macro>
</FrontTab>