236 lines
6.8 KiB
SQL
236 lines
6.8 KiB
SQL
create function getRentPenalty2(r_payment_number varchar(40), r_plan_list varchar(40), calc_date varchar(40)) returns varchar(200)
|
|
RETURN (
|
|
select t.plan_penalty from (
|
|
SELECT
|
|
`l`.`PAYMENT_NUMBER` AS `PAYMENT_NUMBER`,
|
|
`l`.`PLAN_LIST` AS `PLAN_LIST`,
|
|
`l`.`PLAN_DATE` AS `PLAN_DATE`,
|
|
ROUND(
|
|
SUM(
|
|
(
|
|
CASE
|
|
WHEN (
|
|
(
|
|
STR_TO_DATE(`l`.`PLAN_DATE`, '%Y/%m/%d') + c.attr_value
|
|
) < IF(
|
|
(`ll`.`hire_date` > calc_date),
|
|
calc_date,
|
|
`ll`.`hire_date`
|
|
)
|
|
)
|
|
THEN (
|
|
(
|
|
(`lcc`.`PENA_RATE` / 10000) * (
|
|
TO_DAYS(
|
|
IF(
|
|
(`ll`.`hire_date` > calc_date),
|
|
calc_date,
|
|
`ll`.`hire_date`
|
|
)
|
|
) - TO_DAYS(
|
|
STR_TO_DATE(`l`.`PLAN_DATE`, '%Y/%m/%d')
|
|
)
|
|
)
|
|
) * IFNULL(`ll`.`RENT`, 0)
|
|
)
|
|
ELSE 0
|
|
END
|
|
)
|
|
),
|
|
2
|
|
) AS `plan_penalty`,
|
|
ROUND(
|
|
SUM(
|
|
(
|
|
IFNULL(`ll`.`PENALTY`, 0) + IFNULL(`ll`.`PENALTY_ADJUST`, 0)
|
|
)
|
|
),
|
|
2
|
|
) AS `income_penalty`,
|
|
ROUND(
|
|
(
|
|
SUM(
|
|
(
|
|
CASE
|
|
WHEN (
|
|
(
|
|
STR_TO_DATE(`l`.`PLAN_DATE`, '%Y/%m/%d') + c.attr_value
|
|
) < IF(
|
|
(`ll`.`hire_date` > calc_date),
|
|
calc_date,
|
|
`ll`.`hire_date`
|
|
)
|
|
)
|
|
THEN (
|
|
(
|
|
(`lcc`.`PENA_RATE` / 10000) * (
|
|
TO_DAYS(
|
|
IF(
|
|
(`ll`.`hire_date` > calc_date),
|
|
calc_date,
|
|
`ll`.`hire_date`
|
|
)
|
|
) - TO_DAYS(
|
|
STR_TO_DATE(`l`.`PLAN_DATE`, '%Y/%m/%d')
|
|
)
|
|
)
|
|
) * IFNULL(`ll`.`RENT`, 0)
|
|
)
|
|
ELSE 0
|
|
END
|
|
)
|
|
) - SUM(
|
|
(
|
|
IFNULL(`ll`.`PENALTY`, 0) + IFNULL(`ll`.`PENALTY_ADJUST`, 0)
|
|
)
|
|
)
|
|
),
|
|
2
|
|
) AS `penalty`
|
|
FROM
|
|
(
|
|
(
|
|
(
|
|
`apzl`.`lc_calc_condition` `lcc`
|
|
LEFT JOIN `apzl`.`lc_calc_condition_status` `lccs`
|
|
ON (
|
|
(
|
|
`lcc`.`PAYMENT_NUMBER` = `lccs`.`PAYMENT_NUMBER`
|
|
)
|
|
)
|
|
LEFT JOIN CONFIGURATE c ON 1=1 AND c.attr_id='免罚息天数配置' AND c.field1='汽车'
|
|
)
|
|
LEFT JOIN `apzl`.`lc_rent_plan` `l`
|
|
ON (
|
|
(
|
|
`lccs`.`PAYMENT_NUMBER` = `l`.`PAYMENT_NUMBER`
|
|
)
|
|
)
|
|
)
|
|
LEFT JOIN
|
|
(SELECT
|
|
`lri`.`PAYMENT_NUMBER` AS `PAYMENT_NUMBER`,
|
|
`lri`.`PLAN_LIST` AS `PLAN_LIST`,
|
|
`lri`.`RENT` AS `RENT`,
|
|
`lri`.`PENALTY` AS `PENALTY`,
|
|
`lri`.`PENALTY_ADJUST` AS `PENALTY_ADJUST`,
|
|
STR_TO_DATE(`lri`.`HIRE_DATE`, '%Y/%m/%d') AS `hire_date`
|
|
FROM
|
|
`apzl`.`lc_rent_income` `lri`
|
|
WHERE (`lri`.`ROLL_BACK` = '0')
|
|
UNION
|
|
ALL
|
|
SELECT
|
|
`lrit`.`PAYMENT_NUMBER` AS `PAYMENT_NUMBER`,
|
|
`lrit`.`PLAN_LIST` AS `PLAN_LIST`,
|
|
`lrit`.`RENT` AS `RENT`,
|
|
`lrit`.`PENALTY` AS `PENALTY`,
|
|
`lrit`.`PENALTY_ADJUST` AS `PENALTY_ADJUST`,
|
|
STR_TO_DATE(`lrit`.`HIRE_DATE`, '%Y/%m/%d') AS `hire_date`
|
|
FROM
|
|
`apzl`.`lc_rent_income_temp` `lrit`
|
|
WHERE (
|
|
(`lrit`.`ROLL_BACK` = '0')
|
|
AND (`lrit`.`IS_FLOWING` = '0')
|
|
)
|
|
UNION
|
|
ALL
|
|
SELECT
|
|
`lrp`.`PAYMENT_NUMBER` AS `PAYMENT_NUMBER`,
|
|
`lrp`.`PLAN_LIST` AS `PLAN_LIST`,
|
|
(
|
|
(
|
|
`lrp`.`RENT` - IFNULL(`lr`.`srent`, 0)
|
|
) - IFNULL(`lrt`.`srent`, 0)
|
|
) AS `rent`,
|
|
0 AS `0`,
|
|
0 AS `0`,
|
|
calc_date AS `hire_date`
|
|
FROM
|
|
(
|
|
(
|
|
`apzl`.`lc_rent_plan` `lrp`
|
|
LEFT JOIN
|
|
(SELECT
|
|
`apzl`.`lc_rent_income`.`PAYMENT_NUMBER` AS `payment_number`,
|
|
`apzl`.`lc_rent_income`.`PLAN_LIST` AS `plan_list`,
|
|
SUM(`apzl`.`lc_rent_income`.`RENT`) AS `srent`
|
|
FROM
|
|
`apzl`.`lc_rent_income`
|
|
WHERE (
|
|
`apzl`.`lc_rent_income`.`ROLL_BACK` = '0'
|
|
)
|
|
GROUP BY `apzl`.`lc_rent_income`.`PAYMENT_NUMBER`,
|
|
`apzl`.`lc_rent_income`.`PLAN_LIST`) `lr`
|
|
ON (
|
|
(
|
|
(
|
|
`lr`.`payment_number` = `lrp`.`PAYMENT_NUMBER`
|
|
)
|
|
AND (
|
|
`lr`.`plan_list` = `lrp`.`PLAN_LIST`
|
|
)
|
|
)
|
|
)
|
|
)
|
|
LEFT JOIN
|
|
(SELECT
|
|
`apzl`.`lc_rent_income_temp`.`PAYMENT_NUMBER` AS `payment_number`,
|
|
`apzl`.`lc_rent_income_temp`.`PLAN_LIST` AS `plan_list`,
|
|
SUM(
|
|
`apzl`.`lc_rent_income_temp`.`RENT`
|
|
) AS `srent`
|
|
FROM
|
|
`apzl`.`lc_rent_income_temp`
|
|
WHERE (
|
|
(
|
|
`apzl`.`lc_rent_income_temp`.`ROLL_BACK` = '0'
|
|
)
|
|
AND (
|
|
`apzl`.`lc_rent_income_temp`.`IS_FLOWING` = '0'
|
|
)
|
|
)
|
|
GROUP BY `apzl`.`lc_rent_income_temp`.`PAYMENT_NUMBER`,
|
|
`apzl`.`lc_rent_income_temp`.`PLAN_LIST`) `lrt`
|
|
ON (
|
|
(
|
|
(
|
|
`lrt`.`payment_number` = `lrp`.`PAYMENT_NUMBER`
|
|
)
|
|
AND (
|
|
`lrt`.`plan_list` = `lrp`.`PLAN_LIST`
|
|
)
|
|
)
|
|
)
|
|
)
|
|
WHERE (
|
|
(
|
|
(
|
|
`lrp`.`RENT` - IFNULL(`lr`.`srent`, 0)
|
|
) - IFNULL(`lrt`.`srent`, 0)
|
|
) > 0
|
|
)) `ll`
|
|
ON (
|
|
(
|
|
(
|
|
`ll`.`PAYMENT_NUMBER` = `l`.`PAYMENT_NUMBER`
|
|
)
|
|
AND (
|
|
`ll`.`PLAN_LIST` = `l`.`PLAN_LIST`
|
|
)
|
|
)
|
|
)
|
|
)
|
|
WHERE (
|
|
(`lccs`.`PLAN_STATUS` = '31')
|
|
AND (`l`.`PAYMENT_NUMBER` =r_payment_number)
|
|
and l.PLAN_LIST=r_plan_list
|
|
)
|
|
GROUP BY `l`.`PAYMENT_NUMBER`,
|
|
`l`.`PLAN_LIST`,
|
|
`l`.`PLAN_DATE`
|
|
ORDER BY `l`.`PAYMENT_NUMBER`,
|
|
`l`.`PLAN_LIST` ) t
|
|
);
|
|
|