|
|
return: text
|
|
|
lang: plpgsql
|
|
|
src: |
|
|
|
DECLARE
|
|
|
_marge_erreur numeric;
|
|
|
_ignorer_reglements text;
|
|
|
result TEXT;
|
|
|
BEGIN
|
|
|
RAISE NOTICE 'Initialisations';
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
RAISE NOTICE 'Lignes detaillees';
|
|
|
|
|
|
DROP TABLE IF EXISTS w_cumuls;
|
|
|
CREATE TEMP TABLE w_cumuls AS
|
|
|
SELECT site_id, 0::bigint AS provider_id, mois_comptable, clinique_honoraire,
|
|
|
round(SUM(montant_debit),2) AS montant_debit_d,
|
|
|
round(SUM(montant_credit),2) AS montant_credit_d,
|
|
|
0::numeric AS montant_debit_t,
|
|
|
0::numeric AS montant_credit_t,
|
|
|
0::numeric AS montant_debit_c,
|
|
|
0::numeric AS montant_credit_c
|
|
|
FROM compta.p_historique_ecritures
|
|
|
WHERE ajustement NOT IN ('1','2','3') AND ecriture_consolidee <= '0' AND
|
|
|
is_budget <> '1'
|
|
|
GROUP BY 1,2,3,4
|
|
|
ORDER BY 1,2,3,4;
|
|
|
|
|
|
RAISE NOTICE 'Lignes totalisées';
|
|
|
|
|
|
INSERT INTO w_cumuls
|
|
|
SELECT site_id, 0::bigint AS provider_id, mois_comptable, clinique_honoraire,
|
|
|
0::numeric AS montant_debit_d,
|
|
|
0::numeric AS montant_credit_d,
|
|
|
round(SUM(montant_debit),2) AS montant_debit_t,
|
|
|
round(SUM(montant_credit),2) AS montant_credit_t,
|
|
|
0::numeric AS montant_debit_c,
|
|
|
0::numeric AS montant_credit_c
|
|
|
FROM compta.p_historique_ecritures_total
|
|
|
WHERE ajustement NOT IN ('1','2','3') AND ecriture_consolidee <= '0' AND
|
|
|
is_budget <> '1'
|
|
|
GROUP BY 1,2,3,4
|
|
|
ORDER BY 1,2,3,4;
|
|
|
|
|
|
RAISE NOTICE 'Chiffrier production';
|
|
|
|
|
|
INSERT INTO w_cumuls
|
|
|
SELECT site_id, COALESCE(provider_id,0), mois_comptable, clinique_honoraire,
|
|
|
0::numeric AS montant_debit_d,
|
|
|
0::numeric AS montant_credit_d,
|
|
|
0::numeric AS montant_debit_t,
|
|
|
0::numeric AS montant_credit_t,
|
|
|
round(SUM(montant_debit),2) AS montant_debit_c,
|
|
|
round(SUM(montant_credit),2) AS montant_credit_c
|
|
|
FROM compta.p_chiffrier_comptable
|
|
|
WHERE mois_comptable >= (SELECT MIN(mois_comptable) FROM w_cumuls)
|
|
|
GROUP BY 1,2,3,4
|
|
|
ORDER BY 1,2,3,4;
|
|
|
|
|
|
RAISE NOTICE 'Controles';
|
|
|
DROP TABLE IF EXISTS w_controle_chiffrier;
|
|
|
CREATE TEMP TABLE w_controle_chiffrier AS
|
|
|
SELECT site_id, provider_id, mois_comptable, clinique_honoraire,
|
|
|
SUM(montant_debit_d) AS montant_debit_d,
|
|
|
SUM(montant_credit_d) AS montant_credit_d,
|
|
|
SUM(montant_debit_t) AS montant_debit_t,
|
|
|
SUM(montant_credit_t) AS montant_credit_t,
|
|
|
SUM(montant_debit_c) AS montant_debit_c,
|
|
|
SUM(montant_credit_c) AS montant_credit_c,
|
|
|
CASE
|
|
|
WHEN SUM(montant_debit_d) = SUM(montant_debit_t) AND
|
|
|
SUM(montant_debit_c) = 0 AND
|
|
|
SUM(montant_credit_d) = SUM(montant_credit_t) AND
|
|
|
SUM(montant_credit_c) = 0
|
|
|
THEN '1'
|
|
|
WHEN SUM(montant_debit_d) = SUM(montant_debit_t) AND
|
|
|
SUM(montant_debit_d) = SUM(montant_debit_c) AND
|
|
|
SUM(montant_credit_d) = SUM(montant_credit_t) AND
|
|
|
SUM(montant_credit_d) = SUM(montant_credit_c)
|
|
|
THEN '1'
|
|
|
ELSE '0' END AS valide
|
|
|
FROM w_cumuls
|
|
|
GROUP BY 1,2,3,4
|
|
|
ORDER BY 1,2,3,4;
|
|
|
UPDATE w_controle_chiffrier
|
|
|
SET valide = '1'
|
|
|
FROM compta.t_controle_chiffrier
|
|
|
WHERE w_controle_chiffrier.site_id = t_controle_chiffrier.site_id AND
|
|
|
w_controle_chiffrier.provider_id = t_controle_chiffrier.provider_id AND
|
|
|
w_controle_chiffrier.mois_comptable = t_controle_chiffrier.mois_comptable AND
|
|
|
w_controle_chiffrier.clinique_honoraire = t_controle_chiffrier.clinique_honoraire AND
|
|
|
w_controle_chiffrier.valide = '0' AND
|
|
|
t_controle_chiffrier.valide = '1' AND
|
|
|
w_controle_chiffrier.montant_debit_d = t_controle_chiffrier.montant_debit_d AND
|
|
|
w_controle_chiffrier.montant_debit_t = t_controle_chiffrier.montant_debit_t AND
|
|
|
w_controle_chiffrier.montant_debit_c = t_controle_chiffrier.montant_debit_c AND
|
|
|
w_controle_chiffrier.montant_credit_d = t_controle_chiffrier.montant_credit_d AND
|
|
|
w_controle_chiffrier.montant_credit_t = t_controle_chiffrier.montant_credit_t AND
|
|
|
w_controle_chiffrier.montant_credit_c = t_controle_chiffrier.montant_credit_c;
|
|
|
-- Antérieur
|
|
|
UPDATE w_controle_chiffrier
|
|
|
SET valide = '1'
|
|
|
WHERE valide <> '1' AND
|
|
|
mois_comptable < (SELECT MIN(mois_comptable) AS mois_comptable_first FROM compta.p_historique_ecritures);
|
|
|
|
|
|
TRUNCATE compta.t_controle_chiffrier;
|
|
|
|
|
|
INSERT INTO compta.t_controle_chiffrier
|
|
|
(
|
|
|
site_id, provider_id, mois_comptable, clinique_honoraire,
|
|
|
montant_debit_d,
|
|
|
montant_credit_d,
|
|
|
montant_debit_t,
|
|
|
montant_credit_t,
|
|
|
montant_debit_c,
|
|
|
montant_credit_c,
|
|
|
valide
|
|
|
)
|
|
|
SELECT w_controle_chiffrier.site_id, w_controle_chiffrier.provider_id, w_controle_chiffrier.mois_comptable, w_controle_chiffrier.clinique_honoraire,
|
|
|
montant_debit_d,
|
|
|
montant_credit_d,
|
|
|
montant_debit_t,
|
|
|
montant_credit_t,
|
|
|
montant_debit_c,
|
|
|
montant_credit_c,
|
|
|
valide
|
|
|
FROM w_controle_chiffrier
|
|
|
ORDER BY 1,2,3,4;
|
|
|
|
|
|
|
|
|
RETURN 'OK';
|
|
|
END;
|