477 lines
26 KiB
XML
477 lines
26 KiB
XML
<?xml version='1.0' encoding='UTF-8'?>
|
|
<Package>
|
|
|
|
<!--可用营销工具查询接口组件(BonusQuery)-->
|
|
<!--输入参数:MBL_NO 手机号 选输 -->
|
|
<!-- USR_NO 内部用户号 选输 -->
|
|
<!-- MERC_ID 商户号 必输 -->
|
|
<!-- ORD_AMT 订单金额 必输 -->
|
|
<!-- CCY 资金类型 必输 -->
|
|
<!-- BUS_TYP 业务类型 必输 -->
|
|
<!-- BUS_CNL 业务渠道 必输 -->
|
|
<!-- PRD_TYP 营销工具类型 选输 -->
|
|
<Function name="BonusQuery">
|
|
<Input>INP_DAT|GWA|</Input>
|
|
<Output>OUT_DAT|MSG_CD|</Output>
|
|
<!--查询该商户类型-->
|
|
<DynSentence name="QRY_URMTMINF_TYP">
|
|
<Sentence>
|
|
SELECT MERC_TYP,MERC_PROV
|
|
FROM URMTMINF
|
|
WHERE MERC_ID=?
|
|
</Sentence>
|
|
<Fields>MERC_ID|</Fields>
|
|
</DynSentence>
|
|
<!--查询全局参数表中红包可用比例-->
|
|
<DynSentence name="QRY_MKMTPUBPRA">
|
|
<Sentence>
|
|
SELECT BON_USE_RAT,BON_USR_LOW,BON_USE_LMT
|
|
FROM MKMTPUBPRA
|
|
</Sentence>
|
|
</DynSentence>
|
|
|
|
<!-- 查询商户信息表中红包可使用 比例-->
|
|
<DynSentence name="QRY_URMTMINF_REBRAT">
|
|
<Sentence>
|
|
SELECT MKM_REB_RAT
|
|
FROM URMTMINF
|
|
WHERE MERC_ID = ?
|
|
</Sentence>
|
|
<Fields>MERC_ID|</Fields>
|
|
</DynSentence>
|
|
|
|
<!--查询用户在该商户可用红包信息-->
|
|
<DynSentence name="QRY_MKMTBON_BON">
|
|
<Sentence>
|
|
SELECT A.BON_ID,A.MKT_ID,A.BON_NM,B.ISS_PROV AS BON_PROV,' ' AS BON_CITY,A.CUR_AC_BAL AS BAL_AMT,A.BON_RAT AS BON_PIC,A.PRD_TYP AS BON_TYP,%s AS USE_ORD_RAT,D.BON_USR_LOW AS USE_BEG_REF_AMT,(CASE WHEN D.BON_USE_LMT=0 THEN TO_CHAR(?) ELSE D.BON_USE_LMT END) AS USE_END_REF_AMT,D.BON_CNT_LMT,A.EXP_DT,SUBSTR(BON_NM,1,10) AS BON_NM_ABBR
|
|
FROM MKMTBON A,MKMTISS B,MKMTPINF C,MKMTPUBPRA D
|
|
WHERE (B.MERC_LMT_TYP='0'
|
|
OR (B.MERC_LMT_TYP='1' AND '1'=?)
|
|
OR (B.MERC_LMT_TYP='2' AND B.ISS_PROV=?)
|
|
OR (B.MERC_LMT_TYP='3' AND EXISTS (SELECT X.* FROM MKMTMERC X,PAYADM.MKMTMERCRL Y WHERE X.MKT_ID=A.MKT_ID AND X.ISS_ID=A.ISS_ID AND X.PRD_ID=A.PRD_ID AND ((X.IS_GRP='0' AND X.MERC_ID = ? AND Y.MERC_GRP='0') OR (X.IS_GRP='1' AND Y.MERC_ID=? AND X.MERC_ID=Y.MERC_GRP AND Y.MERC_GRP <> '0')) AND X.MERC_STS='A' AND Y.MERC_ID=?)))
|
|
AND (C.USE_ORD_CAP_TYP=? OR C.USE_ORD_CAP_TYP IS NULL)
|
|
AND (C.USE_BUS_TYP=? OR (C.USE_BUS_TYP IS NULL AND ?='0010'))
|
|
AND (SUBSTR(C.USE_CNL_TYP,?,1)='1' OR C.USE_CNL_TYP IS NULL)
|
|
AND A.BON_STS='A'
|
|
AND A.EFF_DT <=?
|
|
AND A.EXP_DT >=?
|
|
AND A.PRD_TYP='0'
|
|
AND A.USR_NO=?
|
|
AND A.MKT_ID=B.MKT_ID
|
|
AND A.ISS_ID=B.ISS_ID
|
|
AND A.PRD_ID=C.PRD_ID
|
|
ORDER BY A.EXP_DT,A.CUR_AC_BAL, A.ISS_TM
|
|
</Sentence>
|
|
<Fields>BON_USE_RAT|ORD_AMT|MERC_TYP1|MERC_PROV|MERC_ID|MERC_ID|MERC_ID|USE_ORD_CAP_TYP|USE_BUS_TYP|BUS_TYP|BUS_CNL_POS|SYS_DT|SYS_DT|USR_NO|</Fields>
|
|
</DynSentence>
|
|
<!--查询用户在该商户可用代金券信息,移动发行代金券同样可以查询-->
|
|
<DynSentence name="QRY_MKMTBON_VCH">
|
|
<Sentence>
|
|
SELECT A.EXP_DT,A.ISS_TM,A.BON_ID,A.MKT_ID,A.BON_NM,C.MERC_PROV AS BON_PROV,C.MERC_CITY AS BON_CITY,A.CUR_AC_BAL AS BAL_AMT,A.BON_RAT AS BON_PIC,A.PRD_TYP AS BON_TYP,'0' AS USE_ORD_RAT,A.USE_BEG_REF_AMT,A.USE_END_REF_AMT,SUBSTR(BON_NM,1,10) AS BON_NM_ABBR
|
|
FROM MKMTBON A,MKMTISS B,URMTMINF C,MKMTPINF D
|
|
WHERE (B.MERC_LMT_TYP='0'
|
|
OR (B.MERC_LMT_TYP='1' AND '1'=?)
|
|
OR (B.MERC_LMT_TYP='2' AND C.MERC_PROV=?)
|
|
OR (B.MERC_LMT_TYP='3' AND EXISTS(SELECT X.* FROM MKMTMERC X,PAYADM.MKMTMERCRL Y WHERE X.MKT_ID=A.MKT_ID AND X.ISS_ID=A.ISS_ID AND X.PRD_ID=A.PRD_ID AND ((X.IS_GRP='0' AND X.MERC_ID = ? AND Y.MERC_GRP='0') OR (X.IS_GRP='1' AND Y.MERC_ID=? AND X.MERC_ID=Y.MERC_GRP AND Y.MERC_GRP <> '0')) AND X.MERC_STS='A' AND Y.MERC_ID=?)))
|
|
AND (D.USE_ORD_CAP_TYP=? OR D.USE_ORD_CAP_TYP IS NULL)
|
|
AND (D.USE_BUS_TYP=? OR (D.USE_BUS_TYP IS NULL AND ?='0010'))
|
|
AND (SUBSTR(D.USE_CNL_TYP,?,1)='1' OR D.USE_CNL_TYP IS NULL)
|
|
AND A.BON_STS='A'
|
|
AND A.EFF_DT <=?
|
|
AND A.EXP_DT >=?
|
|
AND A.PRD_TYP='1'
|
|
AND (A.USE_BEG_REF_AMT <=? OR A.USE_BEG_REF_AMT=0)
|
|
AND (A.USE_END_REF_AMT >? OR A.USE_END_REF_AMT=0)
|
|
AND A.USR_NO=?
|
|
AND A.MKT_ID=B.MKT_ID
|
|
AND A.ISS_ID=B.ISS_ID
|
|
AND B.ISS_ID=C.MERC_ID
|
|
AND A.PRD_ID=D.PRD_ID
|
|
UNION
|
|
SELECT A.EXP_DT,A.ISS_TM,A.BON_ID,A.MKT_ID,A.BON_NM,B.ISS_PROV AS BON_PROV,'' AS BON_CITY,A.CUR_AC_BAL AS BAL_AMT,A.BON_RAT AS BON_PIC,A.PRD_TYP AS BON_TYP,'0' AS USE_ORD_RAT,A.USE_BEG_REF_AMT,A.USE_END_REF_AMT,SUBSTR(BON_NM,1,10) AS BON_NM_ABBR
|
|
FROM MKMTBON A,MKMTISS B,MKMTPINF D
|
|
WHERE (B.MERC_LMT_TYP='0'
|
|
OR (B.MERC_LMT_TYP='1' AND '1'=?)
|
|
OR (B.MERC_LMT_TYP='2' AND B.ISS_PROV=?)
|
|
OR (B.MERC_LMT_TYP='3' AND EXISTS(SELECT X.* FROM MKMTMERC X,PAYADM.MKMTMERCRL Y WHERE X.MKT_ID=A.MKT_ID AND X.ISS_ID=A.ISS_ID AND X.PRD_ID=A.PRD_ID AND ((X.IS_GRP='0' AND X.MERC_ID = ? AND Y.MERC_GRP='0') OR (X.IS_GRP='1' AND Y.MERC_ID=? AND X.MERC_ID=Y.MERC_GRP AND Y.MERC_GRP <> '0')) AND X.MERC_STS='A' AND Y.MERC_ID=?)))
|
|
AND (D.USE_ORD_CAP_TYP=? OR D.USE_ORD_CAP_TYP IS NULL)
|
|
AND (D.USE_BUS_TYP=? OR (D.USE_BUS_TYP IS NULL AND ?='0010'))
|
|
AND (SUBSTR(D.USE_CNL_TYP,?,1)='1' OR D.USE_CNL_TYP IS NULL)
|
|
AND A.BON_STS='A'
|
|
AND A.EFF_DT <=?
|
|
AND A.EXP_DT >=?
|
|
AND A.PRD_TYP='1'
|
|
AND (A.USE_BEG_REF_AMT <=? OR A.USE_BEG_REF_AMT=0)
|
|
AND (A.USE_END_REF_AMT >? OR A.USE_END_REF_AMT=0)
|
|
AND A.USR_NO=?
|
|
AND (LENGTH(B.ISS_ID)=2)
|
|
AND A.MKT_ID=B.MKT_ID
|
|
AND A.ISS_ID=B.ISS_ID
|
|
AND A.PRD_ID=D.PRD_ID
|
|
ORDER BY 1,2
|
|
</Sentence>
|
|
<Fields>MERC_TYP1|MERC_PROV|MERC_ID|MERC_ID|MERC_ID|USE_ORD_CAP_TYP|USE_BUS_TYP|BUS_TYP|BUS_CNL_POS|SYS_DT|SYS_DT|ORD_AMT|ORD_AMT|USR_NO|MERC_TYP1|MERC_PROV|MERC_ID|MERC_ID|MERC_ID|USE_ORD_CAP_TYP|USE_BUS_TYP|BUS_TYP|BUS_CNL_POS|SYS_DT|SYS_DT|ORD_AMT|ORD_AMT|USR_NO|</Fields>
|
|
</DynSentence>
|
|
<!--查询用户在该商户可用红包和代金券信息-->
|
|
<DynSentence name="QRY_MKMTBON_BV">
|
|
<Sentence>
|
|
SELECT * FROM
|
|
(SELECT A.BON_ID,A.MKT_ID,A.BON_NM,B.ISS_PROV AS BON_PROV,' ' AS BON_CITY,A.CUR_AC_BAL AS BAL_AMT,A.BON_RAT AS BON_PIC,A.PRD_TYP AS BON_TYP, TO_CHAR(?) AS USE_ORD_RAT,D.BON_USR_LOW AS USE_BEG_REF_AMT,(CASE WHEN D.BON_USE_LMT=0 THEN TO_CHAR(?) ELSE D.BON_USE_LMT END) AS USE_END_REF_AMT,TO_CHAR(D.BON_CNT_LMT) AS BON_CNT_LMT,A.EXP_DT,SUBSTR(BON_NM,1,10) AS BON_NM_ABBR
|
|
FROM MKMTBON A, MKMTISS B ,MKMTPINF C,MKMTPUBPRA D
|
|
WHERE (B.MERC_LMT_TYP='0'
|
|
OR (B.MERC_LMT_TYP='1' AND '1'=?)
|
|
OR (B.MERC_LMT_TYP='2' AND B.ISS_PROV=?)
|
|
OR (B.MERC_LMT_TYP='3' AND EXISTS (SELECT X.* FROM MKMTMERC X,PAYADM.MKMTMERCRL Y WHERE X.MKT_ID=A.MKT_ID AND X.ISS_ID=A.ISS_ID AND X.PRD_ID=A.PRD_ID AND ((X.IS_GRP='0' AND X.MERC_ID = ? AND Y.MERC_GRP='0') OR (X.IS_GRP='1' AND Y.MERC_ID=? AND X.MERC_ID=Y.MERC_GRP AND Y.MERC_GRP <> '0')) AND X.MERC_STS='A' AND Y.MERC_ID=?)))
|
|
AND (C.USE_ORD_CAP_TYP=? OR C.USE_ORD_CAP_TYP IS NULL)
|
|
AND (C.USE_BUS_TYP=? OR (C.USE_BUS_TYP IS NULL AND ?='0010'))
|
|
AND (SUBSTR(C.USE_CNL_TYP,?,1)='1' OR C.USE_CNL_TYP IS NULL)
|
|
AND A.BON_STS='A'
|
|
AND A.EFF_DT <=?
|
|
AND A.EXP_DT >=?
|
|
AND A.PRD_TYP='0'
|
|
AND A.USR_NO=?
|
|
AND A.MKT_ID=B.MKT_ID
|
|
AND A.ISS_ID=B.ISS_ID
|
|
AND A.PRD_ID=C.PRD_ID
|
|
UNION
|
|
SELECT A.BON_ID,A.MKT_ID,A.BON_NM,C.MERC_PROV AS BON_PROV,C.MERC_CITY AS BON_CITY,A.CUR_AC_BAL AS BAL_AMT,A.BON_RAT AS BON_PIC,A.PRD_TYP AS BON_TYP,'0' AS USE_ORD_RAT,TO_CHAR(A.USE_BEG_REF_AMT) AS USE_BEG_REF_AMT,TO_CHAR(A.USE_END_REF_AMT) AS USE_END_REF_AMT,'' AS BON_CNT_LMT,A.EXP_DT,SUBSTR(BON_NM,1,10) AS BON_NM_ABBR
|
|
FROM MKMTBON A, MKMTISS B,URMTMINF C,MKMTPINF D
|
|
WHERE (B.MERC_LMT_TYP='0'
|
|
OR (B.MERC_LMT_TYP='1' AND '1'=?)
|
|
OR (B.MERC_LMT_TYP='2' AND C.MERC_PROV=?)
|
|
OR (B.MERC_LMT_TYP='3' AND EXISTS(SELECT X.* FROM MKMTMERC X,PAYADM.MKMTMERCRL Y WHERE X.MKT_ID=A.MKT_ID AND X.ISS_ID=A.ISS_ID AND X.PRD_ID=A.PRD_ID AND ((X.IS_GRP='0' AND X.MERC_ID = ? AND Y.MERC_GRP='0') OR (X.IS_GRP='1' AND Y.MERC_ID=? AND X.MERC_ID=Y.MERC_GRP AND Y.MERC_GRP <> '0')) AND X.MERC_STS='A' AND Y.MERC_ID=?)))
|
|
AND (D.USE_ORD_CAP_TYP=? OR D.USE_ORD_CAP_TYP IS NULL)
|
|
AND (D.USE_BUS_TYP=? OR (D.USE_BUS_TYP IS NULL AND ?='0010'))
|
|
AND (SUBSTR(D.USE_CNL_TYP,?,1)='1' OR D.USE_CNL_TYP IS NULL)
|
|
AND A.BON_STS='A'
|
|
AND A.EFF_DT <=?
|
|
AND A.EXP_DT >=?
|
|
AND A.PRD_TYP='1'
|
|
AND (A.USE_BEG_REF_AMT <=? OR A.USE_BEG_REF_AMT=0)
|
|
AND (A.USE_END_REF_AMT >? OR A.USE_END_REF_AMT=0)
|
|
AND A.USR_NO=?
|
|
AND A.MKT_ID=B.MKT_ID
|
|
AND A.ISS_ID=B.ISS_ID
|
|
AND B.ISS_ID=C.MERC_ID
|
|
AND A.PRD_ID=D.PRD_ID)
|
|
ORDER BY EXP_DT,BAL_AMT
|
|
</Sentence>
|
|
<Fields>BON_USE_RAT|ORD_AMT|MERC_TYP1|MERC_PROV|MERC_ID|MERC_ID|MERC_ID|USE_ORD_CAP_TYP|USE_BUS_TYP|BUS_TYP|BUS_CNL_POS|SYS_DT|SYS_DT|USR_NO|MERC_TYP1|MERC_PROV|MERC_ID|MERC_ID|MERC_ID|USE_ORD_CAP_TYP|USE_BUS_TYP|BUS_TYP|BUS_CNL_POS|SYS_DT|SYS_DT|ORD_AMT|ORD_AMT|USR_NO|</Fields>
|
|
</DynSentence>
|
|
<!--查询用户在该商户可用红包余额-->
|
|
<DynSentence name="QRY_MKMTBON_BAL1">
|
|
<Sentence>
|
|
SELECT NVL(SUM(X.CUR_AC_BAL),0) AS BON_TOT_AMT
|
|
FROM (SELECT A.EXP_DT,A.BON_ID,A.CUR_AC_BAL
|
|
FROM MKMTBON A,MKMTISS B,MKMTPINF C
|
|
WHERE (B.MERC_LMT_TYP='0'
|
|
OR (B.MERC_LMT_TYP='1' AND '1'=?)
|
|
OR (B.MERC_LMT_TYP='2' AND B.ISS_PROV=?)
|
|
OR (B.MERC_LMT_TYP='3' AND EXISTS(SELECT X.* FROM MKMTMERC X,PAYADM.MKMTMERCRL Y WHERE X.MKT_ID=A.MKT_ID AND X.ISS_ID=A.ISS_ID AND X.PRD_ID=A.PRD_ID AND ((X.IS_GRP='0' AND X.MERC_ID = ? AND Y.MERC_GRP='0') OR (X.IS_GRP='1' AND Y.MERC_ID=? AND X.MERC_ID=Y.MERC_GRP AND Y.MERC_GRP <> '0')) AND X.MERC_STS='A' AND Y.MERC_ID=?)))
|
|
AND (C.USE_ORD_CAP_TYP=? OR C.USE_ORD_CAP_TYP IS NULL)
|
|
AND (C.USE_BUS_TYP=? OR (C.USE_BUS_TYP IS NULL AND ?='0010'))
|
|
AND (SUBSTR(C.USE_CNL_TYP,?,1)='1' OR C.USE_CNL_TYP IS NULL)
|
|
AND A.BON_STS='A'
|
|
AND A.EFF_DT <=?
|
|
AND A.EXP_DT >=?
|
|
AND A.USR_NO=?
|
|
AND A.PRD_TYP='0'
|
|
AND A.MKT_ID=B.MKT_ID
|
|
AND A.ISS_ID=B.ISS_ID
|
|
AND A.PRD_ID=C.PRD_ID
|
|
ORDER BY A.EXP_DT,A.BON_ID) X
|
|
WHERE ROWNUM <=?
|
|
</Sentence>
|
|
<Fields>MERC_TYP1|MERC_PROV|MERC_ID|MERC_ID|MERC_ID|USE_ORD_CAP_TYP|USE_BUS_TYP|BUS_TYP|BUS_CNL_POS|SYS_DT|SYS_DT|USR_NO|CNT_LMT|</Fields>
|
|
</DynSentence>
|
|
<!--查询用户在该商户可用代金券余额-->
|
|
<DynSentence name="QRY_MKMTBON_BAL2">
|
|
<Sentence>
|
|
SELECT NVL(SUM(X.CUR_AC_BAL),0) AS BON_TOT_AMT
|
|
FROM (SELECT A.EXP_DT,A.BON_ID,A.CUR_AC_BAL
|
|
FROM MKMTBON A,MKMTISS B,URMTMINF C,MKMTPINF D
|
|
WHERE (B.MERC_LMT_TYP='0'
|
|
OR (B.MERC_LMT_TYP='1' AND '1'=?)
|
|
OR (B.MERC_LMT_TYP='2' AND C.MERC_PROV=?)
|
|
OR (B.MERC_LMT_TYP='3' AND EXISTS(SELECT X.* FROM MKMTMERC X,PAYADM.MKMTMERCRL Y WHERE X.MKT_ID=A.MKT_ID AND X.ISS_ID=A.ISS_ID AND X.PRD_ID=A.PRD_ID AND ((X.IS_GRP='0' AND X.MERC_ID = ? AND Y.MERC_GRP='0') OR (X.IS_GRP='1' AND Y.MERC_ID=? AND X.MERC_ID=Y.MERC_GRP AND Y.MERC_GRP <> '0')) AND X.MERC_STS='A' AND Y.MERC_ID=?)))
|
|
AND (D.USE_ORD_CAP_TYP=? OR D.USE_ORD_CAP_TYP IS NULL)
|
|
AND (D.USE_BUS_TYP=? OR (D.USE_BUS_TYP IS NULL AND ?='0010'))
|
|
AND (SUBSTR(D.USE_CNL_TYP,?,1)='1' OR D.USE_CNL_TYP IS NULL)
|
|
AND A.BON_STS='A'
|
|
AND A.EFF_DT <=?
|
|
AND A.EXP_DT >=?
|
|
AND A.USR_NO=?
|
|
AND A.PRD_TYP='1'
|
|
AND (A.USE_BEG_REF_AMT <=? OR A.USE_BEG_REF_AMT=0)
|
|
AND (A.USE_END_REF_AMT >? OR A.USE_END_REF_AMT=0)
|
|
AND A.MKT_ID=B.MKT_ID
|
|
AND A.ISS_ID=B.ISS_ID
|
|
AND B.ISS_ID=C.MERC_ID
|
|
AND A.PRD_ID=D.PRD_ID
|
|
UNION
|
|
SELECT A.EXP_DT,A.BON_ID,A.CUR_AC_BAL
|
|
FROM MKMTBON A,MKMTISS B,MKMTPINF D
|
|
WHERE (B.MERC_LMT_TYP='0'
|
|
OR (B.MERC_LMT_TYP='1' AND '1'=?)
|
|
OR (B.MERC_LMT_TYP='2' AND B.ISS_PROV=?)
|
|
OR (B.MERC_LMT_TYP='3' AND EXISTS(SELECT X.* FROM MKMTMERC X,PAYADM.MKMTMERCRL Y WHERE X.MKT_ID=A.MKT_ID AND X.ISS_ID=A.ISS_ID AND X.PRD_ID=A.PRD_ID AND ((X.IS_GRP='0' AND X.MERC_ID = ? AND Y.MERC_GRP='0') OR (X.IS_GRP='1' AND Y.MERC_ID=? AND X.MERC_ID=Y.MERC_GRP AND Y.MERC_GRP <> '0')) AND X.MERC_STS='A' AND Y.MERC_ID=?)))
|
|
AND (D.USE_ORD_CAP_TYP=? OR D.USE_ORD_CAP_TYP IS NULL)
|
|
AND (D.USE_BUS_TYP=? OR (D.USE_BUS_TYP IS NULL AND ?='0010'))
|
|
AND (SUBSTR(D.USE_CNL_TYP,?,1)='1' OR D.USE_CNL_TYP IS NULL)
|
|
AND A.BON_STS='A'
|
|
AND A.EFF_DT <=?
|
|
AND A.EXP_DT >=?
|
|
AND A.USR_NO=?
|
|
AND A.PRD_TYP='1'
|
|
AND (A.USE_BEG_REF_AMT <=? OR A.USE_BEG_REF_AMT=0)
|
|
AND (A.USE_END_REF_AMT >? OR A.USE_END_REF_AMT=0)
|
|
AND (LENGTH(B.ISS_ID)=2)
|
|
AND A.MKT_ID=B.MKT_ID
|
|
AND A.ISS_ID=B.ISS_ID
|
|
AND A.PRD_ID=D.PRD_ID
|
|
ORDER BY 1,2) X
|
|
WHERE ROWNUM <=?
|
|
</Sentence>
|
|
<Fields>MERC_TYP1|MERC_PROV|MERC_ID|MERC_ID|MERC_ID|USE_ORD_CAP_TYP|USE_BUS_TYP|BUS_TYP|BUS_CNL_POS|SYS_DT|SYS_DT|USR_NO|ORD_AMT|ORD_AMT|MERC_TYP1|MERC_PROV|MERC_ID|MERC_ID|MERC_ID|USE_ORD_CAP_TYP|USE_BUS_TYP|BUS_TYP|BUS_CNL_POS|SYS_DT|SYS_DT|USR_NO|ORD_AMT|ORD_AMT|CNT_LMT|</Fields>
|
|
</DynSentence>
|
|
|
|
<Process>
|
|
<Set>MBL_NO=DELBOTHSPACE($INP_DAT.MBL_NO)</Set>
|
|
<Set>USR_NO=DELBOTHSPACE($INP_DAT.USR_NO)</Set>
|
|
<Set>MERC_ID=DELBOTHSPACE($INP_DAT.MERC_ID)</Set>
|
|
<Set>ORD_AMT=DELBOTHSPACE($INP_DAT.ORD_AMT)</Set>
|
|
<Set>CCY=DELBOTHSPACE($INP_DAT.CCY)</Set>
|
|
<Set>BUS_TYP=DELBOTHSPACE($INP_DAT.BUS_TYP)</Set>
|
|
<Set>BUS_CNL=DELBOTHSPACE($INP_DAT.BUS_CNL)</Set>
|
|
<Set>PRD_TYP=DELBOTHSPACE($INP_DAT.BON_TYP)</Set>
|
|
<Set>SYS_DT=$GWA.AC_DT</Set>
|
|
<Set>USE_BUS_TYP=$BUS_TYP</Set>
|
|
<Set>CNT_LMT=#BON_USE_CNT</Set> <!-- 单笔可以使用的营销工具个数限制 -->
|
|
<!-- 使用资金类型判断 1-CNY 2- CMY -->
|
|
<If condition="IS_EQUAL_STRING($CCY,CNY)">
|
|
<Set>USE_ORD_CAP_TYP=1</Set>
|
|
</If>
|
|
<ElseIf condition="IS_EQUAL_STRING($CCY,CMY)">
|
|
<Set>USE_ORD_CAP_TYP=2</Set>
|
|
</ElseIf>
|
|
<!--必输项判断-->
|
|
<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_STS=@O.USR_STS</Set>
|
|
<!-- 对于销户、待销户的状态不可以使用-->
|
|
<If condition="IS_EQUAL_STRING($USR_STS,1,3)">
|
|
<Set>OUT_DAT.BON_TOT_AMT=0</Set>
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<!-- @msg交易成功 -->
|
|
<Arg name="MsgCd" value="MKM00000" />
|
|
<Arg name="MsgDat" value="交易成功"/>
|
|
</Exec>
|
|
<Return/>
|
|
</If>
|
|
<If condition="ISNULL($MERC_ID)">
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<!-- @msg商户编号不能为空 -->
|
|
<Arg name="MsgCd" value="MKM20200"/>
|
|
<Arg name="MsgDat" value="商户编号不能为空"/>
|
|
</Exec>
|
|
<Return/>
|
|
</If>
|
|
<!-- 获取业务渠道在状态字中的位置 -->
|
|
<If condition="NOT(ISNULL($BUS_CNL))">
|
|
<Call function="QueryBusSts" package="MKM">
|
|
<Input>BUS_CNL|</Input>
|
|
<Output>BUS_CNL_POS|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>
|
|
<Set>BUS_CNL_POS=@O.BUS_CNL_POS</Set>
|
|
</If>
|
|
<Else>
|
|
<Set>BUS_CNL_POS=999</Set>
|
|
</Else>
|
|
|
|
<!--查询该商户类型-->
|
|
<Exec func="PUB:ReadRecord" >
|
|
<Arg name="SqlCmd" value="QRY_URMTMINF_TYP"/>
|
|
</Exec>
|
|
<If condition="~RetCod!=0">
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<!-- @msg不存在该商户 -->
|
|
<Arg name="MsgCd" value="MKM20210"/>
|
|
<Arg name="MsgDat" value="不存在该商户"/>
|
|
</Exec>
|
|
<Return/>
|
|
</If>
|
|
<If condition="OR(IS_EQUAL_STRING($MERC_TYP,1),IS_EQUAL_STRING($MERC_TYP,2))">
|
|
<Set>MERC_TYP1=1</Set> <!--全网商户-->
|
|
</If>
|
|
<ElseIf condition="OR(IS_EQUAL_STRING($MERC_TYP,3),IS_EQUAL_STRING($MERC_TYP,4))">
|
|
<Set>MERC_TYP1=2</Set> <!--本省商户-->
|
|
</ElseIf>
|
|
<!--不存在的情况下,设为空值,便于数据库查询-->
|
|
<If condition="ISNULL($PRD_TYP)">
|
|
<Set>PRD_TYP=SPACE(1,0)</Set>
|
|
</If>
|
|
<!--红包的情况-->
|
|
<If condition="$PRD_TYP=0">
|
|
<!--查询全局参数表中红包使用比例、订单最低使用金额、红包最高使用金额-->
|
|
<Exec func="PUB:ReadRecord">
|
|
<Arg name="SqlCmd" value="QRY_MKMTPUBPRA"/>
|
|
</Exec>
|
|
<If condition="~RetCod=2">
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<!-- @msg未找到红包比例信息 -->
|
|
<Arg name="MsgCd" value="MKM20315"/>
|
|
<Arg name="MsgDat" value="未找到红包比例信息"/>
|
|
</Exec>
|
|
<Return/>
|
|
</If>
|
|
|
|
<!-- 查询商户信息中红包可使用比例 -->
|
|
<Exec func="PUB:ReadRecord" error="IGNORE">
|
|
<Arg name="SqlCmd" value="QRY_URMTMINF_REBRAT"/>
|
|
</Exec>
|
|
<If condition="~RetCod!=0">
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<!-- @msg未找到红包比例信息 -->
|
|
<Arg name="MsgCd" value="MKM20315"/>
|
|
<Arg name="MsgDat" value="未找到红包比例信息"/>
|
|
</Exec>
|
|
<Return/>
|
|
</If>
|
|
|
|
<!-- 若商户订单红包占比有效,则按商户参数执行 -->
|
|
<If condition="NOT(ISNULL($MKM_REB_RAT))">
|
|
<If condition="INTCMP($MKM_REB_RAT,le,100)">
|
|
<Set>BON_USE_RAT=$MKM_REB_RAT</Set>
|
|
</If>
|
|
</If>
|
|
|
|
<If condition="$BON_USR_LOW!=0">
|
|
<If condition="AMTCMP($ORD_AMT,$BON_USR_LOW)=-1">
|
|
<Set>OUT_DAT.BON_TOT_AMT=0</Set>
|
|
<Set>MSG_DAT=交易金额小于红包订单最低使用金额,无法使用红包</Set>
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<!-- @msg交易成功 -->
|
|
<Arg name="MsgCd" value="MKM00000"/>
|
|
<Arg name="MsgDat" value="交易成功"/>
|
|
</Exec>
|
|
<Return/>
|
|
</If>
|
|
</If>
|
|
<!--取订单比例乘积、红包最高使用金额中较小者-->
|
|
<!--Set>BON_CUR1=FDIV(FMUL($ORD_AMT,$BON_USE_RAT,2),100,2)</Set>
|
|
<Set>USE_CUR_AMT=$BON_CUR1</Set>
|
|
<If condition="$BON_USE_LMT!=0">
|
|
<If condition="AMTCMP($BON_USE_LMT,$USE_CUR_AMT)=-1">
|
|
<Set>USE_CUR_AMT=$BON_USE_LMT</Set>
|
|
</If>
|
|
</If-->
|
|
<Exec func="PUB:QueryInGroup">
|
|
<Arg name="SqlCmd" value="QRY_MKMTBON_BON"/>
|
|
<Arg name="RecordName" value="OUT_DAT.BONREC"/>
|
|
<Arg name="LIMIT" value="$CNT_LMT"/>
|
|
</Exec>
|
|
<If condition="~RetCod=2">
|
|
<Set>OUT_DAT.BON_TOT_AMT=0</Set>
|
|
</If>
|
|
<!--查询该用户可用红包总额-->
|
|
<Exec func="PUB:ReadRecord">
|
|
<Arg name="SqlCmd" value="QRY_MKMTBON_BAL1"/>
|
|
</Exec>
|
|
<If condition="~RetCod=2">
|
|
<Set>OUT_DAT.BON_TOT_AMT=0</Set>
|
|
</If>
|
|
</If>
|
|
<!--代金券的情况-->
|
|
<ElseIf condition="$PRD_TYP=1">
|
|
<Exec func="PUB:QueryInGroup">
|
|
<Arg name="SqlCmd" value="QRY_MKMTBON_VCH"/>
|
|
<Arg name="RecordName" value="OUT_DAT.BONREC"/>
|
|
<Arg name="LIMIT" value="$CNT_LMT"/>
|
|
</Exec>
|
|
<If condition="~RetCod=2">
|
|
<Set>OUT_DAT.BON_TOT_AMT=0</Set>
|
|
</If>
|
|
<!--查询该用户可用代金券总额-->
|
|
<Exec func="PUB:ReadRecord">
|
|
<Arg name="SqlCmd" value="QRY_MKMTBON_BAL2"/>
|
|
</Exec>
|
|
<If condition="~RetCod=2">
|
|
<Set>OUT_DAT.BON_TOT_AMT=0</Set>
|
|
</If>
|
|
</ElseIf>
|
|
<!--营销工具类型为空的情况-->
|
|
<ElseIf condition="ISNULL(DELBOTHSPACE($PRD_TYP))">
|
|
<!--查询全局参数表中红包使用比例、订单最低使用金额、红包最高使用金额-->
|
|
<Exec func="PUB:ReadRecord">
|
|
<Arg name="SqlCmd" value="QRY_MKMTPUBPRA"/>
|
|
</Exec>
|
|
<If condition="~RetCod=2">
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<!-- @msg未找到红包比例信息 -->
|
|
<Arg name="MsgCd" value="MKM20315"/>
|
|
<Arg name="MsgDat" value="未找到红包比例信息"/>
|
|
</Exec>
|
|
<Return/>
|
|
</If>
|
|
|
|
<Exec func="PUB:QueryInGroup">
|
|
<Arg name="SqlCmd" value="QRY_MKMTBON_BV"/>
|
|
<Arg name="RecordName" value="OUT_DAT.BONREC"/>
|
|
<Arg name="LIMIT" value="$CNT_LMT"/>
|
|
</Exec>
|
|
<If condition="~RetCod=2">
|
|
<Set>BON_TOT_AMT=0</Set>
|
|
</If>
|
|
|
|
<!--查询该用户可用红包总额-->
|
|
<Exec func="PUB:ReadRecord">
|
|
<Arg name="SqlCmd" value="QRY_MKMTBON_BAL1"/>
|
|
</Exec>
|
|
<If condition="~RetCod=2">
|
|
<Set>BON_TOT_AMT1=0</Set>
|
|
</If>
|
|
<Else>
|
|
<Set>BON_TOT_AMT1=$BON_TOT_AMT</Set>
|
|
</Else>
|
|
|
|
<!--查询该用户可用代金券总额-->
|
|
<Exec func="PUB:ReadRecord">
|
|
<Arg name="SqlCmd" value="QRY_MKMTBON_BAL2"/>
|
|
</Exec>
|
|
<If condition="~RetCod=2">
|
|
<Set>BON_TOT_AMT2=0</Set>
|
|
</If>
|
|
<Else>
|
|
<Set>BON_TOT_AMT2=$BON_TOT_AMT</Set>
|
|
</Else>
|
|
<Set>BON_TOT_AMT=FADD($BON_TOT_AMT1,$BON_TOT_AMT2,2)</Set>
|
|
</ElseIf>
|
|
<Set>OUT_DAT.REC_NUM=$REC_NUM</Set>
|
|
<Set>OUT_DAT.BON_TOT_AMT=$BON_TOT_AMT</Set>
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<!-- @msg交易成功 -->
|
|
<Arg name="MsgCd" value="MKM00000"/>
|
|
<Arg name="MsgDat" value="交易成功"/>
|
|
</Exec>
|
|
<Exec func="PUB:DumpETF"/>
|
|
</Process>
|
|
</Function>
|
|
</Package> |