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.
 
 
 

61 lines
1.6 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 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;