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

236 lines
10 KiB
XML

<?xml version="1.0" encoding='UTF-8'?>
<!--
================================================================================
修改时间 PLOG 修改人 备注
2010.12.21 P03629 gaopeng3 抵价券明细表中新增领用渠道BUS_CNL
================================================================================
-->
<Root>
<!--营销工具直连发放:BOSS, 省平台-->
<Function name="BonusIss_Direct">
<Input>INP_DAT|GWA|</Input>
<Output>OUT_DAT|MSG_CD|</Output>
<!--直连发放时,查询产品信息-->
<DynSentence name="QRY_MKMTPINF">
<Sentence>
SELECT C.MKT_ID,C.PRD_ID,C.ISS_BUS_CNL,C.ISS_ORD_CAP_TYP,
C.PRD_TYP,C.BEG_REF_AMT,C.END_REF_AMT,C.ISS_BILL_AMT,
A.ISS_TOT_AMT AS ISS_TOT_AMT1,A.ISS_CUR_AMT AS ISS_CUR_AMT1,
B.ISS_TOT_AMT AS ISS_TOT_AMT2,B.ISS_CUR_AMT AS ISS_CUR_AMT2,
C.ISS_CUR_CNT,C.ISS_MAX_CNT,C.OMBL_MAX_CNT,C.PERD_TYP,C.PRED,
C.ISS_ID,C.PRD_NM,C.ISS_ID_TYP,A.CAP_ID_TYP,A.CAP_ID,
C.USE_BEG_REF_AMT,C.USE_END_REF_AMT,C.ISS_PCT,B.ISS_EFF_DT,
B.ISS_EXP_DT,C.CLR_TYP,C.DLY_TX_LMT,C.EFF_DT_CNT,C.ISS_DLY_LMT,
B.OMBL_MAX_CNT AS ISSOMBL_MAX_CNT,B.PERD_TYP AS ISSPERD_TYP,B.PRED AS ISSPRED,
C.ISS_DLY_CNT,C.LST_ISS_DT, C.ULT_CLR_DT,A.MKT_BON_FLG,C.ID_NO_FLG, C.ISS_PCT_TYP
FROM MKMTACT A,MKMTISS B,MKMTPINF C
WHERE C.MKT_ID=?
HNULL(AND C.PRD_ID{2}= ?)
AND C.TX_CD=?
AND (B.USR_LMT_TYP=0
OR (B.USR_LMT_TYP=1 AND B.ISS_PROV=?)
OR (B.USR_LMT_TYP=2 AND EXISTS(SELECT * FROM MKMTIAREA WHERE MKT_ID=B.MKT_ID AND ISS_ID=B.ISS_ID AND USR_PROV=? AND (USR_CITY='ALL' OR (USR_CITY=? AND USR_CITY_NM=?))))
OR (B.USR_LMT_TYP=3 AND EXISTS(SELECT * FROM MKMTIUSR WHERE MKT_ID=B.MKT_ID AND ISS_ID=B.ISS_ID AND MBL_NO=?)))
AND A.MKT_STS='A'
AND A.MKT_HLD_FLG='0'
AND B.ISS_EFF_DT &lt;=?
AND B.ISS_EXP_DT &gt;=?
AND C.MKT_ID=B.MKT_ID
AND C.ISS_ID=B.ISS_ID
AND C.MKT_ID=A.MKT_ID
</Sentence>
<Fields>MKT_ID|PRD_ID|TX_CD|USR_PROV|USR_PROV|USR_CITY|USR_CITY_NM|MBL_NO|CUR_DT|CUR_DT|</Fields>
</DynSentence>
<Process>
<Set>THD_JRN=DELBOTHSPACE($INP_DAT.THD_JRN)</Set> <!-- 渠道流水号 -->
<Set>MBL_NO=DELBOTHSPACE($INP_DAT.MBL_NO)</Set>
<Set>USR_NO=DELBOTHSPACE($INP_DAT.USR_NO)</Set>
<Set>BOS_AMT=DELBOTHSPACE($INP_DAT.CR_AMT)</Set>
<Set>MKT_ID=DELBOTHSPACE($INP_DAT.MKT_ID)</Set>
<Set>PRD_ID=DELBOTHSPACE($INP_DAT.PRD_ID)</Set>
<Set>SYS_CNL=DELBOTHSPACE($INP_DAT.SYS_CNL)</Set>
<Set>BUS_CNL=DELBOTHSPACE($INP_DAT.BUS_CNL)</Set>
<Set>CUR_DT=$GWA.TX_DT</Set>
<Set>CUR_TM=GETDATETIME(HHMISS)</Set>
<Set>JRN_NO=$GWA.JRN_NO</Set>
<Set>TX_CD=$GWA.TX_CD</Set>
<Set>AC_DT=$GWA.AC_DT</Set>
<Set>ISS_TYP=DELBOTHSPACE($INP_DAT.ISS_TYP)</Set>
<!--必输项检查-->
<If condition="ISNULL($BOS_AMT)">
<Exec func="PUB:CmpSetMsg">
<!-- @msg 红包面额不能为空 -->
<Arg name="MsgCd" value="MKM40131" />
<Arg name="MsgDat" value="红包面额不能为空"/>
</Exec>
<Return/>
</If>
<If condition="DOUBLECMP($BOS_AMT,le,0)">
<Exec func="PUB:CmpSetMsg">
<Arg name="MsgCd" value="MKM41298"/>
<Arg name="MsgDat" value="红包金额非法"/>
</Exec>
<Return/>
</If>
<!--营销业务类型-->
<If condition="IS_EQUAL_STRING($ISS_TYP,PROV)">
<If condition="IS_NOEQUAL_STRING($TX_CD,0301025,0301040)">
<Exec func="PUB:CmpSetMsg">
<Arg name="MsgCd" value="MKM40132" />
<Arg name="MsgDat" value="该营销业务类型不是直连发放"/>
</Exec>
<Return/>
</If>
</If>
<If condition="IS_EQUAL_STRING($ISS_TYP,BOSS)">
<If condition="IS_NOEQUAL_STRING($TX_CD,0301030)">
<Exec func="PUB:CmpSetMsg">
<Arg name="MsgCd" value="MKM40132" />
<Arg name="MsgDat" value="该营销业务类型不是直连发放"/>
</Exec>
<Return/>
</If>
</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">
<!-- @msg [{1}]-->
<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_PROV=@O.USR_PROV</Set>
<Set>USR_CITY=@O.USR_CITY</Set>
<Set>USR_CITY_NM=@O.USR_CITY_NM</Set>
<Set>USR_STS=@O.USR_STS</Set>
<!-- 对于销户、待销户的状态不再发放-->
<If condition="IS_EQUAL_STRING($USR_STS,1,3)">
<Exec func="PUB:CmpSetMsg">
<!-- @msg该用户当前状态无法发放红包 -->
<Arg name="MsgCd" value="MKM41257" />
<Arg name="MsgDat" value="该用户当前状态无法发放红包"/>
</Exec>
<Return/>
</If>
<!--直连发放时,查询产品信息-->
<Exec func="PUB:ReadRecord">
<Arg name="SqlCmd" value="QRY_MKMTPINF"/>
</Exec>
<If condition="~RetCod!=0">
<Exec func="PUB:CmpSetMsg">
<!-- @msg 直连发放营销工具,查询产品信息失败 -->
<Arg name="MsgCd" value="MKM40133"/>
<Arg name="MsgDat" value="直连发放营销工具,查询产品信息失败"/>
</Exec>
<Return/>
</If>
<!--计算营销工具发放金额,并检查发放总额、已发放数量-->
<Call function="CHK_ISS_VCH_AMT" package="MKM">
<Input>BOS_AMT|BAT_NO|BON_AMT|ORD_AMT|PRD_TYP|BEG_REF_AMT|END_REF_AMT|ISS_BILL_AMT|ISS_CUR_AMT1|ISS_TOT_AMT1|ISS_CUR_AMT2|ISS_TOT_AMT2|ISS_CUR_CNT|ISS_MAX_CNT|MERC_ID|ISS_DLY_LMT|ISS_DLY_CNT|LST_ISS_DT|CUR_DT|</Input>
<Output>MSG_CD|MSG_DAT|CUR_AC_BAL|</Output>
</Call>
<If condition="IS_SUCC(@O.MSG_CD)=0">
<Exec func="PUB:CmpSetMsg">
<!-- @msg [{1}] -->
<Arg name="MsgCd" value="@O.MSG_CD"/>
<Arg name="MsgDat" value="@O.MSG_DAT"/>
</Exec>
<Return/>
</If>
<Set>CUR_AC_BAL=@O.CUR_AC_BAL</Set> <!--营销工具面额-->
<!--检查单一手机号最多领用张数-->
<Call function="CHK_OMblMaxCnt_REC" 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">
<Exec func="PUB:CmpSetMsg">
<!-- @msg [{1}] -->
<Arg name="MsgCd" value="@O.MSG_CD"/>
<Arg name="MsgDat" value="@O.MSG_DAT"/>
</Exec>
<Return/>
</If>
<!--生成红包编号,并登记相关信息-->
<Call function="ISSBONVCH_Direct" package="MKM">
<Output>OUT_DAT|MSG_CD|MSG_DAT|</Output>
</Call>
<If condition="IS_SUCC(@O.MSG_CD)=0">
<Exec func="PUB:CmpSetMsg">
<!-- @msg [{1}] -->
<Arg name="MsgCd" value="@O.MSG_CD"/>
<Arg name="MsgDat" value="@O.MSG_DAT"/>
</Exec>
<Return/>
</If>
<Exec func="PUB:CommitWork"/>
<!-- 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>
<!--调用ECAP发放短信-->
<Set>ISS_SMS_TYP=1</Set> <!-- 设置短信类型 -->
<Call function="SENDMSG" package="MKM">
<Output>MSG_CD|</Output>
</Call>
<!-- 券别类型为红包且发行方为省公司则调用通知省平台组件 -->
<If condition="AND(IS_EQUAL_STRING($PRD_TYP,0),IS_EQUAL_STRING($ISS_TYP,0))">
<Set>REMARK=省平台发红包</Set>
<Call function="NOTIFY_PROV_PLATFORM" package="MKM">
<Output>MSG_CD|</Output>
</Call>
</If>
<Exec func="PUB:CmpSetMsg">
<!-- @msg 交易成功 -->
<Arg name="MsgCd" value="MKM00000" />
<Arg name="MsgDat" value="交易成功"/>
</Exec>
<Exec func="PUB:DumpETF"/>
</Process>
</Function>
</Root>