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' ); -- 如果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' ); -- 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_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' ); ELSE SELECT 1; END IF; END;