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;
|