You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

67 lines
1.8 KiB

return: date
lang: plpgsql
parameters:
p0:
type: text
name: i_code
p1:
type: text
name: i_option
src: |
DECLARE
_code text;
_option text;
_now date;
BEGIN
_code = i_code;
IF _code NOT IN ('NOW', 'NOWCLOTURE') THEN
_code = 'NOW';
END IF;
_option = i_option;
IF NOT EXISTS (SELECT * FROM rh.t_divers WHERE code = _code) THEN
_option = 'FORCE';
END IF;
IF _option = 'FORCE' THEN
_now =
CASE _code
WHEN 'NOW' THEN
(SELECT MAX(date_fin) FROM rh.p_contrats WHERE date_fin <= date(now()) )
WHEN 'NOWCLOTURE' THEN
(SELECT CASE WHEN date(date_trunc('month',MAX(date_paie)) + interval '1 month' - interval '1 day') <= date(date_trunc('month',now() - interval '5 days')) THEN
date(date_trunc('month',MAX(date_paie)) + interval '1 month' - interval '1 day')
ELSE
date(date_trunc('month',MAX(date_paie)) - interval '1 day')
END
FROM rh.p_historique_paie WHERE date_paie <= date(date_trunc('month',now()) + interval '1 month' - interval '1 day')
)
ELSE date(now())
END;
UPDATE rh.t_divers SET
texte = CASE _code
WHEN 'NOW' THEN 'Date en-cours'
WHEN 'NOWCLOTURE' THEN 'Date clôture'
ELSE 'Date en-cours'
END,
valeur = to_char(_now, 'YYYYMM'),
valeur_date = _now,
show_info_module = true
WHERE code = _code;
INSERT INTO rh.t_divers (code, texte, valeur, valeur_date, description, show_info_module)
SELECT
_code,
CASE _code
WHEN 'NOW' THEN 'Date en-cours'
WHEN 'NOWCLOTURE' THEN 'Date clôture'
ELSE 'Date en-cours'
END,
to_char(_now, 'YYYYMM'),
_now,
'Date non modifiable',
true
WHERE _code NOT IN (SELECT code FROM rh.t_divers);
ELSE
_now = (SELECT valeur_date FROM rh.t_divers WHERE code = _code);
END IF;
RETURN _now;
END;