Files
ctg-app-ui/mkm/etc/pkg/BonusIss_BAT_PKG.XML
2021-01-12 22:04:24 +08:00

795 lines
31 KiB
XML

<?xml version="1.0" encoding='UTF-8'?>
<!--
==========================================================================
修改时间 PLOG 修改人 备注
2010.12.13 gaopeng3 增加发放红包后通知省平台步骤
2011.01.30 zhang_zh 删除通知省平台(临时解决方案)
==========================================================================
-->
<Package>
<!-- 红包发放批量处理(BonusIss_BAT) -->
<Function name="BonusIss_BAT">
<Input>JRN_NO|TX_CD|BOS_AMT|BAT_NO|BAT_SEQ|GWA|</Input>
<Output>OUT_DAT|MSG_CD|</Output>
<!--查询批量信息-->
<DynSentence name="QRY_MKMTBAT_INF">
<Sentence>
SELECT A.MBL_NO, A.MKT_ID, A.LOG_NO, A.PRD_ID, A.ISS_ID, A.BON_AMT,
B.ISS_CUR_AMT AS ISS_CUR_AMT1, B.ISS_TOT_AMT AS ISS_TOT_AMT1,
B.CAP_ID_TYP, B.CAP_ID, A.BAT_NO, A.BAT_SEQ, B.MKT_BON_FLG, B.CAP_TYP, C.ISS_PCT_TYP
FROM MKMTBAT A, MKMTACT B, MKMTPINF C
WHERE A.STS = '0'
AND A.DO_FLG = 'Y'
AND A.MKT_ID = B.MKT_ID
AND A.PRD_ID = C.PRD_ID
AND A.BAT_NO = ?
AND A.BAT_SEQ = ?
</Sentence>
<Fields>BAT_NO|BAT_SEQ|</Fields>
</DynSentence>
<!-- 查询发行方中发放对象限制类型 -->
<DynSentence name="QRY_MKMTISS_USR">
<Sentence>
SELECT USR_LMT_TYP, ISS_TOT_AMT AS ISS_TOT_AMT2, ISS_CUR_AMT AS ISS_CUR_AMT2,
ISS_EFF_DT, ISS_EXP_DT, ISS_PROV, OMBL_MAX_CNT AS ISSOMBL_MAX_CNT,
PERD_TYP AS ISSPERD_TYP, PRED AS ISSPRED
FROM MKMTISS
WHERE MKT_ID = ?
AND ISS_ID = ?
</Sentence>
<Fields>MKT_ID|ISS_ID|</Fields>
</DynSentence>
<!-- 查询该用户归属省市是否在范围内 -->
<DynSentence name="QRY_MKMTIAREA">
<Sentence>
SELECT 'Y' ISEXISTS
FROM DUAL
WHERE EXISTS(
SELECT 'Y'
FROM MKMTIAREA
WHERE MKT_ID = ?
AND ISS_ID = ?
AND USR_PROV = ?
AND (USR_CITY = 'ALL' OR USR_CITY = ?))
</Sentence>
<Fields>MKT_ID|ISS_ID|USR_PROV|USR_CITY|</Fields>
</DynSentence>
<!-- 查询该用户是否在指定的用户范围内 -->
<DynSentence name="QRY_MKMTIUSR_INF">
<Sentence>
SELECT 'Y' ISEXISTS
FROM DUAL
WHERE EXISTS(
SELECT 'Y'
FROM MKMTIUSR
WHERE MKT_ID = ?
AND ISS_ID = ?
AND MBL_NO = ?)
</Sentence>
<Fields>MKT_ID|ISS_ID|MBL_NO|</Fields>
</DynSentence>
<!-- 查询活动表 -->
<DynSentence name="QRY_MKMTACT_LINF">
<Sentence>
SELECT ISS_CUR_AMT AS ISS_CUR_AMT1, ISS_TOT_AMT AS ISS_TOT_AMT1, CAP_ID_TYP, CAP_ID
FROM MKMTACT
WHERE MKT_ID = ?
</Sentence>
<Fields>MKT_ID|</Fields>
</DynSentence>
<!-- 登记原因说明 -->
<DynSentence name="UPD_MKMTBAT_INF">
<Sentence>
UPDATE MKMTBAT
SET MSG_CD = ?,
ISS_FAIL_INF = ?
WHERE BAT_NO = ?
AND BAT_SEQ = ?
</Sentence>
<Fields>MSG_CD|ISS_FAIL_INF|BAT_NO|BAT_SEQ|</Fields>
</DynSentence>
<!--更新批量发放状态-->
<DynSentence name="UPD_MKMTBAT_STS">
<Sentence>
UPDATE MKMTBAT
SET STS = ?
WHERE BAT_NO = ?
AND BAT_SEQ = ?
AND STS = '0'
</Sentence>
<Fields>STS|BAT_NO|BAT_SEQ|</Fields>
</DynSentence>
<!--登记批量发放电子券编号-->
<DynSentence name="UPD_MKMTBAT_BONID">
<Sentence>
UPDATE MKMTBAT
SET BON_ID = ?,
STS = ?
WHERE BAT_NO = ?
AND BAT_SEQ = ?
AND STS = '0'
</Sentence>
<Fields>BON_ID|STS|BAT_NO|BAT_SEQ|</Fields>
</DynSentence>
<!--查询产品信息-->
<DynSentence name="QRY_MKMTPINF_INF">
<Sentence>
SELECT OMBL_MAX_CNT, PERD_TYP, PRED, PRD_NM, ISS_ID_TYP, ISS_BILL_AMT,
EFF_DT_CNT, CLR_TYP, USE_BEG_REF_AMT, USE_END_REF_AMT, PRD_TYP,
ISS_CUR_CNT, ISS_MAX_CNT, ISS_DLY_LMT, ISS_DLY_CNT, ULT_CLR_DT,
LST_ISS_DT, ISS_PCT, ID_NO_FLG
FROM MKMTPINF
WHERE PRD_ID = ?
AND MKT_ID = ?
AND ISS_ID = ?
</Sentence>
<Fields>PRD_ID|MKT_ID|ISS_ID|</Fields>
</DynSentence>
<Process>
<Set>CUR_DT=$GWA.TX_DT</Set> <!-- 获取当前系统日期 -->
<Set>CUR_TM=$GWA.TX_TM</Set> <!-- 获取当前系统时间 -->
<Set>CUR_DAY=SUBSTR($CUR_DT,5,4)</Set> <!-- 当前月份日期 -->
<Set>CUR_MMDDMIHHSS=STRCAT($CUR_DAY,$CUR_TM)</Set>
<!--必输项检查-->
<If condition="ISNULL($BOS_AMT)">
<Set>MSG_CD=MKM40131</Set>
<Set>MSG_DAT=电子券面额不能为空</Set>
<Set>ISS_FAIL_INF=$MSG_DAT</Set>
<Set>STS=2</Set>
<!-- 登记原因说明 -->
<Exec func="PUB:ExecSql">
<Arg name="SqlCmd" value="UPD_MKMTBAT_INF"/>
</Exec>
<If condition="~RetCod!=0">
<Exec func="PUB:CmpSetMsg">
<Arg name="MsgCd" value="MKM22022" />
<Arg name="MsgDat" value="更新红包批量表失败"/>
</Exec>
<Return/>
</If>
<!--更新红包批量表中状态-->
<Exec func="PUB:ExecSql">
<Arg name="SqlCmd" value="UPD_MKMTBAT_STS"/>
</Exec>
<If condition="~RetCod!=0">
<Exec func="PUB:CmpSetMsg">
<Arg name="MsgCd" value="MKM22022" />
<Arg name="MsgDat" value="更新红包批量表失败"/>
</Exec>
<Return/>
</If>
<Exec func="PUB:CmpSetMsg">
<Arg name="MsgCd" value="MKM00000" />
<Arg name="MsgDat" value="交易成功"/>
</Exec>
<Return/>
</If>
<!-- 查询批量信息 -->
<Exec func="PUB:ReadRecord">
<Arg name="SqlCmd" value="QRY_MKMTBAT_INF"/>
</Exec>
<If condition="~RetCod!=0">
<Set>MSG_CD=MKM22019</Set>
<Set>MSG_DAT=券别发放信息有误</Set>
<Set>ISS_FAIL_INF=$MSG_DAT</Set>
<Set>STS=2</Set>
<!-- 登记原因说明 -->
<Exec func="PUB:ExecSql">
<Arg name="SqlCmd" value="UPD_MKMTBAT_INF"/>
</Exec>
<If condition="~RetCod!=0">
<Exec func="PUB:CmpSetMsg">
<Arg name="MsgCd" value="MKM22022" />
<Arg name="MsgDat" value="更新红包批量表失败"/>
</Exec>
<Return/>
</If>
<!--更新红包批量表中状态-->
<Exec func="PUB:ExecSql">
<Arg name="SqlCmd" value="UPD_MKMTBAT_STS"/>
</Exec>
<If condition="~RetCod!=0">
<Exec func="PUB:CmpSetMsg">
<Arg name="MsgCd" value="MKM22022" />
<Arg name="MsgDat" value="更新红包批量表失败"/>
</Exec>
<Return/>
</If>
<Exec func="PUB:CmpSetMsg">
<Arg name="MsgCd" value="MKM00000" />
<Arg name="MsgDat" value="交易成功"/>
</Exec>
<Return/>
</If>
<!-- 判断是否为折扣发行电子券 -->
<If condition="AND(IS_EQUAL_STRING($CAP_TYP,3),IS_EQUAL_STRING($MKT_BON_FLG,2))">
<Set>PCT_BON_FLG=Y</Set>
</If>
<!-- 单笔交易状态初始值(1:成功 2:失败) -->
<Set>STS=1</Set>
<If condition="OR(IS_NOEQUAL_STRING($PCT_BON_FLG,Y),IS_EQUAL_STRING($ISS_PCT_TYP,2))"> <!-- 非转让市场折扣发行电子券需要检查用户信息 -->
<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)=1">
<Set>MBL_NO=@O.MBL_NO</Set>
<Set>USR_NO=@O.USR_NO</Set>
<Set>USR_PROV=@O.USR_PROV</Set>
<Set>USR_CITY=@O.USR_CITY</Set>
<Set>USR_CITY_NM=DELBOTHSPACE(@O.USR_CITY_NM)</Set>
<!-- @add 2012-11-9 -->
<!-- 调用手机号段查询 -->
<Set>GMNS_INP.MBL_NO=$MBL_NO</Set>
<Exec func="CMM:GetMobilNoSegment">
<Arg name="_I_INP_DAT" value="GMNS_INP"/>
<Arg name="_O_OUT_DAT" value="GMNS_OUT"/>
</Exec>
<If condition="IS_SUCC(@O.MSG_CD)=0">
<Exec func="PUB:CmpSetMsg">
<Arg name="MsgCd" value="@O.MSG_CD"/>
</Exec>
<Set>MSG_CD=@O.MSG_CD</Set>
<Set>MSG_DAT=@O.MSG_DAT</Set>
<Set>ISS_FAIL_INF=非中国移动手机号码</Set>
<Set>STS=2</Set>
<!-- 登记原因说明 -->
<Exec func="PUB:ExecSql">
<Arg name="SqlCmd" value="UPD_MKMTBAT_INF"/>
</Exec>
<If condition="~RetCod!=0">
<Exec func="PUB:CmpSetMsg">
<Arg name="MsgCd" value="MKM22022" />
<Arg name="MsgDat" value="更新红包批量表失败"/>
</Exec>
<Return/>
</If>
<!--更新红包批量表中状态-->
<Exec func="PUB:ExecSql" >
<Arg name="SqlCmd" value="UPD_MKMTBAT_STS"/>
</Exec>
<If condition="~RetCod!=0">
<Exec func="PUB:CmpSetMsg">
<Arg name="MsgCd" value="MKM22022" />
<Arg name="MsgDat" value="更新红包批量表失败"/>
</Exec>
<Return/>
</If>
<Exec func="PUB:CmpSetMsg">
<Arg name="MsgCd" value="MKM00000" />
<Arg name="MsgDat" value="交易成功"/>
</Exec>
<Return/>
</If>
<!-- end -->
</If>
<Else>
<Set>OPEN_USR_FLG=N</Set>
</Else>
</If>
<!-- 未开户或转让市场折扣发行类电子券需查询号段信息 -->
<If condition="OR(IS_EQUAL_STRING($OPEN_USR_FLG,N),IS_EQUAL_STRING($ISS_PCT_TYP,1))">
<!-- 调用手机号段查询 -->
<Set>GMNS_INP.MBL_NO=$MBL_NO</Set>
<Exec func="CMM:GetMobilNoSegment">
<Arg name="_I_INP_DAT" value="GMNS_INP"/>
<Arg name="_O_OUT_DAT" value="GMNS_OUT"/>
</Exec>
<If condition="IS_SUCC(@O.MSG_CD)=0">
<Exec func="PUB:CmpSetMsg">
<Arg name="MsgCd" value="@O.MSG_CD"/>
</Exec>
<Set>MSG_CD=@O.MSG_CD</Set>
<Set>MSG_DAT=@O.MSG_DAT</Set>
<Set>ISS_FAIL_INF=非中国移动手机号码</Set>
<Set>STS=2</Set>
<!-- 登记原因说明 -->
<Exec func="PUB:ExecSql">
<Arg name="SqlCmd" value="UPD_MKMTBAT_INF"/>
</Exec>
<If condition="~RetCod!=0">
<Exec func="PUB:CmpSetMsg">
<Arg name="MsgCd" value="MKM22022" />
<Arg name="MsgDat" value="更新红包批量表失败"/>
</Exec>
<Return/>
</If>
<!--更新红包批量表中状态-->
<Exec func="PUB:ExecSql" >
<Arg name="SqlCmd" value="UPD_MKMTBAT_STS"/>
</Exec>
<If condition="~RetCod!=0">
<Exec func="PUB:CmpSetMsg">
<Arg name="MsgCd" value="MKM22022" />
<Arg name="MsgDat" value="更新红包批量表失败"/>
</Exec>
<Return/>
</If>
<Exec func="PUB:CmpSetMsg">
<Arg name="MsgCd" value="MKM00000" />
<Arg name="MsgDat" value="交易成功"/>
</Exec>
<Return/>
</If>
<Set>USR_PROV=@O.GMNS_OUT.PROV_CD</Set>
<Set>USR_CITY=@O.GMNS_OUT.CITY_CD</Set>
<Set>USR_CITY_NM=@O.GMNS_OUT.CITY_NM</Set>
<If condition="IS_EQUAL_STRING($ISS_PCT_TYP,1)"> <!-- 转让市场内发行折扣电子券需要设置特殊用户号 -->
<Set>USR_NO=#PCT_BON_USR_NO</Set>
</If>
<Else>
<Set>USR_NO=0</Set>
</Else>
</If>
<!--查询产品信息-->
<Exec func="PUB:ReadRecord">
<Arg name="SqlCmd" value="QRY_MKMTPINF_INF"/>
</Exec>
<If condition="~RetCod!=0">
<Set>MSG_CD=MKM20805</Set>
<Set>MSG_DAT=不存在该券别编号或该编号与活动编号不匹配</Set>
<Set>ISS_FAIL_INF=$MSG_DAT</Set>
<Set>STS=2</Set>
<!-- 登记原因说明 -->
<Exec func="PUB:ExecSql">
<Arg name="SqlCmd" value="UPD_MKMTBAT_INF"/>
</Exec>
<If condition="~RetCod!=0">
<Exec func="PUB:CmpSetMsg">
<Arg name="MsgCd" value="MKM22022" />
<Arg name="MsgDat" value="更新红包批量表失败"/>
</Exec>
<Return/>
</If>
<!--更新红包批量表中状态-->
<Exec func="PUB:ExecSql">
<Arg name="SqlCmd" value="UPD_MKMTBAT_STS"/>
</Exec>
<If condition="~RetCod!=0">
<Exec func="PUB:CmpSetMsg">
<Arg name="MsgCd" value="MKM22022" />
<Arg name="MsgDat" value="更新红包批量表失败"/>
</Exec>
<Return/>
</If>
<Exec func="PUB:CmpSetMsg">
<Arg name="MsgCd" value="MKM00000" />
<Arg name="MsgDat" value="交易成功"/>
</Exec>
<Return/>
</If>
<!-- 检查电子券面额是否合法 -->
<If condition="IS_EQUAL_STRING($PRD_TYP,0)">
<If condition="DOUBLECMP($BON_AMT,le,0)">
<Set>MSG_CD=MKM22053</Set>
<Set>MSG_DAT=电子券面额非法</Set>
<Set>ISS_FAIL_INF=电子券面额非法</Set>
<Set>STS=2</Set>
<!-- 登记原因说明 -->
<Exec func="PUB:ExecSql">
<Arg name="SqlCmd" value="UPD_MKMTBAT_INF"/>
</Exec>
<If condition="~RetCod!=0">
<Exec func="PUB:CmpSetMsg">
<Arg name="MsgCd" value="MKM22022" />
<Arg name="MsgDat" value="更新红包批量表失败"/>
</Exec>
<Return/>
</If>
<!--更新红包批量表中状态-->
<Exec func="PUB:ExecSql" >
<Arg name="SqlCmd" value="UPD_MKMTBAT_STS"/>
</Exec>
<If condition="~RetCod!=0">
<Exec func="PUB:CmpSetMsg">
<Arg name="MsgCd" value="MKM22053" />
<Arg name="MsgDat" value="代金券金额与券别中金额不符"/>
</Exec>
<Return/>
</If>
<Exec func="PUB:CmpSetMsg">
<Arg name="MsgCd" value="MKM00000" />
<Arg name="MsgDat" value="交易成功"/>
</Exec>
<Return/>
</If>
</If>
<!-- 检查代金券面额是否合法 -->
<If condition="IS_EQUAL_STRING($PRD_TYP,1)">
<If condition="DOUBLECMP($BON_AMT,ne,$ISS_BILL_AMT)">
<Set>MSG_CD=MKM22053</Set>
<Set>MSG_DAT=代金券金额与券别中金额不符</Set>
<Set>ISS_FAIL_INF=代金券金额与券别中金额不符</Set>
<Set>STS=2</Set>
<!-- 登记原因说明 -->
<Exec func="PUB:ExecSql">
<Arg name="SqlCmd" value="UPD_MKMTBAT_INF"/>
</Exec>
<If condition="~RetCod!=0">
<Exec func="PUB:CmpSetMsg">
<Arg name="MsgCd" value="MKM22022" />
<Arg name="MsgDat" value="更新红包批量表失败"/>
</Exec>
<Return/>
</If>
<!--更新红包批量表中状态-->
<Exec func="PUB:ExecSql" >
<Arg name="SqlCmd" value="UPD_MKMTBAT_STS"/>
</Exec>
<If condition="~RetCod!=0">
<Exec func="PUB:CmpSetMsg">
<Arg name="MsgCd" value="MKM22053" />
<Arg name="MsgDat" value="代金券金额与券别中金额不符"/>
</Exec>
<Return/>
</If>
<Exec func="PUB:CmpSetMsg">
<Arg name="MsgCd" value="MKM00000" />
<Arg name="MsgDat" value="交易成功"/>
</Exec>
<Return/>
</If>
</If>
<!-- 查询发行方中发放对象限制类型 -->
<Exec func="PUB:ReadRecord">
<Arg name="SqlCmd" value="QRY_MKMTISS_USR"/>
</Exec>
<If condition="~RetCod!=0">
<Exec func="PUB:CmpSetMsg">
<Arg name="MsgCd" value="MKM41329"/>
<Arg name="MsgDat" value="系统忙,请稍后再试"/>
</Exec>
<Return/>
</If>
<!-- 本省用户 -->
<If condition="IS_EQUAL_STRING($USR_LMT_TYP,1)">
<If condition="IS_NOEQUAL_STRING($ISS_PROV,$USR_PROV)">
<Set>MSG_CD=MKM22050</Set>
<Set>ISS_FAIL_INF=用户不在该活动指定的发放范围内</Set>
<Set>STS=2</Set>
<!-- 登记原因说明 -->
<Exec func="PUB:ExecSql">
<Arg name="SqlCmd" value="UPD_MKMTBAT_INF"/>
</Exec>
<If condition="~RetCod!=0">
<Exec func="PUB:CmpSetMsg">
<Arg name="MsgCd" value="MKM22022" />
<Arg name="MsgDat" value="更新红包批量表失败"/>
</Exec>
<Return/>
</If>
<!--更新红包批量表中状态-->
<Exec func="PUB:ExecSql">
<Arg name="SqlCmd" value="UPD_MKMTBAT_STS"/>
</Exec>
<If condition="~RetCod!=0">
<Exec func="PUB:CmpSetMsg">
<Arg name="MsgCd" value="MKM22022" />
<Arg name="MsgDat" value="更新红包批量表失败"/>
</Exec>
<Return/>
</If>
<Exec func="PUB:CmpSetMsg">
<Arg name="MsgCd" value="MKM00000" />
<Arg name="MsgDat" value="交易成功"/>
</Exec>
<Return/>
</If>
</If>
<!-- 多省市用户 -->
<If condition="IS_EQUAL_STRING($USR_LMT_TYP,2)">
<!-- 查询该用户归属省市是否在范围内 -->
<Exec func="PUB:ReadRecord">
<Arg name="SqlCmd" value="QRY_MKMTIAREA"/>
</Exec>
<If condition="IS_NOEQUAL_STRING($ISEXISTS,Y)">
<Set>MSG_CD=MKM22050</Set>
<Set>ISS_FAIL_INF=用户不在该活动指定的发放范围内</Set>
<Set>STS=2</Set>
<!-- 登记原因说明 -->
<Exec func="PUB:ExecSql">
<Arg name="SqlCmd" value="UPD_MKMTBAT_INF"/>
</Exec>
<If condition="~RetCod!=0">
<Exec func="PUB:CmpSetMsg">
<Arg name="MsgCd" value="MKM22022" />
<Arg name="MsgDat" value="更新红包批量表失败"/>
</Exec>
<Return/>
</If>
<!--更新红包批量表中状态-->
<Exec func="PUB:ExecSql" >
<Arg name="SqlCmd" value="UPD_MKMTBAT_STS"/>
</Exec>
<If condition="~RetCod!=0">
<Exec func="PUB:CmpSetMsg">
<!-- @msg更新红包批量表失败 -->
<Arg name="MsgCd" value="MKM22022" />
<Arg name="MsgDat" value="更新红包批量表失败"/>
</Exec>
<Return/>
</If>
<Exec func="PUB:CmpSetMsg">
<Arg name="MsgCd" value="MKM00000" />
<Arg name="MsgDat" value="交易成功"/>
</Exec>
<Return/>
</If>
</If>
<!-- 指定用户 -->
<If condition="IS_EQUAL_STRING($USR_LMT_TYP,3)">
<!-- 查询该用户是否在指定的用户范围内 -->
<Exec func="PUB:ReadRecord">
<Arg name="SqlCmd" value="QRY_MKMTIUSR_INF"/>
</Exec>
<If condition="IS_NOEQUAL_STRING($ISEXISTS,Y)">
<Set>MSG_CD=MKM22050</Set>
<Set>ISS_FAIL_INF=用户不在该活动指定的发放范围内</Set>
<Set>STS=2</Set>
<!-- 登记原因说明 -->
<Exec func="PUB:ExecSql">
<Arg name="SqlCmd" value="UPD_MKMTBAT_INF"/>
</Exec>
<If condition="~RetCod!=0">
<Exec func="PUB:CmpSetMsg">
<Arg name="MsgCd" value="MKM22022" />
<Arg name="MsgDat" value="更新红包批量表失败"/>
</Exec>
<Return/>
</If>
<!--更新红包批量表中状态-->
<Exec func="PUB:ExecSql" >
<Arg name="SqlCmd" value="UPD_MKMTBAT_STS"/>
</Exec>
<If condition="~RetCod!=0">
<Exec func="PUB:CmpSetMsg">
<!-- @msg更新红包批量表失败 -->
<Arg name="MsgCd" value="MKM22022" />
<Arg name="MsgDat" value="更新红包批量表失败"/>
</Exec>
<Return/>
</If>
<Exec func="PUB:CmpSetMsg">
<Arg name="MsgCd" value="MKM00000" />
<Arg name="MsgDat" value="交易成功"/>
</Exec>
<Return/>
</If>
</If>
<If condition="DOUBLECMP($BON_AMT,lt,0.00)">
<Exec func="PUB:CmpSetMsg">
<Arg name="MsgCd" value="MKM41298" />
<Arg name="MsgDat" value="红包金额非法"/>
</Exec>
<Return/>
</If>
<!-- 查询活动表 -->
<Exec func="PUB:ReadRecord">
<Arg name="SqlCmd" value="QRY_MKMTACT_LINF"/>
</Exec>
<If condition="~RetCod!=0">
<Exec func="PUB:CmpSetMsg">
<Arg name="MsgCd" value="MKM22022" />
<Arg name="MsgDat" value="更新红包批量表失败"/>
</Exec>
<Return/>
</If>
<!-- 查询发行方表 -->
<Exec func="PUB:ReadRecord">
<Arg name="SqlCmd" value="QRY_MKMTISS_USR"/>
</Exec>
<If condition="~RetCod!=0">
<Exec func="PUB:CmpSetMsg">
<Arg name="MsgCd" value="MKM22022" />
<Arg name="MsgDat" value="更新红包批量表失败"/>
</Exec>
<Return/>
</If>
<!--检查单一手机号最多领用张数-->
<Call function="CHK_OMblMaxCnt_BAT" package="MKM">
<Input>MBL_NO|USR_NO|MKT_ID|ISS_ID|ISS_EFF_DT|ISS_EXP_DT|ISSOMBL_MAX_CNT|ISSPERD_TYP|ISSPRED|PRD_ID|OMBL_MAX_CNT|PERD_TYP|PRED|CUR_DT|ID_NO_FLG|</Input>
<Output>MSG_CD|MSG_DAT|</Output>
</Call>
<If condition="IS_SUCC(@O.MSG_CD)=0">
<Set>MSG_CD=@O.MSG_CD</Set>
<Set>MSG_DAT=@O.MSG_DAT</Set>
<Set>ISS_FAIL_INF=$MSG_DAT</Set>
<Set>STS=2</Set>
<!-- 登记原因说明 -->
<Exec func="PUB:ExecSql">
<Arg name="SqlCmd" value="UPD_MKMTBAT_INF"/>
</Exec>
<If condition="~RetCod!=0">
<Exec func="PUB:CmpSetMsg">
<Arg name="MsgCd" value="MKM22022" />
<Arg name="MsgDat" value="更新红包批量表失败"/>
</Exec>
<Return/>
</If>
<!--更新红包批量表中状态-->
<Exec func="PUB:ExecSql">
<Arg name="SqlCmd" value="UPD_MKMTBAT_STS"/>
</Exec>
<If condition="~RetCod!=0">
<Exec func="PUB:CmpSetMsg">
<Arg name="MsgCd" value="MKM22022" />
<Arg name="MsgDat" value="更新红包批量表失败"/>
</Exec>
<Return/>
</If>
<Exec func="PUB:CmpSetMsg">
<Arg name="MsgCd" value="MKM00000" />
<Arg name="MsgDat" value="交易成功"/>
</Exec>
<Return/>
</If>
<!--生成红包编号,并登记相关信息-->
<Set>BUS_CNL=$GWA.BUS_CNL</Set>
<Set>SYS_CNL=$GWA.BUS_CNL</Set>
<Call function="ISSBONVCH_BAT" package="MKM">
<Output>OUT_DAT|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>
<Set>MSG_CD=@O.MSG_CD</Set>
<Set>MSG_DAT=@O.MSG_DAT</Set>
<Set>ISS_FAIL_INF=$MSG_DAT</Set>
<Set>STS=2</Set>
<!-- 登记原因说明 -->
<Exec func="PUB:ExecSql">
<Arg name="SqlCmd" value="UPD_MKMTBAT_INF"/>
</Exec>
<If condition="~RetCod!=0">
<Exec func="PUB:CmpSetMsg">
<Arg name="MsgCd" value="MKM22022" />
<Arg name="MsgDat" value="更新红包批量表失败"/>
</Exec>
<Return/>
</If>
<!--更新红包批量表中状态-->
<Exec func="PUB:ExecSql" >
<Arg name="SqlCmd" value="UPD_MKMTBAT_STS"/>
</Exec>
<If condition="~RetCod!=0">
<Exec func="PUB:CmpSetMsg">
<Arg name="MsgCd" value="MKM22022" />
<Arg name="MsgDat" value="更新红包批量表失败"/>
</Exec>
<Return/>
</If>
<Exec func="PUB:CmpSetMsg">
<Arg name="MsgCd" value="MKM00000" />
<Arg name="MsgDat" value="交易成功"/>
</Exec>
<Return/>
</If>
<!-- ISSBONVCH_REC 输出参数 -->
<Set>CR_AMT=@O.OUT_DAT.CR_AMT</Set>
<Set>PRD_TYP=@O.OUT_DAT.PRD_TYP</Set>
<Set>ISS_ID=@O.OUT_DAT.ISS_ID</Set>
<Set>ISS_TYP=@O.OUT_DAT.ISS_TYP</Set>
<Set>BON_ID=@O.OUT_DAT.BON_ID</Set>
<Set>EFF_DT=@O.OUT_DAT.EFF_DT</Set>
<Set>EXP_DT=@O.OUT_DAT.EXP_DT</Set>
<If condition="IS_EQUAL_STRING($STS,1)"> <!-- 若状态为发放成功 -->
<If condition="IS_EQUAL_STRING($ISS_PCT_TYP,1)"> <!-- 转让市场发行的折扣电子券需要同步转让市场 -->
<!-- 同步单张电子券转让信息-->
<Set>INP_DAT.OPR_TYP=SS</Set>
<Set>INP_DAT.BON_ID=$BON_ID</Set> <!-- modify by tan_wj -->
<Set>INP_DAT.USR_MBL_NO=$MBL_NO</Set>
<Set>INP_DAT.USR_NO=$USR_NO</Set>
<Call function="TransInfoSysc" package="MKM">
<Input>INP_DAT|GWA|</Input>
<Output>OUT_DAT|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>
<Else> <!-- 非转让市场折扣发行类电子券需要发放短信通知 -->
<Set>ISS_SMS_TYP=1</Set> <!-- 领用下发短信 -->
<!-- 登记每分钟发放1000笔 -->
<Set>ADD_TM=DIV($BAT_SEQ,1000)</Set>
<Set>MO_STR_TM=SUBSTR(CALCTIME($CUR_MMDDMIHHSS,+,m,$ADD_TM),5,6)</Set>
<If condition="INTCMP($MO_STR_TM,gt,200000)">
<Set>MO_STR_TM=090000</Set>
</If>
<Set>MO_END_TM=210000</Set>
<!--调用ECAP发放短信-->
<Call function="SENDMSG" package="MKM">
<Output>MSG_CD|</Output>
</Call>
</Else>
</If>
<!--更新红包批量表中状态-->
<Exec func="PUB:ExecSql">
<Arg name="SqlCmd" value="UPD_MKMTBAT_BONID"/>
</Exec>
<If condition="~RetCod!=0">
<Exec func="PUB:CmpSetMsg">
<Arg name="MsgCd" value="MKM22022" />
<Arg name="MsgDat" value="更新红包批量表失败"/>
</Exec>
<Return/>
</If>
<Exec func="PUB:CmpSetMsg">
<Arg name="MsgCd" value="MKM00000" />
<Arg name="MsgDat" value="交易成功"/>
</Exec>
</Process>
</Function>
</Package>