demand: TMS系统 - 客户账单管理 - 财务收款统计 - 查询收款统计列表接口适应新算法逻辑调整 TMS系统 - 客户账单管理 - 财务收款统计 - 查询收款详情接口适应新算法逻辑调整 TMS系统 - 客户账单管理 - 销售回款率统计 - 查询回款率统计列表接口适应新算法逻辑调整

This commit is contained in:
aike 2026-01-08 11:11:30 +08:00
parent ea03c30f1c
commit 5e3d62bcb1
2 changed files with 434 additions and 100 deletions

View File

@ -314,7 +314,8 @@
end
)
)
and b.trade_date <![CDATA[ < ]]>
then case
when b.trade_date <![CDATA[ < ]]>
(
case
when a.credit_period in (30,35,45) then DATE_ADD(STR_TO_DATE(CONCAT(REPLACE(a.bill_month,'-',''),'01'),'%Y%m%d'), INTERVAL 3 MONTH)
@ -323,25 +324,79 @@
else a.payment_due_date
end
)
then ifnull(d.pay_money,0)
else 0
end
when a.settle_type = '2'
and a.credit_period in (30,60,90)
and a.settle_day = '1'
then case
when b.trade_date <![CDATA[ < ]]>
(
case
when a.credit_period = 30 then DATE_ADD(STR_TO_DATE(CONCAT(REPLACE(a.bill_month,'-',''),'01'),'%Y%m%d'), INTERVAL 2 MONTH)
when a.credit_period = 60 then DATE_ADD(STR_TO_DATE(CONCAT(REPLACE(a.bill_month,'-',''),'01'),'%Y%m%d'), INTERVAL 3 MONTH)
when a.credit_period = 90 then DATE_ADD(STR_TO_DATE(CONCAT(REPLACE(a.bill_month,'-',''),'01'),'%Y%m%d'), INTERVAL 4 MONTH)
end
)
then ifnull(d.pay_money,0)
when b.trade_date <![CDATA[ <= ]]> a.payment_due_date then ifnull(d.pay_money,0)
else 0
end
else case
when b.trade_date <![CDATA[ <= ]]> a.payment_due_date then ifnull(d.pay_money,0)
else 0
end
end
) AS recdMoneyIn,
sum( if(
a.settle_type='2'
and a.credit_period <![CDATA[ >= ]]> 30
and b.trade_date <![CDATA[ > ]]> a.payment_due_date
and b.trade_date <![CDATA[ > ]]> a.payment_due_date
and b.trade_date <![CDATA[ < ]]> DATE_SUB( a.payment_due_date, INTERVAL (a.credit_period-60) DAY )
and NOT EXISTS (
SELECT 1
FROM emis_settle_invoice_record f
WHERE f.del_flag='0'
AND f.settle_bill_no = a.settle_bill_no
AND f.bl_delay = '1'
)
,ifnull(d.pay_money,0) ,0) ) AS recdPayMoney60D,
sum(
case
when a.settle_type = '2'
and a.credit_period = 30
and a.settle_day = '1'
and b.trade_date <![CDATA[ >= ]]> DATE_ADD(STR_TO_DATE(CONCAT(REPLACE(a.bill_month,'-',''),'01'),'%Y%m%d'), INTERVAL 2 MONTH)
and b.trade_date <![CDATA[ < ]]> DATE_ADD(STR_TO_DATE(CONCAT(REPLACE(a.bill_month,'-',''),'01'),'%Y%m%d'), INTERVAL 3 MONTH)
and NOT EXISTS (
SELECT 1
FROM emis_settle_invoice_record f
WHERE f.del_flag = '0'
AND f.settle_bill_no = a.settle_bill_no
AND f.bl_delay = '1'
AND f.apply_date <![CDATA[ < ]]>
(
case
when a.credit_period in (30,35,45) then DATE_ADD(STR_TO_DATE(CONCAT(REPLACE(a.bill_month,'-',''),'01'),'%Y%m%d'), INTERVAL 2 MONTH)
when a.credit_period in (60,75) then DATE_ADD(STR_TO_DATE(CONCAT(REPLACE(a.bill_month,'-',''),'01'),'%Y%m%d'), INTERVAL 3 MONTH)
when a.credit_period = 90 then DATE_ADD(STR_TO_DATE(CONCAT(REPLACE(a.bill_month,'-',''),'01'),'%Y%m%d'), INTERVAL 4 MONTH)
else NULL
end
)
)
then ifnull(d.pay_money,0)
when a.settle_type='2'
and a.credit_period <![CDATA[ >= ]]> 30
and b.trade_date <![CDATA[ > ]]> a.payment_due_date
and b.trade_date <![CDATA[ > ]]> a.payment_due_date
and b.trade_date <![CDATA[ < ]]> DATE_SUB( a.payment_due_date, INTERVAL (a.credit_period-60) DAY )
and NOT EXISTS (
SELECT 1
FROM emis_settle_invoice_record f
WHERE f.del_flag = '0'
AND f.settle_bill_no = a.settle_bill_no
AND f.bl_delay = '1'
AND f.apply_date <![CDATA[ < ]]>
(
case
when a.credit_period in (30,35,45) then DATE_ADD(STR_TO_DATE(CONCAT(REPLACE(a.bill_month,'-',''),'01'),'%Y%m%d'), INTERVAL 2 MONTH)
when a.credit_period in (60,75) then DATE_ADD(STR_TO_DATE(CONCAT(REPLACE(a.bill_month,'-',''),'01'),'%Y%m%d'), INTERVAL 3 MONTH)
when a.credit_period = 90 then DATE_ADD(STR_TO_DATE(CONCAT(REPLACE(a.bill_month,'-',''),'01'),'%Y%m%d'), INTERVAL 4 MONTH)
else NULL
end
)
)
then ifnull(d.pay_money,0)
else 0
end
) AS recdPayMoney60D,
sum(
case
when a.settle_type = '2'
@ -362,7 +417,8 @@
end
)
)
and b.trade_date <![CDATA[ >= ]]>
then case
when b.trade_date <![CDATA[ >= ]]>
(
case
when a.credit_period in (30,35,45) then DATE_ADD(STR_TO_DATE(CONCAT(REPLACE(a.bill_month,'-',''),'01'),'%Y%m%d'), INTERVAL 3 MONTH)
@ -371,9 +427,34 @@
else a.payment_due_date
end
)
then ifnull(d.pay_money,0)
else 0
end
when a.settle_type = '2'
and a.credit_period in (30,60,90)
and a.settle_day = '1'
then case
when (
(a.credit_period = 30 and b.trade_date <![CDATA[ >= ]]> DATE_ADD(STR_TO_DATE(CONCAT(REPLACE(a.bill_month,'-',''),'01'),'%Y%m%d'), INTERVAL 3 MONTH))
or (a.credit_period = 60 and b.trade_date <![CDATA[ >= ]]> DATE_ADD(STR_TO_DATE(CONCAT(REPLACE(a.bill_month,'-',''),'01'),'%Y%m%d'), INTERVAL 4 MONTH))
or (a.credit_period = 90 and b.trade_date <![CDATA[ >= ]]> DATE_ADD(STR_TO_DATE(CONCAT(REPLACE(a.bill_month,'-',''),'01'),'%Y%m%d'), INTERVAL 5 MONTH))
)
then ifnull(d.pay_money,0)
when (a.settle_type='2' and a.credit_period <![CDATA[ >= ]]> 30 and b.trade_date <![CDATA[ > ]]> a.payment_due_date and b.trade_date <![CDATA[ >= ]]> DATE_SUB( a.payment_due_date, INTERVAL (a.credit_period-60) DAY ) ) or ( ( (a.settle_type='2' and a.credit_period <![CDATA[ < ]]> 30) or a.settle_type='1' ) and b.trade_date <![CDATA[ > ]]> a.payment_due_date )
then ifnull(d.pay_money,0)
else 0
end
when a.settle_type='2'
and a.credit_period <![CDATA[ >= ]]> 30
then case
when b.trade_date <![CDATA[ > ]]> a.payment_due_date
and b.trade_date <![CDATA[ >= ]]> DATE_SUB( a.payment_due_date, INTERVAL (a.credit_period-60) DAY )
then ifnull(d.pay_money,0)
else 0
end
when ( (a.settle_type='2' and a.credit_period <![CDATA[ < ]]> 30) or a.settle_type='1' )
then case
when b.trade_date <![CDATA[ > ]]> a.payment_due_date then ifnull(d.pay_money,0)
else 0
end
else 0
end
) AS recdPayMoneyGreat60D
@ -933,7 +1014,8 @@
end
)
)
and b.trade_date <![CDATA[ < ]]>
then case
when b.trade_date <![CDATA[ < ]]>
(
case
when a.credit_period in (30,35,45) then DATE_ADD(STR_TO_DATE(CONCAT(REPLACE(a.bill_month,'-',''),'01'),'%Y%m%d'), INTERVAL 3 MONTH)
@ -942,25 +1024,79 @@
else a.payment_due_date
end
)
then ifnull(d.pay_money,0)
else 0
end
when a.settle_type = '2'
and a.credit_period in (30,60,90)
and a.settle_day = '1'
then case
when b.trade_date <![CDATA[ < ]]>
(
case
when a.credit_period = 30 then DATE_ADD(STR_TO_DATE(CONCAT(REPLACE(a.bill_month,'-',''),'01'),'%Y%m%d'), INTERVAL 2 MONTH)
when a.credit_period = 60 then DATE_ADD(STR_TO_DATE(CONCAT(REPLACE(a.bill_month,'-',''),'01'),'%Y%m%d'), INTERVAL 3 MONTH)
when a.credit_period = 90 then DATE_ADD(STR_TO_DATE(CONCAT(REPLACE(a.bill_month,'-',''),'01'),'%Y%m%d'), INTERVAL 4 MONTH)
end
)
then ifnull(d.pay_money,0)
when b.trade_date <![CDATA[ <= ]]> a.payment_due_date then ifnull(d.pay_money,0)
else 0
end
else case
when b.trade_date <![CDATA[ <= ]]> a.payment_due_date then ifnull(d.pay_money,0)
else 0
end
end
) AS recdMoneyIn,
sum( if(
a.settle_type='2'
and a.credit_period <![CDATA[ >= ]]> 30
and b.trade_date <![CDATA[ > ]]> a.payment_due_date
and b.trade_date <![CDATA[ > ]]> a.payment_due_date
and b.trade_date <![CDATA[ < ]]> DATE_SUB( a.payment_due_date, INTERVAL (a.credit_period-60) DAY )
and NOT EXISTS (
SELECT 1
FROM emis_settle_invoice_record f
WHERE f.del_flag='0'
AND f.settle_bill_no = a.settle_bill_no
AND f.bl_delay = '1'
)
,ifnull(d.pay_money,0) ,0) ) AS recdPayMoney60D,
sum(
case
when a.settle_type = '2'
and a.credit_period = 30
and a.settle_day = '1'
and b.trade_date <![CDATA[ >= ]]> DATE_ADD(STR_TO_DATE(CONCAT(REPLACE(a.bill_month,'-',''),'01'),'%Y%m%d'), INTERVAL 2 MONTH)
and b.trade_date <![CDATA[ < ]]> DATE_ADD(STR_TO_DATE(CONCAT(REPLACE(a.bill_month,'-',''),'01'),'%Y%m%d'), INTERVAL 3 MONTH)
and NOT EXISTS (
SELECT 1
FROM emis_settle_invoice_record f
WHERE f.del_flag = '0'
AND f.settle_bill_no = a.settle_bill_no
AND f.bl_delay = '1'
AND f.apply_date <![CDATA[ < ]]>
(
case
when a.credit_period in (30,35,45) then DATE_ADD(STR_TO_DATE(CONCAT(REPLACE(a.bill_month,'-',''),'01'),'%Y%m%d'), INTERVAL 2 MONTH)
when a.credit_period in (60,75) then DATE_ADD(STR_TO_DATE(CONCAT(REPLACE(a.bill_month,'-',''),'01'),'%Y%m%d'), INTERVAL 3 MONTH)
when a.credit_period = 90 then DATE_ADD(STR_TO_DATE(CONCAT(REPLACE(a.bill_month,'-',''),'01'),'%Y%m%d'), INTERVAL 4 MONTH)
else NULL
end
)
)
then ifnull(d.pay_money,0)
when a.settle_type='2'
and a.credit_period <![CDATA[ >= ]]> 30
and b.trade_date <![CDATA[ > ]]> a.payment_due_date
and b.trade_date <![CDATA[ > ]]> a.payment_due_date
and b.trade_date <![CDATA[ < ]]> DATE_SUB( a.payment_due_date, INTERVAL (a.credit_period-60) DAY )
and NOT EXISTS (
SELECT 1
FROM emis_settle_invoice_record f
WHERE f.del_flag = '0'
AND f.settle_bill_no = a.settle_bill_no
AND f.bl_delay = '1'
AND f.apply_date <![CDATA[ < ]]>
(
case
when a.credit_period in (30,35,45) then DATE_ADD(STR_TO_DATE(CONCAT(REPLACE(a.bill_month,'-',''),'01'),'%Y%m%d'), INTERVAL 2 MONTH)
when a.credit_period in (60,75) then DATE_ADD(STR_TO_DATE(CONCAT(REPLACE(a.bill_month,'-',''),'01'),'%Y%m%d'), INTERVAL 3 MONTH)
when a.credit_period = 90 then DATE_ADD(STR_TO_DATE(CONCAT(REPLACE(a.bill_month,'-',''),'01'),'%Y%m%d'), INTERVAL 4 MONTH)
else NULL
end
)
)
then ifnull(d.pay_money,0)
else 0
end
) AS recdPayMoney60D,
sum(
case
when a.settle_type = '2'
@ -981,7 +1117,8 @@
end
)
)
and b.trade_date <![CDATA[ >= ]]>
then case
when b.trade_date <![CDATA[ >= ]]>
(
case
when a.credit_period in (30,35,45) then DATE_ADD(STR_TO_DATE(CONCAT(REPLACE(a.bill_month,'-',''),'01'),'%Y%m%d'), INTERVAL 3 MONTH)
@ -990,9 +1127,34 @@
else a.payment_due_date
end
)
then ifnull(d.pay_money,0)
else 0
end
when a.settle_type = '2'
and a.credit_period in (30,60,90)
and a.settle_day = '1'
then case
when (
(a.credit_period = 30 and b.trade_date <![CDATA[ >= ]]> DATE_ADD(STR_TO_DATE(CONCAT(REPLACE(a.bill_month,'-',''),'01'),'%Y%m%d'), INTERVAL 3 MONTH))
or (a.credit_period = 60 and b.trade_date <![CDATA[ >= ]]> DATE_ADD(STR_TO_DATE(CONCAT(REPLACE(a.bill_month,'-',''),'01'),'%Y%m%d'), INTERVAL 4 MONTH))
or (a.credit_period = 90 and b.trade_date <![CDATA[ >= ]]> DATE_ADD(STR_TO_DATE(CONCAT(REPLACE(a.bill_month,'-',''),'01'),'%Y%m%d'), INTERVAL 5 MONTH))
)
then ifnull(d.pay_money,0)
when (a.settle_type='2' and a.credit_period <![CDATA[ >= ]]> 30 and b.trade_date <![CDATA[ > ]]> a.payment_due_date and b.trade_date <![CDATA[ >= ]]> DATE_SUB( a.payment_due_date, INTERVAL (a.credit_period-60) DAY ) ) or ( ( (a.settle_type='2' and a.credit_period <![CDATA[ < ]]> 30) or a.settle_type='1' ) and b.trade_date <![CDATA[ > ]]> a.payment_due_date )
then ifnull(d.pay_money,0)
else 0
end
when a.settle_type='2'
and a.credit_period <![CDATA[ >= ]]> 30
then case
when b.trade_date <![CDATA[ > ]]> a.payment_due_date
and b.trade_date <![CDATA[ >= ]]> DATE_SUB( a.payment_due_date, INTERVAL (a.credit_period-60) DAY )
then ifnull(d.pay_money,0)
else 0
end
when ( (a.settle_type='2' and a.credit_period <![CDATA[ < ]]> 30) or a.settle_type='1' )
then case
when b.trade_date <![CDATA[ > ]]> a.payment_due_date then ifnull(d.pay_money,0)
else 0
end
else 0
end
) AS recdPayMoneyGreat60D

View File

@ -333,76 +333,248 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
and espbr.settle_bill_no=esb.settle_bill_no
<if test="params.queryDataType != null and params.queryDataType == 1">
and (
( esb.settle_type = '2'
and esb.credit_period in (30,35,45,60,75,90)
and EXISTS(
SELECT 1
FROM emis_settle_invoice_record f
WHERE f.del_flag = '0'
AND f.settle_bill_no = esb.settle_bill_no
AND f.bl_delay = '1'
AND f.apply_date <![CDATA[ < ]]>
(
case
when esb.credit_period in (30,35,45) then DATE_ADD(STR_TO_DATE(CONCAT(REPLACE(esb.bill_month,'-',''),'01'),'%Y%m%d'), INTERVAL 2 MONTH)
when esb.credit_period in (60,75) then DATE_ADD(STR_TO_DATE(CONCAT(REPLACE(esb.bill_month,'-',''),'01'),'%Y%m%d'), INTERVAL 3 MONTH)
when esb.credit_period = 90 then DATE_ADD(STR_TO_DATE(CONCAT(REPLACE(esb.bill_month,'-',''),'01'),'%Y%m%d'), INTERVAL 4 MONTH)
else NULL
end
)
)
and b.trade_date <![CDATA[ < ]]>
(
case
when esb.credit_period in (30,35,45) then DATE_ADD(STR_TO_DATE(CONCAT(REPLACE(esb.bill_month,'-',''),'01'),'%Y%m%d'), INTERVAL 3 MONTH)
when esb.credit_period in (60,75) then DATE_ADD(STR_TO_DATE(CONCAT(REPLACE(esb.bill_month,'-',''),'01'),'%Y%m%d'), INTERVAL 4 MONTH)
when esb.credit_period = 90 then DATE_ADD(STR_TO_DATE(CONCAT(REPLACE(esb.bill_month,'-',''),'01'),'%Y%m%d'), INTERVAL 5 MONTH)
else esb.payment_due_date
end
<!-- 优先级1:延期账单,账期内收款 -->
(
esb.settle_type = '2'
and esb.credit_period in (30,35,45,60,75,90)
and EXISTS(
SELECT 1
FROM emis_settle_invoice_record f
WHERE f.del_flag = '0'
AND f.settle_bill_no = esb.settle_bill_no
AND f.bl_delay = '1'
AND f.apply_date <![CDATA[ < ]]>
(
case
when esb.credit_period in (30,35,45) then DATE_ADD(STR_TO_DATE(CONCAT(REPLACE(esb.bill_month,'-',''),'01'),'%Y%m%d'), INTERVAL 2 MONTH)
when esb.credit_period in (60,75) then DATE_ADD(STR_TO_DATE(CONCAT(REPLACE(esb.bill_month,'-',''),'01'),'%Y%m%d'), INTERVAL 3 MONTH)
when esb.credit_period = 90 then DATE_ADD(STR_TO_DATE(CONCAT(REPLACE(esb.bill_month,'-',''),'01'),'%Y%m%d'), INTERVAL 4 MONTH)
else NULL
end
)
)
) or b.trade_date <![CDATA[ <= ]]> esb.payment_due_date
and b.trade_date <![CDATA[ < ]]>
(
case
when esb.credit_period in (30,35,45) then DATE_ADD(STR_TO_DATE(CONCAT(REPLACE(esb.bill_month,'-',''),'01'),'%Y%m%d'), INTERVAL 3 MONTH)
when esb.credit_period in (60,75) then DATE_ADD(STR_TO_DATE(CONCAT(REPLACE(esb.bill_month,'-',''),'01'),'%Y%m%d'), INTERVAL 4 MONTH)
when esb.credit_period = 90 then DATE_ADD(STR_TO_DATE(CONCAT(REPLACE(esb.bill_month,'-',''),'01'),'%Y%m%d'), INTERVAL 5 MONTH)
else esb.payment_due_date
end
)
)
<!-- 优先级2:月结且固定结算日 -->
OR
(
NOT (
EXISTS(
SELECT 1
FROM emis_settle_invoice_record f
WHERE f.del_flag = '0'
AND f.settle_bill_no = esb.settle_bill_no
AND f.bl_delay = '1'
AND f.apply_date <![CDATA[ < ]]>
(
case
when esb.credit_period in (30,35,45) then DATE_ADD(STR_TO_DATE(CONCAT(REPLACE(esb.bill_month,'-',''),'01'),'%Y%m%d'), INTERVAL 2 MONTH)
when esb.credit_period in (60,75) then DATE_ADD(STR_TO_DATE(CONCAT(REPLACE(esb.bill_month,'-',''),'01'),'%Y%m%d'), INTERVAL 3 MONTH)
when esb.credit_period = 90 then DATE_ADD(STR_TO_DATE(CONCAT(REPLACE(esb.bill_month,'-',''),'01'),'%Y%m%d'), INTERVAL 4 MONTH)
else NULL
end
)
)
)
and esb.settle_type = '2'
and esb.credit_period in (30,60,90)
and esb.settle_day = '1'
and b.trade_date <![CDATA[ < ]]>
(
case
when esb.credit_period = 30 then DATE_ADD(STR_TO_DATE(CONCAT(REPLACE(esb.bill_month,'-',''),'01'),'%Y%m%d'), INTERVAL 2 MONTH)
when esb.credit_period = 60 then DATE_ADD(STR_TO_DATE(CONCAT(REPLACE(esb.bill_month,'-',''),'01'),'%Y%m%d'), INTERVAL 3 MONTH)
when esb.credit_period = 90 then DATE_ADD(STR_TO_DATE(CONCAT(REPLACE(esb.bill_month,'-',''),'01'),'%Y%m%d'), INTERVAL 4 MONTH)
end
)
)
<!-- 优先级3:普通账期内收款 -->
OR
(
NOT (
EXISTS(
SELECT 1
FROM emis_settle_invoice_record f
WHERE f.del_flag = '0'
AND f.settle_bill_no = esb.settle_bill_no
AND f.bl_delay = '1'
AND f.apply_date <![CDATA[ < ]]>
(
case
when esb.credit_period in (30,35,45) then DATE_ADD(STR_TO_DATE(CONCAT(REPLACE(esb.bill_month,'-',''),'01'),'%Y%m%d'), INTERVAL 2 MONTH)
when esb.credit_period in (60,75) then DATE_ADD(STR_TO_DATE(CONCAT(REPLACE(esb.bill_month,'-',''),'01'),'%Y%m%d'), INTERVAL 3 MONTH)
when esb.credit_period = 90 then DATE_ADD(STR_TO_DATE(CONCAT(REPLACE(esb.bill_month,'-',''),'01'),'%Y%m%d'), INTERVAL 4 MONTH)
else NULL
end
)
)
)
and NOT (
esb.settle_type = '2'
and esb.credit_period in (30,60,90)
and esb.settle_day = '1'
)
and b.trade_date <![CDATA[ <= ]]> esb.payment_due_date
)
)
</if>
<if test="params.queryDataType != null and params.queryDataType == 2">
and ( esb.settle_type='2' and esb.credit_period <![CDATA[ >= ]]> 30 and b.trade_date <![CDATA[ > ]]> esb.payment_due_date and b.trade_date <![CDATA[ > ]]> esb.payment_due_date and b.trade_date <![CDATA[ < ]]> DATE_SUB( esb.payment_due_date, INTERVAL (esb.credit_period-60) DAY )
and NOT EXISTS (
SELECT 1
FROM emis_settle_invoice_record f
WHERE f.del_flag='0'
AND f.settle_bill_no = esb.settle_bill_no
AND f.bl_delay = '1'
) )
and (
(
esb.settle_type = '2'
and esb.credit_period = 30
and esb.settle_day = '1'
and b.trade_date <![CDATA[ >= ]]> DATE_ADD(STR_TO_DATE(CONCAT(REPLACE(esb.bill_month,'-',''),'01'),'%Y%m%d'), INTERVAL 2 MONTH)
and b.trade_date <![CDATA[ < ]]> DATE_ADD(STR_TO_DATE(CONCAT(REPLACE(esb.bill_month,'-',''),'01'),'%Y%m%d'), INTERVAL 3 MONTH)
and NOT EXISTS (
SELECT 1
FROM emis_settle_invoice_record f
WHERE f.del_flag = '0'
AND f.settle_bill_no = a.settle_bill_no
AND f.bl_delay = '1'
AND f.apply_date <![CDATA[ < ]]>
(
case
when esb.credit_period in (30,35,45) then DATE_ADD(STR_TO_DATE(CONCAT(REPLACE(a.bill_month,'-',''),'01'),'%Y%m%d'), INTERVAL 2 MONTH)
when esb.credit_period in (60,75) then DATE_ADD(STR_TO_DATE(CONCAT(REPLACE(a.bill_month,'-',''),'01'),'%Y%m%d'), INTERVAL 3 MONTH)
when esb.credit_period = 90 then DATE_ADD(STR_TO_DATE(CONCAT(REPLACE(a.bill_month,'-',''),'01'),'%Y%m%d'), INTERVAL 4 MONTH)
else NULL
end
)
)
)
OR
(
NOT (
esb.settle_type = '2'
and esb.credit_period = 30
and esb.settle_day = '1'
)
and esb.settle_type='2'
and esb.credit_period <![CDATA[ >= ]]> 30
and b.trade_date <![CDATA[ > ]]> esb.payment_due_date
and b.trade_date <![CDATA[ < ]]> DATE_SUB( esb.payment_due_date, INTERVAL (esb.credit_period-60) DAY )
and NOT EXISTS (
SELECT 1
FROM emis_settle_invoice_record f
WHERE f.del_flag = '0'
AND f.settle_bill_no = a.settle_bill_no
AND f.bl_delay = '1'
AND f.apply_date <![CDATA[ < ]]>
(
case
when esb.credit_period in (30,35,45) then DATE_ADD(STR_TO_DATE(CONCAT(REPLACE(a.bill_month,'-',''),'01'),'%Y%m%d'), INTERVAL 2 MONTH)
when esb.credit_period in (60,75) then DATE_ADD(STR_TO_DATE(CONCAT(REPLACE(a.bill_month,'-',''),'01'),'%Y%m%d'), INTERVAL 3 MONTH)
when esb.credit_period = 90 then DATE_ADD(STR_TO_DATE(CONCAT(REPLACE(a.bill_month,'-',''),'01'),'%Y%m%d'), INTERVAL 4 MONTH)
else NULL
end
)
)
)
)
</if>
<if test="params.queryDataType != null and params.queryDataType == 3">
and (
( esb.settle_type = '2'
and esb.credit_period in (30,35,45,60,75,90)
and EXISTS(
SELECT 1
FROM emis_settle_invoice_record f
WHERE f.del_flag = '0'
AND f.settle_bill_no = esb.settle_bill_no
AND f.bl_delay = '1'
AND f.apply_date <![CDATA[ < ]]>
(
case
when esb.credit_period in (30,35,45) then DATE_ADD(STR_TO_DATE(CONCAT(REPLACE(esb.bill_month,'-',''),'01'),'%Y%m%d'), INTERVAL 2 MONTH)
when esb.credit_period in (60,75) then DATE_ADD(STR_TO_DATE(CONCAT(REPLACE(esb.bill_month,'-',''),'01'),'%Y%m%d'), INTERVAL 3 MONTH)
when esb.credit_period = 90 then DATE_ADD(STR_TO_DATE(CONCAT(REPLACE(esb.bill_month,'-',''),'01'),'%Y%m%d'), INTERVAL 4 MONTH)
else NULL
end
)
)
and b.trade_date <![CDATA[ >= ]]>
(
case
when esb.credit_period in (30,35,45) then DATE_ADD(STR_TO_DATE(CONCAT(REPLACE(esb.bill_month,'-',''),'01'),'%Y%m%d'), INTERVAL 3 MONTH)
when esb.credit_period in (60,75) then DATE_ADD(STR_TO_DATE(CONCAT(REPLACE(esb.bill_month,'-',''),'01'),'%Y%m%d'), INTERVAL 4 MONTH)
when esb.credit_period = 90 then DATE_ADD(STR_TO_DATE(CONCAT(REPLACE(esb.bill_month,'-',''),'01'),'%Y%m%d'), INTERVAL 5 MONTH)
else esb.payment_due_date
end
(
esb.settle_type = '2'
and esb.credit_period in (30,35,45,60,75,90)
and EXISTS(
SELECT 1
FROM emis_settle_invoice_record f
WHERE f.del_flag = '0'
AND f.settle_bill_no = esb.settle_bill_no
AND f.bl_delay = '1'
AND f.apply_date <![CDATA[ < ]]>
(
case
when esb.credit_period in (30,35,45) then DATE_ADD(STR_TO_DATE(CONCAT(REPLACE(esb.bill_month,'-',''),'01'),'%Y%m%d'), INTERVAL 2 MONTH)
when esb.credit_period in (60,75) then DATE_ADD(STR_TO_DATE(CONCAT(REPLACE(esb.bill_month,'-',''),'01'),'%Y%m%d'), INTERVAL 3 MONTH)
when esb.credit_period = 90 then DATE_ADD(STR_TO_DATE(CONCAT(REPLACE(esb.bill_month,'-',''),'01'),'%Y%m%d'), INTERVAL 4 MONTH)
else NULL
end
)
)
) or ( ( esb.settle_type='2' and esb.credit_period <![CDATA[ >= ]]> 30 and b.trade_date <![CDATA[ > ]]> esb.payment_due_date and b.trade_date <![CDATA[ >= ]]> DATE_SUB( esb.payment_due_date, INTERVAL (esb.credit_period-60) DAY ) ) or ( ( (esb.settle_type='2' and esb.credit_period <![CDATA[ < ]]> 30) or esb.settle_type='1' ) and b.trade_date <![CDATA[ > ]]> esb.payment_due_date ) )
and b.trade_date <![CDATA[ >= ]]>
(
case
when esb.credit_period in (30,35,45) then DATE_ADD(STR_TO_DATE(CONCAT(REPLACE(esb.bill_month,'-',''),'01'),'%Y%m%d'), INTERVAL 3 MONTH)
when esb.credit_period in (60,75) then DATE_ADD(STR_TO_DATE(CONCAT(REPLACE(esb.bill_month,'-',''),'01'),'%Y%m%d'), INTERVAL 4 MONTH)
when esb.credit_period = 90 then DATE_ADD(STR_TO_DATE(CONCAT(REPLACE(esb.bill_month,'-',''),'01'),'%Y%m%d'), INTERVAL 5 MONTH)
else esb.payment_due_date
end
)
)
OR
(
NOT (
EXISTS(
SELECT 1
FROM emis_settle_invoice_record f
WHERE f.del_flag = '0'
AND f.settle_bill_no = esb.settle_bill_no
AND f.bl_delay = '1'
AND f.apply_date <![CDATA[ < ]]>
(
case
when esb.credit_period in (30,35,45) then DATE_ADD(STR_TO_DATE(CONCAT(REPLACE(esb.bill_month,'-',''),'01'),'%Y%m%d'), INTERVAL 2 MONTH)
when esb.credit_period in (60,75) then DATE_ADD(STR_TO_DATE(CONCAT(REPLACE(esb.bill_month,'-',''),'01'),'%Y%m%d'), INTERVAL 3 MONTH)
when esb.credit_period = 90 then DATE_ADD(STR_TO_DATE(CONCAT(REPLACE(esb.bill_month,'-',''),'01'),'%Y%m%d'), INTERVAL 4 MONTH)
else NULL
end
)
)
)
and esb.settle_type = '2'
and esb.credit_period in (30,60,90)
and esb.settle_day = '1'
and b.trade_date <![CDATA[ >= ]]>
(
case
when esb.credit_period = 30 then DATE_ADD(STR_TO_DATE(CONCAT(REPLACE(esb.bill_month,'-',''),'01'),'%Y%m%d'), INTERVAL 3 MONTH)
when esb.credit_period = 60 then DATE_ADD(STR_TO_DATE(CONCAT(REPLACE(esb.bill_month,'-',''),'01'),'%Y%m%d'), INTERVAL 4 MONTH)
when esb.credit_period = 90 then DATE_ADD(STR_TO_DATE(CONCAT(REPLACE(esb.bill_month,'-',''),'01'),'%Y%m%d'), INTERVAL 5 MONTH)
end
)
)
OR
(
NOT (
EXISTS(
SELECT 1
FROM emis_settle_invoice_record f
WHERE f.del_flag = '0'
AND f.settle_bill_no = esb.settle_bill_no
AND f.bl_delay = '1'
AND f.apply_date <![CDATA[ < ]]>
(
case
when esb.credit_period in (30,35,45) then DATE_ADD(STR_TO_DATE(CONCAT(REPLACE(esb.bill_month,'-',''),'01'),'%Y%m%d'), INTERVAL 2 MONTH)
when esb.credit_period in (60,75) then DATE_ADD(STR_TO_DATE(CONCAT(REPLACE(esb.bill_month,'-',''),'01'),'%Y%m%d'), INTERVAL 3 MONTH)
when esb.credit_period = 90 then DATE_ADD(STR_TO_DATE(CONCAT(REPLACE(esb.bill_month,'-',''),'01'),'%Y%m%d'), INTERVAL 4 MONTH)
else NULL
end
)
)
)
and NOT (
esb.settle_type = '2'
and esb.credit_period in (30,60,90)
and esb.settle_day = '1'
)
and esb.settle_type='2'
and esb.credit_period <![CDATA[ >= ]]> 30
and b.trade_date <![CDATA[ > ]]> esb.payment_due_date
and b.trade_date <![CDATA[ >= ]]> DATE_SUB( esb.payment_due_date, INTERVAL (esb.credit_period-60) DAY )
)
)
</if>