|
|
return: text
|
|
|
lang: plpgsql
|
|
|
src: |
|
|
|
DECLARE
|
|
|
result TEXT;
|
|
|
BEGIN
|
|
|
UPDATE base.t_ucd SET texte_court = texte WHERE COALESCE(texte_court,'') = '';
|
|
|
|
|
|
INSERT INTO base.t_ucd(oid, code, texte, texte_court)
|
|
|
SELECT 0, chr(127) || '*******', chr(127) || 'Non renseigné', chr(127) || 'Non renseigné'
|
|
|
WHERE 0 NOT IN (SELECT oid FROM base.t_ucd);
|
|
|
INSERT INTO eco.t_ucd_c (oid, code, texte, texte_court)
|
|
|
SELECT oid, code, texte, texte_court
|
|
|
FROM base.t_ucd
|
|
|
WHERE oid NOT IN (SELECT oid FROM eco.t_ucd_c);
|
|
|
UPDATE eco.t_ucd_c SET
|
|
|
code = t_ucd.code,
|
|
|
code_ucd13 = sub.code_ucd13,
|
|
|
texte = t_ucd.texte,
|
|
|
texte_court = t_ucd.texte_court
|
|
|
FROM base.t_ucd
|
|
|
LEFT JOIN (
|
|
|
SELECT ucd_id, code_ucd13 FROM eco.t_articles WHERE ucd_id != 0 AND code_ucd13 != '' GROUP BY 1,2
|
|
|
) sub ON sub.ucd_id = oid
|
|
|
WHERE t_ucd.oid = t_ucd_c.oid AND
|
|
|
(
|
|
|
t_ucd_c.code IS DISTINCT FROM t_ucd.code OR
|
|
|
t_ucd_c.code_ucd13 IS DISTINCT FROM sub.code_ucd13 OR
|
|
|
t_ucd_c.texte IS DISTINCT FROM t_ucd.texte OR
|
|
|
t_ucd_c.texte_court IS DISTINCT FROM t_ucd.texte_court
|
|
|
);
|
|
|
|
|
|
-- Synchronisation des différentes colonnes concernant le code UCD13 dans les différentes tables
|
|
|
DROP TABLE IF EXISTS w_liste_codes_ucd
|
|
|
;
|
|
|
|
|
|
CREATE TEMP TABLE w_liste_codes_ucd AS
|
|
|
SELECT
|
|
|
t_ucd.oid AS ucd_id,
|
|
|
t_ucd.code AS t_ucd_code_ucd7,
|
|
|
t_ucd_c.code AS t_ucd_c_code_ucd7,
|
|
|
CASE WHEN t_ucd_c.code_ucd13 = '' THEN NULL ELSE t_ucd_c.code_ucd13 END AS t_ucd_c_code_ucd13,
|
|
|
t_ucd_c.code AS t_articles_code_ucd7,
|
|
|
CASE WHEN t_articles.code_ucd13 = '' THEN NULL ELSE t_articles.code_ucd13 END AS t_articles_code_ucd13,
|
|
|
t_ucd_c.code AS t_article_fournisseur_ucd7,
|
|
|
CASE WHEN t_article_fournisseur.code_ucd13 = '' THEN NULL ELSE t_article_fournisseur.code_ucd13 END AS t_article_fournisseur_code_ucd13
|
|
|
FROM base.t_ucd
|
|
|
LEFT JOIN eco.t_ucd_c ON t_ucd_c.oid = t_ucd.oid
|
|
|
LEFT JOIN eco.t_articles ON t_articles.ucd_id > 0 AND t_articles.ucd_id = t_ucd.oid AND t_articles.code_ucd13 <> ''
|
|
|
LEFT JOIN eco.t_article_fournisseur ON t_article_fournisseur.ucd_id > 0 AND t_article_fournisseur.ucd_id = t_ucd.oid AND t_article_fournisseur.code_ucd13 <> ''
|
|
|
;
|
|
|
|
|
|
UPDATE eco.t_ucd_c
|
|
|
SET code_ucd13 = COALESCE(t_articles_code_ucd13, t_article_fournisseur_code_ucd13)
|
|
|
FROM w_liste_codes_ucd
|
|
|
WHERE w_liste_codes_ucd.ucd_id = t_ucd_c.oid
|
|
|
;
|
|
|
|
|
|
UPDATE eco.t_articles
|
|
|
SET code_ucd13 = COALESCE(t_ucd_c_code_ucd13, t_article_fournisseur_code_ucd13)
|
|
|
FROM w_liste_codes_ucd
|
|
|
WHERE w_liste_codes_ucd.ucd_id = t_articles.ucd_id
|
|
|
;
|
|
|
|
|
|
UPDATE eco.t_article_fournisseur
|
|
|
SET code_ucd13 = COALESCE(t_ucd_c_code_ucd13, t_articles_code_ucd13)
|
|
|
FROM w_liste_codes_ucd
|
|
|
WHERE w_liste_codes_ucd.ucd_id = t_article_fournisseur.ucd_id
|
|
|
;
|
|
|
|
|
|
UPDATE base.t_lpp SET texte_court = texte WHERE COALESCE(texte_court,'') = '';
|
|
|
INSERT INTO base.t_lpp(oid, code, texte, texte_court)
|
|
|
SELECT 0, chr(127) || '*******', chr(127) || 'Non renseigné', chr(127) || 'Non renseigné'
|
|
|
WHERE 0 NOT IN (SELECT oid FROM base.t_lpp);
|
|
|
INSERT INTO eco.t_lpp_c (oid, code, texte, texte_court)
|
|
|
SELECT oid, code, texte, texte_court
|
|
|
FROM base.t_lpp
|
|
|
WHERE oid NOT IN (SELECT oid FROM eco.t_lpp_c);
|
|
|
UPDATE eco.t_lpp_c SET
|
|
|
code = t_lpp.code,
|
|
|
texte = t_lpp.texte,
|
|
|
texte_court = t_lpp.texte_court
|
|
|
FROM base.t_lpp
|
|
|
WHERE t_lpp.oid = t_lpp_c.oid AND
|
|
|
(
|
|
|
t_lpp_c.code IS DISTINCT FROM t_lpp.code OR
|
|
|
t_lpp_c.texte IS DISTINCT FROM t_lpp.texte OR
|
|
|
t_lpp_c.texte_court IS DISTINCT FROM t_lpp.texte_court
|
|
|
);
|
|
|
|
|
|
RETURN 'OK';
|
|
|
END;
|