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.
 
 

75 lines
2.1 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 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;