return: text lang: plpgsql parameters: p0: type: text name: i_table src: | DECLARE _taux_int1 numeric(5,2); _taux_int0 numeric(5,2); _sqlcmd text; BEGIN INSERT INTO activite.t_divers (code, texte, valeur, description, valeur2) SELECT 'VENTGHS', 'Ventilation GHS', '0', '0=Prix moyen par jour, 1=Poids donné au jour de l''intervention', '' WHERE 'VENTGHS' NOT IN (SELECT code FROM activite.t_divers); INSERT INTO activite.t_divers (code, texte, valeur, description, valeur2) SELECT 'VENTGHSPINT', 'Ventilation GHS. Poids jour intervention', '000', 'Pourcentage', '' WHERE 'VENTGHSPINT' NOT IN (SELECT code FROM activite.t_divers); -- Spécialite selon specialite pmsi IF NOT EXISTS (SELECT * FROM activite.t_divers WHERE code = 'VENTGHS' AND valeur = '1') THEN return 'Pas de ventilation à faire'; END IF; IF NOT EXISTS (SELECT * FROM activite.t_divers WHERE code = 'VENTGHSPINT') THEN return 'Pas de taux paramétré'; END IF; _taux_int1 = base.cti_to_number((SELECT valeur FROM activite.t_divers WHERE code = 'VENTGHSPINT')) / 100.00; IF _taux_int1 <= 0 THEN return 'Pas de taux paramétré'; END IF; IF _taux_int1 > 1 THEN return 'Taux incorrect'; END IF; _taux_int0 = 1 - _taux_int1; _sqlcmd = ' DROP TABLE IF EXISTS w_ventilation_inter'; EXECUTE _sqlcmd; IF (i_table NOT LIKE '%encours%') THEN _sqlcmd = ' CREATE TEMP TABLE w_ventilation_inter AS SELECT p_factures.sejour_id, p_factures_lignes_c.no_facture, p_factures_lignes_c.date_debut, p_factures_lignes_c.nb_prestation, montant_facture, montant_facture_0, montant_facture_1, montant_facture_2, montant_facture_22, montant_comptabilise, montant_comptabilise_0, montant_comptabilise_1, montant_comptabilise_2, montant_comptabilise_22, montant_encours, montant_encours_0, montant_encours_1, montant_encours_2, montant_encours_22, ''0''::text AS est_date_intervention, p_factures_lignes_c.CTID AS from_ctid FROM activite.p_factures_lignes_c p_factures_lignes_c JOIN activite.p_factures ON p_factures_lignes_c.no_facture = p_factures.no_facture AND p_factures.date_fin > p_factures.date_debut JOIN activite.t_prestations ON prestation_id = t_prestations.oid AND t_prestations.code = ''GHS'' WHERE sejour_id IN (SELECT sejour_id FROM activite.p_intervention) ORDER BY 1,2,3;'; ELSE _sqlcmd = ' CREATE TEMP TABLE w_ventilation_inter AS SELECT p_factures.sejour_id, p_factures_lignes_c.no_facture, p_factures_lignes_c.date_debut, p_factures_lignes_c.nb_prestation, 0::numeric AS montant_facture, 0::numeric AS montant_facture_0, 0::numeric AS montant_facture_1, 0::numeric AS montant_facture_2, 0::numeric AS montant_facture_22, 0::numeric AS montant_comptabilise, 0::numeric AS montant_comptabilise_0, 0::numeric AS montant_comptabilise_1, 0::numeric AS montant_comptabilise_2, 0::numeric AS montant_comptabilise_22, montant_encours, montant_encours_0, montant_encours_1, montant_encours_2, montant_encours_22, ''0''::text AS est_date_intervention, p_factures_lignes_c.CTID AS from_ctid FROM activite.p_factures_lignes_c p_factures_lignes_c JOIN activite.p_factures ON p_factures_lignes_c.no_facture = p_factures.no_facture AND p_factures.date_fin > p_factures.date_debut JOIN activite.t_prestations ON prestation_id = t_prestations.oid AND t_prestations.code = ''GHS'' WHERE sejour_id IN (SELECT sejour_id FROM activite.p_intervention) ORDER BY 1,2,3;'; END IF; _sqlcmd = replace(_sqlcmd,'activite.p_factures_lignes_c',i_table); EXECUTE _sqlcmd; _sqlcmd = ' CREATE INDEX w_ventilation_inter_i1 ON w_ventilation_inter USING btree (sejour_id);'; EXECUTE _sqlcmd; _sqlcmd = ' UPDATE w_ventilation_inter SET est_date_intervention = ''1'' FROM activite.p_intervention WHERE p_intervention.sejour_id = w_ventilation_inter.sejour_id AND p_intervention.date_debut = w_ventilation_inter.date_debut;'; EXECUTE _sqlcmd; _sqlcmd = ' DROP TABLE IF EXISTS w_ventilation_total_inter;'; EXECUTE _sqlcmd; _sqlcmd = ' CREATE TEMP TABLE w_ventilation_total_inter AS SELECT no_facture, MAX(CASE WHEN est_date_intervention = ''0'' AND nb_prestation <> 0 THEN from_ctid ELSE NULL END) AS last_ctid, MAX(CASE WHEN est_date_intervention = ''0'' THEN from_ctid ELSE NULL END) AS last_ctid_2, count(*) AS nb, SUM(CASE WHEN est_date_intervention = ''0'' THEN 1 ELSE 0 END) AS nb_int0, SUM(CASE WHEN est_date_intervention = ''1'' THEN 1 ELSE 0 END) AS nb_int1, SUM(montant_facture) AS total_facture, SUM(montant_facture_0) AS total_facture_0, SUM(montant_facture_1) AS total_facture_1, SUM(montant_facture_2) AS total_facture_2, SUM(montant_facture_22) AS total_facture_22, SUM(montant_comptabilise) AS total_comptabilise, SUM(montant_comptabilise_0) AS total_comptabilise_0, SUM(montant_comptabilise_1) AS total_comptabilise_1, SUM(montant_comptabilise_2) AS total_comptabilise_2, SUM(montant_comptabilise_22) AS total_comptabilise_22, SUM(montant_encours) AS total_encours, SUM(montant_encours_0) AS total_encours_0, SUM(montant_encours_1) AS total_encours_1, SUM(montant_encours_2) AS total_encours_2, SUM(montant_encours_22) AS total_encours_22, 0::numeric(15,2) AS montant_facture_int0, 0::numeric(15,2) AS montant_facture_int0_last, 0::numeric(15,2) AS montant_facture_int1, 0::numeric(15,2) AS montant_facture_0_int0, 0::numeric(15,2) AS montant_facture_0_int0_last, 0::numeric(15,2) AS montant_facture_0_int1, 0::numeric(15,2) AS montant_facture_1_int0, 0::numeric(15,2) AS montant_facture_1_int0_last, 0::numeric(15,2) AS montant_facture_1_int1, 0::numeric(15,2) AS montant_facture_2_int0, 0::numeric(15,2) AS montant_facture_2_int0_last, 0::numeric(15,2) AS montant_facture_2_int1, 0::numeric(15,2) AS montant_facture_22_int0, 0::numeric(15,2) AS montant_facture_22_int0_last, 0::numeric(15,2) AS montant_facture_22_int1, 0::numeric(15,2) AS montant_comptabilise_int0, 0::numeric(15,2) AS montant_comptabilise_int0_last, 0::numeric(15,2) AS montant_comptabilise_int1, 0::numeric(15,2) AS montant_comptabilise_0_int0, 0::numeric(15,2) AS montant_comptabilise_0_int0_last, 0::numeric(15,2) AS montant_comptabilise_0_int1, 0::numeric(15,2) AS montant_comptabilise_1_int0, 0::numeric(15,2) AS montant_comptabilise_1_int0_last, 0::numeric(15,2) AS montant_comptabilise_1_int1, 0::numeric(15,2) AS montant_comptabilise_2_int0, 0::numeric(15,2) AS montant_comptabilise_2_int0_last, 0::numeric(15,2) AS montant_comptabilise_2_int1, 0::numeric(15,2) AS montant_comptabilise_22_int0, 0::numeric(15,2) AS montant_comptabilise_22_int0_last, 0::numeric(15,2) AS montant_comptabilise_22_int1, 0::numeric(15,2) AS montant_encours_int0, 0::numeric(15,2) AS montant_encours_int0_last, 0::numeric(15,2) AS montant_encours_int1, 0::numeric(15,2) AS montant_encours_0_int0, 0::numeric(15,2) AS montant_encours_0_int0_last, 0::numeric(15,2) AS montant_encours_0_int1, 0::numeric(15,2) AS montant_encours_1_int0, 0::numeric(15,2) AS montant_encours_1_int0_last, 0::numeric(15,2) AS montant_encours_1_int1, 0::numeric(15,2) AS montant_encours_2_int0, 0::numeric(15,2) AS montant_encours_2_int0_last, 0::numeric(15,2) AS montant_encours_2_int1, 0::numeric(15,2) AS montant_encours_22_int0, 0::numeric(15,2) AS montant_encours_22_int0_last, 0::numeric(15,2) AS montant_encours_22_int1 FROM w_ventilation_inter GROUP BY 1 having count(*) > 1 AND SUM(CASE WHEN est_date_intervention = ''1'' THEN 1 ELSE 0 END) > 0 AND SUM(CASE WHEN est_date_intervention = ''0'' THEN 1 ELSE 0 END) > 0 AND SUM(CASE WHEN nb_prestation <> 0 THEN 1 ELSE 0 END) = 1 ORDER BY 1;'; EXECUTE _sqlcmd; _sqlcmd = ' UPDATE w_ventilation_total_inter SET last_ctid = last_ctid_2 WHERE last_ctid IS NULL;'; EXECUTE _sqlcmd; _sqlcmd = ' UPDATE w_ventilation_total_inter SET montant_facture_int0 = round(total_facture * (0.4) / nb,2), montant_facture_int1 = round(total_facture * (0.6) / nb_int1,2), montant_facture_0_int0 = round(total_facture_0 * (0.4) / nb,2), montant_facture_0_int1 = round(total_facture_0 * (0.6) / nb_int1,2), montant_facture_1_int0 = round(total_facture_1 * (0.4) / nb,2), montant_facture_1_int1 = round(total_facture_1 * (0.6) / nb_int1,2), montant_facture_2_int0 = round(total_facture_2 * (0.4) / nb,2), montant_facture_2_int1 = round(total_facture_2 * (0.6) / nb_int1,2), montant_facture_22_int0 = round(total_facture_22 * (0.4) / nb,2), montant_facture_22_int1 = round(total_facture_22 * (0.6) / nb_int1,2), montant_comptabilise_int0 = round(total_comptabilise * (0.4) / nb,2), montant_comptabilise_int1 = round(total_comptabilise * (0.6) / nb_int1,2), montant_comptabilise_0_int0 = round(total_comptabilise_0 * (0.4) / nb,2), montant_comptabilise_0_int1 = round(total_comptabilise_0 * (0.6) / nb_int1,2), montant_comptabilise_1_int0 = round(total_comptabilise_1 * (0.4) / nb,2), montant_comptabilise_1_int1 = round(total_comptabilise_1 * (0.6) / nb_int1,2), montant_comptabilise_2_int0 = round(total_comptabilise_2 * (0.4) / nb,2), montant_comptabilise_2_int1 = round(total_comptabilise_2 * (0.6) / nb_int1,2), montant_comptabilise_22_int0 = round(total_comptabilise_22 * (0.4) / nb,2), montant_comptabilise_22_int1 = round(total_comptabilise_22 * (0.6) / nb_int1,2), montant_encours_int0 = round(total_encours * (0.4) / nb,2), montant_encours_int1 = round(total_encours * (0.6) / nb_int1,2), montant_encours_0_int0 = round(total_encours_0 * (0.4) / nb,2), montant_encours_0_int1 = round(total_encours_0 * (0.6) / nb_int1,2), montant_encours_1_int0 = round(total_encours_1 * (0.4) / nb,2), montant_encours_1_int1 = round(total_encours_1 * (0.6) / nb_int1,2), montant_encours_2_int0 = round(total_encours_2 * (0.4) / nb,2), montant_encours_2_int1 = round(total_encours_2 * (0.6) / nb_int1,2), montant_encours_22_int0 = round(total_encours_22 * (0.4) / nb,2), montant_encours_22_int1 = round(total_encours_22 * (0.6) / nb_int1,2) ;'; _sqlcmd = replace(_sqlcmd,'(0.6)',_taux_int1); _sqlcmd = replace(_sqlcmd,'(0.4)',_taux_int0); EXECUTE _sqlcmd; _sqlcmd = ' UPDATE w_ventilation_total_inter SET montant_facture_int0_last = total_facture - ((nb-1) * montant_facture_int0) - (nb_int1 * montant_facture_int1), montant_facture_0_int0_last = total_facture_0 - ((nb-1) * montant_facture_0_int0) - (nb_int1 * montant_facture_0_int1), montant_facture_1_int0_last = total_facture_1 - ((nb-1) * montant_facture_1_int0) - (nb_int1 * montant_facture_1_int1), montant_facture_2_int0_last = total_facture_2 - ((nb-1) * montant_facture_2_int0) - (nb_int1 * montant_facture_2_int1), montant_facture_22_int0_last = total_facture_22 - ((nb-1) * montant_facture_22_int0) - (nb_int1 * montant_facture_22_int1), montant_comptabilise_int0_last = total_comptabilise - ((nb-1) * montant_comptabilise_int0) - (nb_int1 * montant_comptabilise_int1), montant_comptabilise_0_int0_last = total_comptabilise_0 - ((nb-1) * montant_comptabilise_0_int0) - (nb_int1 * montant_comptabilise_0_int1), montant_comptabilise_1_int0_last = total_comptabilise_1 - ((nb-1) * montant_comptabilise_1_int0) - (nb_int1 * montant_comptabilise_1_int1), montant_comptabilise_2_int0_last = total_comptabilise_2 - ((nb-1) * montant_comptabilise_2_int0) - (nb_int1 * montant_comptabilise_2_int1), montant_comptabilise_22_int0_last = total_comptabilise_22 - ((nb-1) * montant_comptabilise_22_int0) - (nb_int1 * montant_comptabilise_22_int1), montant_encours_int0_last = total_encours - ((nb-1) * montant_encours_int0) - (nb_int1 * montant_encours_int1), montant_encours_0_int0_last = total_encours_0 - ((nb-1) * montant_encours_0_int0) - (nb_int1 * montant_encours_0_int1), montant_encours_1_int0_last = total_encours_1 - ((nb-1) * montant_encours_1_int0) - (nb_int1 * montant_encours_1_int1), montant_encours_2_int0_last = total_encours_2 - ((nb-1) * montant_encours_2_int0) - (nb_int1 * montant_encours_2_int1), montant_encours_22_int0_last = total_encours_22 - ((nb-1) * montant_encours_22_int0) - (nb_int1 * montant_encours_22_int1), montant_facture_int1 = montant_facture_int0 + montant_facture_int1, montant_facture_0_int1 = montant_facture_0_int0 + montant_facture_0_int1, montant_facture_1_int1 = montant_facture_1_int0 + montant_facture_1_int1, montant_facture_2_int1 = montant_facture_2_int0 + montant_facture_2_int1, montant_facture_22_int1 = montant_facture_22_int0 + montant_facture_22_int1, montant_comptabilise_int1 = montant_comptabilise_int0 + montant_comptabilise_int1, montant_comptabilise_0_int1 = montant_comptabilise_0_int0 + montant_comptabilise_0_int1, montant_comptabilise_1_int1 = montant_comptabilise_1_int0 + montant_comptabilise_1_int1, montant_comptabilise_2_int1 = montant_comptabilise_2_int0 + montant_comptabilise_2_int1, montant_comptabilise_22_int1 = montant_comptabilise_22_int0 + montant_comptabilise_22_int1, montant_encours_int1 = montant_encours_int0 + montant_encours_int1, montant_encours_0_int1 = montant_encours_0_int0 + montant_encours_0_int1, montant_encours_1_int1 = montant_encours_1_int0 + montant_encours_1_int1, montant_encours_2_int1 = montant_encours_2_int0 + montant_encours_2_int1, montant_encours_22_int1 = montant_encours_22_int0 + montant_encours_22_int1 ;'; EXECUTE _sqlcmd; _sqlcmd = ' CREATE INDEX w_ventilation_total_inter_i1 ON w_ventilation_total_inter USING btree (no_facture);'; EXECUTE _sqlcmd; IF (i_table NOT LIKE '%encours%') THEN _sqlcmd = ' UPDATE activite.p_factures_lignes_c p_factures_lignes_c SET montant_facture = CASE WHEN est_date_intervention = ''1'' THEN montant_facture_int1 WHEN p_factures_lignes_c.CTID = last_ctid THEN montant_facture_int0_last ELSE montant_facture_int0 END, montant_facture_0 = CASE WHEN est_date_intervention = ''1'' THEN montant_facture_0_int1 WHEN p_factures_lignes_c.CTID = last_ctid THEN montant_facture_0_int0_last ELSE montant_facture_0_int0 END, montant_facture_1 = CASE WHEN est_date_intervention = ''1'' THEN montant_facture_1_int1 WHEN p_factures_lignes_c.CTID = last_ctid THEN montant_facture_1_int0_last ELSE montant_facture_1_int0 END, montant_facture_2 = CASE WHEN est_date_intervention = ''1'' THEN montant_facture_2_int1 WHEN p_factures_lignes_c.CTID = last_ctid THEN montant_facture_2_int0_last ELSE montant_facture_2_int0 END, montant_facture_22 = CASE WHEN est_date_intervention = ''1'' THEN montant_facture_22_int1 WHEN p_factures_lignes_c.CTID = last_ctid THEN montant_facture_22_int0_last ELSE montant_facture_22_int0 END, montant_comptabilise = CASE WHEN est_date_intervention = ''1'' THEN montant_comptabilise_int1 WHEN p_factures_lignes_c.CTID = last_ctid THEN montant_comptabilise_int0_last ELSE montant_comptabilise_int0 END, montant_comptabilise_0 = CASE WHEN est_date_intervention = ''1'' THEN montant_comptabilise_0_int1 WHEN p_factures_lignes_c.CTID = last_ctid THEN montant_comptabilise_0_int0_last ELSE montant_comptabilise_0_int0 END, montant_comptabilise_1 = CASE WHEN est_date_intervention = ''1'' THEN montant_comptabilise_1_int1 WHEN p_factures_lignes_c.CTID = last_ctid THEN montant_comptabilise_1_int0_last ELSE montant_comptabilise_1_int0 END, montant_comptabilise_2 = CASE WHEN est_date_intervention = ''1'' THEN montant_comptabilise_2_int1 WHEN p_factures_lignes_c.CTID = last_ctid THEN montant_comptabilise_2_int0_last ELSE montant_comptabilise_2_int0 END, montant_comptabilise_22 = CASE WHEN est_date_intervention = ''1'' THEN montant_comptabilise_22_int1 WHEN p_factures_lignes_c.CTID = last_ctid THEN montant_comptabilise_22_int0_last ELSE montant_comptabilise_22_int0 END, montant_encours = CASE WHEN est_date_intervention = ''1'' THEN montant_encours_int1 WHEN p_factures_lignes_c.CTID = last_ctid THEN montant_encours_int0_last ELSE montant_encours_int0 END, montant_encours_0 = CASE WHEN est_date_intervention = ''1'' THEN montant_encours_0_int1 WHEN p_factures_lignes_c.CTID = last_ctid THEN montant_encours_0_int0_last ELSE montant_encours_0_int0 END, montant_encours_1 = CASE WHEN est_date_intervention = ''1'' THEN montant_encours_1_int1 WHEN p_factures_lignes_c.CTID = last_ctid THEN montant_encours_1_int0_last ELSE montant_encours_1_int0 END, montant_encours_2 = CASE WHEN est_date_intervention = ''1'' THEN montant_encours_2_int1 WHEN p_factures_lignes_c.CTID = last_ctid THEN montant_encours_2_int0_last ELSE montant_encours_2_int0 END, montant_encours_22 = CASE WHEN est_date_intervention = ''1'' THEN montant_encours_22_int1 WHEN p_factures_lignes_c.CTID = last_ctid THEN montant_encours_22_int0_last ELSE montant_encours_22_int0 END FROM w_ventilation_total_inter, w_ventilation_inter WHERE w_ventilation_inter.from_ctid = p_factures_lignes_c.CTID AND w_ventilation_total_inter.no_facture = p_factures_lignes_c.no_facture AND ( p_factures_lignes_c.montant_facture IS DISTINCT FROM CASE WHEN est_date_intervention = ''1'' THEN montant_facture_int1 WHEN p_factures_lignes_c.CTID = last_ctid THEN montant_facture_int0_last ELSE montant_facture_int0 END OR p_factures_lignes_c.montant_facture_0 IS DISTINCT FROM CASE WHEN est_date_intervention = ''1'' THEN montant_facture_0_int1 WHEN p_factures_lignes_c.CTID = last_ctid THEN montant_facture_0_int0_last ELSE montant_facture_0_int0 END OR p_factures_lignes_c.montant_facture_1 IS DISTINCT FROM CASE WHEN est_date_intervention = ''1'' THEN montant_facture_1_int1 WHEN p_factures_lignes_c.CTID = last_ctid THEN montant_facture_1_int0_last ELSE montant_facture_1_int0 END OR p_factures_lignes_c.montant_facture_2 IS DISTINCT FROM CASE WHEN est_date_intervention = ''1'' THEN montant_facture_2_int1 WHEN p_factures_lignes_c.CTID = last_ctid THEN montant_facture_2_int0_last ELSE montant_facture_2_int0 END OR p_factures_lignes_c.montant_facture_22 IS DISTINCT FROM CASE WHEN est_date_intervention = ''1'' THEN montant_facture_22_int1 WHEN p_factures_lignes_c.CTID = last_ctid THEN montant_facture_22_int0_last ELSE montant_facture_22_int0 END OR p_factures_lignes_c.montant_comptabilise IS DISTINCT FROM CASE WHEN est_date_intervention = ''1'' THEN montant_comptabilise_int1 WHEN p_factures_lignes_c.CTID = last_ctid THEN montant_comptabilise_int0_last ELSE montant_comptabilise_int0 END OR p_factures_lignes_c.montant_comptabilise_0 IS DISTINCT FROM CASE WHEN est_date_intervention = ''1'' THEN montant_comptabilise_0_int1 WHEN p_factures_lignes_c.CTID = last_ctid THEN montant_comptabilise_0_int0_last ELSE montant_comptabilise_0_int0 END OR p_factures_lignes_c.montant_comptabilise_1 IS DISTINCT FROM CASE WHEN est_date_intervention = ''1'' THEN montant_comptabilise_1_int1 WHEN p_factures_lignes_c.CTID = last_ctid THEN montant_comptabilise_1_int0_last ELSE montant_comptabilise_1_int0 END OR p_factures_lignes_c.montant_comptabilise_2 IS DISTINCT FROM CASE WHEN est_date_intervention = ''1'' THEN montant_comptabilise_2_int1 WHEN p_factures_lignes_c.CTID = last_ctid THEN montant_comptabilise_2_int0_last ELSE montant_comptabilise_2_int0 END OR p_factures_lignes_c.montant_comptabilise_22 IS DISTINCT FROM CASE WHEN est_date_intervention = ''1'' THEN montant_comptabilise_22_int1 WHEN p_factures_lignes_c.CTID = last_ctid THEN montant_comptabilise_22_int0_last ELSE montant_comptabilise_22_int0 END OR p_factures_lignes_c.montant_encours IS DISTINCT FROM CASE WHEN est_date_intervention = ''1'' THEN montant_encours_int1 WHEN p_factures_lignes_c.CTID = last_ctid THEN montant_encours_int0_last ELSE montant_encours_int0 END OR p_factures_lignes_c.montant_encours_0 IS DISTINCT FROM CASE WHEN est_date_intervention = ''1'' THEN montant_encours_0_int1 WHEN p_factures_lignes_c.CTID = last_ctid THEN montant_encours_0_int0_last ELSE montant_encours_0_int0 END OR p_factures_lignes_c.montant_encours_1 IS DISTINCT FROM CASE WHEN est_date_intervention = ''1'' THEN montant_encours_1_int1 WHEN p_factures_lignes_c.CTID = last_ctid THEN montant_encours_1_int0_last ELSE montant_encours_1_int0 END OR p_factures_lignes_c.montant_encours_2 IS DISTINCT FROM CASE WHEN est_date_intervention = ''1'' THEN montant_encours_2_int1 WHEN p_factures_lignes_c.CTID = last_ctid THEN montant_encours_2_int0_last ELSE montant_encours_2_int0 END OR p_factures_lignes_c.montant_encours_22 IS DISTINCT FROM CASE WHEN est_date_intervention = ''1'' THEN montant_encours_22_int1 WHEN p_factures_lignes_c.CTID = last_ctid THEN montant_encours_22_int0_last ELSE montant_encours_22_int0 END ) ;'; ELSE _sqlcmd = ' UPDATE activite.p_factures_lignes_c p_factures_lignes_c SET montant_encours = CASE WHEN est_date_intervention = ''1'' THEN montant_encours_int1 WHEN p_factures_lignes_c.CTID = last_ctid THEN montant_encours_int0_last ELSE montant_encours_int0 END, montant_encours_0 = CASE WHEN est_date_intervention = ''1'' THEN montant_encours_0_int1 WHEN p_factures_lignes_c.CTID = last_ctid THEN montant_encours_0_int0_last ELSE montant_encours_0_int0 END, montant_encours_1 = CASE WHEN est_date_intervention = ''1'' THEN montant_encours_1_int1 WHEN p_factures_lignes_c.CTID = last_ctid THEN montant_encours_1_int0_last ELSE montant_encours_1_int0 END, montant_encours_2 = CASE WHEN est_date_intervention = ''1'' THEN montant_encours_2_int1 WHEN p_factures_lignes_c.CTID = last_ctid THEN montant_encours_2_int0_last ELSE montant_encours_2_int0 END, montant_encours_22 = CASE WHEN est_date_intervention = ''1'' THEN montant_encours_22_int1 WHEN p_factures_lignes_c.CTID = last_ctid THEN montant_encours_22_int0_last ELSE montant_encours_22_int0 END FROM w_ventilation_total_inter, w_ventilation_inter WHERE w_ventilation_inter.from_ctid = p_factures_lignes_c.CTID AND w_ventilation_total_inter.no_facture = p_factures_lignes_c.no_facture AND ( p_factures_lignes_c.montant_encours IS DISTINCT FROM CASE WHEN est_date_intervention = ''1'' THEN montant_encours_int1 WHEN p_factures_lignes_c.CTID = last_ctid THEN montant_encours_int0_last ELSE montant_encours_int0 END OR p_factures_lignes_c.montant_encours_0 IS DISTINCT FROM CASE WHEN est_date_intervention = ''1'' THEN montant_encours_0_int1 WHEN p_factures_lignes_c.CTID = last_ctid THEN montant_encours_0_int0_last ELSE montant_encours_0_int0 END OR p_factures_lignes_c.montant_encours_1 IS DISTINCT FROM CASE WHEN est_date_intervention = ''1'' THEN montant_encours_1_int1 WHEN p_factures_lignes_c.CTID = last_ctid THEN montant_encours_1_int0_last ELSE montant_encours_1_int0 END OR p_factures_lignes_c.montant_encours_2 IS DISTINCT FROM CASE WHEN est_date_intervention = ''1'' THEN montant_encours_2_int1 WHEN p_factures_lignes_c.CTID = last_ctid THEN montant_encours_2_int0_last ELSE montant_encours_2_int0 END OR p_factures_lignes_c.montant_encours_22 IS DISTINCT FROM CASE WHEN est_date_intervention = ''1'' THEN montant_encours_22_int1 WHEN p_factures_lignes_c.CTID = last_ctid THEN montant_encours_22_int0_last ELSE montant_encours_22_int0 END ) ;'; END IF; _sqlcmd = replace(_sqlcmd,'activite.p_factures_lignes_c',i_table); EXECUTE _sqlcmd; _sqlcmd = ' DROP TABLE IF EXISTS w_ventilation_inter'; EXECUTE _sqlcmd; _sqlcmd = ' DROP TABLE IF EXISTS w_ventilation_total_inter;'; EXECUTE _sqlcmd; RETURN 'OK' ; END;