Files
2021-01-12 22:04:24 +08:00

228 lines
9.9 KiB
XML

<?xml version='1.0' encoding='UTF-8'?>
<Application name="lps" trace="yes">
<!-- 商户对账 -->
<Transaction code="2151020" log_switch="1" trace="yes" desc="商户对账">
<!-- 清分日期查 -->
<!-- 查询出所有分店基本信息记录 -->
<DynSentence name="QRY_SUBMERC_REC">
<Sentence>
SELECT DISTINCT MERC_ID,MERC_ABBR
FROM LPSTOFP
WHERE (CLR_MERC=? OR MERC_ID= ?) AND (AC_DT BETWEEN ? AND ? OR RFD_DT BETWEEN ? AND ?)
AND LP_ORD_STS IN ('N','R','A') AND PROC_RSL='00' AND CLR_STS='1'
ORDER BY MERC_ID ASC
</Sentence>
<Fields>CLR_MERC|CLR_MERC|BEG_DT|END_DT|BEG_DT|END_DT</Fields>
</DynSentence>
<!-- 查询消费记录 -->
<DynSentence name="QRY_CONSUME_REC">
<Sentence>
SELECT MERC_ID,SUM(FEE_AMT) AS CSM_FEE,SUM(TX_AMT) AS CSM_AMT,COUNT(ORD_NO) AS CSM_NUM
FROM LPSTOFP
WHERE (CLR_MERC=? OR MERC_ID= ?) AND AC_DT BETWEEN ? AND ?
AND LP_ORD_STS!='C' AND PROC_RSL='00' AND CLR_STS='1'
GROUP BY MERC_ID
ORDER BY MERC_ID ASC
</Sentence>
<Fields>CLR_MERC|CLR_MERC|BEG_DT|END_DT|</Fields>
</DynSentence>
<!-- 查询退货记录 -->
<DynSentence name="QRY_REVERT_REC">
<Sentence>
SELECT MERC_ID, SUM(TX_AMT) AS RVS_AMT,COUNT(JRN_NO) AS RVS_NUM,
SUM(
CASE RFD_FEE_PRC_MOD
WHEN '1' THEN 0
ELSE FEE_AMT END
) AS RVS_FEE
FROM LPSTRVS
WHERE (CLR_MERC=? OR MERC_ID= ?) AND AC_DT BETWEEN ? AND ?
AND BIL_STS='1' AND RVS_FLG='R'
GROUP BY MERC_ID
ORDER BY MERC_ID ASC
</Sentence>
<Fields>CLR_MERC|CLR_MERC|BEG_DT|END_DT|</Fields>
</DynSentence>
<!-- 交易日期查 -->
<!-- 查询出所有分店基本信息记录 -->
<DynSentence name="QRY_SUBMERC_REC_TX">
<Sentence>
SELECT DISTINCT MERC_ID,MERC_ABBR
FROM LPSTOFP
WHERE (CLR_MERC=? OR MERC_ID= ?) AND (TX_DT BETWEEN ? AND ? OR RFD_DT BETWEEN ? AND ?)
AND LP_ORD_STS IN ('N','R','A') AND PROC_RSL='00' AND CLR_STS='1'
ORDER BY MERC_ID ASC
</Sentence>
<Fields>CLR_MERC|CLR_MERC|BEG_DT|END_DT|BEG_DT|END_DT</Fields>
</DynSentence>
<!-- 查询消费记录 -->
<DynSentence name="QRY_CONSUME_REC_TX">
<Sentence>
SELECT MERC_ID,SUM(FEE_AMT) AS CSM_FEE,SUM(TX_AMT) AS CSM_AMT,COUNT(ORD_NO) AS CSM_NUM
FROM LPSTOFP
WHERE (CLR_MERC=? OR MERC_ID= ?) AND TX_DT BETWEEN ? AND ?
AND LP_ORD_STS!='C' AND PROC_RSL='00' AND CLR_STS='1'
GROUP BY MERC_ID
ORDER BY MERC_ID ASC
</Sentence>
<Fields>CLR_MERC|CLR_MERC|BEG_DT|END_DT|</Fields>
</DynSentence>
<!-- 查询退货记录 -->
<DynSentence name="QRY_REVERT_REC_TX">
<Sentence>
SELECT MERC_ID, SUM(TX_AMT) AS RVS_AMT,COUNT(JRN_NO) AS RVS_NUM,
SUM(
CASE RFD_FEE_PRC_MOD
WHEN '1' THEN 0
ELSE FEE_AMT END
) AS RVS_FEE
FROM LPSTRVS
WHERE (CLR_MERC=? OR MERC_ID= ?) AND TX_DT BETWEEN ? AND ?
AND BIL_STS='1' AND RVS_FLG='R'
GROUP BY MERC_ID
ORDER BY MERC_ID ASC
</Sentence>
<Fields>CLR_MERC|CLR_MERC|BEG_DT|END_DT|</Fields>
</DynSentence>
<FlowCtrl>
<!-- 清分日期查 -->
<If condition="IS_EQUAL_STRING($DT_TYP,A)">
<!-- 用翻页组件读取商户信息 -->
<Exec func="PUB:DBMultiQueryPage" >
<Arg name="PageNo" value="$PAG_NO"/>
<Arg name="SqlCmd" value="QRY_SUBMERC_REC"/>
<Arg name="RecNumPerPage" value="$PAG_NUM"/>
</Exec>
<!-- 按照分店分组,查询统计消费数据 -->
<Exec func="PUB:QueryInGroup">
<Arg name="SqlCmd" value="QRY_CONSUME_REC"/>
<Arg name="RecordName" value="SUB_MERC_CSM"/>
</Exec>
<!-- 按照分店分组,查询统计退货数据 -->
<Exec func="PUB:QueryInGroup">
<Arg name="SqlCmd" value="QRY_REVERT_REC"/>
<Arg name="RecordName" value="SUB_MERC_RVS"/>
</Exec>
</If>
<!-- 交易日期查 -->
<ElseIf condition="IS_EQUAL_STRING($DT_TYP,T)">
<!-- 用翻页组件读取商户信息 -->
<Exec func="PUB:DBMultiQueryPage" >
<Arg name="PageNo" value="$PAG_NO"/>
<Arg name="SqlCmd" value="QRY_SUBMERC_REC_TX"/>
<Arg name="RecNumPerPage" value="$PAG_NUM"/>
</Exec>
<!-- 按照分店分组,查询统计消费数据 -->
<Exec func="PUB:QueryInGroup">
<Arg name="SqlCmd" value="QRY_CONSUME_REC_TX"/>
<Arg name="RecordName" value="SUB_MERC_CSM"/>
</Exec>
<!-- 按照分店分组,查询统计退货数据 -->
<Exec func="PUB:QueryInGroup">
<Arg name="SqlCmd" value="QRY_REVERT_REC_TX"/>
<Arg name="RecordName" value="SUB_MERC_RVS"/>
</Exec>
</ElseIf>
<!-- 定义游标 -->
<Set>~MERC_INX=0</Set>
<Set>~MCSM_INX=0</Set>
<Set>~MRVS_INX=0</Set>
<Exec func="PUB:DumpETF"/>
<!-- 初始化数据为0 -->
<While condition="INTCMP(~MERC_INX,1,$TOT_REC_NUM)">
<Set>~MERC_INX=ADD(1,~MERC_INX)</Set>
<Set>REC[~MERC_INX].S_AMT=0</Set>
<Set>REC[~MERC_INX].S_FEE=0</Set>
<Set>REC[~MERC_INX].S_NUM=0</Set>
</While>
<!-- 消费数组为空 -->
<If condition="ISNULL($SUB_MERC_CSM_NUM)">
<Set>SUB_MERC_CSM_NUM=0</Set>
</If>
<!-- 退货数组为空 -->
<If condition="ISNULL($SUB_MERC_RVS_NUM)">
<Set>SUB_MERC_RVS_NUM=0</Set>
</If>
<!-- 将消费记录写入REC中 -->
<Set>~MERC_INX=1</Set>
<Set>~MCSM_INX=1</Set>
<While condition="INTCMP(~MERC_INX,2,$TOT_REC_NUM)">
<While condition="INTCMP(~MCSM_INX,2,$SUB_MERC_CSM_NUM)">
<Set>~CSM_MID=$SUB_MERC_CSM[~MCSM_INX].MERC_ID</Set>
<Set>~MERC_ID=$REC[~MERC_INX].MERC_ID</Set>
<If condition="IS_EQUAL_STRING(~CSM_MID,~MERC_ID)">
<Set>REC[~MERC_INX].S_AMT=$SUB_MERC_CSM[~MCSM_INX].CSM_AMT</Set>
<Set>REC[~MERC_INX].S_FEE=$SUB_MERC_CSM[~MCSM_INX].CSM_FEE</Set>
<Set>REC[~MERC_INX].S_NUM=$SUB_MERC_CSM[~MCSM_INX].CSM_NUM</Set>
<Break/>
</If>
<Else>
<Set>~MCSM_INX=ADD(1,~MCSM_INX)</Set>
</Else>
</While>
<Set>~MCSM_INX=1</Set>
<Set>~MERC_INX=ADD(1,~MERC_INX)</Set>
</While>
<!-- 将退货记录合并写入REC中 -->
<Set>~MERC_INX=1</Set>
<Set>~MRVS_INX=1</Set>
<While condition="INTCMP(~MERC_INX,2,$TOT_REC_NUM)">
<While condition="INTCMP(~MRVS_INX,2,$SUB_MERC_RVS_NUM)">
<Set>~RVS_MID=$SUB_MERC_RVS[~MRVS_INX].MERC_ID</Set>
<Set>~MERC_ID=$REC[~MERC_INX].MERC_ID</Set>
<If condition="IS_EQUAL_STRING(~RVS_MID,~MERC_ID)">
<Set>~TMP_RAMT=$SUB_MERC_RVS[~MRVS_INX].RVS_AMT</Set>
<Set>~TMP_RFEE=$SUB_MERC_RVS[~MRVS_INX].RVS_FEE</Set>
<Set>~TMP_RNUM=$SUB_MERC_RVS[~MRVS_INX].RVS_NUM</Set>
<Set>~TMP_SAMT=$REC[~MERC_INX].S_AMT</Set>
<Set>~TMP_SFEE=$REC[~MERC_INX].S_FEE</Set>
<Set>~TMP_SNUM=$REC[~MERC_INX].S_NUM</Set>
<Set>REC[~MERC_INX].S_AMT=FSUB(~TMP_SAMT,~TMP_RAMT,2)</Set>
<Set>REC[~MERC_INX].S_FEE=FSUB(~TMP_SFEE,~TMP_RFEE,2)</Set>
<Set>REC[~MERC_INX].S_NUM=ADD(~TMP_SNUM,~TMP_RNUM)</Set>
<Break/>
</If>
<Else>
<Set>~MRVS_INX=ADD(1,~MRVS_INX)</Set>
</Else>
</While>
<Set>~MRVS_INX=1</Set>
<Set>~MERC_INX=ADD(1,~MERC_INX)</Set>
</While>
<!-- 汇总统计 -->
<Set>~MERC_INX=0</Set>
<Set>TOTAL_AMTN=0</Set>
<Set>TOTAL_FEEN=0</Set>
<Set>TOTAL_NUMN=0</Set>
<While condition="INTCMP(~MERC_INX,1,$TOT_REC_NUM)">
<Set>~MERC_INX=ADD(~MERC_INX,1)</Set>
<Set>~TMP_SAMT=$REC[~MERC_INX].S_AMT</Set>
<Set>~TMP_SFEE=$REC[~MERC_INX].S_FEE</Set>
<Set>~TMP_SNUM=$REC[~MERC_INX].S_NUM</Set>
<Set>TOTAL_AMTN=FADD(~TMP_SAMT,$TOTAL_AMTN,2)</Set>
<Set>TOTAL_FEEN=FADD(~TMP_SFEE,$TOTAL_FEEN,2)</Set>
<Set>TOTAL_NUMN=ADD($TOTAL_NUMN,~TMP_SNUM)</Set>
</While>
<Exec func="PUB:GWASetMsg">
<Arg name="MsgCd" value="LPS00000" />
</Exec>
</FlowCtrl>
</Transaction>
</Application>