You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

279 lines
9.7 KiB

TRUNCATE eco.p_commandes;
INSERT INTO eco.p_commandes(
code_original,
numero,
date_commande,
objet,
reference,
date_livraison_prevue,
etat_reception,
date_reception,
etat_liquidation,
fournisseur_id,
gestionnaire_id,
lieu_commande_id,
lieu_facturation_id,
lieu_livraison_id,
unite_fonctionnelle_id,
montant_commande_ht,
montant_commande_remise,
montant_commande_tva,
montant_commande_port,
montant_commande_total,
montant_liquidation_ht,
montant_liquidation_remise,
montant_liquidation_tva,
montant_liquidation_port,
montant_liquidation_total)
SELECT
FUNCDE,
trim(to_char(FUNCDE,'000000')) AS numero,
eco.cti_to_date(FUSCRE, FUACRE, FUMCRE, FUJCRE) AS date_commande,
trim(FUOBFU) AS objet,
trim(FUREFC) AS reference,
eco.cti_to_date(FUSLIP, FUALIP, FUMLIP, FUJLIP) AS date_livraison_prevue,
CASE WHEN FUTOP4 = '1' THEN 'T' ELSE 'N' END AS etat_reception,
eco.cti_to_date(FUSLIV, FUALIV, FUMLIV, FUJLIV) AS date_reception,
CASE WHEN FUTOP5 = '1' THEN 'T' ELSE 'N' END AS etat_liquidation,
COALESCE(t_fournisseurs.oid,0) AS fournisseur_id,
COALESCE(t_gestionnaires.oid,0) AS gestionnaire_id,
COALESCE(t_lieux_commande.oid,0) AS lieu_commande_id,
COALESCE(t_lieux_facturation.oid,0) AS lieu_facturation_id,
COALESCE(t_lieux_livraison.oid,0) AS lieu_livraison_id,
COALESCE(t_unites_fonctionnelles.oid,0)AS unite_fonctionnelle_id,
FUMHTC AS montant_commande_ht,
FUMREC AS montant_commande_remise,
FUMTVC AS montant_commande_tva,
FUMPOC AS montant_commande_port,
FUMTCC AS montant_commande_total,
FUMHTL AS montant_liquidation_ht,
FUMREL AS montant_liquidation_remise,
FUMTVL AS montant_liquidation_tva,
FUMPOL AS montant_liquidation_port,
FUMTCL AS montant_liquidation_total
FROM prod_shs.pigefi180_FUP01
LEFT JOIN eco.t_fournisseurs ON FUIUFN = t_fournisseurs.code_original
LEFT JOIN eco.t_gestionnaires ON FUKGEC = t_gestionnaires.code_original
LEFT JOIN eco.t_lieux t_lieux_commande ON FULFAC = t_lieux_commande.code_original
LEFT JOIN eco.t_lieux t_lieux_facturation ON FULFAC = t_lieux_facturation.code_original
LEFT JOIN eco.t_lieux t_lieux_livraison ON FULLIV = t_lieux_livraison.code_original
LEFT JOIN eco.t_unites_fonctionnelles ON CASE WHEN FUIUU2 <> '' THEN FUIUU2 ELSE FUIUU1 END = t_unites_fonctionnelles.code_original
WHERE FUSCRE = 20 and FUACRE BETWEEN 08 AND 20 AND FUCANN = '';
select * from eco.p_commandes
limit 100
TRUNCATE eco.p_lignes_commandes;
INSERT INTO eco.p_lignes_commandes(
code_original,
commande_id,
ligne_commande,
texte,
article_id,
unite_approvisionnement_id,
compte_id,
quantite_approvisionnement,
prix_unitaire_approvisionnement,
multiplicateur_stockage,
quantite_stockage,
prix_unitaire_stockage,
montant_commande_ht,
montant_commande_remise,
montant_commande_tva,
montant_commande_port,
montant_commande_ttc,
quantite_livraison_approvisionnement,
quantite_livraison_stockage,
montant_livraison_ht,
montant_livraison_ttc,
etat_livraison,
montant_liquidation_ht,
montant_liquidation_remise,
montant_liquidation_tva,
montant_liquidation_port,
montant_liquidation_ttc,
etat_liquidation)
SELECT
FVNCDE || '|' || FVLICD AS code_original,
p_commandes.oid AS commande_id,
FVLICD AS ligne_commande,
trim(FVLIA1 || ' ' || FVLIA2) AS texte,
t_articles.oid AS article_id,
COALESCE(t_unites.oid,t_articles.unite_stockage_id) AS unite_approvisionnement_id,
0 AS compte_id,
FVQCD1 AS quantite_approvisionnement,
FVPUN1 AS prix_unitaire_approvisionnement,
FVUSUA AS multiplicateur_stockage,
FVQCD2 AS quantite_stockage,
FVPUN2 AS prix_unitaire_stockage,
FVMHT1 AS montant_commande_ht,
FVMRE1 AS montant_commande_remise,
FVMTV1 AS montant_commande_tva,
FVMPO1 AS montant_commande_port,
FVMTC1 AS montant_commande_ttc,
FVQRE1 AS quantite_livraison_approvisionnement,
FVQRE1 AS quantite_livraison_stockage,
CASE WHEN FVQRE1 = FVQCD1 THEN FVMHT1 WHEN FVQCD1 = 0 THEN 0 ELSE FVMHT1 / FVQCD1 * FVQRE1 END AS montant_livraison_ht,
CASE WHEN FVQRE1 = FVQCD1 THEN FVMTC1 WHEN FVQCD1 = 0 THEN 0 ELSE FVMTC1 / FVQCD1 * FVQRE1 END AS montant_livraison_ht,
CASE WHEN FVQRE1 = FVQCD1 THEN 'T' WHEN FVQRE1 > FVQCD1 THEN 'S' WHEN FVQRE1 = 0 THEN 'N' ELSE 'P' END AS etat_livraison,
CASE WHEN FVTOP3 = '1' THEN FVMHT1 ELSE 0 END AS montant_liquidation_ht,
CASE WHEN FVTOP3 = '1' THEN FVMRE1 ELSE 0 END AS montant_liquidation_remise,
CASE WHEN FVTOP3 = '1' THEN FVMTV1 ELSE 0 END AS montant_liquidation_tva,
CASE WHEN FVTOP3 = '1' THEN FVMPO1 ELSE 0 END AS montant_liquidation_port,
CASE WHEN FVTOP3 = '1' THEN FVMTC1 ELSE 0 END AS montant_liquidation_ttc,
FVTOP3 AS etat_liquidation
FROM prod_shs.pigefi180_FVP01
JOIN prod_shs.pigefi180_FUP01 on FVNCDE = FUNCDE
JOIN eco.p_commandes ON FVNCDE = p_commandes.code_original
JOIN eco.t_articles ON FVIUAR = t_articles.code_original
LEFT JOIN eco.t_unites ON FVKUAP = t_unites.code_original
WHERE FUSCRE = 20 and FUACRE BETWEEN 08 AND 20 AND FUCANN = '' AND FVCANN = ''
TRUNCATE eco.t_profils_comptables;
INSERT INTO eco.t_profils_comptables
(code_original,
centre_responsabilite_id,
unite_fonctionnelle_id)
SELECT
SYIUCR || '|' || SYIUUF AS code_original,
COALESCE(t_centres_responsabilites.oid,0) AS centre_responsabilite_id,
COALESCE(t_unites_fonctionnelles.oid,0) AS unite_fonctionnelle_id
FROM prod_shs.pigefi180_syp01
LEFT JOIN eco.t_centres_responsabilites ON SYIUCR = t_centres_responsabilites.code_original
LEFT JOIN eco.t_unites_fonctionnelles ON SYIUUF = t_unites_fonctionnelles.code_original
GROUP BY 1,2,3;
UPDATE eco.t_profils_comptables SET
centre_responsabilite_code = t_centres_responsabilites.code,
centre_responsabilite_texte = t_centres_responsabilites.texte_court,
centre_responsabilite_section_id = t_centres_responsabilites.section_id,
centre_responsabilite_section_code = t_centres_responsabilites.section_code,
centre_responsabilite_section_texte = t_centres_responsabilites.section_texte,
unite_fonctionnelle_code = t_unites_fonctionnelles.code,
unite_fonctionnelle_texte = t_unites_fonctionnelles.texte_court,
unite_fonctionnelle_section_id = t_unites_fonctionnelles.section_id,
unite_fonctionnelle_section_code = t_unites_fonctionnelles.section_code,
unite_fonctionnelle_section_texte = t_unites_fonctionnelles.section_texte
FROM
eco.t_centres_responsabilites,
eco.t_unites_fonctionnelles
WHERE centre_responsabilite_id = t_centres_responsabilites.oid
AND unite_fonctionnelle_id = t_unites_fonctionnelles.oid
AND (
centre_responsabilite_code IS DISTINCT FROM t_centres_responsabilites.code OR
centre_responsabilite_texte IS DISTINCT FROM t_centres_responsabilites.texte_court OR
centre_responsabilite_section_id IS DISTINCT FROM t_centres_responsabilites.section_id OR
centre_responsabilite_section_code IS DISTINCT FROM t_centres_responsabilites.section_code OR
centre_responsabilite_section_texte IS DISTINCT FROM t_centres_responsabilites.section_texte OR
unite_fonctionnelle_code IS DISTINCT FROM t_unites_fonctionnelles.code OR
unite_fonctionnelle_texte IS DISTINCT FROM t_unites_fonctionnelles.texte_court OR
unite_fonctionnelle_section_id IS DISTINCT FROM t_unites_fonctionnelles.section_id OR
unite_fonctionnelle_section_code IS DISTINCT FROM t_unites_fonctionnelles.section_code OR
unite_fonctionnelle_section_texte IS DISTINCT FROM t_unites_fonctionnelles.section_texte
);
TRUNCATE eco.p_mouvements_articles;
INSERT INTO eco.p_mouvements_articles(
date,
sens_mouvement,
type_mouvement_id,
texte,
gestionnaire_id,
lieu_id,
profil_comptable_id,
article_id,
fournisseur_id,
commande_id,
ligne_commande,
prix_unitaire,
entree_quantite,
sortie_quantite,
entree_montant,
sortie_montant,
stock_quantite_debut,
stock_quantite_fin)
SELECT
eco.cti_to_date(SYSIEC, SYANNE, SYMOIS, SYJOUR) AS date,
CASE WHEN SYKNMV = 'E' OR (SYKNMV = 'T' AND SYKCMV = 'TE') THEN 'E' ELSE 'S' END AS sens_mouvement,
COALESCE(t_types_mouvements.oid,0) AS type_mouvement_id,
TRIM(SYLI25) AS texte,
COALESCE(t_gestionnaires.oid,0) AS gestionnaire_id,
COALESCE(t_lieux.oid,0) AS lieu_id,
COALESCE(t_profils_comptables.oid,0) AS profil_comptable,
COALESCE(t_articles.oid,0) AS article_id,
COALESCE(t_fournisseurs.oid,0) AS fournisseur_id,
COALESCE(p_commandes.oid,0) AS commande_id,
SYLICD AS ligne_commande,
SYPRMV AS prix_unitaire,
CASE WHEN SYKNMV = 'E' OR (SYKNMV = 'T' AND SYKCMV = 'TE') THEN SYQMVT ELSE 0 END AS entree_quantite,
CASE WHEN SYKNMV = 'S' OR (SYKNMV = 'T' AND SYKCMV = 'TS') THEN SYQMVT ELSE 0 END AS sortie_quantite,
CASE WHEN SYKNMV = 'E' OR (SYKNMV = 'T' AND SYKCMV = 'TE') THEN SYQMVT * SYPRMV ELSE 0 END AS entree_montant,
CASE WHEN SYKNMV = 'S' OR (SYKNMV = 'T' AND SYKCMV = 'TS') THEN SYQMVT * SYPRMV ELSE 0 END AS sortie_montant,
0 AS stock_quantite_debut,
0 AS stock_quantite_fin
FROM prod_shs.pigefi180_syp01
LEFT JOIN prod_shs.pigefi180_AFP01 ON SYIUAF = AFIUAF
LEFT JOIN prod_shs.pigefi180_FUP01 ON SYNCDE = FUNCDE
LEFT JOIN eco.t_types_mouvements ON SYKCMV = t_types_mouvements.code_original
LEFT JOIN eco.t_gestionnaires ON SYKGEC = t_gestionnaires.code_original
LEFT JOIN eco.t_lieux ON SYLIEU = t_lieux.code_original
LEFT JOIN eco.t_profils_comptables ON SYIUCR || '|' || SYIUUF = t_profils_comptables.code_original
LEFT JOIN eco.t_articles ON SYIUAR = t_articles.code_original
LEFT JOIN eco.t_fournisseurs ON CASE WHEN FUIUFN <> '' THEN AFIUFN WHEN AFIUFN <> '' THEN AFIUFN ELSE SYIUFN END = t_fournisseurs.code_original
LEFT JOIN eco.p_commandes ON SYNCDE = p_commandes.code_original
WHERE sysiec = 20 and syanne BETWEEN 08 AND 20 AND SYCANN = ''
ORDER BY SYNMVT;
select * from eco.p_mouvements_articles limit 1000
TRUNCATE eco.p_chiffrier_production;
INSERT INTO eco.p_chiffrier_production (mois)
SELECT extract('year' FROM date) * 100 + extract('month' FROM date)
FROM eco.p_mouvements_articles
GROUP BY 1;
select * FROM eco.p_mouvements_articles order by article_id, date
limit 1000