chore:优化租金核销速度

This commit is contained in:
chaojie.li 2021-10-26 14:59:30 +08:00
parent 427e847ee9
commit 3827b4ce52

View File

@ -1,338 +1,617 @@
DELIMITER $$
create
definer = apzl@`%` procedure proc_insert_hexiao(IN ln_contract_id varchar(200), IN ln_plan_date varchar(200), IN in_rent varchar(200),
IN in_hire_list varchar(200), IN in_type varchar(2))
BEGIN
-- 如果in_type=1就是手工核销
IF in_type = 1 THEN
INSERT INTO LC_RENT_INCOME (ID,
QUOT_ID,
CUST_ID,
PROJECT_ID,
PROJECT_PLAN_NUMBER,
CONTRACT_ID,
CONTRACT_PLAN_NUMBER,
PAYMENT_NUMBER,
EBANK_NUMBER,
PLAN_ID,
PLAN_LIST,
INTEREST_ADJUST,
SETTLE_METHOD,
HIRE_LIST,
HIRE_DATE,
RENT,
CORPUS,
INTEREST,
PENALTY,
CORPUS_ADJUST,
PENALTY_ADJUST,
ROLL_BACK,
COIN,
hire_number,
hire_bank,
hire_account,
own_bank,
own_account,
own_number,
charge_way)
(
SELECT REPLACE(UUID(), '-', '') AS id,
LCP2.QUOT_ID,
LCP2.CUST_ID,
LCP2.PROJECT_ID,
LCP2.PROJECT_PLAN_NUMBER,
LCP2.CONTRACT_ID,
LCP2.CONTRACT_PLAN_NUMBER,
LCP2.PAYMENT_NUMBER,
'' AS EBANK_NUMBER,
LCP2.PLAN_ID,
LCP2.PLAN_LIST,
'0' AS INTEREST_ADJUST,
'settlemethod6' AS SETTLE_METHOD,
in_hire_list AS HIRE_LIST,
DATE_FORMAT(CURDATE(), '%Y/%m/%d') AS HIRE_DATE,
LCP2.rent_over AS RENT,
LCP2.corpus_over AS CORPUS,
LCP2.interest_over AS INTEREST,
(
in_rent - LCP2.corpus_over - LCP2.interest_over
) AS PENALTY,
'0' AS CORPUS_ADJUST,
'0' AS PENALTY_ADJUST,
'0' AS ROLL_BACK,
LCP2.COIN AS COIN,
ca.acc_number,
ca.bank_name,
ca.account,
oa.acc_bank,
lci.subjectname,
oa.acc_number,
'AutoBuckle'
FROM (
SELECT LCP.QUOT_ID,
LCP.CUST_ID,
LCP.PROJECT_ID,
LCP.PROJECT_PLAN_NUMBER,
LCP.CONTRACT_ID,
LCP.CONTRACT_PLAN_NUMBER,
LCP.PAYMENT_NUMBER,
LCP.id AS PLAN_ID,
LCP.PLAN_LIST,
LCP.COIN,
(LCP.RENT - (ifnull(LRI.rent, 0) + ifnull(lcfi.rent, 0))) AS rent_over,
(LCP.CORPUS - (((ifnull(LRI.corpus, 0) + ifnull(lcfi.corpus, 0)) + ifnull(LRI.corpus_adjust, 0)) +
ifnull(lcfi.corpus_adjust, 0))) AS corpus_over,
(LCP.INTEREST - (((ifnull(LRI.interest, 0) + ifnull(lcfi.interest, 0)) + ifnull(LRI.interest_adjust, 0)) +
ifnull(lcfi.interest_adjust, 0))) AS interest_over,
round((getRentPenalty(LCP.PAYMENT_NUMBER, LCP.PLAN_LIST, date_format(now(), '%Y/%m/%d')) -
((ifnull(LRI.penalty, 0) + ifnull(lcfi.penalty, 0)) +
(ifnull(LRI.penalty_adjust, 0) + ifnull(lcfi.penalty_adjust, 0)))),
2) AS penalty_over
FROM LC_RENT_PLAN LCP
LEFT JOIN (
select LRI.PAYMENT_NUMBER AS payment_number,
LRI.PLAN_LIST AS plan_list,
sum(LRI.RENT) AS rent,
sum(LRI.CORPUS) AS corpus,
sum(LRI.INTEREST) AS interest,
sum(LRI.PENALTY) AS penalty,
sum(LRI.CORPUS_ADJUST) AS corpus_adjust,
sum(LRI.INTEREST_ADJUST) AS interest_adjust,
sum(LRI.PENALTY_ADJUST) AS penalty_adjust
from lc_rent_income LRI
where LRI.ROLL_BACK = '0'
AND LRI.contract_id = ln_contract_id
group by LRI.PAYMENT_NUMBER, LRI.PLAN_LIST
) LRI ON LCP.PAYMENT_NUMBER = LRI.payment_number AND LCP.PLAN_LIST = LRI.plan_list
left join lc_rent_income_temp_transfer lcfi
on LCP.PAYMENT_NUMBER = lcfi.payment_number and LCP.PLAN_LIST = lcfi.plan_list
WHERE LCP.contract_id = ln_contract_id
AND LCP.plan_date = ln_plan_date
) LCP2
LEFT JOIN customer_account ca ON ca.contract_id = LCP2.contract_id
LEFT JOIN lb_contract_info lci ON LCP2.contract_id = lci.id
LEFT JOIN code_library cl ON cl.codeno = 'ManySubject' AND lci.subjectid = cl.itemno
LEFT JOIN own_account oa ON oa.own_id = cl.bankno AND oa.account_purpose = 'default' AND oa.state_ = '0010' AND
(oa.account_type = 'in_account' OR oa.account_type = 'inAndOut_account') AND oa.acc_type = '0010'
);
-- in_type = 2为银联卡口手动刷新核销数据
ELSEIF in_type = 2 THEN
INSERT INTO LC_RENT_INCOME (ID,
QUOT_ID,
CUST_ID,
PROJECT_ID,
PROJECT_PLAN_NUMBER,
CONTRACT_ID,
CONTRACT_PLAN_NUMBER,
PAYMENT_NUMBER,
EBANK_NUMBER,
PLAN_ID,
PLAN_LIST,
INTEREST_ADJUST,
SETTLE_METHOD,
HIRE_LIST,
HIRE_DATE,
RENT,
CORPUS,
INTEREST,
PENALTY,
CORPUS_ADJUST,
PENALTY_ADJUST,
ROLL_BACK,
COIN,
hire_number,
hire_bank,
hire_account,
own_bank,
own_account,
own_number,
charge_way)
(
SELECT REPLACE(UUID(), '-', '') AS id,
LCP2.QUOT_ID,
LCP2.CUST_ID,
LCP2.PROJECT_ID,
LCP2.PROJECT_PLAN_NUMBER,
LCP2.CONTRACT_ID,
LCP2.CONTRACT_PLAN_NUMBER,
LCP2.PAYMENT_NUMBER,
'' AS EBANK_NUMBER,
LCP2.PLAN_ID,
LCP2.PLAN_LIST,
'0' AS INTEREST_ADJUST,
'settlemethod6' AS SETTLE_METHOD,
in_hire_list AS HIRE_LIST,
DATE_FORMAT(CURDATE(), '%Y/%m/%d') AS HIRE_DATE,
CASE
WHEN in_rent >= LCP2.corpus_over + LCP2.interest_over + LCP2.penalty_over THEN LCP2.rent_over
WHEN in_rent < LCP2.corpus_over + LCP2.interest_over + LCP2.penalty_over AND
in_rent >= LCP2.interest_over + LCP2.penalty_over
THEN in_rent - LCP2.penalty_over
WHEN in_rent < LCP2.interest_over + LCP2.penalty_over AND in_rent > LCP2.penalty_over THEN in_rent - LCP2.penalty_over
ELSE '0'
END RENT,
CASE
WHEN in_rent >= LCP2.corpus_over + LCP2.interest_over + LCP2.penalty_over THEN LCP2.corpus_over
WHEN in_rent < LCP2.corpus_over + LCP2.interest_over + LCP2.penalty_over AND
in_rent >= LCP2.interest_over + LCP2.penalty_over
THEN in_rent - (LCP2.penalty_over + LCP2.interest_over)
WHEN in_rent < LCP2.interest_over + LCP2.penalty_over AND in_rent >= LCP2.penalty_over THEN '0'
ELSE '0'
END CORPUS,
CASE
WHEN in_rent >= LCP2.corpus_over + LCP2.interest_over + LCP2.penalty_over THEN LCP2.interest_over
WHEN in_rent < LCP2.corpus_over + LCP2.interest_over + LCP2.penalty_over AND
in_rent >= LCP2.interest_over + LCP2.penalty_over
THEN LCP2.interest_over
WHEN in_rent < LCP2.interest_over + LCP2.penalty_over AND in_rent >= LCP2.penalty_over THEN in_rent - LCP2.penalty_over
ELSE '0'
END INTEREST,
CASE
WHEN in_rent >= LCP2.corpus_over + LCP2.interest_over + LCP2.penalty_over THEN LCP2.penalty_over
WHEN in_rent < LCP2.corpus_over + LCP2.interest_over + LCP2.penalty_over AND
in_rent >= LCP2.interest_over + LCP2.penalty_over
THEN LCP2.penalty_over
WHEN in_rent < LCP2.interest_over + LCP2.penalty_over AND in_rent >= LCP2.penalty_over THEN LCP2.penalty_over
ELSE in_rent
END AS PENALTY,
'0' AS CORPUS_ADJUST,
'0' AS PENALTY_ADJUST,
'0' AS ROLL_BACK,
LCP2.COIN AS COIN,
ca.acc_number,
ca.bank_name,
ca.account,
oa.acc_bank,
lci.subjectname,
oa.acc_number,
'AutoBuckle'
FROM (
SELECT LCP.QUOT_ID,
LCP.CUST_ID,
LCP.PROJECT_ID,
LCP.PROJECT_PLAN_NUMBER,
LCP.CONTRACT_ID,
LCP.CONTRACT_PLAN_NUMBER,
LCP.PAYMENT_NUMBER,
LCP.id AS PLAN_ID,
LCP.PLAN_LIST,
LCP.COIN,
(LCP.RENT - (ifnull(LRI.rent, 0) + ifnull(lcfi.rent, 0))) AS rent_over,
(LCP.CORPUS - (((ifnull(LRI.corpus, 0) + ifnull(lcfi.corpus, 0)) + ifnull(LRI.corpus_adjust, 0)) +
ifnull(lcfi.corpus_adjust, 0))) AS corpus_over,
(LCP.INTEREST - (((ifnull(LRI.interest, 0) + ifnull(lcfi.interest, 0)) + ifnull(LRI.interest_adjust, 0)) +
ifnull(lcfi.interest_adjust, 0))) AS interest_over,
round((getRentPenalty(LCP.PAYMENT_NUMBER, LCP.PLAN_LIST, date_format(now(), '%Y/%m/%d')) -
((ifnull(LRI.penalty, 0) + ifnull(lcfi.penalty, 0)) +
(ifnull(LRI.penalty_adjust, 0) + ifnull(lcfi.penalty_adjust, 0)))),
2) AS penalty_over
FROM LC_RENT_PLAN LCP
LEFT JOIN (
select LRI.PAYMENT_NUMBER AS payment_number,
LRI.PLAN_LIST AS plan_list,
sum(LRI.RENT) AS rent,
sum(LRI.CORPUS) AS corpus,
sum(LRI.INTEREST) AS interest,
sum(LRI.PENALTY) AS penalty,
sum(LRI.CORPUS_ADJUST) AS corpus_adjust,
sum(LRI.INTEREST_ADJUST) AS interest_adjust,
sum(LRI.PENALTY_ADJUST) AS penalty_adjust
from lc_rent_income LRI
where LRI.ROLL_BACK = '0'
AND LRI.contract_id = ln_contract_id
group by LRI.PAYMENT_NUMBER, LRI.PLAN_LIST
) LRI ON LCP.PAYMENT_NUMBER = LRI.payment_number AND LCP.PLAN_LIST = LRI.plan_list
left join lc_rent_income_temp_transfer lcfi
on LCP.PAYMENT_NUMBER = lcfi.payment_number and LCP.PLAN_LIST = lcfi.plan_list
WHERE LCP.contract_id = ln_contract_id
AND LCP.plan_date = ln_plan_date
) LCP2
LEFT JOIN customer_account ca ON ca.contract_id = LCP2.contract_id
LEFT JOIN lb_contract_info lci ON LCP2.contract_id = lci.id
LEFT JOIN code_library cl ON cl.codeno = 'ManySubject' AND lci.subjectid = cl.itemno
LEFT JOIN own_account oa ON oa.own_id = cl.bankno AND oa.account_purpose = 'default' AND oa.state_ = '0010' AND
(oa.account_type = 'in_account' OR oa.account_type = 'inAndOut_account') AND oa.acc_type = '0010'
);
USE `apzl`$$
-- 如果in_type=3就是经销商保证金代偿in_hire_list为核销罚息金额
ELSEIF in_type = 3 THEN
INSERT INTO LC_RENT_INCOME (ID,
QUOT_ID,
CUST_ID,
PROJECT_ID,
PROJECT_PLAN_NUMBER,
CONTRACT_ID,
CONTRACT_PLAN_NUMBER,
PAYMENT_NUMBER,
EBANK_NUMBER,
PLAN_ID,
PLAN_LIST,
INTEREST_ADJUST,
SETTLE_METHOD,
HIRE_LIST,
HIRE_DATE,
RENT,
CORPUS,
INTEREST,
PENALTY,
CORPUS_ADJUST,
PENALTY_ADJUST,
ROLL_BACK,
COIN,
hire_number,
hire_bank,
hire_account,
own_bank,
own_account,
own_number,
charge_way)
(
SELECT REPLACE(UUID(), '-', '') AS id,
LCP2.QUOT_ID,
LCP2.CUST_ID,
LCP2.PROJECT_ID,
LCP2.PROJECT_PLAN_NUMBER,
LCP2.CONTRACT_ID,
LCP2.CONTRACT_PLAN_NUMBER,
LCP2.PAYMENT_NUMBER,
'' AS EBANK_NUMBER,
LCP2.PLAN_ID,
LCP2.PLAN_LIST,
'0' AS INTEREST_ADJUST,
'settlemethod6' AS SETTLE_METHOD,
in_hire_list AS HIRE_LIST,
DATE_FORMAT(CURDATE(), '%Y/%m/%d') AS HIRE_DATE,
LCP2.rent_over AS RENT,
LCP2.corpus_over AS CORPUS,
LCP2.interest_over AS INTEREST,
in_hire_list AS PENALTY,
'0' AS CORPUS_ADJUST,
penalty_over - in_hire_list AS PENALTY_ADJUST,
'0' AS ROLL_BACK,
LCP2.COIN,
ca.acc_number,
ca.bank_name,
ca.account,
oa.acc_bank,
lci.subjectname,
oa.acc_number,
'AutoBuckle'
FROM (
SELECT LCP.QUOT_ID,
LCP.CUST_ID,
LCP.PROJECT_ID,
LCP.PROJECT_PLAN_NUMBER,
LCP.CONTRACT_ID,
LCP.CONTRACT_PLAN_NUMBER,
LCP.PAYMENT_NUMBER,
LCP.id AS PLAN_ID,
LCP.PLAN_LIST,
LCP.COIN,
(LCP.RENT - (ifnull(LRI.rent, 0) + ifnull(lcfi.rent, 0))) AS rent_over,
(LCP.CORPUS - (((ifnull(LRI.corpus, 0) + ifnull(lcfi.corpus, 0)) + ifnull(LRI.corpus_adjust, 0)) +
ifnull(lcfi.corpus_adjust, 0))) AS corpus_over,
(LCP.INTEREST - (((ifnull(LRI.interest, 0) + ifnull(lcfi.interest, 0)) + ifnull(LRI.interest_adjust, 0)) +
ifnull(lcfi.interest_adjust, 0))) AS interest_over,
round((getRentPenalty(LCP.PAYMENT_NUMBER, LCP.PLAN_LIST, date_format(now(), '%Y/%m/%d')) -
((ifnull(LRI.penalty, 0) + ifnull(lcfi.penalty, 0)) +
(ifnull(LRI.penalty_adjust, 0) + ifnull(lcfi.penalty_adjust, 0)))),
2) AS penalty_over
FROM LC_RENT_PLAN LCP
LEFT JOIN (
select LRI.PAYMENT_NUMBER AS payment_number,
LRI.PLAN_LIST AS plan_list,
sum(LRI.RENT) AS rent,
sum(LRI.CORPUS) AS corpus,
sum(LRI.INTEREST) AS interest,
sum(LRI.PENALTY) AS penalty,
sum(LRI.CORPUS_ADJUST) AS corpus_adjust,
sum(LRI.INTEREST_ADJUST) AS interest_adjust,
sum(LRI.PENALTY_ADJUST) AS penalty_adjust
from lc_rent_income LRI
where LRI.ROLL_BACK = '0'
AND LRI.contract_id = ln_contract_id
group by LRI.PAYMENT_NUMBER, LRI.PLAN_LIST
) LRI ON LCP.PAYMENT_NUMBER = LRI.payment_number AND LCP.PLAN_LIST = LRI.plan_list
left join lc_rent_income_temp_transfer lcfi
on LCP.PAYMENT_NUMBER = lcfi.payment_number and LCP.PLAN_LIST = lcfi.plan_list
WHERE LCP.contract_id = ln_contract_id
AND LCP.plan_date = ln_plan_date
) LCP2
LEFT JOIN customer_account ca ON ca.contract_id = LCP2.contract_id
LEFT JOIN lb_contract_info lci ON LCP2.contract_id = lci.id
LEFT JOIN code_library cl ON cl.codeno = 'ManySubject' AND lci.subjectid = cl.itemno
LEFT JOIN own_account oa ON oa.own_id = cl.bankno AND oa.account_purpose = 'default' AND oa.state_ = '0010' AND
(oa.account_type = 'in_account' OR oa.account_type = 'inAndOut_account') AND oa.acc_type = '0010'
);
DROP PROCEDURE IF EXISTS `proc_insert_hexiao`$$
CREATE DEFINER=`apzl`@`%` PROCEDURE `proc_insert_hexiao`(IN ln_contract_id VARCHAR(200), IN ln_plan_date VARCHAR(200),
IN in_rent VARCHAR(200), IN in_hire_list VARCHAR(200),
IN in_type VARCHAR(2))
BEGIN
-- 如果in_type=1就是手工核销
IF in_type = 1 THEN
INSERT INTO LC_RENT_INCOME (
ID,
QUOT_ID,
CUST_ID,
PROJECT_ID,
PROJECT_PLAN_NUMBER,
CONTRACT_ID,
CONTRACT_PLAN_NUMBER,
PAYMENT_NUMBER,
EBANK_NUMBER,
PLAN_ID,
PLAN_LIST,
INTEREST_ADJUST,
SETTLE_METHOD,
HIRE_LIST,
HIRE_DATE,
RENT,
CORPUS,
INTEREST,
PENALTY,
CORPUS_ADJUST,
PENALTY_ADJUST,
ROLL_BACK,
COIN,
hire_number,
hire_bank,
hire_account,
own_bank,
own_account,
own_number,
charge_way
)
(SELECT
REPLACE (UUID(), '-', '') AS id,
O.QUOT_ID AS QUOT_ID,
O.CUST_ID AS CUST_ID,
O.PROJECT_ID AS PROJECT_ID,
O.PROJECT_PLAN_NUMBER AS PROJECT_PLAN_NUMBER,
O.CONTRACT_ID AS CONTRACT_ID,
O.CONTRACT_PLAN_NUMBER AS CONTRACT_PLAN_NUMBER,
O.PAYMENT_NUMBER AS PAYMENT_NUMBER,
'' AS EBANK_NUMBER,
O.id AS PLAN_ID,
O.PLAN_LIST AS PLAN_LIST,
'0' AS INTEREST_ADJUST,
'settlemethod6' AS SETTLE_METHOD,
in_hire_list AS HIRE_LIST,
DATE_FORMAT (CURDATE(),'%Y/%m/%d') AS HIRE_DATE,
vl.rent_over AS RENT,
vl.corpus_over AS CORPUS,
vl.interest_over AS INTEREST,
(
in_rent - vl.corpus_over - vl.interest_over
) AS PENALTY,
'0' AS CORPUS_ADJUST,
'0' AS PENALTY_ADJUST,
'0' AS ROLL_BACK,
O.COIN AS COIN ,
ca.acc_number,
ca.bank_name,
ca.account,
oa.acc_bank,
lci.subjectname,
oa.acc_number,
'AutoBuckle'
FROM
LC_RENT_PLAN O,
VI_LC_RENT_PLAN vl
LEFT JOIN customer_account ca ON ca.contract_id=vl.contract_id
LEFT JOIN lb_contract_info lci ON vl.contract_id=lci.id
LEFT JOIN code_library cl ON cl.codeno='ManySubject' AND lci.subjectid=cl.itemno
LEFT JOIN own_account oa ON oa.own_id=cl.bankno AND account_purpose='default' AND state_='0010' AND (account_type='in_account' OR account_type='inAndOut_account')
WHERE O.id = vl.id
AND vl.contract_id =ln_contract_id
AND vl.plan_date = ln_plan_date
GROUP BY oa.own_id) ;
-- in_type = 2为银联卡口手动刷新核销数据
ELSEIF in_type = 2 THEN
INSERT INTO LC_RENT_INCOME (
ID,
QUOT_ID,
CUST_ID,
PROJECT_ID,
PROJECT_PLAN_NUMBER,
CONTRACT_ID,
CONTRACT_PLAN_NUMBER,
PAYMENT_NUMBER,
EBANK_NUMBER,
PLAN_ID,
PLAN_LIST,
INTEREST_ADJUST,
SETTLE_METHOD,
HIRE_LIST,
HIRE_DATE,
RENT,
CORPUS,
INTEREST,
PENALTY,
CORPUS_ADJUST,
PENALTY_ADJUST,
ROLL_BACK,
COIN,
hire_number,
hire_bank,
hire_account,
own_bank,
own_account,
own_number,
charge_way
)
(SELECT
REPLACE (UUID (), '-', '') AS id,
O.QUOT_ID AS QUOT_ID,
O.CUST_ID AS CUST_ID,
O.PROJECT_ID AS PROJECT_ID,
O.PROJECT_PLAN_NUMBER AS PROJECT_PLAN_NUMBER,
O.CONTRACT_ID AS CONTRACT_ID,
O.CONTRACT_PLAN_NUMBER AS CONTRACT_PLAN_NUMBER,
O.PAYMENT_NUMBER AS PAYMENT_NUMBER,
'' AS EBANK_NUMBER,
O.id AS PLAN_ID,
O.PLAN_LIST AS PLAN_LIST,
'0' AS INTEREST_ADJUST,
'settlemethod6' AS SETTLE_METHOD,
in_hire_list AS HIRE_LIST,
DATE_FORMAT (CURDATE(),'%Y/%m/%d') AS HIRE_DATE,
CASE WHEN in_rent>=vl.corpus_over+vl.interest_over+vl.penalty_over THEN vl.rent_over
WHEN in_rent<vl.corpus_over+vl.interest_over+vl.penalty_over AND in_rent>=vl.interest_over+vl.penalty_over THEN in_rent-vl.penalty_over
WHEN in_rent<vl.interest_over+vl.penalty_over AND in_rent>vl.penalty_over THEN in_rent-vl.penalty_over
ELSE '0'
END RENT,
CASE WHEN in_rent>=vl.corpus_over+vl.interest_over+vl.penalty_over THEN vl.corpus_over
WHEN in_rent<vl.corpus_over+vl.interest_over+vl.penalty_over AND in_rent>=vl.interest_over+vl.penalty_over THEN in_rent-(vl.penalty_over+vl.interest_over)
WHEN in_rent<vl.interest_over+vl.penalty_over AND in_rent>=vl.penalty_over THEN '0'
ELSE '0'
END CORPUS,
CASE WHEN in_rent>=vl.corpus_over+vl.interest_over+vl.penalty_over THEN vl.interest_over
WHEN in_rent<vl.corpus_over+vl.interest_over+vl.penalty_over AND in_rent>=vl.interest_over+vl.penalty_over THEN vl.interest_over
WHEN in_rent<vl.interest_over+vl.penalty_over AND in_rent>=vl.penalty_over THEN in_rent-vl.penalty_over
ELSE '0'
END INTEREST,
CASE WHEN in_rent>=vl.corpus_over+vl.interest_over+vl.penalty_over THEN vl.penalty_over
WHEN in_rent<vl.corpus_over+vl.interest_over+vl.penalty_over AND in_rent>=vl.interest_over+vl.penalty_over THEN vl.penalty_over
WHEN in_rent<vl.interest_over+vl.penalty_over AND in_rent>=vl.penalty_over THEN vl.penalty_over
ELSE in_rent
END AS PENALTY,
'0' AS CORPUS_ADJUST,
'0' AS PENALTY_ADJUST,
'0' AS ROLL_BACK,
O.COIN AS COIN ,
ca.acc_number,
ca.bank_name,
ca.account,
oa.acc_bank,
lci.subjectname,
oa.acc_number,
'AutoBuckle'
FROM
LC_RENT_PLAN O,
VI_LC_RENT_PLAN vl
LEFT JOIN customer_account ca ON ca.contract_id=vl.contract_id
LEFT JOIN lb_contract_info lci ON vl.contract_id=lci.id
LEFT JOIN code_library cl ON cl.codeno='ManySubject' AND lci.subjectid=cl.itemno
LEFT JOIN own_account oa ON oa.own_id=cl.bankno AND account_purpose='default' AND state_='0010' AND (account_type='in_account' OR account_type='inAndOut_account')
WHERE O.id = vl.id
AND vl.contract_id =ln_contract_id
AND vl.plan_date = ln_plan_date
GROUP BY oa.own_id) ;
-- 如果in_type=3就是经销商保证金代偿in_hire_list为核销罚息金额
ELSEIF in_type = 3 THEN
INSERT INTO LC_RENT_INCOME (
ID,
QUOT_ID,
CUST_ID,
PROJECT_ID,
PROJECT_PLAN_NUMBER,
CONTRACT_ID,
CONTRACT_PLAN_NUMBER,
PAYMENT_NUMBER,
EBANK_NUMBER,
PLAN_ID,
PLAN_LIST,
INTEREST_ADJUST,
SETTLE_METHOD,
HIRE_LIST,
HIRE_DATE,
RENT,
CORPUS,
INTEREST,
PENALTY,
CORPUS_ADJUST,
PENALTY_ADJUST,
ROLL_BACK,
COIN,
hire_number,
hire_bank,
hire_account,
own_bank,
own_account,
own_number,
charge_way
)
(SELECT
REPLACE (UUID(), '-', '') AS id,
O.QUOT_ID AS QUOT_ID,
O.CUST_ID AS CUST_ID,
O.PROJECT_ID AS PROJECT_ID,
O.PROJECT_PLAN_NUMBER AS PROJECT_PLAN_NUMBER,
O.CONTRACT_ID AS CONTRACT_ID,
O.CONTRACT_PLAN_NUMBER AS CONTRACT_PLAN_NUMBER,
O.PAYMENT_NUMBER AS PAYMENT_NUMBER,
'' AS EBANK_NUMBER,
O.id AS PLAN_ID,
O.PLAN_LIST AS PLAN_LIST,
'0' AS INTEREST_ADJUST,
'settlemethod6' AS SETTLE_METHOD,
'1' AS HIRE_LIST,
DATE_FORMAT (CURDATE(),'%Y/%m/%d') AS HIRE_DATE,
vl.rent_over AS RENT,
vl.corpus_over AS CORPUS,
vl.interest_over AS INTEREST,
in_hire_list AS PENALTY,
'0' AS CORPUS_ADJUST,
penalty_over-in_hire_list AS PENALTY_ADJUST,
'0' AS ROLL_BACK,
O.COIN AS COIN ,
ca.acc_number,
ca.bank_name,
ca.account,
oa.acc_bank,
lci.subjectname,
oa.acc_number,
'AutoBuckle'
FROM
LC_RENT_PLAN O,
VI_LC_RENT_PLAN vl
LEFT JOIN customer_account ca ON ca.contract_id=vl.contract_id
LEFT JOIN lb_contract_info lci ON vl.contract_id=lci.id
LEFT JOIN code_library cl ON cl.codeno='ManySubject' AND lci.subjectid=cl.itemno
LEFT JOIN own_account oa ON oa.own_id=cl.bankno AND account_purpose='default' AND state_='0010' AND (account_type='in_account' OR account_type='inAndOut_account')
WHERE O.id = vl.id
AND vl.contract_id =ln_contract_id
AND vl.plan_date = ln_plan_date
GROUP BY oa.own_id ) ;
-- in_type = 4 为微信还款
ELSEIF in_type = 4 THEN
INSERT INTO LC_RENT_INCOME (
ID,
QUOT_ID,
CUST_ID,
PROJECT_ID,
PROJECT_PLAN_NUMBER,
CONTRACT_ID,
CONTRACT_PLAN_NUMBER,
PAYMENT_NUMBER,
EBANK_NUMBER,
PLAN_ID,
PLAN_LIST,
INTEREST_ADJUST,
SETTLE_METHOD,
HIRE_LIST,
HIRE_DATE,
RENT,
CORPUS,
INTEREST,
PENALTY,
CORPUS_ADJUST,
PENALTY_ADJUST,
ROLL_BACK,
COIN,
hire_number,
hire_bank,
hire_account,
own_bank,
own_account,
own_number,
charge_way
)
(SELECT
REPLACE (UUID(), '-', '') AS id,
O.QUOT_ID AS QUOT_ID,
O.CUST_ID AS CUST_ID,
O.PROJECT_ID AS PROJECT_ID,
O.PROJECT_PLAN_NUMBER AS PROJECT_PLAN_NUMBER,
O.CONTRACT_ID AS CONTRACT_ID,
O.CONTRACT_PLAN_NUMBER AS CONTRACT_PLAN_NUMBER,
O.PAYMENT_NUMBER AS PAYMENT_NUMBER,
'' AS EBANK_NUMBER,
O.id AS PLAN_ID,
O.PLAN_LIST AS PLAN_LIST,
'0' AS INTEREST_ADJUST,
'settlemethod6' AS SETTLE_METHOD,
'1' AS HIRE_LIST,
DATE_FORMAT (CURDATE(),'%Y/%m/%d') AS HIRE_DATE,
vl.rent_over AS RENT,
vl.corpus_over AS CORPUS,
vl.interest_over AS INTEREST,
(
in_rent - vl.corpus_over - vl.interest_over
) AS PENALTY,
'0' AS CORPUS_ADJUST,
'0' AS PENALTY_ADJUST,
'0' AS ROLL_BACK,
O.COIN AS COIN ,
'',
'',
'',
CASE ln_plan_date WHEN '微信支付' THEN '中国银行股份有限公司北京潘家园支行' ELSE '上海浦东发展银行股份有限公司深圳文锦支行' END,
CASE ln_plan_date WHEN '微信支付' THEN '北京安鹏昌达资产管理有限公司' ELSE '安鹏国际融资租赁(深圳)有限公司' END,
CASE ln_plan_date WHEN '微信支付' THEN '344167318076' ELSE '79220155300000518' END,
CASE ln_plan_date WHEN '微信支付' THEN 'WXPay' ELSE 'WXUnionPay' END
FROM
LC_RENT_PLAN O,
VI_LC_RENT_PLAN vl
LEFT JOIN customer_account ca ON ca.contract_id=vl.contract_id
WHERE O.id = vl.id
AND vl.contract_id =ln_contract_id
AND vl.plan_list = in_hire_list ) ;
ELSE
SELECT 1;
END IF;
END$$
DELIMITER ;
-- in_type = 4 为微信还款
ELSEIF in_type = 4 THEN
INSERT INTO LC_RENT_INCOME (ID,
QUOT_ID,
CUST_ID,
PROJECT_ID,
PROJECT_PLAN_NUMBER,
CONTRACT_ID,
CONTRACT_PLAN_NUMBER,
PAYMENT_NUMBER,
EBANK_NUMBER,
PLAN_ID,
PLAN_LIST,
INTEREST_ADJUST,
SETTLE_METHOD,
HIRE_LIST,
HIRE_DATE,
RENT,
CORPUS,
INTEREST,
PENALTY,
CORPUS_ADJUST,
PENALTY_ADJUST,
ROLL_BACK,
COIN,
hire_number,
hire_bank,
hire_account,
own_bank,
own_account,
own_number,
charge_way)
(
SELECT REPLACE(UUID(), '-', '') AS id,
LCP2.QUOT_ID,
LCP2.CUST_ID,
LCP2.PROJECT_ID,
LCP2.PROJECT_PLAN_NUMBER,
LCP2.CONTRACT_ID,
LCP2.CONTRACT_PLAN_NUMBER,
LCP2.PAYMENT_NUMBER,
'' AS EBANK_NUMBER,
LCP2.PLAN_ID,
LCP2.PLAN_LIST,
'0' AS INTEREST_ADJUST,
'settlemethod6' AS SETTLE_METHOD,
in_hire_list AS HIRE_LIST,
DATE_FORMAT(CURDATE(), '%Y/%m/%d') AS HIRE_DATE,
LCP2.rent_over AS RENT,
LCP2.corpus_over AS CORPUS,
LCP2.interest_over AS INTEREST,
(
in_rent - LCP2.corpus_over - LCP2.interest_over
) AS PENALTY,
'0' AS CORPUS_ADJUST,
'0' AS PENALTY_ADJUST,
'0' AS ROLL_BACK,
LCP2.COIN,
'',
'',
'',
CASE ln_plan_date WHEN 'WXPay' THEN '中国银行股份有限公司北京潘家园支行' ELSE lms.bank_name END,
CASE ln_plan_date WHEN 'WXPay' THEN '北京安鹏昌达资产管理有限公司' ELSE lms.acc_name END,
CASE ln_plan_date WHEN 'WXPay' THEN '344167318076' ELSE lms.acc_number END,
CASE ln_plan_date WHEN 'WXPay' THEN 'WXPay' ELSE 'WXUnionPay' END
FROM (
SELECT LCP.QUOT_ID,
LCP.CUST_ID,
LCP.PROJECT_ID,
LCP.PROJECT_PLAN_NUMBER,
LCP.CONTRACT_ID,
LCP.CONTRACT_PLAN_NUMBER,
LCP.PAYMENT_NUMBER,
LCP.id AS PLAN_ID,
LCP.PLAN_LIST,
LCP.COIN,
(LCP.RENT - (ifnull(LRI.rent, 0) + ifnull(lcfi.rent, 0))) AS rent_over,
(LCP.CORPUS - (((ifnull(LRI.corpus, 0) + ifnull(lcfi.corpus, 0)) + ifnull(LRI.corpus_adjust, 0)) +
ifnull(lcfi.corpus_adjust, 0))) AS corpus_over,
(LCP.INTEREST - (((ifnull(LRI.interest, 0) + ifnull(lcfi.interest, 0)) + ifnull(LRI.interest_adjust, 0)) +
ifnull(lcfi.interest_adjust, 0))) AS interest_over,
round((getRentPenalty(LCP.PAYMENT_NUMBER, LCP.PLAN_LIST, date_format(now(), '%Y/%m/%d')) -
((ifnull(LRI.penalty, 0) + ifnull(lcfi.penalty, 0)) +
(ifnull(LRI.penalty_adjust, 0) + ifnull(lcfi.penalty_adjust, 0)))),
2) AS penalty_over
FROM LC_RENT_PLAN LCP
LEFT JOIN (
select LRI.PAYMENT_NUMBER AS payment_number,
LRI.PLAN_LIST AS plan_list,
sum(LRI.RENT) AS rent,
sum(LRI.CORPUS) AS corpus,
sum(LRI.INTEREST) AS interest,
sum(LRI.PENALTY) AS penalty,
sum(LRI.CORPUS_ADJUST) AS corpus_adjust,
sum(LRI.INTEREST_ADJUST) AS interest_adjust,
sum(LRI.PENALTY_ADJUST) AS penalty_adjust
from lc_rent_income LRI
where LRI.ROLL_BACK = '0'
AND LRI.contract_id = ln_contract_id
group by LRI.PAYMENT_NUMBER, LRI.PLAN_LIST
) LRI ON LCP.PAYMENT_NUMBER = LRI.payment_number AND LCP.PLAN_LIST = LRI.plan_list
left join lc_rent_income_temp_transfer lcfi
on LCP.PAYMENT_NUMBER = lcfi.payment_number and LCP.PLAN_LIST = lcfi.plan_list
WHERE LCP.contract_id = ln_contract_id
AND LCP.plan_date = ln_plan_date
) LCP2
LEFT JOIN lb_contract_info lci ON LCP2.contract_id = lci.id
LEFT JOIN LB_MANY_SUBJECT lms ON lms.subject_id = LCI.subjectid AND lms.is_enable = 'Y'
);
-- in_type = 5为通联扣款
ELSEIF in_type = 5 THEN
INSERT INTO LC_RENT_INCOME (ID,
QUOT_ID,
CUST_ID,
PROJECT_ID,
PROJECT_PLAN_NUMBER,
CONTRACT_ID,
CONTRACT_PLAN_NUMBER,
PAYMENT_NUMBER,
EBANK_NUMBER,
PLAN_ID,
PLAN_LIST,
INTEREST_ADJUST,
SETTLE_METHOD,
HIRE_LIST,
HIRE_DATE,
RENT,
CORPUS,
INTEREST,
PENALTY,
CORPUS_ADJUST,
PENALTY_ADJUST,
ROLL_BACK,
COIN,
hire_number,
hire_bank,
hire_account,
own_bank,
own_account,
own_number,
charge_way)
(
SELECT REPLACE(UUID(), '-', '') AS id,
LCP2.QUOT_ID,
LCP2.CUST_ID,
LCP2.PROJECT_ID,
LCP2.PROJECT_PLAN_NUMBER,
LCP2.CONTRACT_ID,
LCP2.CONTRACT_PLAN_NUMBER,
LCP2.PAYMENT_NUMBER,
'' AS EBANK_NUMBER,
LCP2.PLAN_ID,
LCP2.PLAN_LIST,
'0' AS INTEREST_ADJUST,
'settlemethod6' AS SETTLE_METHOD,
in_hire_list AS HIRE_LIST,
DATE_FORMAT(CURDATE(), '%Y/%m/%d') AS HIRE_DATE,
CASE
WHEN in_rent >= LCP2.corpus_over + LCP2.interest_over + LCP2.penalty_over THEN LCP2.rent_over
WHEN in_rent < LCP2.corpus_over + LCP2.interest_over + LCP2.penalty_over AND
in_rent >= LCP2.interest_over + LCP2.penalty_over
THEN in_rent - LCP2.penalty_over
WHEN in_rent < LCP2.interest_over + LCP2.penalty_over AND in_rent > LCP2.penalty_over THEN in_rent - LCP2.penalty_over
ELSE '0'
END RENT,
CASE
WHEN in_rent >= LCP2.corpus_over + LCP2.interest_over + LCP2.penalty_over THEN LCP2.corpus_over
WHEN in_rent < LCP2.corpus_over + LCP2.interest_over + LCP2.penalty_over AND
in_rent >= LCP2.interest_over + LCP2.penalty_over
THEN in_rent - (LCP2.penalty_over + LCP2.interest_over)
WHEN in_rent < LCP2.interest_over + LCP2.penalty_over AND in_rent >= LCP2.penalty_over THEN '0'
ELSE '0'
END CORPUS,
CASE
WHEN in_rent >= LCP2.corpus_over + LCP2.interest_over + LCP2.penalty_over THEN LCP2.interest_over
WHEN in_rent < LCP2.corpus_over + LCP2.interest_over + LCP2.penalty_over AND
in_rent >= LCP2.interest_over + LCP2.penalty_over
THEN LCP2.interest_over
WHEN in_rent < LCP2.interest_over + LCP2.penalty_over AND in_rent >= LCP2.penalty_over THEN in_rent - LCP2.penalty_over
ELSE '0'
END INTEREST,
CASE
WHEN in_rent >= LCP2.corpus_over + LCP2.interest_over + LCP2.penalty_over THEN LCP2.penalty_over
WHEN in_rent < LCP2.corpus_over + LCP2.interest_over + LCP2.penalty_over AND
in_rent >= LCP2.interest_over + LCP2.penalty_over
THEN LCP2.penalty_over
WHEN in_rent < LCP2.interest_over + LCP2.penalty_over AND in_rent >= LCP2.penalty_over THEN LCP2.penalty_over
ELSE in_rent
END AS PENALTY,
'0' AS CORPUS_ADJUST,
'0' AS PENALTY_ADJUST,
'0' AS ROLL_BACK,
LCP2.COIN AS COIN,
ca.acc_number,
ca.bank_name,
ca.account,
oa.acc_bank,
lci.subjectname,
oa.acc_number,
'TLCollect'
FROM (
SELECT LCP.QUOT_ID,
LCP.CUST_ID,
LCP.PROJECT_ID,
LCP.PROJECT_PLAN_NUMBER,
LCP.CONTRACT_ID,
LCP.CONTRACT_PLAN_NUMBER,
LCP.PAYMENT_NUMBER,
LCP.id AS PLAN_ID,
LCP.PLAN_LIST,
LCP.COIN,
(LCP.RENT - (ifnull(LRI.rent, 0) + ifnull(lcfi.rent, 0))) AS rent_over,
(LCP.CORPUS - (((ifnull(LRI.corpus, 0) + ifnull(lcfi.corpus, 0)) + ifnull(LRI.corpus_adjust, 0)) +
ifnull(lcfi.corpus_adjust, 0))) AS corpus_over,
(LCP.INTEREST - (((ifnull(LRI.interest, 0) + ifnull(lcfi.interest, 0)) + ifnull(LRI.interest_adjust, 0)) +
ifnull(lcfi.interest_adjust, 0))) AS interest_over,
round((getRentPenalty(LCP.PAYMENT_NUMBER, LCP.PLAN_LIST, date_format(now(), '%Y/%m/%d')) -
((ifnull(LRI.penalty, 0) + ifnull(lcfi.penalty, 0)) +
(ifnull(LRI.penalty_adjust, 0) + ifnull(lcfi.penalty_adjust, 0)))),
2) AS penalty_over
FROM LC_RENT_PLAN LCP
LEFT JOIN (
select LRI.PAYMENT_NUMBER AS payment_number,
LRI.PLAN_LIST AS plan_list,
sum(LRI.RENT) AS rent,
sum(LRI.CORPUS) AS corpus,
sum(LRI.INTEREST) AS interest,
sum(LRI.PENALTY) AS penalty,
sum(LRI.CORPUS_ADJUST) AS corpus_adjust,
sum(LRI.INTEREST_ADJUST) AS interest_adjust,
sum(LRI.PENALTY_ADJUST) AS penalty_adjust
from lc_rent_income LRI
where LRI.ROLL_BACK = '0'
AND LRI.contract_id = ln_plan_date
group by LRI.PAYMENT_NUMBER, LRI.PLAN_LIST
) LRI ON LCP.PAYMENT_NUMBER = LRI.payment_number AND LCP.PLAN_LIST = LRI.plan_list
left join lc_rent_income_temp_transfer lcfi
on LCP.PAYMENT_NUMBER = lcfi.payment_number and LCP.PLAN_LIST = lcfi.plan_list
WHERE LCP.contract_id = ln_contract_id
AND LCP.plan_date = ln_plan_date
) LCP2
LEFT JOIN customer_account ca ON ca.contract_id = LCP2.contract_id
LEFT JOIN lb_contract_info lci ON LCP2.contract_id = lci.id
LEFT JOIN code_library cl ON cl.codeno = 'ManySubject' AND lci.subjectid = cl.itemno
LEFT JOIN own_account oa ON oa.own_id = cl.bankno AND oa.account_purpose = 'default' AND oa.state_ = '0010' AND
(oa.account_type = 'in_account' OR oa.account_type = 'inAndOut_account') AND oa.acc_type = '0010'
);
ELSE
SELECT 1;
END IF;
END;