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 compta.t_divers WHERE code = _code) THEN _option = 'FORCE'; END IF; IF _option = 'FORCE' THEN _now = CASE _code WHEN 'NOW' THEN (SELECT MAX(date_ecriture) FROM compta.p_historique_ecritures WHERE date_ecriture <= date(now()) ) WHEN 'NOWCLOTURE' THEN (SELECT date(((MAX(mois_comptable))||'01')::date - interval '1 day') FROM compta.p_historique_ecritures WHERE (mois_comptable||'01')::date <= date(now()) ) ELSE date(now()) END; UPDATE compta.t_divers SET texte = CASE _code WHEN 'NOW' THEN 'Date dernière écriture' WHEN 'NOWCLOTURE' THEN 'Date clôture' ELSE 'Date dernière écriture' END, valeur = _now::text, valeur_date = _now, show_info_module = true WHERE code = _code; INSERT INTO compta.t_divers (code, texte, valeur, valeur_date, description, show_info_module) SELECT _code, CASE _code WHEN 'NOW' THEN 'Date dernière écriture' WHEN 'NOWCLOTURE' THEN 'Date clôture' ELSE 'Date dernière écriture' END, _now::text, _now, 'Date non modifiable', true WHERE _code NOT IN (SELECT code FROM compta.t_divers); ELSE _now = (SELECT valeur_date FROM compta.t_divers WHERE code = _code); END IF; RETURN _now; END;