750 lines
36 KiB
XML
750 lines
36 KiB
XML
<?xml version='1.0' encoding='UTF-8'?>
|
|
<Package>
|
|
<!-- BonBack_OrderRate-->
|
|
<!-- BON_INP_DAT-节点名称 -->
|
|
<!--输入参数:MKT_ID 活动编号 必输 -->
|
|
<!-- ORD_NO 订单编号 必输 -->
|
|
<!-- MBL_NO 用户手机号 必输 -->
|
|
<!-- MERC_ID 商户编号 必输 -->
|
|
<!-- MERC_ORD_NO 商户订单编号 必输 -->
|
|
<!-- RT_AMT 退款金额 -->
|
|
<!-- SYS_CNL 系统渠道 必输 -->
|
|
<!-- BUS_CNL 业务渠道 必输 -->
|
|
|
|
<!-- BON_OUT_DAT-节点名称 -->
|
|
<!-- RT_AMT 退款处理部分总额 以元为单位 -->
|
|
<!-- EXP_AMT 过期处理部分总额 以元为单位-->
|
|
|
|
<!-- 订单直减退款组件 -->
|
|
<Function name="BonBack_OrderRate">
|
|
<Input>BON_INP_DAT|GWA|</Input>
|
|
<Output>BON_OUT_DAT|MSG_CD|MSG_DAT|</Output>
|
|
<!-- 查询流水表红包消费订单金额 -->
|
|
<DynSentence name="QRY_MKMTJNL_SUM">
|
|
<Sentence>
|
|
SELECT NVL(SUM(CASE WHEN TX_STS='S' AND USE_TYP='1' AND RVS_TX_FLG='N' THEN DR_AMT + NVL(USR_DR_AMT,0) ELSE 0 END),0)
|
|
-NVL(SUM(CASE WHEN TX_STS='S' AND USE_TYP='3' AND RVS_TX_FLG='R' THEN RT_AMT + NVL(USR_RT_AMT,0) ELSE 0 END),0) AS TOT_DR_AMT
|
|
FROM MKMTJNL
|
|
WHERE MERC_ORD_NO = ?
|
|
AND ORD_NO=?
|
|
AND MERC_ID=?
|
|
AND MBL_NO=?
|
|
AND MKT_ID=?
|
|
AND PRD_TYP='0'
|
|
AND USR_NO=?
|
|
</Sentence>
|
|
<Fields>MERC_ORD_NO|ORD_NO|MERC_ID|MBL_NO|MKT_ID|USR_NO|</Fields>
|
|
</DynSentence>
|
|
|
|
<!-- 查询流水表红包消费记录,红包过期日期,活动结算周期方式 -->
|
|
<DynSentence name="QRY_MKMTJNL">
|
|
<Sentence>
|
|
SELECT A.*,B.EXP_DT,B.PRD_ID,C.CAP_TYP, B.CUR_AC_BAL
|
|
FROM MKMTJNL A,MKMTBON B,MKMTACT C
|
|
WHERE A.MERC_ORD_NO = ?
|
|
AND A.ORD_NO = ?
|
|
AND A.MERC_ID = ?
|
|
AND A.MBL_NO = ?
|
|
AND A.USR_NO = ?
|
|
AND A.TX_STS='S'
|
|
AND A.USE_TYP='1'
|
|
AND C.MKT_ID=?
|
|
AND RVS_TX_FLG='N'
|
|
AND A.BON_ID=B.BON_ID
|
|
AND A.MKT_ID=C.MKT_IDR
|
|
AND B.MKT_ID=C.MKT_ID
|
|
AND A.PRD_TYP='0'
|
|
AND (A.RT_TYP != 'RA' OR A.RT_TYP IS NULL)
|
|
ORDER BY B.EXP_DT DESC
|
|
FOR UPDATE
|
|
</Sentence>
|
|
<Fields>MERC_ORD_NO|ORD_NO|MERC_ID|MBL_NO|USR_NO|MKT_ID|</Fields>
|
|
</DynSentence>
|
|
|
|
<!-- 查询已部分退款的总额 -->
|
|
<DynSentence name="QRY_MKMTJNL_PARTBACK">
|
|
<Sentence>
|
|
SELECT NVL(SUM(RT_AMT),0) AS RP_AMT, NVL(SUM(USR_RT_AMT),0) AS USR_RP_AMT
|
|
FROM MKMTJNL
|
|
WHERE TX_STS='S'
|
|
AND USE_TYP='3'
|
|
AND RVS_TX_FLG='R'
|
|
AND USR_NO = ?
|
|
AND BON_ID = ?
|
|
AND MERC_ORD_NO = ?
|
|
AND ORD_NO = ?
|
|
</Sentence>
|
|
<Fields>USR_NO|BON_ID|MERC_ORD_NO|ORD_NO|</Fields>
|
|
</DynSentence>
|
|
|
|
<!--查询该红包对应商户的结算方式-->
|
|
<DynSentence name="QRY_MKMTMERC">
|
|
<Sentence>
|
|
SELECT DISTINCT A.STL_PERD_FLG FROM MKMTMERC A, PAYADM.MKMTMERCRL B
|
|
WHERE A.MKT_ID = ?
|
|
AND (
|
|
(A.IS_GRP='0' AND A.MERC_ID = ? AND B.MERC_GRP='0')
|
|
OR
|
|
(A.IS_GRP='1' AND B.MERC_ID=? AND A.MERC_ID=B.MERC_GRP AND B.MERC_GRP <> '0')
|
|
)
|
|
AND A.MERC_STS='A'
|
|
AND B.MERC_ID=?
|
|
</Sentence>
|
|
<Fields>MKT_ID|MERC_ID|MERC_ID|MERC_ID|</Fields>
|
|
</DynSentence>
|
|
|
|
<!-- 更新流水表红包消费记录 -->
|
|
<DynSentence name="UPD_MKMTJNL">
|
|
<Sentence>
|
|
UPDATE MKMTJNL SET RT_TYP = ?
|
|
WHERE MERC_ORD_NO = ?
|
|
AND ORD_NO=?
|
|
AND MERC_ID=?
|
|
AND MBL_NO=?
|
|
AND TX_STS='S'
|
|
AND USE_TYP='1'
|
|
AND RVS_TX_FLG='N'
|
|
AND BON_ID=?
|
|
AND JRN_NO=?
|
|
</Sentence>
|
|
<Fields>RT_TYP|MERC_ORD_NO|ORD_NO|MERC_ID|MBL_NO|BON_ID|JRN_NO|</Fields>
|
|
</DynSentence>
|
|
|
|
<!-- 更新抵价券表中余额、状态 -->
|
|
<DynSentence name="UPD_MKMTBON">
|
|
<Sentence>
|
|
UPDATE MKMTBON
|
|
SET CUR_AC_BAL = CUR_AC_BAL + ?,
|
|
CUR_USR_AC_BAL = CUR_USR_AC_BAL + ?,
|
|
TM_SMP = TO_CHAR(SYSDATE, 'YYYYMMDDHH24MISS'),
|
|
BON_STS = ?
|
|
WHERE BON_ID=?
|
|
AND BON_AMT >= CUR_AC_BAL + ?
|
|
AND BON_USR_AMT >= NVL(CUR_USR_AC_BAL,0) + ?
|
|
</Sentence>
|
|
<Fields>JRN_RT_AMT|USR_RT_AMT|BON_STS|BON_ID|JRN_RT_AMT|USR_RT_AMT|</Fields>
|
|
</DynSentence>
|
|
|
|
<!-- 更新券别的已失效金额 -->
|
|
<DynSentence name="UPD_MKMTPINF">
|
|
<Sentence>
|
|
UPDATE MKMTPINF SET NULL_TOT_AMT=NULL_TOT_AMT+? WHERE PRD_ID = ?
|
|
</Sentence>
|
|
<Fields>JRN_RT_AMT|PRD_ID|</Fields>
|
|
</DynSentence>
|
|
|
|
<!-- 更新发行方的已失效金额 -->
|
|
<DynSentence name="UPD_MKMTISS">
|
|
<Sentence>
|
|
UPDATE MKMTISS SET NULL_TOT_AMT=NULL_TOT_AMT+? WHERE ISS_ID=? AND MKT_ID=?
|
|
</Sentence>
|
|
<Fields>JRN_RT_AMT|ISS_ID|MKT_ID|</Fields>
|
|
</DynSentence>
|
|
|
|
<!-- 更新活动的已失效金额 -->
|
|
<DynSentence name="UPD_MKMTACT">
|
|
<Sentence>
|
|
UPDATE MKMTACT SET NULL_TOT_AMT=NULL_TOT_AMT+? WHERE MKT_ID=?
|
|
</Sentence>
|
|
<Fields>JRN_RT_AMT|MKT_ID|</Fields>
|
|
</DynSentence>
|
|
|
|
<!-- 读取商户汇总信息表 -->
|
|
<DynSentence name="QRY_MKMTMSUM_INF">
|
|
<Sentence>
|
|
SELECT * FROM MKMTMSUM
|
|
WHERE MERC_ID=?
|
|
AND MKT_ID=?
|
|
AND CAP_TYP=?
|
|
AND CAP_ID_TYP=?
|
|
AND CAP_ID=?
|
|
AND PERD_END_DT=?
|
|
AND ISS_ID=?
|
|
</Sentence>
|
|
<Fields>MERC_ID|MKT_ID|CAP_TYP|CAP_ID_TYP|CAP_ID|MTH_END_DT|ISS_ID|</Fields>
|
|
</DynSentence>
|
|
|
|
<!-- 查询商户归属省市信息 -->
|
|
<DynSentence name="QRY_URMTMINF_MER">
|
|
<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="UPD_MKMTMSUM_INF">
|
|
<Sentence>
|
|
UPDATE MKMTMSUM
|
|
SET LAST_AC_BAL = CUR_AC_BAL,
|
|
LAST_TX_BAL = LAST_TX_BAL,
|
|
CUR_AC_BAL = CUR_AC_BAL - ?,
|
|
CUR_TX_BAL = CUR_TX_BAL - ?,
|
|
UPD_DT = ?,
|
|
TM_SMP = ?,
|
|
TOT_RT_AMT = NVL(TOT_RT_AMT, 0) + ?,
|
|
TOT_REAL_RT_AMT = NVL(TOT_REAL_RT_AMT, 0) + ?
|
|
WHERE MERC_ID = ?
|
|
AND MKT_ID = ?
|
|
AND CAP_TYP = ?
|
|
AND CAP_ID_TYP = ?
|
|
AND CAP_ID = ?
|
|
AND PERD_END_DT = ?
|
|
AND ISS_ID = ?
|
|
</Sentence>
|
|
<Fields>RT_AMT|JRN_RT_AMT|MKM_AC_DT|TM_SMP|RT_AMT|JRN_RT_AMT|MERC_ID|MKT_ID|CAP_TYP|CAP_ID_TYP|CAP_ID|MTH_END_DT|ISS_ID|</Fields>
|
|
</DynSentence>
|
|
|
|
<!-- 查询出资方全称 -->
|
|
<DynSentence name="QRY_CMMTPCOP_NM">
|
|
<Sentence>
|
|
SELECT PROV_LNM FROM CMMTPCOP WHERE PROV_CD=?
|
|
</Sentence>
|
|
<Fields>CAP_ID|</Fields>
|
|
</DynSentence>
|
|
|
|
<Process>
|
|
<Set>MKM_AC_DT=$GWA.AC_DT</Set>
|
|
<Set>SYS_DT=$GWA.TX_DT</Set>
|
|
<Set>SYS_TM=$GWA.TX_TM</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>RT_AMT_SUM=DELBOTHSPACE($BON_INP_DAT.RT_AMT)</Set> <!-- 退款电子券金额 -->
|
|
<Set>MBL_NO=DELBOTHSPACE($BON_INP_DAT.MBL_NO)</Set>
|
|
<Set>SYS_CNL=DELBOTHSPACE($BON_INP_DAT.SYS_CNL)</Set>
|
|
<Set>BUS_CNL=DELBOTHSPACE($BON_INP_DAT.BUS_CNL)</Set>
|
|
<Set>MKT_ID=DELBOTHSPACE($BON_INP_DAT.MKT_ID)</Set>
|
|
|
|
<Set>RT_TX_CD=$GWA.TX_CD</Set>
|
|
<Set>RT_SYS_CNL=$GWA.SYS_CNL</Set>
|
|
<Set>RT_BUS_CNL=$GWA.BUS_CNL</Set>
|
|
<Set>TN_AMT=0</Set> <!-- T+N红包金额 -->
|
|
<Set>PROV_TN_AMT=0</Set> <!-- T+N省公司出资部分金额 -->
|
|
<Set>USR_TN_AMT=0</Set> <!-- T+N用户出资部分金额 -->
|
|
<Set>MM_AMT=0</Set> <!-- 月结红包金额 -->
|
|
<Set>RT_AMT_TMP=$RT_AMT_SUM</Set> <!-- 退回红包金额临时值 -->
|
|
<Set>EXP_AMT=0</Set> <!-- 退回的红包金额包含的已过期部分金额 -->
|
|
<Set>TOT_RT_AMT=0</Set> <!-- 月结红包总退款金额 -->
|
|
|
|
<If condition="DOUBLECMP($RT_AMT_SUM,le,0)">
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="MKM65001"/>
|
|
<Arg name="MsgDat" value="退回的红包金额不能小于等于0"/>
|
|
</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>USR_NO=@O.USR_NO</Set>
|
|
|
|
<Set>USR_NO=#ORD_RAT_USR_NO</Set>
|
|
<Exec func="PUB:ReadRecord">
|
|
<Arg name="SqlCmd" value="QRY_MKMTJNL_SUM"/>
|
|
</Exec>
|
|
<If condition="~RetCod!=0">
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="MKM65002"/>
|
|
<Arg name="MsgDat" value="查询退款订单的红包消费总额失败"/>
|
|
</Exec>
|
|
<Return/>
|
|
</If>
|
|
<If condition="DOUBLECMP($TOT_DR_AMT,lt,$RT_AMT_SUM)">
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="MKM65003"/>
|
|
<Arg name="MsgDat" value="退回的红包金额不能大于订单中的红包消费金额"/>
|
|
</Exec>
|
|
<Return/>
|
|
</If>
|
|
|
|
<!-- 开启游标查询红包消费订单信息 -->
|
|
<Exec func="PUB:OpenCursor">
|
|
<Arg name="SqlCmd" value="QRY_MKMTJNL"/>
|
|
<Arg name="CursorName" value="CURSOR_1"/>
|
|
</Exec>
|
|
<If condition="~RetCod!=0">
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="MKM65004"/>
|
|
<Arg name="MsgDat" value="轮询抵价券消费订单信息失败"/>
|
|
</Exec>
|
|
<Return/>
|
|
</If>
|
|
<While>
|
|
<!-- 取下一笔记录 -->
|
|
<Exec func="PUB:FetchCursor" error="IGNORE">
|
|
<Arg name="CursorName" value="CURSOR_1"/>
|
|
</Exec>
|
|
<If condition="~RetCod=2">
|
|
<Exec func="PUB:CloseCursor">
|
|
<Arg name="CursorName" value="CURSOR_1"/>
|
|
</Exec>
|
|
<Break/>
|
|
</If>
|
|
<ElseIf condition="~RetCod!=0">
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="MKM65004"/>
|
|
<Arg name="MsgDat" value="轮询抵价券消费订单信息失败"/>
|
|
</Exec>
|
|
<Exec func="PUB:CloseCursor">
|
|
<Arg name="CursorName" value="CURSOR_1"/>
|
|
</Exec>
|
|
<Return/>
|
|
</ElseIf>
|
|
|
|
<!-- 需退红包金额为0时,跳出循环 -->
|
|
<If condition="AMTCMP($RT_AMT_TMP,0)=0">
|
|
<Break/>
|
|
</If>
|
|
|
|
<!-- 获取已退款记录 -->
|
|
<If condition="IS_EQUAL_STRING($RT_TYP,RP)">
|
|
<Exec func="PUB:ReadRecord">
|
|
<Arg name="SqlCmd" value="QRY_MKMTJNL_PARTBACK" />
|
|
</Exec>
|
|
<If condition="~RetCod!=0">
|
|
<Continue />
|
|
</If>
|
|
|
|
<!-- 新增字段空值异常特殊处理 -->
|
|
<If condition="ISNULL($USR_DR_AMT)">
|
|
<Set>USR_DR_AMT=0</Set>
|
|
</If>
|
|
<If condition="ISNULL($USR_RP_AMT)">
|
|
<Set>USR_RP_AMT=0</Set>
|
|
</If>
|
|
|
|
<Set>DR_AMT=FSUB($DR_AMT,$RP_AMT,2)</Set> <!-- 省公司出资部分实际消费金额 -->
|
|
<Set>USR_DR_AMT=FSUB($USR_DR_AMT,$USR_RP_AMT,2)</Set> <!-- 用户出资部分实际消费金额 -->
|
|
<Set>JRN_DR_AMT=FADD($DR_AMT,$USR_DR_AMT,2)</Set> <!-- 单笔流水实际消费金额 -->
|
|
</If>
|
|
<Else>
|
|
<!-- 新增字段空值异常特殊处理 -->
|
|
<If condition="ISNULL($USR_DR_AMT)">
|
|
<Set>USR_DR_AMT=0</Set>
|
|
</If>
|
|
<If condition="ISNULL($USR_RP_AMT)">
|
|
<Set>USR_RP_AMT=0</Set>
|
|
</If>
|
|
<Set>DR_AMT=$DR_AMT</Set> <!-- 省公司出资部分实际消费金额 -->
|
|
<Set>USR_DR_AMT=$USR_DR_AMT</Set> <!-- 用户出资部分实际消费金额 -->
|
|
<Set>JRN_DR_AMT=FADD($DR_AMT,$USR_DR_AMT,2)</Set> <!-- 单笔流水实际消费金额 -->
|
|
</Else>
|
|
|
|
<!-- 设置流水表单条记录的退货红包金额 -->
|
|
<If condition="DOUBLECMP($JRN_DR_AMT,gt,$RT_AMT_TMP)"> <!-- 部分退红包 -->
|
|
<Set>JRN_RT_AMT=$RT_AMT_TMP</Set> <!-- 退货红包金额 -->
|
|
<Set>RT_TYP=RP</Set> <!-- 部分退红包标志 -->
|
|
</If>
|
|
<Else> <!-- 全部退红包 -->
|
|
<Set>JRN_RT_AMT=$JRN_DR_AMT</Set>
|
|
<Set>RT_TYP=RA</Set> <!-- 全部退红包标志 -->
|
|
</Else>
|
|
<!-- 更新流水表原消费记录 -->
|
|
<Exec func="PUB:ExecSql">
|
|
<Arg name="SqlCmd" value="UPD_MKMTJNL"/>
|
|
</Exec>
|
|
<If condition="~RetCod!=0">
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="MKM65005"/>
|
|
<Arg name="MsgDat" value="更新抵价券交易流水表失败"/>
|
|
</Exec>
|
|
<Return/>
|
|
</If>
|
|
|
|
<If condition="INTCMP($SYS_DT,gt,$EXP_DT)">
|
|
<Set>EXP_AMT=ADDAMT($EXP_AMT,$JRN_RT_AMT)</Set>
|
|
<Set>BON_STS=E</Set>
|
|
|
|
<!-- 更新券别表已失效金额 -->
|
|
<Exec func="PUB:ExecSql">
|
|
<Arg name="SqlCmd" value="UPD_MKMTPINF"/>
|
|
</Exec>
|
|
<If condition="~RetCod!=0">
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="MKM65006"/>
|
|
<Arg name="MsgDat" value="更新券别表失败"/>
|
|
</Exec>
|
|
<Return/>
|
|
</If>
|
|
|
|
<!-- 更新发行方表已失效金额 -->
|
|
<Exec func="PUB:ExecSql">
|
|
<Arg name="SqlCmd" value="UPD_MKMTISS"/>
|
|
</Exec>
|
|
<If condition="~RetCod!=0">
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="MKM65006"/>
|
|
<Arg name="MsgDat" value="更新发行方表失败"/>
|
|
</Exec>
|
|
<Return/>
|
|
</If>
|
|
|
|
<!-- 更新活动表已失效金额 -->
|
|
<Exec func="PUB:ExecSql">
|
|
<Arg name="SqlCmd" value="UPD_MKMTACT"/>
|
|
</Exec>
|
|
<If condition="~RetCod!=0">
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="MKM65007"/>
|
|
<Arg name="MsgDat" value="更新活动表失败"/>
|
|
</Exec>
|
|
<Return/>
|
|
</If>
|
|
</If>
|
|
<Else>
|
|
<Set>BON_STS=A</Set>
|
|
</Else>
|
|
|
|
<!-- 更新抵价券 -->
|
|
<If condition="DOUBLECMP($USR_DR_AMT,ge,$JRN_RT_AMT)"> <!-- 优先退用户出资部分的金额 -->
|
|
<Set>USR_RT_AMT=$JRN_RT_AMT</Set>
|
|
</If>
|
|
<Else>
|
|
<Set>USR_RT_AMT=$USR_DR_AMT</Set>
|
|
</Else>
|
|
<Set>RT_AMT=FSUB($JRN_RT_AMT,$USR_RT_AMT,2)</Set> <!-- 省公司出资部分的退款金额 -->
|
|
<Exec func="PUB:ExecSql">
|
|
<Arg name="SqlCmd" value="UPD_MKMTBON"/>
|
|
</Exec>
|
|
<If condition="~RetCod=-1">
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="MKM65008"/>
|
|
<Arg name="MsgDat" value="更新抵价券信息失败"/>
|
|
</Exec>
|
|
<Return/>
|
|
</If>
|
|
<ElseIf condition="~RetCod=2">
|
|
<Continue />
|
|
</ElseIf>
|
|
|
|
<!--查询该商户的结算类型-->
|
|
<!--
|
|
<Exec func="PUB:ReadRecord" error="IGNORE">
|
|
<Arg name="SqlCmd" value="QRY_MKMTMERC"/>
|
|
</Exec>
|
|
<If condition="~RetCod!=0">
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="MKM60020"/>
|
|
<Arg name="MsgDat" value="不存在该商户的结算方式"/>
|
|
</Exec>
|
|
<Return/>
|
|
</If>
|
|
-->
|
|
<!-- 统计退货的T+N红包金额 -->
|
|
<If condition="$STL_PERD_FLG=1">
|
|
<Set>PROV_TN_AMT=FADD($PROV_TN_AMT,$RT_AMT,2)</Set>
|
|
<Set>USR_TN_AMT=FADD($USR_TN_AMT,$USR_RT_AMT,2)</Set>
|
|
<Set>TN_AMT=ADDAMT($USR_TN_AMT,$PROV_TN_AMT)</Set>
|
|
<Set>CUR_MON_FIR=$MKM_AC_DT</Set>
|
|
<Set>MTH_END_DT=$MKM_AC_DT</Set>
|
|
</If>
|
|
<!--统计退货的月结红包金额 -->
|
|
<Else>
|
|
<Set>MM_AMT=ADDAMT($MM_AMT,$RT_AMT)</Set>
|
|
<Set>CUR_MON_FIR=STRCAT(SUBSTR($MKM_AC_DT,1,6),01)</Set> <!-- 本月初 -->
|
|
<Set>CUR_NEXT_MON=CALCDATE($MKM_AC_DT,+,m,1)</Set>
|
|
<Set>CUR_NEXT_FIR=STRCAT(SUBSTR($CUR_NEXT_MON,1,6),01)</Set>
|
|
<Set>MTH_END_DT=CALCDATE($CUR_NEXT_FIR,-,d,1)</Set> <!-- 本月末 -->
|
|
</Else>
|
|
|
|
<Set>JRN_NO=$GWA.JRN_NO</Set>
|
|
<Set>TX_CD=$RT_TX_CD</Set>
|
|
<Set>BUS_ACP_CNL=$RT_BUS_CNL</Set>
|
|
<Set>SYS_CNL=$RT_SYS_CNL</Set>
|
|
<Set>OAC_DT=$TX_ACC_DT</Set>
|
|
<Set>TX_SYS_DT=$SYS_DT</Set>
|
|
<Set>TX_SYS_TM=$SYS_TM</Set>
|
|
<Set>TX_ACC_DT=$MKM_AC_DT</Set>
|
|
<Set>RVS_TX_FLG=R</Set>
|
|
<Set>TX_STS=S</Set>
|
|
<Set>USE_TYP=3</Set>
|
|
<Set>DR_AMT=0</Set>
|
|
<Set>USR_DR_AMT=0</Set>
|
|
<Set>RT_TYP=</Set>
|
|
<Set>CR_AMT=0</Set>
|
|
<Set>RT_AMT=$RT_AMT</Set>
|
|
<Set>USR_RT_AMT=$USR_RT_AMT</Set>
|
|
<Set>BON_BAL=ADDAMT($CUR_AC_BAL,$JRN_RT_AMT)</Set>
|
|
<Set>ORD_AMT=$RT_AMT_SUM</Set>
|
|
<Set>AC_DT=$MKM_AC_DT</Set>
|
|
<Set>TM_SMP=GETDATETIME()</Set>
|
|
|
|
<!-- 登记红包退回交易流水 -->
|
|
<Exec func="PUB:InsertRecord">
|
|
<Arg name="TblNam" value="MKMTJNL"/>
|
|
</Exec>
|
|
<If condition="~RetCod!=0">
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="MKM65009"/>
|
|
<Arg name="MsgDat" value="登记红包退回流水失败"/>
|
|
</Exec>
|
|
<Return/>
|
|
</If>
|
|
|
|
<!-- 更新商户汇总表 -->
|
|
<Exec func="PUB:ReadRecord">
|
|
<Arg name="SqlCmd" value="QRY_MKMTMSUM_INF"/>
|
|
</Exec>
|
|
<If condition="~RetCod=0">
|
|
<Set>TM_SMP=GETDATETIME()</Set>
|
|
<Exec func="PUB:ExecSql">
|
|
<Arg name="SqlCmd" value="UPD_MKMTMSUM_INF"/>
|
|
</Exec>
|
|
<If condition="~RetCod!=0">
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="MKM65010"/>
|
|
<Arg name="MsgDat" value="更新商户使用营销工具汇总表失败"/>
|
|
</Exec>
|
|
<Return/>
|
|
</If>
|
|
</If>
|
|
<ElseIf condition="~RetCod=2">
|
|
<!--查询出资方全称-->
|
|
<Exec func="PUB:ReadRecord">
|
|
<Arg name="SqlCmd" value="QRY_CMMTPCOP_NM"/>
|
|
</Exec>
|
|
<If condition="~RetCod!=0">
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="MKM65011"/>
|
|
<Arg name="MsgDat" value="查询出资方全称失败"/>
|
|
</Exec>
|
|
<Return/>
|
|
</If>
|
|
<Set>CAP_NM=$PROV_LNM</Set>
|
|
|
|
<!-- 查询商户归属省市信息 -->
|
|
<Exec func="PUB:ReadRecord">
|
|
<Arg name="SqlCmd" value="QRY_URMTMINF_MER"/>
|
|
</Exec>
|
|
<Set>MERC_PROV=$MERC_PROV</Set> <!--商户归属省-->
|
|
<Set>MERC_CITY=$MERC_CITY</Set> <!--商户归属市-->
|
|
<Set>INV_STS=0</Set> <!--待确定 发票状态 0-正常 1-冻结 2-已结算-->
|
|
<Set>LAST_AC_BAL=0</Set> <!--上日余额-->
|
|
<Set>LAST_TX_BAL=0</Set> <!--上日消费余额-->
|
|
<Set>CUR_AC_BAL=STRCAT(-,$RT_AMT)</Set> <!--当日待开发票部分余额-->
|
|
<Set>CUR_TX_BAL=STRCAT(-,$JRN_RT_AMT)</Set> <!--当前消费总结余(包含用户出资部分)-->
|
|
<Set>TOT_RT_AMT=$RT_AMT</Set> <!--待开发票部分退款总额 -->
|
|
<Set>TOT_REAL_RT_AMT=$JRN_RT_AMT</Set> <!--实际退款总额 (包含用户出资部分)-->
|
|
<Set>TOT_TX_AMT=0</Set> <!--当日交易额:这里不记,由日终批量记 -->
|
|
<Set>TOT_REAL_TX_AMT=0</Set> <!--当日实际交易额:这里不记,由日终批量记 -->
|
|
<Set>TXN_TOT_CNT=0</Set> <!--当日交易笔数-->
|
|
<Set>UPD_DT=$MKM_AC_DT</Set> <!--记帐日期-->
|
|
<Set>UPD_JRN=$GWA.JRN_NO</Set> <!--最后交易流水号-->
|
|
<Set>PERD_END_DT=$MTH_END_DT</Set>
|
|
<Set>PERD_BEG_DT=$CUR_MON_FIR</Set>
|
|
<Set>CLR_FLG=0</Set>
|
|
<If condition="$CAP_ID_TYP=0"> <!-- 移动出资设置发票标识 -->
|
|
<If condition="$CAP_TYP=3"> <!-- 资金类型为红包的要开发票 -->
|
|
<Set>IS_INV_FLG=Y</Set>
|
|
</If>
|
|
<Else>
|
|
<Set>IS_INV_FLG=N</Set>
|
|
</Else>
|
|
</If>
|
|
|
|
<Exec func="PUB:InsertRecord">
|
|
<Arg name="TblNam" value="MKMTMSUM"/>
|
|
</Exec>
|
|
<If condition="~RetCod!=0">
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="MKM65012"/>
|
|
<Arg name="MsgDat" value="登记商户使用营销工具汇总表失败"/>
|
|
</Exec>
|
|
<Return/>
|
|
</If>
|
|
</ElseIf>
|
|
<Else>
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="MKM65013"/>
|
|
<Arg name="MsgDat" value="查询商户使用营销工具汇总表失败"/>
|
|
</Exec>
|
|
<Return/>
|
|
</Else>
|
|
|
|
<Set>RT_AMT_TMP=FSUB($RT_AMT_TMP,$JRN_RT_AMT,2)</Set>
|
|
</While>
|
|
<!-- 关闭游标 -->
|
|
<Exec func="PUB:CloseCursor">
|
|
<Arg name="CursorName" value="CURSOR_1"/>
|
|
</Exec>
|
|
|
|
<!-- 查询商户归属省市信息 -->
|
|
<Exec func="PUB:ReadRecord">
|
|
<Arg name="SqlCmd" value="QRY_URMTMINF_MER"/>
|
|
</Exec>
|
|
|
|
<!-- 一点结算电子券需做账务处理 -->
|
|
<If condition="DOUBLECMP($TN_AMT,gt,0)">
|
|
<!--省公司出资的做记账处理: 贷记处理-->
|
|
<If condition="DOUBLECMP($PROV_TN_AMT,gt,0)">
|
|
<Set>INNER_DEPOSIT_IN.AC_CD=#IN_MKM_AC_CD3</Set> <!--账户代码-->
|
|
<Set>INNER_DEPOSIT_IN.AC_TYP=#IN_MKM_AC_TYP3</Set> <!--账户种类-->
|
|
<Set>INNER_DEPOSIT_IN.AC_NM= </Set> <!--账户名称-->
|
|
<Set>INNER_DEPOSIT_IN.CAP_TYP=1</Set> <!--资金种类 1-现金 2-充值卡-->
|
|
<Set>INNER_DEPOSIT_IN.AMT=$PROV_TN_AMT</Set> <!--支取金额-->
|
|
<Set>INNER_DEPOSIT_IN.TX_DT=$SYS_DT</Set> <!--原始交易日期-->
|
|
<Set>INNER_DEPOSIT_IN.TX_TM=$SYS_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=$GWA.JRN_NO</Set> <!--内部订单号,不存在取JRN_NO-->
|
|
<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="DOUBLECMP($USR_TN_AMT,gt,0)">
|
|
<Set>INNER_DEPOSIT_IN.AC_CD=#IN_MKM_AC_CD4</Set> <!--账户代码-->
|
|
<Set>INNER_DEPOSIT_IN.AC_TYP=#IN_MKM_AC_TYP4</Set> <!--账户种类-->
|
|
<Set>INNER_DEPOSIT_IN.AC_NM= </Set> <!--账户名称-->
|
|
<Set>INNER_DEPOSIT_IN.CAP_TYP=1</Set> <!--资金种类 1-现金 2-充值卡-->
|
|
<Set>INNER_DEPOSIT_IN.AMT=$USR_TN_AMT</Set> <!--支取金额-->
|
|
<Set>INNER_DEPOSIT_IN.TX_DT=$SYS_DT</Set> <!--原始交易日期-->
|
|
<Set>INNER_DEPOSIT_IN.TX_TM=$SYS_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=$GWA.JRN_NO</Set> <!--内部订单号,不存在取JRN_NO-->
|
|
<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>
|
|
|
|
<!--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>
|
|
|
|
<!--T+N红包当成商户现金实时退款 -->
|
|
<Set>MERCWITHDRAW_IN.USR_NO= </Set>
|
|
<Set>MERCWITHDRAW_IN.MERC_ID1=$CLR_MERC</Set>
|
|
<!--Modify by Liuql 入账商户和扣款商户换成该交易商户的清分商户 end-->
|
|
|
|
<Set>MERCWITHDRAW_IN.CAP_TYP1=1</Set>
|
|
<Set>MERCWITHDRAW_IN.AMT1=$TN_AMT</Set>
|
|
<Set>MERCWITHDRAW_IN.TX_DT=$SYS_DT</Set>
|
|
<Set>MERCWITHDRAW_IN.TX_CD=$GWA.TX_CD</Set>
|
|
<Set>MERCWITHDRAW_IN.TX_TM=$SYS_TM</Set>
|
|
<Set>MERCWITHDRAW_IN.TX_TYP=53</Set> <!-- 交易类型:53 红包退款 -->
|
|
<Set>MERCWITHDRAW_IN.BUS_TYP=#PAY_BUS_TYP</Set>
|
|
<Set>MERCWITHDRAW_IN.ORD_TYP=00</Set>
|
|
<Set>MERCWITHDRAW_IN.ORD_NO=$GWA.JRN_NO</Set>
|
|
<Set>MERCWITHDRAW_IN.VCH_NO_TYP=0</Set>
|
|
<Set>MERCWITHDRAW_IN.VCH_NO=$GWA.JRN_NO</Set>
|
|
<Set>MERCWITHDRAW_IN.BAL_OD_FLG=Y</Set>
|
|
<Set>MERCWITHDRAW_IN.TX_DESC=T+N红包退款</Set>
|
|
<Set>MERCWITHDRAW_IN.TX_OPP_TYP=0</Set>
|
|
<Set>MERCWITHDRAW_IN.TX_OPP_CD=$USR_NO</Set>
|
|
|
|
<Call function="InnerMercWithDraw" package="MKM">
|
|
<Input>MERCWITHDRAW_IN|GWA|</Input>
|
|
<Output>MERCWITHDRAW_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>
|
|
|
|
<Set>OUT_DAT.MM_AMT=$MM_AMT</Set>
|
|
<Set>OUT_DAT.TN_AMT=$TN_AMT</Set>
|
|
<Set>OUT_DAT.EXP_AMT=$EXP_AMT</Set>
|
|
<If condition="DOUBLECMP($EXP_AMT,gt,0)">
|
|
<Set>RT_AMT=FSUB($JRN_RT_AMT,$EXP_AMT,2)</Set>
|
|
</If>
|
|
<Set>BON_OUT_DAT.RT_AMT=$RT_AMT</Set>
|
|
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<!-- @msg交易成功 -->
|
|
<Arg name="MsgCd" value="MKM00000"/>
|
|
<Arg name="MsgDat" value="交易成功"/>
|
|
</Exec>
|
|
</Process>
|
|
</Function>
|
|
</Package> |