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 activite.t_divers WHERE code = _code) THEN _option = 'FORCE'; END IF; -- Nouveaux paramètres dans t_divers pour gestion date de fermeture INSERT INTO activite.t_divers (code, texte, valeur, description) SELECT 'DATEFERMETURE', 'Date fermeture établissement', '', 'Date de fermeture (AAAAMMJJ). Vide si ouvert ' WHERE 'DATEFERMETURE' NOT IN (SELECT code FROM activite.t_divers); IF _option = 'FORCE' THEN _now = CASE _code WHEN 'NOW' THEN (SELECT MAX(date) FROM activite.p_mouvements_sejour WHERE date < now() AND est_mouvement_previsionnel <> '1') WHEN 'NOWCLOTURE' THEN (SELECT date(date_trunc('month',MAX(date_vente)) - interval '1 day') FROM activite.p_factures WHERE date_vente <= (SELECT MAX(date) FROM activite.p_mouvements_sejour WHERE date < now() AND est_mouvement_previsionnel <> '1') ) ELSE date(now()) END; UPDATE activite.t_divers SET texte = CASE _code WHEN 'NOW' THEN 'Date des derniers mouvements' WHEN 'NOWCLOTURE' THEN 'Date clôture' ELSE 'Date des derniers mouvements' END, valeur = _now::text, valeur_date = _now, show_info_module = true WHERE code = _code; INSERT INTO activite.t_divers (code, texte, valeur, valeur_date, description, valeur2, show_info_module) SELECT _code, CASE _code WHEN 'NOW' THEN 'Date des derniers mouvements' WHEN 'NOWCLOTURE' THEN 'Date clôture' ELSE 'Date des derniers mouvements' END, _now::text, _now, 'Date non modifiable', '', true WHERE _code NOT IN (SELECT code FROM activite.t_divers); ELSE _now = (SELECT valeur_date FROM activite.t_divers WHERE code = _code); END IF; RETURN _now; END;