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

229 lines
9.7 KiB
XML

<?xml version='1.0' encoding='UTF-8'?>
<Application name="lps" trace="yes">
<!-- 商户对账 -->
<Transaction code="2151023" log_switch="1" trace="yes" desc="商户对账">
<!-- 清分日期查 -->
<!-- 查询出所有分店基本信息记录 -->
<DynSentence name="QRY_ALLPOS_REC">
<Sentence>
SELECT DISTINCT MERC_ABBR,MERC_ID,POS_TRM
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,POS_TRM 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,POS_TRM,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,POS_TRM
ORDER BY POS_TRM 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,POS_TRM,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,POS_TRM
ORDER BY POS_TRM ASC
</Sentence>
<Fields>CLR_MERC|CLR_MERC|BEG_DT|END_DT|</Fields>
</DynSentence>
<!-- 交易日期查 -->
<!-- 查询出所有分店基本信息记录 -->
<DynSentence name="QRY_ALLPOS_REC_TX">
<Sentence>
SELECT DISTINCT MERC_ABBR,MERC_ID,POS_TRM
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,POS_TRM 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,POS_TRM,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,POS_TRM
ORDER BY POS_TRM 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,POS_TRM,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,POS_TRM
ORDER BY POS_TRM 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_ALLPOS_REC"/>
<Arg name="RecNumPerPage" value="$PAG_NUM"/>
</Exec>
<!-- 按照POS分组,查询统计消费数据 -->
<Exec func="PUB:QueryInGroup">
<Arg name="SqlCmd" value="QRY_CONSUME_REC"/>
<Arg name="RecordName" value="PER_POS_CSM"/>
</Exec>
<!-- 按照POS分组,查询统计退货数据 -->
<Exec func="PUB:QueryInGroup">
<Arg name="SqlCmd" value="QRY_REVERT_REC"/>
<Arg name="RecordName" value="PER_POS_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_ALLPOS_REC_TX"/>
<Arg name="RecNumPerPage" value="$PAG_NUM"/>
</Exec>
<!-- 按照POS分组,查询统计消费数据 -->
<Exec func="PUB:QueryInGroup">
<Arg name="SqlCmd" value="QRY_CONSUME_REC_TX"/>
<Arg name="RecordName" value="PER_POS_CSM"/>
</Exec>
<!-- 按照POS分组,查询统计退货数据 -->
<Exec func="PUB:QueryInGroup">
<Arg name="SqlCmd" value="QRY_REVERT_REC_TX"/>
<Arg name="RecordName" value="PER_POS_RVS"/>
</Exec>
</ElseIf>
<!-- 定义游标 -->
<Set>~POS_INX=0</Set>
<Set>~CSM_INX=0</Set>
<Set>~RVS_INX=0</Set>
<!-- 消费数组为空 -->
<If condition="ISNULL($PER_POS_CSM_NUM)">
<Set>PER_POS_CSM_NUM=0</Set>
</If>
<!-- 退货数组为空 -->
<If condition="ISNULL($PER_POS_RVS_NUM)">
<Set>PER_POS_RVS_NUM=0</Set>
</If>
<!-- 初始化数据为0 -->
<While condition="INTCMP(~POS_INX,1,$TOT_REC_NUM)">
<Set>~POS_INX=ADD(1,~POS_INX)</Set>
<Set>REC[~POS_INX].S_AMT=0</Set>
<Set>REC[~POS_INX].S_FEE=0</Set>
<Set>REC[~POS_INX].S_NUM=0</Set>
</While>
<!-- 将消费记录写入REC中 -->
<Set>~POS_INX=1</Set>
<Set>~CSM_INX=1</Set>
<While condition="INTCMP(~POS_INX,2,$TOT_REC_NUM)">
<While condition="INTCMP(~CSM_INX,2,$PER_POS_CSM_NUM)">
<Set>~POS_CSM=$PER_POS_CSM[~CSM_INX].POS_TRM</Set>
<Set>~POS_ID=$REC[~POS_INX].POS_TRM</Set>
<If condition="IS_EQUAL_STRING(~POS_CSM,~POS_ID)">
<Set>REC[~POS_INX].S_AMT=$PER_POS_CSM[~CSM_INX].CSM_AMT</Set>
<Set>REC[~POS_INX].S_FEE=$PER_POS_CSM[~CSM_INX].CSM_FEE</Set>
<Set>REC[~POS_INX].S_NUM=$PER_POS_CSM[~CSM_INX].CSM_NUM</Set>
<Break/>
</If>
<Else>
<Set>~CSM_INX=ADD(1,~CSM_INX)</Set>
</Else>
</While>
<Set>~CSM_INX=1</Set>
<Set>~POS_INX=ADD(1,~POS_INX)</Set>
</While>
<!-- 将退货记录合并写入REC中 -->
<Set>~POS_INX=1</Set>
<Set>~RVS_INX=1</Set>
<While condition="INTCMP(~POS_INX,2,$TOT_REC_NUM)">
<While condition="INTCMP(~RVS_INX,2,$PER_POS_RVS_NUM)">
<Set>~POS_RVS=$PER_POS_RVS[~RVS_INX].POS_TRM</Set>
<Set>~POS_ID=$REC[~POS_INX].POS_TRM</Set>
<If condition="IS_EQUAL_STRING(~POS_RVS,~POS_ID)">
<Set>~TMP_RAMT=$PER_POS_RVS[~RVS_INX].RVS_AMT</Set>
<Set>~TMP_RFEE=$PER_POS_RVS[~RVS_INX].RVS_FEE</Set>
<Set>~TMP_RNUM=$PER_POS_RVS[~RVS_INX].RVS_NUM</Set>
<Set>~TMP_SAMT=$REC[~POS_INX].S_AMT</Set>
<Set>~TMP_SFEE=$REC[~POS_INX].S_FEE</Set>
<Set>~TMP_SNUM=$REC[~POS_INX].S_NUM</Set>
<Set>REC[~POS_INX].S_AMT=FSUB(~TMP_SAMT,~TMP_RAMT,2)</Set>
<Set>REC[~POS_INX].S_FEE=FSUB(~TMP_SFEE,~TMP_RFEE,2)</Set>
<Set>REC[~POS_INX].S_NUM=ADD(~TMP_SNUM,~TMP_RNUM)</Set>
<Break/>
</If>
<Else>
<Set>~RVS_INX=ADD(1,~RVS_INX)</Set>
</Else>
</While>
<Set>~RVS_INX=1</Set>
<Set>~POS_INX=ADD(1,~POS_INX)</Set>
</While>
<!-- 汇总统计 -->
<Set>~POS_INX=0</Set>
<Set>TOTAL_NUM=0</Set>
<Set>TOTAL_AMT=0</Set>
<Set>TOTAL_FEE=0</Set>
<While condition="INTCMP(~POS_INX,1,$TOT_REC_NUM)">
<Set>~POS_INX=ADD(~POS_INX,1)</Set>
<Set>~TMP_SAMT=$REC[~POS_INX].S_AMT</Set>
<Set>~TMP_SFEE=$REC[~POS_INX].S_FEE</Set>
<Set>~TMP_SNUM=$REC[~POS_INX].S_NUM</Set>
<Set>TOTAL_AMT=FADD(~TMP_SAMT,$TOTAL_AMT,2)</Set>
<Set>TOTAL_FEE=FADD(~TMP_SFEE,$TOTAL_FEE,2)</Set>
<Set>TOTAL_NUM=ADD($TOTAL_NUM,~TMP_SNUM)</Set>
</While>
<Exec func="PUB:GWASetMsg">
<Arg name="MsgCd" value="LPS00000" />
</Exec>
</FlowCtrl>
</Transaction>
</Application>