apzl_leasing/config/fenix/flow/FundCollectionFlow.xml
2025-04-17 14:40:41 +08:00

174 lines
11 KiB
XML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?xml version="1.0" encoding="UTF-8"?>
<fenixs namespace="flow.FundCollectionFlow">
<fenix id="queryRentPlanList">
select lrpi.id,
lrpi.quot_id,
lrpi.cust_id,
lrpi.project_id,
lrpi.project_plan_number,
lrpi.contract_id,
lrpi.contract_plan_number,
lrpi.contract_number,
lrpi.payment_number,
lrpi.customer_name as customername,
lrpi.plan_list,
lrpi.plan_date,
lrpi.rent,
lrpi.corpus,
lrpi.interest,
lrpi.penalty,
round(lrpi.rent - lrpi.rent_sum - lrpi.rent_sum_temp, 2) as rent_over,
round(lrpi.corpus - lrpi.corpus_sum - lrpi.corpus_sum_temp, 2) as corpus_over,
round(lrpi.interest - lrpi.interest_sum - lrpi.interest_sum_temp, 2) as interest_over,
round(lrpi.penalty - lrpi.penalty_sum - lrpi.penalty_sum_temp, 2) as penalty_over,
round(lrpi.rent + lrpi.penalty - lrpi.rent_sum - lrpi.rent_sum_temp - lrpi.penalty_sum -
lrpi.penalty_sum_temp, 2) as all_over,
case
when lrpi.rent_sum + lrpi.rent_sum_temp = 0 and lrpi.penalty_sum + lrpi.penalty_sum_temp = 0 then '未回笼'
when lrpi.rent - lrpi.rent_sum - lrpi.rent_sum_temp = 0 and
lrpi.penalty - lrpi.penalty_sum - lrpi.penalty_sum_temp = 0 then '已回笼'
else '部分回笼' end as planstatus,
round(lrpi.penalty_sum + lrpi.penalty_sum_temp, 2) as penalty_sum
from (select lrp.id,
lrp.quot_id,
lrp.cust_id,
lrp.project_id,
lrp.project_plan_number,
lrp.contract_id,
lrp.contract_plan_number,
lci.contract_number,
lrp.payment_number,
lul.customer_name,
lrp.plan_list,
lrp.plan_date,
lrp.rent,
lrp.corpus,
lrp.interest,
round(ifnull((select sum(lri.rent)
from lc_rent_income lri
where roll_back = '0'
and lri.payment_number = lrp.payment_number
and lri.plan_list = lrp.plan_list
), 0), 2) as rent_sum,
round(ifnull((select sum(lri.rent)
from lc_rent_income_temp lri
where is_flowing = '0'
and roll_back = '0'
and lri.payment_number = lrp.payment_number
and lri.plan_list = lrp.plan_list
), 0), 2) as rent_sum_temp,
round(ifnull((select sum(lri.corpus + lri.corpus_adjust)
from lc_rent_income lri
where roll_back = '0'
and lri.payment_number = lrp.payment_number
and lri.plan_list = lrp.plan_list
), 0), 2) as corpus_sum,
round(ifnull((select sum(lri.corpus + lri.corpus_adjust)
from lc_rent_income_temp lri
where is_flowing = '0'
and roll_back = '0'
and lri.payment_number = lrp.payment_number
and lri.plan_list = lrp.plan_list
), 0), 2) as corpus_sum_temp,
round(ifnull((select sum(lri.interest + lri.interest_adjust)
from lc_rent_income lri
where roll_back = '0'
and lri.payment_number = lrp.payment_number
and lri.plan_list = lrp.plan_list
), 0), 2) as interest_sum,
round(ifnull((select sum(lri.interest + lri.interest_adjust)
from lc_rent_income_temp lri
where is_flowing = '0'
and roll_back = '0'
and lri.payment_number = lrp.payment_number
and lri.plan_list = lrp.plan_list
), 0), 2) as interest_sum_temp,
round(ifnull((select sum(lri.penalty + penalty_adjust)
from lc_rent_income lri
where roll_back = '0'
and lri.payment_number = lrp.payment_number
and lri.plan_list = lrp.plan_list
), 0), 2) as penalty_sum,
round(ifnull((select sum(lri.penalty + penalty_adjust)
from lc_rent_income_temp lri
where is_flowing = '0'
and roll_back = '0'
and lri.payment_number = lrp.payment_number
and lri.plan_list = lrp.plan_list
), 0), 2) as penalty_sum_temp,
@if{?factDate != empty}
getrentpenalty(lrp.payment_number, lrp.plan_list, ${factDate}) as penalty
@else{}
getrentpenalty(lrp.payment_number, lrp.plan_list, date_format(now(), '%Y/%m/%d')) as penalty
@end{}
from lc_rent_plan lrp
left join lb_contract_info lci on lrp.contract_id = lci.id
left join lb_union_lessee lul on lrp.contract_id = lul.contract_id and lul.is_main = 'Y'
left join customer_account ca on ca.contract_id = lci.id
where lrp.plan_status &lt;&gt; '已回笼'
<andEqual field="lrp.id" value="planId" match="?planId != empty" />
<andIn field="lrp.id" value="planIds" match="?planIds != empty" />
<andEqual field="lul.customer_name" value="customername" match="?customername != empty" />
<andEqual field="lci.id" value="contractId" match="?contractId != empty" />
<andEqual field="lci.contract_number" value="contract_number" match="?contract_number != empty" />
<andGreaterThanEqual field="lrp.plan_date" value="plan_dateStart" match="?plan_dateStart != empty" />
<andLessThanEqual field="lrp.plan_date" value="plan_dateEnd" match="?plan_dateEnd != empty" />
<andEqual field="lrp.payment_number" value="paymentNumber" match="?paymentNumber != empty" />
<andLessThan field="lrp.plan_list" value="plan_listLess" match="?plan_listLess != empty" />
and lrp.plan_date &lt; date_add(date_format(current_date(), '%Y-%m-01'), interval 1 month)
and lci.contract_status = '31'
and (lci.corpus_source &lt;&gt; 'PSBC' or isnull(lci.corpus_source))
and not exists(select 1
from lc_occupy_rent_list lorl
where lorl.payment_number = lrp.payment_number
and ((lorl.plan_id = lrp.id and
lorl.flow_name in ('微信银联收款', '微信支付收款', '网银收款')) or
lorl.flow_name in ('合同中途终止', '提前结清申请'))
)
) lrpi
</fenix>
<!-- lc_rent_income 表 plan_id字段未加索引所以使用了 payment_number 和 plan_list 查询 -->
<!-- lc_rent_income_temp 表 plan_id字段未加索引所以使用了 payment_number 和 plan_list 查询 -->
<fenix id="getRentPlanPenaltyByPlanId">
select tt.penalty,
tt.fact_penalty,
tt.penalty_adjust,
tt.penalty - tt.fact_penalty - tt.penalty_adjust as penalty_over
from (select round(getrentpenalty(lrp.payment_number, lrp.plan_list, ${factDate}),
2) as penalty,
round(ifnull(lri.fact_penalty, 0) + ifnull(lrit.fact_penalty, 0), 2) as fact_penalty,
round(ifnull(lri.penalty_adjust, 0) + ifnull(lrit.penalty_adjust, 0), 2) as penalty_adjust
from lc_rent_plan lrp
left join (select payment_number,
plan_list,
sum(penalty) as fact_penalty,
sum(penalty_adjust) as penalty_adjust
from lc_rent_income
where roll_back = '0'
@if{?planId != empty}
and (payment_number, plan_list) in (select lrp1.payment_number, lrp1.plan_list from lc_rent_plan lrp1 where id = #{planId})
@end{}
<andEqual field="payment_number" value="paymentNumber" match="?paymentNumber != empty" />
<andEqual field="plan_list" value="planList" match="?planList != empty" />
) lri on lrp.payment_number = lri.payment_number and lrp.plan_list = lri.plan_list
left join (select payment_number,
plan_list,
sum(penalty) as fact_penalty,
sum(penalty_adjust) as penalty_adjust
from lc_rent_income_temp
where is_flowing = '0'
and roll_back = '0'
@if{?planId != empty}
and (payment_number, plan_list) in (select lrp1.payment_number, lrp1.plan_list from lc_rent_plan lrp1 where id = #{planId})
@end{}
<andEqual field="payment_number" value="paymentNumber" match="?paymentNumber != empty" />
<andEqual field="plan_list" value="planList" match="?planList != empty" />
) lrit on lrp.payment_number = lrit.payment_number and lrp.plan_list = lrit.plan_list
<trimWhere>
<andEqual field="lrp.id" value="planId" match="?planId != empty" />
<andEqual field="lrp.payment_number" value="paymentNumber" match="?paymentNumber != empty" />
<andEqual field="lrp.plan_list" value="planList" match="?planList != empty" />
</trimWhere>
) tt
</fenix>
</fenixs>