229 lines
9.7 KiB
XML
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>
|
|
|