pour déploiement auto v2 via gitlab
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.
 
 

94 lines
2.8 KiB

return: text
lang: plpgsql
src: |
DECLARE
result TEXT;
BEGIN
INSERT INTO pmsi.p_rss_etat
(
rss_id,
est_groupe,
est_valide,
date_groupage,
est_facture,
date_facture
)
SELECT
p_rss.oid AS rss_id,
CASE
WHEN en_cours = '0' AND ghm_id <> 0 THEN '1'
WHEN en_cours = '0' AND ghm_id = 0 THEN '9'
WHEN en_cours = '1' AND ghm_id = 0 THEN '9'
WHEN en_cours_etat IN ('G', 'V') THEN '1'
ELSE '0' END AS est_groupe,
CASE
WHEN en_cours = '0' AND ghm_id <> 0 THEN '1'
WHEN en_cours = '0' AND ghm_id = 0 THEN '9'
WHEN en_cours = '1' AND ghm_id = 0 THEN '9'
WHEN en_cours_etat IN ('V') THEN '1'
ELSE '0' END AS est_valide,
'20991231' AS date_groupage,
CASE
WHEN en_cours = '0' THEN '1'
WHEN en_cours_etat IN ('F') THEN '1'
WHEN base_remboursement > 0 THEN '1'
ELSE '0' END AS est_facture,
'20991231' AS date_facture
FROM pmsi.p_rss
LEFT JOIN pmsi.p_rss_etat ON p_rss_etat.rss_id = p_rss.oid
WHERE p_rss_etat.rss_id IS NULL;
UPDATE pmsi.p_rss_etat
SET
est_groupe = CASE
WHEN en_cours = '0' AND ghm_id <> 0 THEN '1'
WHEN en_cours = '0' AND ghm_id = 0 THEN '9'
WHEN en_cours = '1' AND ghm_id = 0 THEN '9'
WHEN en_cours_etat IN ('G', 'V') THEN '1'
ELSE '0' END,
est_valide = CASE
WHEN en_cours = '0' AND ghm_id <> 0 THEN '1'
WHEN en_cours = '0' AND ghm_id = 0 THEN '9'
WHEN en_cours = '1' AND ghm_id = 0 THEN '9'
WHEN en_cours_etat IN ('V') THEN '1'
ELSE '0' END,
est_facture = CASE
WHEN en_cours = '0' THEN '1'
WHEN en_cours_etat IN ('F') THEN '1'
WHEN base_remboursement > 0 AND rss_id NOT IN (SELECT rss_id FROM pmsi.p_rsf_detail WHERE nature = 'V') THEN '1'
ELSE '0' END
FROM pmsi.p_rss
WHERE p_rss.oid = p_rss_etat.rss_id AND
(
est_groupe IS DISTINCT FROM CASE
WHEN en_cours = '0' AND ghm_id <> 0 THEN '1'
WHEN en_cours = '0' AND ghm_id = 0 THEN '9'
WHEN en_cours = '1' AND ghm_id = 0 THEN '9'
WHEN en_cours_etat IN ('G', 'V') THEN '1'
ELSE '0' END OR
est_valide IS DISTINCT FROM CASE
WHEN en_cours = '0' AND ghm_id <> 0 THEN '1'
WHEN en_cours = '0' AND ghm_id = 0 THEN '9'
WHEN en_cours = '1' AND ghm_id = 0 THEN '9'
WHEN en_cours_etat IN ('V') THEN '1'
ELSE '0' END OR
est_facture IS DISTINCT FROM CASE
WHEN en_cours = '0' THEN '1'
WHEN en_cours_etat IN ('F') THEN '1'
WHEN base_remboursement > 0 AND rss_id NOT IN (SELECT rss_id FROM pmsi.p_rsf_detail WHERE nature = 'V') THEN '1'
ELSE '0' END
);
DELETE FROM pmsi.p_rss_etat
WHERE rss_id IN (
SELECT p_rss_etat.rss_id
FROM pmsi.p_rss_etat
LEFT JOIN pmsi.p_rss ON p_rss.oid = p_rss_etat.rss_id
WHERE p_rss.oid IS NULL
);
RETURN 'OK';
END;