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.
 
 

53 lines
1.6 KiB

return: text
lang: plpgsql
parameters:
p0:
type: text
name: i_table
src: |
DECLARE
w_table TEXT;
result TEXT;
BEGIN
-- i_table =
-- Table à mettre à jour, si '*NONE', ne met à jour que les codes et libellés
w_table = i_table;
IF w_table = '' THEN
w_table = 'activite.p_sejours';
END IF;
-- Mise à jour nouvelle zone
BEGIN
EXECUTE '
UPDATE ' || w_table || ' p_sejours
SET type_pmsi = COALESCE(t_services_facturation.type_t2a,''0'')
FROM activite.t_lieux
JOIN activite.t_services_facturation ON service_facturation_id = t_services_facturation.oid
WHERE p_sejours.lieu_sortie_id = t_lieux.oid AND
p_sejours.type_pmsi IS DISTINCT FROM COALESCE(t_services_facturation.type_t2a,''0'')';
-- Initialisation des transferts non renseignés
IF w_table = 'activite.p_sejours' THEN
INSERT INTO activite.p_sejours_transferts(sejour_id, provenance_id, destination_id)
SELECT p_sejours.oid, 0::bigint AS provenance_id, 0::bigint AS destination_id
FROM activite.p_sejours
LEFT JOIN activite.p_sejours_transferts ON p_sejours.oid = p_sejours_transferts.sejour_id
WHERE p_sejours_transferts.sejour_id IS NULL
;
UPDATE activite.p_sejours_transferts SET
provenance_id = COALESCE(provenance_id,0),
destination_id = COALESCE(destination_id,0)
WHERE provenance_id IS NULL OR destination_id IS NULL
;
END IF;
EXCEPTION
WHEN others THEN RAISE NOTICE 'Erreur %' ,'1';
END;
EXECUTE '
ANALYSE ' || w_table;
RETURN 'OK';
END;