290 lines
14 KiB
XML
290 lines
14 KiB
XML
<?xml version="1.0" encoding='UTF-8'?>
|
|
<!--
|
|
================================================================================
|
|
修改时间 PLOG 修改人 备注
|
|
2010.12.21 P03629 gaopeng3 抵价券明细表中新增领用渠道BUS_CNL
|
|
================================================================================
|
|
-->
|
|
<Root>
|
|
<!--营销工具直连发放:BOSS, 省平台-->
|
|
<Function name="BonusIss_Direct_Invoke">
|
|
<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
|
|
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 'Y' 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 'Y' 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 <=?
|
|
AND B.ISS_EXP_DT >=?
|
|
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>
|
|
<If condition="IS_EQUAL_STRING($GWA.TX_CD,RRS0300130)">
|
|
<If condition="IS_NOEQUAL_STRING($TX_CD,RRS0300130)">
|
|
<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" error="IGNORE">
|
|
<Arg name="SqlCmd" value="QRY_MKMTPINF"/>
|
|
</Exec>
|
|
<If condition="~RetCod=-1">
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="MKM40133"/>
|
|
<Arg name="MsgDat" value="直连发放营销工具,查询产品信息失败"/>
|
|
</Exec>
|
|
<Return/>
|
|
</If>
|
|
<ElseIf condition="~RetCod=2">
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="MKM41248"/>
|
|
<Arg name="MsgDat" value="未找到符合发放条件的券别信息"/>
|
|
</Exec>
|
|
<Return/>
|
|
</ElseIf>
|
|
|
|
<!-- 启用交易完整性控制 -->
|
|
<Set>TRAN_ID=$GWA.JRN_NO</Set>
|
|
<Set>LOG_NO=$GWA.JRN_NO</Set>
|
|
|
|
<!-- 添加交易完整性控制相关字段信息 -->
|
|
<Set>REC_DAT.THD_JRN=$THD_JRN</Set>
|
|
<Set>REC_DAT.MBL_NO=$MBL_NO</Set>
|
|
<Set>REC_DAT.USR_NO=$USR_NO</Set>
|
|
<Set>REC_DAT.BOS_AMT=$BOS_AMT</Set>
|
|
<Set>REC_DAT.MKT_ID=$MKT_ID</Set>
|
|
<Set>REC_DAT.SYS_CNL=$SYS_CNL</Set>
|
|
<Set>REC_DAT.BUS_CNL=$BUS_CNL</Set>
|
|
<Set>REC_DAT.JRN_NO=$JRN_NO</Set>
|
|
<Set>REC_DAT.TX_CD=$TX_CD</Set>
|
|
<Set>REC_DAT.ISS_TYP=$ISS_TYP</Set>
|
|
<Set>REC_DAT.USR_PROV=$USR_PROV</Set>
|
|
<Set>REC_DAT.USR_CITY=$USR_CITY</Set>
|
|
<Set>REC_DAT.USR_CITY_NM=$USR_CITY_NM</Set>
|
|
<Set>REC_DAT.USR_STS=$USR_STS</Set>
|
|
<Set>REC_DAT.LST_ISS_DT=$LST_ISS_DT</Set>
|
|
<Set>REC_DAT.ISS_ID_TYP=$ISS_ID_TYP</Set>
|
|
<Set>REC_DAT.CAP_ID_TYP=$CAP_ID_TYP</Set>
|
|
<Set>REC_DAT.PRD_ID=$PRD_ID</Set>
|
|
<Set>REC_DAT.ISS_ID=$ISS_ID</Set>
|
|
<Set>REC_DAT.ISS_EFF_DT=$ISS_EFF_DT</Set>
|
|
<Set>REC_DAT.ISS_BUS_CNL=$ISS_BUS_CNL</Set>
|
|
<Set>REC_DAT.CAP_ID=$CAP_ID</Set>
|
|
<Set>REC_DAT.CLR_TYP=$CLR_TYP</Set>
|
|
<Set>REC_DAT.ISS_PCT=$ISS_PCT</Set>
|
|
<Set>REC_DAT.PRD_TYP=$PRD_TYP</Set>
|
|
<Set>REC_DAT.EFF_DT_CNT=$EFF_DT_CNT</Set>
|
|
<Set>REC_DAT.ULT_CLR_DT=$ULT_CLR_DT</Set>
|
|
<Set>REC_DAT.ISS_ORD_CAP_TYP=$ISS_ORD_CAP_TYP</Set>
|
|
<Set>REC_DAT.USE_END_REF_AMT=$USE_END_REF_AMT</Set>
|
|
<Set>REC_DAT.MKT_BON_FLG=$MKT_BON_FLG</Set>
|
|
<Set>REC_DAT.ISS_CUR_CNT=$ISS_CUR_CNT</Set>
|
|
<Set>REC_DAT.ISS_EXP_DT=$ISS_EXP_DT</Set>
|
|
<Set>REC_DAT.PRD_NM=$PRD_NM</Set>
|
|
<Set>REC_DAT.TRAN_ID=$TRAN_ID</Set>
|
|
<Set>REC_DAT.LOG_NO=$LOG_NO</Set>
|
|
<Exec func="PUB:ETF2XML">
|
|
<Arg name="GrpNam" value="REC_DAT" />
|
|
<Arg name="DstFld" value="ISS_DAT" />
|
|
</Exec>
|
|
|
|
<Exec func="PUB:TranBeginWork">
|
|
<Arg name="Code" value="0301027"/>
|
|
<Arg name="ObjSvr" value="OMKMPUB1"/>
|
|
<Arg name="TranTyp" value="crc"/> <!-- 事物类型 crc:冲正,rdo:重发 -->
|
|
<Arg name="Interval" value="30"/>
|
|
<Arg name="TimeOut" value="60"/>
|
|
<Arg name="MaxTms" value="10"/>
|
|
<Arg name="Data" value="$ISS_DAT"/>
|
|
<Arg name="Fields" value="AC_DT=GWA.AC_DT|SYS_TM=GWA.TX_TM|SUC_CLK=GWA.TX_TM|"/>
|
|
</Exec>
|
|
|
|
<!--计算营销工具发放金额,并检查发放总额、已发放数量-->
|
|
<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>
|
|
|
|
<!-- 检查不通过,事务撤销 -->
|
|
<Exec func="PUB:TranCommitWork">
|
|
<Arg name="TranTyp" value="crc"/> <!-- 事物类型 crc:冲正,rdo:重发 -->
|
|
<Arg name="AutoCommit" value="Y"/>
|
|
</Exec>
|
|
<Return/>
|
|
</If>
|
|
<Set>CUR_AC_BAL=@O.CUR_AC_BAL</Set> <!--营销工具面额-->
|
|
|
|
<!--检查单一手机号最多领用张数-->
|
|
<Call function="CHK_OMblMaxCnt_Direct" 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">
|
|
<Arg name="MsgCd" value="@O.MSG_CD"/>
|
|
<Arg name="MsgDat" value="@O.MSG_DAT"/>
|
|
</Exec>
|
|
|
|
<!-- 检查不通过,事务撤销 -->
|
|
<Exec func="PUB:TranCommitWork">
|
|
<Arg name="TranTyp" value="crc"/> <!-- 事物类型 crc:冲正,rdo:重发 -->
|
|
<Arg name="AutoCommit" value="Y"/>
|
|
</Exec>
|
|
<Return/>
|
|
</If>
|
|
|
|
<!-- 检查通过,需要进行后续发放处理 -->
|
|
<Exec func="PUB:TranRollbackWork">
|
|
<Arg name="TranTyp" value="crc"/> <!-- 事物类型 crc:冲正,rdo:重发 -->
|
|
<Arg name="AutoCommit" value="Y"/>
|
|
</Exec>
|
|
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<!-- @msg 交易成功 -->
|
|
<Arg name="MsgCd" value="MKM00000" />
|
|
<Arg name="MsgDat" value="交易成功"/>
|
|
</Exec>
|
|
<Exec func="PUB:DumpETF"/>
|
|
</Process>
|
|
</Function>
|
|
</Root> |