return: text lang: plpgsql parameters: p0: type: text name: i_code p1: type: text name: i_file src: | DECLARE file TEXT; ok TEXT; result TEXT; BEGIN -- Import des données du fichier IF i_file <> '' THEN ok = '0'; IF i_code = 'CACIC_ATC' THEN IF i_file ILIKE '%ATC%' THEN ok = '1'; END IF; END IF; IF i_code = 'CACIC_ARTICLE_SP' THEN IF i_file ILIKE '%SP%' THEN ok = '1'; END IF; END IF; IF i_code = 'CACIC_ARTICLE_DM' THEN IF i_file ILIKE '%DM%' THEN ok = '1'; END IF; END IF; IF i_code = 'CACIC_ARTICLE_ASSOC' THEN IF i_file ILIKE '%ASSOC%' AND i_file ILIKE '%ART%' THEN ok = '1'; END IF; END IF; IF i_code = 'CACIC_FOURNISSEUR_ASSOC' THEN IF i_file ILIKE '%ASSOC%' AND i_file ILIKE '%FOU%' THEN ok = '1'; END IF; END IF; IF ok = '0' THEN RETURN 'KO. Fichier ' || i_file || ' incompatible avec ' || i_code; END IF ; IF NOT EXISTS (SELECT * FROM pg_class WHERE relnamespace = pg_my_temp_schema() AND relname = 'w_reference_import') THEN DROP TABLE IF EXISTS w_reference_import; CREATE TEMP TABLE w_reference_import ( data text ); END IF; TRUNCATE w_reference_import; RAISE NOTICE '%' , 'Copie des donnees ' || i_file; file = replace(i_file,chr(92),'/'); BEGIN EXECUTE ('COPY w_reference_import (data) FROM ''' || file || ''' WITH DELIMITER AS E''' || chr(92) || '01'''); EXCEPTION WHEN others THEN RAISE NOTICE 'Erreur %' , 'Fichier ' || file || ' incompatible'; RETURN 'KO. Structure fichier ' || file || ' incorrecte'; END; DELETE FROM eco.t_reference_input_data USING eco.t_reference_input WHERE t_reference_input_data.reference_input_id = t_reference_input.oid AND code = i_code; DROP SEQUENCE IF EXISTS w_reference_input_data_sequence; CREATE TEMP SEQUENCE w_reference_input_data_sequence; INSERT INTO eco.t_reference_input_data ( reference_input_id, no_ligne, data ) SELECT t_reference_input.oid, nextval('w_reference_input_data_sequence'::regclass), replace(data,E'\t','||') FROM w_reference_import JOIN eco.t_reference_input ON code = i_code; END IF; -- Génération RAISE NOTICE '%' , 'Generation ' || i_code; IF NOT EXISTS (SELECT * FROM pg_class WHERE relnamespace = pg_my_temp_schema() AND relname = 'w_reference_import_ligne') THEN CREATE TEMP TABLE w_reference_import_ligne( import_no_ligne bigint, import_data text, import_columns text[] ); END IF; -- ATC IF i_code = 'CACIC_ATC' OR i_code = '*' THEN TRUNCATE w_reference_import_ligne; INSERT INTO w_reference_import_ligne( import_no_ligne, import_data, import_columns ) SELECT no_ligne, data, string_to_array(data,'||') FROM eco.t_reference_input_data JOIN eco.t_reference_input ON t_reference_input_data.reference_input_id = t_reference_input.oid WHERE t_reference_input.code = 'CACIC_ATC' AND data <> '' AND trim(split_part(data,'||',1)) <> '' AND no_ligne <> 1; UPDATE w_reference_import_ligne SET import_columns[1] = trim(import_columns[1]), import_columns[2] = trim(import_columns[2]) WHERE import_columns[1] IS DISTINCT FROM trim(import_columns[1]) OR import_columns[2] IS DISTINCT FROM trim(import_columns[2]) ; INSERT INTO eco.t_classification_atc (code_original, code, texte, texte_court) SELECT import_columns[1], import_columns[1], import_columns[2], import_columns[2] FROM w_reference_import_ligne WHERE import_columns[1] <> '' AND import_columns[1] NOT IN (SELECT code_original FROM eco.t_classification_atc WHERE code_original IS NOT NULL); UPDATE eco.t_classification_atc SET texte = import_columns[2], texte_court = import_columns[2] FROM w_reference_import_ligne WHERE t_classification_atc.code_original = import_columns[1] AND ( t_classification_atc.texte IS DISTINCT FROM import_columns[2] OR t_classification_atc.texte_court IS DISTINCT FROM import_columns[2] ); PERFORM eco.cti_reorganize_classification_atc(); UPDATE eco.t_reference_input SET import_date = date(now()), nb_lignes = COALESCE((SELECT count(*) FROM w_reference_import_ligne),0) WHERE code = 'CACIC_ATC'; END IF; -- SP IF i_code = 'CACIC_ARTICLE_SP' OR i_code = '*' THEN TRUNCATE w_reference_import_ligne; INSERT INTO w_reference_import_ligne( import_no_ligne, import_data, import_columns ) SELECT no_ligne, data, string_to_array(data,'||') FROM eco.t_reference_input_data JOIN eco.t_reference_input ON t_reference_input_data.reference_input_id = t_reference_input.oid WHERE t_reference_input.code = 'CACIC_ARTICLE_SP' AND data <> '' AND trim(split_part(data,'||',1)) <> '' AND no_ligne <> 1; UPDATE w_reference_import_ligne SET import_columns[1] = trim(import_columns[1]), import_columns[2] = trim(import_columns[2]), import_columns[3] = trim(import_columns[3]), import_columns[4] = trim(import_columns[4]), import_columns[5] = trim(import_columns[5]), import_columns[6] = trim(import_columns[6]), import_columns[7] = trim(import_columns[7]), import_columns[8] = trim(import_columns[8]), import_columns[9] = trim(import_columns[9]), import_columns[10] = trim(import_columns[10]), import_columns[11] = trim(import_columns[11]), import_columns[12] = trim(import_columns[12]), import_columns[13] = trim(import_columns[13]), import_columns[14] = trim(import_columns[14]), import_columns[15] = trim(import_columns[15]), import_columns[16] = trim(import_columns[16]), import_columns[17] = trim(import_columns[17]), import_columns[18] = trim(import_columns[18]), import_columns[19] = trim(import_columns[19]), import_columns[20] = trim(import_columns[20]) WHERE import_columns[1] IS DISTINCT FROM trim(import_columns[1]) OR import_columns[2] IS DISTINCT FROM trim(import_columns[2]) OR import_columns[3] IS DISTINCT FROM trim(import_columns[3]) OR import_columns[4] IS DISTINCT FROM trim(import_columns[4]) OR import_columns[5] IS DISTINCT FROM trim(import_columns[5]) OR import_columns[6] IS DISTINCT FROM trim(import_columns[6]) OR import_columns[7] IS DISTINCT FROM trim(import_columns[7]) OR import_columns[8] IS DISTINCT FROM trim(import_columns[8]) OR import_columns[9] IS DISTINCT FROM trim(import_columns[9]) OR import_columns[10] IS DISTINCT FROM trim(import_columns[10]) OR import_columns[11] IS DISTINCT FROM trim(import_columns[11]) OR import_columns[12] IS DISTINCT FROM trim(import_columns[12]) OR import_columns[13] IS DISTINCT FROM trim(import_columns[13]) OR import_columns[14] IS DISTINCT FROM trim(import_columns[14]) OR import_columns[15] IS DISTINCT FROM trim(import_columns[15]) OR import_columns[16] IS DISTINCT FROM trim(import_columns[16]) OR import_columns[17] IS DISTINCT FROM trim(import_columns[17]) OR import_columns[18] IS DISTINCT FROM trim(import_columns[18]) OR import_columns[19] IS DISTINCT FROM trim(import_columns[19]) OR import_columns[20] IS DISTINCT FROM trim(import_columns[20]) ; INSERT INTO eco.t_fournisseur_reference_cacic (code_original, code, texte, texte_court) SELECT import_columns[6], import_columns[6], MAX(import_columns[7]), MAX(import_columns[7]) FROM w_reference_import_ligne WHERE import_columns[6] <> '' AND import_columns[6] NOT IN (SELECT code_original FROM eco.t_fournisseur_reference_cacic WHERE code_original IS NOT NULL) GROUP BY 1,2; UPDATE eco.t_fournisseur_reference_cacic SET code = import_columns[6], texte = import_columns[7] FROM w_reference_import_ligne WHERE t_fournisseur_reference_cacic.code_original = import_columns[6] AND ( t_fournisseur_reference_cacic.code IS DISTINCT FROM import_columns[6] OR t_fournisseur_reference_cacic.texte IS DISTINCT FROM import_columns[7] ); INSERT INTO eco.t_article_reference_cacic (code_original, code, texte, texte_court, ucd_id, classification_atc_id, fournisseur_reference_cacic_id) SELECT import_columns[1], import_columns[1], CASE WHEN import_columns[19] <> '' THEN import_columns[19] ELSE import_columns[8] || ' ' || import_columns[9] END, CASE WHEN import_columns[19] <> '' THEN import_columns[19] ELSE import_columns[8] || ' ' || import_columns[9] END, COALESCE(t_ucd.oid,0) AS ucd_id, COALESCE(t_classification_atc.oid,0) AS classification_atc_id, COALESCE(t_fournisseur_reference_cacic.oid,0) AS fournisseur_reference_cacic_id FROM w_reference_import_ligne LEFT JOIN base.t_ucd ON import_columns[3] = t_ucd.code LEFT JOIN eco.t_classification_atc ON import_columns[16] = t_classification_atc.code LEFT JOIN eco.t_fournisseur_reference_cacic ON import_columns[6] = t_fournisseur_reference_cacic.code_original WHERE import_columns[1] NOT IN (SELECT code_original FROM eco.t_article_reference_cacic); UPDATE eco.t_article_reference_cacic SET code = import_columns[1], texte = CASE WHEN import_columns[19] <> '' THEN import_columns[19] ELSE import_columns[8] || ' ' || import_columns[9] END, texte_court = CASE WHEN import_columns[19] <> '' THEN import_columns[19] ELSE import_columns[8] || ' ' || import_columns[9] END, ucd_id = COALESCE(t_ucd.oid,0), classification_atc_id = COALESCE(t_classification_atc.oid,0), fournisseur_reference_cacic_id = COALESCE(t_fournisseur_reference_cacic.oid,0) FROM w_reference_import_ligne LEFT JOIN base.t_ucd ON import_columns[3] = t_ucd.code LEFT JOIN eco.t_classification_atc ON import_columns[16] = t_classification_atc.code LEFT JOIN eco.t_fournisseur_reference_cacic ON import_columns[6] = t_fournisseur_reference_cacic.code WHERE t_article_reference_cacic.code_original = import_columns[1] AND ( t_article_reference_cacic.code IS DISTINCT FROM import_columns[1] OR t_article_reference_cacic.texte IS DISTINCT FROM CASE WHEN import_columns[19] <> '' THEN import_columns[19] ELSE import_columns[8] || ' ' || import_columns[9] END OR t_article_reference_cacic.texte_court IS DISTINCT FROM CASE WHEN import_columns[19] <> '' THEN import_columns[19] ELSE import_columns[8] || ' ' || import_columns[9] END OR t_article_reference_cacic.ucd_id IS DISTINCT FROM COALESCE(t_ucd.oid,0) OR t_article_reference_cacic.classification_atc_id IS DISTINCT FROM COALESCE(t_classification_atc.oid,0) OR fournisseur_reference_cacic_id IS DISTINCT FROM COALESCE(t_fournisseur_reference_cacic.oid,0) ); INSERT INTO eco.t_types_articles(code_original, code, texte, texte_court) SELECT code, code, texte, texte FROM ( SELECT 'CACIC_SP'::text AS code,'CACIC SP'::text AS texte ) subview WHERE subview.code NOT IN (SELECT code_original FROM eco.t_types_articles WHERE code_original IS NOT NULL); UPDATE eco.t_article_reference_cacic SET type_id = t_types_articles.oid FROM eco.t_types_articles WHERE t_types_articles.code = 'CACIC_SP' AND type_id IS DISTINCT FROM t_types_articles.oid; UPDATE eco.t_reference_input SET import_date = date(now()), nb_lignes = COALESCE((SELECT count(*) FROM w_reference_import_ligne),0) WHERE code = 'CACIC_ARTICLE_SP'; END IF; -- DM IF i_code = 'CACIC_ARTICLE_DM' OR i_code = '*' THEN TRUNCATE w_reference_import_ligne; INSERT INTO w_reference_import_ligne( import_no_ligne, import_data, import_columns ) SELECT no_ligne, data, string_to_array(data,'||') FROM eco.t_reference_input_data JOIN eco.t_reference_input ON t_reference_input_data.reference_input_id = t_reference_input.oid WHERE t_reference_input.code = 'CACIC_ARTICLE_DM' AND data <> '' AND trim(split_part(data,'||',1)) <> '' AND no_ligne <> 1; UPDATE w_reference_import_ligne SET import_columns[1] = trim(import_columns[1]), import_columns[2] = trim(import_columns[2]), import_columns[3] = trim(import_columns[3]), import_columns[4] = trim(import_columns[4]), import_columns[5] = trim(import_columns[5]), import_columns[6] = trim(import_columns[6]), import_columns[7] = trim(import_columns[7]), import_columns[8] = trim(import_columns[8]), import_columns[9] = trim(import_columns[9]), import_columns[10] = trim(import_columns[10]), import_columns[11] = trim(import_columns[11]), import_columns[12] = trim(import_columns[12]), import_columns[13] = trim(import_columns[13]), import_columns[14] = trim(import_columns[14]), import_columns[15] = trim(import_columns[15]), import_columns[16] = trim(import_columns[16]), import_columns[17] = trim(import_columns[17]), import_columns[18] = trim(import_columns[18]), import_columns[19] = trim(import_columns[19]), import_columns[20] = trim(import_columns[20]) WHERE import_columns[1] IS DISTINCT FROM trim(import_columns[1]) OR import_columns[2] IS DISTINCT FROM trim(import_columns[2]) OR import_columns[3] IS DISTINCT FROM trim(import_columns[3]) OR import_columns[4] IS DISTINCT FROM trim(import_columns[4]) OR import_columns[5] IS DISTINCT FROM trim(import_columns[5]) OR import_columns[6] IS DISTINCT FROM trim(import_columns[6]) OR import_columns[7] IS DISTINCT FROM trim(import_columns[7]) OR import_columns[8] IS DISTINCT FROM trim(import_columns[8]) OR import_columns[9] IS DISTINCT FROM trim(import_columns[9]) OR import_columns[10] IS DISTINCT FROM trim(import_columns[10]) OR import_columns[11] IS DISTINCT FROM trim(import_columns[11]) OR import_columns[12] IS DISTINCT FROM trim(import_columns[12]) OR import_columns[13] IS DISTINCT FROM trim(import_columns[13]) OR import_columns[14] IS DISTINCT FROM trim(import_columns[14]) OR import_columns[15] IS DISTINCT FROM trim(import_columns[15]) OR import_columns[16] IS DISTINCT FROM trim(import_columns[16]) OR import_columns[17] IS DISTINCT FROM trim(import_columns[17]) OR import_columns[18] IS DISTINCT FROM trim(import_columns[18]) OR import_columns[19] IS DISTINCT FROM trim(import_columns[19]) OR import_columns[20] IS DISTINCT FROM trim(import_columns[20]) ; INSERT INTO eco.t_fournisseur_reference_cacic (code_original, code, texte, texte_court) SELECT import_columns[4], import_columns[4], MAX(import_columns[5]), MAX(import_columns[5]) FROM w_reference_import_ligne WHERE import_columns[4] <> '' AND import_columns[4] NOT IN (SELECT code_original FROM eco.t_fournisseur_reference_cacic WHERE code_original IS NOT NULL) GROUP BY 1,2; UPDATE eco.t_fournisseur_reference_cacic SET code = import_columns[4], texte = import_columns[5] FROM w_reference_import_ligne WHERE t_fournisseur_reference_cacic.code_original = import_columns[4] AND ( t_fournisseur_reference_cacic.code IS DISTINCT FROM import_columns[4] OR t_fournisseur_reference_cacic.texte IS DISTINCT FROM import_columns[5] ); INSERT INTO eco.t_article_reference_cacic (code_original, code, texte, texte_court, fournisseur_reference_cacic_id) SELECT import_columns[1], import_columns[1], import_columns[6], import_columns[6], COALESCE(t_fournisseur_reference_cacic.oid,0) AS fournisseur_reference_cacic_id FROM w_reference_import_ligne LEFT JOIN eco.t_fournisseur_reference_cacic ON import_columns[4] = t_fournisseur_reference_cacic.code_original WHERE import_columns[1] NOT IN (SELECT code_original FROM eco.t_article_reference_cacic); UPDATE eco.t_article_reference_cacic SET code = import_columns[1], texte = import_columns[6], texte_court = import_columns[6], fournisseur_reference_cacic_id = COALESCE(t_fournisseur_reference_cacic.oid,0) FROM w_reference_import_ligne LEFT JOIN eco.t_fournisseur_reference_cacic ON import_columns[4] = t_fournisseur_reference_cacic.code WHERE t_article_reference_cacic.code_original = import_columns[1] AND ( t_article_reference_cacic.code IS DISTINCT FROM import_columns[1] OR t_article_reference_cacic.texte IS DISTINCT FROM import_columns[6] OR t_article_reference_cacic.texte_court IS DISTINCT FROM import_columns[6] OR fournisseur_reference_cacic_id IS DISTINCT FROM COALESCE(t_fournisseur_reference_cacic.oid,0) ); INSERT INTO eco.t_types_articles(code_original, code, texte, texte_court) SELECT code, code, texte, texte FROM ( SELECT 'CACIC_DM'::text AS code,'CACIC DM'::text AS texte ) subview WHERE subview.code NOT IN (SELECT code_original FROM eco.t_types_articles WHERE code_original IS NOT NULL); UPDATE eco.t_article_reference_cacic SET type_id = t_types_articles.oid FROM eco.t_types_articles WHERE t_types_articles.code = 'CACIC_DM' AND type_id IS DISTINCT FROM t_types_articles.oid; UPDATE eco.t_reference_input SET import_date = date(now()), nb_lignes = COALESCE((SELECT count(*) FROM w_reference_import_ligne),0) WHERE code = 'CACIC_ARTICLE_DM'; END IF; -- Articles ASSOC IF i_code = 'CACIC_ARTICLE_ASSOC' OR i_code = '*' THEN TRUNCATE w_reference_import_ligne; INSERT INTO w_reference_import_ligne( import_no_ligne, import_data, import_columns ) SELECT no_ligne, data, string_to_array(data,'||') FROM eco.t_reference_input_data JOIN eco.t_reference_input ON t_reference_input_data.reference_input_id = t_reference_input.oid WHERE t_reference_input.code = 'CACIC_ARTICLE_ASSOC' AND data <> '' AND trim(split_part(data,'||',1)) <> '' AND no_ligne <> 1; UPDATE w_reference_import_ligne SET import_columns[1] = trim(import_columns[1]), import_columns[2] = trim(import_columns[2]), import_columns[3] = trim(import_columns[3]), import_columns[4] = trim(import_columns[4]), import_columns[5] = trim(import_columns[5]), import_columns[6] = trim(import_columns[6]), import_columns[7] = trim(import_columns[7]), import_columns[8] = trim(import_columns[8]), import_columns[9] = trim(import_columns[9]), import_columns[10] = trim(import_columns[10]), import_columns[11] = trim(import_columns[11]), import_columns[12] = trim(import_columns[12]), import_columns[13] = trim(import_columns[13]), import_columns[14] = trim(import_columns[14]), import_columns[15] = trim(import_columns[15]), import_columns[16] = trim(import_columns[16]), import_columns[17] = trim(import_columns[17]), import_columns[18] = trim(import_columns[18]), import_columns[19] = trim(import_columns[19]), import_columns[20] = trim(import_columns[20]) WHERE import_columns[1] IS DISTINCT FROM trim(import_columns[1]) OR import_columns[2] IS DISTINCT FROM trim(import_columns[2]) OR import_columns[3] IS DISTINCT FROM trim(import_columns[3]) OR import_columns[4] IS DISTINCT FROM trim(import_columns[4]) OR import_columns[5] IS DISTINCT FROM trim(import_columns[5]) OR import_columns[6] IS DISTINCT FROM trim(import_columns[6]) OR import_columns[7] IS DISTINCT FROM trim(import_columns[7]) OR import_columns[8] IS DISTINCT FROM trim(import_columns[8]) OR import_columns[9] IS DISTINCT FROM trim(import_columns[9]) OR import_columns[10] IS DISTINCT FROM trim(import_columns[10]) OR import_columns[11] IS DISTINCT FROM trim(import_columns[11]) OR import_columns[12] IS DISTINCT FROM trim(import_columns[12]) OR import_columns[13] IS DISTINCT FROM trim(import_columns[13]) OR import_columns[14] IS DISTINCT FROM trim(import_columns[14]) OR import_columns[15] IS DISTINCT FROM trim(import_columns[15]) OR import_columns[16] IS DISTINCT FROM trim(import_columns[16]) OR import_columns[17] IS DISTINCT FROM trim(import_columns[17]) OR import_columns[18] IS DISTINCT FROM trim(import_columns[18]) OR import_columns[19] IS DISTINCT FROM trim(import_columns[19]) OR import_columns[20] IS DISTINCT FROM trim(import_columns[20]) ; -- Mise à jour par le code UPDATE eco.t_articles SET article_reference_cacic_id = t_article_reference_cacic.oid FROM w_reference_import_ligne JOIN eco.t_article_reference_cacic ON eco.t_article_reference_cacic.code = w_reference_import_ligne.import_columns[2] WHERE t_articles.code = w_reference_import_ligne.import_columns[1] AND t_articles.article_reference_cacic_id IS DISTINCT FROM t_article_reference_cacic.oid; -- Mise à jour par le code original UPDATE eco.t_articles SET article_reference_cacic_id = t_article_reference_cacic.oid FROM w_reference_import_ligne JOIN eco.t_article_reference_cacic ON eco.t_article_reference_cacic.code = w_reference_import_ligne.import_columns[2] WHERE ltrim(t_articles.code_original,'0') = w_reference_import_ligne.import_columns[1] AND t_articles.article_reference_cacic_id IS DISTINCT FROM t_article_reference_cacic.oid; UPDATE eco.t_reference_input SET import_date = date(now()), nb_lignes = COALESCE((SELECT count(*) FROM w_reference_import_ligne),0) WHERE code = 'CACIC_ARTICLE_ASSOC'; END IF; -- Articles ASSOC IF i_code = 'CACIC_FOURNISSEUR_ASSOC' OR i_code = '*' THEN TRUNCATE w_reference_import_ligne; INSERT INTO w_reference_import_ligne( import_no_ligne, import_data, import_columns ) SELECT no_ligne, data, string_to_array(data,'||') FROM eco.t_reference_input_data JOIN eco.t_reference_input ON t_reference_input_data.reference_input_id = t_reference_input.oid WHERE t_reference_input.code = 'CACIC_FOURNISSEUR_ASSOC' AND data <> '' AND trim(split_part(data,'||',1)) <> '' AND no_ligne <> 1; UPDATE w_reference_import_ligne SET import_columns[1] = trim(import_columns[1]), import_columns[2] = trim(import_columns[2]), import_columns[3] = trim(import_columns[3]), import_columns[4] = trim(import_columns[4]), import_columns[5] = trim(import_columns[5]), import_columns[6] = trim(import_columns[6]), import_columns[7] = trim(import_columns[7]), import_columns[8] = trim(import_columns[8]), import_columns[9] = trim(import_columns[9]), import_columns[10] = trim(import_columns[10]), import_columns[11] = trim(import_columns[11]), import_columns[12] = trim(import_columns[12]), import_columns[13] = trim(import_columns[13]), import_columns[14] = trim(import_columns[14]), import_columns[15] = trim(import_columns[15]), import_columns[16] = trim(import_columns[16]), import_columns[17] = trim(import_columns[17]), import_columns[18] = trim(import_columns[18]), import_columns[19] = trim(import_columns[19]), import_columns[20] = trim(import_columns[20]) WHERE import_columns[1] IS DISTINCT FROM trim(import_columns[1]) OR import_columns[2] IS DISTINCT FROM trim(import_columns[2]) OR import_columns[3] IS DISTINCT FROM trim(import_columns[3]) OR import_columns[4] IS DISTINCT FROM trim(import_columns[4]) OR import_columns[5] IS DISTINCT FROM trim(import_columns[5]) OR import_columns[6] IS DISTINCT FROM trim(import_columns[6]) OR import_columns[7] IS DISTINCT FROM trim(import_columns[7]) OR import_columns[8] IS DISTINCT FROM trim(import_columns[8]) OR import_columns[9] IS DISTINCT FROM trim(import_columns[9]) OR import_columns[10] IS DISTINCT FROM trim(import_columns[10]) OR import_columns[11] IS DISTINCT FROM trim(import_columns[11]) OR import_columns[12] IS DISTINCT FROM trim(import_columns[12]) OR import_columns[13] IS DISTINCT FROM trim(import_columns[13]) OR import_columns[14] IS DISTINCT FROM trim(import_columns[14]) OR import_columns[15] IS DISTINCT FROM trim(import_columns[15]) OR import_columns[16] IS DISTINCT FROM trim(import_columns[16]) OR import_columns[17] IS DISTINCT FROM trim(import_columns[17]) OR import_columns[18] IS DISTINCT FROM trim(import_columns[18]) OR import_columns[19] IS DISTINCT FROM trim(import_columns[19]) OR import_columns[20] IS DISTINCT FROM trim(import_columns[20]) ; UPDATE eco.t_fournisseurs SET fournisseur_reference_cacic_id = t_fournisseur_reference_cacic.oid FROM w_reference_import_ligne JOIN eco.t_fournisseur_reference_cacic ON eco.t_fournisseur_reference_cacic.code = w_reference_import_ligne.import_columns[2] WHERE t_fournisseurs.code = w_reference_import_ligne.import_columns[1] AND t_fournisseurs.fournisseur_reference_cacic_id IS DISTINCT FROM t_fournisseur_reference_cacic.oid; UPDATE eco.t_reference_input SET import_date = date(now()), nb_lignes = COALESCE((SELECT count(*) FROM w_reference_import_ligne),0) WHERE code = 'CACIC_FOURNISSEUR_ASSOC'; END IF; -- Impacts sur base de données UPDATE eco.t_articles SET article_reference_cacic_id = subview.article_reference_cacic_id FROM ( SELECT ucd_id, MAX(oid) AS article_reference_cacic_id FROM eco.t_article_reference_cacic WHERE ucd_id <> 0 GROUP BY 1 HAVING count(*) = 1 ) subview WHERE t_articles.ucd_id = subview.ucd_id AND t_articles.article_reference_cacic_id = 0; UPDATE eco.t_articles SET article_reference_cacic_id = subview.article_reference_cacic_id FROM ( SELECT ucd_id, classification_atc_id, MAX(oid) AS article_reference_cacic_id FROM eco.t_article_reference_cacic WHERE ucd_id <> 0 AND classification_atc_id <> 0 GROUP BY 1,2 HAVING count(*) = 1 ) subview WHERE t_articles.ucd_id = subview.ucd_id AND t_articles.classification_atc_id = subview.classification_atc_id AND t_articles.article_reference_cacic_id = 0; UPDATE eco.t_articles SET article_reference_cacic_id = subview.article_reference_cacic_id FROM (SELECT t_articles.oid AS article_id, t_article_reference_cacic.texte, MAX(t_article_reference_cacic.oid) AS article_reference_cacic_id FROM eco.t_article_reference_cacic JOIN eco.t_articles ON upper(t_article_reference_cacic.texte) = upper(t_articles.texte) WHERE t_articles.oid <> 0 AND t_articles.article_reference_cacic_id = 0 AND t_article_reference_cacic.oid <> 0 GROUP BY 1,2 HAVING count(*) = 1 ) subview WHERE t_articles.oid = subview.article_id AND t_articles.article_reference_cacic_id = 0; UPDATE eco.t_articles SET classification_atc_id = t_article_reference_cacic.classification_atc_id FROM eco.t_article_reference_cacic WHERE t_articles.article_reference_cacic_id = t_article_reference_cacic.oid AND t_articles.classification_atc_id = 0 AND t_article_reference_cacic.classification_atc_id <> 0; UPDATE eco.t_articles SET ucd_id = t_article_reference_cacic.ucd_id FROM eco.t_article_reference_cacic WHERE t_articles.article_reference_cacic_id = t_article_reference_cacic.oid AND t_articles.ucd_id = 0 AND t_article_reference_cacic.ucd_id <> 0; UPDATE eco.t_articles SET article_reference_cacic_code = t_article_reference_cacic.code, article_reference_cacic_texte = t_article_reference_cacic.texte_court, article_reference_cacic_section_id = t_article_reference_cacic.section_id, article_reference_cacic_section_code = t_article_reference_cacic.section_code, article_reference_cacic_section_texte = t_article_reference_cacic.section_texte FROM eco.t_article_reference_cacic WHERE article_reference_cacic_id = t_article_reference_cacic.oid AND ( article_reference_cacic_code IS DISTINCT FROM t_article_reference_cacic.code OR article_reference_cacic_texte IS DISTINCT FROM t_article_reference_cacic.texte_court OR article_reference_cacic_section_id IS DISTINCT FROM t_article_reference_cacic.section_id OR article_reference_cacic_section_code IS DISTINCT FROM t_article_reference_cacic.section_code OR article_reference_cacic_section_texte IS DISTINCT FROM t_article_reference_cacic.section_texte ); UPDATE eco.t_fournisseurs SET fournisseur_reference_cacic_id = subview.fournisseur_reference_cacic_id FROM ( SELECT texte, MAX(oid) AS fournisseur_reference_cacic_id FROM eco.t_fournisseur_reference_cacic GROUP BY 1 HAVING count(*) = 1 ) subview WHERE subview.texte ILIKE t_fournisseurs.texte AND t_fournisseurs.fournisseur_reference_cacic_id IS DISTINCT FROM subview.fournisseur_reference_cacic_id ; UPDATE eco.t_fournisseurs SET fournisseur_reference_cacic_code = t_fournisseur_reference_cacic.code, fournisseur_reference_cacic_texte = t_fournisseur_reference_cacic.texte_court, fournisseur_reference_cacic_section_id = t_fournisseur_reference_cacic.section_id, fournisseur_reference_cacic_section_code = t_fournisseur_reference_cacic.section_code, fournisseur_reference_cacic_section_texte = t_fournisseur_reference_cacic.section_texte FROM eco.t_fournisseur_reference_cacic WHERE fournisseur_reference_cacic_id = t_fournisseur_reference_cacic.oid AND ( fournisseur_reference_cacic_code IS DISTINCT FROM t_fournisseur_reference_cacic.code OR fournisseur_reference_cacic_texte IS DISTINCT FROM t_fournisseur_reference_cacic.texte_court OR fournisseur_reference_cacic_section_id IS DISTINCT FROM t_fournisseur_reference_cacic.section_id OR fournisseur_reference_cacic_section_code IS DISTINCT FROM t_fournisseur_reference_cacic.section_code OR fournisseur_reference_cacic_section_texte IS DISTINCT FROM t_fournisseur_reference_cacic.section_texte ); RETURN 'OK'; END;