apzl_leasing/src_sql/procedure/proc_insert_hexiao.sql

338 lines
9.7 KiB
SQL
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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.

DELIMITER $$
USE `apzl`$$
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 ;