637 lines
52 KiB
XML
637 lines
52 KiB
XML
<?xml version='1.0' encoding='UTF-8'?>
|
|
<Package>
|
|
|
|
<!--订单直减营销工具异步扣款组件(BonusPay_OrderRate_Invoke)-->
|
|
|
|
<!-- 输入参数:BON_INP_DAT-节点名称 -->
|
|
<!-- JRN_NO 流水号 必输 -->
|
|
<!-- MERC_ID 商户编号 必输 -->
|
|
<!-- MERC_ORD_NO 商户订单号 必输 -->
|
|
<!-- USR_NO 内部用户号 必输 -->
|
|
<!-- ORD_TYP 订单类型 -->
|
|
<!-- ORD_AMT 订单金额 必输 -->
|
|
<!-- MBL_NO 手机号 必输 -->
|
|
<!-- ORD_NO 内部订单号 必输 -->
|
|
<!-- SYS_CNL 系统渠道 必输 -->
|
|
<!-- BUS_CNL 业务渠道 必输 -->
|
|
<!-- MKT_ID 用于扣减的营销活动编号 必输 -->
|
|
<!-- RAT_AMT 优惠扣减金额 必输 -->
|
|
<!-- SALE_DISC 优惠折扣 必输 -->
|
|
<!-- TX_TYP 交易类型 必输 -->
|
|
|
|
<Function name="BonusPay_OrderRate_Invoke">
|
|
<Input>BON_INP_DAT|GWA|</Input>
|
|
<Output>BON_OUT_DAT|MSG_CD|MSG_DAT</Output>
|
|
<!--查询流水中是否已经存在该笔订单-->
|
|
<DynSentence name="QRY_MKMTJNL">
|
|
<Sentence>
|
|
SELECT 'Y' ISEXISTS
|
|
FROM DUAL
|
|
WHERE EXISTS (SELECT * FROM MKMTJNL WHERE MERC_ID=? AND MERC_ORD_NO=? AND ORD_NO=? AND MKT_ID=? AND USE_TYP='1' AND TX_STS='S')
|
|
</Sentence>
|
|
<Fields>MERC_ID|MERC_ORD_NO|ORD_NO|MKT_ID|</Fields>
|
|
</DynSentence>
|
|
<!-- 查询商户内部用户号、商户归属省、归属市、归属市名 -->
|
|
<DynSentence name="QRY_URMTMINF_USRNO">
|
|
<Sentence>
|
|
SELECT USR_NO AS MERC_USR_NO,MERC_CNM,MERC_PROV,MERC_CITY,MERC_CITY_NM
|
|
FROM URMTMINF
|
|
WHERE MERC_ID=?
|
|
</Sentence>
|
|
<Fields>MERC_ID|</Fields>
|
|
</DynSentence>
|
|
<DynSentence name="QRY_MKMTACTINFO">
|
|
<Sentence>
|
|
SELECT A.MKT_ID, B.PRD_ID
|
|
FROM MKMTACT A, MKMTPINF B
|
|
WHERE A.MKT_ID = B.MKT_ID
|
|
AND A.MKT_STS = 'A'
|
|
AND A.ISS_EFF_DT <= ?
|
|
AND A.ISS_EXP_DT >= ?
|
|
AND A.MKT_ID=?
|
|
AND A.MKT_HLD_FLG='0'
|
|
</Sentence>
|
|
<Fields>CUR_DT|CUR_DT|MKT_ID|</Fields>
|
|
</DynSentence>
|
|
<!-- 查询红包结算类型 -->
|
|
<DynSentence name="QRY_MKMTMERC">
|
|
<Sentence>
|
|
SELECT DISTINCT B.STL_PERD_FLG FROM MKMTBON A,MKMTMERC B,PAYADM.MKMTMERCRL C
|
|
WHERE A.BON_ID = ?
|
|
AND A.USR_MBL_NO = ?
|
|
AND A.USR_NO = ?
|
|
AND ((B.IS_GRP='0' AND B.MERC_ID = ? AND C.MERC_GRP = '0') OR (B.IS_GRP='1' AND C.MERC_ID=? AND B.MERC_ID=C.MERC_GRP AND C.MERC_GRP <> '0'))
|
|
AND A.PRD_ID = B.PRD_ID
|
|
AND A.MKT_ID=B.MKT_ID
|
|
AND A.ISS_ID=B.ISS_ID
|
|
AND B.MERC_STS='A'
|
|
AND A.MKT_ID=?
|
|
AND C.MERC_ID=?
|
|
</Sentence>
|
|
<Fields>BON_ID|MBL_NO|USR_NO|MERC_ID|MERC_ID|MKT_ID|MERC_ID|</Fields>
|
|
</DynSentence>
|
|
|
|
<DynSentence name="UPD_MKMTBON_BON">
|
|
<Sentence>
|
|
UPDATE MKMTBON
|
|
SET CUR_AC_BAL=?,
|
|
BON_STS = ( CASE WHEN ?=0 THEN 'U' ELSE 'A' END),
|
|
LAST_AC_BAL=?,
|
|
USE_DT=?,USE_TM=?,
|
|
LST_ORD_NO=?,
|
|
UPD_DT=?,
|
|
UPD_JRN=?,
|
|
TM_SMP=?
|
|
WHERE BON_ID=?
|
|
AND USR_MBL_NO = ?
|
|
AND USR_NO = ?
|
|
AND BON_STS='A'
|
|
AND PRD_TYP='0'
|
|
AND CUR_AC_BAL >=?
|
|
</Sentence>
|
|
<Fields>CUR_AC_BAL|CUR_AC_BAL|LAST_AC_BAL|CUR_DT|CUR_TM|ORD_NO|UPD_DT|UPD_JRN|TM_SMP|BON_ID|MBL_NO|USR_NO|USE_AMT|</Fields>
|
|
</DynSentence>
|
|
<!--查询该该活动可用电子券-->
|
|
<DynSentence name="QRY_MKMACT_INFO">
|
|
<Sentence>
|
|
SELECT A.BON_ID,A.USE_DT,A.CUR_AC_BAL,A.LAST_AC_BAL,A.MKT_ID,A.ISS_TYP AS ISS_ID_TYP,
|
|
A.ISS_ID,A.CAP_ID_TYP,A.CAP_ID,A.PRD_TYP
|
|
FROM MKMTBON A
|
|
WHERE EXP_DT >=?
|
|
AND BON_STS='A'
|
|
AND BON_AMT=CUR_AC_BAL
|
|
AND BON_AMT=?
|
|
AND ISS_DT=?
|
|
AND MKT_ID=?
|
|
AND ORD_NO=?
|
|
AND USR_MBL_NO=?
|
|
AND USR_NO=?
|
|
</Sentence>
|
|
<Fields>SYS_DT|RAT_AMT|CUR_DT|MKT_ID|ORD_NO|MBL_NO|USR_NO|</Fields>
|
|
</DynSentence>
|
|
|
|
<!--更新抵价券明细表中上日券面余额、券面余额、最近使用时间、最近使用订单号、最新更新流水号-->
|
|
<DynSentence name="UPD_MKMTBON_INF">
|
|
<Sentence>
|
|
UPDATE MKMTBON
|
|
SET BON_STS=(CASE WHEN ?=0 THEN 'U'
|
|
WHEN ?>0 THEN 'A'
|
|
END),
|
|
LAST_AC_BAL=?,
|
|
CUR_AC_BAL=?,
|
|
USE_DT=?,USE_TM=?,
|
|
LST_ORD_NO=?,
|
|
UPD_DT=?,
|
|
UPD_JRN=?,
|
|
TM_SMP=?
|
|
WHERE BON_ID=? AND BON_STS='A' AND PRD_TYP='0'
|
|
</Sentence>
|
|
<Fields>CUR_AC_BAL|CUR_AC_BAL|LAST_AC_BAL|CUR_AC_BAL|CUR_DT|CUR_TM|ORD_NO|UPD_DT|UPD_JRN|TM_SMP|BON_ID|</Fields>
|
|
</DynSentence>
|
|
<Process>
|
|
<!--取输入参数-->
|
|
<Set>UPD_JRN=DELBOTHSPACE($BON_INP_DAT.JRN_NO)</Set> <!--利用输入中的流水号更新抵价券表中最近更新流水号-->
|
|
<Set>MERC_ID=DELBOTHSPACE($BON_INP_DAT.MERC_ID)</Set>
|
|
<Set>MERC_ORD_NO=DELBOTHSPACE($BON_INP_DAT.MERC_ORD_NO)</Set>
|
|
<Set>ORD_NO=DELBOTHSPACE($BON_INP_DAT.ORD_NO)</Set>
|
|
<Set>ORD_TYP=DELBOTHSPACE($BON_INP_DAT.ORD_TYP)</Set>
|
|
<Set>SYS_CNL=DELBOTHSPACE($BON_INP_DAT.SYS_CNL)</Set>
|
|
<Set>BUS_CNL=DELBOTHSPACE($BON_INP_DAT.BUS_CNL)</Set>
|
|
<Set>ORD_AMT=DELBOTHSPACE($BON_INP_DAT.ORD_AMT)</Set>
|
|
<Set>MBL_NO=DELBOTHSPACE($BON_INP_DAT.MBL_NO)</Set>
|
|
<Set>USR_NO=DELBOTHSPACE($BON_INP_DAT.USR_NO)</Set>
|
|
<Set>MKT_ID=DELBOTHSPACE($BON_INP_DAT.MKT_ID)</Set>
|
|
<Set>RAT_AMT=DELBOTHSPACE($BON_INP_DAT.RAT_AMT)</Set>
|
|
<Set>SALE_DISC=DELBOTHSPACE($BON_INP_DAT.SALE_DISC)</Set>
|
|
<Set>TX_TYP=DELBOTHSPACE($BON_INP_DAT.TX_TYP)</Set>
|
|
|
|
<Set>ASYNC_FLG=DELBOTHSPACE($BON_INP_DAT.ASYNC_FLG)</Set> <!-- 异步入账标志 1.入中间科目-->
|
|
|
|
<Set>ORD_DT=$GWA.TX_DT</Set>
|
|
<Set>ORD_TM=$GWA.TX_TM</Set>
|
|
<Set>CUR_DT=$GWA.AC_DT</Set> <!-- 当前日期,取会计日期,使用日期取会计日期 -->
|
|
<Set>CUR_TM=$GWA.TX_TM</Set>
|
|
<Set>SYS_DT=$GWA.TX_DT</Set> <!-- 系统日期 -->
|
|
<Set>TM_SMP=GETDATETIME()</Set>
|
|
<Set>THD_JRN=$UPD_JRN</Set>
|
|
<Set>JRN_NO=$UPD_JRN</Set>
|
|
|
|
<!--必输项检查-->
|
|
<If condition="OR(ISNULL($MBL_NO),ISNULL($RAT_AMT),ISNULL($MERC_ID),ISNULL($MERC_ORD_NO),ISNULL($ORD_NO),ISNULL($ORD_AMT),ISNULL($UPD_JRN),ISNULL($MKT_ID),ISNULL($SYS_CNL),ISNULL($BUS_CNL))">
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<!-- @msg必输项不能为空 -->
|
|
<Arg name="MsgCd" value="MKM22002"/>
|
|
<Arg name="MsgDat" value="必输项不能为空"/>
|
|
</Exec>
|
|
<Return/>
|
|
</If>
|
|
|
|
<!-- @add 2012-11-09 -->
|
|
<!-- 调用手机号段查询 -->
|
|
<Set>INP_DAT.MBL_NO=$MBL_NO</Set>
|
|
<Call function="GetMobilNoSegmentNew" package="URM">
|
|
<Input>INP_DAT</Input>
|
|
<Output>OUT_DAT|MSG_CD</Output>
|
|
</Call>
|
|
<If condition="IS_SUCC(@O.MSG_CD)=0">
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="@O.MSG_CD" />
|
|
<Arg name="MsgDat" value="@O.MSG_DAT"/>
|
|
</Exec>
|
|
<Return/>
|
|
</If>
|
|
<If condition="IS_SUCC(@O.MSG_CD)=1">
|
|
<If condition="IS_NOEQUAL_STRING(@O.OUT_DAT.MBL_FLG,1)">
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MSG_CD" value="MKM51070"/>
|
|
<Arg name="MSG_INF" value="营销工具暂不支持异网用户"/>
|
|
</Exec>
|
|
<Return/>
|
|
</If>
|
|
</If>
|
|
<!-- end -->
|
|
|
|
<!--手机号、内部用户号检查-->
|
|
<Call function="Query_MBLNO_USRNO" package="MKM">
|
|
<Input>MBL_NO|USR_NO|</Input>
|
|
<Output>MSG_CD|MSG_DAT|MBL_NO|USR_NO|USR_PROV|USR_CITY|USR_CITY_NM|USR_STS|</Output>
|
|
</Call>
|
|
<If condition="IS_SUCC(@O.MSG_CD)=0">
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="@O.MSG_CD" />
|
|
<Arg name="MsgDat" value="@O.MSG_DAT"/>
|
|
</Exec>
|
|
<Return/>
|
|
</If>
|
|
<Set>MBL_NO=@O.MBL_NO</Set>
|
|
<Set>OUSR_NO=@O.USR_NO</Set>
|
|
<Set>USR_PROV=@O.USR_PROV</Set>
|
|
<Set>USR_CITY=@O.USR_CITY</Set>
|
|
<Set>USR_CITY_NM=@O.USR_CITY_NM</Set>
|
|
|
|
<!-- 查询商户内部用户号、商户归属省、归属市、归属市名 -->
|
|
<Exec func="PUB:ReadRecord">
|
|
<Arg name="SqlCmd" value="QRY_URMTMINF_USRNO"/>
|
|
</Exec>
|
|
<If condition="~RetCod!=0">
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<!-- @msg不存在该商户 -->
|
|
<Arg name="MsgCd" value="MKM20210"/>
|
|
<Arg name="MsgDat" value="不存在该商户"/>
|
|
</Exec>
|
|
<Return/>
|
|
</If>
|
|
<!--检查该笔订单是否已经存在-->
|
|
<Exec func="PUB:ReadRecord">
|
|
<Arg name="SqlCmd" value="QRY_MKMTJNL"/>
|
|
</Exec>
|
|
<If condition="IS_EQUAL_STRING($ISEXISTS,Y)">
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<!-- @msg该笔订单已经存在 -->
|
|
<Arg name="MsgCd" value="MKM22001"/>
|
|
<Arg name="MsgDat" value="该笔订单已经存在"/>
|
|
</Exec>
|
|
<Return/>
|
|
</If>
|
|
|
|
<!-- 检查是否有快捷活动的优惠金额传入 -->
|
|
|
|
<If condition="DOUBLECMP($RAT_AMT,1,0)">
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<!-- @msg营销工具金额非法-->
|
|
<Arg name="MsgCd" value="MKM21018"/>
|
|
<Arg name="MsgDat" value="营销工具金额非法"/>
|
|
</Exec>
|
|
<Return/>
|
|
</If>
|
|
<!-- 查询活动信息 -->
|
|
<Exec func="PUB:ReadRecord">
|
|
<Arg name="SqlCmd" value="QRY_MKMTACTINFO"/>
|
|
</Exec>
|
|
<If condition="~RetCod!=0">
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="MKM21004"/>
|
|
<Arg name="MsgDat" value="不存在该营销工具"/>
|
|
</Exec>
|
|
<Return/>
|
|
</If>
|
|
|
|
<!-- 使用流水表中jrn_no一致 -->
|
|
<Set>GWA.JRN_NO=$UPD_JRN</Set>
|
|
<!-- 扣减电子券 -->
|
|
<Set>USR_NO=#ORD_RAT_USR_NO</Set>
|
|
|
|
<!-- 查询电子券是否存在且红包余额足够 ,查询用户可以扣减的红包信息-->
|
|
<Exec func="PUB:QueryInGroup" error="IGNORE">
|
|
<Arg name="SqlCmd" value="QRY_MKMACT_INFO"/>
|
|
<Arg name="RecordName" value="BONREC"/>
|
|
</Exec>
|
|
<If condition="~RetCod=-1">
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="MKM20303"/>
|
|
<Arg name="MsgDat" value="查询红包信息失败"/>
|
|
</Exec>
|
|
<Return/>
|
|
</If>
|
|
<ElseIf condition="~RetCod=2">
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="MKM20303"/>
|
|
<Arg name="MsgDat" value="查询红包信息失败"/>
|
|
</Exec>
|
|
<Return/>
|
|
</ElseIf>
|
|
<!-- 循环扣减电子券金额 -->
|
|
<Set>BON_INDEX=1</Set>
|
|
<Set>ORD_AMT_T=$RAT_AMT</Set>
|
|
<Set>RAT_AMT=$RAT_AMT</Set> <!-- 需扣减的电子券金额 -->
|
|
<Set>BON_TOT_AMT=0</Set> <!--用于纪录本次交易使用的红包总额-->
|
|
<Set>TOT_DR_AMT=0</Set> <!--用于入账处理:月结红包-->
|
|
<Set>TOT_TN_AMT=0</Set> <!--T+N红包-->
|
|
<Set>TOT_PAY_BON_AMT=0</Set>
|
|
<!--循环处理每一个营销工具-->
|
|
<!-- 查询公共账户的信息 -->
|
|
<While condition="$BON_INDEX <= $REC_NUM">
|
|
<Set>BON_ID=BONREC[$BON_INDEX].BON_ID</Set>
|
|
<Set>USE_DT=BONREC[$BON_INDEX].USE_DT</Set>
|
|
<Set>CUR_AC_BAL=BONREC[$BON_INDEX].CUR_AC_BAL</Set>
|
|
<Set>LAST_AC_BAL=BONREC[$BON_INDEX].LAST_AC_BAL</Set>
|
|
<Set>MKT_ID=BONREC[$BON_INDEX].MKT_ID</Set>
|
|
<Set>ISS_ID_TYP=BONREC[$BON_INDEX].ISS_ID_TYP</Set>
|
|
<Set>ISS_ID=BONREC[$BON_INDEX].ISS_ID</Set>
|
|
<Set>CAP_ID_TYP=BONREC[$BON_INDEX].CAP_ID_TYP</Set>
|
|
<Set>CAP_ID=BONREC[$BON_INDEX].CAP_ID</Set>
|
|
<Set>PRD_TYP=BONREC[$BON_INDEX].PRD_TYP</Set>
|
|
|
|
<!--查询电子券的结算类型-->
|
|
<Exec func="PUB:ReadRecord" error="IGNORE">
|
|
<Arg name="SqlCmd" value="QRY_MKMTMERC"/>
|
|
</Exec>
|
|
<If condition="~RetCod!=0">
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<!-- @msg不存在该商户的结算方式 -->
|
|
<Arg name="MsgCd" value="MKM60020"/>
|
|
<Arg name="MsgDat" value="不存在该商户的结算方式"/>
|
|
</Exec>
|
|
<Return/>
|
|
</If>
|
|
<Set>BON_INDEX=ADD($BON_INDEX,1)</Set>
|
|
<If condition="AMTCMP($ORD_AMT_T,0)=0">
|
|
<Break/>
|
|
</If>
|
|
<If condition="NOT(IS_EQUAL_DOUBLE($RAT_AMT,$CUR_AC_BAL))">
|
|
<Continue />
|
|
</If>
|
|
<Set>UPD_DT=$GWA.AC_DT</Set> <!-- 最后记账日期 -->
|
|
<Set>BON_TOT_AMT=ADDAMT($BON_TOT_AMT,$CUR_AC_BAL)</Set>
|
|
<!--判断红包使用金额是否超过上限-->
|
|
<If condition="AMTCMP($BON_TOT_AMT,$RAT_AMT)=1">
|
|
<Set>REAL_DIFF_AMT=SUBAMT($BON_TOT_AMT,$RAT_AMT)</Set>
|
|
<Set>REAL_BON_AMT=SUBAMT($CUR_AC_BAL,$REAL_DIFF_AMT)</Set> <!-- 单个红包实际使用金额 -->
|
|
<Set>BON_TOT_AMT=$RAT_AMT</Set>
|
|
</If>
|
|
<Else>
|
|
<Set>REAL_BON_AMT=$CUR_AC_BAL</Set>
|
|
</Else>
|
|
|
|
<!--计算上日券面余额-->
|
|
<If condition="NOT(ISNULL($USE_DT))">
|
|
<If condition="STRCMP($USE_DT,$CUR_DT) < 0">
|
|
<Set>LAST_AC_BAL=$CUR_AC_BAL</Set>
|
|
</If>
|
|
</If>
|
|
<!--剩余交易金额小于可用红包金额-->
|
|
<If condition="AMTCMP($ORD_AMT_T,$REAL_BON_AMT)=-1">
|
|
<Set>DR_AMT=$ORD_AMT_T</Set> <!--使用红包金额-->
|
|
<Set>CUR_AC_BAL=SUBAMT($CUR_AC_BAL,$DR_AMT)</Set> <!--红包余额-->
|
|
<Set>ORD_AMT_T=0</Set> <!--剩余交易金额-->
|
|
</If>
|
|
<Else>
|
|
<Set>DR_AMT=$REAL_BON_AMT</Set> <!--使用红包金额-->
|
|
<Set>CUR_AC_BAL=SUBAMT($CUR_AC_BAL,$DR_AMT)</Set> <!--红包余额-->
|
|
<Set>ORD_AMT_T=SUBAMT($ORD_AMT_T,$DR_AMT)</Set> <!--剩余交易金额-->
|
|
</Else>
|
|
<!--更新抵价券明细表中状态、上日券面余额、券面余额、最近使用时间、最近使用订单号、最新更新流水号-->
|
|
<Exec func="PUB:ExecSql" error="IGNORE">
|
|
<Arg name="SqlCmd" value="UPD_MKMTBON_INF"/>
|
|
</Exec>
|
|
<If condition="~RetCod!=0">
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<!-- @msg更新抵价券明细表失败 -->
|
|
<Arg name="MsgCd" value="MKM20806"/>
|
|
<Arg name="MsgDat" value="更新抵价券明细表失败 "/>
|
|
</Exec>
|
|
<Return/>
|
|
</If>
|
|
<!--移动出资的红包计算总金额,用于入账-->
|
|
<If condition="IS_EQUAL_STRING($CAP_ID_TYP,0)">
|
|
<If condition="IS_EQUAL_STRING($PRD_TYP,0)">
|
|
<If condition="$STL_PERD_FLG=1">
|
|
<Set>TOT_TN_AMT=ADDAMT($TOT_TN_AMT,$DR_AMT)</Set>
|
|
<Set>TOT_PAY_BON_AMT=$TOT_TN_AMT</Set>
|
|
</If>
|
|
<Else>
|
|
<Set>TOT_DR_AMT=ADDAMT($TOT_DR_AMT,$DR_AMT)</Set>
|
|
<Set>TOT_PAY_BON_AMT=$TOT_DR_AMT</Set>
|
|
|
|
</Else>
|
|
</If>
|
|
</If>
|
|
|
|
<!--登记红包使用流水表-->
|
|
<Set>TX_CD=$GWA.TX_CD</Set> <!--交易码-->
|
|
<Set>MSG_CD=$MSG_CD</Set>
|
|
<Set>RSP_CD=MKM00000</Set> <!--返回响应码-->
|
|
<Set>RTN_MSC_TYP=N</Set> <!--返回信息码类型-->
|
|
<Set>TX_SYS_DT=$GWA.TX_DT</Set>
|
|
<Set>TX_SYS_TM=$GWA.TX_TM</Set>
|
|
<Set>TX_ACC_DT=$GWA.AC_DT</Set> <!--交易记账日期-->
|
|
<Set>AC_DT=$GWA.AC_DT</Set> <!--交易记账日期-->
|
|
<Set>TX_STS=S</Set> <!--交易状态-->
|
|
<Set>USE_TYP=1</Set> <!--使用标志-->
|
|
<Set>BON_BAL=$CUR_AC_BAL</Set> <!--抵价券余额-->
|
|
<Set>REAL_MERC_ID=$MERC_ID</Set> <!--实际交易商户号-->
|
|
<Set>REAL_MERC_NM=$MERC_CNM</Set> <!--实际交易商户名称-->
|
|
<Set>RVS_TX_FLG=N</Set> <!--冲正交易标志-->
|
|
<Set>CLR_MERC=$MERC_ID</Set> <!--清算商户编号-->
|
|
|
|
<!--调用组件查询出资方名称-->
|
|
<Set>MP_ID_TYP=$CAP_ID_TYP</Set>
|
|
<Set>MP_ID=$CAP_ID</Set>
|
|
<Call function="QueryMerProvName" package="MKM">
|
|
<Input>MP_ID_TYP|MP_ID|</Input>
|
|
<Output>MP_NM|MERC_PROV|MERC_CITY|MERC_CITY_NM|MSG_CD|MSG_DAT|</Output>
|
|
</Call>
|
|
<Set>CAP_NM=@O.MP_NM</Set> <!--出资方名称-->
|
|
<Set>ORD_TYP=00</Set> <!--订单类型-->
|
|
<Set>BUS_ACP_CNL=$BUS_CNL</Set> <!--业务受理渠道-->
|
|
<Set>SYS_CNL=IPS</Set>
|
|
<Set>OLD_TX_DT=$ORD_DT</Set> <!--原始交易日期-->
|
|
<Set>OLD_TX_TM=$ORD_TM</Set> <!--原始交易时间-->
|
|
<Exec func="PUB:InsertRecord" error="IGNORE">
|
|
<Arg name="TblNam" value="MKMTJNL"/>
|
|
</Exec>
|
|
<If condition="~RetCod!=0">
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<!-- @msg登记流水信息失败 -->
|
|
<Arg name="MsgCd" value="MKM22003"/>
|
|
<Arg name="MsgDat" value="登记流水信息失败"/>
|
|
</Exec>
|
|
<Return/>
|
|
</If>
|
|
</While>
|
|
<!-- 判断扣减金额是否一致 -->
|
|
<If condition="DOUBLECMP($RAT_AMT,ne,$TOT_PAY_BON_AMT)">
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="MKM42031"/>
|
|
<Arg name="MsgDat" value="订单直减扣减电子券失败"/>
|
|
</Exec>
|
|
<Return/>
|
|
</If>
|
|
|
|
<!--移动出资的红包做记账处理-->
|
|
<If condition="DOUBLECMP($TOT_TN_AMT,6,0)">
|
|
<!--移动出资的做记账处理: 借记处理-->
|
|
<Set>INNER_WITHDRAW_IN.AC_CD=#IN_MKM_AC_CD3</Set> <!--账户代码-->
|
|
<Set>INNER_WITHDRAW_IN.AC_TYP=#IN_MKM_AC_TYP3</Set> <!--账户种类-->
|
|
<Set>INNER_WITHDRAW_IN.AC_NM= </Set> <!--账户名称-->
|
|
<Set>INNER_WITHDRAW_IN.CAP_TYP=1</Set> <!--资金种类 1-现金 2-充值卡-->
|
|
<Set>INNER_WITHDRAW_IN.AMT=$TOT_TN_AMT</Set> <!--支取金额-->
|
|
<Set>INNER_WITHDRAW_IN.TX_DT=$ORD_DT</Set> <!--原始交易日期-->
|
|
<Set>INNER_WITHDRAW_IN.TX_TM=$ORD_TM</Set> <!--原始交易时间-->
|
|
<Set>INNER_WITHDRAW_IN.TX_CD=$GWA.TX_CD</Set> <!--交易码-->
|
|
<Set>INNER_WITHDRAW_IN.TX_TYP=#PAY_TX_TYP</Set> <!--消费交易类型-->
|
|
<Set>INNER_WITHDRAW_IN.BUS_TYP=#PAY_BUS_TYP</Set> <!--业务类型-->
|
|
<Set>INNER_WITHDRAW_IN.TX_OPP_TYP=1</Set> <!--交易对手类型 0-用户 1-商户-->
|
|
<Set>INNER_WITHDRAW_IN.TX_OPP_CD=$MERC_USR_NO</Set> <!--交易对手编号-->
|
|
<Set>INNER_WITHDRAW_IN.ORD_TYP=00</Set> <!--订单类型-->
|
|
<Set>INNER_WITHDRAW_IN.ORD_NO=$ORD_NO</Set> <!--内部订单号-->
|
|
<Set>INNER_WITHDRAW_IN.MERC_ID=$MERC_ID</Set> <!--入账商户编号-->
|
|
<Set>INNER_WITHDRAW_IN.TX_AMT=$ORD_AMT</Set> <!--对应原始金额-->
|
|
<Set>INNER_WITHDRAW_IN.VCH_NO_TYP=0</Set> <!--传票号类型 0-交易流水号-->
|
|
<Set>INNER_WITHDRAW_IN.VCH_NO=$GWA.JRN_NO</Set> <!--传票号-->
|
|
<Call function="InnerMkmWithdraw" package="MKM">
|
|
<Input>INNER_WITHDRAW_IN|GWA|</Input>
|
|
<Output>INNER_WITHDRAW_OUT|MSG_CD|MSG_DAT|</Output>
|
|
</Call>
|
|
<If condition="IS_SUCC(@O.MSG_CD)=0">
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="@O.MSG_CD" />
|
|
<Arg name="MsgDat" value="@O.MSG_DAT"/>
|
|
</Exec>
|
|
<Return/>
|
|
</If>
|
|
|
|
<If condition="IS_EQUAL_STRING($ASYNC_FLG,1)">
|
|
<!-- 如果入账标志为1则入中间科目 -->
|
|
<!-- add 记账处理: 贷记处理-->
|
|
<Set>INNER_DEPOSIT_IN.AC_CD=#IN_MKM_AC_CD6</Set> <!--账户代码 modify-->
|
|
<Set>INNER_DEPOSIT_IN.AC_TYP=#IN_MKM_AC_TYP6</Set> <!--账户种类 modify-->
|
|
<Set>INNER_DEPOSIT_IN.AC_NM= </Set> <!--账户名称-->
|
|
<Set>INNER_DEPOSIT_IN.CAP_TYP=1</Set> <!--资金种类 1-现金 2-充值卡-->
|
|
<Set>INNER_DEPOSIT_IN.AMT=$TOT_TN_AMT</Set> <!--支取金额 modify-->
|
|
<Set>INNER_DEPOSIT_IN.TX_DT=$ORD_DT</Set> <!--原始交易日期-->
|
|
<Set>INNER_DEPOSIT_IN.TX_TM=$ORD_TM</Set> <!--原始交易时间-->
|
|
<Set>INNER_DEPOSIT_IN.TX_CD=$GWA.TX_CD</Set> <!--交易码-->
|
|
<Set>INNER_DEPOSIT_IN.TX_TYP=#PAY_TX_TYP</Set> <!--消费交易类型-->
|
|
<Set>INNER_DEPOSIT_IN.BUS_TYP=#PAY_BUS_TYP</Set> <!--业务类型-->
|
|
<Set>INNER_DEPOSIT_IN.TX_OPP_TYP=0</Set> <!--交易对手类型 0-用户 1-商户 modify-->
|
|
<Set>INNER_DEPOSIT_IN.TX_OPP_CD=$USR_NO</Set> <!--交易对手编号 modify-->
|
|
<Set>INNER_DEPOSIT_IN.ORD_TYP=00</Set> <!--订单类型-->
|
|
<Set>INNER_DEPOSIT_IN.ORD_NO=$ORD_NO</Set> <!--内部订单号-->
|
|
<Set>INNER_DEPOSIT_IN.MERC_ID=$MERC_ID</Set> <!--入账商户编号-->
|
|
<Set>INNER_DEPOSIT_IN.TX_AMT=$ORD_AMT</Set> <!--对应原始金额-->
|
|
<Set>INNER_DEPOSIT_IN.VCH_NO_TYP=0</Set> <!--传票号类型 0-交易流水号-->
|
|
<Set>INNER_DEPOSIT_IN.VCH_NO=$GWA.JRN_NO</Set> <!--传票号-->
|
|
<Call function="InnerMkmDeposit" package="MKM">
|
|
<Input>INNER_DEPOSIT_IN|GWA|</Input>
|
|
<Output>INNER_DEPOSIT_OUT|MSG_CD|MSG_DAT|</Output>
|
|
</Call>
|
|
<If condition="IS_SUCC(@O.MSG_CD)=0">
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="@O.MSG_CD" />
|
|
<Arg name="MsgDat" value="@O.MSG_DAT"/>
|
|
</Exec>
|
|
<Return/>
|
|
</If>
|
|
|
|
<Set>INNER_BON_AC_NO=STRCAT(#IN_MKM_AC_TYP6,#IN_MKM_AC_CD6)</Set>
|
|
</If>
|
|
<Else>
|
|
<!--Modify by Liuql 入账商户和扣款商户换成该交易商户的清分商户 beg-->
|
|
<Set>QMI_IN.MERC_ID=$MERC_ID</Set>
|
|
|
|
<Exec func="URM:QueryMerchInfo">
|
|
<Arg name="_I_INP_DAT" value="QMI_IN" />
|
|
<Arg name="_O_OUT_DAT" value="QMI_OUT" />
|
|
</Exec>
|
|
<If condition="NOT(IS_SUCC(@O.MSG_CD))"> <!--查询商户基本信息失败 -->
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="@O.MSG_CD" />
|
|
<Arg name="MsgDat" value="查询商户基本信息失败" />
|
|
</Exec>
|
|
<Return />
|
|
</If>
|
|
<Else>
|
|
<Set>CLR_MERC=@O.QMI_OUT.CLR_MERC</Set> <!-- 清算商户 -->
|
|
</Else>
|
|
|
|
<Set>MERC_DEPOSIT_IN.USR_NO=</Set> <!-- 商户内部用户号 -->
|
|
<Set>MERC_DEPOSIT_IN.MERC_ID1=$CLR_MERC</Set> <!-- 商户编号 -->
|
|
<!--Modify by Liuql 入账商户和扣款商户换成该交易商户的清分商户 end-->
|
|
<!-- 直接入商户账户 -->
|
|
<Set>MERC_DEPOSIT_IN.CAP_TYP1=1</Set> <!-- 资金种类1: 1现金 2充值卡3红包-->
|
|
<Set>MERC_DEPOSIT_IN.AMT1=0</Set> <!-- 存入金额 -->
|
|
<Set>MERC_DEPOSIT_IN.CAP_TYP2=2</Set> <!-- 资金种类2: 1现金 2充值卡3红包-->
|
|
<Set>MERC_DEPOSIT_IN.AMT2=0</Set> <!-- 存入金额 -->
|
|
<Set>MERC_DEPOSIT_IN.CAP_TYP3=3</Set> <!-- 资金种类3: 1现金 2充值卡3红包-->
|
|
<Set>MERC_DEPOSIT_IN.AMT3=$TOT_TN_AMT</Set> <!-- 存入金额 -->
|
|
<Set>MERC_DEPOSIT_IN.TX_DT=$ORD_DT</Set> <!-- 原始交易日期 -->
|
|
<Set>MERC_DEPOSIT_IN.TX_TM=$ORD_TM</Set> <!-- 原始交易时间 -->
|
|
<Set>MERC_DEPOSIT_IN.BUS_TYP=#PAY_BUS_TYP</Set> <!-- 业务类型 -->
|
|
<Set>MERC_DEPOSIT_IN.TX_TYP=#PAY_TX_TYP</Set> <!-- 交易类型 -->
|
|
<Set>MERC_DEPOSIT_IN.TX_CD=$GWA.TX_CD</Set> <!-- 交易码 -->
|
|
<Set>MERC_DEPOSIT_IN.MAX_CHK_FLG=N</Set> <!--是否需要检查最高金额: Y需要 N不需要 -->
|
|
<Set>MERC_DEPOSIT_IN.MIN_CHK_FLGP=N</Set> <!-- 是否需要检查最低金额: Y需要 N不需要 -->
|
|
<Set>MERC_DEPOSIT_IN.TX_OPP_TYP=0</Set> <!-- 交易对手类型 0-用户 1-商户-->
|
|
<Set>MERC_DEPOSIT_IN.TX_OPP_CD=$USR_NO</Set> <!-- 交易对手编号-->
|
|
<Set>MERC_DEPOSIT_IN.TX_DESC=T+N红包存入</Set> <!-- 内部账户记账标志为未记账 -->
|
|
<Set>MERC_DEPOSIT_IN.ORD_TYP=00</Set> <!-- 00 远程消费 -->
|
|
<Set>MERC_DEPOSIT_IN.ORD_NO=$ORD_NO</Set> <!-- 内部订单号 -->
|
|
<Set>MERC_DEPOSIT_IN.MERC_ID=$MERC_ID</Set> <!-- 入账商户编号 -->
|
|
<Set>MERC_DEPOSIT_IN.TX_AMT=$ORD_AMT</Set> <!-- 入账原始金额 -->
|
|
<Set>MERC_DEPOSIT_IN.VCH_NO_TYP=0</Set> <!-- 传票号类型 -->
|
|
<Set>MERC_DEPOSIT_IN.VCH_NO=$GWA.JRN_NO</Set> <!-- 传票号 -->
|
|
|
|
<Call function="InnerMercAccDeposit" package="MKM">
|
|
<Input>MERC_DEPOSIT_IN|GWA|</Input>
|
|
<Output>MERC_DEPOSIT_OUT|MSG_CD|MSG_DAT|</Output>
|
|
</Call>
|
|
<If condition="IS_SUCC(@O.MSG_CD)=0">
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="@O.MSG_CD" />
|
|
<Arg name="MsgDat" value="@O.MSG_DAT"/>
|
|
</Exec>
|
|
<Return/>
|
|
</If>
|
|
</Else>
|
|
</If>
|
|
<If condition="DOUBLECMP($TOT_DR_AMT,6,0)">
|
|
<!--移动出资的做记账处理: 借记处理-->
|
|
<Set>INNER_WITHDRAW_IN.AC_CD=#IN_MKM_AC_CD1</Set> <!--账户代码-->
|
|
<Set>INNER_WITHDRAW_IN.AC_TYP=#IN_MKM_AC_TYP1</Set> <!--账户种类-->
|
|
<Set>INNER_WITHDRAW_IN.AC_NM= </Set> <!--账户名称-->
|
|
<Set>INNER_WITHDRAW_IN.CAP_TYP=1</Set> <!--资金种类 1-现金 2-充值卡-->
|
|
<Set>INNER_WITHDRAW_IN.AMT=$TOT_DR_AMT</Set> <!--支取金额-->
|
|
<Set>INNER_WITHDRAW_IN.TX_DT=$ORD_DT</Set> <!--原始交易日期-->
|
|
<Set>INNER_WITHDRAW_IN.TX_TM=$ORD_TM</Set> <!--原始交易时间-->
|
|
<Set>INNER_WITHDRAW_IN.TX_CD=$GWA.TX_CD</Set> <!--交易码-->
|
|
<Set>INNER_WITHDRAW_IN.TX_TYP=#PAY_TX_TYP</Set> <!--消费交易类型-->
|
|
<Set>INNER_WITHDRAW_IN.BUS_TYP=#PAY_BUS_TYP</Set> <!--业务类型-->
|
|
<Set>INNER_WITHDRAW_IN.TX_OPP_TYP=1</Set> <!--交易对手类型 0-用户 1-商户-->
|
|
<Set>INNER_WITHDRAW_IN.TX_OPP_CD=$MERC_USR_NO</Set> <!--交易对手编号-->
|
|
<Set>INNER_WITHDRAW_IN.ORD_TYP=00</Set> <!--订单类型-->
|
|
<Set>INNER_WITHDRAW_IN.ORD_NO=$ORD_NO</Set> <!--内部订单号-->
|
|
<Set>INNER_WITHDRAW_IN.MERC_ID=$MERC_ID</Set> <!--入账商户编号-->
|
|
<Set>INNER_WITHDRAW_IN.TX_AMT=$ORD_AMT</Set> <!--对应原始金额-->
|
|
<Set>INNER_WITHDRAW_IN.VCH_NO_TYP=0</Set> <!--传票号类型 0-交易流水号-->
|
|
<Set>INNER_WITHDRAW_IN.VCH_NO=$GWA.JRN_NO</Set> <!--传票号-->
|
|
<Call function="InnerMkmWithdraw" package="MKM">
|
|
<Input>INNER_WITHDRAW_IN|GWA|</Input>
|
|
<Output>INNER_WITHDRAW_OUT|MSG_CD|MSG_DAT|</Output>
|
|
</Call>
|
|
<If condition="IS_SUCC(@O.MSG_CD)=0">
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="@O.MSG_CD" />
|
|
<Arg name="MsgDat" value="@O.MSG_DAT"/>
|
|
</Exec>
|
|
<Return/>
|
|
</If>
|
|
|
|
<!--移动出资的做记账处理: 贷记处理-->
|
|
<Set>INNER_DEPOSIT_IN.AC_CD=#IN_MKM_AC_CD2</Set> <!--账户代码-->
|
|
<Set>INNER_DEPOSIT_IN.AC_TYP=#IN_MKM_AC_TYP2</Set> <!--账户种类-->
|
|
<Set>INNER_DEPOSIT_IN.AC_NM= </Set> <!--账户名称-->
|
|
<Set>INNER_DEPOSIT_IN.CAP_TYP=1</Set> <!--资金种类 1-现金 2-充值卡-->
|
|
<Set>INNER_DEPOSIT_IN.AMT=$TOT_DR_AMT</Set> <!--支取金额-->
|
|
<Set>INNER_DEPOSIT_IN.TX_DT=$ORD_DT</Set> <!--原始交易日期-->
|
|
<Set>INNER_DEPOSIT_IN.TX_TM=$ORD_TM</Set> <!--原始交易时间-->
|
|
<Set>INNER_DEPOSIT_IN.TX_CD=$GWA.TX_CD</Set> <!--交易码-->
|
|
<Set>INNER_DEPOSIT_IN.TX_TYP=#PAY_TX_TYP</Set> <!--消费交易类型-->
|
|
<Set>INNER_DEPOSIT_IN.BUS_TYP=#PAY_BUS_TYP</Set> <!--业务类型-->
|
|
<Set>INNER_DEPOSIT_IN.TX_OPP_TYP=1</Set> <!--交易对手类型 0-用户 1-商户-->
|
|
<Set>INNER_DEPOSIT_IN.TX_OPP_CD=$MERC_USR_NO</Set> <!--交易对手编号-->
|
|
<Set>INNER_DEPOSIT_IN.ORD_TYP=00</Set> <!--订单类型-->
|
|
<Set>INNER_DEPOSIT_IN.ORD_NO=$ORD_NO</Set> <!--内部订单号-->
|
|
<Set>INNER_DEPOSIT_IN.MERC_ID=$MERC_ID</Set> <!--入账商户编号-->
|
|
<Set>INNER_DEPOSIT_IN.TX_AMT=$ORD_AMT</Set> <!--对应原始金额-->
|
|
<Set>INNER_DEPOSIT_IN.VCH_NO_TYP=0</Set> <!--传票号类型 0-交易流水号-->
|
|
<Set>INNER_DEPOSIT_IN.VCH_NO=$GWA.JRN_NO</Set> <!--传票号-->
|
|
<Call function="InnerMkmDeposit" package="MKM">
|
|
<Input>INNER_DEPOSIT_IN|GWA|</Input>
|
|
<Output>INNER_DEPOSIT_OUT|MSG_CD|MSG_DAT|</Output>
|
|
</Call>
|
|
<If condition="IS_SUCC(@O.MSG_CD)=0">
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="@O.MSG_CD" />
|
|
<Arg name="MsgDat" value="@O.MSG_DAT"/>
|
|
</Exec>
|
|
<Return/>
|
|
</If>
|
|
</If>
|
|
|
|
<If condition="ISNULL($TOT_TN_AMT)">
|
|
<Set>TOT_TN_AMT=0</Set>
|
|
</If>
|
|
|
|
<Set>BON_OUT_DAT.TOT_TN_AMT=$TOT_TN_AMT</Set>
|
|
<Set>BON_OUT_DAT.INNER_BON_AC_NO=$INNER_BON_AC_NO</Set>
|
|
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<!-- @msg交易成功 -->
|
|
<Arg name="MsgCd" value="MKM00000"/>
|
|
<Arg name="MsgDat" value="交易成功"/>
|
|
</Exec>
|
|
<Exec func="PUB:DumpETF"/>
|
|
</Process>
|
|
</Function>
|
|
</Package> |