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 pmsi.t_divers WHERE code = _code) THEN _option = 'FORCE'; END IF; IF _option = 'FORCE' THEN _now = CASE _code WHEN 'NOW' THEN (SELECT MAX(date_sortie) FROM pmsi.p_rss WHERE date_sortie <= date(now()) ) WHEN 'NOWCLOTURE' THEN (SELECT date(date_trunc('month',MAX(date_sortie)) + interval '1 month' - interval '1 day') FROM pmsi.p_rss WHERE date_sortie <= date(now()) AND en_cours = '0' AND ghm_id > 0 AND etat = '' ) ELSE date(now()) END; UPDATE pmsi.t_divers SET texte = CASE _code WHEN 'NOW' THEN 'Dernier import fil de l''eau' WHEN 'NOWCLOTURE' THEN 'Dernier import e-PMSI' ELSE 'Dernier import fil de l''eau' END, valeur = _now::text, valeur_date = _now, show_info_module = true WHERE code = _code; INSERT INTO pmsi.t_divers (code, texte, valeur, valeur_date, description, show_info_module) SELECT _code, CASE _code WHEN 'NOW' THEN 'Dernier import fil de l''eau' WHEN 'NOWCLOTURE' THEN 'Dernier import e-PMSI' ELSE 'Dernier import fil de l''eau' END, _now::text, _now, 'Date non modifiable', true WHERE _code NOT IN (SELECT code FROM pmsi.t_divers); ELSE _now = (SELECT valeur_date FROM pmsi.t_divers WHERE code = _code); END IF; RETURN _now; END;