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