0 THEN src.type_id + [IPX] ELSE 0 END,
fournisseur_distributeur_id = CASE WHEN src.fournisseur_distributeur_id <> 0 THEN src.fournisseur_distributeur_id + [IPX] ELSE 0 END,
code_cahpp = src.code_cahpp,
adresse = src.adresse,
code_postal_id = src.code_postal_id,
ville = src.ville,
telephone = src.telephone,
fax = src.fax,
email = src.email,
code_edi = src.code_edi,
siret = src.siret,
iban = src.iban,
cedex = src.cedex,
code_comptable = src.code_comptable,
bic = src.bic
FROM eco_src.t_fournisseurs src
WHERE src.oid + [IPX] = t_fournisseurs.oid AND
(
t_fournisseurs.code IS DISTINCT FROM ('[TPX]' || src.code) OR
t_fournisseurs.texte IS DISTINCT FROM src.texte OR
t_fournisseurs.texte_court IS DISTINCT FROM src.texte_court OR
t_fournisseurs.type_id IS DISTINCT FROM CASE WHEN src.type_id <> 0 THEN src.type_id + [IPX] ELSE 0 END OR
t_fournisseurs.fournisseur_distributeur_id IS DISTINCT FROM CASE WHEN src.fournisseur_distributeur_id <> 0 THEN src.fournisseur_distributeur_id + [IPX] ELSE 0 END OR
t_fournisseurs.code_cahpp IS DISTINCT FROM src.code_cahpp OR
t_fournisseurs.adresse IS DISTINCT FROM src.adresse OR
t_fournisseurs.code_postal_id IS DISTINCT FROM src.code_postal_id OR
t_fournisseurs.ville IS DISTINCT FROM src.ville OR
t_fournisseurs.telephone IS DISTINCT FROM src.telephone OR
t_fournisseurs.fax IS DISTINCT FROM src.fax OR
t_fournisseurs.email IS DISTINCT FROM src.email OR
t_fournisseurs.code_edi IS DISTINCT FROM src.code_edi OR
t_fournisseurs.siret IS DISTINCT FROM src.siret OR
t_fournisseurs.iban IS DISTINCT FROM src.iban OR
t_fournisseurs.cedex IS DISTINCT FROM src.cedex OR
t_fournisseurs.code_comptable IS DISTINCT FROM src.code_comptable OR
t_fournisseurs.bic IS DISTINCT FROM src.bic
)
;
UPDATE eco.t_fournisseurs SET
type_code = t_types_fournisseurs.code,
type_texte = t_types_fournisseurs.texte_court,
type_section_id = t_types_fournisseurs.section_id,
type_section_code = t_types_fournisseurs.section_code,
type_section_texte = t_types_fournisseurs.section_texte
FROM eco.t_types_fournisseurs
WHERE type_id = t_types_fournisseurs.oid
AND (
type_code IS DISTINCT FROM t_types_fournisseurs.code OR
type_texte IS DISTINCT FROM t_types_fournisseurs.texte_court OR
type_section_id IS DISTINCT FROM t_types_fournisseurs.section_id OR
type_section_code IS DISTINCT FROM t_types_fournisseurs.section_code OR
type_section_texte IS DISTINCT FROM t_types_fournisseurs.section_texte
);
-- Maj des gestionnaires
SELECT synctable('t_gestionnaires')
;
-- Maj des uf
SELECT synctable('t_unites_fonctionnelles')
;
-- Maj des types mouvements
SELECT synctable('t_types_mouvements')
;
-- Maj des articles
--SELECT synctable('t_articles') impossible car références lieés
;
INSERT INTO eco.t_articles (
oid,
code,
code_original,
texte,
texte_court)
SELECT
src.oid + [IPX],
left('[TPX]' || src.code,30),
'[TPX]' || src.code_original,
src.texte,
src.texte_court
FROM eco_src.t_articles src
LEFT JOIN eco.t_articles cible ON src.oid + [IPX] = cible.oid
WHERE cible.code_original IS NULL AND src.oid != 0
ORDER by 1;
UPDATE eco.t_articles SET
code = left('[TPX]'::text || src.code,30),
code_original = '[TPX]'::text || src.code_original,
texte = src.texte,
texte_court = src.texte_court,
ucd_id = src.ucd_id,
lpp_id = src.lpp_id,
code_ucd13 = src.code_ucd13,
taux_tva_en_cours = src.taux_tva_en_cours,
gere_en_stock = src.gere_en_stock,
stock_en_depot = src.stock_en_depot,
type_id = CASE WHEN src.type_id <> 0 THEN src.type_id + [IPX] ELSE 0 END,
famille_id = CASE WHEN src.famille_id <> 0 THEN src.famille_id + [IPX] ELSE 0 END,
sous_famille_id = CASE WHEN src.sous_famille_id <> 0 THEN src.sous_famille_id + [IPX] ELSE 0 END,
categorie_id = CASE WHEN src.categorie_id <> 0 THEN src.categorie_id + [IPX] ELSE 0 END,
sous_categorie_id = CASE WHEN src.sous_categorie_id <> 0 THEN src.sous_categorie_id + [IPX] ELSE 0 END,
unite_stockage_id = CASE WHEN src.unite_stockage_id <> 0 THEN src.unite_stockage_id + [IPX] ELSE 0 END,
unite_distribution_id = CASE WHEN src.unite_distribution_id <> 0 THEN src.unite_distribution_id + [IPX] ELSE 0 END
FROM eco_src.t_articles src
WHERE src.oid + [IPX] = t_articles.oid AND
(
t_articles.code IS DISTINCT FROM left('[TPX]'::text || src.code,30) OR
t_articles.code_original IS DISTINCT FROM '[TPX]' || src.code_original OR
t_articles.texte IS DISTINCT FROM src.texte OR
t_articles.texte_court IS DISTINCT FROM src.texte_court OR
t_articles.ucd_id IS DISTINCT FROM src.ucd_id OR
t_articles.lpp_id IS DISTINCT FROM src.lpp_id OR
t_articles.code_ucd13 IS DISTINCT FROM src.code_ucd13 OR
t_articles.taux_tva_en_cours IS DISTINCT FROM src.taux_tva_en_cours OR
t_articles.stock_en_depot IS DISTINCT FROM src.stock_en_depot OR
t_articles.gere_en_stock IS DISTINCT FROM src.gere_en_stock OR
t_articles.type_id IS DISTINCT FROM CASE WHEN src.type_id <> 0 THEN src.type_id + [IPX] ELSE 0 END OR
t_articles.famille_id IS DISTINCT FROM CASE WHEN src.famille_id <> 0 THEN src.famille_id + [IPX] ELSE 0 END OR
t_articles.sous_famille_id IS DISTINCT FROM CASE WHEN src.sous_famille_id <> 0 THEN src.sous_famille_id + [IPX] ELSE 0 END OR
t_articles.categorie_id IS DISTINCT FROM CASE WHEN src.categorie_id <> 0 THEN src.categorie_id + [IPX] ELSE 0 END OR
t_articles.sous_categorie_id IS DISTINCT FROM CASE WHEN src.sous_categorie_id <> 0 THEN src.sous_categorie_id + [IPX] ELSE 0 END OR
t_articles.unite_stockage_id IS DISTINCT FROM CASE WHEN src.unite_stockage_id <> 0 THEN src.unite_stockage_id + [IPX] ELSE 0 END OR
t_articles.unite_distribution_id IS DISTINCT FROM CASE WHEN src.unite_distribution_id <> 0 THEN src.unite_distribution_id + [IPX] ELSE 0 END
)
;
UPDATE eco.t_articles SET
compte_id = CASE WHEN src.compte_id <> 0 THEN src.compte_id + [IPX] ELSE 0 END
FROM eco_src.t_articles src
WHERE src.oid + [IPX] = t_articles.oid AND
(SELECT valeur FROM eco.t_divers WHERE code = 'MERGE_CPT') <> '1' AND
(
t_articles.compte_id IS DISTINCT FROM CASE WHEN src.compte_id <> 0 THEN src.compte_id + [IPX] ELSE 0 END
)
;
UPDATE eco.t_articles SET
compte_id = COALESCE(subview.compte_id,0)
FROM eco_src.t_articles src
JOIN eco_src.t_compte src_compte ON src.compte_id = src_compte.oid
LEFT JOIN (SELECT code, MIN(oid) AS compte_id FROM eco.t_compte GROUP BY 1) subview ON src_compte.code = subview.code
WHERE src.oid + [IPX] = t_articles.oid AND
(SELECT valeur FROM eco.t_divers WHERE code = 'MERGE_CPT') = '1' AND
(
t_articles.compte_id IS DISTINCT FROM COALESCE(subview.compte_id,0)
)
;
UPDATE eco.t_articles SET
classification_atc_id = COALESCE(subview.classification_atc_id,0)
FROM eco_src.t_articles src
JOIN eco_src.t_classification_atc src_classification_atc ON src.classification_atc_id = src_classification_atc.oid
LEFT JOIN (SELECT code, MIN(oid) AS classification_atc_id FROM eco.t_classification_atc GROUP BY 1) subview ON src_classification_atc.code = subview.code
WHERE src.oid + [IPX] = t_articles.oid AND
(
t_articles.classification_atc_id IS DISTINCT FROM COALESCE(subview.classification_atc_id,0)
)
;
UPDATE eco.t_articles SET
type_code = t_types_articles.code,
type_texte = t_types_articles.texte_court,
type_section_id = t_types_articles.section_id,
type_section_code = t_types_articles.section_code,
type_section_texte = t_types_articles.section_texte,
famille_code = t_familles_articles.code,
famille_texte = t_familles_articles.texte_court,
famille_section_id = t_familles_articles.section_id,
famille_section_code = t_familles_articles.section_code,
famille_section_texte = t_familles_articles.section_texte,
sous_famille_code = t_sous_familles_articles.code,
sous_famille_texte = t_sous_familles_articles.texte_court,
sous_famille_section_id = t_sous_familles_articles.section_id,
sous_famille_section_code = t_sous_familles_articles.section_code,
sous_famille_section_texte = t_sous_familles_articles.section_texte,
categorie_code = t_categories_articles.code,
categorie_texte = t_categories_articles.texte_court,
categorie_section_id = t_categories_articles.section_id,
categorie_section_code = t_categories_articles.section_code,
categorie_section_texte = t_categories_articles.section_texte,
sous_categorie_code = t_sous_categories_articles.code,
sous_categorie_texte = t_sous_categories_articles.texte_court,
sous_categorie_section_id = t_sous_categories_articles.section_id,
sous_categorie_section_code = t_sous_categories_articles.section_code,
sous_categorie_section_texte = t_sous_categories_articles.section_texte,
classification_atc_code = t_classification_atc.code,
classification_atc_texte = t_classification_atc.texte_court,
classification_atc_section_id = t_classification_atc.section_id,
classification_atc_section_code = t_classification_atc.section_code,
classification_atc_section_texte = t_classification_atc.section_texte,
classification_atc_1_id = t_classification_atc.classification_atc_1_id,
classification_atc_1_code = t_classification_atc.classification_atc_1_code,
classification_atc_1_texte = t_classification_atc.classification_atc_1_texte,
classification_atc_2_id = t_classification_atc.classification_atc_2_id,
classification_atc_2_code = t_classification_atc.classification_atc_2_code,
classification_atc_2_texte = t_classification_atc.classification_atc_2_texte,
classification_atc_3_id = t_classification_atc.classification_atc_3_id,
classification_atc_3_code = t_classification_atc.classification_atc_3_code,
classification_atc_3_texte = t_classification_atc.classification_atc_3_texte,
classification_atc_4_id = t_classification_atc.classification_atc_4_id,
classification_atc_4_code = t_classification_atc.classification_atc_4_code,
classification_atc_4_texte = t_classification_atc.classification_atc_4_texte,
unite_stockage_code = t_unites_stockage.code,
unite_stockage_texte = t_unites_stockage.texte_court,
unite_stockage_section_id = t_unites_stockage.section_id,
unite_stockage_section_code = t_unites_stockage.section_code,
unite_stockage_section_texte = t_unites_stockage.section_texte,
unite_distribution_code = t_unites_distribution.code,
unite_distribution_texte = t_unites_distribution.texte_court,
unite_distribution_section_id = t_unites_distribution.section_id,
unite_distribution_section_code = t_unites_distribution.section_code,
unite_distribution_section_texte = t_unites_distribution.section_texte,
compte_code = t_compte.code,
compte_texte = t_compte.texte_court,
compte_section_id = t_compte.section_id,
compte_section_code = t_compte.section_code,
compte_section_texte = t_compte.section_texte
FROM eco.t_types_articles ,
eco.t_familles_articles,
eco.t_sous_familles_articles,
eco.t_categories_articles,
eco.t_sous_categories_articles,
eco.t_classification_atc,
eco.t_unites t_unites_stockage,
eco.t_unites t_unites_distribution,
eco.t_compte
WHERE type_id = t_types_articles.oid
AND famille_id = t_familles_articles.oid
AND sous_famille_id = t_sous_familles_articles.oid
AND categorie_id = t_categories_articles.oid
AND sous_categorie_id = t_sous_categories_articles.oid
AND classification_atc_id = t_classification_atc.oid
AND unite_stockage_id = t_unites_stockage.oid
AND unite_distribution_id = t_unites_distribution.oid
AND compte_id = t_compte.oid
AND (
type_code IS DISTINCT FROM t_types_articles.code OR
type_texte IS DISTINCT FROM t_types_articles.texte_court OR
type_section_id IS DISTINCT FROM t_types_articles.section_id OR
type_section_code IS DISTINCT FROM t_types_articles.section_code OR
type_section_texte IS DISTINCT FROM t_types_articles.section_texte OR
famille_code IS DISTINCT FROM t_familles_articles.code OR
famille_texte IS DISTINCT FROM t_familles_articles.texte_court OR
famille_section_id IS DISTINCT FROM t_familles_articles.section_id OR
famille_section_code IS DISTINCT FROM t_familles_articles.section_code OR
famille_section_texte IS DISTINCT FROM t_familles_articles.section_texte OR
sous_famille_code IS DISTINCT FROM t_sous_familles_articles.code OR
sous_famille_texte IS DISTINCT FROM t_sous_familles_articles.texte_court OR
sous_famille_section_id IS DISTINCT FROM t_sous_familles_articles.section_id OR
sous_famille_section_code IS DISTINCT FROM t_sous_familles_articles.section_code OR
sous_famille_section_texte IS DISTINCT FROM t_sous_familles_articles.section_texte OR
categorie_code IS DISTINCT FROM t_categories_articles.code OR
categorie_texte IS DISTINCT FROM t_categories_articles.texte_court OR
categorie_section_id IS DISTINCT FROM t_categories_articles.section_id OR
categorie_section_code IS DISTINCT FROM t_categories_articles.section_code OR
categorie_section_texte IS DISTINCT FROM t_categories_articles.section_texte OR
sous_categorie_code IS DISTINCT FROM t_sous_categories_articles.code OR
sous_categorie_texte IS DISTINCT FROM t_sous_categories_articles.texte_court OR
sous_categorie_section_id IS DISTINCT FROM t_sous_categories_articles.section_id OR
sous_categorie_section_code IS DISTINCT FROM t_sous_categories_articles.section_code OR
sous_categorie_section_texte IS DISTINCT FROM t_sous_categories_articles.section_texte OR
t_articles.classification_atc_code IS DISTINCT FROM t_classification_atc.code OR
t_articles.classification_atc_texte IS DISTINCT FROM t_classification_atc.texte_court OR
t_articles.classification_atc_section_id IS DISTINCT FROM t_classification_atc.section_id OR
t_articles.classification_atc_section_code IS DISTINCT FROM t_classification_atc.section_code OR
t_articles.classification_atc_section_texte IS DISTINCT FROM t_classification_atc.section_texte OR
t_articles.classification_atc_1_id IS DISTINCT FROM t_classification_atc.classification_atc_1_id OR
t_articles.classification_atc_1_code IS DISTINCT FROM t_classification_atc.classification_atc_1_code OR
t_articles.classification_atc_1_texte IS DISTINCT FROM t_classification_atc.classification_atc_1_texte OR
t_articles.classification_atc_2_id IS DISTINCT FROM t_classification_atc.classification_atc_2_id OR
t_articles.classification_atc_2_code IS DISTINCT FROM t_classification_atc.classification_atc_2_code OR
t_articles.classification_atc_2_texte IS DISTINCT FROM t_classification_atc.classification_atc_2_texte OR
t_articles.classification_atc_3_id IS DISTINCT FROM t_classification_atc.classification_atc_3_id OR
t_articles.classification_atc_3_code IS DISTINCT FROM t_classification_atc.classification_atc_3_code OR
t_articles.classification_atc_3_texte IS DISTINCT FROM t_classification_atc.classification_atc_3_texte OR
t_articles.classification_atc_4_id IS DISTINCT FROM t_classification_atc.classification_atc_4_id OR
t_articles.classification_atc_4_code IS DISTINCT FROM t_classification_atc.classification_atc_4_code OR
t_articles.classification_atc_4_texte IS DISTINCT FROM t_classification_atc.classification_atc_4_texte OR
t_articles.unite_stockage_code IS DISTINCT FROM t_unites_stockage.code OR
t_articles.unite_stockage_texte IS DISTINCT FROM t_unites_stockage.texte_court OR
t_articles.unite_stockage_section_id IS DISTINCT FROM t_unites_stockage.section_id OR
t_articles.unite_stockage_section_code IS DISTINCT FROM t_unites_stockage.section_code OR
t_articles.unite_stockage_section_texte IS DISTINCT FROM t_unites_stockage.section_texte OR
t_articles.unite_distribution_code IS DISTINCT FROM t_unites_distribution.code OR
t_articles.unite_distribution_texte IS DISTINCT FROM t_unites_distribution.texte_court OR
t_articles.unite_distribution_section_id IS DISTINCT FROM t_unites_distribution.section_id OR
t_articles.unite_distribution_section_code IS DISTINCT FROM t_unites_distribution.section_code OR
t_articles.unite_distribution_section_texte IS DISTINCT FROM t_unites_distribution.section_texte OR
t_articles.compte_code IS DISTINCT FROM t_compte.code OR
t_articles.compte_texte IS DISTINCT FROM t_compte.texte_court OR
t_articles.compte_section_id IS DISTINCT FROM t_compte.section_id OR
t_articles.compte_section_code IS DISTINCT FROM t_compte.section_code OR
t_articles.compte_section_texte IS DISTINCT FROM t_compte.section_texte
);
UPDATE eco.t_articles
SET
ref_fournisseur_id = src.ref_fournisseur_id,
ref_fournisseur_texte = src.ref_fournisseur_texte
FROM (
SELECT
oid,
array_agg(fou_id + [IPX]) AS ref_fournisseur_id,
array_agg(fou_txt) AS ref_fournisseur_texte
FROM (
SELECT
oid,
unnest(ref_fournisseur_id) as fou_id,
unnest(ref_fournisseur_texte) AS fou_txt
FROM
eco_src.t_articles src
) sub
GROUP BY 1
) src
WHERE src.oid + [IPX] = t_articles.oid
AND (
t_articles.ref_fournisseur_id != src.ref_fournisseur_id OR
t_articles.ref_fournisseur_texte != src.ref_fournisseur_texte
)
;
DELETE
FROM eco.t_article_fournisseur
WHERE oid NOT IN (SELECT oid FROM eco_src.t_article_fournisseur) AND
oid BETWEEN [IPX] AND ([IPX]+10000000)
;
INSERT INTO eco.t_article_fournisseur (
oid,
code_original,
article_id,
fournisseur_id,
code_reference_fournisseur,
texte_reference_fournisseur,
code_cip,
code_cahpp,
unite_approvisionnement_id,
nombre_conditionnement_approvisionnement,
prix_unitaire_en_cours,
est_fournisseur_principal,
fournisseur_distributeur_id,
ucd_id,
lpp_id,
code_ucd13
)
SELECT
src.oid + [IPX],
'[TPX]' || src.code_original,
CASE WHEN src.article_id > 0 THEN src.article_id + [IPX] ELSE 0 END,
CASE WHEN src.fournisseur_id > 0 THEN src.fournisseur_id + [IPX] ELSE 0 END,
src.code_reference_fournisseur,
src.texte_reference_fournisseur,
src.code_cip,
src.code_cahpp,
CASE WHEN src.unite_approvisionnement_id > 0 THEN src.unite_approvisionnement_id + [IPX] ELSE 0 END,
src.nombre_conditionnement_approvisionnement,
src.prix_unitaire_en_cours,
src.est_fournisseur_principal,
CASE WHEN src.fournisseur_distributeur_id > 0 THEN src.fournisseur_distributeur_id + [IPX] ELSE 0 END,
src.ucd_id,
src.lpp_id,
src.code_ucd13
FROM eco_src.t_article_fournisseur src
LEFT JOIN eco.t_article_fournisseur cible ON src.oid + [IPX] = cible.oid
WHERE cible.oid IS NULL AND src.oid != 0
ORDER BY 1
;
UPDATE eco.t_article_fournisseur cible SET
code_original = '[TPX]'::text || src.code_original,
article_id = CASE WHEN src.article_id > 0 THEN src.article_id + [IPX] ELSE 0 END,
fournisseur_id = CASE WHEN src.fournisseur_id > 0 THEN src.fournisseur_id + [IPX] ELSE 0 END,
code_reference_fournisseur = src.code_reference_fournisseur,
texte_reference_fournisseur = src.texte_reference_fournisseur,
code_cip = src.code_cip,
code_cahpp = src.code_cahpp,
unite_approvisionnement_id = CASE WHEN src.unite_approvisionnement_id > 0 THEN src.unite_approvisionnement_id + [IPX] ELSE 0 END,
nombre_conditionnement_approvisionnement = src.nombre_conditionnement_approvisionnement,
prix_unitaire_en_cours = src.prix_unitaire_en_cours,
est_fournisseur_principal = src.est_fournisseur_principal,
fournisseur_distributeur_id = CASE WHEN src.fournisseur_distributeur_id > 0 THEN src.fournisseur_distributeur_id + [IPX] ELSE 0 END,
ucd_id = src.ucd_id,
lpp_id = src.lpp_id,
code_ucd13 = src.code_ucd13
FROM eco_src.t_article_fournisseur src
WHERE src.oid + [IPX] = cible.oid AND
(
cible.code_original = '[TPX]'::text || src.code_original AND
cible.article_id IS DISTINCT FROM CASE WHEN src.article_id > 0 THEN src.article_id + [IPX] ELSE 0 END OR
cible.fournisseur_id IS DISTINCT FROM CASE WHEN src.fournisseur_id > 0 THEN src.fournisseur_id + [IPX] ELSE 0 END OR
cible.code_reference_fournisseur IS DISTINCT FROM src.code_reference_fournisseur OR
cible.texte_reference_fournisseur IS DISTINCT FROM src.texte_reference_fournisseur OR
cible.code_cip IS DISTINCT FROM src.code_cip OR
cible.code_cahpp IS DISTINCT FROM src.code_cahpp OR
cible.unite_approvisionnement_id IS DISTINCT FROM CASE WHEN src.unite_approvisionnement_id > 0 THEN src.unite_approvisionnement_id + [IPX] ELSE 0 END OR
cible.nombre_conditionnement_approvisionnement IS DISTINCT FROM src.nombre_conditionnement_approvisionnement OR
cible.prix_unitaire_en_cours IS DISTINCT FROM src.prix_unitaire_en_cours OR
cible.est_fournisseur_principal IS DISTINCT FROM src.est_fournisseur_principal OR
cible.fournisseur_distributeur_id IS DISTINCT FROM CASE WHEN src.fournisseur_distributeur_id > 0 THEN src.fournisseur_distributeur_id + [IPX] ELSE 0 END OR
cible.ucd_id IS DISTINCT FROM src.ucd_id OR
cible.lpp_id IS DISTINCT FROM src.lpp_id OR
cible.code_ucd13 IS DISTINCT FROM src.code_ucd13
)
;
]]>
fp('end')::date - interval '1 day';
DELETE FROM eco.p_chiffrier_production WHERE provider_id = fp('provider') AND substr(mois,1,4)||'-'||substr(mois,5,2)||'-01' NOT BETWEEN fp('str')::date and fp('end')::date - interval '1 day';
]]>
0
FROM base.t_finess
WHERE 1=1
AND code = '440002020'
;
]]>