296 lines
12 KiB
XML
296 lines
12 KiB
XML
<?xml version='1.0' encoding='UTF-8'?>
|
|
<Package>
|
|
|
|
<!--单个发放营销工具(IssBon_Single)-->
|
|
<Function name="IssBonSingle">
|
|
<Output>OUT_DAT|MSG_CD|MSG_DAT|</Output>
|
|
<!--查询全局参数表中红包使用比例-->
|
|
<DynSentence name="QRY_MKMTPUBPRA">
|
|
<Sentence>
|
|
SELECT BON_USE_RAT,BON_USE_LMT,BON_USR_LOW
|
|
FROM MKMTPUBPRA
|
|
</Sentence>
|
|
</DynSentence>
|
|
|
|
<!-- 每日发放数量重新计数情况 -->
|
|
<DynSentence name="UPD_MKMTPINF_DLY1">
|
|
<Sentence>
|
|
UPDATE MKMTPINF
|
|
SET ISS_DLY_CNT = 1,
|
|
LST_ISS_DT = ?,
|
|
ISS_CUR_CNT = ISS_CUR_CNT+1,
|
|
TM_SMP = ?
|
|
WHERE PRD_ID = ?
|
|
AND (CASE WHEN ISS_MAX_CNT = '0' THEN 999999999999 ELSE ISS_MAX_CNT END) >= ISS_CUR_CNT + 1
|
|
</Sentence>
|
|
<Fields>CUR_DT|TM_SMT_CUR|PRD_ID|</Fields>
|
|
</DynSentence>
|
|
|
|
<!-- 每日发放数量累加计数情况 -->
|
|
<DynSentence name="UPD_MKMTPINF_DLY2">
|
|
<Sentence>
|
|
UPDATE MKMTPINF
|
|
SET ISS_DLY_CNT = ISS_DLY_CNT+1,
|
|
ISS_CUR_CNT = ISS_CUR_CNT+1,
|
|
TM_SMP = ?
|
|
WHERE PRD_ID = ?
|
|
AND (CASE WHEN ISS_MAX_CNT = '0' THEN 999999999999 ELSE ISS_MAX_CNT END) >= ISS_CUR_CNT + 1
|
|
AND (CASE WHEN ISS_DLY_LMT = '0' THEN 999999999999 ELSE ISS_DLY_LMT END) >= ISS_DLY_CNT + 1
|
|
</Sentence>
|
|
<Fields>TM_SMT_CUR|PRD_ID|</Fields>
|
|
</DynSentence>
|
|
|
|
<!-- 登记积分兑换表 -->
|
|
<DynSentence name="INSERT_MKMTPOIEXG_RECORD">
|
|
<Sentence>
|
|
INSERT INTO
|
|
MKMTPOIEXG (JRN_NO, BON_ID, MKT_ID, ISS_ID, PRD_ID, SYS_CNL, MBL_NO, USR_NO, USR_PROV, USR_CITY,
|
|
POI_TYP, POI_NUM, EXG_BON_AMT, TX_SYS_DT, TX_SYS_TM, TX_STS, CHK_STS, TX_TYP_FLG, CHK_AC_DT, BOS_JRN_NO,
|
|
BOS_TXN_TM, CITY_CD, SUB_BUS_TYP, TM_SMP)
|
|
VALUES (?, ?, ?, ?, ?, 'CMPAY', ?, ?, ?, ?,
|
|
'', '', ?, ?, ?, 'S', '1', '0', ?, SUBSTR(?,3,16),
|
|
'', ?, '0', TO_CHAR(SYSDATE, 'YYYYMMDDHH24MISS'))
|
|
</Sentence>
|
|
<Fields>JRN_NO|BON_ID|MKT_ID|ISS_ID|PRD_ID|MBL_NO|USR_NO|USR_PROV|USR_CITY|BON_AMT|TX_SYS_DT|TX_SYS_TM|TX_ACC_DT|JRN_NO|USR_CITY|</Fields>
|
|
</DynSentence>
|
|
|
|
<!-- 查询活动发放总额 -->
|
|
<DynSentence name="QRY_MKMTACT_AMT">
|
|
<Sentence>
|
|
SELECT 'Y' FROM MKMTACT
|
|
WHERE MKT_ID = ?
|
|
AND ISS_TOT_AMT >= ISS_CUR_AMT + ?
|
|
</Sentence>
|
|
<Fields>MKT_ID|BON_AMT|</Fields>
|
|
</DynSentence>
|
|
|
|
<Process>
|
|
<!--登记抵价券明细表-->
|
|
<Set>BON_NM=$PRD_NM</Set>
|
|
<Set>ISS_TYP=$ISS_ID_TYP</Set>
|
|
<Set>BON_STS=A</Set>
|
|
<Set>USR_MBL_NO=$MBL_NO</Set>
|
|
<If condition="AND(DOUBLECMP($BOS_AMT,4,0),NOT(ISNULL(DELBOTHSPACE($BOS_AMT))))">
|
|
<Set>BON_AMT=$BOS_AMT</Set>
|
|
</If>
|
|
<!-- 批量发放金额 -->
|
|
<ElseIf condition="AND(DOUBLECMP($BON_AMT,4,0),NOT(ISNULL(DELBOTHSPACE($BON_AMT))))">
|
|
<Set>BON_AMT=$BON_AMT</Set>
|
|
</ElseIf>
|
|
<Else>
|
|
<Set>BON_AMT=$ISS_BILL_AMT</Set>
|
|
</Else>
|
|
<Set>LAST_AC_BAL=$BON_AMT</Set>
|
|
<Set>CUR_AC_BAL=$BON_AMT</Set>
|
|
<Set>SAV_TYP=0</Set>
|
|
<Set>ISS_DT=$CUR_DT</Set>
|
|
<Set>ISS_TM=$CUR_TM</Set>
|
|
<!--计算生效日期-->
|
|
<Set>EFF_DT1=CALCDATE($ISS_DT,+,d,$EFF_DT_CNT)</Set>
|
|
<!--取较大值-->
|
|
<If condition="STRCMP($EFF_DT1,$ISS_EFF_DT) > 0">
|
|
<Set>EFF_DT=$EFF_DT1</Set>
|
|
</If>
|
|
<Else>
|
|
<Set>EFF_DT=$ISS_EFF_DT</Set>
|
|
</Else>
|
|
<!--计算清理日期CLR_DT-->
|
|
<If condition="$CLR_TYP=0">
|
|
<Set>CLR_DT=$ULT_CLR_DT</Set>
|
|
</If>
|
|
<Else>
|
|
<Set>CLR_TYP1=SUB($CLR_TYP,1)</Set> <!-- 当日清理 -->
|
|
<Set>CLR_DT=CALCDATE($EFF_DT,+,d,$CLR_TYP1)</Set>
|
|
<!-- 取清理日期和券的最终清理日期中较小值 -->
|
|
<If condition="STRCMP($ULT_CLR_DT,$CLR_DT) < 0">
|
|
<Set>CLR_DT=$ULT_CLR_DT</Set>
|
|
</If>
|
|
</Else>
|
|
<!--计算失效日期-->
|
|
<Set>EXP_DT=$CLR_DT</Set>
|
|
<!--生成红包编号-->
|
|
<Exec func="MKM:GetSeqNo" error="IGNORE" >
|
|
<Arg name="len" value="9" />
|
|
</Exec>
|
|
<Set>BON_ID=$SEQ_NO</Set>
|
|
<Set>BON_ID=STRCAT($MKT_ID,$BON_ID)</Set>
|
|
<Exec func="MKM:HiCalUtil" error="IGNORE">
|
|
<Arg name="srcVal" value="$BON_ID"/>
|
|
<Arg name="dstFld" value="BON_ID"/>
|
|
</Exec>
|
|
<If condition="~RetCod!=0">
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<!-- @msg生成红包编号失败 -->
|
|
<Arg name="MsgCd" value="MKM20304"/>
|
|
<Arg name="MsgDat" value="生成红包编号失败"/>
|
|
</Exec>
|
|
<Return/>
|
|
</If>
|
|
<!--红包情况-->
|
|
<If condition="$PRD_TYP=0">
|
|
<!--查询红包使用比例-->
|
|
<Exec func="PUB:ReadRecord">
|
|
<Arg name="SqlCmd" value="QRY_MKMTPUBPRA"/>
|
|
</Exec>
|
|
<Set>USE_ORD_RAT=$BON_USE_RAT</Set>
|
|
<Set>USE_BEG_REF_AMT=$BON_USR_LOW</Set>
|
|
<Set>USE_END_REF_AMT=0</Set>
|
|
<Set>BON_RAT=0</Set>
|
|
</If>
|
|
<!--代金券情况-->
|
|
<ElseIf condition="$PRD_TYP=1">
|
|
<Set>USE_ORD_RAT=0</Set>
|
|
<Set>BON_RAT=0</Set>
|
|
</ElseIf>
|
|
<!--折扣券情况-->
|
|
<ElseIf condition="$PRD_TYP=2">
|
|
<Set>BON_RAT=$ISS_PCT</Set> <!--折扣比例-->
|
|
</ElseIf>
|
|
<Set>ISS_BUS_CNL_ABBR=$BUS_CNL</Set> <!--领用渠道-->
|
|
<Set>IS_TRANS=0</Set>
|
|
<Set>UPD_JRN=$JRN_NO</Set>
|
|
|
|
<Exec func="PUB:InsertRecord" error="IGNORE">
|
|
<Arg name="TblNam" value="MKMTBON"/>
|
|
</Exec>
|
|
<If condition="~RetCod!=0">
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<!-- @msg登记抵价券明细表失败 -->
|
|
<Arg name="MsgCd" value="MKM20803"/>
|
|
<Arg name="MsgDat" value="登记抵价券明细表失败"/>
|
|
</Exec>
|
|
<Return/>
|
|
</If>
|
|
<!--登记营销流水表-->
|
|
<Set>RSP_CD=MKM00000</Set>
|
|
<Set>BUS_ACP_CNL=$BUS_CNL</Set>
|
|
|
|
<!--设置返回信息码类型RTN_MSC_TYP-->
|
|
<Set>RTN_MSC_TYP=N</Set>
|
|
<Set>TX_SYS_DT=$GWA.TX_DT</Set>
|
|
<Set>TX_SYS_TM=$GWA.TX_TM</Set>
|
|
<Set>TX_ACC_DT=$GWA.AC_DT</Set> <!--交易记账日期-->
|
|
<Set>RVS_TX_FLG=N</Set>
|
|
<Set>TX_STS=S</Set>
|
|
<!--调用组件查询出资方名称-->
|
|
<Set>MP_ID_TYP=$CAP_ID_TYP</Set>
|
|
<Set>MP_ID=$CAP_ID</Set>
|
|
<Call function="QueryMerProvName" package="MKM">
|
|
<Input>MP_ID_TYP|MP_ID|</Input>
|
|
<Output>MP_NM|MERC_PROV|MERC_CITY|MERC_CITY_NM|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>
|
|
<Set>CAP_NM=@O.MP_NM</Set> <!--出资方名称-->
|
|
<Set>USE_TYP=0</Set>
|
|
<Set>CR_AMT=$BON_AMT</Set>
|
|
<Set>BON_BAL=$CUR_AC_BAL</Set>
|
|
<Set>REAL_MERC_ID=$MERC_ID</Set>
|
|
<Set>REAL_MERC_NM=$MERC_CNM</Set>
|
|
<Set>VCH_NO_TYP=0</Set>
|
|
<Set>VCH_NO=$JRN_NO</Set>
|
|
|
|
<Exec func="PUB:InsertRecord" error="IGNORE">
|
|
<Arg name="TblNam" value="MKMTJNL"/>
|
|
</Exec>
|
|
<If condition="~RetCod!=0">
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<!-- @msg登记流水信息失败 -->
|
|
<Arg name="MsgCd" value="MKM22003"/>
|
|
<Arg name="MsgDat" value="登记流水信息失败"/>
|
|
</Exec>
|
|
<Return/>
|
|
</If>
|
|
|
|
<!-- 若非湖南省积分活动,登记积分兑换表 -->
|
|
<If condition="AND(IS_EQUAL_STRING($MKT_BON_FLG,1), IS_NOEQUAL_STRING($USR_PROV,18))">
|
|
<Exec func="PUB:ExecSql" error="IGNORE">
|
|
<Arg name="SqlCmd" value="INSERT_MKMTPOIEXG_RECORD" />
|
|
</Exec>
|
|
<If condition="~RetCod!=0">
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<!-- @msg登记流水信息失败 -->
|
|
<Arg name="MsgCd" value="MKM22003"/>
|
|
<Arg name="MsgDat" value="登记流水信息失败"/>
|
|
</Exec>
|
|
<Return/>
|
|
</If>
|
|
|
|
<Exec func="PUB:InvokeService" error="IGNORE">
|
|
<Arg name="ServiceName" value="0302092"/>
|
|
<Arg name='Mode' value='NOTIFY'/>
|
|
<Arg name="LogID" value="OMKMPUB1"/>
|
|
<Arg name="ObjSvr" value="OMKMPUB1"/>
|
|
</Exec>
|
|
</If>
|
|
|
|
<!-- 更新营销券别表中的每日已发放数量、时间戳,此处不区分代金券与红包,检查数量时根据是否配置发行总数判断 -->
|
|
<Set>TM_SMT_CUR=GETDATETIME()</Set> <!-- 本次发放时间戳 -->
|
|
<!-- 上笔发放时期与当前发放日期不同,则每日发放数量重新计数 -->
|
|
<If condition="IS_NOEQUAL_STRING($LST_ISS_DT,$CUR_DT)">
|
|
<Exec func="PUB:ExecSql" error="IGNORE">
|
|
<Arg name="SqlCmd" value="UPD_MKMTPINF_DLY1"/>
|
|
</Exec>
|
|
<If condition="RetCod=2">
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<!-- @msg 券别剩余发放金额不足 -->
|
|
<Arg name="MsgCd" value="MKM41324"/>
|
|
<Arg name="MsgDat" value="券别剩余发放金额不足"/>
|
|
</Exec>
|
|
<Exec func="PUB:RollbackWork" />
|
|
<Return/>
|
|
</If>
|
|
<ElseIf condition="~RetCod!=0">
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<!-- @msg更新活动已发行额度失败 -->
|
|
<Arg name="MsgCd" value="MKM20703"/>
|
|
<Arg name="MsgDat" value="更新活动已发行额度失败"/>
|
|
</Exec>
|
|
<Return/>
|
|
</ElseIf>
|
|
</If>
|
|
<Else>
|
|
<Exec func="PUB:ExecSql" error="IGNORE">
|
|
<Arg name="SqlCmd" value="UPD_MKMTPINF_DLY2"/>
|
|
</Exec>
|
|
<If condition="RetCod=2">
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<!-- @msg 券别剩余发放金额不足 -->
|
|
<Arg name="MsgCd" value="MKM41324"/>
|
|
<Arg name="MsgDat" value="券别剩余发放金额不足"/>
|
|
</Exec>
|
|
<Exec func="PUB:RollbackWork" />
|
|
<Return/>
|
|
</If>
|
|
<ElseIf condition="~RetCod!=0">
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<!-- @msg更新活动已发行额度失败 -->
|
|
<Arg name="MsgCd" value="MKM20703"/>
|
|
<Arg name="MsgDat" value="更新活动已发行额度失败"/>
|
|
</Exec>
|
|
<Return/>
|
|
</ElseIf>
|
|
</Else>
|
|
|
|
<!-- 输出参数,通知省平台调用 -->
|
|
<Set>OUT_DAT.CR_AMT=$CR_AMT</Set>
|
|
<Set>OUT_DAT.BON_ID=$BON_ID</Set>
|
|
<Set>OUT_DAT.EFF_DT=$EFF_DT</Set>
|
|
<Set>OUT_DAT.EXP_DT=$EXP_DT</Set>
|
|
<Set>OUT_DAT.ISS_ID=$ISS_ID</Set>
|
|
<Set>OUT_DAT.ISS_TYP=$ISS_TYP</Set>
|
|
<Set>OUT_DAT.PRD_TYP=$PRD_TYP</Set>
|
|
<Set>OUT_DAT.PRD_NM=$PRD_NM</Set>
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<!-- @msg交易成功 -->
|
|
<Arg name="MsgCd" value="MKM00000"/>
|
|
<Arg name="MsgDat" value="交易成功"/>
|
|
</Exec>
|
|
</Process>
|
|
</Function>
|
|
</Package> |