1565 lines
64 KiB
XML
1565 lines
64 KiB
XML
<?xml version='1.0' encoding='UTF-8'?>
|
|
<Package>
|
|
|
|
<!-- 计算净额机构交易金额及手续费 -->
|
|
<Function name="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>
|
|
|
|
<!--机构SQL定义 -->
|
|
<Quote name="CORG_DYN_SQLSENTENCE" />
|
|
|
|
<Process>
|
|
<Set>TXN_DT=$STL_DT</Set>
|
|
|
|
<Set>STL_STT_DT=$STL_DT</Set>
|
|
<!-- 计算协议付款日 = 当前会计日期 + 结算划款天数 -->
|
|
<Set>STL_END_DT=CALCDATE($STL_DT,+,d,$STL_TRF_DAYS)</Set>
|
|
|
|
<!-- 查询机构服务费费率表 -->
|
|
<Exec func="PUB:ReadRecord">
|
|
<Arg name="SqlCmd" value="QRY_CMMTMFEE" />
|
|
</Exec>
|
|
<If condition="~RetCod=2">
|
|
<Set>CORG_SUCC_CNT=0</Set> <!-- 交易成功笔数 -->
|
|
<Set>CORG_AMT=0</Set> <!-- 机构总金额 -->
|
|
<Set>CORG_FEE_AMT=0</Set> <!-- 机构手续费 -->
|
|
<Set>CORG_STL_AMT=0</Set> <!-- 机构净额 -->
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="STL22222" />
|
|
<Arg name="MsgDat" value="STRCAT($CORG_NO,对应的收付类型, $PAY_TYP,在机构服务费费率表没有记录)" />
|
|
</Exec>
|
|
<Return />
|
|
</If>
|
|
<ElseIf condition="~RetCod!=0">
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="STL99999" />
|
|
<Arg name="MsgDat" value="STRCAT($CORG_NO,对应的收付类型, $PAY_TYP,查询机构服务费费率表失败)" />
|
|
</Exec>
|
|
<Return />
|
|
</ElseIf>
|
|
<!--收费方式 0:不收取 1:实时单笔收取 2:单笔计算、按周期收取 3:按周期汇总计算并收取 -->
|
|
<!--0:不收取 -->
|
|
<!--1:实时单笔收取 -->
|
|
<If condition="OR(INTCMP($CORG_FEE_MOD,3,0),INTCMP($CORG_FEE_MOD,3,1))">
|
|
<!--根据对应订单类型和机构号查询代收代付清算明细表(已清分) -->
|
|
<Exec func="PUB:ReadRecord" error="IGNORE">
|
|
<Arg name="SqlCmd" value="QRY_CORG_SUM_CLR_CAPSTLDTL" />
|
|
</Exec>
|
|
<If condition="~RetCod=2">
|
|
<Set>CORG_SUCC_CNT=0</Set> <!-- 交易成功笔数 -->
|
|
<Set>CORG_AMT=0</Set> <!-- 机构总金额 -->
|
|
<Set>CORG_FEE_AMT=0</Set> <!-- 机构手续费 -->
|
|
<Set>CORG_STL_AMT=0</Set> <!-- 机构净额 -->
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="STL22222" />
|
|
<Arg name="MsgDat" value="STRCAT($CORG_NO,对应的收付类型, $PAY_TYP,清算明细表已清分无数据)" />
|
|
</Exec>
|
|
<Return />
|
|
</If>
|
|
<ElseIf condition="~RetCod!=0">
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="STL99999" />
|
|
<Arg name="MsgDat"
|
|
value="STRCAT($CORG_NO,对应的收付类型, $PAY_TYP,代收代付清算明细表已清分查询失败)" />
|
|
</Exec>
|
|
<Return />
|
|
</ElseIf>
|
|
<Else>
|
|
<Set>CORG_SUCC_CNT=$TO_CORG_SUCC_CNT</Set> <!-- 交易成功笔数 -->
|
|
<Set>CORG_AMT=$TO_CORG_AMT</Set> <!-- 机构总金额 -->
|
|
<Set>CORG_FEE_AMT=$TO_CORG_FEE_AMT</Set> <!-- 机构手续费 -->
|
|
<Set>CORG_STL_AMT=$TO_CORG_STL_AMT</Set> <!-- 机构净额 -->
|
|
|
|
<!-- @msg 正常结束 -->
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="STL00000" />
|
|
<Arg name="MsgDat"
|
|
value="STRCAT($CORG_NO,对应的收付类型, $PAY_TYP,该收费方式为不收取或实时单笔收取,计算机构手续费成功)" />
|
|
</Exec>
|
|
</Else>
|
|
</If>
|
|
<!--2:单笔计算、按周期收取 -->
|
|
<If condition="INTCMP($CORG_FEE_MOD,3,2)">
|
|
<!--根据对应订单类型查询代收代付机构清算明细表(未清分)的流水号 -->
|
|
<Exec func="PUB:OpenCursor">
|
|
<Arg name="SqlCmd" value="QRY_CORG_NOTCLR_JRN_CAPSTLDTL" />
|
|
<Arg name="CursorName" value="QRY_CORG_NOTCLR_JRN_CAPSTLDTL" />
|
|
</Exec>
|
|
<While>
|
|
<Exec func="PUB:FetchCursor" error="IGNORE">
|
|
<Arg name="CursorName" value="QRY_CORG_NOTCLR_JRN_CAPSTLDTL" />
|
|
</Exec>
|
|
<If condition="~RetCod=2">
|
|
<Break />
|
|
</If>
|
|
<ElseIf condition="~RetCod<0">
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="STL99999" />
|
|
<Arg name="MsgDat"
|
|
value="STRCAT($CORG_NO,对应的收付类型, $PAY_TYP,查询代收代付清算明细表未清分的流水号交易失败)" />
|
|
</Exec>
|
|
<Exec func="PUB:CloseCursor">
|
|
<Arg name="CursorName" value="QRY_CORG_NOTCLR_JRN_CAPSTLDTL" />
|
|
</Exec>
|
|
<Return />
|
|
</ElseIf>
|
|
|
|
<!--计算合作机构手续费 -->
|
|
<Set>CORG_FEE_AMT=0</Set> <!-- 手续费 -->
|
|
<Set>INP_DAT.CORP_ORG=$CORG_NO</Set>
|
|
<Set>INP_DAT.CAP_TYP=1</Set>
|
|
<Set>INP_DAT.TX_MOD=0</Set>
|
|
<Set>INP_DAT.FEE_TYP=$ORD_TYP</Set>
|
|
<Set>INP_DAT.ORD_AMT=$TXN_AMT</Set>
|
|
<Set>INP_DAT.TXN_AMT=$TXN_AMT</Set>
|
|
<Set>INP_DAT.TOT_CALL_FLG=1</Set>
|
|
<Set>INP_DAT.RCV_AMT1=$TXN_AMT</Set>
|
|
<Set>INP_DAT.STL_MOD=$STL_MOD</Set>
|
|
|
|
<Exec func="CAP:ComputeOrgFee">
|
|
<Arg name="INP_DAT" value="INP_DAT" />
|
|
<Arg name="OUT_DAT" value="OUT_DAT" />
|
|
</Exec>
|
|
<If condition="IS_SUCC(@O.MSG_CD)=0">
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="STL99999" />
|
|
<Arg name="MsgDat"
|
|
value="STRCAT($CORG_NO,对应的收付类型, $PAY_TYP,单笔计算、按周期收取,计算合作机构手续费失败)" />
|
|
</Exec>
|
|
<Exec func="PUB:CloseCursor">
|
|
<Arg name="CursorName" value="QRY_CORG_NOTCLR_JRN_CAPSTLDTL" />
|
|
</Exec>
|
|
<Return />
|
|
</If>
|
|
|
|
<Set>CORG_FEE_AMT=$OUT_DAT.ORD_FEE</Set> <!-- 手续费 -->
|
|
<Set>CORG_FEE_MOD=$OUT_DAT.ORG_FEE_MOD</Set> <!-- 收费方式 -->
|
|
<Set>CORG_FEE_CAL_MTH=$OUT_DAT.FEE_CAL_MTH</Set> <!-- 费用计算依据 -->
|
|
|
|
<!--根据代收代付分类计算交易净额 -->
|
|
<!--代收:代机构收款,需要清算给机构的金额,交易净额=交易额-手续费 -->
|
|
<!--代付:代机构付款,交易净额=交易额+手续费 -->
|
|
<!-- 11 代收 -->
|
|
<If condition="INTCMP($PAY_TYP,3,11)">
|
|
<Set>CORG_STL_AMT=FSUB($TXN_AMT,$CORG_FEE_AMT,2)</Set> <!-- 实际清算到机构账金额 -->
|
|
</If>
|
|
<!-- 12 代付 -->
|
|
<Else>
|
|
<Set>CORG_STL_AMT=FADD($TXN_AMT,$CORG_FEE_AMT,2)</Set> <!-- 实际清算到机构账金额 -->
|
|
</Else>
|
|
|
|
<!--机构清分标志更改 -->
|
|
<!-- CORG_CLR_FLG 机构清分标志 0:未清分 1:已清分 -->
|
|
<Set>CORG_CLR_FLG=1</Set>
|
|
<!-- CORG_FEE_CLR_FLG 机构手续费清分标志 0:未清分 1:已清分 -->
|
|
<Set>CORG_FEE_CLR_FLG=1</Set>
|
|
<Set>CORG_FEE_CLR_DT=$GWA.AC_DT</Set>
|
|
<Set>CORG_CLR_DT=$GWA.AC_DT</Set>
|
|
<Set>CORG_FEE_DT=$GWA.AC_DT</Set>
|
|
<!-- 根据流水号更新清算明细表 -->
|
|
<Exec func="PUB:ExecSql">
|
|
<Arg name="SqlCmd" value="UPD_CORG_CLR_JRN_CAPSTLDTL" />
|
|
</Exec>
|
|
<If condition="~RetCod!=0">
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="STL99999" />
|
|
<Arg name="MsgDat" value="STRCAT($CORG_NO,对应的收付类型, $PAY_TYP,根据流水号更新清算明细表失败)" />
|
|
</Exec>
|
|
<Return />
|
|
</If>
|
|
|
|
<Delete>INP_DAT</Delete>
|
|
<Delete>OUT_DAT</Delete>
|
|
<Delete>TXN_AMT</Delete>
|
|
<Delete>LOG_NO</Delete>
|
|
</While>
|
|
<Exec func="PUB:CommitWork" />
|
|
<!--根据对应订单类型和机构号查询代收代付机构清算明细表(已清分) -->
|
|
<Exec func="PUB:ReadRecord" error="IGNORE">
|
|
<Arg name="SqlCmd" value="QRY_CORG_SUM_CLR_CAPSTLDTL" />
|
|
</Exec>
|
|
<If condition="~RetCod=2">
|
|
<Set>CORG_SUCC_CNT=0</Set> <!-- 机构交易成功笔数 -->
|
|
<Set>CORG_AMT=0</Set> <!-- 机构总金额 -->
|
|
<Set>CORG_FEE_AMT=0</Set> <!-- 机构手续费 -->
|
|
<Set>CORG_STL_AMT=0</Set> <!-- 机构交易净额 -->
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="STL22222" />
|
|
<Arg name="MsgDat" value="STRCAT($Corg_No,对应的收付类型, $PAY_TYP,清算明细表已清分无数据)" />
|
|
</Exec>
|
|
<Return />
|
|
</If>
|
|
<ElseIf condition="~RetCod!=0">
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="STL99999" />
|
|
<Arg name="MsgDat" value="STRCAT($CORG_NO,对应的收付类型, $PAY_TYP,清算明细表已清分查询失败)" />
|
|
</Exec>
|
|
<Return />
|
|
</ElseIf>
|
|
<Else>
|
|
<Set>CORG_SUCC_CNT=$TO_CORG_SUCC_CNT</Set> <!-- 交易成功笔数 -->
|
|
<Set>CORG_AMT=$TO_CORG_AMT</Set> <!-- 机构总金额 -->
|
|
<Set>CORG_FEE_AMT=$TO_CORG_FEE_AMT</Set> <!-- 机构手续费 -->
|
|
<Set>CORG_STL_AMT=$TO_CORG_STL_AMT</Set> <!-- 机构净额 -->
|
|
|
|
<!-- @msg 正常结束 -->
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="STL00000" />
|
|
<Arg name="MsgDat"
|
|
value="STRCAT($Corg_No,对应的收付类型, $PAY_TYP,该收费方式为单笔计算、按周期收取,计算机构手续费成功)" />
|
|
</Exec>
|
|
</Else>
|
|
|
|
</If>
|
|
<!---3: 按周期汇总收取 -->
|
|
<If condition="INTCMP($CORG_FEE_MOD,3,3)">
|
|
|
|
<!--根据对应订单类型查询代收代付清算明细表(未清分) -->
|
|
<Exec func="PUB:ReadRecord" error="IGNORE">
|
|
<Arg name="SqlCmd" value="QRY_CORG_SUM_NOTCLR_CAPSTLDTL" />
|
|
</Exec>
|
|
<If condition="~RetCod=2">
|
|
<Set>CORG_SUCC_CNT=0</Set> <!-- 交易成功笔数 -->
|
|
<Set>CORG_AMT=0</Set> <!-- 机构总金额 -->
|
|
<Set>CORG_FEE_AMT=0</Set> <!-- 机构手续费 -->
|
|
<Set>CORG_STL_AMT=0</Set> <!-- 机构净额 -->
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="STL22222" />
|
|
<Arg name="MsgDat" value="STRCAT($Corg_No,对应的收付类型, $PAY_TYP,清算明细表未清分无数据)" />
|
|
</Exec>
|
|
<Return />
|
|
</If>
|
|
<ElseIf condition="~RetCod!=0">
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="STL99999" />
|
|
<Arg name="MsgDat"
|
|
value="STRCAT($Corg_No,对应的收付类型, $PAY_TYP,代收代付清算明细表未清分查询失败)" />
|
|
</Exec>
|
|
<Return />
|
|
</ElseIf>
|
|
<Else>
|
|
<Set>CORG_SUCC_CNT=$TO_CORG_SUCC_CNT</Set> <!-- 交易成功笔数 -->
|
|
<Set>CORG_AMT=$TO_CORG_AMT</Set> <!-- 机构总金额 -->
|
|
</Else>
|
|
|
|
<!--交易成功笔数大于0 -->
|
|
<If condition="INTCMP($CORG_SUCC_CNT,6,0)">
|
|
<!--计算机构手续费 -->
|
|
<Set>TO_CORG_FEE_AMT=0</Set>
|
|
<Set>INP_DAT.CORP_ORG=$CORG_NO</Set>
|
|
<Set>INP_DAT.CAP_TYP=1</Set>
|
|
<Set>INP_DAT.TX_MOD=0</Set>
|
|
<Set>INP_DAT.FEE_TYP=$PAY_TYP</Set>
|
|
<Set>INP_DAT.TOT_ORD_AMT=$CORG_AMT</Set>
|
|
<Set>INP_DAT.TOT_ORD_CNT=$CORG_SUCC_CNT</Set>
|
|
<Set>INP_DAT.TOT_RCV_AMT1=$CORG_AMT</Set>
|
|
<Set>INP_DAT.TOT_RCV_CNT1=$CORG_SUCC_CNT</Set>
|
|
<Set>INP_DAT.TOT_CALL_FLG=2</Set>
|
|
<Set>INP_DAT.STL_MOD=$STL_MOD</Set>
|
|
|
|
<!--计算手续费 -->
|
|
<Exec func="CAP:ComputeOrgFee">
|
|
<Arg name="INP_DAT" value="INP_DAT" />
|
|
<Arg name="OUT_DAT" value="OUT_DAT" />
|
|
</Exec>
|
|
|
|
<If condition="IS_SUCC(@O.MSG_CD)=0">
|
|
<Set>MSG=@O.MSG_CD</Set>
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="STL99999" />
|
|
<Arg name="MsgDat"
|
|
value="STRCAT($Corg_No,对应的收付类型, $PAY_TYP,按周期汇总收取,计算手续费失败)" />
|
|
</Exec>
|
|
<Return />
|
|
</If>
|
|
|
|
<Set>TO_CORG_FEE_AMT=$OUT_DAT.ORD_FEE</Set> <!-- 手续费 -->
|
|
<Set>CORG_FEE_MOD=$OUT_DAT.ORG_FEE_MOD</Set> <!-- 收费方式 -->
|
|
<Set>CORG_FEE_CAL_MTH=$OUT_DAT.FEE_CAL_MTH</Set> <!-- 费用计算依据 -->
|
|
|
|
<!--根据代收代付分类计算交易净额 -->
|
|
<!--代收:代机构收款,需要清算给机构的金额,交易净额=交易额-手续费 -->
|
|
<!--代付:代机构付款,交易净额=交易额+手续费 -->
|
|
<!-- 11 代收 -->
|
|
<If condition="INTCMP($PAY_TYP,3,11)">
|
|
<Set>TO_CORG_STL_AMT=FSUB($CORG_AMT,$TO_CORG_FEE_AMT,2)</Set> <!-- 实际清算到机构账金额 -->
|
|
</If>
|
|
<!-- 12 代付 -->
|
|
<Else>
|
|
<Set>TO_CORG_STL_AMT=FADD($CORG_AMT,$TO_CORG_FEE_AMT,2)</Set> <!-- 实际清算到机构账金额 -->
|
|
</Else>
|
|
|
|
<Set>CORG_FEE_AMT=$TO_CORG_FEE_AMT</Set> <!-- 手续费 -->
|
|
<Set>CORG_STL_AMT=$TO_CORG_STL_AMT</Set> <!-- 净额 -->
|
|
|
|
<!--机构清分标志更改 -->
|
|
<!-- CORG_CLR_FLG 清分标志 0:未清分 1:已清分 -->
|
|
<Set>CORG_CLR_FLG=1</Set>
|
|
<!-- CORG_FEE_CLR_FLG 手续费清分标志 0:未清分 1:已清分 -->
|
|
<Set>CORG_FEE_CLR_FLG=1</Set>
|
|
<Set>CORG_FEE_CLR_DT=$GWA.AC_DT</Set>
|
|
<Set>CORG_CLR_DT=$GWA.AC_DT</Set>
|
|
<Set>CORG_FEE_DT=$GWA.AC_DT</Set>
|
|
<!-- 根据对应订单类型更新清算明细表 -->
|
|
<Exec func="PUB:ExecSql">
|
|
<Arg name="SqlCmd" value="UPD_CORG_NOTCLR_CAPSTLDTL" />
|
|
</Exec>
|
|
<If condition="~RetCod!=0">
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="STL99999" />
|
|
<Arg name="MsgDat" value="根据对应订单类型更新清算明细表失败" />
|
|
</Exec>
|
|
<Return />
|
|
</If>
|
|
</If>
|
|
<Else>
|
|
<Set>CORG_FEE_AMT=0</Set> <!-- 手续费 -->
|
|
<Set>CORG_STL_AMT=0</Set> <!-- 净额 -->
|
|
</Else>
|
|
|
|
<!-- @msg 正常结束 -->
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="STL00000" />
|
|
<Arg name="MsgDat" value="计算手续费成功" />
|
|
</Exec>
|
|
</If>
|
|
|
|
</Process>
|
|
</Function>
|
|
|
|
<Function name="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>
|
|
|
|
<!--机构SQL定义 -->
|
|
<Quote name="CORG_DYN_SQLSENTENCE" />
|
|
|
|
<Process>
|
|
<Set>TXN_DT=$STL_DT</Set>
|
|
<Set>STL_STT_DT=$STL_DT</Set>
|
|
<!-- 计算协议付款日 = 当前会计日期 + 结算划款天数 -->
|
|
<Set>STL_END_DT=CALCDATE($STL_DT,+,d,$STL_TRF_DAYS)</Set>
|
|
<!-- 初始化数据 -->
|
|
<Set>CORG_SUCC_CNT1=0</Set> <!-- 成功笔数 -->
|
|
<Set>CORG_AMT1=0</Set> <!-- 交易金额 -->
|
|
<Set>CORG_FEE_AMT1=0</Set> <!-- 手续费金额 -->
|
|
<Set>CORG_STL_AMT1=0</Set> <!-- 机构净额 -->
|
|
<Set>TXN_AMT1=0</Set> <!-- 交易金额 -->
|
|
<!-- 遍历机构服务费费率表 -->
|
|
<Exec func="PUB:OpenCursor"> <!-- 开启游标 -->
|
|
<Arg name="SqlCmd" value="QRY_CMMTMFEE" />
|
|
<Arg name="CursorName" value="CMMTMFEE_CURSOR" />
|
|
</Exec>
|
|
<If condition="~RetCod!=0">
|
|
<!-- @msg 遍历机构服务费费率表,开启游标失败 -->
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="STL99999" />
|
|
<Arg name="MsgDat" value="STRCAT($CORG_NO,对应的收付类型, $PAY_TYP,查询机构服务费费率表失败)" />
|
|
</Exec>
|
|
<Return />
|
|
</If>
|
|
<Set>G_FLG=0</Set>
|
|
<While>
|
|
<Exec func="PUB:FetchCursor"> <!-- 读取下一条记录 -->
|
|
<Arg name="CursorName" value="CMMTMFEE_CURSOR" />
|
|
</Exec>
|
|
<If condition="~RetCod=2"> <!-- 查无数据 -->
|
|
<If condition="INTCMP($G_FLG,3,0)">
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="STL22222" />
|
|
<Arg name="MsgDat" value="STRCAT($CORG_NO,对应的收付类型, $PAY_TYP,在机构服务费费率表没有记录)" />
|
|
</Exec>
|
|
<Return />
|
|
</If>
|
|
<Break />
|
|
</If>
|
|
<ElseIf condition="~RetCod!=0">
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="STL99999" />
|
|
<Arg name="MsgDat" value="STRCAT($CORG_NO,对应的收付类型, $PAY_TYP,查询机构服务费费率表失败)" />
|
|
</Exec>
|
|
<Return />
|
|
</ElseIf>
|
|
<Set>G_FLG=ADD($G_FLG,1)</Set>
|
|
<Set>STL_TXN_TYP=$STL_TXN_TYP</Set> <!-- 业务类型 -->
|
|
<If condition="IS_EQUAL_STRING($STL_TXN_TYP,1)"><!-- 批量 -->
|
|
<If condition="IS_EQUAL_STRING($PAY_TYP,11)">
|
|
<Set>TXN_MOD=01</Set> <!-- 批扣 -->
|
|
</If>
|
|
<ElseIf condition="IS_EQUAL_STRING($PAY_TYP,12)">
|
|
<Set>TXN_MOD=02</Set> <!-- 批付 -->
|
|
</ElseIf>
|
|
</If>
|
|
<Else>
|
|
<Set>TXN_MOD=99</Set> <!-- 单笔 -->
|
|
</Else>
|
|
<!--收费方式 0:不收取 1:实时单笔收取 2:单笔计算、按周期收取 3:按周期汇总计算并收取 -->
|
|
<!--0:不收取 -->
|
|
<!--1:实时单笔收取 -->
|
|
<If condition="OR(INTCMP($CORG_FEE_MOD,3,0),INTCMP($CORG_FEE_MOD,3,1))">
|
|
<!--根据对应订单类型和机构号查询代收代付清算明细表(已清分) -->
|
|
<If condition="IS_EQUAL_STRING($STL_TXN_TYP,1,2)"><!-- 1:批量 2单笔 -->
|
|
<Set>SQL_SENTC=QRY_CORG_SUM_CLR_CAPBATDTL</Set>
|
|
</If>
|
|
<ElseIf condition="IS_EQUAL_STRING($STL_TXN_TYP,3)"><!-- 3:账户验证 -->
|
|
<Set>SQL_SENTC=QRY_CORG_SUM_CLR_CAPVERDTL</Set>
|
|
</ElseIf>
|
|
<Else>
|
|
<Set>SQL_SENTC=QRY_CORG_SUM_CLR_CAPSTLDTL</Set>
|
|
</Else>
|
|
<Exec func="PUB:ReadRecord" error="IGNORE">
|
|
<Arg name="SqlCmd" value="$SQL_SENTC" />
|
|
</Exec>
|
|
<If condition="~RetCod=2">
|
|
<Set>CORG_SUCC_CNT=$CORG_SUCC_CNT1</Set> <!-- 交易成功笔数 -->
|
|
<Set>CORG_AMT=$CORG_AMT1</Set> <!-- 机构总金额 -->
|
|
<Set>CORG_FEE_AMT=$CORG_FEE_AMT1</Set> <!-- 机构手续费 -->
|
|
<Set>CORG_STL_AMT=$CORG_STL_AMT1</Set> <!-- 机构净额 -->
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="STL22222" />
|
|
<Arg name="MsgDat" value="STRCAT($CORG_NO,对应的收付类型, $PAY_TYP,清算明细表已清分无数据)" />
|
|
</Exec>
|
|
<Return />
|
|
</If>
|
|
<ElseIf condition="~RetCod!=0">
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="STL99999" />
|
|
<Arg name="MsgDat"
|
|
value="STRCAT($CORG_NO,对应的收付类型, $PAY_TYP,代收代付清算明细表已清分查询失败)" />
|
|
</Exec>
|
|
<Return />
|
|
</ElseIf>
|
|
<Else>
|
|
<Set>CORG_SUCC_CNT1=ADD($CORG_SUCC_CNT1,$TO_CORG_SUCC_CNT)</Set> <!-- 交易成功笔数 -->
|
|
<Set>CORG_AMT1=ADD($CORG_AMT1,$TO_CORG_AMT)</Set> <!-- 机构总金额 -->
|
|
<Set>CORG_FEE_AMT1=ADD($CORG_FEE_AMT1,$TO_CORG_FEE_AMT)</Set> <!-- 机构手续费 -->
|
|
<Set>CORG_STL_AMT1=ADD($CORG_STL_AMT1,$TO_CORG_STL_AMT)</Set> <!-- 机构净额 -->
|
|
<!-- @msg 正常结束 -->
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="STL00000" />
|
|
<Arg name="MsgDat"
|
|
value="STRCAT($CORG_NO,对应的收付类型, $PAY_TYP,该收费方式为不收取或实时单笔收取,计算机构手续费成功)" />
|
|
</Exec>
|
|
</Else>
|
|
</If>
|
|
<!--2:单笔计算、按周期收取 -->
|
|
<If condition="INTCMP($CORG_FEE_MOD,3,2)">
|
|
<!--根据对应订单类型和机构号查询代收代付清算明细表(已清分) -->
|
|
<If condition="IS_EQUAL_STRING($STL_TXN_TYP,1,2)"><!-- 1:批量 2单笔 -->
|
|
<Set>SQL_SENTC=QRY_CORG_NOTCLR_JRN_CAPBATDTL</Set>
|
|
</If>
|
|
<ElseIf condition="IS_EQUAL_STRING($STL_TXN_TYP,3)"><!-- 3:账户验证 -->
|
|
<Set>SQL_SENTC=QRY_CORG_NOTCLR_JRN_CAPVERDTL</Set>
|
|
</ElseIf>
|
|
<Else>
|
|
<Set>SQL_SENTC=QRY_CORG_NOTCLR_JRN_CAPSTLDTL</Set>
|
|
</Else>
|
|
<!--根据对应订单类型查询代收代付机构清算明细表(未清分)的流水号 -->
|
|
<Exec func="PUB:OpenCursor">
|
|
<Arg name="SqlCmd" value="$SQL_SENTC" />
|
|
<Arg name="CursorName" value="QRY_CORG_NOTCLR_JRN_CAPSTLDTL" />
|
|
</Exec>
|
|
<While>
|
|
<Exec func="PUB:FetchCursor" error="IGNORE">
|
|
<Arg name="CursorName" value="QRY_CORG_NOTCLR_JRN_CAPSTLDTL" />
|
|
</Exec>
|
|
<If condition="~RetCod=2">
|
|
<Break />
|
|
</If>
|
|
<ElseIf condition="~RetCod<0">
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="STL99999" />
|
|
<Arg name="MsgDat"
|
|
value="STRCAT($CORG_NO,对应的收付类型, $PAY_TYP,查询代收代付清算明细表未清分的流水号交易失败)" />
|
|
</Exec>
|
|
<Exec func="PUB:CloseCursor">
|
|
<Arg name="CursorName" value="QRY_CORG_NOTCLR_JRN_CAPSTLDTL" />
|
|
</Exec>
|
|
<Return />
|
|
</ElseIf>
|
|
|
|
<!--计算合作机构手续费 -->
|
|
<Set>CORG_FEE_AMT=0</Set> <!-- 手续费 -->
|
|
<Set>INP_DAT.CORP_ORG=$CORG_NO</Set>
|
|
<Set>INP_DAT.CAP_TYP=1</Set>
|
|
<Set>INP_DAT.TX_MOD=0</Set>
|
|
<Set>INP_DAT.FEE_TYP=$ORD_TYP</Set>
|
|
<Set>INP_DAT.ORD_AMT=$TXN_AMT</Set>
|
|
<Set>INP_DAT.TXN_AMT=$TXN_AMT</Set>
|
|
<Set>INP_DAT.TOT_CALL_FLG=1</Set>
|
|
<Set>INP_DAT.RCV_AMT1=$TXN_AMT</Set>
|
|
<Set>INP_DAT.STL_TXN_TYP=$STL_TXN_TYP</Set>
|
|
<Set>INP_DAT.STL_ACC_TYP=$STL_ACC_TYP</Set>
|
|
<Set>INP_DAT.STL_FEE_TYP=$STL_FEE_TYP</Set>
|
|
<Set>INP_DAT.STL_MOD=$STL_MOD</Set>
|
|
<Exec func="CAP:ComputeOrgFee">
|
|
<Arg name="INP_DAT" value="INP_DAT" />
|
|
<Arg name="OUT_DAT" value="OUT_DAT" />
|
|
</Exec>
|
|
<If condition="IS_SUCC(@O.MSG_CD)=0">
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="STL99999" />
|
|
<Arg name="MsgDat"
|
|
value="STRCAT($CORG_NO,对应的收付类型, $PAY_TYP,单笔计算、按周期收取,计算合作机构手续费失败)" />
|
|
</Exec>
|
|
<Exec func="PUB:CloseCursor">
|
|
<Arg name="CursorName" value="QRY_CORG_NOTCLR_JRN_CAPSTLDTL" />
|
|
</Exec>
|
|
<Return />
|
|
</If>
|
|
|
|
<Set>CORG_FEE_AMT=$OUT_DAT.ORD_FEE</Set> <!-- 手续费 -->
|
|
<Set>CORG_FEE_MOD=$OUT_DAT.ORG_FEE_MOD</Set> <!-- 收费方式 -->
|
|
<Set>CORG_FEE_CAL_MTH=$OUT_DAT.FEE_CAL_MTH</Set> <!-- 费用计算依据 -->
|
|
|
|
<!--根据代收代付分类计算交易净额 -->
|
|
<!--代收:代机构收款,需要清算给机构的金额,交易净额=交易额-手续费 -->
|
|
<!--代付:代机构付款,交易净额=交易额+手续费 -->
|
|
<!-- 11 代收 -->
|
|
<If condition="INTCMP($PAY_TYP,3,11)">
|
|
<Set>CORG_STL_AMT=FSUB($TXN_AMT,$CORG_FEE_AMT,2)</Set> <!-- 实际清算到机构账金额 -->
|
|
</If>
|
|
<!-- 12 代付 -->
|
|
<Else>
|
|
<Set>CORG_STL_AMT=FADD($TXN_AMT,$CORG_FEE_AMT,2)</Set> <!-- 实际清算到机构账金额 -->
|
|
</Else>
|
|
|
|
<!--机构清分标志更改 -->
|
|
<!-- CORG_CLR_FLG 机构清分标志 0:未清分 1:已清分 -->
|
|
<Set>CORG_CLR_FLG=1</Set>
|
|
<!-- CORG_FEE_CLR_FLG 机构手续费清分标志 0:未清分 1:已清分 -->
|
|
<Set>CORG_FEE_CLR_FLG=1</Set>
|
|
<Set>CORG_FEE_CLR_DT=$GWA.AC_DT</Set>
|
|
<Set>CORG_CLR_DT=$GWA.AC_DT</Set>
|
|
<Set>CORG_FEE_DT=$GWA.AC_DT</Set>
|
|
<Set>STL_VER=0</Set>
|
|
<If condition="IS_EQUAL_STRING($STL_TXN_TYP,3)">
|
|
<Set>STL_VER=1</Set>
|
|
</If>
|
|
<!-- 根据流水号更新清算明细表 -->
|
|
<Exec func="PUB:ExecSql">
|
|
<Arg name="SqlCmd" value="UPD_CORG_CLR_JRN_CAPSTLDTL" />
|
|
</Exec>
|
|
<If condition="~RetCod!=0">
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="STL99999" />
|
|
<Arg name="MsgDat"
|
|
value="STRCAT($CORG_NO,对应的收付类型, $PAY_TYP,根据流水号更新清算明细表失败)" />
|
|
</Exec>
|
|
<Return />
|
|
</If>
|
|
|
|
<Delete>INP_DAT</Delete>
|
|
<Delete>OUT_DAT</Delete>
|
|
<Delete>TXN_AMT</Delete>
|
|
<Delete>LOG_NO</Delete>
|
|
</While>
|
|
<Exec func="PUB:CommitWork" />
|
|
<!--根据对应订单类型和机构号查询代收代付机构清算明细表(已清分) -->
|
|
<Exec func="PUB:ReadRecord" error="IGNORE">
|
|
<Arg name="SqlCmd" value="QRY_CORG_SUM_CLR_CAPSTLDTL" />
|
|
</Exec>
|
|
<If condition="~RetCod=2">
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="STL22222" />
|
|
<Arg name="MsgDat" value="STRCAT($Corg_No,对应的收付类型, $PAY_TYP,清算明细表已清分无数据)" />
|
|
</Exec>
|
|
<Return />
|
|
</If>
|
|
<ElseIf condition="~RetCod!=0">
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="STL99999" />
|
|
<Arg name="MsgDat" value="STRCAT($CORG_NO,对应的收付类型, $PAY_TYP,清算明细表已清分查询失败)" />
|
|
</Exec>
|
|
<Return />
|
|
</ElseIf>
|
|
<Else>
|
|
<Set>CORG_SUCC_CNT1=ADD($CORG_SUCC_CNT1,$TO_CORG_SUCC_CNT)</Set> <!-- 交易成功笔数 -->
|
|
<Set>CORG_AMT1=ADD($CORG_AMT1,$TO_CORG_AMT)</Set> <!-- 机构总金额 -->
|
|
<Set>CORG_FEE_AMT1=ADD($CORG_FEE_AMT1,$TO_CORG_FEE_AMT)</Set> <!-- 机构手续费 -->
|
|
<Set>CORG_STL_AMT1=ADD($CORG_STL_AMT1,$TO_CORG_STL_AMT)</Set> <!-- 机构净额 -->
|
|
<!-- @msg 正常结束 -->
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="STL00000" />
|
|
<Arg name="MsgDat"
|
|
value="STRCAT($Corg_No,对应的收付类型, $PAY_TYP,该收费方式为单笔计算、按周期收取,计算机构手续费成功)" />
|
|
</Exec>
|
|
</Else>
|
|
|
|
</If>
|
|
<!---3: 按周期汇总收取 -->
|
|
<If condition="INTCMP($CORG_FEE_MOD,3,3)">
|
|
<If condition="IS_EQUAL_STRING($STL_TXN_TYP,1,2)"><!-- 1:批量 2单笔 -->
|
|
<Set>SQL_SENTC=QRY_CORG_SUM_NOTCLR_CAPBATDTL</Set>
|
|
</If>
|
|
<ElseIf condition="IS_EQUAL_STRING($STL_TXN_TYP,3)"><!-- 3:账户验证 -->
|
|
<Set>SQL_SENTC=QRY_CORG_SUM_NOTCLR_CAPVERDTL</Set>
|
|
</ElseIf>
|
|
<Else>
|
|
<Set>SQL_SENTC=QRY_CORG_SUM_NOTCLR_CAPSTLDTL</Set>
|
|
</Else>
|
|
<!--根据对应订单类型查询代收代付清算明细表(未清分) -->
|
|
<Exec func="PUB:ReadRecord" error="IGNORE">
|
|
<Arg name="SqlCmd" value="$SQL_SENTC" />
|
|
</Exec>
|
|
<If condition="~RetCod=2">
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="STL22222" />
|
|
<Arg name="MsgDat" value="STRCAT($Corg_No,对应的收付类型, $PAY_TYP,清算明细表未清分无数据)" />
|
|
</Exec>
|
|
<Return />
|
|
</If>
|
|
<ElseIf condition="~RetCod!=0">
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="STL99999" />
|
|
<Arg name="MsgDat"
|
|
value="STRCAT($Corg_No,对应的收付类型, $PAY_TYP,代收代付清算明细表未清分查询失败)" />
|
|
</Exec>
|
|
<Return />
|
|
</ElseIf>
|
|
<Else>
|
|
<Set>CORG_SUCC_CNT=$TO_CORG_SUCC_CNT</Set> <!-- 交易成功笔数 -->
|
|
<Set>CORG_AMT=$TO_CORG_AMT</Set> <!-- 机构总金额 -->
|
|
</Else>
|
|
|
|
<!--交易成功笔数大于0 -->
|
|
<If condition="INTCMP($CORG_SUCC_CNT,6,0)">
|
|
<!--计算机构手续费 -->
|
|
<Set>TO_CORG_FEE_AMT=0</Set>
|
|
<Set>INP_DAT.CORP_ORG=$CORG_NO</Set>
|
|
<Set>INP_DAT.CAP_TYP=1</Set>
|
|
<Set>INP_DAT.TX_MOD=0</Set>
|
|
<Set>INP_DAT.FEE_TYP=$PAY_TYP</Set>
|
|
<Set>INP_DAT.TOT_ORD_AMT=$CORG_AMT</Set>
|
|
<Set>INP_DAT.TOT_ORD_CNT=$CORG_SUCC_CNT</Set>
|
|
<Set>INP_DAT.TOT_RCV_AMT1=$CORG_AMT</Set>
|
|
<Set>INP_DAT.TOT_RCV_CNT1=$CORG_SUCC_CNT</Set>
|
|
<Set>INP_DAT.TOT_CALL_FLG=2</Set>
|
|
<Set>INP_DAT.STL_TXN_TYP=$STL_TXN_TYP</Set>
|
|
<Set>INP_DAT.STL_ACC_TYP=$STL_ACC_TYP</Set>
|
|
<Set>INP_DAT.STL_FEE_TYP=$STL_FEE_TYP</Set>
|
|
<Set>INP_DAT.STL_MOD=$STL_MOD</Set>
|
|
<!--计算手续费 -->
|
|
<Exec func="CAP:ComputeOrgFee">
|
|
<Arg name="INP_DAT" value="INP_DAT" />
|
|
<Arg name="OUT_DAT" value="OUT_DAT" />
|
|
</Exec>
|
|
|
|
<If condition="IS_SUCC(@O.MSG_CD)=0">
|
|
<Set>MSG=@O.MSG_CD</Set>
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="STL99999" />
|
|
<Arg name="MsgDat"
|
|
value="STRCAT($Corg_No,对应的收付类型, $PAY_TYP,按周期汇总收取,计算手续费失败)" />
|
|
</Exec>
|
|
<Return />
|
|
</If>
|
|
|
|
<Set>TO_CORG_FEE_AMT=$OUT_DAT.ORD_FEE</Set> <!-- 手续费 -->
|
|
<Set>CORG_FEE_MOD=$OUT_DAT.ORG_FEE_MOD</Set> <!-- 收费方式 -->
|
|
<Set>CORG_FEE_CAL_MTH=$OUT_DAT.FEE_CAL_MTH</Set> <!-- 费用计算依据 -->
|
|
|
|
<!--根据代收代付分类计算交易净额 -->
|
|
<!--代收:代机构收款,需要清算给机构的金额,交易净额=交易额-手续费 -->
|
|
<!--代付:代机构付款,交易净额=交易额+手续费 -->
|
|
<!-- 11 代收 -->
|
|
<If condition="INTCMP($PAY_TYP,3,11)">
|
|
<Set>TO_CORG_STL_AMT=FSUB($CORG_AMT,$TO_CORG_FEE_AMT,2)</Set> <!-- 实际清算到机构账金额 -->
|
|
</If>
|
|
<!-- 12 代付 -->
|
|
<Else>
|
|
<Set>TO_CORG_STL_AMT=FADD($CORG_AMT,$TO_CORG_FEE_AMT,2)</Set> <!-- 实际清算到机构账金额 -->
|
|
</Else>
|
|
|
|
<Set>CORG_SUCC_CNT1=ADD($CORG_SUCC_CNT1,$TO_CORG_SUCC_CNT)</Set> <!-- 交易成功笔数 -->
|
|
<Set>CORG_AMT1=ADD($CORG_AMT1,$TO_CORG_AMT)</Set> <!-- 机构总金额 -->
|
|
<Set>CORG_FEE_AMT1=ADD($CORG_FEE_AMT1,$TO_CORG_FEE_AMT)</Set> <!-- 机构手续费 -->
|
|
<Set>CORG_STL_AMT1=ADD($CORG_STL_AMT1,$TO_CORG_STL_AMT)</Set> <!-- 机构净额 -->
|
|
|
|
<Set>CORG_AMT=$TO_CORG_AMT</Set>
|
|
<Set>CORG_FEE_AMT=$TO_CORG_FEE_AMT</Set>
|
|
<Set>CORG_STL_AMT=$CORG_STL_AMT</Set>
|
|
<!--机构清分标志更改 -->
|
|
<!-- CORG_CLR_FLG 清分标志 0:未清分 1:已清分 -->
|
|
<Set>CORG_CLR_FLG=1</Set>
|
|
<!-- CORG_FEE_CLR_FLG 手续费清分标志 0:未清分 1:已清分 -->
|
|
<Set>CORG_FEE_CLR_FLG=1</Set>
|
|
<Set>CORG_FEE_CLR_DT=$GWA.AC_DT</Set>
|
|
<Set>CORG_CLR_DT=$GWA.AC_DT</Set>
|
|
<Set>CORG_FEE_DT=$GWA.AC_DT</Set>
|
|
<If condition="IS_EQUAL_STRING($STL_TXN_TYP,1,2)">
|
|
<Set>SQL_SENTC=UPD_CORG_NOTCLR_CAPBATDTL</Set>
|
|
</If>
|
|
<ElseIf condition="IS_EQUAL_STRING($STL_TXN_TYP,3)"><!-- 3:账户验证 -->
|
|
<Set>SQL_SENTC=UPD_CORG_NOTCLR_CAPVERDTL</Set>
|
|
</ElseIf>
|
|
<Else>
|
|
<Set>SQL_SENTC=UPD_CORG_NOTCLR_CAPSTLDTL</Set>
|
|
</Else>
|
|
<!-- 根据对应订单类型更新清算明细表 -->
|
|
<Exec func="PUB:ExecSql">
|
|
<Arg name="SqlCmd" value="$SQL_SENTC" />
|
|
</Exec>
|
|
<If condition="~RetCod!=0">
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="STL99999" />
|
|
<Arg name="MsgDat" value="根据对应订单类型更新清算明细表失败" />
|
|
</Exec>
|
|
<Return />
|
|
</If>
|
|
</If>
|
|
<Else>
|
|
<Set>CORG_FEE_AMT=0</Set> <!-- 手续费 -->
|
|
<Set>CORG_STL_AMT=0</Set> <!-- 净额 -->
|
|
</Else>
|
|
|
|
<!-- @msg 正常结束 -->
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="STL00000" />
|
|
<Arg name="MsgDat" value="计算手续费成功" />
|
|
</Exec>
|
|
</If>
|
|
</While>
|
|
<Set>CORG_SUCC_CNT=$CORG_SUCC_CNT1</Set> <!-- 交易成功笔数 -->
|
|
<Set>CORG_AMT=$CORG_AMT1</Set> <!-- 机构总金额 -->
|
|
<Set>CORG_FEE_AMT=$CORG_FEE_AMT1</Set> <!-- 机构手续费 -->
|
|
<Set>CORG_STL_AMT=$CORG_STL_AMT1</Set> <!-- 机构净额 -->
|
|
</Process>
|
|
</Function>
|
|
|
|
<!-- 判断机构手续费是否到了收费日期 -->
|
|
<Function name="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>
|
|
|
|
<!--机构SQL定义 -->
|
|
<Quote name="CORG_DYN_SQLSENTENCE" />
|
|
|
|
<Process>
|
|
|
|
<!-- 查询机构服务费费率表 -->
|
|
<Exec func="PUB:ReadRecord">
|
|
<Arg name="SqlCmd" value="QRY_CMMTMFEE" />
|
|
</Exec>
|
|
<If condition="~RetCod=2">
|
|
<!--手续费收费周期单位 0: 年 1: 月 2: 日 -->
|
|
<Set>FEE_PERD_UNIT=NULL</Set>
|
|
<!--手续费收费同期数量 -->
|
|
<Set>FEE_PERD_NUM=NULL</Set>
|
|
<!--代收收费方式 0:不收取 1:实时单笔收取 2:单笔计算、按周期收取 3:按周期汇总计算并收取 -->
|
|
<Set>CORG_FEE_MOD=NULL</Set>
|
|
<!--1:按固定金额收取 2:按金额固定百分比收取 -->
|
|
<Set>CORG_FEE_CAL_MTH=NULL</Set>
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="STL11111" />
|
|
<Arg name="MsgDat" value="STRCAT($CORG_NO,对应的收付类型, $PAY_TYP,在机构服务费费率表没有记录)" />
|
|
</Exec>
|
|
<Return />
|
|
</If>
|
|
<ElseIf condition="~RetCod!=0">
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="STL99999" />
|
|
<Arg name="MsgDat" value="STRCAT($CORG_NO,对应的收付类型, $PAY_TYP,查询机构服务费费率表失败)" />
|
|
</Exec>
|
|
<Return />
|
|
</ElseIf>
|
|
|
|
<!--判断该费率日是否到收费日期 -->
|
|
<If condition="INTCMP($STL_DT,1,$NEXT_FEE_DT)">
|
|
<!--手续费收费周期单位 0: 年 1: 月 2: 日 -->
|
|
<Set>FEE_PERD_UNIT=NULL</Set>
|
|
<!--手续费收费同期数量 -->
|
|
<Set>FEE_PERD_NUM=NULL</Set>
|
|
<!--代收收费方式 0:不收取 1:实时单笔收取 2:单笔计算、按周期收取 3:按周期汇总计算并收取 -->
|
|
<Set>CORG_FEE_MOD=NULL</Set>
|
|
<!--1:按固定金额收取 2:按金额固定百分比收取 -->
|
|
<Set>CORG_FEE_CAL_MTH=NULL</Set>
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="STL22222" />
|
|
<Arg name="MsgDat" value="STRCAT($CORG_NO,对应的收付类型, $PAY_TYP,收支两条线机构没有到收费日期)" />
|
|
</Exec>
|
|
<Return />
|
|
</If>
|
|
<!--到了该收手续费 -->
|
|
<Else>
|
|
<!--手续费收费周期单位 0: 年 1: 月 2: 日 -->
|
|
<Set>FEE_PERD_UNIT=$FEE_PERD_UNIT</Set>
|
|
<!--手续费收费同期数量 -->
|
|
<Set>FEE_PERD_NUM=$FEE_PERD_NUM</Set>
|
|
<!--代收收费方式 0:不收取 1:实时单笔收取 2:单笔计算、按周期收取 3:按周期汇总计算并收取 -->
|
|
<Set>CORG_FEE_MOD=$CORG_FEE_MOD</Set>
|
|
<!--1:按固定金额收取 2:按金额固定百分比收取 -->
|
|
<Set>CORG_FEE_CAL_MTH=$CORG_FEE_CAL_MTH</Set>
|
|
<!--手续费结算日 -->
|
|
<Set>NEXT_FEE_DT=$NEXT_FEE_DT</Set>
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="STL00000" />
|
|
<Arg name="MsgDat" value="STRCAT($CORG_NO,对应的收付类型, $PAY_TYP,收支两条线机构已经到收费日期)" />
|
|
</Exec>
|
|
</Else>
|
|
|
|
</Process>
|
|
|
|
</Function>
|
|
|
|
<!-- 判断结算中心手续费是否到了收费日期 -->
|
|
<Function name="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>
|
|
|
|
<!--机构SQL定义 -->
|
|
<Quote name="CORG_DYN_SQLSENTENCE" />
|
|
|
|
<Process>
|
|
<Set>STL_TXN_TYP=$STL_TXN_TYP</Set>
|
|
|
|
<!-- 查询机构服务费费率表 -->
|
|
<Exec func="PUB:ReadRecord">
|
|
<Arg name="SqlCmd" value="QRY_CMMTMFEE1" />
|
|
</Exec>
|
|
<If condition="~RetCod=2">
|
|
<!--手续费收费周期单位 0: 年 1: 月 2: 日 -->
|
|
<Set>FEE_PERD_UNIT=NULL</Set>
|
|
<!--手续费收费同期数量 -->
|
|
<Set>FEE_PERD_NUM=NULL</Set>
|
|
<!--代收收费方式 0:不收取 1:实时单笔收取 2:单笔计算、按周期收取 3:按周期汇总计算并收取 -->
|
|
<Set>CORG_FEE_MOD=NULL</Set>
|
|
<!--1:按固定金额收取 2:按金额固定百分比收取 -->
|
|
<Set>CORG_FEE_CAL_MTH=NULL</Set>
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="STL11111" />
|
|
<Arg name="MsgDat"
|
|
value="STRCAT($CORG_NO,对应的收付类型, $PAY_TYP,对应的业务类型,$STL_TXN_TYP,在机构服务费费率表没有记录)" />
|
|
</Exec>
|
|
<Return />
|
|
</If>
|
|
<ElseIf condition="~RetCod!=0">
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="STL99999" />
|
|
<Arg name="MsgDat"
|
|
value="STRCAT($CORG_NO,对应的收付类型, $PAY_TYP,对应的业务类型,$STL_TXN_TYP,查询机构服务费费率表失败)" />
|
|
</Exec>
|
|
<Return />
|
|
</ElseIf>
|
|
|
|
<!--判断该费率日是否到收费日期 -->
|
|
<If condition="INTCMP($STL_DT,1,$NEXT_FEE_DT)">
|
|
<!--手续费收费周期单位 0: 年 1: 月 2: 日 -->
|
|
<Set>FEE_PERD_UNIT=NULL</Set>
|
|
<!--手续费收费同期数量 -->
|
|
<Set>FEE_PERD_NUM=NULL</Set>
|
|
<!--代收收费方式 0:不收取 1:实时单笔收取 2:单笔计算、按周期收取 3:按周期汇总计算并收取 -->
|
|
<Set>CORG_FEE_MOD=NULL</Set>
|
|
<!--1:按固定金额收取 2:按金额固定百分比收取 -->
|
|
<Set>CORG_FEE_CAL_MTH=NULL</Set>
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="STL22222" />
|
|
<Arg name="MsgDat"
|
|
value="STRCAT($CORG_NO,对应的收付类型, $PAY_TYP,对应的业务类型,$STL_TXN_TYP,收支两条线机构没有到收费日期)" />
|
|
</Exec>
|
|
<Return />
|
|
</If>
|
|
<!--到了该收手续费 -->
|
|
<Else>
|
|
<!--手续费收费周期单位 0: 年 1: 月 2: 日 -->
|
|
<Set>FEE_PERD_UNIT=$FEE_PERD_UNIT</Set>
|
|
<!--手续费收费同期数量 -->
|
|
<Set>FEE_PERD_NUM=$FEE_PERD_NUM</Set>
|
|
<!--代收收费方式 0:不收取 1:实时单笔收取 2:单笔计算、按周期收取 3:按周期汇总计算并收取 -->
|
|
<Set>CORG_FEE_MOD=$CORG_FEE_MOD</Set>
|
|
<!--1:按固定金额收取 2:按金额固定百分比收取 -->
|
|
<Set>CORG_FEE_CAL_MTH=$CORG_FEE_CAL_MTH</Set>
|
|
<!--手续费结算日 -->
|
|
<Set>NEXT_FEE_DT=$NEXT_FEE_DT</Set>
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="STL00000" />
|
|
<Arg name="MsgDat"
|
|
value="STRCAT($CORG_NO,对应的收付类型, $PAY_TYP,对应的业务类型,$STL_TXN_TYP,收支两条线机构已经到收费日期)" />
|
|
</Exec>
|
|
</Else>
|
|
|
|
</Process>
|
|
|
|
</Function>
|
|
|
|
|
|
<!-- 计算收支两条线的机构的手续费 -->
|
|
<Function name="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>
|
|
|
|
<!--机构SQL定义 -->
|
|
<Quote name="CORG_DYN_SQLSENTENCE" />
|
|
|
|
<Process>
|
|
<Set>TXN_DT=$STL_DT</Set>
|
|
|
|
<!--计算合作机构手续费下一个结算日 -->
|
|
<Set>INP_DAT.CORP_ORG=$CORG_NO</Set>
|
|
<Set>INP_DAT.CAP_TYP=1</Set>
|
|
<Set>INP_DAT.TX_MOD=0</Set>
|
|
<Set>INP_DAT.FEE_TYP=$PAY_TYP</Set>
|
|
<Set>INP_DAT.ORD_AMT=0.01</Set>
|
|
<Set>INP_DAT.TXN_AMT=0.01</Set>
|
|
<Set>INP_DAT.TOT_CALL_FLG=1</Set>
|
|
<Set>INP_DAT.RCV_AMT1=0.01</Set>
|
|
<Set>INP_DAT.STL_MOD=$STL_MOD</Set>
|
|
|
|
<Exec func="CAP:ComputeOrgFee">
|
|
<Arg name="INP_DAT" value="INP_DAT" />
|
|
<Arg name="OUT_DAT" value="OUT_DAT" />
|
|
</Exec>
|
|
<Delete>INP_DAT</Delete>
|
|
<Delete>OUT_DAT</Delete>
|
|
|
|
<!--收费方式 0:不收取 1:实时单笔收取 2:单笔计算、按周期收取 3:按周期汇总计算并收取 -->
|
|
<!--0:不收取 -->
|
|
<!--1:实时单笔收取 -->
|
|
<If condition="OR(INTCMP($CORG_FEE_MOD,3,0),INTCMP($CORG_FEE_MOD,3,1))">
|
|
<!--根据对应订单类型查询代收代付机构清算明细表(手续费已清分) -->
|
|
<Exec func="PUB:ReadRecord" error="IGNORE">
|
|
<Arg name="SqlCmd" value="QRY_CORG_SUM_FEE_CLR_CAPSTLDTL" />
|
|
</Exec>
|
|
<If condition="~RetCod=2">
|
|
<Set>CORG_SUCC_CNT=0</Set> <!-- 交易成功笔数 -->
|
|
<Set>CORG_AMT=0</Set> <!-- 总金额 -->
|
|
<Set>CORG_FEE_AMT=0</Set> <!-- 手续费 -->
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="STL22222" />
|
|
<Arg name="MsgDat" value="代收代付清算明细表已清分无数据" />
|
|
</Exec>
|
|
<Return />
|
|
</If>
|
|
<ElseIf condition="~RetCod!=0">
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="STL99999" />
|
|
<Arg name="MsgDat" value="代收代付清算明细表已清分查询失败" />
|
|
</Exec>
|
|
<Return />
|
|
</ElseIf>
|
|
<Else>
|
|
<Set>CORG_SUCC_CNT=$TO_CORG_SUCC_CNT</Set> <!-- 交易成功笔数 -->
|
|
<Set>CORG_AMT=$TO_CORG_AMT</Set> <!-- 总金额 -->
|
|
<Set>CORG_FEE_AMT=$TO_CORG_FEE_AMT</Set> <!-- 手续费 -->
|
|
<Set>CORG_STL_AMT=$TO_CORG_STL_AMT</Set> <!-- 净额 -->
|
|
|
|
<!-- @msg 正常结束 -->
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="STL00000" />
|
|
<Arg name="MsgDat" value="该收费方式为不收取或实时单笔收取,计算机构手续费成功" />
|
|
</Exec>
|
|
</Else>
|
|
</If>
|
|
<!--2:单笔计算、按周期收取 -->
|
|
<If condition="INTCMP($CORG_FEE_MOD,3,2)">
|
|
<!--根据对应订单类型查询代收代付机构清算明细表(未清分)的流水号 -->
|
|
<Exec func="PUB:OpenCursor">
|
|
<Arg name="SqlCmd" value="QRY_CORG_FEE_NOTCLR_JRN_CAPSTLDTL" />
|
|
<Arg name="CursorName" value="QRY_CORG_FEE_NOTCLR_JRN_CAPSTLDTL" />
|
|
</Exec>
|
|
<While>
|
|
<Exec func="PUB:FetchCursor" error="IGNORE">
|
|
<Arg name="CursorName" value="QRY_CORG_FEE_NOTCLR_JRN_CAPSTLDTL" />
|
|
</Exec>
|
|
<If condition="~RetCod=2">
|
|
<Break />
|
|
</If>
|
|
<ElseIf condition="~RetCod<0">
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="STL99999" />
|
|
<Arg name="MsgDat" value="查询代收代付清算明细表未清分的流水号交易失败" />
|
|
</Exec>
|
|
<Exec func="PUB:CloseCursor">
|
|
<Arg name="CursorName" value="QRY_CORG_FEE_NOTCLR_JRN_CAPSTLDTL" />
|
|
</Exec>
|
|
<Return />
|
|
</ElseIf>
|
|
|
|
<!--计算合作机构手续费 -->
|
|
<Set>CORG_FEE_AMT=0</Set> <!-- 手续费 -->
|
|
<Set>INP_DAT.CORP_ORG=$CORG_NO</Set>
|
|
<Set>INP_DAT.CAP_TYP=1</Set>
|
|
<Set>INP_DAT.TX_MOD=0</Set>
|
|
<Set>INP_DAT.FEE_TYP=$PAY_TYP</Set>
|
|
<Set>INP_DAT.ORD_AMT=$TXN_AMT</Set>
|
|
<Set>INP_DAT.TXN_AMT=$TXN_AMT</Set>
|
|
<Set>INP_DAT.TOT_CALL_FLG=1</Set>
|
|
<Set>INP_DAT.RCV_AMT1=$TXN_AMT</Set>
|
|
<Set>INP_DAT.STL_MOD=$STL_MOD</Set>
|
|
|
|
<Exec func="CAP:ComputeOrgFee">
|
|
<Arg name="INP_DAT" value="INP_DAT" />
|
|
<Arg name="OUT_DAT" value="OUT_DAT" />
|
|
</Exec>
|
|
<If condition="IS_SUCC(@O.MSG_CD)=0">
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="STL99999" />
|
|
<Arg name="MsgDat" value="单笔计算、按周期收取,计算合作机构手续费失败" />
|
|
</Exec>
|
|
<Exec func="PUB:CloseCursor">
|
|
<Arg name="CursorName" value="QRY_CORG_NOTCLR_JRN_CAPSTLDTL" />
|
|
</Exec>
|
|
<Return />
|
|
</If>
|
|
|
|
<Set>CORG_FEE_AMT=$OUT_DAT.ORD_FEE</Set> <!-- 手续费 -->
|
|
<Set>CORG_FEE_MOD=$OUT_DAT.ORG_FEE_MOD</Set> <!-- 收费方式 -->
|
|
<Set>CORG_FEE_CAL_MTH=$OUT_DAT.FEE_CAL_MTH</Set> <!-- 费用计算依据 -->
|
|
|
|
<!--根据代收代付分类计算交易净额 -->
|
|
<!--代收:代机构收款,需要清算给机构的金额,交易净额=交易额-手续费 -->
|
|
<!--代付:代机构付款,交易净额=交易额+手续费 -->
|
|
<!-- 11 代收 -->
|
|
<If condition="INTCMP($PAY_TYP,3,11)">
|
|
<Set>CORG_STL_AMT=FSUB($TXN_AMT,$CORG_FEE_AMT,2)</Set> <!-- 实际清算到机构账金额 -->
|
|
</If>
|
|
<!-- 12 代付 -->
|
|
<Else>
|
|
<Set>CORG_STL_AMT=FADD($TXN_AMT,$CORG_FEE_AMT,2)</Set> <!-- 实际清算到机构账金额 -->
|
|
</Else>
|
|
|
|
<!-- CORG_FEE_CLR_FLG 机构手续费清分标志 0:未清分 1:已清分 -->
|
|
<Set>CORG_FEE_CLR_FLG=1</Set>
|
|
<Set>CORG_FEE_CLR_DT=$GWA.AC_DT</Set>
|
|
<Set>CORG_FEE_DT=$GWA.AC_DT</Set>
|
|
<!-- 根据流水号更新清算明细表 -->
|
|
<Exec func="PUB:ExecSql">
|
|
<Arg name="SqlCmd" value="UPD_CORP_FEE_CLR_JRN_CAPSTLDTL" />
|
|
</Exec>
|
|
<If condition="~RetCod!=0">
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="STL99999" />
|
|
<Arg name="MsgDat" value="根据流水号更新清算明细表失败" />
|
|
</Exec>
|
|
<Return />
|
|
</If>
|
|
|
|
<Delete>INP_DAT</Delete>
|
|
<Delete>OUT_DAT</Delete>
|
|
<Delete>TXN_AMT</Delete>
|
|
<Delete>JRN_NO</Delete>
|
|
</While>
|
|
<Exec func="PUB:CommitWork" />
|
|
<!--根据对应订单类型查询代收代付机构清算明细表(已清分) -->
|
|
<Exec func="PUB:ReadRecord" error="IGNORE">
|
|
<Arg name="SqlCmd" value="QRY_CORG_SUM_FEE_CLR_CAPSTLDTL" />
|
|
</Exec>
|
|
<If condition="~RetCod=2">
|
|
<Set>CORG_SUCC_CNT=0</Set> <!-- 交易成功笔数 -->
|
|
<Set>CORG_AMT=0</Set> <!-- 机构总金额 -->
|
|
<Set>CORG_FEE_AMT=0</Set> <!-- 机构手续费 -->
|
|
<Set>CORG_STL_AMT=0</Set> <!-- 机构净额 -->
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="STL22222" />
|
|
<Arg name="MsgDat" value="代收代付机构清算明细表已清分无数据" />
|
|
</Exec>
|
|
<Return />
|
|
</If>
|
|
<ElseIf condition="~RetCod!=0">
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="STL99999" />
|
|
<Arg name="MsgDat" value="代收代付机构清算明细表已清分查询失败" />
|
|
</Exec>
|
|
<Return />
|
|
</ElseIf>
|
|
<Else>
|
|
<Set>CORG_SUCC_CNT=$TO_CORG_SUCC_CNT</Set> <!-- 交易成功笔数 -->
|
|
<Set>CORG_AMT=$TO_CORG_AMT</Set> <!-- 机构总金额 -->
|
|
<Set>CORG_FEE_AMT=$TO_CORG_FEE_AMT</Set> <!-- 机构手续费 -->
|
|
<Set>CORG_STL_AMT=$TO_CORG_STL_AMT</Set> <!-- 机构净额 -->
|
|
|
|
<!-- @msg 正常结束 -->
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="STL00000" />
|
|
<Arg name="MsgDat" value="该机构收费方式为单笔计算、按周期收取,计算机构手续费成功" />
|
|
</Exec>
|
|
</Else>
|
|
|
|
</If>
|
|
<!---3: 按周期汇总收取 -->
|
|
<If condition="INTCMP($CORG_FEE_MOD,3,3)">
|
|
|
|
<!--根据对应订单类型查询代收代付机构清算明细表(未清分) -->
|
|
<Exec func="PUB:ReadRecord" error="IGNORE">
|
|
<Arg name="SqlCmd" value="QRY_CORG_SUM_FEE_NOTCLR_CAPSTLDTL" />
|
|
</Exec>
|
|
<If condition="~RetCod=2">
|
|
<Set>CORG_SUCC_CNT=0</Set> <!-- 交易成功笔数 -->
|
|
<Set>CORG_AMT=0</Set> <!-- 机构总金额 -->
|
|
<Set>CORG_FEE_AMT=0</Set> <!-- 机构手续费 -->
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="STL22222" />
|
|
<Arg name="MsgDat" value="代收代付机构清算明细表未清分无数据" />
|
|
</Exec>
|
|
<Return />
|
|
</If>
|
|
<ElseIf condition="~RetCod!=0">
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="STL99999" />
|
|
<Arg name="MsgDat" value="代收代付机构清算明细表未清分查询失败" />
|
|
</Exec>
|
|
<Return />
|
|
</ElseIf>
|
|
<Else>
|
|
<Set>CORG_SUCC_CNT=$TO_CORG_SUCC_CNT</Set> <!-- 交易成功笔数 -->
|
|
<Set>CORG_AMT=$TO_CORG_AMT</Set> <!-- 机构总金额 -->
|
|
</Else>
|
|
|
|
<!--交易成功笔数大于0 -->
|
|
<If condition="INTCMP($CORG_SUCC_CNT,6,0)">
|
|
<!--计算机构手续费 -->
|
|
<Set>TO_CORG_FEE_AMT=0</Set> <!-- 手续费 -->
|
|
<Set>INP_DAT.CORP_ORG=$CORG_NO</Set>
|
|
<Set>INP_DAT.CAP_TYP=1</Set>
|
|
<Set>INP_DAT.TX_MOD=0</Set>
|
|
<Set>INP_DAT.FEE_TYP=$PAY_TYP</Set>
|
|
<Set>INP_DAT.TOT_ORD_AMT=$CORG_AMT</Set>
|
|
<Set>INP_DAT.TOT_ORD_CNT=$CORG_SUCC_CNT</Set>
|
|
<Set>INP_DAT.TOT_RCV_AMT1=$CORG_AMT</Set>
|
|
<Set>INP_DAT.TOT_RCV_CNT1=$CORG_SUCC_CNT</Set>
|
|
<Set>INP_DAT.TOT_CALL_FLG=2</Set>
|
|
<Set>INP_DAT.STL_MOD=$STL_MOD</Set>
|
|
|
|
<!--计算手续费 -->
|
|
<Exec func="CAP:ComputeOrgFee">
|
|
<Arg name="INP_DAT" value="INP_DAT" />
|
|
<Arg name="OUT_DAT" value="OUT_DAT" />
|
|
</Exec>
|
|
<If condition="IS_SUCC(@O.MSG_CD)=0">
|
|
<Set>MSG=@O.MSG_CD</Set>
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="STL99999" />
|
|
<Arg name="MsgDat" value="按周期汇总收取,计算手续费失败" />
|
|
</Exec>
|
|
<Return />
|
|
</If>
|
|
|
|
<Set>TO_CORG_FEE_AMT=$OUT_DAT.ORD_FEE</Set> <!-- 手续费 -->
|
|
<Set>CORG_FEE_MOD=$OUT_DAT.ORG_FEE_MOD</Set> <!-- 收费方式 -->
|
|
<Set>CORG_FEE_CAL_MTH=$OUT_DAT.FEE_CAL_MTH</Set> <!-- 费用计算依据 -->
|
|
|
|
<!--根据代收代付分类计算交易净额 -->
|
|
<!--代收:代机构收款,需要清算给机构的金额,交易净额=交易额-手续费 -->
|
|
<!--代付:代机构付款,交易净额=交易额+手续费 -->
|
|
<!-- 11 代收 -->
|
|
<If condition="INTCMP($PAY_TYP,3,11)">
|
|
<Set>TO_CORG_STL_AMT=FSUB($CORG_AMT,$TO_CORG_FEE_AMT,2)</Set> <!-- 实际清算到机构账金额 -->
|
|
</If>
|
|
<!-- 12 代付 -->
|
|
<Else>
|
|
<Set>TO_CORG_STL_AMT=FADD($CORG_AMT,$TO_CORG_FEE_AMT,2)</Set> <!-- 实际清算到机构账金额 -->
|
|
</Else>
|
|
|
|
<Set>CORG_FEE_AMT=$TO_CORG_FEE_AMT</Set> <!-- 手续费 -->
|
|
<Set>CORG_STL_AMT=$TO_CORG_STL_AMT</Set> <!-- 净额 -->
|
|
|
|
<!--机构清分标志更改 -->
|
|
<!-- CORG_CLR_FLG 清分标志 0:未清分 1:已清分 -->
|
|
<!-- CORG_FEE_CLR_FLG 手续费清分标志 0:未清分 1:已清分 -->
|
|
<Set>CORG_FEE_CLR_FLG=1</Set>
|
|
<Set>CORG_FEE_CLR_DT=$GWA.AC_DT</Set>
|
|
<Set>CORG_FEE_DT=$GWA.AC_DT</Set>
|
|
<!-- 根据对应订单类型更新清算明细表 -->
|
|
<Exec func="PUB:ExecSql">
|
|
<Arg name="SqlCmd" value="UPD_CORG_FEE_NOTCLR_CAPSTLDTL" />
|
|
</Exec>
|
|
<If condition="~RetCod!=0">
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="STL99999" />
|
|
<Arg name="MsgDat" value="根据对应订单类型更新清算明细表失败" />
|
|
</Exec>
|
|
<Return />
|
|
</If>
|
|
</If>
|
|
<Else>
|
|
<Set>CORG_FEE_AMT=0</Set> <!-- 手续费 -->
|
|
<Set>CORG_STL_AMT=0</Set> <!-- 净额 -->
|
|
</Else>
|
|
|
|
<!-- @msg 正常结束 -->
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="STL00000" />
|
|
<Arg name="MsgDat" value="计算手续费成功" />
|
|
</Exec>
|
|
</If>
|
|
|
|
</Process>
|
|
</Function>
|
|
|
|
<!-- 计算收支两条线的机构的手续费 -->
|
|
<Function name="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>
|
|
|
|
<!--机构SQL定义 -->
|
|
<Quote name="CORG_DYN_SQLSENTENCE" />
|
|
|
|
<Process>
|
|
<Set>TXN_DT=$STL_DT</Set>
|
|
<If condition="IS_EQUAL_STRING($STL_TXN_TYP,1)"><!-- 批量 -->
|
|
<If condition="IS_EQUAL_STRING($PAY_TYP,11)">
|
|
<Set>TXN_MOD=01</Set> <!-- 批扣 -->
|
|
</If>
|
|
<ElseIf condition="IS_EQUAL_STRING($PAY_TYP,12)">
|
|
<Set>TXN_MOD=02</Set> <!-- 批付 -->
|
|
</ElseIf>
|
|
</If>
|
|
<Else>
|
|
<Set>TXN_MOD=99</Set> <!-- 单笔 -->
|
|
</Else>
|
|
<!--计算合作机构手续费下一个结算日 -->
|
|
<Set>INP_DAT.CORP_ORG=$CORG_NO</Set>
|
|
<Set>INP_DAT.CAP_TYP=1</Set>
|
|
<Set>INP_DAT.TX_MOD=0</Set>
|
|
<Set>INP_DAT.FEE_TYP=$PAY_TYP</Set>
|
|
<Set>INP_DAT.ORD_AMT=0.01</Set>
|
|
<Set>INP_DAT.TXN_AMT=0.01</Set>
|
|
<Set>INP_DAT.TOT_CALL_FLG=1</Set>
|
|
<Set>INP_DAT.RCV_AMT1=0.01</Set>
|
|
<Set>INP_DAT.STL_TXN_TYP=$STL_TXN_TYP</Set>
|
|
<Set>INP_DAT.STL_ACC_TYP=$STL_ACC_TYP</Set>
|
|
<Set>INP_DAT.STL_FEE_TYP=$STL_FEE_TYP</Set>
|
|
<Set>INP_DAT.STL_MOD=$STL_MOD</Set>
|
|
<Exec func="CAP:ComputeOrgFee">
|
|
<Arg name="INP_DAT" value="INP_DAT" />
|
|
<Arg name="OUT_DAT" value="OUT_DAT" />
|
|
</Exec>
|
|
<Delete>INP_DAT</Delete>
|
|
<Delete>OUT_DAT</Delete>
|
|
|
|
<!--收费方式 0:不收取 1:实时单笔收取 2:单笔计算、按周期收取 3:按周期汇总计算并收取 -->
|
|
<!--0:不收取 -->
|
|
<!--1:实时单笔收取 -->
|
|
<If condition="OR(INTCMP($CORG_FEE_MOD,3,0),INTCMP($CORG_FEE_MOD,3,1))">
|
|
<!--根据对应订单类型查询代收代付机构清算明细表(手续费已清分) -->
|
|
<If condition="IS_EQUAL_STRING($STL_TXN_TYP,1,2)"><!-- 1:批量 2单笔 -->
|
|
<Set>SQL_SENTC=QRY_CORG_SUM_FEE_CLR_CAPBATDTL</Set>
|
|
</If>
|
|
<ElseIf condition="IS_EQUAL_STRING($STL_TXN_TYP,3)"><!-- 3:账户验证 -->
|
|
<Set>SQL_SENTC=QRY_CORG_SUM_FEE_CLR_CAPVERDTL</Set>
|
|
</ElseIf>
|
|
<Else>
|
|
<Set>SQL_SENTC=QRY_CORG_SUM_FEE_CLR_CAPSTLDTL</Set>
|
|
</Else>
|
|
<Exec func="PUB:ReadRecord" error="IGNORE">
|
|
<Arg name="SqlCmd" value="$SQL_SENTC" />
|
|
</Exec>
|
|
<If condition="~RetCod=2">
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="STL22222" />
|
|
<Arg name="MsgDat" value="代收代付清算明细表已清分无数据" />
|
|
</Exec>
|
|
<Continue />
|
|
</If>
|
|
<ElseIf condition="~RetCod!=0">
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="STL99999" />
|
|
<Arg name="MsgDat" value="代收代付清算明细表已清分查询失败" />
|
|
</Exec>
|
|
<Continue />
|
|
</ElseIf>
|
|
<Else>
|
|
<Set>CORG_SUCC_CNT=$TO_CORG_SUCC_CNT</Set> <!-- 交易成功笔数 -->
|
|
<Set>CORG_AMT=$TO_CORG_AMT</Set> <!-- 机构总金额 -->
|
|
<Set>CORG_FEE_AMT=$TO_CORG_FEE_AMT</Set> <!-- 机构手续费 -->
|
|
<Set>CORG_STL_AMT=$TO_CORG_STL_AMT</Set> <!-- 机构净额 -->
|
|
<!-- @msg 正常结束 -->
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="STL00000" />
|
|
<Arg name="MsgDat" value="该收费方式为不收取或实时单笔收取,计算机构手续费成功" />
|
|
</Exec>
|
|
</Else>
|
|
</If>
|
|
|
|
<!--2:单笔计算、按周期收取 -->
|
|
<If condition="INTCMP($CORG_FEE_MOD,3,2)">
|
|
<!--根据对应订单类型查询代收代付机构清算明细表(未清分)的流水号 -->
|
|
<If condition="IS_EQUAL_STRING($STL_TXN_TYP,1,2)"><!-- 1:批量 2单笔 -->
|
|
<Set>SQL_SENTC=QRY_CORG_FEE_NOTCLR_JRN_CAPBATDTL</Set>
|
|
</If>
|
|
<ElseIf condition="IS_EQUAL_STRING($STL_TXN_TYP,3)"><!-- 3:账户验证 -->
|
|
<Set>SQL_SENTC=QRY_CORG_FEE_NOTCLR_JRN_CAPVERDTL</Set>
|
|
</ElseIf>
|
|
<Else>
|
|
<Set>SQL_SENTC=QRY_CORG_FEE_NOTCLR_JRN_CAPSTLDTL</Set>
|
|
</Else>
|
|
<Exec func="PUB:OpenCursor">
|
|
<Arg name="SqlCmd" value="$SQL_SENTC" />
|
|
<Arg name="CursorName" value="QRY_CORG_FEE_NOTCLR_JRN_CAPSTLDTL" />
|
|
</Exec>
|
|
<While>
|
|
<Exec func="PUB:FetchCursor" error="IGNORE">
|
|
<Arg name="CursorName" value="QRY_CORG_FEE_NOTCLR_JRN_CAPSTLDTL" />
|
|
</Exec>
|
|
<If condition="~RetCod=2">
|
|
<Break />
|
|
</If>
|
|
<ElseIf condition="~RetCod<0">
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="STL99999" />
|
|
<Arg name="MsgDat" value="查询代收代付清算明细表未清分的流水号交易失败" />
|
|
</Exec>
|
|
<Exec func="PUB:CloseCursor">
|
|
<Arg name="CursorName" value="QRY_CORG_FEE_NOTCLR_JRN_CAPSTLDTL" />
|
|
</Exec>
|
|
<Return />
|
|
</ElseIf>
|
|
|
|
<!--计算合作机构手续费 -->
|
|
<Set>CORG_FEE_AMT=0</Set> <!-- 手续费 -->
|
|
<Set>INP_DAT.CORP_ORG=$CORG_NO</Set>
|
|
<Set>INP_DAT.CAP_TYP=1</Set>
|
|
<Set>INP_DAT.TX_MOD=0</Set>
|
|
<Set>INP_DAT.FEE_TYP=$PAY_TYP</Set>
|
|
<Set>INP_DAT.ORD_AMT=$TXN_AMT</Set>
|
|
<Set>INP_DAT.TXN_AMT=$TXN_AMT</Set>
|
|
<Set>INP_DAT.TOT_CALL_FLG=1</Set>
|
|
<Set>INP_DAT.RCV_AMT1=$TXN_AMT</Set>
|
|
<Set>INP_DAT.STL_TXN_TYP=$STL_TXN_TYP</Set>
|
|
<Set>INP_DAT.STL_ACC_TYP=$STL_ACC_TYP</Set>
|
|
<Set>INP_DAT.STL_FEE_TYP=$STL_FEE_TYP</Set>
|
|
<Set>INP_DAT.STL_MOD=$STL_MOD</Set>
|
|
<Exec func="CAP:ComputeOrgFee">
|
|
<Arg name="INP_DAT" value="INP_DAT" />
|
|
<Arg name="OUT_DAT" value="OUT_DAT" />
|
|
</Exec>
|
|
<If condition="IS_SUCC(@O.MSG_CD)=0">
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="STL99999" />
|
|
<Arg name="MsgDat" value="单笔计算、按周期收取,计算合作机构手续费失败" />
|
|
</Exec>
|
|
<Exec func="PUB:CloseCursor">
|
|
<Arg name="CursorName" value="QRY_CORG_NOTCLR_JRN_CAPSTLDTL" />
|
|
</Exec>
|
|
<Return />
|
|
</If>
|
|
|
|
<Set>CORG_FEE_AMT=$OUT_DAT.ORD_FEE</Set> <!-- 手续费 -->
|
|
<Set>CORG_FEE_MOD=$OUT_DAT.ORG_FEE_MOD</Set> <!-- 收费方式 -->
|
|
<Set>CORG_FEE_CAL_MTH=$OUT_DAT.FEE_CAL_MTH</Set> <!-- 费用计算依据 -->
|
|
|
|
<If condition="IS_EQUAL_STRING($STL_TXN_TYP,3)"><!-- 3:账户验证 -->
|
|
<Set>SQL_ARG=UPD_CORP_FEE_CLR_JRN_CAPVERDTL</Set>
|
|
</If>
|
|
<Else>
|
|
<Set>TO1_CORG_STL_AMT=FADD($TO1_CORG_STL_AMT,$TXN_AMT,2)</Set>
|
|
<Set>SQL_ARG=UPD_CORP_FEE_CLR_JRN_CAPSTLDTL</Set>
|
|
</Else>
|
|
<!--根据代收代付分类计算交易净额 -->
|
|
<!--代收:代机构收款,需要清算给机构的金额,交易净额=交易额-手续费 -->
|
|
<!--代付:代机构付款,交易净额=交易额+手续费 -->
|
|
<!-- 11 代收 -->
|
|
<If condition="INTCMP($PAY_TYP,3,11)">
|
|
<Set>CORG_STL_AMT=FSUB($TO1_CORG_STL_AMT,$CORG_FEE_AMT,2)</Set> <!-- 实际清算到机构账金额 -->
|
|
</If>
|
|
<!-- 12 代付 -->
|
|
<Else>
|
|
<Set>CORG_STL_AMT=FADD($TO1_CORG_STL_AMT,$CORG_FEE_AMT,2)</Set> <!-- 实际清算到机构账金额 -->
|
|
</Else>
|
|
|
|
|
|
<!-- CORG_FEE_CLR_FLG 机构手续费清分标志 0:未清分 1:已清分 -->
|
|
<Set>CORG_FEE_CLR_FLG=1</Set>
|
|
<Set>CORG_FEE_CLR_DT=$GWA.AC_DT</Set>
|
|
<Set>CORG_FEE_DT=$GWA.AC_DT</Set>
|
|
<!-- 根据流水号更新清算明细表 -->
|
|
<Exec func="PUB:ExecSql">
|
|
<Arg name="SqlCmd" value="$SQL_ARG" />
|
|
</Exec>
|
|
<If condition="~RetCod!=0">
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="STL99999" />
|
|
<Arg name="MsgDat" value="根据流水号更新清算明细表失败" />
|
|
</Exec>
|
|
<Return />
|
|
</If>
|
|
|
|
<Delete>INP_DAT</Delete>
|
|
<Delete>OUT_DAT</Delete>
|
|
<Delete>TXN_AMT</Delete>
|
|
<Delete>JRN_NO</Delete>
|
|
</While>
|
|
<Exec func="PUB:CommitWork" />
|
|
<If condition="IS_EQUAL_STRING($STL_TXN_TYP,3)"><!-- 3:账户验证 -->
|
|
<Set>QRY_SQL=QRY_CORG_SUM_FEE_CLR_CAPVERDTL</Set>
|
|
</If>
|
|
<Else>
|
|
<Set>QRY_SQL=QRY_CORG_SZFS_SUM_FEE_CLR_CAPVERDTL</Set>
|
|
</Else>
|
|
<!--根据对应订单类型查询代收代付机构清算明细表(已清分) -->
|
|
<Exec func="PUB:ReadRecord" error="IGNORE">
|
|
<Arg name="SqlCmd" value="$QRY_SQL" />
|
|
</Exec>
|
|
<If condition="~RetCod=2">
|
|
<Set>CORG_SUCC_CNT=0</Set> <!-- 交易成功笔数 -->
|
|
<Set>CORG_AMT=0</Set> <!-- 机构总金额 -->
|
|
<Set>CORG_FEE_AMT=0</Set> <!-- 机构手续费 -->
|
|
<Set>CORG_STL_AMT=0</Set> <!-- 机构净额 -->
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="STL22222" />
|
|
<Arg name="MsgDat" value="代收代付机构清算明细表已清分无数据" />
|
|
</Exec>
|
|
<Return />
|
|
</If>
|
|
<ElseIf condition="~RetCod!=0">
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="STL99999" />
|
|
<Arg name="MsgDat" value="代收代付机构清算明细表已清分查询失败" />
|
|
</Exec>
|
|
<Return />
|
|
</ElseIf>
|
|
<Else>
|
|
|
|
<Set>CORG_SUCC_CNT=$TO_CORG_SUCC_CNT</Set> <!-- 交易成功笔数 -->
|
|
<Set>CORG_AMT=$TO_CORG_AMT</Set> <!-- 机构总金额 -->
|
|
<Set>CORG_FEE_AMT=$TO_CORG_FEE_AMT</Set> <!-- 机构手续费 -->
|
|
<Set>CORG_STL_AMT=$TO_CORG_STL_AMT</Set> <!-- 机构净额 -->
|
|
<!-- @msg 正常结束 -->
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="STL00000" />
|
|
<Arg name="MsgDat" value="该机构收费方式为单笔计算、按周期收取,计算机构手续费成功" />
|
|
</Exec>
|
|
</Else>
|
|
|
|
</If>
|
|
<!---3: 按周期汇总收取 -->
|
|
<If condition="INTCMP($CORG_FEE_MOD,3,3)">
|
|
<If condition="IS_EQUAL_STRING($STL_TXN_TYP,1,2)"><!-- 1:批量 2单笔 -->
|
|
<Set>SQL_SENTC=QRY_CORG_SUM_FEE_NOTCLR_CAPBATDTL</Set>
|
|
</If>
|
|
<ElseIf condition="IS_EQUAL_STRING($STL_TXN_TYP,3)"><!-- 3:账户验证 -->
|
|
<Set>SQL_SENTC=QRY_CORG_SUM_FEE_NOTCLR_CAPVERDTL</Set>
|
|
</ElseIf>
|
|
<Else>
|
|
<Set>SQL_SENTC=QRY_CORG_SUM_FEE_NOTCLR_CAPSTLDTL</Set>
|
|
</Else>
|
|
<!--根据对应订单类型查询代收代付机构清算明细表(未清分) -->
|
|
<Exec func="PUB:ReadRecord" error="IGNORE">
|
|
<Arg name="SqlCmd" value="$SQL_SENTC" />
|
|
</Exec>
|
|
<If condition="~RetCod=2">
|
|
<Set>CORG_SUCC_CNT=0</Set> <!-- 交易成功笔数 -->
|
|
<Set>CORG_AMT=0</Set> <!-- 机构总金额 -->
|
|
<Set>CORG_FEE_AMT=0</Set> <!-- 机构手续费 -->
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="STL22222" />
|
|
<Arg name="MsgDat" value="代收代付机构清算明细表未清分无数据" />
|
|
</Exec>
|
|
<Return />
|
|
</If>
|
|
<ElseIf condition="~RetCod!=0">
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="STL99999" />
|
|
<Arg name="MsgDat" value="代收代付机构清算明细表未清分查询失败" />
|
|
</Exec>
|
|
<Return />
|
|
</ElseIf>
|
|
<Else>
|
|
<Set>CORG_SUCC_CNT=$TO_CORG_SUCC_CNT</Set> <!-- 交易成功笔数 -->
|
|
<Set>CORG_AMT=$TO_CORG_AMT</Set> <!-- 机构总金额 -->
|
|
</Else>
|
|
|
|
<!--交易成功笔数大于0 -->
|
|
<If condition="INTCMP($CORG_SUCC_CNT,6,0)">
|
|
<!--计算机构手续费 -->
|
|
<Set>TO_CORG_FEE_AMT=0</Set> <!-- 手续费 -->
|
|
<Set>INP_DAT.CORP_ORG=$CORG_NO</Set>
|
|
<Set>INP_DAT.CAP_TYP=1</Set>
|
|
<Set>INP_DAT.TX_MOD=0</Set>
|
|
<Set>INP_DAT.FEE_TYP=$PAY_TYP</Set>
|
|
<Set>INP_DAT.TOT_ORD_AMT=$CORG_AMT</Set>
|
|
<Set>INP_DAT.TOT_ORD_CNT=$CORG_SUCC_CNT</Set>
|
|
<Set>INP_DAT.TOT_RCV_AMT1=$CORG_AMT</Set>
|
|
<Set>INP_DAT.TOT_RCV_CNT1=$CORG_SUCC_CNT</Set>
|
|
<Set>INP_DAT.TOT_CALL_FLG=2</Set>
|
|
<Set>INP_DAT.STL_TXN_TYP=$STL_TXN_TYP</Set>
|
|
<Set>INP_DAT.STL_ACC_TYP=$STL_ACC_TYP</Set>
|
|
<Set>INP_DAT.STL_FEE_TYP=$STL_FEE_TYP</Set>
|
|
<Set>INP_DAT.STL_MOD=$STL_MOD</Set>
|
|
<!--计算手续费 -->
|
|
<Exec func="CAP:ComputeOrgFee">
|
|
<Arg name="INP_DAT" value="INP_DAT" />
|
|
<Arg name="OUT_DAT" value="OUT_DAT" />
|
|
</Exec>
|
|
<If condition="IS_SUCC(@O.MSG_CD)=0">
|
|
<Set>MSG=@O.MSG_CD</Set>
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="STL99999" />
|
|
<Arg name="MsgDat" value="按周期汇总收取,计算手续费失败" />
|
|
</Exec>
|
|
<Return />
|
|
</If>
|
|
|
|
<Set>TO_CORG_FEE_AMT=$OUT_DAT.ORD_FEE</Set> <!-- 手续费 -->
|
|
<Set>CORG_FEE_MOD=$OUT_DAT.ORG_FEE_MOD</Set> <!-- 收费方式 -->
|
|
<Set>CORG_FEE_CAL_MTH=$OUT_DAT.FEE_CAL_MTH</Set> <!-- 费用计算依据 -->
|
|
|
|
<!--根据代收代付分类计算交易净额 -->
|
|
<!--代收:代机构收款,需要清算给机构的金额,交易净额=交易额-手续费 -->
|
|
<!--代付:代机构付款,交易净额=交易额+手续费 -->
|
|
<!-- 11 代收 -->
|
|
<If condition="INTCMP($PAY_TYP,3,11)">
|
|
<Set>TO_CORG_STL_AMT=FSUB($CORG_AMT,$TO_CORG_FEE_AMT,2)</Set> <!-- 实际清算到机构账金额 -->
|
|
</If>
|
|
<!-- 12 代付 -->
|
|
<Else>
|
|
<Set>TO_CORG_STL_AMT=FADD($CORG_AMT,$TO_CORG_FEE_AMT,2)</Set> <!-- 实际清算到机构账金额 -->
|
|
</Else>
|
|
|
|
<Set>CORG_FEE_AMT=$TO_CORG_FEE_AMT</Set> <!-- 手续费 -->
|
|
<Set>CORG_STL_AMT=$TO_CORG_STL_AMT</Set> <!-- 净额 -->
|
|
|
|
<!--机构清分标志更改 -->
|
|
<!-- CORG_CLR_FLG 清分标志 0:未清分 1:已清分 -->
|
|
<!-- CORG_FEE_CLR_FLG 手续费清分标志 0:未清分 1:已清分 -->
|
|
<Set>CORG_FEE_CLR_FLG=1</Set>
|
|
<Set>CORG_FEE_CLR_DT=$GWA.AC_DT</Set>
|
|
<Set>CORG_FEE_DT=$GWA.AC_DT</Set>
|
|
<If condition="IS_EQUAL_STRING($STL_TXN_TYP,1,2)">
|
|
<Set>SQL_SENTC=UPD_CORG_FEE_NOTCLR_CAPBATDTL</Set>
|
|
</If>
|
|
<ElseIf condition="IS_EQUAL_STRING($STL_TXN_TYP,3)"><!-- 3:账户验证 -->
|
|
<Set>SQL_SENTC=UPD_CORG_FEE_NOTCLR_CAPVERDTL</Set>
|
|
</ElseIf>
|
|
<Else>
|
|
<Set>SQL_SENTC=UPD_CORG_FEE_NOTCLR_CAPSTLDTL</Set>
|
|
</Else>
|
|
<!-- 根据对应订单类型更新清算明细表 -->
|
|
<Exec func="PUB:ExecSql">
|
|
<Arg name="SqlCmd" value="$SQL_SENTC" />
|
|
</Exec>
|
|
<If condition="~RetCod!=0">
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="STL99999" />
|
|
<Arg name="MsgDat" value="根据对应订单类型更新清算明细表失败" />
|
|
</Exec>
|
|
<Return />
|
|
</If>
|
|
</If>
|
|
<Else>
|
|
<Set>CORG_FEE_AMT=0</Set> <!-- 手续费 -->
|
|
<Set>CORG_STL_AMT=0</Set> <!-- 净额 -->
|
|
</Else>
|
|
|
|
<!-- @msg 正常结束 -->
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="STL00000" />
|
|
<Arg name="MsgDat" value="计算手续费成功" />
|
|
</Exec>
|
|
</If>
|
|
|
|
</Process>
|
|
</Function>
|
|
</Package>
|