| @ -0,0 +1,67 @@ | |||
| TRUNCATE econom.p_commandes; | |||
| INSERT INTO econom.p_commandes( | |||
| numero, | |||
| date_commande, | |||
| objet, | |||
| reference, | |||
| date_livraison_prevue, | |||
| etat_reception, | |||
| date_reception, | |||
| etat_liquidation, | |||
| fournisseur_id, | |||
| gestionnaire_id, | |||
| lieu_facturation_id, | |||
| lieu_livraison_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 | |||
| trim(to_char(FUNCDE,'000000')) AS numero, | |||
| econom.cti_to_date(FUSCRE, FUACRE, FUMCRE, FUJCRE) AS date_commande, | |||
| trim(FUOBFU) AS objet, | |||
| trim(FUREFC) AS reference, | |||
| econom.cti_to_date(FUSLIP, FUALIP, FUMLIP, FUJLIP) AS date_livraison_prevue, | |||
| CASE WHEN FUTOP4 = '1' THEN 'T' ELSE 'N' END AS etat_reception, | |||
| econom.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_facturation.oid,0) AS lieu_facturation_id, | |||
| COALESCE(t_lieux_livraison.oid,0) AS lieu_livraison_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 econom.t_fournisseurs ON FUIUFN = t_fournisseurs.code_original | |||
| LEFT JOIN econom.t_gestionnaires ON FUKGEC = t_gestionnaires.code_original | |||
| LEFT JOIN econom.t_lieux t_lieux_facturation ON FULFAC = t_lieux_facturation.code_original | |||
| LEFT JOIN econom.t_lieux t_lieux_livraison ON FULLIV = t_lieux_livraison.code_original | |||
| WHERE FUSCRE = 20 and FUACRE BETWEEN 08 AND 20 | |||
| select * FROM econom.p_commandes order by article_id, date | |||
| limit 1000 | |||
| @ -0,0 +1,70 @@ | |||
| -- 1/3 : Création de la table temporaire | |||
| DROP TABLE IF EXISTS w_dbsetup | |||
| ; | |||
| CREATE TEMP TABLE w_dbsetup AS | |||
| SELECT | |||
| t_classes.oid, | |||
| t_classes.code, | |||
| t_classes.texte, | |||
| t_classes.is_cti, | |||
| t_classes.sequence, | |||
| CASE WHEN NOT (t_classes.sequence = 30 AND t_listes_tables.code = (SELECT valeur FROM eco.t_divers WHERE code = 'CLE_REPARTITION')) THEN t_listes_tables.code ELSE 'TYA' END as table_code | |||
| FROM | |||
| eco.t_classes, | |||
| eco.t_listes_tables | |||
| WHERE 1=1 | |||
| AND (is_cti = '1' OR (t_classes.code ilike 'CTI_%' AND t_classes.code NOT IN ('CTI_CPTLETBUD','CTI_CPTVOTE','CTI_CPTRCV','CTI_UFCR','CTI_UFUM','CTI_UFSERS','CTI_UFSITE'))) | |||
| AND table_id = t_listes_tables.oid | |||
| ORDER BY t_classes.code LIMIT 0 | |||
| ; | |||
| -- 2/3 : Peuplement de la table temporaire | |||
| INSERT INTO w_dbsetup( | |||
| oid, | |||
| code, | |||
| texte, | |||
| is_cti, | |||
| sequence, | |||
| table_code | |||
| ) | |||
| VALUES | |||
| (1, 'CTI_CLE_REP', 'Clef de répartition CTI', '0', 30, 'TYA'), | |||
| (1, 'CTI_ESS_ART80', 'Lstes des articles répartis représentant 80% des stocks en montant', '1', 1, 'ART'), | |||
| (1, 'CTI_TYPMVT', 'Types de mouvements CTI', '0', 1, 'TYM') | |||
| ; | |||
| -- 3/3 : Màj de la table iCTI | |||
| UPDATE eco.t_classes SET | |||
| code = w_dbsetup.code, | |||
| texte = w_dbsetup.texte, | |||
| table_id = t_listes_tables.oid, | |||
| is_cti = w_dbsetup.is_cti | |||
| FROM | |||
| w_dbsetup, | |||
| eco.t_listes_tables | |||
| WHERE | |||
| w_dbsetup.table_code = t_listes_tables.code | |||
| AND t_classes.sequence = w_dbsetup.sequence | |||
| AND t_classes.table_id = t_listes_tables.oid ; | |||
| INSERT INTO eco.t_classes(code, texte, table_id, is_cti, sequence) | |||
| SELECT | |||
| w_dbsetup.code, | |||
| w_dbsetup.texte, | |||
| t_listes_tables.oid, | |||
| w_dbsetup.is_cti, | |||
| w_dbsetup.sequence | |||
| FROM | |||
| w_dbsetup, | |||
| eco.t_listes_tables | |||
| WHERE | |||
| w_dbsetup.table_code = t_listes_tables.code | |||
| AND t_listes_tables.oid::text || '-' || w_dbsetup.sequence::text NOT IN (SELECT table_id::text || '-' || sequence::text FROM eco.t_classes) AND w_dbsetup.texte NOT LIKE '*SUPPRIME%' | |||
| AND NOT ( | |||
| -- pour la classe de cle de répartition | |||
| w_dbsetup.code = 'CTI_CLE_REP' | |||
| -- la valeur de la cle est initialisée | |||
| AND (SELECT code FROM eco.t_classes WHERE code = 'CTI_CLE_REP') IS NOT NULL | |||
| ) | |||
| @ -0,0 +1,120 @@ | |||
| -- 1/3 : Création de la table temporaire | |||
| DROP TABLE IF EXISTS w_dbsetup | |||
| ; | |||
| CREATE TEMP TABLE w_dbsetup AS | |||
| SELECT | |||
| t_classes_sections.oid, | |||
| t_classes_sections.code, | |||
| t_classes_sections.texte, | |||
| t_classes_sections.condition, | |||
| t_classes_sections.include_code, | |||
| t_classes_sections.exclude_code, | |||
| CASE WHEN NOT (t_classes.sequence != 30 AND t_listes_tables.code = (SELECT valeur FROM eco.t_divers WHERE code = 'CLE_REPARTITION')) THEN t_listes_tables.code ELSE 'TYA' END as table_code, | |||
| t_classes.sequence as classe_sequence | |||
| FROM | |||
| eco.t_classes_sections, | |||
| eco.t_classes, | |||
| eco.t_listes_tables | |||
| WHERE 1=1 | |||
| AND t_classes_sections.classe_id = t_classes.oid | |||
| AND table_id = t_listes_tables.oid | |||
| AND (t_classes.is_cti = '1' OR (t_classes.code ilike 'CTI_%' AND t_classes.code NOT IN ('CTI_CPTLETBUD','CTI_CPTVOTE','CTI_CPTRCV','CTI_UFCR','CTI_UFUM','CTI_UFSERS','CTI_UFSITE'))) | |||
| ORDER BY | |||
| t_listes_tables.code, | |||
| t_classes.sequence, | |||
| t_classes_sections.code LIMIT 0 | |||
| ; | |||
| -- 2/3 : Peuplement de la table temporaire | |||
| INSERT INTO w_dbsetup( | |||
| oid, | |||
| code, | |||
| texte, | |||
| condition, | |||
| include_code, | |||
| exclude_code, | |||
| table_code, | |||
| classe_sequence | |||
| ) | |||
| VALUES | |||
| (1, 'ATE', 'Atelier', '', '0', '0', 'TYA', 30), | |||
| (1, 'CUI', 'Cuisine', '', '0', '0', 'TYA', 30), | |||
| (1, 'DM', 'Dispositifs Médicaux', '', '0', '0', 'TYA', 30), | |||
| (1, 'DMI', 'Dispositifs Médicaux Implantables', '', '0', '0', 'TYA', 30), | |||
| (1, 'ECO', 'Economat', '', '0', '0', 'TYA', 30), | |||
| (1, 'LIN', 'Lingerie', '', '0', '0', 'TYA', 30), | |||
| (1, 'MED', 'Médicaments', '', '0', '0', 'TYA', 30), | |||
| (1, 'PAR', 'Parapharmacie', '', '0', '0', 'TYA', 30), | |||
| (1, '00', 'Livraison', '', '', '', 'TYM', 1), | |||
| (1, '01', 'Consommations', '', '', '', 'TYM', 1), | |||
| (1, '02', 'Pertes', '', '', '', 'TYM', 1), | |||
| (1, '99', 'Autres', '', '', '', 'TYM', 1), | |||
| (1, '11', 'Régularisation livraison', '', '', '', 'TYM', 1), | |||
| (1, '12', 'Retour', '', '', '', 'TYM', 1), | |||
| (1, '13', 'Avoir', '', '', '', 'TYM', 1), | |||
| (1, '30', 'Régularisation inventaire', '', '', '', 'TYM', 1) | |||
| ; | |||
| -- 3/3 : Màj de la table iCTI | |||
| -- Sections à supprimer -> Sections CTI non-livrées | |||
| DROP TABLE IF EXISTS w_del_sections | |||
| ; | |||
| CREATE TEMP TABLE w_del_sections as ( | |||
| SELECT oid FROM eco.t_classes_sections | |||
| WHERE classe_id IN ( | |||
| SELECT | |||
| t_classes.oid | |||
| FROM eco.t_classes | |||
| LEFT JOIN w_dbsetup ON w_dbsetup.code = t_classes_sections.code | |||
| WHERE 1=1 | |||
| AND is_cti = '1' | |||
| AND w_dbsetup.code IS NULL | |||
| ) | |||
| ); | |||
| DELETE FROM eco.t_classes_sections_elements | |||
| WHERE section_id IN (SELECT oid FROM w_del_sections); | |||
| DELETE FROM eco.t_classes_sections | |||
| WHERE oid IN (SELECT oid FROM w_del_sections); | |||
| UPDATE eco.t_classes_sections SET | |||
| texte = w_dbsetup.texte, | |||
| condition = w_dbsetup.condition, | |||
| exclude_code = w_dbsetup.exclude_code, | |||
| include_code = w_dbsetup.include_code | |||
| FROM w_dbsetup, eco.t_classes, eco.t_listes_tables | |||
| WHERE t_classes.oid = t_classes_sections.classe_id | |||
| AND t_listes_tables.oid = t_classes.table_id | |||
| AND w_dbsetup.code||'@'||w_dbsetup.classe_sequence||'@'||w_dbsetup.table_code = t_classes_sections.code||'@'||t_classes.sequence||'@'||t_listes_tables.code | |||
| AND ( | |||
| t_classes_sections.texte IS DISTINCT FROM w_dbsetup.texte | |||
| OR t_classes_sections.condition IS DISTINCT FROM w_dbsetup.condition | |||
| OR t_classes_sections.exclude_code IS DISTINCT FROM w_dbsetup.exclude_code | |||
| OR t_classes_sections.include_code IS DISTINCT FROM w_dbsetup.include_code | |||
| ); | |||
| INSERT INTO eco.t_classes_sections(code, texte, classe_id, include_code, exclude_code) | |||
| SELECT | |||
| w_dbsetup.code, | |||
| w_dbsetup.texte, | |||
| t_classes.oid, | |||
| w_dbsetup.include_code, | |||
| w_dbsetup.exclude_code | |||
| FROM | |||
| w_dbsetup | |||
| JOIN eco.t_listes_tables ON (w_dbsetup.table_code = t_listes_tables.code | |||
| -- ou s'il s'agit de la classe des cles | |||
| OR (classe_sequence = 30 AND t_listes_tables.code = (SELECT t_listes_tables.code FROM eco.t_listes_tables JOIN eco.t_classes ON t_classes.code = 'CTI_CLE_REP' AND table_id = t_listes_tables.oid))) | |||
| JOIN eco.t_classes ON 1=1 | |||
| AND t_classes.table_id = t_listes_tables.oid | |||
| AND t_classes.sequence = w_dbsetup.classe_sequence | |||
| WHERE w_dbsetup.code||'@'||w_dbsetup.classe_sequence||'@'|| CASE WHEN w_dbsetup.classe_sequence != 30 THEN w_dbsetup.table_code ELSE (SELECT valeur FROM eco.t_divers WHERE code = 'CLE_REPARTITION') END | |||
| NOT IN ( | |||
| SELECT t_classes_sections.code||'@'||t_classes.sequence||'@'||CASE WHEN w_dbsetup.classe_sequence != 30 THEN t_listes_tables.code ELSE (SELECT valeur FROM eco.t_divers WHERE code = 'CLE_REPARTITION') END | |||
| FROM eco.t_classes_sections | |||
| JOIN eco.t_classes ON t_classes.oid = t_classes_sections.classe_id | |||
| JOIN eco.t_listes_tables ON t_listes_tables.oid = t_classes.table_id) | |||
| ; | |||
| @ -0,0 +1,47 @@ | |||
| -- 1/3 : Création de la table temporaire | |||
| DROP TABLE IF EXISTS w_dbsetup | |||
| ; | |||
| CREATE TEMP TABLE w_dbsetup AS | |||
| SELECT | |||
| t_divers.code, | |||
| t_divers.texte, | |||
| t_divers.valeur, | |||
| t_divers.valeur_date::text, | |||
| t_divers.description | |||
| FROM | |||
| eco.t_divers | |||
| WHERE t_divers.code IN ('CLE_REPARTITION', 'UPDATE PMSI') | |||
| ORDER BY code LIMIT 0 | |||
| ; | |||
| -- 2/3 : Peuplement de la table temporaire | |||
| INSERT INTO w_dbsetup( | |||
| code, | |||
| texte, | |||
| valeur, | |||
| valeur_date, | |||
| description | |||
| ) | |||
| VALUES | |||
| ('CLE_REPARTITION', 'Code de la table à utiliser pour créer la classe utilisée comme clé de répartition', 'TYA', '1970-01-01', 'TYA (type d''articles, défaut), ART (articles), CAA (cétgories articles), CPT (compte), FAA (familles articles), LIE (lieu)'), | |||
| ('UPDATE PMSI', 'Mise à jour des données PMSI à partir des données Gestion Economique', '0', '1970-01-01', '0: Désactivé 1: Activé') | |||
| ; | |||
| -- 3/3 : Màj de la table iCTI | |||
| -- Mise à jour des données | |||
| INSERT INTO eco.t_divers( | |||
| code, | |||
| texte, | |||
| valeur, | |||
| valeur_date, | |||
| description | |||
| ) | |||
| SELECT | |||
| code, | |||
| texte, | |||
| valeur, | |||
| CASE WHEN valeur_date = '' THEN NULL::date ELSE valeur_date::date END AS valeur_date, | |||
| description | |||
| FROM w_dbsetup | |||
| WHERE code NOT IN (SELECT code FROM eco.t_divers) | |||
| @ -0,0 +1,83 @@ | |||
| -- 1/3 : Création de la table temporaire | |||
| DROP TABLE IF EXISTS w_dbsetup | |||
| ; | |||
| CREATE TEMP TABLE w_dbsetup AS | |||
| SELECT | |||
| t_indicateur_theme.oid, | |||
| t_indicateur_theme.code, | |||
| t_indicateur_theme.texte, | |||
| t_indicateur_theme.level, | |||
| COALESCE(t_indicateur_parent_theme.code,'') AS parent_code | |||
| FROM eco.t_indicateur_theme | |||
| LEFT JOIN eco.t_indicateur_theme t_indicateur_parent_theme ON t_indicateur_theme.parent_id = t_indicateur_parent_theme.oid | |||
| ORDER BY 2 LIMIT 0 | |||
| ; | |||
| -- 2/3 : Peuplement de la table temporaire | |||
| INSERT INTO w_dbsetup( | |||
| oid, | |||
| code, | |||
| texte, | |||
| level, | |||
| parent_code | |||
| ) | |||
| VALUES | |||
| (1, '--0', 'Source', 1, ''), | |||
| (1, '--1', 'Thèmes principaux', 1, ''), | |||
| (1, '--2', 'Période', 1, ''), | |||
| (1, '--3', 'Rapports', 1, ''), | |||
| (1, '--4', 'Type de donnée', 1, ''), | |||
| (1, '--DDATE', 'Date date', 2, '--2'), | |||
| (1, '--DDATE_COMMANDE', 'Date date_commande', 2, '--2'), | |||
| (1, '--DDATE_ENGAGEMENT', 'Date date_engagement', 2, '--2'), | |||
| (1, '--DDATE_FIN', 'Date date_fin', 2, '--2'), | |||
| (1, '--R1', 'Rapports CTI', 2, '--3'), | |||
| (1, '--R10002', 'Essentiels CTI', 3, '--R1'), | |||
| (1, '--R10003', 'Dispositifs Médicaux', 3, '--R1'), | |||
| (1, '--R10004', 'Dispostifs Médicaux Implantables', 3, '--R1'), | |||
| (1, '--R10005', 'Médicaments', 3, '--R1'), | |||
| (1, '--R10006', 'Parapharmacie', 3, '--R1'), | |||
| (1, '--R10007', 'Economat', 3, '--R1'), | |||
| (1, '--R10008', 'Cuisine', 3, '--R1'), | |||
| (1, '--R10009', 'Lingerie', 3, '--R1'), | |||
| (1, '--R10010', 'Atelier', 3, '--R1'), | |||
| (1, '--R3', 'Rapports Etablissement', 2, '--3'), | |||
| (1, '--R30011', 'CTI Portfolio ', 3, '--R3'), | |||
| (1, '--S1', 'Indicateurs CTI', 2, '--0'), | |||
| (1, '--S2', 'Indicateurs Groupe', 2, '--0'), | |||
| (1, '--S3', 'Indicateurs spécifiques Etablissement', 2, '--0'), | |||
| (1, '--T0010', 'Mouvements', 2, '--1'), | |||
| (1, '--T0020', 'Commandes', 2, '--1'), | |||
| (1, '--T0030', 'Stocks mensuels', 2, '--1'), | |||
| (1, '1QTE', 'Quantité', 2, '--4'), | |||
| (1, '2MNT', 'Montants', 2, '--4'), | |||
| (1, '3DUR', 'Durées', 2, '--4'), | |||
| (1, '4TAUX', 'Taux', 2, '--4'), | |||
| (1, '5STOCK', 'Stocks', 2, '--4') | |||
| ; | |||
| -- 3/3 : Màj de la table iCTI | |||
| INSERT INTO eco.t_indicateur_theme (code, texte, level) | |||
| SELECT code, texte, level | |||
| FROM w_dbsetup | |||
| WHERE code NOT IN (SELECT code FROM eco.t_indicateur_theme WHERE t_indicateur_theme.code IS NOT NULL) | |||
| ; | |||
| UPDATE eco.t_indicateur_theme SET | |||
| texte = w_dbsetup.texte, | |||
| level = w_dbsetup.level, | |||
| parent_id = COALESCE(t_indicateur_parent_theme.oid,0) | |||
| FROM w_dbsetup | |||
| LEFT JOIN eco.t_indicateur_theme t_indicateur_parent_theme ON w_dbsetup.parent_code = t_indicateur_parent_theme.code | |||
| WHERE t_indicateur_theme.code = w_dbsetup.code AND | |||
| ( | |||
| t_indicateur_theme.texte IS DISTINCT FROM w_dbsetup.texte OR | |||
| t_indicateur_theme.level IS DISTINCT FROM w_dbsetup.level OR | |||
| t_indicateur_theme.parent_id IS DISTINCT FROM COALESCE(t_indicateur_parent_theme.oid,0) | |||
| ) | |||
| ; | |||
| SELECT base.cti_reorganize_indicateur_theme('eco') | |||
| ; | |||
| @ -0,0 +1,489 @@ | |||
| -- 1/3 : Création de la table temporaire | |||
| DROP TABLE IF EXISTS w_dbsetup | |||
| ; | |||
| CREATE TEMP TABLE w_dbsetup AS | |||
| SELECT t_indicateurs.oid, | |||
| t_indicateurs.texte, | |||
| t_indicateurs.table_name, | |||
| t_indicateurs.column_name, | |||
| t_indicateurs.is_cti, | |||
| t_indicateurs.entete, | |||
| t_indicateurs.code, | |||
| t_indicateurs.total_function, | |||
| t_indicateurs.output_format, | |||
| t_indicateurs.width, | |||
| t_indicateurs.entete_etendue, | |||
| t_indicateurs.dimension_date_1, | |||
| t_indicateurs.dimension_date_2, | |||
| t_indicateurs.dimension_date_3, | |||
| t_indicateurs.dimension_date_4, | |||
| t_indicateurs.dimension_date_5, | |||
| t_indicateurs.dimension_date, | |||
| t_indicateurs_1.code as indicateur_associe_1_code, | |||
| t_indicateurs_2.code as indicateur_associe_2_code, | |||
| t_indicateurs_3.code as indicateur_associe_3_code, | |||
| t_indicateurs_4.code as indicateur_associe_4_code, | |||
| t_indicateurs_5.code as indicateur_associe_5_code, | |||
| t_indicateurs_6.code as indicateur_associe_6_code, | |||
| t_indicateurs_7.code as indicateur_associe_7_code, | |||
| t_indicateurs_8.code as indicateur_associe_8_code, | |||
| t_indicateurs_9.code as indicateur_associe_9_code, | |||
| t_indicateurs_10.code as indicateur_associe_10_code, | |||
| t_indicateurs_11.code as indicateur_associe_11_code, | |||
| t_indicateurs_12.code as indicateur_associe_12_code, | |||
| t_indicateurs_13.code as indicateur_associe_13_code, | |||
| t_indicateurs_14.code as indicateur_associe_14_code, | |||
| t_indicateurs_15.code as indicateur_associe_15_code, | |||
| t_indicateurs_16.code as indicateur_associe_16_code, | |||
| t_indicateurs_17.code as indicateur_associe_17_code, | |||
| t_indicateurs_18.code as indicateur_associe_18_code, | |||
| t_indicateurs_19.code as indicateur_associe_19_code, | |||
| t_indicateurs_20.code as indicateur_associe_20_code, | |||
| t_indicateurs_reference.code as indicateur_reference_code, | |||
| t_indicateurs.is_template, | |||
| t_indicateurs_template.code as indicateur_template_code, | |||
| COALESCE(t_indicateurs.variable_definition[1],'') AS variable_definition_1, | |||
| COALESCE(t_indicateurs.variable_definition[2],'') AS variable_definition_2, | |||
| COALESCE(t_indicateurs.variable_definition[3],'') AS variable_definition_3, | |||
| COALESCE(t_indicateurs.variable_value[1],'') AS variable_value_1, | |||
| COALESCE(t_indicateurs.variable_value[2],'') AS variable_value_2, | |||
| COALESCE(t_indicateurs.variable_value[3],'') AS variable_value_3, | |||
| COALESCE(t_indicateurs.variable_value_text[1],'') AS variable_value_text_1, | |||
| COALESCE(t_indicateurs.variable_value_text[2],'') AS variable_value_text_2, | |||
| COALESCE(t_indicateurs.variable_value_text[3],'') AS variable_value_text_3, | |||
| t_indicateurs.description, | |||
| COALESCE(t_indicateur_theme_1.code,'') AS theme_1_code, | |||
| COALESCE(t_indicateur_theme_2.code,'') AS theme_2_code, | |||
| COALESCE(t_indicateur_theme_3.code,'') AS theme_3_code, | |||
| COALESCE(t_indicateur_theme_4.code,'') AS theme_4_code, | |||
| COALESCE(t_indicateur_theme_5.code,'') AS theme_5_code, | |||
| COALESCE(t_indicateur_theme_6.code,'') AS theme_6_code, | |||
| COALESCE(t_indicateur_theme_7.code,'') AS theme_7_code, | |||
| COALESCE(t_indicateur_theme_8.code,'') AS theme_8_code, | |||
| COALESCE(t_indicateur_theme_9.code,'') AS theme_9_code, | |||
| t_indicateurs.is_hide | |||
| FROM eco.t_indicateurs | |||
| LEFT JOIN eco.t_indicateurs t_indicateurs_1 ON (t_indicateurs.indicateur_associe_1_id = t_indicateurs_1.oid) | |||
| LEFT JOIN eco.t_indicateurs t_indicateurs_2 ON (t_indicateurs.indicateur_associe_2_id = t_indicateurs_2.oid) | |||
| LEFT JOIN eco.t_indicateurs t_indicateurs_3 ON (t_indicateurs.indicateur_associe_3_id = t_indicateurs_3.oid) | |||
| LEFT JOIN eco.t_indicateurs t_indicateurs_4 ON (t_indicateurs.indicateur_associe_4_id = t_indicateurs_4.oid) | |||
| LEFT JOIN eco.t_indicateurs t_indicateurs_5 ON (t_indicateurs.indicateur_associe_5_id = t_indicateurs_5.oid) | |||
| LEFT JOIN eco.t_indicateurs t_indicateurs_6 ON (t_indicateurs.indicateur_associe_6_id = t_indicateurs_6.oid) | |||
| LEFT JOIN eco.t_indicateurs t_indicateurs_7 ON (t_indicateurs.indicateur_associe_7_id = t_indicateurs_7.oid) | |||
| LEFT JOIN eco.t_indicateurs t_indicateurs_8 ON (t_indicateurs.indicateur_associe_8_id = t_indicateurs_8.oid) | |||
| LEFT JOIN eco.t_indicateurs t_indicateurs_9 ON (t_indicateurs.indicateur_associe_9_id = t_indicateurs_9.oid) | |||
| LEFT JOIN eco.t_indicateurs t_indicateurs_10 ON (t_indicateurs.indicateur_associe_10_id = t_indicateurs_10.oid) | |||
| LEFT JOIN eco.t_indicateurs t_indicateurs_11 ON (t_indicateurs.indicateur_associe_11_id = t_indicateurs_11.oid) | |||
| LEFT JOIN eco.t_indicateurs t_indicateurs_12 ON (t_indicateurs.indicateur_associe_12_id = t_indicateurs_12.oid) | |||
| LEFT JOIN eco.t_indicateurs t_indicateurs_13 ON (t_indicateurs.indicateur_associe_13_id = t_indicateurs_13.oid) | |||
| LEFT JOIN eco.t_indicateurs t_indicateurs_14 ON (t_indicateurs.indicateur_associe_14_id = t_indicateurs_14.oid) | |||
| LEFT JOIN eco.t_indicateurs t_indicateurs_15 ON (t_indicateurs.indicateur_associe_15_id = t_indicateurs_15.oid) | |||
| LEFT JOIN eco.t_indicateurs t_indicateurs_16 ON (t_indicateurs.indicateur_associe_16_id = t_indicateurs_16.oid) | |||
| LEFT JOIN eco.t_indicateurs t_indicateurs_17 ON (t_indicateurs.indicateur_associe_17_id = t_indicateurs_17.oid) | |||
| LEFT JOIN eco.t_indicateurs t_indicateurs_18 ON (t_indicateurs.indicateur_associe_18_id = t_indicateurs_18.oid) | |||
| LEFT JOIN eco.t_indicateurs t_indicateurs_19 ON (t_indicateurs.indicateur_associe_19_id = t_indicateurs_19.oid) | |||
| LEFT JOIN eco.t_indicateurs t_indicateurs_20 ON (t_indicateurs.indicateur_associe_20_id = t_indicateurs_20.oid) | |||
| LEFT JOIN eco.t_indicateurs t_indicateurs_reference ON (t_indicateurs.indicateur_reference_id = t_indicateurs_reference.oid) | |||
| LEFT JOIN eco.t_indicateurs t_indicateurs_template ON (t_indicateurs.indicateur_template_id = t_indicateurs_template.oid) | |||
| LEFT JOIN eco.t_indicateur_theme t_indicateur_theme_1 ON t_indicateur_theme_1.oid = t_indicateurs.theme_id[1] | |||
| LEFT JOIN eco.t_indicateur_theme t_indicateur_theme_2 ON t_indicateur_theme_2.oid = t_indicateurs.theme_id[2] | |||
| LEFT JOIN eco.t_indicateur_theme t_indicateur_theme_3 ON t_indicateur_theme_3.oid = t_indicateurs.theme_id[3] | |||
| LEFT JOIN eco.t_indicateur_theme t_indicateur_theme_4 ON t_indicateur_theme_4.oid = t_indicateurs.theme_id[4] | |||
| LEFT JOIN eco.t_indicateur_theme t_indicateur_theme_5 ON t_indicateur_theme_5.oid = t_indicateurs.theme_id[5] | |||
| LEFT JOIN eco.t_indicateur_theme t_indicateur_theme_6 ON t_indicateur_theme_6.oid = t_indicateurs.theme_id[6] | |||
| LEFT JOIN eco.t_indicateur_theme t_indicateur_theme_7 ON t_indicateur_theme_6.oid = t_indicateurs.theme_id[7] | |||
| LEFT JOIN eco.t_indicateur_theme t_indicateur_theme_8 ON t_indicateur_theme_6.oid = t_indicateurs.theme_id[8] | |||
| LEFT JOIN eco.t_indicateur_theme t_indicateur_theme_9 ON t_indicateur_theme_6.oid = t_indicateurs.theme_id[9] | |||
| WHERE 1=1 | |||
| AND t_indicateurs.is_cti = '1' | |||
| AND t_indicateurs.indicateur_reference_id = 0 | |||
| ORDER BY t_indicateurs.code | |||
| LIMIT 0 | |||
| ; | |||
| -- 2/3 : Peuplement de la table temporaire | |||
| INSERT INTO w_dbsetup( | |||
| oid, | |||
| texte, | |||
| table_name, | |||
| column_name, | |||
| is_cti, | |||
| entete, | |||
| code, | |||
| total_function, | |||
| output_format, | |||
| width, | |||
| entete_etendue, | |||
| dimension_date_1, | |||
| dimension_date_2, | |||
| dimension_date_3, | |||
| dimension_date_4, | |||
| dimension_date_5, | |||
| dimension_date, | |||
| indicateur_associe_1_code, | |||
| indicateur_associe_2_code, | |||
| indicateur_associe_3_code, | |||
| indicateur_associe_4_code, | |||
| indicateur_associe_5_code, | |||
| indicateur_associe_6_code, | |||
| indicateur_associe_7_code, | |||
| indicateur_associe_8_code, | |||
| indicateur_associe_9_code, | |||
| indicateur_associe_10_code, | |||
| indicateur_associe_11_code, | |||
| indicateur_associe_12_code, | |||
| indicateur_associe_13_code, | |||
| indicateur_associe_14_code, | |||
| indicateur_associe_15_code, | |||
| indicateur_associe_16_code, | |||
| indicateur_associe_17_code, | |||
| indicateur_associe_18_code, | |||
| indicateur_associe_19_code, | |||
| indicateur_associe_20_code, | |||
| indicateur_reference_code, | |||
| is_template, | |||
| indicateur_template_code, | |||
| variable_definition_1, | |||
| variable_definition_2, | |||
| variable_definition_3, | |||
| variable_value_1, | |||
| variable_value_2, | |||
| variable_value_3, | |||
| variable_value_text_1, | |||
| variable_value_text_2, | |||
| variable_value_text_3, | |||
| description, | |||
| theme_1_code, | |||
| theme_2_code, | |||
| theme_3_code, | |||
| theme_4_code, | |||
| theme_5_code, | |||
| theme_6_code, | |||
| theme_7_code, | |||
| theme_8_code, | |||
| theme_9_code, | |||
| is_hide | |||
| ) | |||
| VALUES | |||
| (1, 'Nombre d''articles couvrant 80% des stocks', 'V_STOCK_MENSUEL_X', 'DISTINCT CASE WHEN article_id IN ([CLASSE:CTI_ESS_ART80:[TEMPLATE_VALUE_1]]) THEN article_id ELSE null END', '1', 'Nb Art. 80% stock Qté.', 'CTI_ART80MNT', 'COUNT', '', 50, 'Nombre des articles couvrant 80% des stocks', '4', ' ', ' ', ' ', ' ', '4', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '1', '', 'Code de ventilation', '', '', '', '', '', '', '', '', 'Nombre d''articles couvrant 80% des stocks en quantité', '1QTE', '', '', '', '', '', '', '', '', '1'), | |||
| (1, 'Nombre d''articles couvrant 80% des stocks - Atelier', 'V_STOCK_MENSUEL_X', 'DISTINCT CASE WHEN article_id IN ([CLASSE:CTI_ESS_ART80:ATE]) THEN article_id ELSE null END', '1', 'Nb Art. 80% stock Qté.', 'CTI_ART80MNT#ATE', 'COUNT', '', 50, 'Nombre des articles couvrant 80% des stocks', '4', ' ', ' ', ' ', ' ', '4', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', 'CTI_ART80MNT', '', '', '', 'ATE', '', '', 'Atelier', '', '', '', '1QTE', '', '', '', '', '', '', '', '', '0'), | |||
| (1, 'Nombre d''articles couvrant 80% des stocks - Cuisine', 'V_STOCK_MENSUEL_X', 'DISTINCT CASE WHEN article_id IN ([CLASSE:CTI_ESS_ART80:CUI]) THEN article_id ELSE null END', '1', 'Nb Art. 80% stock Qté.', 'CTI_ART80MNT#CUI', 'COUNT', '', 50, 'Nombre des articles couvrant 80% des stocks', '4', ' ', ' ', ' ', ' ', '4', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', 'CTI_ART80MNT', '', '', '', 'CUI', '', '', 'Cuisine', '', '', '', '1QTE', '', '', '', '', '', '', '', '', '0'), | |||
| (1, 'Nombre d''articles couvrant 80% des stocks - DispositifsMédicaux', 'V_STOCK_MENSUEL_X', 'DISTINCT CASE WHEN article_id IN ([CLASSE:CTI_ESS_ART80:DM]) THEN article_id ELSE null END', '1', 'Nb Art. 80% stock Qté.', 'CTI_ART80MNT#DM', 'COUNT', '', 50, 'Nombre des articles couvrant 80% des stocks', '4', ' ', ' ', ' ', ' ', '4', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', 'CTI_ART80MNT', '', '', '', 'DM', '', '', 'Dispositifs Médicaux', '', '', '', '1QTE', '', '', '', '', '', '', '', '', '0'), | |||
| (1, 'Nombre d''articles couvrant 80% des stocks - DispositifsMédicauxImplantables', 'V_STOCK_MENSUEL_X', 'DISTINCT CASE WHEN article_id IN ([CLASSE:CTI_ESS_ART80:DMI]) THEN article_id ELSE null END', '1', 'Nb Art. 80% stock Qté.', 'CTI_ART80MNT#DMI', 'COUNT', '', 50, 'Nombre des articles couvrant 80% des stocks', '4', ' ', ' ', ' ', ' ', '4', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', 'CTI_ART80MNT', '', '', '', 'DMI', '', '', 'Dispositifs Médicaux Implantables', '', '', '', '1QTE', '', '', '', '', '', '', '', '', '0'), | |||
| (1, 'Nombre d''articles couvrant 80% des stocks - Economat', 'V_STOCK_MENSUEL_X', 'DISTINCT CASE WHEN article_id IN ([CLASSE:CTI_ESS_ART80:ECO]) THEN article_id ELSE null END', '1', 'Nb Art. 80% stock Qté.', 'CTI_ART80MNT#ECO', 'COUNT', '', 50, 'Nombre des articles couvrant 80% des stocks', '4', ' ', ' ', ' ', ' ', '4', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', 'CTI_ART80MNT', '', '', '', 'ECO', '', '', 'Economat', '', '', '', '1QTE', '', '', '', '', '', '', '', '', '0'), | |||
| (1, 'Nombre d''articles couvrant 80% des stocks - Lingerie', 'V_STOCK_MENSUEL_X', 'DISTINCT CASE WHEN article_id IN ([CLASSE:CTI_ESS_ART80:LIN]) THEN article_id ELSE null END', '1', 'Nb Art. 80% stock Qté.', 'CTI_ART80MNT#LIN', 'COUNT', '', 50, 'Nombre des articles couvrant 80% des stocks', '4', ' ', ' ', ' ', ' ', '4', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', 'CTI_ART80MNT', '', '', '', 'LIN', '', '', 'Lingerie', '', '', '', '1QTE', '', '', '', '', '', '', '', '', '0'), | |||
| (1, 'Nombre d''articles couvrant 80% des stocks - Médicaments', 'V_STOCK_MENSUEL_X', 'DISTINCT CASE WHEN article_id IN ([CLASSE:CTI_ESS_ART80:MED]) THEN article_id ELSE null END', '1', 'Nb Art. 80% stock Qté.', 'CTI_ART80MNT#MED', 'COUNT', '', 50, 'Nombre des articles couvrant 80% des stocks', '4', ' ', ' ', ' ', ' ', '4', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', 'CTI_ART80MNT', '', '', '', 'MED', '', '', 'Médicaments', '', '', '', '1QTE', '', '', '', '', '', '', '', '', '0'), | |||
| (1, 'Nombre d''articles couvrant 80% des stocks - Parapharmacie', 'V_STOCK_MENSUEL_X', 'DISTINCT CASE WHEN article_id IN ([CLASSE:CTI_ESS_ART80:PAR]) THEN article_id ELSE null END', '1', 'Nb Art. 80% stock Qté.', 'CTI_ART80MNT#PAR', 'COUNT', '', 50, 'Nombre des articles couvrant 80% des stocks', '4', ' ', ' ', ' ', ' ', '4', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', 'CTI_ART80MNT', '', '', '', 'PAR', '', '', 'Parapharmacie', '', '', '', '1QTE', '', '', '', '', '', '', '', '', '0'), | |||
| (1, 'Nombre d''articles couvrant 80% des stocks', 'V_STOCK_MENSUEL_X', 'DISTINCT CASE WHEN article_id IN ([LISTE:CTI_ESS_ART80]) THEN article_id ELSE null END', '1', 'Nb Art. 80% stock Qté.', 'CTI_ART80QTE', 'COUNT', '', 50, 'Nombre des articles couvrant 80% des stocks', '4', ' ', ' ', ' ', ' ', '4', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre d''articles couvrant 80% des stocks en quantité', '1QTE', '', '', '', '', '', '', '', '', '0'), | |||
| (1, 'Code article', 'TABART', 'article_code', '1', 'Article', 'CTI_ARTCODE', '*LIST', '', 50, 'Code article', '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Code de l''article', '', '', '', '', '', '', '', '', '', '0'), | |||
| (1, 'Nombre moyen d''articles par fournisseur', '*CALC', 'base.cti_division([1],[2])', '1', 'Moy Art. / four.', 'CTI_ARTFOUMOY', '*CALC', '', 50, 'Nombre moyen d''articles par fournisseur', ' ', ' ', ' ', ' ', ' ', ' ', 'CTI_NBART', 'CTI_NBFOU#2', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre moyen d''articles par fournisseur', '1QTE', '', '', '', '', '', '', '', '', '1'), | |||
| (1, 'Oid article', 'TABART', 'CASE WHEN COUNT(DISTINCT article_id) = 1 THEN MAX(article_id) ELSE 0 END', '1', '', 'CTI_ARTOID', '*LIST', '', 0, '', '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0'), | |||
| (1, 'Désignation de l''article', 'TABART', 'CASE WHEN COUNT(DISTINCT article_texte) = 1 THEN MAX(article_texte) ELSE '''' END', '1', 'Article', 'CTI_ARTTXT', '*LIST', '', 200, 'Désignation de l''article', '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Désignation de l''article', '', '', '', '', '', '', '', '', '', '0'), | |||
| (1, 'Date de commande', 'V_LIGNES_COMMANDES_X', 'CASE WHEN COUNT(DISTINCT(date_commande)) = 1 THEN MAX(date_commande)::text ELSE '''' END', '1', 'Date de commande', 'CTI_COMDATE', '*LIST', 'DD/MM/YYYY', 65, 'Date de commande', ' ', ' ', ' ', ' ', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Date de commande', '3DUR', '', '', '', '', '', '', '', '', '0'), | |||
| (1, 'Délai livraison moyen', '*CALC', 'base.cti_division([1],[2])', '1', 'Moy Délai livraison', 'CTI_DELLIVMOY', '*CALC', '', 80, 'Délai livraison moyen', ' ', ' ', ' ', ' ', ' ', ' ', 'CTI_NBJLIV', 'CTI_NB_LIGCOM#2', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', '', '3DUR', '2MNT', '1QTE', '', '', '', '', '', '', '0'), | |||
| (1, 'Délai paiement moyen founisseur', '*CALC', 'base.cti_division([1],[2])', '1', 'Moy Délai payment', 'CTI_DELPAYMOY', '*CALC', '', 50, 'Délai paiement moyen founisseur', ' ', ' ', ' ', ' ', ' ', ' ', 'CTI_NBJPAYFOU#2', 'CTI_NB_LIGCOM#2', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Délai paiement moyen founisseur', '3DUR', '2MNT', '1QTE', '', '', '', '', '', '', '1'), | |||
| (1, 'Date d''engagement', 'V_LIGNES_COMMANDES_X', 'CASE WHEN COUNT(DISTINCT(date_engagement)) = 1 THEN MAX(date_engagement)::text ELSE '''' END', '1', 'Date d''engagement', 'CTI_ENGDATE', '*LIST', 'DD/MM/YYYY', 65, 'Date d''engagement', ' ', ' ', ' ', ' ', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Date d''engagement', '3DUR', '', '', '', '', '', '', '', '', '0'), | |||
| (1, 'Erreur', 'V_SEP__X', '', '1', '', 'CTI_ERROR', 'SEP', '#', 50, '', '0', ' ', ' ', ' ', ' ', '0', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0'), | |||
| (1, 'Nombre moyen de factures par fournisseur', '*CALC', 'base.cti_division([1],[2])', '1', 'Moy Fac. / Four.', 'CTI_FACFOUMOY', '*CALC', '', 50, 'Nombre moyen de factures par fournisseur', ' ', ' ', ' ', ' ', ' ', ' ', 'CTI_NBFAC#2', 'CTI_NBFOU#2', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre moyen de factures par fournisseur', '1QTE', '', '', '', '', '', '', '', '', '1'), | |||
| (1, 'Fréquence de rupture de stocks', '*CALC', 'base.cti_division([2],[1])', '1', 'Fr. ruptures', 'CTI_FRRUPSTO', '*CALC', '#j', 50, 'Fréquence de rupture de stocks', ' ', ' ', ' ', ' ', ' ', ' ', 'CTI_NBRUPSTO', 'CTI_NBJPER', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Duréee en jours / Nombre de rupture de stocks', '3DUR', '', '', '', '', '', '', '', '', '0'), | |||
| (1, 'Code du Gestionnaire', 'TABGEST', 'CASE WHEN COUNT( DISTINCT gestionnaire_code) = 1 THEN MAX(gestionnaire_code) ELSE '''' END', '1', 'Gest', 'CTI_GESTCODE', '*LIST', '40', 30, 'Code Gestionnaire', '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Code du Gestionnaire', '', '', '', '', '', '', '', '', '', '0'), | |||
| (1, 'Code du lieu', 'TABLIEU', 'CASE WHEN COUNT(DISTINCT lieu_code) = 1 THEN MAX(lieu_code) ELSE '''' END', '1', 'Lieu', 'CTI_LIEUCODE', '*LIST', '', 30, 'Code du lieu', '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Code du lieu', '', '', '', '', '', '', '', '', '', '0'), | |||
| (1, 'Marge brute', '*CALC', '[3]*(base.cti_division([1],[3])-base.cti_division([2],[4]))', '1', 'Marge brute', 'CTI_MBRUT', '*CALC', '#,00E', 100, 'Marge brute', ' ', ' ', ' ', ' ', ' ', ' ', 'CTI_MTSORTTCSTO-2#01', 'CTI_MTSORTTCSTO-2#01', 'CTI_NBSORSTO#01', 'CTI_MTENTTTCSTO-2#00', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'nombre de sorties * (montant des sorties/nombre sorties - montant des entrées/nombre d''entrées)', '2MNT', '', '', '', '', '', '', '', '', '1'), | |||
| (1, 'Montant HT Pertes et Périmés', '*CALC', '[1] + [2]', '1', '', 'CTI_MNTHTPEPE', '*CALC', '#,00E', 100, '', ' ', ' ', ' ', ' ', ' ', ' ', 'CTI_MNTHTUFPER', 'CTI_MTSORHT-2#02', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Montant HT pertes et périmés', '2MNT', '', '', '', '', '', '', '', '', '1'), | |||
| (1, 'Montant HT dans UF de Périmés', 'V_MOUVEMENTS_ARTICLES_X', 'CASE WHEN unite_fonctionnelle_id IN [LISTE:CTI_UFPER] THEN sortie_montant_ht ELSE 0 END', '1', 'Mt HT UF Pér.', 'CTI_MNTHTUFPER', 'SUM', '#,00E', 100, 'Montant HT UF Périmés', '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Montant HT des pertes par rapport à la liste CTI des UF de pertes', '2MNT', '', '', '', '', '', '', '', '', '1'), | |||
| (1, 'Montant payé HT', 'V_LIGNES_COMMANDES_X', 'montant_liquidation_ht', '1', 'Mt payé. HT', 'CTI_MNTPAYHT', 'SUM', '#,00E', 100, 'Montant payé HT', '2', '3', ' ', ' ', ' ', '2', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Montant Liquidation HT', '2MNT', '', '', '', '', '', '', '', '', '0'), | |||
| (1, 'Montant payé TTC', 'V_LIGNES_COMMANDES_X', 'montant_liquidation_ttc', '1', 'Mt payé. TTC', 'CTI_MNTPAYTTC', 'SUM', '#,00E', 100, 'Montant payé TTC', '2', '3', ' ', ' ', ' ', '2', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Montant Liquidation TTC', '2MNT', '', '', '', '', '', '', '', '', '0'), | |||
| (1, 'Valeur stock début période', 'V_STOCK_MENSUEL_X', 'CASE WHEN date_debut = periode THEN stock_valeur_debut ELSE 0 END', '1', 'Valeur Stock début', 'CTI_MNTSTODEB', 'SUMFIRSTMONTH', '#,00E', 100, 'Valeur stock début période', '4', ' ', ' ', ' ', ' ', '4', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', '', '2MNT', '', '', '', '', '', '', '', '', '0'), | |||
| (1, 'Montant stock calculé début période', 'V_MOUVEMENTS_STOCKS_X', 'round(CASE WHEN gere_en_stock != ''0'' AND date < periode AND est_dernier_jour = ''1'' THEN stock_quantite_fin*prix_unitaire_calcule WHEN gere_en_stock != ''0'' AND date = periode AND est_premier_jour = ''1'' THEN stock_quantite_debut*prix_unitaire_calcule ELSE 0 END,10)', '1', 'Mt Stock début', 'CTI_MNTSTODEBACHAT', 'SUMFIRSTMONTH', '#,00E', 100, 'Montant HT stock calculé début période', '5', ' ', ' ', ' ', ' ', '5', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Montant des stocks en début de période basé sur le pump CTI', '', '', '', '', '', '', '', '', '', '0'), | |||
| (1, 'Montant stock calculé début', 'V_MOUVEMENTS_ARTICLES_X', 'round(stock_quantite_debut*prix_unitaire_calcule,10)', '1', 'Mt Stock fin', 'CTI_MNTSTODEBMVT', 'SUM', '#,00E', 100, 'Montant TTC stock calculé en début de mouvement', '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Montant stock en début de mouvement basé sur le pump CTI', '', '', '', '', '', '', '', '', '', '0'), | |||
| (1, 'Valeur stock fin période', 'V_STOCK_MENSUEL_X', 'CASE WHEN date_fin = toperiode THEN stock_valeur_fin ELSE 0 END', '1', 'Valeur Stock fin', 'CTI_MNTSTOFIN', 'SUMLASTMONTH', '#,00E', 100, 'Valeur stock fin période', '4', ' ', ' ', ' ', ' ', '4', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', '', '2MNT', '', '', '', '', '', '', '', '', '0'), | |||
| (1, 'Montant stock calculé fin période', 'V_MOUVEMENTS_STOCKS_X', 'round(CASE WHEN gere_en_stock != ''0'' AND toperiode <= date_fin AND est_dernier_jour = 1 THEN stock_quantite_fin*prix_unitaire_calcule ELSE 0 END,10)', '1', 'Mt Stock fin', 'CTI_MNTSTOFINACHAT', 'SUMLASTMONTH', '#,00E', 100, 'Montant HT stock calculé fin période', '5', ' ', ' ', ' ', ' ', '5', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Montant stock fin de période basé sur le pump CTI', '', '', '', '', '', '', '', '', '', '0'), | |||
| (1, 'Montant stock calculé fin', 'V_MOUVEMENTS_ARTICLES_X', '(MAX(ARRAY[CASE WHEN est_dernier_jour = ''1'' THEN date::text ELSE ''1900-01-01''::text END,round(stock_quantite_fin*prix_unitaire_calcule,10)::text]))[2]::numeric', '1', 'Mt Stock fin', 'CTI_MNTSTOFINMVT', '', '#,00E', 100, 'Montant HT stock calculé en fin de mouvement', '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Montant stock en fin de mouvement basé sur le pump CTI', '', '', '', '', '', '', '', '', '', '0'), | |||
| (1, 'Valeur stock moyen (mouvements)', '*CALC', 'base.cti_division([1]+[2],2)', '1', 'Mnt. Stock moy.', 'CTI_MNTSTOMOYMVT', '*CALC', '#,00E', 100, 'Valeur stock moyen (mouvements)', ' ', ' ', ' ', ' ', ' ', ' ', 'CTI_MNTSTODEBACHAT', 'CTI_MNTSTOFINACHAT', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Valeur de stock moyen (valeur stock début (achat) + valeur stock fin (achat) /2)', '', '', '', '', '', '', '', '', '', '0'), | |||
| (1, 'Valeur stock moyen', '*CALC', 'base.cti_division([1]+[2],2)', '1', 'Mnt. Stock moy.', 'CTI_MNTSTOMY', '*CALC', '#,00E', 100, 'Valeur stock moyen', ' ', ' ', ' ', ' ', ' ', ' ', 'CTI_MNTSTODEB', 'CTI_MNTSTOFIN', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Valeur de stock moyen (valeur stock début (achat) + valeur stock fin (achat) /2)', '2MNT', '', '', '', '', '', '', '', '', '0'), | |||
| (1, 'Valeur TTC stock début période', 'V_STOCK_MENSUEL_X', 'CASE WHEN date_debut = periode THEN stock_valeur_debut_ttc ELSE 0 END', '1', 'Valeur TTC Stock début', 'CTI_MNTTTCSTODEB', 'SUMFIRSTMONTH', '#,00E', 100, 'Valeur TTC stock début période', '4', ' ', ' ', ' ', ' ', '4', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', '', '2MNT', '', '', '', '', '', '', '', '', '0'), | |||
| (1, 'Valeur TTC stock fin période', 'V_STOCK_MENSUEL_X', 'CASE WHEN date_fin = toperiode THEN stock_valeur_fin_ttc ELSE 0 END', '1', 'Valeur TTC Stock fin', 'CTI_MNTTTCSTOFIN', 'SUMLASTMONTH', '#,00E', 100, 'Valeur TTC stock fin période', '4', ' ', ' ', ' ', ' ', '4', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', '', '2MNT', '', '', '', '', '', '', '', '', '0'), | |||
| (1, 'Montant des achats', 'V_LIGNES_COMMANDES_X', 'montant_liquidation_ttc', '1', 'Mt achats', 'CTI_MTACHA', 'SUM', '#,00E', 100, 'Montant des achats', '2', '3', ' ', ' ', ' ', '2', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Montant des achats', '2MNT', '', '', '', '', '', '', '', '', '0'), | |||
| (1, 'Panier Moyen (HT)', '*CALC', 'base.cti_division([1],[2])', '1', 'Panier Moy. HT', 'CTI_MTCMOYHT', '*CALC', '#E', 100, 'Panier Moyen (HT)', ' ', ' ', ' ', ' ', ' ', ' ', 'CTI_MTCOMHT#2', 'CTI_NBCOM#2', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Panier moyen HT (montant commandé ht / nombre de commandes)', '2MNT', '1QTE', '', '', '', '', '', '', '', '0'), | |||
| (1, 'Montant commandé HT', 'V_LIGNES_COMMANDES_X', 'montant_commande_ht', '1', 'Mt Com. HT', 'CTI_MTCOMHT', 'SUM', '#,00E', 100, 'Montant Commandé HT', '2', '3', ' ', ' ', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Montant Commandé HT', '2MNT', '', '', '', '', '', '', '', '', '0'), | |||
| (1, 'Montant commandé TTC', 'V_LIGNES_COMMANDES_X', 'montant_commande_ttc', '1', 'Mt Com. TTC', 'CTI_MTCOMTTC', 'SUM', '#,00E', 100, 'Montant commande TTC', '2', '3', ' ', ' ', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Montant commande TTC', '2MNT', '', '', '', '', '', '', '', '', '0'), | |||
| (1, 'Montant TTC des entrées', 'V_MOUVEMENTS_ARTICLES_X', 'entree_montant', '1', 'Mt Ent. TTC', 'CTI_MTENT', 'SUM', '#,00E', 100, 'Montant TTC des entrées', '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Montant TTC des entrées', '2MNT', '', '', '', '', '', '', '', '', '0'), | |||
| (1, 'Montant HT des entrées', 'V_MOUVEMENTS_ARTICLES_X', 'entree_montant_ht', '1', 'Mt Ent. HT', 'CTI_MTENTHT', 'SUM', '#,00E', 100, 'Montant HT des entrées', '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Montant HT des entrées', '2MNT', '', '', '', '', '', '', '', '', '0'), | |||
| (1, 'Montant HT', 'V_MOUVEMENTS_ARTICLES_X', 'CASE WHEN type_mouvement_id IN ([CLASSE:CTI_TYPMVT:[TEMPLATE_VALUE_1]]) THEN entree_montant_ht ELSE 0 END', '1', 'Mt [TEMPLATE_TEXT_1] HT', 'CTI_MTENTHT-2', 'SUM', '#,00E', 100, 'Montant HT [TEMPLATE_TEXT_1]', '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '1', '', 'Type de mouvements d''entrée', '', '', '', '', '', '', '', '', '', '2MNT', '', '', '', '', '', '', '', '', '1'), | |||
| (1, 'Montant des entrées', 'V_STOCK_MENSUEL_X', 'entree_montant', '1', 'Mt Ent. HT', 'CTI_MTENTSTO', 'SUM', '#,00E', 100, 'Montant HT des entrées', '4', ' ', ' ', ' ', ' ', '4', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Montant TTC des sorties', '2MNT', '', '', '', '', '', '', '', '', '0'), | |||
| (1, 'Montant TTC des entrées par type', 'V_MOUVEMENTS_ARTICLES_X', 'CASE WHEN type_mouvement_id IN ([CLASSE:CTI_TYPMVT:[TEMPLATE_VALUE_1]]) THEN entree_montant ELSE 0 END', '1', 'Mt [TEMPLATE_TEXT_1] TTC', 'CTI_MTENTTTC-2', 'SUM', '#,00E', 100, 'Montant [TEMPLATE_TEXT_1] TTC', '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '1', '', 'Type de mouvements d''entrée', '', '', '', '', '', '', '', '', '', '2MNT', '', '', '', '', '', '', '', '', '1'), | |||
| (1, 'Montant TTC des entrées par type - autres', 'V_MOUVEMENTS_ARTICLES_X', 'CASE WHEN type_mouvement_id IN ([CLASSE:CTI_TYPMVT:99]) THEN entree_montant ELSE 0 END', '1', 'Mt autres TTC', 'CTI_MTENTTTC-2#99', 'SUM', '#,00E', 100, 'Montant autres TTC', '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', 'CTI_MTENTTTC-2', '', '', '', '99', '', '', 'autres', '', '', '', '2MNT', '', '', '', '', '', '', '', '', '0'), | |||
| (1, 'Montant TTC des entrées (stock)', 'V_MOUVEMENTS_STOCKS_X', 'CASE WHEN gere_en_stock != ''0'' AND date BETWEEN periode AND toperiode AND type_mouvement_id IN ([CLASSE:CTI_TYPMVT:[TEMPLATE_VALUE_1]]) THEN entree_montant ELSE 0 END', '1', 'Mt [TEMPLATE_TEXT_1] TTC (stock)', 'CTI_MTENTTTCSTO-2', 'SUM', '#,00E', 100, 'Montant [TEMPLATE_TEXT_1] TTC (stock)', '5', ' ', ' ', ' ', ' ', '5', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '1', '', 'Type de mouvements d''entrée', '', '', '', '', '', '', '', '', 'Montant TTC des entrées par type (produit gérés stock)', '', '', '', '', '', '', '', '', '', '1'), | |||
| (1, 'Montant TTC des entrées (stock) - livraison', 'V_MOUVEMENTS_STOCKS_X', 'CASE WHEN gere_en_stock != ''0'' AND date BETWEEN periode AND toperiode AND type_mouvement_id IN ([CLASSE:CTI_TYPMVT:00]) THEN entree_montant ELSE 0 END', '1', 'Mt livraison TTC (stock)', 'CTI_MTENTTTCSTO-2#00', 'SUM', '#,00E', 100, 'Montant livraison TTC (stock)', '5', ' ', ' ', ' ', ' ', '5', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', 'CTI_MTENTTTCSTO-2', '', '', '', '00', '', '', 'livraison', '', '', '', '2MNT', '', '', '', '', '', '', '', '', '0'), | |||
| (1, 'Montant d''achats auprès des fournisseurs références', 'V_LIGNES_COMMANDES_X', 'CASE WHEN fournisseur_id IN [LISTE:CTI_FOUREF] OR fournisseur_id = fournisseur_principal_id THEN montant_liquidation_ttc ELSE 0 END', '1', 'Mt achat four. ref.', 'CTI_MTFOUGR', 'SUM', '#,00E', 100, 'Montant d''achats auprès des fournisseurs références', '2', '3', ' ', ' ', ' ', '2', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Montant d''achats auprès des fournisseurs références', '2MNT', '', '', '', '', '', '', '', '', '1'), | |||
| (1, 'Montant HT des entrées (stock)', 'V_MOUVEMENTS_ARTICLES_X', 'CASE WHEN gere_en_stock != ''0'' AND date BETWEEN periode AND toperiode AND type_mouvement_id IN ([CLASSE:CTI_TYPMVT:[TEMPLATE_VALUE_1]]) THEN entree_montant_ht ELSE 0 END', '1', 'Mt [TEMPLATE_TEXT_1] HT (stock)', 'CTI_MTHTSORSTO-2', 'SUM', '#,00E', 100, 'Montant [TEMPLATE_TEXT_1] HT (stock)', '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '1', '', 'Type de mouvements d''entrée', '', '', '', '', '', '', '', '', 'Montant HT des entrées par type (produits gérés en stock)', '', '', '', '', '', '', '', '', '', '1'), | |||
| (1, 'Montant Ecart HT', 'V_MOUVEMENTS_ARTICLES_X', 'entree_montant_ht-sortie_montant_ht', '1', 'Mt Ecart HT', 'CTI_MTMVTECENTSORHT', 'SUM', '#,00E', 100, 'Montant Ecart HT', '1', ' ', ' ', ' ', ' ', '1', 'CTI_MTENTHT', 'CTI_MTSORHT', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Différence entre les montants d''entrée et de sortie en HT', '2MNT', '', '', '', '', '', '', '', '', '0'), | |||
| (1, 'Montant Ecart TTC', 'V_MOUVEMENTS_ARTICLES_X', 'entree_montant-sortie_montant', '1', 'Mt Ecart TTC', 'CTI_MTMVTECENTSORTTC', 'SUM', '#,00E', 100, 'Montant Ecart TTC', '1', ' ', ' ', ' ', ' ', '1', 'CTI_MTENT', 'CTI_MTSORT', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Différence entre les montants d''entrée et de sortie en TTC', '2MNT', '', '', '', '', '', '', '', '', '0'), | |||
| (1, 'Montant non livré HT', 'V_LIGNES_COMMANDES_X', 'montant_non_livraison_ht', '1', 'Mt Non Liv. HT', 'CTI_MTNLIVHT', 'SUM', '#,00E', 80, 'Montant non livré HT', '2', '3', ' ', ' ', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Montant non livraison HT', '2MNT', '', '', '', '', '', '', '', '', '0'), | |||
| (1, 'Montant non livré TTC', 'V_LIGNES_COMMANDES_X', 'montant_non_livraison_ttc', '1', 'Mt Non Liv. TTC', 'CTI_MTNLIVTTC', 'SUM', '#,00E', 80, 'Montant non livré TTC', '2', '3', ' ', ' ', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Montant non livré TTC', '2MNT', '', '', '', '', '', '', '', '', '0'), | |||
| (1, 'Montant port', 'V_LIGNES_COMMANDES_X', 'montant_commande_port', '1', 'Mt Port', 'CTI_MTPORT', 'SUM', '#,00E', 100, 'Montant port', '2', '3', ' ', ' ', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Montant port', '2MNT', '', '', '', '', '', '', '', '', '1'), | |||
| (1, 'Montant remise', 'V_LIGNES_COMMANDES_X', 'montant_commande_remise', '1', 'Mt Remise', 'CTI_MTREM', 'SUM', '#,00E', 80, 'Montant remise', '2', '3', ' ', ' ', ' ', '2', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Montant remise', '2MNT', '', '', '', '', '', '', '', '', '0'), | |||
| (1, 'Montant HT des sorties', 'V_MOUVEMENTS_ARTICLES_X', 'sortie_montant_ht', '1', 'Mt Sor. HT', 'CTI_MTSORHT', 'SUM', '#,00E', 100, 'Montant HT des sorties', '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Montant HT des sorties', '2MNT', '', '', '', '', '', '', '', '', '0'), | |||
| (1, 'Montant HT des sorties', 'V_MOUVEMENTS_ARTICLES_X', 'CASE WHEN type_mouvement_id IN ([CLASSE:CTI_TYPMVT:[TEMPLATE_VALUE_1]]) AND unite_fonctionnelle_id NOT IN [LISTE:CTI_UFPER] THEN sortie_montant_ht ELSE 0 END', '1', 'Mt [TEMPLATE_TEXT_1] HT', 'CTI_MTSORHT-2', 'SUM', '#,00E', 100, 'Montant [TEMPLATE_TEXT_1] HT', '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '1', '', 'Type de mouvements de sortie', '', '', '', '', '', '', '', '', '', '2MNT', '', '', '', '', '', '', '', '', '1'), | |||
| (1, 'Montant HT des sorties - consommation', 'V_MOUVEMENTS_ARTICLES_X', 'CASE WHEN type_mouvement_id IN ([CLASSE:CTI_TYPMVT:01]) AND unite_fonctionnelle_id NOT IN [LISTE:CTI_UFPER] THEN sortie_montant_ht ELSE 0 END', '1', 'Mt consommation HT', 'CTI_MTSORHT-2#01', 'SUM', '#,00E', 100, 'Montant consommation HT', '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', 'CTI_MTSORHT-2', '', '', '', '01', '', '', 'consommation', '', '', '', '2MNT', '', '', '', '', '', '', '', '', '0'), | |||
| (1, 'Montant HT des sorties - pertes', 'V_MOUVEMENTS_ARTICLES_X', 'CASE WHEN type_mouvement_id IN ([CLASSE:CTI_TYPMVT:02]) AND unite_fonctionnelle_id NOT IN [LISTE:CTI_UFPER] THEN sortie_montant_ht ELSE 0 END', '1', 'Mt pertes HT', 'CTI_MTSORHT-2#02', 'SUM', '#,00E', 100, 'Montant pertes HT', '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', 'CTI_MTSORHT-2', '', '', '', '02', '', '', 'pertes', '', '', '', '2MNT', '', '', '', '', '', '', '', '', '0'), | |||
| (1, 'Montant HT des sorties - autres', 'V_MOUVEMENTS_ARTICLES_X', 'CASE WHEN type_mouvement_id IN ([CLASSE:CTI_TYPMVT:99]) AND unite_fonctionnelle_id NOT IN [LISTE:CTI_UFPER] THEN sortie_montant_ht ELSE 0 END', '1', 'Mt autres HT', 'CTI_MTSORHT-2#99', 'SUM', '#,00E', 100, 'Montant autres HT', '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', 'CTI_MTSORHT-2', '', '', '', '99', '', '', 'autres', '', '', '', '2MNT', '', '', '', '', '', '', '', '', '1'), | |||
| (1, 'Montant HT des sorties (stock)', 'V_MOUVEMENTS_ARTICLES_X', 'CASE WHEN gere_en_stock != ''0'' AND date BETWEEN periode AND toperiode AND type_mouvement_id IN ([CLASSE:CTI_TYPMVT:[TEMPLATE_VALUE_1]]) AND unite_fonctionnelle_id NOT IN [LISTE:CTI_UFPER] THEN sortie_montant_ht ELSE 0 END', '1', 'Mt [TEMPLATE_TEXT_1] HT (stock)', 'CTI_MTSORHTSTO-2', 'SUM', '#,00E', 100, 'Montant [TEMPLATE_TEXT_1] HT (stock)', '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '1', '', 'Type de mouvements de sortie', '', '', '', '', '', '', '', '', 'Montant HT des sorties par type (produits gérés en stock)', '', '', '', '', '', '', '', '', '', '1'), | |||
| (1, 'Montant TTC des sorties', 'V_MOUVEMENTS_ARTICLES_X', 'sortie_montant', '1', 'Mt Sor. TTC', 'CTI_MTSORT', 'SUM', '#,00E', 100, 'Montant TTC des sorties', '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Montant TTC des sorties', '2MNT', '', '', '', '', '', '', '', '', '0'), | |||
| (1, 'Montant des sorties', 'V_STOCK_MENSUEL_X', 'sortie_montant', '1', 'Mt Sor. HT', 'CTI_MTSORTSTO', 'SUM', '#,00E', 100, 'Montant HT des sorties', '4', ' ', ' ', ' ', ' ', '4', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Montant TTC des sorties', '2MNT', '', '', '', '', '', '', '', '', '0'), | |||
| (1, 'Montant TTC des sorties par type', 'V_MOUVEMENTS_ARTICLES_X', 'CASE WHEN type_mouvement_id IN ([CLASSE:CTI_TYPMVT:[TEMPLATE_VALUE_1]]) AND unite_fonctionnelle_id NOT IN [LISTE:CTI_UFPER] THEN sortie_montant ELSE 0 END', '1', 'Mt [TEMPLATE_TEXT_1] TTC', 'CTI_MTSORTTC-2', 'SUM', '#,00E', 100, 'Montant [TEMPLATE_TEXT_1] TTC', '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '1', '', 'Type de mouvements de sortie', '', '', '', '', '', '', '', '', '', '2MNT', '', '', '', '', '', '', '', '', '1'), | |||
| (1, 'Montant TTC des sorties par type - pertes', 'V_MOUVEMENTS_ARTICLES_X', 'CASE WHEN type_mouvement_id IN ([CLASSE:CTI_TYPMVT:02]) AND unite_fonctionnelle_id NOT IN [LISTE:CTI_UFPER] THEN sortie_montant ELSE 0 END', '1', 'Mt pertes TTC', 'CTI_MTSORTTC-2#02', 'SUM', '#,00E', 100, 'Montant pertes TTC', '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', 'CTI_MTSORTTC-2', '', '', '', '02', '', '', 'pertes', '', '', '', '2MNT', '', '', '', '', '', '', '', '', '0'), | |||
| (1, 'Montant TTC des sorties (stock)', 'V_MOUVEMENTS_ARTICLES_X', 'CASE WHEN gere_en_stock != ''0'' AND date BETWEEN periode AND toperiode AND type_mouvement_id IN ([CLASSE:CTI_TYPMVT:[TEMPLATE_VALUE_1]]) AND unite_fonctionnelle_id NOT IN [LISTE:CTI_UFPER] THEN sortie_montant ELSE 0 END', '1', 'Mt [TEMPLATE_TEXT_1] TTC (stock)', 'CTI_MTSORTTCSTO-2', 'SUM', '#,00E', 100, 'Montant [TEMPLATE_TEXT_1] TTC (stock)', '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '1', '', 'Type de mouvements de sortie', '', '', '', '', '', '', '', '', 'Montant TTC des sorties par type (produit gérés en stock)', '2MNT', '', '', '', '', '', '', '', '', '1'), | |||
| (1, 'Montant TTC des sorties (stock) - consommation', 'V_MOUVEMENTS_ARTICLES_X', 'CASE WHEN gere_en_stock != ''0'' AND date BETWEEN periode AND toperiode AND type_mouvement_id IN ([CLASSE:CTI_TYPMVT:01]) AND unite_fonctionnelle_id NOT IN [LISTE:CTI_UFPER] THEN sortie_montant ELSE 0 END', '1', 'Mt consommation TTC (stock)', 'CTI_MTSORTTCSTO-2#01', 'SUM', '#,00E', 100, 'Montant consommation TTC (stock)', '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', 'CTI_MTSORTTCSTO-2', '', '', '', '01', '', '', 'consommation', '', '', '', '2MNT', '', '', '', '', '', '', '', '', '0'), | |||
| (1, 'Montant Ecart HT', 'V_STOCK_MENSUEL_X', 'entree_montant-sortie_montant', '1', 'Mt Ecart HT', 'CTI_MTSTOECENTSORHT', 'SUM', '#,00E', 100, 'Montant Ecart HT', '4', ' ', ' ', ' ', ' ', '4', 'CTI_MTENTHT', 'CTI_MTSORHT', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Différence entre les montants d''entrée et de sortie en HT', '2MNT', '', '', '', '', '', '', '', '', '0'), | |||
| (1, 'Montant TVA', 'V_LIGNES_COMMANDES_X', 'montant_commande_tva', '1', 'Mt TVA', 'CTI_MTTVA', 'SUM', '#,00E', 80, 'Montant TVA', '2', '3', ' ', ' ', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Montant TVA', '2MNT', '', '', '', '', '', '', '', '', '0'), | |||
| (1, 'Numéro de commande', 'V_MOUVEMENTS_ARTICLES_X', 'CASE WHEN COUNT(DISTINCT commande_code) = 1 THEN MAX(commande_code) ELSE '''' END', '1', 'Commande', 'CTI_MVTCMD', '*LIST', '', 50, 'Numéro de commande', '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Numéro de commande associé', '', '', '', '', '', '', '', '', '', '0'), | |||
| (1, 'Date', 'V_MOUVEMENTS_ARTICLES_X', 'CASE WHEN COUNT(DISTINCT date) = 1 THEN MAX(date::text) ELSE '''' END', '1', 'Date', 'CTI_MVTDATE', '*LIST', 'DD/MM/YYYY', 65, 'Date de mouvement', '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Date du mouvement', '3DUR', '', '', '', '', '', '', '', '', '0'), | |||
| (1, 'Date de commande', 'V_MOUVEMENTS_ARTICLES_X', 'CASE WHEN COUNT(DISTINCT date_commande) = 1 THEN MAX(date_commande)::text ELSE '''' END', '1', 'Date de commande', 'CTI_MVTDCMD', '*LIST', 'DD/MM/YYYY', 65, 'Date de commande', '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Date de Commande', '', '', '', '', '', '', '', '', '', '0'), | |||
| (1, 'Texte du mouvement', 'V_MOUVEMENTS_ARTICLES_X', 'CASE WHEN COUNT(DISTINCT mouvement_texte) = 1 THEN MAX(mouvement_texte) ELSE '''' END', '1', 'Texte', 'CTI_MVTTXT', '*LIST', '', 200, 'Texte du mouvement', '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Texte du mouvement', '', '', '', '', '', '', '', '', '', '0'), | |||
| (1, 'Type de mouvement', 'V_MOUVEMENTS_ARTICLES_X', 'CASE WHEN COUNT(DISTINCT type_mouvement_code) = 1 THEN MAX(type_mouvement_code) ELSE '''' END', '1', 'Mvt', 'CTI_MVTTYPE', '*LIST', '', 30, 'Type de mouvement', '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Code du type de mouvement', '', '', '', '', '', '', '', '', '', '0'), | |||
| (1, 'Nombre d''articles différents', 'V_MOUVEMENTS_ARTICLES_X', 'DISTINCT article_id', '1', 'Nb Art.', 'CTI_NBART', 'COUNT', '', 50, 'Nombre d''articles', '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre d''articles', '1QTE', '', '', '', '', '', '', '', '', '0'), | |||
| (1, 'Nombre d''articles différents commandés', 'V_LIGNES_COMMANDES_X', 'DISTINCT article_id', '1', 'Nb Art. Com.', 'CTI_NBARTCOM', 'COUNT', '', 50, 'Nombre d''articles commandés', ' ', ' ', ' ', ' ', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre d''articles commandés', '1QTE', '', '', '', '', '', '', '', '', '0'), | |||
| (1, 'Nombre moyen d''articles par commande', '*CALC', 'base.cti_division([1],[2])', '1', 'Moy Art. / com.', 'CTI_NBARTMOYCOM', '*CALC', '', 50, 'Nombre moyen d''articles par commande', ' ', ' ', ' ', ' ', ' ', ' ', '', 'CTI_NBCOM#2', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre moyen d''articles par commande', '1QTE', '', '', '', '', '', '', '', '', '0'), | |||
| (1, 'Nombre de commandes', 'V_LIGNES_COMMANDES_X', 'DISTINCT commande_id', '1', 'Nb Com.', 'CTI_NBCOM', 'COUNT', '', 50, 'Nombre de commandes', '2', '3', ' ', ' ', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de commandes', '1QTE', '', '', '', '', '', '', '', '', '0'), | |||
| (1, 'Quantité entrée', 'V_MOUVEMENTS_ARTICLES_X', 'entree_quantite', '1', 'Qté entrée', 'CTI_NBENT', 'SUM', '', 70, 'Quantité entrée', '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Quantité entrée', '1QTE', '', '', '', '', '', '', '', '', '0'), | |||
| (1, 'Quantité entrée (stock)', 'V_MOUVEMENTS_STOCKS_X', 'CASE WHEN gere_en_stock != ''0'' AND date BETWEEN periode AND toperiode AND type_mouvement_id IN ([CLASSE:CTI_TYPMVT:[TEMPLATE_VALUE_1]]) THEN entree_quantite ELSE 0 END', '1', 'Qté [TEMPLATE_TEXT_1] (stock)', 'CTI_NBENTSTO', 'SUM', '#,00E', 90, 'Quantité entrée [TEMPLATE_TEXT_1] (stock)', '5', ' ', ' ', ' ', ' ', '5', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '1', '', 'Type de mouvements d''entrée', '', '', '', '', '', '', '', '', 'Quantité des entrées par type (produit gérés stock)', '', '', '', '', '', '', '', '', '', '1'), | |||
| (1, 'Quantité entrée (stock) - livraison', 'V_MOUVEMENTS_STOCKS_X', 'CASE WHEN gere_en_stock != ''0'' AND date BETWEEN periode AND toperiode AND type_mouvement_id IN ([CLASSE:CTI_TYPMVT:00]) THEN entree_quantite ELSE 0 END', '1', 'Qté livraison (stock)', 'CTI_NBENTSTO#00', 'SUM', '#,00E', 90, 'Quantité entrée livraison (stock)', '5', ' ', ' ', ' ', ' ', '5', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', 'CTI_NBENTSTO', '', '', '', '00', '', '', 'livraison', '', '', '', '', '', '', '', '', '', '', '', '', '0'), | |||
| (1, 'Quantité entrée', 'V_STOCK_MENSUEL_X', 'entree_quantite', '1', 'Qté entrée', 'CTI_NBENTSTOM', 'SUM', '', 70, 'Quantité entrée', '4', ' ', ' ', ' ', ' ', '4', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Quantité entrée', '1QTE', '', '', '', '', '', '', '', '', '0'), | |||
| (1, 'Nombre total de factures', 'V_LIGNES_COMMANDES_X', 'DISTINCT CASE WHEN montant_liquidation_ht != 0 THEN commande_id ELSE null END', '1', 'Nb Fac.', 'CTI_NBFAC', 'COUNT', '', 50, 'Nombre total de factures', '2', '3', ' ', ' ', ' ', '2', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre total de factures', '1QTE', '', '', '', '', '', '', '', '', '0'), | |||
| (1, 'Nombre total de fournisseurs', 'V_LIGNES_COMMANDES_X', 'DISTINCT fournisseur_id', '1', 'Nb Four.', 'CTI_NBFOU', 'COUNT', '', 50, 'Nombre total de fournisseurs', '2', '3', ' ', ' ', ' ', '2', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre total de fournisseurs', '1QTE', '', '', '', '', '', '', '', '', '0'), | |||
| (1, 'Nombre de fournisseurs régionaux', 'V_LIGNES_COMMANDES_X', 'DISTINCT CASE WHEN fournisseur_id in [LISTE:CTI_FOUREG] THEN fournisseur_id ELSE null END', '1', 'Nb Four. regio.', 'CTI_NBFOUREG', 'COUNT', '', 50, 'Nombre de fournisseurs régionaux', '2', '3', ' ', ' ', ' ', '2', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de fournisseurs régionaux', '1QTE', '', '', '', '', '', '', '', '', '1'), | |||
| (1, 'Delais livraison', 'V_LIGNES_COMMANDES_X', 'CASE WHEN ligne_commande_etat_livraison = ''T'' THEN date_reception - date_commande ELSE 0 END', '1', 'Delais livraison', 'CTI_NBJLIV', 'SUM', '', 80, 'Delais livraison', ' ', ' ', ' ', ' ', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', '', '3DUR', '', '', '', '', '', '', '', '', '0'), | |||
| (1, 'Delais paiement fournisseurs', 'V_LIGNES_COMMANDES_X', 'CASE WHEN date_reglement IS NOT NULL THEN delai_paiement ELSE 0 END', '1', 'Delais paiement fournisseurs', 'CTI_NBJPAYFOU', 'SUM', '', 50, 'Delais paiement fournisseurs', '2', '3', ' ', ' ', ' ', '2', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Delais paiement fournisseurs', '3DUR', '', '', '', '', '', '', '', '', '1'), | |||
| (1, 'Durée période', 'V_MOUVEMENTS_STOCKS_X', 'date( toperiode) - date( periode)', '1', 'Durée période', 'CTI_NBJPER', 'MIN', '', 50, 'Durée période', '5', ' ', ' ', ' ', ' ', '5', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Durée période', '3DUR', '', '', '', '', '', '', '', '', '1'), | |||
| (1, 'Nombre de litiges, de retard...', 'V_LIGNES_COMMANDES_X', 'DISTINCT CASE WHEN date_reception > date_livraison_prevue + 10 OR quantite_non_livraison_approvisionnement > 0 THEN commande_id ELSE null END', '1', 'Nb litiges...', 'CTI_NBLIRET', 'COUNT', '', 50, 'Nombre de litiges, de retard...', ' ', ' ', ' ', ' ', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de lignes de commandes où les produits n''ont pas été livrées en intégralité et nombre de livraison supérieure à 10 jours', '1QTE', '', '', '', '', '', '', '', '', '0'), | |||
| (1, 'Nombre de livraisons > 10 jours', 'V_LIGNES_COMMANDES_X', 'DISTINCT CASE WHEN date_reception > date_livraison_prevue + 10 THEN commande_id ELSE null END', '1', 'Nb com. non liv. 10 j.', 'CTI_NBLIV10', 'COUNT', '', 80, 'Nombre de livraison supérieures à 10 jours', ' ', ' ', ' ', ' ', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de lignes de commandes où les produits n''ont pas été livrées en intégralité dans les 10 jours', '1QTE', '', '', '', '', '', '', '', '', '0'), | |||
| (1, 'Nombre de mouvements', 'V_MOUVEMENTS_ARTICLES_X', '1', '1', 'Nb mouvements', 'CTI_NBMVT', 'SUM', '', 50, 'Nombre de mouvements', '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de mouvements', '1QTE', '', '', '', '', '', '', '', '', '0'), | |||
| (1, 'Nombre de commandes non livrées en totalité', 'V_LIGNES_COMMANDES_X', 'DISTINCT CASE WHEN quantite_non_livraison_approvisionnement > 0 THEN commande_id ELSE null END', '1', 'Nb com. non liv. tot.', 'CTI_NBNLI', 'COUNT', '', 80, 'Nombre de commandes incomplètes', '2', '3', ' ', ' ', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre de lignes de commandes où les produits n''ont pas été livrées en intégralité', '1QTE', '', '', '', '', '', '', '', '', '0'), | |||
| (1, 'Nombre de rupture de stocks', 'V_MOUVEMENTS_STOCKS_X', 'CASE WHEN est_dernier_jour = 1 AND stock_quantite_fin < 0 and gere_en_stock != ''0'' THEN 1 ELSE 0 END', '1', 'Nb ruptures', 'CTI_NBRUPSTO', 'SUM', '', 50, 'Nombre de rupture de stocks', '5', ' ', ' ', ' ', ' ', '5', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre d''occurence d''une quantité de stock négative pour un produit géré en stock', '', '', '', '', '', '', '', '', '', '0'), | |||
| (1, 'Quantité sortie (stock)', 'V_MOUVEMENTS_STOCKS_X', 'CASE WHEN gere_en_stock != ''0'' AND date BETWEEN periode AND toperiode AND type_mouvement_id IN ([CLASSE:CTI_TYPMVT:[TEMPLATE_VALUE_1]]) AND unite_fonctionnelle_id NOT IN [LISTE:CTI_UFPER] THEN sortie_quantite ELSE 0 END', '1', 'Qté [TEMPLATE_TEXT_1] (stock)', 'CTI_NBSORSTO', 'SUM', '#,00E', 90, 'Quantité sortie [TEMPLATE_TEXT_1] (stock)', '5', ' ', ' ', ' ', ' ', '5', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '1', '', 'Type de mouvements de sortie', '', '', '', '', '', '', '', '', 'Quantité sortie (produits gérés en stock)', '', '', '', '', '', '', '', '', '', '1'), | |||
| (1, 'Quantité sortie (stock) - consommations', 'V_MOUVEMENTS_STOCKS_X', 'CASE WHEN gere_en_stock != ''0'' AND date BETWEEN periode AND toperiode AND type_mouvement_id IN ([CLASSE:CTI_TYPMVT:01]) AND unite_fonctionnelle_id NOT IN [LISTE:CTI_UFPER] THEN sortie_quantite ELSE 0 END', '1', 'Qté consommations (stock)', 'CTI_NBSORSTO#01', 'SUM', '#,00E', 90, 'Quantité sortie consommations (stock)', '5', ' ', ' ', ' ', ' ', '5', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', 'CTI_NBSORSTO', '', '', '', '01', '', '', 'consommations', '', '', '', '', '', '', '', '', '', '', '', '', '0'), | |||
| (1, 'Quantité sortie', 'V_MOUVEMENTS_ARTICLES_X', 'sortie_quantite', '1', 'Qté sortie', 'CTI_NBSORT', 'SUM', '', 70, 'Quantité sortie', '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Quantité sortie', '1QTE', '', '', '', '', '', '', '', '', '0'), | |||
| (1, 'Quantité sortie', 'V_STOCK_MENSUEL_X', 'sortie_quantite', '1', 'Qté sortie', 'CTI_NBSORTSTO', 'SUM', '', 70, 'Quantité sortie', '4', ' ', ' ', ' ', ' ', '4', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Quantité sortie', '1QTE', '', '', '', '', '', '', '', '', '0'), | |||
| (1, 'Nombres de lignes de commandes', 'V_LIGNES_COMMANDES_X', 'DISTINCT ligne_commande_id', '1', 'Nb Lignes Com.', 'CTI_NB_LIGCOM', 'COUNT', '', 50, 'Nombres de lignes de commandes', '2', '3', ' ', ' ', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombres de lignes de commandes', '1QTE', '', '', '', '', '', '', '', '', '0'), | |||
| (1, 'Prix Unitaire HT Calculé', 'V_MOUVEMENTS_ARTICLES_X', '(MAX(ARRAY[CASE WHEN est_dernier_jour = ''1'' THEN date::text ELSE ''1900-01-01''::text END,round(prix_unitaire_calcule,2)::text]))[2]::numeric', '1', 'PU HT', 'CTI_PUCALC', '', '#,00E', 60, 'PU HT', '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Prix Unitaire Calculé HT (Calul d''après les stocks mensuels et les livraisons)', '', '', '', '', '', '', '', '', '', '0'), | |||
| (1, 'Prix Unitaire HT (dernier)', 'V_LIGNES_COMMANDES_X', '((MAX(ARRAY[date_commande::text,base.cti_division(CASE WHEN montant_commande_ht > 0 THEN montant_commande_ht ELSE 0 END,CASE WHEN montant_commande_ht > 0 THEN quantite_approvisionnement ELSE 0 END)::text]))[2]::numeric)', '1', 'PU HT (dernier)', 'CTI_PULHT', 'CUSTOM', '#,0000E', 60, 'Dernier Prix Unitaire HT', '2', ' ', ' ', ' ', ' ', '2', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Dernier Prix Unitaire HT (commande)', '2MNT', '', '', '', '', '', '', '', '', '0'), | |||
| (1, 'Prix Unitaire TTC (dernier)', 'V_MOUVEMENTS_ARTICLES_X', '((MAX(ARRAY[date::text,CASE WHEN prix_unitaire > 0 THEN prix_unitaire ELSE 0 END::text]))[2]::numeric)', '1', 'PU TTC (dernier)', 'CTI_PULMVT', '', '#,0000E', 60, 'PU TTC (dernier)', '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Dernier Prix Unitaire TTC', '2MNT', '', '', '', '', '', '', '', '', '0'), | |||
| (1, 'Prix Unitaire TTC (dernier)', 'V_LIGNES_COMMANDES_X', '(MAX(ARRAY[date_commande::text,base.cti_division(CASE WHEN montant_commande_ttc > 0 THEN montant_commande_ttc ELSE 0 END,CASE WHEN montant_commande_ttc > 0 THEN quantite_approvisionnement ELSE 0 END)::text]))[2]::numeric', '1', 'PU TTC (dernier)', 'CTI_PULTTC', '', '#,0000E', 60, 'Dernier Prix Unitaire TTC', '2', ' ', ' ', ' ', ' ', '2', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Dernier Prix Unitaire TTC', '2MNT', '', '', '', '', '', '', '', '', '0'), | |||
| (1, 'Prix Unitaire Moyen', '*CALC', 'base.cti_division([1],[2])', '1', 'PU Moy.', 'CTI_PUMOY', '*CALC', '#,0000E', 60, 'Prix Unitaire Moyen', ' ', ' ', ' ', ' ', ' ', ' ', 'CTI_MNTSTOFIN', 'CTI_QTESTOFIN', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Prix Unitaire Moyen', '2MNT', '1QTE', '', '', '', '', '', '', '', '0'), | |||
| (1, 'Prix Unitaire Moyen liquidation TTC', '*CALC', 'base.cti_division([1],[2])', '1', 'PU Moy. TTC', 'CTI_PUMOYCOM', '*CALC', '#,0000E', 60, 'Prix Unitaire Moyen TTC', ' ', ' ', ' ', ' ', ' ', ' ', 'CTI_MNTPAYTTC#2', 'CTI_QTELIV#2', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Prix Unitaire Moyen (Montant liquidation TTC / quantié livrée)', '2MNT', '1QTE', '', '', '', '', '', '', '', '0'), | |||
| (1, 'PUMP (moyen)', '*CALC', 'base.cti_division([1]+[2],[3]+[4])', '1', 'PUMP Moy.', 'CTI_PUMOYMVT', '*CALC', '#,0000E', 60, 'PUMP moyen', ' ', ' ', ' ', ' ', ' ', ' ', 'CTI_MTENTHT', 'CTI_MTSORHT', 'CTI_NBENT', 'CTI_NBSORT', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Prix Unitaire Moyen Pondéré (global)', '2MNT', '1QTE', '', '', '', '', '', '', '', '0'), | |||
| (1, 'Quantité commandée', 'V_LIGNES_COMMANDES_X', 'quantite_approvisionnement', '1', 'Qté Com.', 'CTI_QTECOM', 'SUM', '', 70, 'Quantité commandé', '2', '3', ' ', ' ', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Quantité commandé', '1QTE', '', '', '', '', '', '', '', '', '0'), | |||
| (1, 'Quantité Stock calculé début période', 'V_MOUVEMENTS_STOCKS_X', 'CASE WHEN gere_en_stock != ''0'' AND est_dernier_jour = 1 and date < periode THEN stock_quantite_fin WHEN gere_en_stock != ''0'' AND date = periode and est_premier_jour = 1 THEN stock_quantite_debut ELSE 0 END', '1', 'Qté Stock début', 'CTI_QTEDEBMVT', 'SUMFIRSTMONTH', '', 70, 'Quantité Stock calculé début période', '5', ' ', ' ', ' ', ' ', '5', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0'), | |||
| (1, 'Quantité Ecart', 'V_MOUVEMENTS_ARTICLES_X', 'entree_quantite-sortie_quantite', '1', 'Qté Ecart', 'CTI_QTEECAENTSOR', 'SUM', '', 70, 'Quantité écart', '1', ' ', ' ', ' ', ' ', '1', 'CTI_NBENT', 'CTI_NBSORT', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Différence entre les quantités entrées et sorties', '1QTE', '', '', '', '', '', '', '', '', '0'), | |||
| (1, 'Quantité Ecart', '*CALC', '', '1', 'Qté Ecart', 'CTI_QTEECAMVS', '*CALC', '', 70, 'Quantité écart', ' ', ' ', ' ', ' ', ' ', ' ', 'CTI_NBENTSTO#00', 'CTI_NBENTSTO#00', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Différence entre les quantités livrées et consommées', '1QTE', '', '', '', '', '', '', '', '', '0'), | |||
| (1, 'Quantité Ecart', 'V_STOCK_MENSUEL_X', 'entree_quantite-sortie_quantite', '1', 'Qté Ecart', 'CTI_QTEECASTO', 'SUM', '', 70, 'Quantité écart', '4', ' ', ' ', ' ', ' ', '4', 'CTI_NBENT', 'CTI_NBSORT', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Différence entre les quantités entrées et sorties', '1QTE', '', '', '', '', '', '', '', '', '0'), | |||
| (1, 'Quantité livrée', 'V_LIGNES_COMMANDES_X', 'quantite_livraison_approvisionnement', '1', 'Qté livrée.', 'CTI_QTELIV', 'SUM', '', 80, 'Quantité livrée', '2', '3', ' ', ' ', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Quantité commandé', '1QTE', '', '', '', '', '', '', '', '', '0'), | |||
| (1, 'Quantité Stock calculé fin période', 'V_MOUVEMENTS_STOCKS_X', 'CASE WHEN gere_en_stock != ''0'' AND date_fin > toperiode AND est_dernier_jour = 1 THEN stock_quantite_fin ELSE 0 END', '1', 'Qté Stock fin', 'CTI_QTEMVTFIN', 'SUMLASTMONTH', '', 70, 'Quantité Stock calculé fin période', '5', ' ', ' ', ' ', ' ', '5', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0'), | |||
| (1, 'Quantité non livrée', 'V_LIGNES_COMMANDES_X', 'quantite_non_livraison_approvisionnement', '1', 'Qté non liv.', 'CTI_QTENLIV', 'SUM', '', 80, 'Quantité non livrée', '2', '3', ' ', ' ', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Quantité non livrée', '1QTE', '', '', '', '', '', '', '', '', '0'), | |||
| (1, 'Quantité Stock début période', 'V_STOCK_MENSUEL_X', 'CASE WHEN date_debut = periode THEN stock_quantite_debut ELSE 0 END', '1', 'Qté Stock debut', 'CTI_QTESTODEB', 'SUMFIRSTMONTH', '', 70, 'Quantité Stock début période', '4', ' ', ' ', ' ', ' ', '4', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', '', '1QTE', '', '', '', '', '', '', '', '', '0'), | |||
| (1, 'Quantité Stock calculé début', 'V_MOUVEMENTS_ARTICLES_X', '(MIN(ARRAY[CASE WHEN est_premier_jour = ''1'' THEN date::text ELSE ''2099-12-31''::text END,stock_quantite_debut::text]))[2]::numeric', '1', 'Qté Stock début', 'CTI_QTESTODEBMVT', '', '', 70, 'Quantité Stock calculé en début de mouvement', '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0'), | |||
| (1, 'Quantité Stock fin période', 'V_STOCK_MENSUEL_X', 'CASE WHEN date_fin = toperiode THEN stock_quantite_fin ELSE 0 END', '1', 'Qté Stock fin', 'CTI_QTESTOFIN', 'SUMLASTMONTH', '', 70, 'Quantité Stock fin période', '4', ' ', ' ', ' ', ' ', '4', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', '', '1QTE', '', '', '', '', '', '', '', '', '0'), | |||
| (1, 'Quantité Stock calculé fin', 'V_MOUVEMENTS_ARTICLES_X', '(MAX(ARRAY[CASE WHEN est_dernier_jour = ''1'' THEN date::text ELSE ''1900-01-01''::text END,,stock_quantite_fin::text]))[2]::numeric', '1', 'Qté Stock fin', 'CTI_QTESTOFINMVT', '', '', 70, 'Quantité Stock calculé fin de mouvement', '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0'), | |||
| (1, 'Quantité stock moyen (mouvements)', '*CALC', 'base.cti_division([1]+[2],2)', '1', 'Qté. Stock moy.', 'CTI_QTESTOMOYMVT', '*CALC', '#,00E', 90, 'Quantité stock moyen (mouvements)', ' ', ' ', ' ', ' ', ' ', ' ', 'CTI_QTEDEBMVT', 'CTI_QTEMVTFIN', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Quantité de stock moyen (quantité stock début (achat) + quantité stock fin (achat) /2)', '', '', '', '', '', '', '', '', '', '0'), | |||
| (1, 'Calcul d''indicateurs dans le rapport', '*RAPPORTCALC', '', '1', '', 'CTI_RAPPORTCALC', 'sum', '#', 50, '', '0', ' ', ' ', ' ', ' ', '0', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Pour calculer directement dans la définition du rapport', '', '', '', '', '', '', '', '', '', '1'), | |||
| (1, 'Date de réception', 'V_LIGNES_COMMANDES_X', 'CASE WHEN COUNT(DISTINCT(date_reception)) = 1 THEN MAX(date_reception)::text ELSE '''' END', '1', 'Date de réception', 'CTI_RECDATE', '*LIST', 'DD/MM/YYYY', 65, 'Date de réception', ' ', ' ', ' ', ' ', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Date de réception', '3DUR', '', '', '', '', '', '', '', '', '0'), | |||
| (1, 'Référence commande', 'V_LIGNES_COMMANDES_X', 'CASE WHEN COUNT(DISTINCT commande_reference) = 1 THEN MAX(commande_reference) ELSE '''' END', '1', 'Réference commande', 'CTI_REFCOM', '*LIST', '', 50, 'Réference commande', ' ', ' ', ' ', ' ', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Référence commande', '', '', '', '', '', '', '', '', '', '0'), | |||
| (1, 'Rotation du stock par rapport aux entrées', '*CALC', 'round(base.cti_division([3],base.cti_division([1]+[2],2)),0)', '1', 'Rotation du stock / entrées', 'CTI_ROTSTOACH', '*CALC', '', 50, 'Rotation du stock / entrées', ' ', ' ', ' ', ' ', ' ', ' ', 'CTI_MNTSTOFIN', 'CTI_QTESTOFIN', 'CTI_MTENTSTO', 'CTI_NBJPER', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Rapport entre les achats sur la période et le stock moyen (valeur stock début + valeur stock fin / 2)', '2MNT', '1QTE', '3DUR', '', '', '', '', '', '', '1'), | |||
| (1, 'Rotation du stock calculé par rapport aux achat', '*CALC', 'round(base.cti_division([3],base.cti_division([1]+[2],2)),0)', '1', 'Rotation du stock / achat', 'CTI_ROTSTOMVTACH', '*CALC', '', 50, 'Rotation du stock calculé / achat', ' ', ' ', ' ', ' ', ' ', ' ', 'CTI_MNTSTOFINACHAT', 'CTI_QTEDEBMVT', 'CTI_MTENTTTCSTO-2#00', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Rapport entre les achats sur la période et le stock moyen (valeur stock début + valeur stock fin / 2)', '2MNT', '', '', '', '', '', '', '', '', '0'), | |||
| (1, 'Rotation du stock calculé par rapport aux ventes', '*CALC', 'round(base.cti_division(365*[3]/[4],([1]+[2])/2),0)', '1', 'Rotation du stock / vente', 'CTI_ROTSTOMVTVEN', '*CALC', '', 50, 'Rotation du stock calculé / vente', ' ', ' ', ' ', ' ', ' ', ' ', 'CTI_MNTSTOFINACHAT', 'CTI_MNTSTODEBACHAT', 'CTI_MTSORTTCSTO-2#01', 'CTI_NBJPER', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Rapport entre le CA TTC et le stock moyen (valeur stock début + valeur stock fin / 2) sur période', '2MNT', '3DUR', '', '', '', '', '', '', '', '0'), | |||
| (1, 'Rotation du stock par rapport aux sorties', '*CALC', 'roud(base.cti_division(365*[3]/[4],([1]+[2])/2))', '1', 'Rotation du stock / sorties', 'CTI_ROTSTOVEN', '*CALC', '', 50, 'Rotation du stock / sorties', ' ', ' ', ' ', ' ', ' ', ' ', 'CTI_MNTSTOFIN', 'CTI_MNTSTODEB', 'CTI_MTSORTSTO', 'CTI_NBJPER', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Rapport entre le CA TTC et le stock moyen (valeur stock début + valeur stock fin / 2) sur période', '2MNT', '3DUR', '', '', '', '', '', '', '', '0'), | |||
| (1, 'Séparateur', 'SEP', '', '1', '', 'CTI_SEP', 'SEP', '#', 0, '', '0', ' ', ' ', ' ', ' ', '0', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0'), | |||
| (1, 'Code du site', 'TABSITE', 'CASE WHEN COUNT(DISTINCT site_code) = 1 THEN MAX(site_code) ELSE '''' END', '1', 'Site', 'CTI_SITECODE', '*LIST', '', 30, 'Code du site', '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Code du site', '', '', '', '', '', '', '', '', '', '0'), | |||
| (1, 'Durée stock moyen (jours)', '*CALC', 'round(365*base.cti_division(([1]+[2])/2,365*[3]/[4]),0)', '1', 'Stock moyen (j)', 'CTI_STOMOYJ', '*CALC', '#j', 50, 'Durée stock moyen (jours)', ' ', ' ', ' ', ' ', ' ', ' ', 'CTI_MNTSTOFINACHAT', 'CTI_MNTSTODEBACHAT', 'CTI_MTSORHT', 'CTI_NBJPER', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Rapport entre les ventes et le stock moyen (valeur stock début + valeur stock fin /2) ramené à l''année', '2MNT', '3DUR', '', '', '', '', '', '', '', '0'), | |||
| (1, 'PUMP début période', 'V_STOCK_MENSUEL_X', 'CASE WHEN date_debut = periode THEN pump ELSE 0 END', '1', 'PUMP déb. période', 'CTI_STOPUMPDEB', 'SUMFIRSTMONTH', '#,0000E', 60, 'PUMP début période', '4', ' ', ' ', ' ', ' ', '4', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Prix Unitaire Moyen Pondéré', '2MNT', '', '', '', '', '', '', '', '', '0'), | |||
| (1, 'PUMP fin période', 'V_STOCK_MENSUEL_X', 'CASE WHEN date_fin = toperiode THEN pump ELSE 0 END', '1', 'PUMP fin période', 'CTI_STOPUMPFIN', 'SUMLASTMONTH', '#,0000E', 60, 'PUMP fin période', '4', ' ', ' ', ' ', ' ', '4', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Prix Unitaire Moyen Pondéré', '2MNT', '', '', '', '', '', '', '', '', '0'), | |||
| (1, 'Nombre moyen de références actives par fournisseur', '*CALC', 'base.cti_division([1],[2])', '1', 'Nb moyen réf actives / four.', 'CTI_TXARTFOU', '*CALC', '', 50, 'Nombre moyen de références actives par fournisseur', ' ', ' ', ' ', ' ', ' ', ' ', 'CTI_NBART', 'CTI_NBFOU#2', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Nombre moyen de références actives par fournisseur', '1QTE', '', '', '', '', '', '', '', '', '1'), | |||
| (1, 'Taux d''achats auprès des fournisseurs références', '*CALC', '100*base.cti_division([1],[2])', '1', 'Tx Fou. Ref.', 'CTI_TXFOUGR', '*CALC', '#,00%', 50, 'Taux d''achats auprès des fournisseurs références', ' ', ' ', ' ', ' ', ' ', ' ', 'CTI_MTFOUGR#2', 'CTI_MTACHA#2', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Taux d''achats auprès des fournisseurs références', '4TAUX', '2MNT', '', '', '', '', '', '', '', '1'), | |||
| (1, 'Taux de fournisseurs régionaux', '*CALC', '100*base.cti_division([1],[2])', '1', 'Tx Four. Reg.', 'CTI_TXFOUREG', '*CALC', '#,00%', 50, 'Taux fournisseurs de régionaux', ' ', ' ', ' ', ' ', ' ', ' ', 'CTI_NBFOUREG#2', 'CTI_NBFOU#2', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Taux de fournisseurs régionaux', '4TAUX', '1QTE', '', '', '', '', '', '', '', '1'), | |||
| (1, 'Taux de litiges, taux de retard...', '*CALC', '100*base.cti_division([1],[2])', '1', 'Tx litiges...', 'CTI_TXLIRET', '*CALC', '#,00%', 50, 'Taux de litiges, taux de retard...', ' ', ' ', ' ', ' ', ' ', ' ', 'CTI_NBLIRET', 'CTI_NBCOM#2', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Taux de litiges (livraison incomplète) et de retard (livraison > 10 jours)', '4TAUX', '1QTE', '', '', '', '', '', '', '', '0'), | |||
| (1, 'Taux de Marge', '*CALC', '100*(base.cti_division([5],[2]) - (base.cti_division([3],[4])))', '1', 'Tx Marge', 'CTI_TXMARGSTO', '*CALC', '#,00%', 50, 'Taux de Marge', ' ', ' ', ' ', ' ', ' ', ' ', 'CTI_MNTSTOFIN', 'CTI_MTENTSTO', 'CTI_NBSORTSTO', 'CTI_NBENTSTO', 'CTI_MTSORTSTO', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', '(nombre de sorties * (montant des sorties/nombre sorties - montant des entrées/nombre d''entrées)) / montant_entree', '4TAUX', '1QTE', '2MNT', '', '', '', '', '', '', '1'), | |||
| (1, 'Taux de Marque', '*CALC', '100*(CASE WHEN [1] > 0 AND [2] > 0 THEN 1 - base.cti_division([2]*[3],[4]*[1]) ELSE 0 END)', '1', 'Tx Marque', 'CTI_TXMARQSTO', '*CALC', '#,00%', 50, 'Taux de Marque', ' ', ' ', ' ', ' ', ' ', ' ', 'CTI_MTSORTTCSTO-2#01', 'CTI_MTENTTTCSTO-2#00', 'CTI_NBSORSTO#01', 'CTI_NBENTSTO#00', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Pour les articles ayant des mouvements d''entrées et de sortie, (nombre de sorties * (montant des sorties/nombre sorties - montant des entrées/nombre d''entrées)) / montant sortie, 0 sinon', '4TAUX', '1QTE', '2MNT', '', '', '', '', '', '', '1'), | |||
| (1, 'Taux de Marge', '*CALC', '100*(base.cti_division([5],[2]) - (base.cti_division([3],[4])))', '1', 'Tx Marge', 'CTI_TXMRG', '*CALC', '#,00%', 50, 'Taux de Marge', ' ', ' ', ' ', ' ', ' ', ' ', 'CTI_MNTSTOFINACHAT', 'CTI_MTENTTTCSTO-2#00', 'CTI_NBSORSTO#01', 'CTI_NBENTSTO#00', 'CTI_MTSORTTCSTO-2#01', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', '(nombre de sorties * (montant des sorties/nombre sorties - montant des entrées/nombre d''entrées)) / montant_entree', '1QTE', '2MNT', '', '', '', '', '', '', '', '1'), | |||
| (1, 'Taux de Marque', '*CALC', '100*(CASE WHEN [5] > 0 THEN 1 - base.cti_division([2]*[3],[4]*[5]) ELSE 0 END)', '1', 'Tx Marque', 'CTI_TXMRQ', '*CALC', '#,00%', 50, 'Taux de Marque', ' ', ' ', ' ', ' ', ' ', ' ', 'CTI_MNTSTOFINACHAT', 'CTI_MTENT', 'CTI_NBSORT', 'CTI_NBENT', 'CTI_MTSORT', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', '(nombre de sorties * (montant des sorties/nombre sorties - montant des entrées/nombre d''entrées)) / montant sortie', '4TAUX', '1QTE', '2MNT', '', '', '', '', '', '', '1'), | |||
| (1, 'Code de l''Unité d''approvisionnement', 'TABUNIT', 'CASE WHEN COUNT(DISTINCT unite_approvisionnement_article_id) = 1 AND MAX(unite_approvisionnement_article_id) <> 0 AND MAX(unite_approvisionnement_article_code) <> ''UN'' THEN MAX(unite_approvisionnement_article_code) ELSE '''' END', '1', 'Unité', 'CTI_UAPCODE', '*LIST', '', 30, 'Code de l''Unité d''approvisionnement', '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Unité d''approvisionnement', '', '', '', '', '', '', '', '', '', '0'), | |||
| (1, 'Code de l''Unité Fonctionnelle', 'TABUF', 'CASE WHEN COUNT(DISTINCT unite_fonctionnelle_code) = 1 THEN MAX(unite_fonctionnelle_code) ELSE '''' END', '1', 'UF', 'CTI_UFCODE', '*LIST', '', 30, 'Code de l''UF', '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Code de l''Unite Fonctionnelle', '', '', '', '', '', '', '', '', '', '0'), | |||
| (1, 'Code de l''Unité de stockage', 'TABUNIT', 'CASE WHEN COUNT(DISTINCT unite_stockage_article_id) = 1 AND MAX(unite_stockage_article_id) <> 0 AND MAX(unite_stockage_article_code) <> ''UN'' THEN MAX(unite_stockage_article_code) ELSE '''' END', '1', 'Unité', 'CTI_USTOCODE', '*LIST', '', 30, 'Code de l''Unité de stockage', '1', ' ', ' ', ' ', ' ', '1', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', '', '', '', '', '', '', '', 'Unité de stockage', '', '', '', '', '', '', '', '', '', '0') | |||
| ; | |||
| -- 3/3 : Màj de la table iCTI | |||
| DELETE FROM eco.t_indicateurs | |||
| USING | |||
| ( | |||
| SELECT code, MIN(oid) AS minoid FROM eco.t_indicateurs WHERE code <> '' GROUP BY 1 HAVING count(*) > 1 | |||
| ) subview | |||
| WHERE t_indicateurs.code = subview.code AND t_indicateurs.oid <> subview.minoid; | |||
| UPDATE eco.t_indicateurs SET | |||
| texte = w_dbsetup.texte, | |||
| table_name = w_dbsetup.table_name, | |||
| column_name = w_dbsetup.column_name, | |||
| is_cti = w_dbsetup.is_cti, | |||
| entete = w_dbsetup.entete, | |||
| entete_etendue = w_dbsetup.entete_etendue, | |||
| total_function = w_dbsetup.total_function, | |||
| output_format = w_dbsetup.output_format, | |||
| width = w_dbsetup.width, | |||
| dimension_date_1 = w_dbsetup.dimension_date_1, | |||
| dimension_date_2 = w_dbsetup.dimension_date_2, | |||
| dimension_date_3 = w_dbsetup.dimension_date_3, | |||
| dimension_date_4 = w_dbsetup.dimension_date_4, | |||
| dimension_date_5 = w_dbsetup.dimension_date_5, | |||
| dimension_date = w_dbsetup.dimension_date, | |||
| is_template = w_dbsetup.is_template, | |||
| variable_definition = ARRAY[variable_definition_1,variable_definition_2,variable_definition_3] , | |||
| variable_value = ARRAY[variable_value_1,variable_value_2,variable_value_3], | |||
| variable_value_text = ARRAY[variable_value_text_1,variable_value_text_2,variable_value_text_3], | |||
| description = w_dbsetup.description, | |||
| is_hide = CASE WHEN t_indicateurs.is_hide = '1' THEN '1' ELSE w_dbsetup.is_hide END | |||
| FROM w_dbsetup | |||
| WHERE t_indicateurs.code = w_dbsetup.code; | |||
| -- Ajout des indicateurs | |||
| INSERT INTO eco.t_indicateurs(texte, | |||
| table_name, | |||
| column_name, | |||
| is_cti, | |||
| entete, | |||
| entete_etendue, | |||
| code, | |||
| total_function, | |||
| output_format, | |||
| width, | |||
| dimension_date_1, | |||
| dimension_date_2, | |||
| dimension_date_3, | |||
| dimension_date_4, | |||
| dimension_date_5, | |||
| dimension_date, | |||
| is_template, | |||
| variable_definition, | |||
| variable_value, | |||
| variable_value_text, | |||
| description, | |||
| is_hide | |||
| ) | |||
| SELECT texte, | |||
| table_name, | |||
| column_name, | |||
| is_cti, | |||
| entete, | |||
| entete_etendue, | |||
| code, | |||
| total_function, | |||
| output_format, | |||
| width, | |||
| dimension_date_1, | |||
| dimension_date_2, | |||
| dimension_date_3, | |||
| dimension_date_4, | |||
| dimension_date_5, | |||
| dimension_date, | |||
| is_template, | |||
| ARRAY[variable_definition_1,variable_definition_2,variable_definition_3] , | |||
| ARRAY[variable_value_1,variable_value_2,variable_value_3], | |||
| ARRAY[variable_value_text_1,variable_value_text_2,variable_value_text_3], | |||
| description, | |||
| is_hide | |||
| FROM w_dbsetup WHERE oid <> 0 AND code NOT IN (SELECT code FROM eco.t_indicateurs WHERE code IS NOT NULL); | |||
| -- Thèmes | |||
| UPDATE eco.t_indicateurs SET | |||
| theme_id = ARRAY[ | |||
| t_indicateur_theme_1.oid, | |||
| t_indicateur_theme_2.oid, | |||
| t_indicateur_theme_3.oid, | |||
| t_indicateur_theme_4.oid, | |||
| t_indicateur_theme_5.oid, | |||
| t_indicateur_theme_6.oid, | |||
| t_indicateur_theme_7.oid, | |||
| t_indicateur_theme_8.oid, | |||
| t_indicateur_theme_9.oid | |||
| ] | |||
| FROM w_dbsetup | |||
| LEFT JOIN eco.t_indicateur_theme t_indicateur_theme_1 ON w_dbsetup.theme_1_code = t_indicateur_theme_1.code | |||
| LEFT JOIN eco.t_indicateur_theme t_indicateur_theme_2 ON w_dbsetup.theme_2_code = t_indicateur_theme_2.code | |||
| LEFT JOIN eco.t_indicateur_theme t_indicateur_theme_3 ON w_dbsetup.theme_3_code = t_indicateur_theme_3.code | |||
| LEFT JOIN eco.t_indicateur_theme t_indicateur_theme_4 ON w_dbsetup.theme_4_code = t_indicateur_theme_4.code | |||
| LEFT JOIN eco.t_indicateur_theme t_indicateur_theme_5 ON w_dbsetup.theme_5_code = t_indicateur_theme_5.code | |||
| LEFT JOIN eco.t_indicateur_theme t_indicateur_theme_6 ON w_dbsetup.theme_6_code = t_indicateur_theme_6.code | |||
| LEFT JOIN eco.t_indicateur_theme t_indicateur_theme_7 ON w_dbsetup.theme_7_code = t_indicateur_theme_7.code | |||
| LEFT JOIN eco.t_indicateur_theme t_indicateur_theme_8 ON w_dbsetup.theme_8_code = t_indicateur_theme_8.code | |||
| LEFT JOIN eco.t_indicateur_theme t_indicateur_theme_9 ON w_dbsetup.theme_9_code = t_indicateur_theme_9.code | |||
| WHERE t_indicateurs.code = w_dbsetup.code AND | |||
| theme_id IS DISTINCT FROM ARRAY[ | |||
| t_indicateur_theme_1.oid, | |||
| t_indicateur_theme_2.oid, | |||
| t_indicateur_theme_3.oid, | |||
| t_indicateur_theme_4.oid, | |||
| t_indicateur_theme_5.oid, | |||
| t_indicateur_theme_6.oid, | |||
| t_indicateur_theme_7.oid, | |||
| t_indicateur_theme_8.oid, | |||
| t_indicateur_theme_9.oid | |||
| ] | |||
| ; | |||
| -- Mise à jour des références | |||
| UPDATE eco.t_indicateurs SET | |||
| indicateur_associe_1_id = COALESCE(t_indicateurs_1.oid,0), | |||
| indicateur_associe_2_id = COALESCE(t_indicateurs_2.oid,0), | |||
| indicateur_associe_3_id = COALESCE(t_indicateurs_3.oid,0), | |||
| indicateur_associe_4_id = COALESCE(t_indicateurs_4.oid,0), | |||
| indicateur_associe_5_id = COALESCE(t_indicateurs_5.oid,0), | |||
| indicateur_associe_6_id = COALESCE(t_indicateurs_6.oid,0), | |||
| indicateur_associe_7_id = COALESCE(t_indicateurs_7.oid,0), | |||
| indicateur_associe_8_id = COALESCE(t_indicateurs_8.oid,0), | |||
| indicateur_associe_9_id = COALESCE(t_indicateurs_9.oid,0), | |||
| indicateur_associe_10_id = COALESCE(t_indicateurs_10.oid,0), | |||
| indicateur_associe_11_id = COALESCE(t_indicateurs_11.oid,0), | |||
| indicateur_associe_12_id = COALESCE(t_indicateurs_12.oid,0), | |||
| indicateur_associe_13_id = COALESCE(t_indicateurs_13.oid,0), | |||
| indicateur_associe_14_id = COALESCE(t_indicateurs_14.oid,0), | |||
| indicateur_associe_15_id = COALESCE(t_indicateurs_15.oid,0), | |||
| indicateur_associe_16_id = COALESCE(t_indicateurs_16.oid,0), | |||
| indicateur_associe_17_id = COALESCE(t_indicateurs_17.oid,0), | |||
| indicateur_associe_18_id = COALESCE(t_indicateurs_18.oid,0), | |||
| indicateur_associe_19_id = COALESCE(t_indicateurs_19.oid,0), | |||
| indicateur_associe_20_id = COALESCE(t_indicateurs_20.oid,0), | |||
| indicateur_reference_id = COALESCE(t_indicateurs_reference.oid,0), | |||
| indicateur_template_id = COALESCE(t_indicateurs_template.oid,0) | |||
| FROM w_dbsetup | |||
| LEFT JOIN eco.t_indicateurs t_indicateurs_1 ON (w_dbsetup.indicateur_associe_1_code = t_indicateurs_1.code AND w_dbsetup.indicateur_associe_1_code <> '') | |||
| LEFT JOIN eco.t_indicateurs t_indicateurs_2 ON (w_dbsetup.indicateur_associe_2_code = t_indicateurs_2.code AND w_dbsetup.indicateur_associe_2_code <> '') | |||
| LEFT JOIN eco.t_indicateurs t_indicateurs_3 ON (w_dbsetup.indicateur_associe_3_code = t_indicateurs_3.code AND w_dbsetup.indicateur_associe_3_code <> '') | |||
| LEFT JOIN eco.t_indicateurs t_indicateurs_4 ON (w_dbsetup.indicateur_associe_4_code = t_indicateurs_4.code AND w_dbsetup.indicateur_associe_4_code <> '') | |||
| LEFT JOIN eco.t_indicateurs t_indicateurs_5 ON (w_dbsetup.indicateur_associe_5_code = t_indicateurs_5.code AND w_dbsetup.indicateur_associe_5_code <> '') | |||
| LEFT JOIN eco.t_indicateurs t_indicateurs_6 ON (w_dbsetup.indicateur_associe_6_code = t_indicateurs_6.code AND w_dbsetup.indicateur_associe_6_code <> '') | |||
| LEFT JOIN eco.t_indicateurs t_indicateurs_7 ON (w_dbsetup.indicateur_associe_7_code = t_indicateurs_7.code AND w_dbsetup.indicateur_associe_7_code <> '') | |||
| LEFT JOIN eco.t_indicateurs t_indicateurs_8 ON (w_dbsetup.indicateur_associe_8_code = t_indicateurs_8.code AND w_dbsetup.indicateur_associe_8_code <> '') | |||
| LEFT JOIN eco.t_indicateurs t_indicateurs_9 ON (w_dbsetup.indicateur_associe_9_code = t_indicateurs_9.code AND w_dbsetup.indicateur_associe_9_code <> '') | |||
| LEFT JOIN eco.t_indicateurs t_indicateurs_10 ON (w_dbsetup.indicateur_associe_10_code = t_indicateurs_10.code AND w_dbsetup.indicateur_associe_10_code <> '') | |||
| LEFT JOIN eco.t_indicateurs t_indicateurs_11 ON (w_dbsetup.indicateur_associe_11_code = t_indicateurs_11.code AND w_dbsetup.indicateur_associe_11_code <> '') | |||
| LEFT JOIN eco.t_indicateurs t_indicateurs_12 ON (w_dbsetup.indicateur_associe_12_code = t_indicateurs_12.code AND w_dbsetup.indicateur_associe_12_code <> '') | |||
| LEFT JOIN eco.t_indicateurs t_indicateurs_13 ON (w_dbsetup.indicateur_associe_13_code = t_indicateurs_13.code AND w_dbsetup.indicateur_associe_13_code <> '') | |||
| LEFT JOIN eco.t_indicateurs t_indicateurs_14 ON (w_dbsetup.indicateur_associe_14_code = t_indicateurs_14.code AND w_dbsetup.indicateur_associe_14_code <> '') | |||
| LEFT JOIN eco.t_indicateurs t_indicateurs_15 ON (w_dbsetup.indicateur_associe_15_code = t_indicateurs_15.code AND w_dbsetup.indicateur_associe_15_code <> '') | |||
| LEFT JOIN eco.t_indicateurs t_indicateurs_16 ON (w_dbsetup.indicateur_associe_16_code = t_indicateurs_16.code AND w_dbsetup.indicateur_associe_16_code <> '') | |||
| LEFT JOIN eco.t_indicateurs t_indicateurs_17 ON (w_dbsetup.indicateur_associe_17_code = t_indicateurs_17.code AND w_dbsetup.indicateur_associe_17_code <> '') | |||
| LEFT JOIN eco.t_indicateurs t_indicateurs_18 ON (w_dbsetup.indicateur_associe_18_code = t_indicateurs_18.code AND w_dbsetup.indicateur_associe_18_code <> '') | |||
| LEFT JOIN eco.t_indicateurs t_indicateurs_19 ON (w_dbsetup.indicateur_associe_19_code = t_indicateurs_19.code AND w_dbsetup.indicateur_associe_19_code <> '') | |||
| LEFT JOIN eco.t_indicateurs t_indicateurs_20 ON (w_dbsetup.indicateur_associe_20_code = t_indicateurs_20.code AND w_dbsetup.indicateur_associe_20_code <> '') | |||
| LEFT JOIN eco.t_indicateurs t_indicateurs_reference ON (w_dbsetup.indicateur_reference_code = t_indicateurs_reference.code AND w_dbsetup.indicateur_reference_code <> '') | |||
| LEFT JOIN eco.t_indicateurs t_indicateurs_template ON (w_dbsetup.indicateur_template_code = t_indicateurs_template.code AND w_dbsetup.indicateur_template_code <> '') | |||
| WHERE t_indicateurs.code = w_dbsetup.code | |||
| AND (indicateur_associe_1_code <> '' OR | |||
| indicateur_associe_2_code <> '' OR | |||
| indicateur_associe_3_code <> '' OR | |||
| indicateur_reference_code <> '' OR | |||
| indicateur_template_code <> ''); | |||
| SELECT base.cti_reorganize_indicateurs('eco') | |||
| ; | |||
| @ -0,0 +1,115 @@ | |||
| -- 1/3 : Création de la table temporaire | |||
| DROP TABLE IF EXISTS w_dbsetup | |||
| ; | |||
| CREATE TEMP TABLE w_dbsetup AS | |||
| SELECT | |||
| t_listes.oid, | |||
| t_listes.code, | |||
| t_listes.texte, | |||
| t_listes.chapitre, | |||
| t_listes.contenu_by_code, | |||
| t_listes.include_code, | |||
| t_listes.exclude_code, | |||
| t_listes.is_cti, | |||
| t_listes.show_omit, | |||
| t_listes.utilisateur_createur, | |||
| t_listes.est_partagee_modification, | |||
| t_listes_tables.name as table_name | |||
| FROM | |||
| eco.t_listes, | |||
| eco.t_listes_tables | |||
| WHERE | |||
| (is_cti = '1' OR t_listes.code LIKE 'CTI%') | |||
| AND t_listes.code <> '' | |||
| AND table_id = t_listes_tables.oid | |||
| ORDER BY t_listes.code LIMIT 0 | |||
| ; | |||
| -- 2/3 : Peuplement de la table temporaire | |||
| INSERT INTO w_dbsetup( | |||
| oid, | |||
| code, | |||
| texte, | |||
| chapitre, | |||
| contenu_by_code, | |||
| include_code, | |||
| exclude_code, | |||
| is_cti, | |||
| show_omit, | |||
| utilisateur_createur, | |||
| est_partagee_modification, | |||
| table_name | |||
| ) | |||
| VALUES | |||
| (1, 'CTI_ALIBIO', 'Aliments Biologiques', '', '0', '', '', '1', '0', '*CTI', '1', 't_articles'), | |||
| (1, 'CTI_ESS_ART80', 'Liste des articles représentant 80% des stocks en montant', '', '0', '', '', '1', '0', '*CTI', '1', 't_articles'), | |||
| (1, 'CTI_FAMALI', 'Alimentation', '', '0', '', '', '1', '0', '*CTI', '1', 't_familles_articles'), | |||
| (1, 'CTI_FAMNRJ', 'Energie', '', '0', '', '', '1', '0', '*CTI', '1', 't_familles_articles'), | |||
| (1, 'CTI_FOUH', 'Fournisseurs favorisant le travail de personnes handicapés ou en difficulté', '', '0', '', '', '1', '0', '*CTI', '1', 't_fournisseurs'), | |||
| (1, 'CTI_FOUREF', 'Fournisseurs références', '', '0', '', '', '1', '0', '*CTI', '1', 't_fournisseurs'), | |||
| (1, 'CTI_FOUREG', 'Fournisseurs régionaux', '', '0', '', '', '1', '0', '*CTI', '1', 't_fournisseurs'), | |||
| (1, 'CTI_NRJREN', 'Energie renouvelables', '', '0', '', '', '1', '0', '*CTI', '1', 't_articles'), | |||
| (1, 'CTI_UFPER', 'UF de pertes ou périmés', '', '0', '', '', '1', '1', '*CTI', '1', 't_unites_fonctionnelles') | |||
| ; | |||
| -- 3/3 : Màj de la table iCTI | |||
| UPDATE eco.t_listes SET | |||
| texte = w_dbsetup.texte, | |||
| chapitre = w_dbsetup.chapitre, | |||
| contenu_by_code= w_dbsetup.contenu_by_code, | |||
| include_code = w_dbsetup.include_code, | |||
| exclude_code = w_dbsetup.exclude_code, | |||
| is_cti = w_dbsetup.is_cti, | |||
| show_omit = w_dbsetup.show_omit, | |||
| utilisateur_createur = w_dbsetup.utilisateur_createur, | |||
| est_partagee_modification = w_dbsetup.est_partagee_modification, | |||
| table_id = t_listes_tables.oid | |||
| FROM | |||
| w_dbsetup, | |||
| eco.t_listes_tables | |||
| WHERE | |||
| w_dbsetup.table_name = t_listes_tables.name | |||
| AND t_listes.code = w_dbsetup.code | |||
| ; | |||
| INSERT INTO eco.t_listes( | |||
| code, | |||
| texte, | |||
| chapitre, | |||
| contenu_by_code, | |||
| include_code, | |||
| exclude_code, | |||
| is_cti, | |||
| show_omit, | |||
| utilisateur_createur, | |||
| est_partagee_modification, | |||
| table_id | |||
| ) | |||
| SELECT | |||
| w_dbsetup.code, | |||
| w_dbsetup.texte, | |||
| w_dbsetup.chapitre, | |||
| w_dbsetup.contenu_by_code, | |||
| w_dbsetup.include_code, | |||
| w_dbsetup.exclude_code, | |||
| w_dbsetup.is_cti, | |||
| w_dbsetup.show_omit, | |||
| w_dbsetup.utilisateur_createur, | |||
| w_dbsetup.est_partagee_modification, | |||
| t_listes_tables.oid | |||
| FROM | |||
| w_dbsetup, | |||
| eco.t_listes_tables | |||
| WHERE | |||
| w_dbsetup.table_name = t_listes_tables.name | |||
| AND w_dbsetup.code NOT IN (SELECT code FROM eco.t_listes) | |||
| AND w_dbsetup.texte NOT LIKE '*SUPPRIME%' | |||
| ; | |||
| DELETE FROM eco.t_listes WHERE texte like '*SUPPRIME%' AND is_cti = '1' | |||
| ; | |||
| SELECT base.cti_initialize_listes_by_code('eco'); | |||
| @ -0,0 +1,111 @@ | |||
| -- 1/3 : Création de la table temporaire | |||
| DROP TABLE IF EXISTS w_dbsetup | |||
| ; | |||
| CREATE TEMP TABLE w_dbsetup AS | |||
| SELECT oid, | |||
| name, | |||
| texte, | |||
| select_cmd, | |||
| code | |||
| FROM eco.t_listes_tables | |||
| ORDER BY code LIMIT 0 | |||
| ; | |||
| -- 2/3 : Peuplement de la table temporaire | |||
| INSERT INTO w_dbsetup( | |||
| oid, | |||
| name, | |||
| texte, | |||
| select_cmd, | |||
| code | |||
| ) | |||
| VALUES | |||
| (1, 't_articles', 'Articles', 'SELECT t_articles.oid, t_articles.code, t_articles.texte, t_types_articles.texte::text as complement, CASE WHEN p_oids.oid IS NOT NULL THEN ''O'' ELSE ''N'' END as utilise | |||
| FROM eco.t_articles | |||
| JOIN eco.t_types_articles ON type_id = t_types_articles.oid | |||
| JOIN eco.p_oids ON (t_articles.oid = p_oids.oid AND code_table = ''articles'') | |||
| WHERE t_articles.oid > 0 | |||
| ORDER BY t_articles.code', 'ART'), | |||
| (1, 't_categories_articles', 'Catégories articles', 'SELECT t_categories_articles.oid, t_categories_articles.code, t_categories_articles.texte, ''''::text as complement, CASE WHEN p_oids.oid IS NOT NULL THEN ''O'' ELSE ''N'' END as utilise | |||
| FROM eco.t_categories_articles LEFT JOIN eco.p_oids ON (t_categories_articles.oid = p_oids.oid AND code_table = ''categories_articles'') | |||
| WHERE t_categories_articles.oid > 0 | |||
| ORDER BY t_categories_articles.code', 'CAA'), | |||
| (1, 't_compte', 'Comptes', 'SELECT t_compte.oid, t_compte.code, t_compte.texte, ''''::text as complement, CASE WHEN p_oids.oid IS NOT NULL THEN ''O'' ELSE ''N'' END as utilise | |||
| FROM eco.t_compte LEFT JOIN eco.p_oids ON (t_compte.oid = p_oids.oid AND code_table = ''compte'') | |||
| WHERE t_compte.oid > 0 | |||
| ORDER BY t_compte.code', 'CPT'), | |||
| (1, 't_centres_responsabilite', 'Centres responsabilité', 'SELECT t_centres_responsabilites.oid, t_centres_responsabilites.code, t_centres_responsabilites.texte, ''''::text as complement, CASE WHEN p_oids.oid IS NOT NULL THEN ''O'' ELSE ''N'' END as utilise | |||
| FROM eco.t_centres_responsabilites LEFT JOIN eco.p_oids ON (t_centres_responsabilites.oid = p_oids.oid AND code_table = ''centres_responsabilites'') | |||
| WHERE t_centres_responsabilites.oid > 0 | |||
| ORDER BY t_centres_responsabilites.code', 'CRE'), | |||
| (1, 't_familles_articles', 'Familles d''articles', 'SELECT t_familles_articles.oid, t_familles_articles.code, t_familles_articles.texte, ''''::text as complement, CASE WHEN p_oids.oid IS NOT NULL THEN ''O'' ELSE ''N'' END as utilise | |||
| FROM eco.t_familles_articles LEFT JOIN eco.p_oids ON (t_familles_articles.oid = p_oids.oid AND code_table = ''familles_articles'') | |||
| WHERE t_familles_articles.oid > 0 | |||
| ORDER BY t_familles_articles.code', 'FAA'), | |||
| (1, 't_fournisseurs', 'Fournisseurs', 'SELECT t_fournisseurs.oid, t_fournisseurs.code, t_fournisseurs.texte, ''''::text as complement, CASE WHEN p_oids.oid IS NOT NULL THEN ''O'' ELSE ''N'' END as utilise | |||
| FROM eco.t_fournisseurs LEFT JOIN eco.p_oids ON (t_fournisseurs.oid = p_oids.oid AND code_table = ''fournisseurs'') | |||
| WHERE t_fournisseurs.oid > 0 | |||
| ORDER BY t_fournisseurs.code', 'FOU'), | |||
| (1, 't_gestionnaires', 'Gestionnaires', 'SELECT t_gestionnaires.oid, t_gestionnaires.code, t_gestionnaires.texte, ''''::text as complement, CASE WHEN p_oids.oid IS NOT NULL THEN ''O'' ELSE ''N'' END as utilise | |||
| FROM eco.t_gestionnaires LEFT JOIN eco.p_oids ON (t_gestionnaires.oid = p_oids.oid AND code_table = ''gestionnaires'') | |||
| WHERE t_gestionnaires.oid > 0 | |||
| ORDER BY t_gestionnaires.code', 'GES'), | |||
| (1, 't_lieux', 'Lieux', 'SELECT t_lieux.oid, t_lieux.code, t_lieux.texte, ''''::text as complement, CASE WHEN p_oids.oid IS NOT NULL THEN ''O'' ELSE ''N'' END as utilise | |||
| FROM eco.t_lieux LEFT JOIN eco.p_oids ON (t_lieux.oid = p_oids.oid AND code_table = ''lieux'') | |||
| WHERE t_lieux.oid > 0 | |||
| ORDER BY t_lieux.code', 'LIE'), | |||
| (1, 't_lpp_c', 'LPP', 'SELECT t_lpp_c.oid, t_lpp_c.code, t_lpp_c.texte, ''''::text as complement, CASE WHEN p_oids.oid IS NOT NULL THEN ''O'' ELSE ''N'' END as utilise | |||
| FROM eco.t_lpp_c LEFT JOIN eco.p_oids ON (t_lpp_c.oid = p_oids.oid AND code_table = ''lpp'') | |||
| WHERE t_lpp_c.oid > 0 | |||
| ORDER BY t_lpp_c.code', 'LPP'), | |||
| (1, 't_sous_categories_articles', 'Sous catégories articles', 'SELECT t_sous_categories_articles.oid, t_sous_categories_articles.code, t_sous_categories_articles.texte, ''''::text as complement, CASE WHEN p_oids.oid IS NOT NULL THEN ''O'' ELSE ''N'' END as utilise | |||
| FROM eco.t_sous_categories_articles LEFT JOIN eco.p_oids ON (t_sous_categories_articles.oid = p_oids.oid AND code_table = ''sous_categories_articles'') | |||
| WHERE t_sous_categories_articles.oid > 0 | |||
| ORDER BY t_sous_categories_articles.code', 'SCA'), | |||
| (1, 't_sous_familles_articles', 'Sous familles articles', 'SELECT t_sous_familles_articles.oid, t_sous_familles_articles.code, t_sous_familles_articles.texte, ''''::text as complement, CASE WHEN p_oids.oid IS NOT NULL THEN ''O'' ELSE ''N'' END as utilise | |||
| FROM eco.t_sous_familles_articles LEFT JOIN eco.p_oids ON (t_sous_familles_articles.oid = p_oids.oid AND code_table = ''sous_familles_articles'') | |||
| WHERE t_sous_familles_articles.oid > 0 | |||
| ORDER BY t_sous_familles_articles.code', 'SFA'), | |||
| (1, 't_type_article_cti', 'Types d''articles CTI', 'SELECT t_type_article_cti.oid, t_type_article_cti.code, t_type_article_cti.texte, ''''::text as complement, CASE WHEN p_oids.oid IS NOT NULL THEN ''O'' ELSE ''N'' END as utilise | |||
| FROM eco.t_type_article_cti LEFT JOIN eco.p_oids ON (t_type_article_cti.oid = p_oids.oid AND code_table = ''type_article_cti'') | |||
| ORDER BY t_type_article_cti.code', 'TAC'), | |||
| (1, 't_types_articles', 'Types d''articles', 'SELECT t_types_articles.oid, t_types_articles.code, t_types_articles.texte, ''''::text as complement, CASE WHEN p_oids.oid IS NOT NULL THEN ''O'' ELSE ''N'' END as utilise | |||
| FROM eco.t_types_articles LEFT JOIN eco.p_oids ON (t_types_articles.oid = p_oids.oid AND code_table = ''types_articles'') | |||
| WHERE t_types_articles.oid > 0 | |||
| ORDER BY t_types_articles.code', 'TYA'), | |||
| (1, 't_types_fournisseurs', 'Types de fournisseurs', 'SELECT t_types_fournisseurs.oid, t_types_fournisseurs.code, t_types_fournisseurs.texte, ''''::text as complement, CASE WHEN p_oids.oid IS NOT NULL THEN ''O'' ELSE ''N'' END as utilise | |||
| FROM eco.t_types_fournisseurs LEFT JOIN eco.p_oids ON (t_types_fournisseurs.oid = p_oids.oid AND code_table = ''types_fournisseurs'') | |||
| WHERE t_types_fournisseurs.oid > 0 | |||
| ORDER BY t_types_fournisseurs.code', 'TYF'), | |||
| (1, 't_types_mouvements', 'Types de mouvements', 'SELECT t_types_mouvements.oid, t_types_mouvements.code, t_types_mouvements.texte, ''''::text as complement, CASE WHEN p_oids.oid IS NOT NULL THEN ''O'' ELSE ''N'' END as utilise | |||
| FROM eco.t_types_mouvements LEFT JOIN eco.p_oids ON (t_types_mouvements.oid = p_oids.oid AND code_table = ''types_mouvements'') | |||
| WHERE t_types_mouvements.oid > 0 | |||
| ORDER BY t_types_mouvements.code', 'TYM'), | |||
| (1, 't_ucd_c', 'UCD', 'SELECT t_ucd_c.oid, t_ucd_c.code, t_ucd_c.texte, ''''::text as complement, CASE WHEN p_oids.oid IS NOT NULL THEN ''O'' ELSE ''N'' END as utilise | |||
| FROM eco.t_ucd_c LEFT JOIN eco.p_oids ON (t_ucd_c.oid = p_oids.oid AND code_table = ''ucd'') | |||
| WHERE t_ucd_c.oid > 0 | |||
| ORDER BY t_ucd_c.code', 'UCD'), | |||
| (1, 't_unites_fonctionnelles', 'Unités fonctionnelles', 'SELECT t_unites_fonctionnelles.oid, t_unites_fonctionnelles.code, t_unites_fonctionnelles.texte, ''''::text as complement, CASE WHEN p_oids.oid IS NOT NULL THEN ''O'' ELSE ''N'' END as utilise | |||
| FROM eco.t_unites_fonctionnelles LEFT JOIN eco.p_oids ON (t_unites_fonctionnelles.oid = p_oids.oid AND code_table = ''unites_fonctionnelles'') | |||
| WHERE t_unites_fonctionnelles.oid > 0 | |||
| ORDER BY t_unites_fonctionnelles.code', 'UFO'), | |||
| (1, 't_unites', 'Unités', 'SELECT t_unites.oid, t_unites.code, t_unites.texte, ''''::text as complement, CASE WHEN p_oids.oid IS NOT NULL THEN ''O'' ELSE ''N'' END as utilise | |||
| FROM eco.t_unites LEFT JOIN eco.p_oids ON (t_unites.oid = p_oids.oid AND code_table = ''unites_stockage_articles'') | |||
| WHERE t_unites.oid > 0 | |||
| ORDER BY t_unites.code', 'UNI') | |||
| ; | |||
| -- 3/3 : Màj de la table iCTI | |||
| UPDATE eco.t_listes_tables SET | |||
| name = w_dbsetup.name, | |||
| texte = w_dbsetup.texte, | |||
| select_cmd = w_dbsetup.select_cmd | |||
| FROM w_dbsetup | |||
| WHERE t_listes_tables.code = w_dbsetup.code; | |||
| INSERT INTO eco.t_listes_tables(oid, code, name, texte, select_cmd) | |||
| SELECT oid, code, name, texte, select_cmd FROM w_dbsetup WHERE oid = 0 AND oid NOT IN (SELECT oid FROM eco.t_listes_tables); | |||
| INSERT INTO eco.t_listes_tables(code, name, texte, select_cmd) | |||
| SELECT code, name, texte, select_cmd FROM w_dbsetup WHERE oid <> 0 AND code NOT IN (SELECT code FROM eco.t_listes_tables); | |||
| @ -0,0 +1,174 @@ | |||
| -- 1/3 : Création de la table temporaire | |||
| DROP TABLE IF EXISTS w_dbsetup | |||
| ; | |||
| CREATE TEMP TABLE w_dbsetup AS | |||
| SELECT | |||
| t_rapports.oid, | |||
| t_rapports.code, | |||
| t_rapports.texte, | |||
| t_rapports.is_cti, | |||
| template.code AS template_code, | |||
| t_rapports.is_template_updatable, | |||
| ARRAY[ | |||
| CASE WHEN NOT (classe_0.sequence = 30 AND table_0.code = (SELECT valeur FROM eco.t_divers WHERE code = 'CLE_REPARTITION')) THEN table_0.code ELSE 'TYA' END ||'|'||classe_0.code||'|'||section_0.code, | |||
| CASE WHEN NOT (classe_1.sequence = 30 AND table_1.code = (SELECT valeur FROM eco.t_divers WHERE code = 'CLE_REPARTITION')) THEN table_1.code ELSE 'TYA' END ||'|'||classe_1.code||'|'||section_1.code, | |||
| CASE WHEN NOT (classe_2.sequence = 30 AND table_2.code = (SELECT valeur FROM eco.t_divers WHERE code = 'CLE_REPARTITION')) THEN table_2.code ELSE 'TYA' END ||'|'||classe_2.code||'|'||section_2.code, | |||
| CASE WHEN NOT (classe_3.sequence = 30 AND table_3.code = (SELECT valeur FROM eco.t_divers WHERE code = 'CLE_REPARTITION')) THEN table_3.code ELSE 'TYA' END ||'|'||classe_3.code||'|'||section_3.code, | |||
| CASE WHEN NOT (classe_4.sequence = 30 AND table_4.code = (SELECT valeur FROM eco.t_divers WHERE code = 'CLE_REPARTITION')) THEN table_4.code ELSE 'TYA' END ||'|'||classe_4.code||'|'||section_4.code] AS condition_codes, | |||
| t_rapports.is_essentiel | |||
| FROM eco.t_rapports | |||
| LEFT JOIN eco.t_rapports template ON t_rapports.rapport_template_id = template.oid | |||
| LEFT JOIN eco.t_indicateur_condition condition_0 ON t_rapports.rapport_indicateur_condition_id[1] = condition_0.oid | |||
| LEFT JOIN eco.t_listes_tables table_0 ON regexp_replace(regexp_replace(regexp_replace(regexp_replace(table_0.name,'^t_',''),'s_','','g'),'x',''),'s$','') || 'id' = regexp_replace(condition_0.column_name,'_','','g') | |||
| LEFT JOIN eco.t_classes classe_0 ON table_0.oid = classe_0.table_id AND classe_0.sequence = substring(split_part(condition_0.code,'#',2),3,2) AND left(split_part(condition_0.code,'#',2),2) = 'LS' | |||
| LEFT JOIN eco.t_classes_sections section_0 ON classe_0.oid = section_0.classe_id AND section_0.oid = right(split_part(condition_0.code,'#',2),-4) | |||
| LEFT JOIN eco.t_indicateur_condition condition_1 ON t_rapports.rapport_indicateur_condition_id[2] = condition_1.oid | |||
| LEFT JOIN eco.t_listes_tables table_1 ON regexp_replace(regexp_replace(regexp_replace(regexp_replace(table_1.name,'^t_',''),'s_','','g'),'x',''),'s$','') || 'id' = regexp_replace(condition_1.column_name,'_','','g') | |||
| LEFT JOIN eco.t_classes classe_1 ON table_1.oid = classe_1.table_id AND classe_1.sequence = substring(split_part(condition_1.code,'#',2),3,2) AND left(split_part(condition_1.code,'#',2),2) = 'LS' | |||
| LEFT JOIN eco.t_classes_sections section_1 ON classe_1.oid = section_1.classe_id AND section_1.oid = right(split_part(condition_1.code,'#',2),-4) | |||
| LEFT JOIN eco.t_indicateur_condition condition_2 ON t_rapports.rapport_indicateur_condition_id[3] = condition_2.oid | |||
| LEFT JOIN eco.t_listes_tables table_2 ON regexp_replace(regexp_replace(regexp_replace(regexp_replace(table_2.name,'^t_',''),'s_','','g'),'x',''),'s$','') || 'id' = regexp_replace(condition_2.column_name,'_','','g') | |||
| LEFT JOIN eco.t_classes classe_2 ON table_2.oid = classe_2.table_id AND classe_2.sequence = substring(split_part(condition_2.code,'#',2),3,2) AND left(split_part(condition_2.code,'#',2),2) = 'LS' | |||
| LEFT JOIN eco.t_classes_sections section_2 ON classe_2.oid = section_2.classe_id AND section_2.oid = right(split_part(condition_2.code,'#',2),-4) | |||
| LEFT JOIN eco.t_indicateur_condition condition_3 ON t_rapports.rapport_indicateur_condition_id[4] = condition_3.oid | |||
| LEFT JOIN eco.t_listes_tables table_3 ON regexp_replace(regexp_replace(regexp_replace(regexp_replace(table_3.name,'^t_',''),'s_','','g'),'x',''),'s$','') || 'id' = regexp_replace(condition_3.column_name,'_','','g') | |||
| LEFT JOIN eco.t_classes classe_3 ON table_3.oid = classe_3.table_id AND classe_3.sequence = substring(split_part(condition_3.code,'#',2),3,2) AND left(split_part(condition_3.code,'#',2),2) = 'LS' | |||
| LEFT JOIN eco.t_classes_sections section_3 ON classe_3.oid = section_3.classe_id AND section_3.oid = right(split_part(condition_3.code,'#',2),-4) | |||
| LEFT JOIN eco.t_indicateur_condition condition_4 ON t_rapports.rapport_indicateur_condition_id[5] = condition_4.oid | |||
| LEFT JOIN eco.t_listes_tables table_4 ON regexp_replace(regexp_replace(regexp_replace(regexp_replace(table_4.name,'^t_',''),'s_','','g'),'x',''),'s$','') || 'id' = regexp_replace(condition_4.column_name,'_','','g') | |||
| LEFT JOIN eco.t_classes classe_4 ON table_4.oid = classe_4.table_id AND classe_4.sequence = substring(split_part(condition_4.code,'#',2),3,2) AND left(split_part(condition_4.code,'#',2),2) = 'LS' | |||
| LEFT JOIN eco.t_classes_sections section_4 ON classe_4.oid = section_4.classe_id AND section_4.oid = right(split_part(condition_4.code,'#',2),-4) | |||
| WHERE (t_rapports.is_cti = '1' OR t_rapports.code LIKE 'CTI_%') AND | |||
| t_rapports.code <> 'CTI_PORTFO' | |||
| ORDER BY t_rapports.code | |||
| LIMIT 0 | |||
| ; | |||
| -- 2/3 : Peuplement de la table temporaire | |||
| INSERT INTO w_dbsetup( | |||
| oid, | |||
| code, | |||
| texte, | |||
| is_cti, | |||
| template_code, | |||
| is_template_updatable, | |||
| condition_codes, | |||
| is_essentiel | |||
| ) | |||
| VALUES | |||
| (1, 'CTI_ESS_01', 'Essentiels CTI', '1', '', '0', '{"NULL", "NULL", "NULL", "NULL", "NULL"}', '1'), | |||
| (1, 'CTI_ESS_02', 'Dispositifs Médicaux', '1', 'CTI_ESS_01', '0', '{"TYA|CTI_CLE_REP|DM", "NULL", "NULL", "NULL", "NULL"}', '1'), | |||
| (1, 'CTI_ESS_03', 'Dispostifs Médicaux Implantables', '1', 'CTI_ESS_01', '0', '{"TYA|CTI_CLE_REP|DMI", "NULL", "NULL", "NULL", "NULL"}', '1'), | |||
| (1, 'CTI_ESS_04', 'Médicaments', '1', 'CTI_ESS_01', '0', '{"TYA|CTI_CLE_REP|MED", "NULL", "NULL", "NULL", "NULL"}', '1'), | |||
| (1, 'CTI_ESS_05', 'Parapharmacie', '1', 'CTI_ESS_01', '0', '{"TYA|CTI_CLE_REP|PAR", "NULL", "NULL", "NULL", "NULL"}', '1'), | |||
| (1, 'CTI_ESS_06', 'Economat', '1', 'CTI_ESS_01', '0', '{"TYA|CTI_CLE_REP|ECO", "NULL", "NULL", "NULL", "NULL"}', '1'), | |||
| (1, 'CTI_ESS_07', 'Cuisine', '1', 'CTI_ESS_01', '0', '{"TYA|CTI_CLE_REP|CUI", "NULL", "NULL", "NULL", "NULL"}', '1'), | |||
| (1, 'CTI_ESS_08', 'Lingerie', '1', 'CTI_ESS_01', '0', '{"TYA|CTI_CLE_REP|LIN", "NULL", "NULL", "NULL", "NULL"}', '1'), | |||
| (1, 'CTI_ESS_09', 'Atelier', '1', 'CTI_ESS_01', '0', '{"TYA|CTI_CLE_REP|ATE", "NULL", "NULL", "NULL", "NULL"}', '1'), | |||
| (1, 'CTI_LIST_CMD', 'Justificatif Commandes', '1', '', '0', '{"NULL", "NULL", "NULL", "NULL", "NULL"}', '0'), | |||
| (1, 'CTI_LIST_CMD2', 'Justificatif Délais et litiges', '1', '', '0', '{"NULL", "NULL", "NULL", "NULL", "NULL"}', '0'), | |||
| (1, 'CTI_LIST_MVT', 'Justificatif Mouvements', '1', '', '0', '{"NULL", "NULL", "NULL", "NULL", "NULL"}', '0'), | |||
| (1, 'CTI_LIST_MVT100', 'Justificatif Mouvements et Stocks', '1', '', '0', '{"NULL", "NULL", "NULL", "NULL", "NULL"}', '0'), | |||
| (1, 'CTI_LIST_MVT2', 'Justificatif Entrées', '1', '', '0', '{"NULL", "NULL", "NULL", "NULL", "NULL"}', '0'), | |||
| (1, 'CTI_LIST_MVT3', 'Justificatif Sorties', '1', '', '0', '{"NULL", "NULL", "NULL", "NULL", "NULL"}', '0'), | |||
| (1, 'CTI_LIST_MVT4', 'Justificatif Quantités', '1', '', '0', '{"NULL", "NULL", "NULL", "NULL", "NULL"}', '0'), | |||
| (1, 'CTI_LIST_MVT5', 'Justificatif Montants', '1', '', '0', '{"NULL", "NULL", "NULL", "NULL", "NULL"}', '0'), | |||
| (1, 'CTI_LIST_MVT6', 'Justificatif Montants Entrées', '1', '', '0', '{"NULL", "NULL", "NULL", "NULL", "NULL"}', '0'), | |||
| (1, 'CTI_LIST_MVT7', 'Justificatif Montants sorties', '1', '', '0', '{"NULL", "NULL", "NULL", "NULL", "NULL"}', '0'), | |||
| (1, 'CTI_VIEW_CMD', 'Commandes', '1', '', '0', '{"NULL", "NULL", "NULL", "NULL", "NULL"}', '0'), | |||
| (1, 'CTI_VIEW_CMD2', 'Délais et litiges', '1', '', '0', '{"NULL", "NULL", "NULL", "NULL", "NULL"}', '0'), | |||
| (1, 'CTI_VIEW_CMD3', 'Commandes (engagement)', '1', '', '0', '{"NULL", "NULL", "NULL", "NULL", "NULL"}', '0'), | |||
| (1, 'CTI_VIEW_MVS', 'Stocks calculés', '1', '', '0', '{"NULL", "NULL", "NULL", "NULL", "NULL"}', '0'), | |||
| (1, 'CTI_VIEW_MVT', 'Quantités et Montants Mouvements', '1', '', '0', '{"NULL", "NULL", "NULL", "NULL", "NULL"}', '0'), | |||
| (1, 'CTI_VIEW_MVT2', 'Quantités et Montants Entrées', '1', '', '0', '{"NULL", "NULL", "NULL", "NULL", "NULL"}', '0'), | |||
| (1, 'CTI_VIEW_MVT3', 'Quantités et Montants Sorties', '1', '', '0', '{"NULL", "NULL", "NULL", "NULL", "NULL"}', '0'), | |||
| (1, 'CTI_VIEW_MVT4', 'Quantités Mouvements', '1', '', '0', '{"NULL", "NULL", "NULL", "NULL", "NULL"}', '0'), | |||
| (1, 'CTI_VIEW_MVT5', 'Montants Mouvements', '1', '', '0', '{"NULL", "NULL", "NULL", "NULL", "NULL"}', '0'), | |||
| (1, 'CTI_VIEW_MVT6', 'Montants Entrées', '1', '', '0', '{"NULL", "NULL", "NULL", "NULL", "NULL"}', '0'), | |||
| (1, 'CTI_VIEW_MVT7', 'Montants Sorties', '1', '', '0', '{"NULL", "NULL", "NULL", "NULL", "NULL"}', '0'), | |||
| (1, 'CTI_VIEW_STK', 'Stocks Mensuels', '1', '', '0', '{"NULL", "NULL", "NULL", "NULL", "NULL"}', '0'), | |||
| (1, 'CTI_VIEW_STK2', 'Quantités stocks mensuels', '1', '', '0', '{"NULL", "NULL", "NULL", "NULL", "NULL"}', '0'), | |||
| (1, 'CTI_VIEW_STK3', 'Montants Stocks Mensuels', '1', '', '0', '{"NULL", "NULL", "NULL", "NULL", "NULL"}', '0') | |||
| ; | |||
| -- 3/3 : Màj de la table iCTI | |||
| SELECT eco.cti_reorganize_indicateur_condition(); | |||
| INSERT INTO eco.t_rapports(oid, code, texte, is_cti, is_essentiel) | |||
| SELECT | |||
| oid, | |||
| code, | |||
| texte, | |||
| is_cti, | |||
| is_essentiel | |||
| FROM w_dbsetup | |||
| WHERE oid = 0 AND oid NOT IN (SELECT oid FROM eco.t_rapports); | |||
| INSERT INTO eco.t_rapports(code, texte, is_cti, is_essentiel) | |||
| SELECT | |||
| code, | |||
| texte, | |||
| is_cti, | |||
| is_essentiel | |||
| FROM w_dbsetup | |||
| WHERE oid <> 0 | |||
| AND code NOT IN (SELECT code FROM eco.t_rapports) | |||
| ; | |||
| UPDATE eco.t_rapports SET | |||
| texte = w_dbsetup.texte, | |||
| is_cti = w_dbsetup.is_cti, | |||
| is_essentiel = w_dbsetup.is_essentiel, | |||
| rapport_template_id = template.oid, | |||
| is_template_updatable = w_dbsetup.is_template_updatable, | |||
| rapport_indicateur_condition_id = ARRAY[condition_0.oid,condition_1.oid,condition_2.oid,condition_3.oid,condition_4.oid] | |||
| FROM w_dbsetup | |||
| LEFT JOIN eco.t_rapports template ON template_code = template.code | |||
| LEFT JOIN eco.t_listes_tables table_0 ON split_part(condition_codes[1],'|',1) = table_0.code | |||
| OR table_0.code = (SELECT t_listes_tables.code FROM eco.t_listes_tables JOIN eco.t_classes ON t_classes.code = 'CTI_CLE_REP' AND table_id = t_listes_tables.oid) | |||
| LEFT JOIN eco.t_classes classe_0 ON table_0.oid = classe_0.table_id AND classe_0.code = split_part(condition_codes[1] ,'|',2) | |||
| LEFT JOIN eco.t_classes_sections section_0 ON classe_0.oid = section_0.classe_id AND section_0.code = split_part(condition_codes[1] ,'|',3) | |||
| LEFT JOIN eco.t_indicateur_condition condition_0 ON regexp_replace(regexp_replace(regexp_replace(regexp_replace(table_0.name,'^t_',''),'s_','','g'),'x',''),'s$','') || 'id' = regexp_replace(condition_0.column_name,'_','','g') | |||
| AND classe_0.sequence = substring(split_part(condition_0.code,'#',2),3,2) AND left(split_part(condition_0.code,'#',2),2) = 'LS' | |||
| AND section_0.oid = right(split_part(condition_0.code,'#',2),-4) | |||
| LEFT JOIN eco.t_listes_tables table_1 ON split_part(condition_codes[2],'|',1) = table_1.code | |||
| OR table_1.code = (SELECT t_listes_tables.code FROM eco.t_listes_tables JOIN eco.t_classes ON t_classes.code = 'CTI_CLE_REP' AND table_id = t_listes_tables.oid) | |||
| LEFT JOIN eco.t_classes classe_1 ON table_1.oid = classe_1.table_id AND classe_1.code = split_part(condition_codes[2] ,'|',2) | |||
| LEFT JOIN eco.t_classes_sections section_1 ON classe_1.oid = section_1.classe_id AND section_1.code = split_part(condition_codes[2] ,'|',3) | |||
| LEFT JOIN eco.t_indicateur_condition condition_1 ON regexp_replace(regexp_replace(regexp_replace(regexp_replace(table_1.name,'^t_',''),'s_','','g'),'x',''),'s$','') || 'id' = regexp_replace(condition_1.column_name,'_','','g') | |||
| AND classe_1.sequence = substring(split_part(condition_1.code,'#',2),3,2) AND left(split_part(condition_1.code,'#',2),2) = 'LS' | |||
| AND section_1.oid = right(split_part(condition_1.code,'#',2),-4) | |||
| LEFT JOIN eco.t_listes_tables table_2 ON split_part(condition_codes[3],'|',1) = table_2.code | |||
| OR table_2.code = (SELECT t_listes_tables.code FROM eco.t_listes_tables JOIN eco.t_classes ON t_classes.code = 'CTI_CLE_REP' AND table_id = t_listes_tables.oid) | |||
| LEFT JOIN eco.t_classes classe_2 ON table_2.oid = classe_2.table_id AND classe_2.code = split_part(condition_codes[3] ,'|',2) | |||
| LEFT JOIN eco.t_classes_sections section_2 ON classe_2.oid = section_2.classe_id AND section_2.code = split_part(condition_codes[3] ,'|',3) | |||
| LEFT JOIN eco.t_indicateur_condition condition_2 ON regexp_replace(regexp_replace(regexp_replace(regexp_replace(table_2.name,'^t_',''),'s_','','g'),'x',''),'s$','') || 'id' = regexp_replace(condition_2.column_name,'_','','g') | |||
| AND classe_2.sequence = substring(split_part(condition_2.code,'#',2),3,2) AND left(split_part(condition_2.code,'#',2),2) = 'LS' | |||
| AND section_2.oid = right(split_part(condition_2.code,'#',2),-4) | |||
| LEFT JOIN eco.t_listes_tables table_3 ON split_part(condition_codes[4],'|',1) = table_3.code | |||
| OR table_3.code = (SELECT t_listes_tables.code FROM eco.t_listes_tables JOIN eco.t_classes ON t_classes.code = 'CTI_CLE_REP' AND table_id = t_listes_tables.oid) | |||
| LEFT JOIN eco.t_classes classe_3 ON table_3.oid = classe_3.table_id AND classe_3.code = split_part(condition_codes[4] ,'|',2) | |||
| LEFT JOIN eco.t_classes_sections section_3 ON classe_3.oid = section_3.classe_id AND section_3.code = split_part(condition_codes[4] ,'|',3) | |||
| LEFT JOIN eco.t_indicateur_condition condition_3 ON regexp_replace(regexp_replace(regexp_replace(regexp_replace(table_3.name,'^t_',''),'s_','','g'),'x',''),'s$','') || 'id' = regexp_replace(condition_3.column_name,'_','','g') | |||
| AND classe_3.sequence = substring(split_part(condition_3.code,'#',2),3,2) AND left(split_part(condition_3.code,'#',2),2) = 'LS' | |||
| AND section_3.oid = right(split_part(condition_3.code,'#',2),-4) | |||
| LEFT JOIN eco.t_listes_tables table_4 ON split_part(condition_codes[5],'|',1) = table_4.code | |||
| OR table_4.code = (SELECT t_listes_tables.code FROM eco.t_listes_tables JOIN eco.t_classes ON t_classes.code = 'CTI_CLE_REP' AND table_id = t_listes_tables.oid) | |||
| LEFT JOIN eco.t_classes classe_4 ON table_4.oid = classe_4.table_id AND classe_4.code = split_part(condition_codes[5] ,'|',2) | |||
| LEFT JOIN eco.t_classes_sections section_4 ON classe_4.oid = section_4.classe_id AND section_4.code = split_part(condition_codes[5] ,'|',3) | |||
| LEFT JOIN eco.t_indicateur_condition condition_4 ON regexp_replace(regexp_replace(regexp_replace(regexp_replace(table_4.name,'^t_',''),'s_','','g'),'x',''),'s$','') || 'id' = regexp_replace(condition_4.column_name,'_','','g') | |||
| AND classe_4.sequence = substring(split_part(condition_4.code,'#',2),3,2) AND left(split_part(condition_4.code,'#',2),2) = 'LS' | |||
| AND section_4.oid = right(split_part(condition_4.code,'#',2),-4) | |||
| WHERE t_rapports.code = w_dbsetup.code; | |||
| @ -0,0 +1,71 @@ | |||
| -- 1/3 : Création de la table temporaire | |||
| DROP TABLE IF EXISTS w_dbsetup | |||
| ; | |||
| CREATE TEMP TABLE w_dbsetup AS | |||
| SELECT | |||
| t_type_article_cti.oid, | |||
| t_type_article_cti.code, | |||
| t_type_article_cti.texte | |||
| FROM eco.t_type_article_cti | |||
| ORDER BY code LIMIT 0 | |||
| ; | |||
| -- 2/3 : Peuplement de la table temporaire | |||
| INSERT INTO w_dbsetup( | |||
| oid, | |||
| code, | |||
| texte | |||
| ) | |||
| VALUES | |||
| (0, '*', 'Non renseigné'), | |||
| (1, 'DM', 'Dispositifs Médicaux'), | |||
| (1, 'DMI', 'Dispositifs Médicaux Implantables'), | |||
| (1, 'ECO', 'Economat'), | |||
| (1, 'MED', 'Médicaments'), | |||
| (1, 'ZZZ', 'Autres') | |||
| ; | |||
| -- 3/3 : Màj de la table iCTI | |||
| -- Mise à jour des données | |||
| UPDATE eco.t_type_article_cti SET | |||
| code = w_dbsetup.code | |||
| FROM w_dbsetup | |||
| WHERE | |||
| t_type_article_cti.oid = w_dbsetup.oid | |||
| AND w_dbsetup.oid = 0; | |||
| UPDATE eco.t_type_article_cti SET | |||
| texte = w_dbsetup.texte | |||
| FROM w_dbsetup | |||
| WHERE | |||
| t_type_article_cti.code = w_dbsetup.code | |||
| AND ( | |||
| t_type_article_cti.texte IS DISTINCT FROM w_dbsetup.texte | |||
| ); | |||
| INSERT INTO eco.t_type_article_cti( | |||
| oid, | |||
| code, | |||
| texte) | |||
| SELECT | |||
| oid, | |||
| code, | |||
| texte | |||
| FROM w_dbsetup | |||
| WHERE | |||
| oid = 0 | |||
| AND oid NOT IN (SELECT oid FROM eco.t_type_article_cti); | |||
| INSERT INTO eco.t_type_article_cti( | |||
| code, | |||
| texte) | |||
| SELECT | |||
| w_dbsetup.code, | |||
| w_dbsetup.texte | |||
| FROM w_dbsetup | |||
| WHERE | |||
| w_dbsetup.oid <> 0 | |||
| AND w_dbsetup.code NOT IN (SELECT code FROM eco.t_type_article_cti WHERE code IS NOT NULL); | |||
| @ -0,0 +1,4 @@ | |||
| oid|code|texte|is_cti|sequence|table_code | |||
| 1|CTI_CLE_REP|Clef de répartition CTI|0|30|TYA | |||
| 1|CTI_ESS_ART80|Lstes des articles répartis représentant 80% des stocks en montant|1|1|ART | |||
| 1|CTI_TYPMVT|Types de mouvements CTI|0|1|TYM | |||
| @ -0,0 +1,17 @@ | |||
| oid|code|texte|condition|include_code|exclude_code|table_code|classe_sequence | |||
| 1|ATE|Atelier||0|0|TYA|30 | |||
| 1|CUI|Cuisine||0|0|TYA|30 | |||
| 1|DM|Dispositifs Médicaux||0|0|TYA|30 | |||
| 1|DMI|Dispositifs Médicaux Implantables||0|0|TYA|30 | |||
| 1|ECO|Economat||0|0|TYA|30 | |||
| 1|LIN|Lingerie||0|0|TYA|30 | |||
| 1|MED|Médicaments||0|0|TYA|30 | |||
| 1|PAR|Parapharmacie||0|0|TYA|30 | |||
| 1|00|Livraison||||TYM|1 | |||
| 1|01|Consommations||||TYM|1 | |||
| 1|02|Pertes||||TYM|1 | |||
| 1|99|Autres||||TYM|1 | |||
| 1|11|Régularisation livraison||||TYM|1 | |||
| 1|12|Retour||||TYM|1 | |||
| 1|13|Avoir||||TYM|1 | |||
| 1|30|Régularisation inventaire||||TYM|1 | |||
| @ -0,0 +1,3 @@ | |||
| code|texte|valeur|valeur_date|description | |||
| CLE_REPARTITION|Code de la table à utiliser pour créer la classe utilisée comme clé de répartition|TYA|1970-01-01|TYA (type d'articles, défaut), ART (articles), CAA (cétgories articles), CPT (compte), FAA (familles articles), LIE (lieu) | |||
| UPDATE PMSI|Mise à jour des données PMSI à partir des données Gestion Economique|0|1970-01-01|0: Désactivé 1: Activé | |||
| @ -0,0 +1,30 @@ | |||
| oid|code|texte|level|parent_code | |||
| 1|--0|Source|1| | |||
| 1|--1|Thèmes principaux|1| | |||
| 1|--2|Période|1| | |||
| 1|--3|Rapports|1| | |||
| 1|--4|Type de donnée|1| | |||
| 1|--DDATE|Date date|2|--2 | |||
| 1|--DDATE_COMMANDE|Date date_commande|2|--2 | |||
| 1|--DDATE_ENGAGEMENT|Date date_engagement|2|--2 | |||
| 1|--DDATE_FIN|Date date_fin|2|--2 | |||
| 1|--DDATE_ITEM|Date date_item|2|--2 | |||
| 1|--R1|Rapports CTI|2|--3 | |||
| 1|--R3|Rapports Etablissement|2|--3 | |||
| 1|--S1|Indicateurs CTI|2|--0 | |||
| 1|--S2|Indicateurs Groupe|2|--0 | |||
| 1|--S3|Indicateurs spécifiques Etablissement|2|--0 | |||
| 1|--T0010|Mouvements|2|--1 | |||
| 1|--T0020|Commandes|2|--1 | |||
| 1|--T0030|Stocks mensuels|2|--1 | |||
| 1|--T0071|Table Articles|2|--1 | |||
| 1|--T0072|Table Sites|2|--1 | |||
| 1|--T0073|Table Lieux|2|--1 | |||
| 1|--T0074|Table UF|2|--1 | |||
| 1|--T0075|Table Gestionnaires|2|--1 | |||
| 1|--T0076|Table Unités|2|--1 | |||
| 1|1QTE|Quantité|2|--4 | |||
| 1|2MNT|Montants|2|--4 | |||
| 1|3DUR|Durées|2|--4 | |||
| 1|4TAUX|Taux|2|--4 | |||
| 1|5STOCK|Stocks|2|--4 | |||
| @ -0,0 +1,145 @@ | |||
| oid|texte|table_name|column_name|is_cti|entete|code|total_function|output_format|width|entete_etendue|dimension_date_1|dimension_date_2|dimension_date_3|dimension_date_4|dimension_date_5|dimension_date|indicateur_associe_1_code|indicateur_associe_2_code|indicateur_associe_3_code|indicateur_associe_4_code|indicateur_associe_5_code|indicateur_associe_6_code|indicateur_associe_7_code|indicateur_associe_8_code|indicateur_associe_9_code|indicateur_associe_10_code|indicateur_associe_11_code|indicateur_associe_12_code|indicateur_associe_13_code|indicateur_associe_14_code|indicateur_associe_15_code|indicateur_associe_16_code|indicateur_associe_17_code|indicateur_associe_18_code|indicateur_associe_19_code|indicateur_associe_20_code|indicateur_reference_code|is_template|indicateur_template_code|variable_definition_1|variable_definition_2|variable_definition_3|variable_value_1|variable_value_2|variable_value_3|variable_value_text_1|variable_value_text_2|variable_value_text_3|description|theme_1_code|theme_2_code|theme_3_code|theme_4_code|theme_5_code|theme_6_code|theme_7_code|theme_8_code|theme_9_code|is_hide | |||
| 1|Nombre d'articles couvrant 80% des stocks|V_STOCK_MENSUEL_X|DISTINCT CASE WHEN article_id IN ([CLASSE:CTI_ESS_ART80:[TEMPLATE_VALUE_1]]) THEN article_id ELSE null END|1|Nb Art. 80% stock Qté.|CTI_ART80MNT|COUNT||50|Nombre des articles couvrant 80% des stocks|4| | | | |4|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|1|<NULL>|Code de ventilation|||||||||Nombre d'articles couvrant 80% des stocks en quantité|1QTE|||||||||1 | |||
| 1|Nombre d'articles couvrant 80% des stocks - Atelier|V_STOCK_MENSUEL_X|DISTINCT CASE WHEN article_id IN ([CLASSE:CTI_ESS_ART80:ATE]) THEN article_id ELSE null END|1|Nb Art. 80% stock Qté.|CTI_ART80MNT#ATE|COUNT||50|Nombre des articles couvrant 80% des stocks|4| | | | |4|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|0|CTI_ART80MNT||||ATE|||Atelier||||1QTE|||||||||0 | |||
| 1|Nombre d'articles couvrant 80% des stocks - Cuisine|V_STOCK_MENSUEL_X|DISTINCT CASE WHEN article_id IN ([CLASSE:CTI_ESS_ART80:CUI]) THEN article_id ELSE null END|1|Nb Art. 80% stock Qté.|CTI_ART80MNT#CUI|COUNT||50|Nombre des articles couvrant 80% des stocks|4| | | | |4|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|0|CTI_ART80MNT||||CUI|||Cuisine||||1QTE|||||||||0 | |||
| 1|Nombre d'articles couvrant 80% des stocks - DispositifsMédicaux|V_STOCK_MENSUEL_X|DISTINCT CASE WHEN article_id IN ([CLASSE:CTI_ESS_ART80:DM]) THEN article_id ELSE null END|1|Nb Art. 80% stock Qté.|CTI_ART80MNT#DM|COUNT||50|Nombre des articles couvrant 80% des stocks|4| | | | |4|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|0|CTI_ART80MNT||||DM|||Dispositifs Médicaux||||1QTE|||||||||0 | |||
| 1|Nombre d'articles couvrant 80% des stocks - DispositifsMédicauxImplantables|V_STOCK_MENSUEL_X|DISTINCT CASE WHEN article_id IN ([CLASSE:CTI_ESS_ART80:DMI]) THEN article_id ELSE null END|1|Nb Art. 80% stock Qté.|CTI_ART80MNT#DMI|COUNT||50|Nombre des articles couvrant 80% des stocks|4| | | | |4|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|0|CTI_ART80MNT||||DMI|||Dispositifs Médicaux Implantables||||1QTE|||||||||0 | |||
| 1|Nombre d'articles couvrant 80% des stocks - Economat|V_STOCK_MENSUEL_X|DISTINCT CASE WHEN article_id IN ([CLASSE:CTI_ESS_ART80:ECO]) THEN article_id ELSE null END|1|Nb Art. 80% stock Qté.|CTI_ART80MNT#ECO|COUNT||50|Nombre des articles couvrant 80% des stocks|4| | | | |4|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|0|CTI_ART80MNT||||ECO|||Economat||||1QTE|||||||||0 | |||
| 1|Nombre d'articles couvrant 80% des stocks - Lingerie|V_STOCK_MENSUEL_X|DISTINCT CASE WHEN article_id IN ([CLASSE:CTI_ESS_ART80:LIN]) THEN article_id ELSE null END|1|Nb Art. 80% stock Qté.|CTI_ART80MNT#LIN|COUNT||50|Nombre des articles couvrant 80% des stocks|4| | | | |4|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|0|CTI_ART80MNT||||LIN|||Lingerie||||1QTE|||||||||0 | |||
| 1|Nombre d'articles couvrant 80% des stocks - Médicaments|V_STOCK_MENSUEL_X|DISTINCT CASE WHEN article_id IN ([CLASSE:CTI_ESS_ART80:MED]) THEN article_id ELSE null END|1|Nb Art. 80% stock Qté.|CTI_ART80MNT#MED|COUNT||50|Nombre des articles couvrant 80% des stocks|4| | | | |4|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|0|CTI_ART80MNT||||MED|||Médicaments||||1QTE|||||||||0 | |||
| 1|Nombre d'articles couvrant 80% des stocks - Parapharmacie|V_STOCK_MENSUEL_X|DISTINCT CASE WHEN article_id IN ([CLASSE:CTI_ESS_ART80:PAR]) THEN article_id ELSE null END|1|Nb Art. 80% stock Qté.|CTI_ART80MNT#PAR|COUNT||50|Nombre des articles couvrant 80% des stocks|4| | | | |4|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|0|CTI_ART80MNT||||PAR|||Parapharmacie||||1QTE|||||||||0 | |||
| 1|Nombre d'articles couvrant 80% des stocks|V_STOCK_MENSUEL_X|DISTINCT CASE WHEN article_id IN ([LISTE:CTI_ESS_ART80]) THEN article_id ELSE null END|1|Nb Art. 80% stock Qté.|CTI_ART80QTE|COUNT||50|Nombre des articles couvrant 80% des stocks|4| | | | |4|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|0|<NULL>||||||||||Nombre d'articles couvrant 80% des stocks en quantité|1QTE|||||||||0 | |||
| 1|Code article|TABART|article_code|1|Article|CTI_ARTCODE|*LIST||50|Code article|1| | | | |1|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|0|<NULL>||||||||||Code de l'article||||||||||0 | |||
| 1|Nombre moyen d'articles par fournisseur|*CALC|base.cti_division([1],[2])|1|Moy Art. / four.|CTI_ARTFOUMOY|*CALC||50|Nombre moyen d'articles par fournisseur| | | | | | |CTI_NBART|CTI_NBFOU#2|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|0|<NULL>||||||||||Nombre moyen d'articles par fournisseur|1QTE|||||||||1 | |||
| 1|Oid article|TABART|CASE WHEN COUNT(DISTINCT article_id) = 1 THEN MAX(article_id) ELSE 0 END|1||CTI_ARTOID|*LIST||0||1| | | | |1|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|0|<NULL>||||||||||||||||||||0 | |||
| 1|Désignation de l'article|TABART|CASE WHEN COUNT(DISTINCT article_texte) = 1 THEN MAX(article_texte) ELSE '' END|1|Article|CTI_ARTTXT|*LIST||200|Désignation de l'article|1| | | | |1|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|0|<NULL>||||||||||Désignation de l'article||||||||||0 | |||
| 1|Date de commande|V_LIGNES_COMMANDES_X|CASE WHEN COUNT(DISTINCT(date_commande)) = 1 THEN MAX(date_commande)::text ELSE '' END|1|Date de commande|CTI_COMDATE|*LIST|DD/MM/YYYY|65|Date de commande| | | | | | |<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|0|<NULL>||||||||||Date de commande|3DUR|||||||||0 | |||
| 1|Délai livraison moyen|*CALC|base.cti_division([1],[2])|1|Moy Délai livraison|CTI_DELLIVMOY|*CALC||80|Délai livraison moyen| | | | | | |CTI_NBJLIV|CTI_NB_LIGCOM#2|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|0|<NULL>|||||||||||3DUR|2MNT|1QTE|||||||0 | |||
| 1|Délai paiement moyen founisseur|*CALC|base.cti_division([1],[2])|1|Moy Délai payment|CTI_DELPAYMOY|*CALC||50|Délai paiement moyen founisseur| | | | | | |CTI_NBJPAYFOU#2|CTI_NB_LIGCOM#2|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|0|<NULL>||||||||||Délai paiement moyen founisseur|3DUR|2MNT|1QTE|||||||1 | |||
| 1|Date d'engagement|V_LIGNES_COMMANDES_X|CASE WHEN COUNT(DISTINCT(date_engagement)) = 1 THEN MAX(date_engagement)::text ELSE '' END|1|Date d'engagement|CTI_ENGDATE|*LIST|DD/MM/YYYY|65|Date d'engagement| | | | | | |<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|0|<NULL>||||||||||Date d'engagement|3DUR|||||||||0 | |||
| 1|Erreur|V_SEP__X||1||CTI_ERROR|SEP|#|50||0| | | | |0|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|0|<NULL>||||||||||||||||||||0 | |||
| 1|Nombre moyen de factures par fournisseur|*CALC|base.cti_division([1],[2])|1|Moy Fac. / Four.|CTI_FACFOUMOY|*CALC||50|Nombre moyen de factures par fournisseur| | | | | | |CTI_NBFAC#2|CTI_NBFOU#2|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|0|<NULL>||||||||||Nombre moyen de factures par fournisseur|1QTE|||||||||1 | |||
| 1|Fréquence de rupture de stocks|*CALC|base.cti_division([2],[1])|1|Fr. ruptures|CTI_FRRUPSTO|*CALC|#j|50|Fréquence de rupture de stocks| | | | | | |CTI_NBRUPSTO|CTI_NBJPER|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|0|<NULL>||||||||||Duréee en jours / Nombre de rupture de stocks|3DUR|||||||||0 | |||
| 1|Code du Gestionnaire|TABGEST|CASE WHEN COUNT( DISTINCT gestionnaire_code) = 1 THEN MAX(gestionnaire_code) ELSE '' END|1|Gest|CTI_GESTCODE|*LIST|40|30|Code Gestionnaire|1| | | | |1|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|0|<NULL>||||||||||Code du Gestionnaire||||||||||0 | |||
| 1|Code du lieu|TABLIEU|CASE WHEN COUNT(DISTINCT lieu_code) = 1 THEN MAX(lieu_code) ELSE '' END|1|Lieu|CTI_LIEUCODE|*LIST||30|Code du lieu|1| | | | |1|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|0|<NULL>||||||||||Code du lieu||||||||||0 | |||
| 1|Marge brute|*CALC|[3]*(base.cti_division([1],[3])-base.cti_division([2],[4]))|1|Marge brute|CTI_MBRUT|*CALC|#,00E|100|Marge brute| | | | | | |CTI_MTSORTTCSTO-2#01|CTI_MTSORTTCSTO-2#01|CTI_NBSORSTO#01|CTI_MTENTTTCSTO-2#00|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|0|<NULL>||||||||||nombre de sorties * (montant des sorties/nombre sorties - montant des entrées/nombre d'entrées)|2MNT|||||||||1 | |||
| 1|Montant HT Pertes et Périmés|*CALC|[1] + [2]|1||CTI_MNTHTPEPE|*CALC|#,00E|100|| | | | | | |CTI_MNTHTUFPER|CTI_MTSORHT-2#02|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|0|<NULL>||||||||||Montant HT pertes et périmés|2MNT|||||||||1 | |||
| 1|Montant HT dans UF de Périmés|V_MOUVEMENTS_ARTICLES_X|CASE WHEN unite_fonctionnelle_id IN [LISTE:CTI_UFPER] THEN sortie_montant_ht ELSE 0 END|1|Mt HT UF Pér.|CTI_MNTHTUFPER|SUM|#,00E|100|Montant HT UF Périmés|1| | | | |1|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|0|<NULL>||||||||||Montant HT des pertes par rapport à la liste CTI des UF de pertes|2MNT|||||||||1 | |||
| 1|Montant payé HT|V_LIGNES_COMMANDES_X|montant_liquidation_ht|1|Mt payé. HT|CTI_MNTPAYHT|SUM|#,00E|100|Montant payé HT|2|3| | | |2|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|0|<NULL>||||||||||Montant Liquidation HT|2MNT|||||||||0 | |||
| 1|Montant payé TTC|V_LIGNES_COMMANDES_X|montant_liquidation_ttc|1|Mt payé. TTC|CTI_MNTPAYTTC|SUM|#,00E|100|Montant payé TTC|2|3| | | |2|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|0|<NULL>||||||||||Montant Liquidation TTC|2MNT|||||||||0 | |||
| 1|Valeur stock début période|V_STOCK_MENSUEL_X|CASE WHEN date_debut = periode THEN stock_valeur_debut ELSE 0 END|1|Valeur Stock début|CTI_MNTSTODEB|SUMFIRSTMONTH|#,00E|100|Valeur stock début période|4| | | | |4|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|0|<NULL>|||||||||||2MNT|||||||||0 | |||
| 1|Montant stock calculé début période|V_MOUVEMENTS_STOCKS_X|round(CASE WHEN gere_en_stock != '0' AND date < periode AND est_dernier_jour = '1' THEN stock_quantite_fin*prix_unitaire_calcule WHEN gere_en_stock != '0' AND date = periode AND est_premier_jour = '1' THEN stock_quantite_debut*prix_unitaire_calcule ELSE 0 END,10)|1|Mt Stock début|CTI_MNTSTODEBACHAT|SUMFIRSTMONTH|#,00E|100|Montant HT stock calculé début période|5| | | | |5|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|0|<NULL>||||||||||Montant des stocks en début de période basé sur le pump CTI||||||||||0 | |||
| 1|Montant stock calculé début|V_MOUVEMENTS_ARTICLES_X|round(stock_quantite_debut*prix_unitaire_calcule,10)|1|Mt Stock fin|CTI_MNTSTODEBMVT|SUM|#,00E|100|Montant TTC stock calculé en début de mouvement|1| | | | |1|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|0|<NULL>||||||||||Montant stock en début de mouvement basé sur le pump CTI||||||||||0 | |||
| 1|Valeur stock fin période|V_STOCK_MENSUEL_X|CASE WHEN date_fin = toperiode THEN stock_valeur_fin ELSE 0 END|1|Valeur Stock fin|CTI_MNTSTOFIN|SUMLASTMONTH|#,00E|100|Valeur stock fin période|4| | | | |4|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|0|<NULL>|||||||||||2MNT|||||||||0 | |||
| 1|Montant stock calculé fin période|V_MOUVEMENTS_STOCKS_X|round(CASE WHEN gere_en_stock != '0' AND toperiode <= date_fin AND est_dernier_jour = 1 THEN stock_quantite_fin*prix_unitaire_calcule ELSE 0 END,10)|1|Mt Stock fin|CTI_MNTSTOFINACHAT|SUMLASTMONTH|#,00E|100|Montant HT stock calculé fin période|5| | | | |5|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|0|<NULL>||||||||||Montant stock fin de période basé sur le pump CTI||||||||||0 | |||
| 1|Montant stock calculé fin|V_MOUVEMENTS_ARTICLES_X|(MAX(ARRAY[CASE WHEN est_dernier_jour = '1' THEN date::text ELSE '1900-01-01'::text END,round(stock_quantite_fin*prix_unitaire_calcule,10)::text]))[2]::numeric|1|Mt Stock fin|CTI_MNTSTOFINMVT||#,00E|100|Montant HT stock calculé en fin de mouvement|1| | | | |1|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|0|<NULL>||||||||||Montant stock en fin de mouvement basé sur le pump CTI||||||||||0 | |||
| 1|Valeur stock moyen (mouvements)|*CALC|base.cti_division([1]+[2],2)|1|Mnt. Stock moy.|CTI_MNTSTOMOYMVT|*CALC|#,00E|100|Valeur stock moyen (mouvements)| | | | | | |CTI_MNTSTODEBACHAT|CTI_MNTSTOFINACHAT|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|0|<NULL>||||||||||Valeur de stock moyen (valeur stock début (achat) + valeur stock fin (achat) /2)||||||||||0 | |||
| 1|Valeur stock moyen|*CALC|base.cti_division([1]+[2],2)|1|Mnt. Stock moy.|CTI_MNTSTOMY|*CALC|#,00E|100|Valeur stock moyen| | | | | | |CTI_MNTSTODEB|CTI_MNTSTOFIN|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|0|<NULL>||||||||||Valeur de stock moyen (valeur stock début (achat) + valeur stock fin (achat) /2)|2MNT|||||||||0 | |||
| 1|Valeur TTC stock début période|V_STOCK_MENSUEL_X|CASE WHEN date_debut = periode THEN stock_valeur_debut_ttc ELSE 0 END|1|Valeur TTC Stock début|CTI_MNTTTCSTODEB|SUMFIRSTMONTH|#,00E|100|Valeur TTC stock début période|4| | | | |4|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|0|<NULL>|||||||||||2MNT|||||||||0 | |||
| 1|Valeur TTC stock fin période|V_STOCK_MENSUEL_X|CASE WHEN date_fin = toperiode THEN stock_valeur_fin_ttc ELSE 0 END|1|Valeur TTC Stock fin|CTI_MNTTTCSTOFIN|SUMLASTMONTH|#,00E|100|Valeur TTC stock fin période|4| | | | |4|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|0|<NULL>|||||||||||2MNT|||||||||0 | |||
| 1|Montant des achats|V_LIGNES_COMMANDES_X|montant_liquidation_ttc|1|Mt achats|CTI_MTACHA|SUM|#,00E|100|Montant des achats|2|3| | | |2|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|0|<NULL>||||||||||Montant des achats|2MNT|||||||||0 | |||
| 1|Panier Moyen (HT)|*CALC|base.cti_division([1],[2])|1|Panier Moy. HT|CTI_MTCMOYHT|*CALC|#E|100|Panier Moyen (HT)| | | | | | |CTI_MTCOMHT#2|CTI_NBCOM#2|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|0|<NULL>||||||||||Panier moyen HT (montant commandé ht / nombre de commandes)|2MNT|1QTE||||||||0 | |||
| 1|Montant commandé HT|V_LIGNES_COMMANDES_X|montant_commande_ht|1|Mt Com. HT|CTI_MTCOMHT|SUM|#,00E|100|Montant Commandé HT|2|3| | | | |<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|0|<NULL>||||||||||Montant Commandé HT|2MNT|||||||||0 | |||
| 1|Montant commandé TTC|V_LIGNES_COMMANDES_X|montant_commande_ttc|1|Mt Com. TTC|CTI_MTCOMTTC|SUM|#,00E|100|Montant commande TTC|2|3| | | | |<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|0|<NULL>||||||||||Montant commande TTC|2MNT|||||||||0 | |||
| 1|Montant TTC des entrées|V_MOUVEMENTS_ARTICLES_X|entree_montant|1|Mt Ent. TTC|CTI_MTENT|SUM|#,00E|100|Montant TTC des entrées|1| | | | |1|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|0|<NULL>||||||||||Montant TTC des entrées|2MNT|||||||||0 | |||
| 1|Montant HT des entrées|V_MOUVEMENTS_ARTICLES_X|entree_montant_ht|1|Mt Ent. HT|CTI_MTENTHT|SUM|#,00E|100|Montant HT des entrées|1| | | | |1|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|0|<NULL>||||||||||Montant HT des entrées|2MNT|||||||||0 | |||
| 1|Montant HT|V_MOUVEMENTS_ARTICLES_X|CASE WHEN type_mouvement_id IN ([CLASSE:CTI_TYPMVT:[TEMPLATE_VALUE_1]]) THEN entree_montant_ht ELSE 0 END|1|Mt [TEMPLATE_TEXT_1] HT|CTI_MTENTHT-2|SUM|#,00E|100|Montant HT [TEMPLATE_TEXT_1]|1| | | | |1|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|1|<NULL>|Type de mouvements d'entrée||||||||||2MNT|||||||||1 | |||
| 1|Montant des entrées|V_STOCK_MENSUEL_X|entree_montant|1|Mt Ent. HT|CTI_MTENTSTO|SUM|#,00E|100|Montant HT des entrées|4| | | | |4|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|0|<NULL>||||||||||Montant TTC des sorties|2MNT|||||||||0 | |||
| 1|Montant TTC des entrées par type|V_MOUVEMENTS_ARTICLES_X|CASE WHEN type_mouvement_id IN ([CLASSE:CTI_TYPMVT:[TEMPLATE_VALUE_1]]) THEN entree_montant ELSE 0 END|1|Mt [TEMPLATE_TEXT_1] TTC|CTI_MTENTTTC-2|SUM|#,00E|100|Montant [TEMPLATE_TEXT_1] TTC|1| | | | |1|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|1|<NULL>|Type de mouvements d'entrée||||||||||2MNT|||||||||1 | |||
| 1|Montant TTC des entrées par type - autres|V_MOUVEMENTS_ARTICLES_X|CASE WHEN type_mouvement_id IN ([CLASSE:CTI_TYPMVT:99]) THEN entree_montant ELSE 0 END|1|Mt autres TTC|CTI_MTENTTTC-2#99|SUM|#,00E|100|Montant autres TTC|1| | | | |1|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|0|CTI_MTENTTTC-2||||99|||autres||||2MNT|||||||||0 | |||
| 1|Montant TTC des entrées (stock)|V_MOUVEMENTS_STOCKS_X|CASE WHEN gere_en_stock != '0' AND date BETWEEN periode AND toperiode AND type_mouvement_id IN ([CLASSE:CTI_TYPMVT:[TEMPLATE_VALUE_1]]) THEN entree_montant ELSE 0 END|1|Mt [TEMPLATE_TEXT_1] TTC (stock)|CTI_MTENTTTCSTO-2|SUM|#,00E|100|Montant [TEMPLATE_TEXT_1] TTC (stock)|5| | | | |5|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|1|<NULL>|Type de mouvements d'entrée|||||||||Montant TTC des entrées par type (produit gérés stock)||||||||||1 | |||
| 1|Montant TTC des entrées (stock) - livraison|V_MOUVEMENTS_STOCKS_X|CASE WHEN gere_en_stock != '0' AND date BETWEEN periode AND toperiode AND type_mouvement_id IN ([CLASSE:CTI_TYPMVT:00]) THEN entree_montant ELSE 0 END|1|Mt livraison TTC (stock)|CTI_MTENTTTCSTO-2#00|SUM|#,00E|100|Montant livraison TTC (stock)|5| | | | |5|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|0|CTI_MTENTTTCSTO-2||||00|||livraison||||2MNT|||||||||0 | |||
| 1|Montant d'achats auprès des fournisseurs références|V_LIGNES_COMMANDES_X|CASE WHEN fournisseur_id IN [LISTE:CTI_FOUREF] OR fournisseur_id = fournisseur_principal_id THEN montant_liquidation_ttc ELSE 0 END|1|Mt achat four. ref.|CTI_MTFOUGR|SUM|#,00E|100|Montant d'achats auprès des fournisseurs références|2|3| | | |2|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|0|<NULL>||||||||||Montant d'achats auprès des fournisseurs références|2MNT|||||||||1 | |||
| 1|Montant HT des entrées (stock)|V_MOUVEMENTS_ARTICLES_X|CASE WHEN gere_en_stock != '0' AND date BETWEEN periode AND toperiode AND type_mouvement_id IN ([CLASSE:CTI_TYPMVT:[TEMPLATE_VALUE_1]]) THEN entree_montant_ht ELSE 0 END|1|Mt [TEMPLATE_TEXT_1] HT (stock)|CTI_MTHTSORSTO-2|SUM|#,00E|100|Montant [TEMPLATE_TEXT_1] HT (stock)|1| | | | |1|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|1|<NULL>|Type de mouvements d'entrée|||||||||Montant HT des entrées par type (produits gérés en stock)||||||||||1 | |||
| 1|Montant Ecart HT|V_MOUVEMENTS_ARTICLES_X|entree_montant_ht-sortie_montant_ht|1|Mt Ecart HT|CTI_MTMVTECENTSORHT|SUM|#,00E|100|Montant Ecart HT|1| | | | |1|CTI_MTENTHT|CTI_MTSORHT|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|0|<NULL>||||||||||Différence entre les montants d'entrée et de sortie en HT|2MNT|||||||||0 | |||
| 1|Montant Ecart TTC|V_MOUVEMENTS_ARTICLES_X|entree_montant-sortie_montant|1|Mt Ecart TTC|CTI_MTMVTECENTSORTTC|SUM|#,00E|100|Montant Ecart TTC|1| | | | |1|CTI_MTENT|CTI_MTSORT|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|0|<NULL>||||||||||Différence entre les montants d'entrée et de sortie en TTC|2MNT|||||||||0 | |||
| 1|Montant non livré HT|V_LIGNES_COMMANDES_X|montant_non_livraison_ht|1|Mt Non Liv. HT|CTI_MTNLIVHT|SUM|#,00E|80|Montant non livré HT|2|3| | | | |<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|0|<NULL>||||||||||Montant non livraison HT|2MNT|||||||||0 | |||
| 1|Montant non livré TTC|V_LIGNES_COMMANDES_X|montant_non_livraison_ttc|1|Mt Non Liv. TTC|CTI_MTNLIVTTC|SUM|#,00E|80|Montant non livré TTC|2|3| | | | |<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|0|<NULL>||||||||||Montant non livré TTC|2MNT|||||||||0 | |||
| 1|Montant port|V_LIGNES_COMMANDES_X|montant_commande_port|1|Mt Port|CTI_MTPORT|SUM|#,00E|100|Montant port|2|3| | | | |<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|0|<NULL>||||||||||Montant port|2MNT|||||||||1 | |||
| 1|Montant remise|V_LIGNES_COMMANDES_X|montant_commande_remise|1|Mt Remise|CTI_MTREM|SUM|#,00E|80|Montant remise|2|3| | | |2|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|0|<NULL>||||||||||Montant remise|2MNT|||||||||0 | |||
| 1|Montant HT des sorties|V_MOUVEMENTS_ARTICLES_X|sortie_montant_ht|1|Mt Sor. HT|CTI_MTSORHT|SUM|#,00E|100|Montant HT des sorties|1| | | | |1|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|0|<NULL>||||||||||Montant HT des sorties|2MNT|||||||||0 | |||
| 1|Montant HT des sorties|V_MOUVEMENTS_ARTICLES_X|CASE WHEN type_mouvement_id IN ([CLASSE:CTI_TYPMVT:[TEMPLATE_VALUE_1]]) AND unite_fonctionnelle_id NOT IN [LISTE:CTI_UFPER] THEN sortie_montant_ht ELSE 0 END|1|Mt [TEMPLATE_TEXT_1] HT|CTI_MTSORHT-2|SUM|#,00E|100|Montant [TEMPLATE_TEXT_1] HT|1| | | | |1|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|1|<NULL>|Type de mouvements de sortie||||||||||2MNT|||||||||1 | |||
| 1|Montant HT des sorties - consommation|V_MOUVEMENTS_ARTICLES_X|CASE WHEN type_mouvement_id IN ([CLASSE:CTI_TYPMVT:01]) AND unite_fonctionnelle_id NOT IN [LISTE:CTI_UFPER] THEN sortie_montant_ht ELSE 0 END|1|Mt consommation HT|CTI_MTSORHT-2#01|SUM|#,00E|100|Montant consommation HT|1| | | | |1|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|0|CTI_MTSORHT-2||||01|||consommation||||2MNT|||||||||0 | |||
| 1|Montant HT des sorties - pertes|V_MOUVEMENTS_ARTICLES_X|CASE WHEN type_mouvement_id IN ([CLASSE:CTI_TYPMVT:02]) AND unite_fonctionnelle_id NOT IN [LISTE:CTI_UFPER] THEN sortie_montant_ht ELSE 0 END|1|Mt pertes HT|CTI_MTSORHT-2#02|SUM|#,00E|100|Montant pertes HT|1| | | | |1|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|0|CTI_MTSORHT-2||||02|||pertes||||2MNT|||||||||0 | |||
| 1|Montant HT des sorties - autres|V_MOUVEMENTS_ARTICLES_X|CASE WHEN type_mouvement_id IN ([CLASSE:CTI_TYPMVT:99]) AND unite_fonctionnelle_id NOT IN [LISTE:CTI_UFPER] THEN sortie_montant_ht ELSE 0 END|1|Mt autres HT|CTI_MTSORHT-2#99|SUM|#,00E|100|Montant autres HT|1| | | | |1|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|0|CTI_MTSORHT-2||||99|||autres||||2MNT|||||||||1 | |||
| 1|Montant HT des sorties (stock)|V_MOUVEMENTS_ARTICLES_X|CASE WHEN gere_en_stock != '0' AND date BETWEEN periode AND toperiode AND type_mouvement_id IN ([CLASSE:CTI_TYPMVT:[TEMPLATE_VALUE_1]]) AND unite_fonctionnelle_id NOT IN [LISTE:CTI_UFPER] THEN sortie_montant_ht ELSE 0 END|1|Mt [TEMPLATE_TEXT_1] HT (stock)|CTI_MTSORHTSTO-2|SUM|#,00E|100|Montant [TEMPLATE_TEXT_1] HT (stock)|1| | | | |1|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|1|<NULL>|Type de mouvements de sortie|||||||||Montant HT des sorties par type (produits gérés en stock)||||||||||1 | |||
| 1|Montant TTC des sorties|V_MOUVEMENTS_ARTICLES_X|sortie_montant|1|Mt Sor. TTC|CTI_MTSORT|SUM|#,00E|100|Montant TTC des sorties|1| | | | |1|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|0|<NULL>||||||||||Montant TTC des sorties|2MNT|||||||||0 | |||
| 1|Montant des sorties|V_STOCK_MENSUEL_X|sortie_montant|1|Mt Sor. HT|CTI_MTSORTSTO|SUM|#,00E|100|Montant HT des sorties|4| | | | |4|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|0|<NULL>||||||||||Montant TTC des sorties|2MNT|||||||||0 | |||
| 1|Montant TTC des sorties par type|V_MOUVEMENTS_ARTICLES_X|CASE WHEN type_mouvement_id IN ([CLASSE:CTI_TYPMVT:[TEMPLATE_VALUE_1]]) AND unite_fonctionnelle_id NOT IN [LISTE:CTI_UFPER] THEN sortie_montant ELSE 0 END|1|Mt [TEMPLATE_TEXT_1] TTC|CTI_MTSORTTC-2|SUM|#,00E|100|Montant [TEMPLATE_TEXT_1] TTC|1| | | | |1|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|1|<NULL>|Type de mouvements de sortie||||||||||2MNT|||||||||1 | |||
| 1|Montant TTC des sorties par type - pertes|V_MOUVEMENTS_ARTICLES_X|CASE WHEN type_mouvement_id IN ([CLASSE:CTI_TYPMVT:02]) AND unite_fonctionnelle_id NOT IN [LISTE:CTI_UFPER] THEN sortie_montant ELSE 0 END|1|Mt pertes TTC|CTI_MTSORTTC-2#02|SUM|#,00E|100|Montant pertes TTC|1| | | | |1|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|0|CTI_MTSORTTC-2||||02|||pertes||||2MNT|||||||||0 | |||
| 1|Montant TTC des sorties (stock)|V_MOUVEMENTS_ARTICLES_X|CASE WHEN gere_en_stock != '0' AND date BETWEEN periode AND toperiode AND type_mouvement_id IN ([CLASSE:CTI_TYPMVT:[TEMPLATE_VALUE_1]]) AND unite_fonctionnelle_id NOT IN [LISTE:CTI_UFPER] THEN sortie_montant ELSE 0 END|1|Mt [TEMPLATE_TEXT_1] TTC (stock)|CTI_MTSORTTCSTO-2|SUM|#,00E|100|Montant [TEMPLATE_TEXT_1] TTC (stock)|1| | | | |1|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|1|<NULL>|Type de mouvements de sortie|||||||||Montant TTC des sorties par type (produit gérés en stock)|2MNT|||||||||1 | |||
| 1|Montant TTC des sorties (stock) - consommation|V_MOUVEMENTS_ARTICLES_X|CASE WHEN gere_en_stock != '0' AND date BETWEEN periode AND toperiode AND type_mouvement_id IN ([CLASSE:CTI_TYPMVT:01]) AND unite_fonctionnelle_id NOT IN [LISTE:CTI_UFPER] THEN sortie_montant ELSE 0 END|1|Mt consommation TTC (stock)|CTI_MTSORTTCSTO-2#01|SUM|#,00E|100|Montant consommation TTC (stock)|1| | | | |1|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|0|CTI_MTSORTTCSTO-2||||01|||consommation||||2MNT|||||||||0 | |||
| 1|Montant Ecart HT|V_STOCK_MENSUEL_X|entree_montant-sortie_montant|1|Mt Ecart HT|CTI_MTSTOECENTSORHT|SUM|#,00E|100|Montant Ecart HT|4| | | | |4|CTI_MTENTHT|CTI_MTSORHT|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|0|<NULL>||||||||||Différence entre les montants d'entrée et de sortie en HT|2MNT|||||||||0 | |||
| 1|Montant TVA|V_LIGNES_COMMANDES_X|montant_commande_tva|1|Mt TVA|CTI_MTTVA|SUM|#,00E|80|Montant TVA|2|3| | | | |<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|0|<NULL>||||||||||Montant TVA|2MNT|||||||||0 | |||
| 1|Numéro de commande|V_MOUVEMENTS_ARTICLES_X|CASE WHEN COUNT(DISTINCT commande_code) = 1 THEN MAX(commande_code) ELSE '' END|1|Commande|CTI_MVTCMD|*LIST||50|Numéro de commande|1| | | | |1|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|0|<NULL>||||||||||Numéro de commande associé||||||||||0 | |||
| 1|Date|V_MOUVEMENTS_ARTICLES_X|CASE WHEN COUNT(DISTINCT date) = 1 THEN MAX(date::text) ELSE '' END|1|Date|CTI_MVTDATE|*LIST|DD/MM/YYYY|65|Date de mouvement|1| | | | |1|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|0|<NULL>||||||||||Date du mouvement|3DUR|||||||||0 | |||
| 1|Date de commande|V_MOUVEMENTS_ARTICLES_X|CASE WHEN COUNT(DISTINCT date_commande) = 1 THEN MAX(date_commande)::text ELSE '' END|1|Date de commande|CTI_MVTDCMD|*LIST|DD/MM/YYYY|65|Date de commande|1| | | | |1|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|0|<NULL>||||||||||Date de Commande||||||||||0 | |||
| 1|Texte du mouvement|V_MOUVEMENTS_ARTICLES_X|CASE WHEN COUNT(DISTINCT mouvement_texte) = 1 THEN MAX(mouvement_texte) ELSE '' END|1|Texte|CTI_MVTTXT|*LIST||200|Texte du mouvement|1| | | | |1|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|0|<NULL>||||||||||Texte du mouvement||||||||||0 | |||
| 1|Type de mouvement|V_MOUVEMENTS_ARTICLES_X|CASE WHEN COUNT(DISTINCT type_mouvement_code) = 1 THEN MAX(type_mouvement_code) ELSE '' END|1|Mvt|CTI_MVTTYPE|*LIST||30|Type de mouvement|1| | | | |1|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|0|<NULL>||||||||||Code du type de mouvement||||||||||0 | |||
| 1|Nombre d'articles différents|V_MOUVEMENTS_ARTICLES_X|DISTINCT article_id|1|Nb Art.|CTI_NBART|COUNT||50|Nombre d'articles|1| | | | |1|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|0|<NULL>||||||||||Nombre d'articles|1QTE|||||||||0 | |||
| 1|Nombre d'articles différents commandés|V_LIGNES_COMMANDES_X|DISTINCT article_id|1|Nb Art. Com.|CTI_NBARTCOM|COUNT||50|Nombre d'articles commandés| | | | | | |<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|0|<NULL>||||||||||Nombre d'articles commandés|1QTE|||||||||0 | |||
| 1|Nombre moyen d'articles par commande|*CALC|base.cti_division([1],[2])|1|Moy Art. / com.|CTI_NBARTMOYCOM|*CALC||50|Nombre moyen d'articles par commande| | | | | | |<NULL>|CTI_NBCOM#2|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|0|<NULL>||||||||||Nombre moyen d'articles par commande|1QTE|||||||||0 | |||
| 1|Nombre de commandes|V_LIGNES_COMMANDES_X|DISTINCT commande_id|1|Nb Com.|CTI_NBCOM|COUNT||50|Nombre de commandes|2|3| | | | |<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|0|<NULL>||||||||||Nombre de commandes|1QTE|||||||||0 | |||
| 1|Quantité entrée|V_MOUVEMENTS_ARTICLES_X|entree_quantite|1|Qté entrée|CTI_NBENT|SUM||70|Quantité entrée|1| | | | |1|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|0|<NULL>||||||||||Quantité entrée|1QTE|||||||||0 | |||
| 1|Quantité entrée (stock)|V_MOUVEMENTS_STOCKS_X|CASE WHEN gere_en_stock != '0' AND date BETWEEN periode AND toperiode AND type_mouvement_id IN ([CLASSE:CTI_TYPMVT:[TEMPLATE_VALUE_1]]) THEN entree_quantite ELSE 0 END|1|Qté [TEMPLATE_TEXT_1] (stock)|CTI_NBENTSTO|SUM|#,00E|90|Quantité entrée [TEMPLATE_TEXT_1] (stock)|5| | | | |5|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|1|<NULL>|Type de mouvements d'entrée|||||||||Quantité des entrées par type (produit gérés stock)||||||||||1 | |||
| 1|Quantité entrée (stock) - livraison|V_MOUVEMENTS_STOCKS_X|CASE WHEN gere_en_stock != '0' AND date BETWEEN periode AND toperiode AND type_mouvement_id IN ([CLASSE:CTI_TYPMVT:00]) THEN entree_quantite ELSE 0 END|1|Qté livraison (stock)|CTI_NBENTSTO#00|SUM|#,00E|90|Quantité entrée livraison (stock)|5| | | | |5|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|0|CTI_NBENTSTO||||00|||livraison|||||||||||||0 | |||
| 1|Quantité entrée|V_STOCK_MENSUEL_X|entree_quantite|1|Qté entrée|CTI_NBENTSTOM|SUM||70|Quantité entrée|4| | | | |4|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|0|<NULL>||||||||||Quantité entrée|1QTE|||||||||0 | |||
| 1|Nombre total de factures|V_LIGNES_COMMANDES_X|DISTINCT CASE WHEN montant_liquidation_ht != 0 THEN commande_id ELSE null END|1|Nb Fac.|CTI_NBFAC|COUNT||50|Nombre total de factures|2|3| | | |2|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|0|<NULL>||||||||||Nombre total de factures|1QTE|||||||||0 | |||
| 1|Nombre total de fournisseurs|V_LIGNES_COMMANDES_X|DISTINCT fournisseur_id|1|Nb Four.|CTI_NBFOU|COUNT||50|Nombre total de fournisseurs|2|3| | | |2|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|0|<NULL>||||||||||Nombre total de fournisseurs|1QTE|||||||||0 | |||
| 1|Nombre de fournisseurs régionaux|V_LIGNES_COMMANDES_X|DISTINCT CASE WHEN fournisseur_id in [LISTE:CTI_FOUREG] THEN fournisseur_id ELSE null END|1|Nb Four. regio.|CTI_NBFOUREG|COUNT||50|Nombre de fournisseurs régionaux|2|3| | | |2|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|0|<NULL>||||||||||Nombre de fournisseurs régionaux|1QTE|||||||||1 | |||
| 1|Delais livraison|V_LIGNES_COMMANDES_X|CASE WHEN ligne_commande_etat_livraison = 'T' THEN date_reception - date_commande ELSE 0 END|1|Delais livraison|CTI_NBJLIV|SUM||80|Delais livraison| | | | | | |<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|0|<NULL>|||||||||||3DUR|||||||||0 | |||
| 1|Delais paiement fournisseurs|V_LIGNES_COMMANDES_X|CASE WHEN date_reglement IS NOT NULL THEN delai_paiement ELSE 0 END|1|Delais paiement fournisseurs|CTI_NBJPAYFOU|SUM||50|Delais paiement fournisseurs|2|3| | | |2|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|0|<NULL>||||||||||Delais paiement fournisseurs|3DUR|||||||||1 | |||
| 1|Durée période|V_MOUVEMENTS_STOCKS_X|date( toperiode) - date( periode)|1|Durée période|CTI_NBJPER|MIN||50|Durée période|5| | | | |5|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|0|<NULL>||||||||||Durée période|3DUR|||||||||1 | |||
| 1|Nombre de litiges, de retard...|V_LIGNES_COMMANDES_X|DISTINCT CASE WHEN date_reception > date_livraison_prevue + 10 OR quantite_non_livraison_approvisionnement > 0 THEN commande_id ELSE null END|1|Nb litiges...|CTI_NBLIRET|COUNT||50|Nombre de litiges, de retard...| | | | | | |<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|0|<NULL>||||||||||Nombre de lignes de commandes où les produits n'ont pas été livrées en intégralité et nombre de livraison supérieure à 10 jours|1QTE|||||||||0 | |||
| 1|Nombre de livraisons > 10 jours|V_LIGNES_COMMANDES_X|DISTINCT CASE WHEN date_reception > date_livraison_prevue + 10 THEN commande_id ELSE null END|1|Nb com. non liv. 10 j.|CTI_NBLIV10|COUNT||80|Nombre de livraison supérieures à 10 jours| | | | | | |<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|0|<NULL>||||||||||Nombre de lignes de commandes où les produits n'ont pas été livrées en intégralité dans les 10 jours|1QTE|||||||||0 | |||
| 1|Nombre de mouvements|V_MOUVEMENTS_ARTICLES_X|1|1|Nb mouvements|CTI_NBMVT|SUM||50|Nombre de mouvements|1| | | | |1|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|0|<NULL>||||||||||Nombre de mouvements|1QTE|||||||||0 | |||
| 1|Nombre de commandes non livrées en totalité|V_LIGNES_COMMANDES_X|DISTINCT CASE WHEN quantite_non_livraison_approvisionnement > 0 THEN commande_id ELSE null END|1|Nb com. non liv. tot.|CTI_NBNLI|COUNT||80|Nombre de commandes incomplètes|2|3| | | | |<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|0|<NULL>||||||||||Nombre de lignes de commandes où les produits n'ont pas été livrées en intégralité|1QTE|||||||||0 | |||
| 1|Nombre de rupture de stocks|V_MOUVEMENTS_STOCKS_X|CASE WHEN est_dernier_jour = 1 AND stock_quantite_fin < 0 and gere_en_stock != '0' THEN 1 ELSE 0 END|1|Nb ruptures|CTI_NBRUPSTO|SUM||50|Nombre de rupture de stocks|5| | | | |5|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|0|<NULL>||||||||||Nombre d'occurence d'une quantité de stock négative pour un produit géré en stock||||||||||0 | |||
| 1|Quantité sortie (stock)|V_MOUVEMENTS_STOCKS_X|CASE WHEN gere_en_stock != '0' AND date BETWEEN periode AND toperiode AND type_mouvement_id IN ([CLASSE:CTI_TYPMVT:[TEMPLATE_VALUE_1]]) AND unite_fonctionnelle_id NOT IN [LISTE:CTI_UFPER] THEN sortie_quantite ELSE 0 END|1|Qté [TEMPLATE_TEXT_1] (stock)|CTI_NBSORSTO|SUM|#,00E|90|Quantité sortie [TEMPLATE_TEXT_1] (stock)|5| | | | |5|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|1|<NULL>|Type de mouvements de sortie|||||||||Quantité sortie (produits gérés en stock)||||||||||1 | |||
| 1|Quantité sortie (stock) - consommations|V_MOUVEMENTS_STOCKS_X|CASE WHEN gere_en_stock != '0' AND date BETWEEN periode AND toperiode AND type_mouvement_id IN ([CLASSE:CTI_TYPMVT:01]) AND unite_fonctionnelle_id NOT IN [LISTE:CTI_UFPER] THEN sortie_quantite ELSE 0 END|1|Qté consommations (stock)|CTI_NBSORSTO#01|SUM|#,00E|90|Quantité sortie consommations (stock)|5| | | | |5|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|0|CTI_NBSORSTO||||01|||consommations|||||||||||||0 | |||
| 1|Quantité sortie|V_MOUVEMENTS_ARTICLES_X|sortie_quantite|1|Qté sortie|CTI_NBSORT|SUM||70|Quantité sortie|1| | | | |1|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|0|<NULL>||||||||||Quantité sortie|1QTE|||||||||0 | |||
| 1|Quantité sortie|V_STOCK_MENSUEL_X|sortie_quantite|1|Qté sortie|CTI_NBSORTSTO|SUM||70|Quantité sortie|4| | | | |4|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|0|<NULL>||||||||||Quantité sortie|1QTE|||||||||0 | |||
| 1|Nombres de lignes de commandes|V_LIGNES_COMMANDES_X|DISTINCT ligne_commande_id|1|Nb Lignes Com.|CTI_NB_LIGCOM|COUNT||50|Nombres de lignes de commandes|2|3| | | | |<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|0|<NULL>||||||||||Nombres de lignes de commandes|1QTE|||||||||0 | |||
| 1|Prix Unitaire HT Calculé|V_MOUVEMENTS_ARTICLES_X|(MAX(ARRAY[CASE WHEN est_dernier_jour = '1' THEN date::text ELSE '1900-01-01'::text END,round(prix_unitaire_calcule,2)::text]))[2]::numeric|1|PU HT|CTI_PUCALC||#,00E|60|PU HT|1| | | | |1|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|0|<NULL>||||||||||Prix Unitaire Calculé HT (Calul d'après les stocks mensuels et les livraisons)||||||||||0 | |||
| 1|Prix Unitaire HT (dernier)|V_LIGNES_COMMANDES_X|((MAX(ARRAY[date_commande::text,base.cti_division(CASE WHEN montant_commande_ht > 0 THEN montant_commande_ht ELSE 0 END,CASE WHEN montant_commande_ht > 0 THEN quantite_approvisionnement ELSE 0 END)::text]))[2]::numeric)|1|PU HT (dernier)|CTI_PULHT|CUSTOM|#,0000E|60|Dernier Prix Unitaire HT|2| | | | |2|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|0|<NULL>||||||||||Dernier Prix Unitaire HT (commande)|2MNT|||||||||0 | |||
| 1|Prix Unitaire TTC (dernier)|V_MOUVEMENTS_ARTICLES_X|((MAX(ARRAY[date::text,CASE WHEN prix_unitaire > 0 THEN prix_unitaire ELSE 0 END::text]))[2]::numeric)|1|PU TTC (dernier)|CTI_PULMVT||#,0000E|60|PU TTC (dernier)|1| | | | |1|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|0|<NULL>||||||||||Dernier Prix Unitaire TTC|2MNT|||||||||0 | |||
| 1|Prix Unitaire TTC (dernier)|V_LIGNES_COMMANDES_X|(MAX(ARRAY[date_commande::text,base.cti_division(CASE WHEN montant_commande_ttc > 0 THEN montant_commande_ttc ELSE 0 END,CASE WHEN montant_commande_ttc > 0 THEN quantite_approvisionnement ELSE 0 END)::text]))[2]::numeric|1|PU TTC (dernier)|CTI_PULTTC||#,0000E|60|Dernier Prix Unitaire TTC|2| | | | |2|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|0|<NULL>||||||||||Dernier Prix Unitaire TTC|2MNT|||||||||0 | |||
| 1|Prix Unitaire Moyen|*CALC|base.cti_division([1],[2])|1|PU Moy.|CTI_PUMOY|*CALC|#,0000E|60|Prix Unitaire Moyen| | | | | | |CTI_MNTSTOFIN|CTI_QTESTOFIN|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|0|<NULL>||||||||||Prix Unitaire Moyen|2MNT|1QTE||||||||0 | |||
| 1|Prix Unitaire Moyen liquidation TTC|*CALC|base.cti_division([1],[2])|1|PU Moy. TTC|CTI_PUMOYCOM|*CALC|#,0000E|60|Prix Unitaire Moyen TTC| | | | | | |CTI_MNTPAYTTC#2|CTI_QTELIV#2|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|0|<NULL>||||||||||Prix Unitaire Moyen (Montant liquidation TTC / quantié livrée)|2MNT|1QTE||||||||0 | |||
| 1|PUMP (moyen)|*CALC|base.cti_division([1]+[2],[3]+[4])|1|PUMP Moy.|CTI_PUMOYMVT|*CALC|#,0000E|60|PUMP moyen| | | | | | |CTI_MTENTHT|CTI_MTSORHT|CTI_NBENT|CTI_NBSORT|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|0|<NULL>||||||||||Prix Unitaire Moyen Pondéré (global)|2MNT|1QTE||||||||0 | |||
| 1|Quantité commandée|V_LIGNES_COMMANDES_X|quantite_approvisionnement|1|Qté Com.|CTI_QTECOM|SUM||70|Quantité commandé|2|3| | | | |<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|0|<NULL>||||||||||Quantité commandé|1QTE|||||||||0 | |||
| 1|Quantité Stock calculé début période|V_MOUVEMENTS_STOCKS_X|CASE WHEN gere_en_stock != '0' AND est_dernier_jour = 1 and date < periode THEN stock_quantite_fin WHEN gere_en_stock != '0' AND date = periode and est_premier_jour = 1 THEN stock_quantite_debut ELSE 0 END|1|Qté Stock début|CTI_QTEDEBMVT|SUMFIRSTMONTH||70|Quantité Stock calculé début période|5| | | | |5|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|0|<NULL>||||||||||||||||||||0 | |||
| 1|Quantité Ecart|V_MOUVEMENTS_ARTICLES_X|entree_quantite-sortie_quantite|1|Qté Ecart|CTI_QTEECAENTSOR|SUM||70|Quantité écart|1| | | | |1|CTI_NBENT|CTI_NBSORT|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|0|<NULL>||||||||||Différence entre les quantités entrées et sorties|1QTE|||||||||0 | |||
| 1|Quantité Ecart|*CALC||1|Qté Ecart|CTI_QTEECAMVS|*CALC||70|Quantité écart| | | | | | |CTI_NBENTSTO#00|CTI_NBENTSTO#00|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|0|<NULL>||||||||||Différence entre les quantités livrées et consommées|1QTE|||||||||0 | |||
| 1|Quantité Ecart|V_STOCK_MENSUEL_X|entree_quantite-sortie_quantite|1|Qté Ecart|CTI_QTEECASTO|SUM||70|Quantité écart|4| | | | |4|CTI_NBENT|CTI_NBSORT|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|0|<NULL>||||||||||Différence entre les quantités entrées et sorties|1QTE|||||||||0 | |||
| 1|Quantité livrée|V_LIGNES_COMMANDES_X|quantite_livraison_approvisionnement|1|Qté livrée.|CTI_QTELIV|SUM||80|Quantité livrée|2|3| | | | |<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|0|<NULL>||||||||||Quantité commandé|1QTE|||||||||0 | |||
| 1|Quantité Stock calculé fin période|V_MOUVEMENTS_STOCKS_X|CASE WHEN gere_en_stock != '0' AND date_fin > toperiode AND est_dernier_jour = 1 THEN stock_quantite_fin ELSE 0 END|1|Qté Stock fin|CTI_QTEMVTFIN|SUMLASTMONTH||70|Quantité Stock calculé fin période|5| | | | |5|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|0|<NULL>||||||||||||||||||||0 | |||
| 1|Quantité non livrée|V_LIGNES_COMMANDES_X|quantite_non_livraison_approvisionnement|1|Qté non liv.|CTI_QTENLIV|SUM||80|Quantité non livrée|2|3| | | | |<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|0|<NULL>||||||||||Quantité non livrée|1QTE|||||||||0 | |||
| 1|Quantité Stock début période|V_STOCK_MENSUEL_X|CASE WHEN date_debut = periode THEN stock_quantite_debut ELSE 0 END|1|Qté Stock debut|CTI_QTESTODEB|SUMFIRSTMONTH||70|Quantité Stock début période|4| | | | |4|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|0|<NULL>|||||||||||1QTE|||||||||0 | |||
| 1|Quantité Stock calculé début|V_MOUVEMENTS_ARTICLES_X|(MIN(ARRAY[CASE WHEN est_premier_jour = '1' THEN date::text ELSE '2099-12-31'::text END,stock_quantite_debut::text]))[2]::numeric|1|Qté Stock début|CTI_QTESTODEBMVT|||70|Quantité Stock calculé en début de mouvement|1| | | | |1|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|0|<NULL>||||||||||||||||||||0 | |||
| 1|Quantité Stock fin période|V_STOCK_MENSUEL_X|CASE WHEN date_fin = toperiode THEN stock_quantite_fin ELSE 0 END|1|Qté Stock fin|CTI_QTESTOFIN|SUMLASTMONTH||70|Quantité Stock fin période|4| | | | |4|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|0|<NULL>|||||||||||1QTE|||||||||0 | |||
| 1|Quantité Stock calculé fin|V_MOUVEMENTS_ARTICLES_X|(MAX(ARRAY[CASE WHEN est_dernier_jour = '1' THEN date::text ELSE '1900-01-01'::text END,,stock_quantite_fin::text]))[2]::numeric|1|Qté Stock fin|CTI_QTESTOFINMVT|||70|Quantité Stock calculé fin de mouvement|1| | | | |1|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|0|<NULL>||||||||||||||||||||0 | |||
| 1|Quantité stock moyen (mouvements)|*CALC|base.cti_division([1]+[2],2)|1|Qté. Stock moy.|CTI_QTESTOMOYMVT|*CALC|#,00E|90|Quantité stock moyen (mouvements)| | | | | | |CTI_QTEDEBMVT|CTI_QTEMVTFIN|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|0|<NULL>||||||||||Quantité de stock moyen (quantité stock début (achat) + quantité stock fin (achat) /2)||||||||||0 | |||
| 1|Calcul d'indicateurs dans le rapport|*RAPPORTCALC||1||CTI_RAPPORTCALC|sum|#|50||0| | | | |0|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|0|<NULL>||||||||||Pour calculer directement dans la définition du rapport||||||||||1 | |||
| 1|Date de réception|V_LIGNES_COMMANDES_X|CASE WHEN COUNT(DISTINCT(date_reception)) = 1 THEN MAX(date_reception)::text ELSE '' END|1|Date de réception|CTI_RECDATE|*LIST|DD/MM/YYYY|65|Date de réception| | | | | | |<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|0|<NULL>||||||||||Date de réception|3DUR|||||||||0 | |||
| 1|Référence commande|V_LIGNES_COMMANDES_X|CASE WHEN COUNT(DISTINCT commande_reference) = 1 THEN MAX(commande_reference) ELSE '' END|1|Réference commande|CTI_REFCOM|*LIST||50|Réference commande| | | | | | |<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|0|<NULL>||||||||||Référence commande||||||||||0 | |||
| 1|Rotation du stock par rapport aux entrées|*CALC|round(base.cti_division([3],base.cti_division([1]+[2],2)),0)|1|Rotation du stock / entrées|CTI_ROTSTOACH|*CALC||50|Rotation du stock / entrées| | | | | | |CTI_MNTSTOFIN|CTI_QTESTOFIN|CTI_MTENTSTO|CTI_NBJPER|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|0|<NULL>||||||||||Rapport entre les achats sur la période et le stock moyen (valeur stock début + valeur stock fin / 2)|2MNT|1QTE|3DUR|||||||1 | |||
| 1|Rotation du stock calculé par rapport aux achat|*CALC|round(base.cti_division([3],base.cti_division([1]+[2],2)),0)|1|Rotation du stock / achat|CTI_ROTSTOMVTACH|*CALC||50|Rotation du stock calculé / achat| | | | | | |CTI_MNTSTOFINACHAT|CTI_QTEDEBMVT|CTI_MTENTTTCSTO-2#00|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|0|<NULL>||||||||||Rapport entre les achats sur la période et le stock moyen (valeur stock début + valeur stock fin / 2)|2MNT|||||||||0 | |||
| 1|Rotation du stock calculé par rapport aux ventes|*CALC|round(base.cti_division(365*[3]/[4],([1]+[2])/2),0)|1|Rotation du stock / vente|CTI_ROTSTOMVTVEN|*CALC||50|Rotation du stock calculé / vente| | | | | | |CTI_MNTSTOFINACHAT|CTI_MNTSTODEBACHAT|CTI_MTSORTTCSTO-2#01|CTI_NBJPER|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|0|<NULL>||||||||||Rapport entre le CA TTC et le stock moyen (valeur stock début + valeur stock fin / 2) sur période|2MNT|3DUR||||||||0 | |||
| 1|Rotation du stock par rapport aux sorties|*CALC|roud(base.cti_division(365*[3]/[4],([1]+[2])/2))|1|Rotation du stock / sorties|CTI_ROTSTOVEN|*CALC||50|Rotation du stock / sorties| | | | | | |CTI_MNTSTOFIN|CTI_MNTSTODEB|CTI_MTSORTSTO|CTI_NBJPER|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|0|<NULL>||||||||||Rapport entre le CA TTC et le stock moyen (valeur stock début + valeur stock fin / 2) sur période|2MNT|3DUR||||||||0 | |||
| 1|Séparateur|SEP||1||CTI_SEP|SEP|#|0||0| | | | |0|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|0|<NULL>||||||||||||||||||||0 | |||
| 1|Code du site|TABSITE|CASE WHEN COUNT(DISTINCT site_code) = 1 THEN MAX(site_code) ELSE '' END|1|Site|CTI_SITECODE|*LIST||30|Code du site|1| | | | |1|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|0|<NULL>||||||||||Code du site||||||||||0 | |||
| 1|Durée stock moyen (jours)|*CALC|round(365*base.cti_division(([1]+[2])/2,365*[3]/[4]),0)|1|Stock moyen (j)|CTI_STOMOYJ|*CALC|#j|50|Durée stock moyen (jours)| | | | | | |CTI_MNTSTOFINACHAT|CTI_MNTSTODEBACHAT|CTI_MTSORHT|CTI_NBJPER|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|0|<NULL>||||||||||Rapport entre les ventes et le stock moyen (valeur stock début + valeur stock fin /2) ramené à l'année|2MNT|3DUR||||||||0 | |||
| 1|PUMP début période|V_STOCK_MENSUEL_X|CASE WHEN date_debut = periode THEN pump ELSE 0 END|1|PUMP déb. période|CTI_STOPUMPDEB|SUMFIRSTMONTH|#,0000E|60|PUMP début période|4| | | | |4|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|0|<NULL>||||||||||Prix Unitaire Moyen Pondéré|2MNT|||||||||0 | |||
| 1|PUMP fin période|V_STOCK_MENSUEL_X|CASE WHEN date_fin = toperiode THEN pump ELSE 0 END|1|PUMP fin période|CTI_STOPUMPFIN|SUMLASTMONTH|#,0000E|60|PUMP fin période|4| | | | |4|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|0|<NULL>||||||||||Prix Unitaire Moyen Pondéré|2MNT|||||||||0 | |||
| 1|Nombre moyen de références actives par fournisseur|*CALC|base.cti_division([1],[2])|1|Nb moyen réf actives / four.|CTI_TXARTFOU|*CALC||50|Nombre moyen de références actives par fournisseur| | | | | | |CTI_NBART|CTI_NBFOU#2|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|0|<NULL>||||||||||Nombre moyen de références actives par fournisseur|1QTE|||||||||1 | |||
| 1|Taux d'achats auprès des fournisseurs références|*CALC|100*base.cti_division([1],[2])|1|Tx Fou. Ref.|CTI_TXFOUGR|*CALC|#,00%|50|Taux d'achats auprès des fournisseurs références| | | | | | |CTI_MTFOUGR#2|CTI_MTACHA#2|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|0|<NULL>||||||||||Taux d'achats auprès des fournisseurs références|4TAUX|2MNT||||||||1 | |||
| 1|Taux de fournisseurs régionaux|*CALC|100*base.cti_division([1],[2])|1|Tx Four. Reg.|CTI_TXFOUREG|*CALC|#,00%|50|Taux fournisseurs de régionaux| | | | | | |CTI_NBFOUREG#2|CTI_NBFOU#2|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|0|<NULL>||||||||||Taux de fournisseurs régionaux|4TAUX|1QTE||||||||1 | |||
| 1|Taux de litiges, taux de retard...|*CALC|100*base.cti_division([1],[2])|1|Tx litiges...|CTI_TXLIRET|*CALC|#,00%|50|Taux de litiges, taux de retard...| | | | | | |CTI_NBLIRET|CTI_NBCOM#2|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|0|<NULL>||||||||||Taux de litiges (livraison incomplète) et de retard (livraison > 10 jours)|4TAUX|1QTE||||||||0 | |||
| 1|Taux de Marge|*CALC|100*(base.cti_division([5],[2]) - (base.cti_division([3],[4])))|1|Tx Marge|CTI_TXMARGSTO|*CALC|#,00%|50|Taux de Marge| | | | | | |CTI_MNTSTOFIN|CTI_MTENTSTO|CTI_NBSORTSTO|CTI_NBENTSTO|CTI_MTSORTSTO|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|0|<NULL>||||||||||(nombre de sorties * (montant des sorties/nombre sorties - montant des entrées/nombre d'entrées)) / montant_entree|4TAUX|1QTE|2MNT|||||||1 | |||
| 1|Taux de Marque|*CALC|100*(CASE WHEN [1] > 0 AND [2] > 0 THEN 1 - base.cti_division([2]*[3],[4]*[1]) ELSE 0 END)|1|Tx Marque|CTI_TXMARQSTO|*CALC|#,00%|50|Taux de Marque| | | | | | |CTI_MTSORTTCSTO-2#01|CTI_MTENTTTCSTO-2#00|CTI_NBSORSTO#01|CTI_NBENTSTO#00|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|0|<NULL>||||||||||Pour les articles ayant des mouvements d'entrées et de sortie, (nombre de sorties * (montant des sorties/nombre sorties - montant des entrées/nombre d'entrées)) / montant sortie, 0 sinon|4TAUX|1QTE|2MNT|||||||1 | |||
| 1|Taux de Marge|*CALC|100*(base.cti_division([5],[2]) - (base.cti_division([3],[4])))|1|Tx Marge|CTI_TXMRG|*CALC|#,00%|50|Taux de Marge| | | | | | |CTI_MNTSTOFINACHAT|CTI_MTENTTTCSTO-2#00|CTI_NBSORSTO#01|CTI_NBENTSTO#00|CTI_MTSORTTCSTO-2#01|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|0|<NULL>||||||||||(nombre de sorties * (montant des sorties/nombre sorties - montant des entrées/nombre d'entrées)) / montant_entree|1QTE|2MNT||||||||1 | |||
| 1|Taux de Marque|*CALC|100*(CASE WHEN [5] > 0 THEN 1 - base.cti_division([2]*[3],[4]*[5]) ELSE 0 END)|1|Tx Marque|CTI_TXMRQ|*CALC|#,00%|50|Taux de Marque| | | | | | |CTI_MNTSTOFINACHAT|CTI_MTENT|CTI_NBSORT|CTI_NBENT|CTI_MTSORT|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|0|<NULL>||||||||||(nombre de sorties * (montant des sorties/nombre sorties - montant des entrées/nombre d'entrées)) / montant sortie|4TAUX|1QTE|2MNT|||||||1 | |||
| 1|Code de l'Unité d'approvisionnement|TABUNIT|CASE WHEN COUNT(DISTINCT unite_approvisionnement_article_id) = 1 AND MAX(unite_approvisionnement_article_id) <> 0 AND MAX(unite_approvisionnement_article_code) <> 'UN' THEN MAX(unite_approvisionnement_article_code) ELSE '' END|1|Unité|CTI_UAPCODE|*LIST||30|Code de l'Unité d'approvisionnement|1| | | | |1|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|0|<NULL>||||||||||Unité d'approvisionnement||||||||||0 | |||
| 1|Code de l'Unité Fonctionnelle|TABUF|CASE WHEN COUNT(DISTINCT unite_fonctionnelle_code) = 1 THEN MAX(unite_fonctionnelle_code) ELSE '' END|1|UF|CTI_UFCODE|*LIST||30|Code de l'UF|1| | | | |1|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|0|<NULL>||||||||||Code de l'Unite Fonctionnelle||||||||||0 | |||
| 1|Code de l'Unité de stockage|TABUNIT|CASE WHEN COUNT(DISTINCT unite_stockage_article_id) = 1 AND MAX(unite_stockage_article_id) <> 0 AND MAX(unite_stockage_article_code) <> 'UN' THEN MAX(unite_stockage_article_code) ELSE '' END|1|Unité|CTI_USTOCODE|*LIST||30|Code de l'Unité de stockage|1| | | | |1|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|<NULL>|0|<NULL>||||||||||Unité de stockage||||||||||0 | |||
| @ -0,0 +1,10 @@ | |||
| oid|code|texte|chapitre|contenu_by_code|include_code|exclude_code|is_cti|show_omit|utilisateur_createur|est_partagee_modification|table_name | |||
| 1|CTI_ALIBIO|Aliments Biologiques||0|||1|0|*CTI|1|t_articles | |||
| 1|CTI_ESS_ART80|Liste des articles représentant 80% des stocks en montant||0|||1|0|*CTI|1|t_articles | |||
| 1|CTI_FAMALI|Alimentation||0|||1|0|*CTI|1|t_familles_articles | |||
| 1|CTI_FAMNRJ|Energie||0|||1|0|*CTI|1|t_familles_articles | |||
| 1|CTI_FOUH|Fournisseurs favorisant le travail de personnes handicapés ou en difficulté||0|||1|0|*CTI|1|t_fournisseurs | |||
| 1|CTI_FOUREF|Fournisseurs références||0|||1|0|*CTI|1|t_fournisseurs | |||
| 1|CTI_FOUREG|Fournisseurs régionaux||0|||1|0|*CTI|1|t_fournisseurs | |||
| 1|CTI_NRJREN|Energie renouvelables||0|||1|0|*CTI|1|t_articles | |||
| 1|CTI_UFPER|UF de pertes ou périmés||0|||1|1|*CTI|1|t_unites_fonctionnelles | |||
| @ -0,0 +1,74 @@ | |||
| oid|name|texte|select_cmd|code | |||
| 1|t_articles|Articles|"SELECT t_articles.oid, t_articles.code, t_articles.texte, t_types_articles.texte::text as complement, CASE WHEN p_oids.oid IS NOT NULL THEN 'O' ELSE 'N' END as utilise | |||
| FROM eco.t_articles | |||
| JOIN eco.t_types_articles ON type_id = t_types_articles.oid | |||
| JOIN eco.p_oids ON (t_articles.oid = p_oids.oid AND code_table = 'articles') | |||
| WHERE t_articles.oid > 0 | |||
| ORDER BY t_articles.code"|ART | |||
| 1|t_categories_articles|Catégories articles|"SELECT t_categories_articles.oid, t_categories_articles.code, t_categories_articles.texte, ''::text as complement, CASE WHEN p_oids.oid IS NOT NULL THEN 'O' ELSE 'N' END as utilise | |||
| FROM eco.t_categories_articles LEFT JOIN eco.p_oids ON (t_categories_articles.oid = p_oids.oid AND code_table = 'categories_articles') | |||
| WHERE t_categories_articles.oid > 0 | |||
| ORDER BY t_categories_articles.code"|CAA | |||
| 1|t_compte|Comptes|"SELECT t_compte.oid, t_compte.code, t_compte.texte, ''::text as complement, CASE WHEN p_oids.oid IS NOT NULL THEN 'O' ELSE 'N' END as utilise | |||
| FROM eco.t_compte LEFT JOIN eco.p_oids ON (t_compte.oid = p_oids.oid AND code_table = 'compte') | |||
| WHERE t_compte.oid > 0 | |||
| ORDER BY t_compte.code"|CPT | |||
| 1|t_centres_responsabilite|Centres responsabilité|"SELECT t_centres_responsabilites.oid, t_centres_responsabilites.code, t_centres_responsabilites.texte, ''::text as complement, CASE WHEN p_oids.oid IS NOT NULL THEN 'O' ELSE 'N' END as utilise | |||
| FROM eco.t_centres_responsabilites LEFT JOIN eco.p_oids ON (t_centres_responsabilites.oid = p_oids.oid AND code_table = 'centres_responsabilites') | |||
| WHERE t_centres_responsabilites.oid > 0 | |||
| ORDER BY t_centres_responsabilites.code"|CRE | |||
| 1|t_familles_articles|Familles d'articles|"SELECT t_familles_articles.oid, t_familles_articles.code, t_familles_articles.texte, ''::text as complement, CASE WHEN p_oids.oid IS NOT NULL THEN 'O' ELSE 'N' END as utilise | |||
| FROM eco.t_familles_articles LEFT JOIN eco.p_oids ON (t_familles_articles.oid = p_oids.oid AND code_table = 'familles_articles') | |||
| WHERE t_familles_articles.oid > 0 | |||
| ORDER BY t_familles_articles.code"|FAA | |||
| 1|t_fournisseurs|Fournisseurs|"SELECT t_fournisseurs.oid, t_fournisseurs.code, t_fournisseurs.texte, ''::text as complement, CASE WHEN p_oids.oid IS NOT NULL THEN 'O' ELSE 'N' END as utilise | |||
| FROM eco.t_fournisseurs LEFT JOIN eco.p_oids ON (t_fournisseurs.oid = p_oids.oid AND code_table = 'fournisseurs') | |||
| WHERE t_fournisseurs.oid > 0 | |||
| ORDER BY t_fournisseurs.code"|FOU | |||
| 1|t_gestionnaires|Gestionnaires|"SELECT t_gestionnaires.oid, t_gestionnaires.code, t_gestionnaires.texte, ''::text as complement, CASE WHEN p_oids.oid IS NOT NULL THEN 'O' ELSE 'N' END as utilise | |||
| FROM eco.t_gestionnaires LEFT JOIN eco.p_oids ON (t_gestionnaires.oid = p_oids.oid AND code_table = 'gestionnaires') | |||
| WHERE t_gestionnaires.oid > 0 | |||
| ORDER BY t_gestionnaires.code"|GES | |||
| 1|t_lieux|Lieux|"SELECT t_lieux.oid, t_lieux.code, t_lieux.texte, ''::text as complement, CASE WHEN p_oids.oid IS NOT NULL THEN 'O' ELSE 'N' END as utilise | |||
| FROM eco.t_lieux LEFT JOIN eco.p_oids ON (t_lieux.oid = p_oids.oid AND code_table = 'lieux') | |||
| WHERE t_lieux.oid > 0 | |||
| ORDER BY t_lieux.code"|LIE | |||
| 1|t_lpp_c|LPP|"SELECT t_lpp_c.oid, t_lpp_c.code, t_lpp_c.texte, ''::text as complement, CASE WHEN p_oids.oid IS NOT NULL THEN 'O' ELSE 'N' END as utilise | |||
| FROM eco.t_lpp_c LEFT JOIN eco.p_oids ON (t_lpp_c.oid = p_oids.oid AND code_table = 'lpp') | |||
| WHERE t_lpp_c.oid > 0 | |||
| ORDER BY t_lpp_c.code"|LPP | |||
| 1|t_sous_categories_articles|Sous catégories articles|"SELECT t_sous_categories_articles.oid, t_sous_categories_articles.code, t_sous_categories_articles.texte, ''::text as complement, CASE WHEN p_oids.oid IS NOT NULL THEN 'O' ELSE 'N' END as utilise | |||
| FROM eco.t_sous_categories_articles LEFT JOIN eco.p_oids ON (t_sous_categories_articles.oid = p_oids.oid AND code_table = 'sous_categories_articles') | |||
| WHERE t_sous_categories_articles.oid > 0 | |||
| ORDER BY t_sous_categories_articles.code"|SCA | |||
| 1|t_sous_familles_articles|Sous familles articles|"SELECT t_sous_familles_articles.oid, t_sous_familles_articles.code, t_sous_familles_articles.texte, ''::text as complement, CASE WHEN p_oids.oid IS NOT NULL THEN 'O' ELSE 'N' END as utilise | |||
| FROM eco.t_sous_familles_articles LEFT JOIN eco.p_oids ON (t_sous_familles_articles.oid = p_oids.oid AND code_table = 'sous_familles_articles') | |||
| WHERE t_sous_familles_articles.oid > 0 | |||
| ORDER BY t_sous_familles_articles.code"|SFA | |||
| 1|t_type_article_cti|Types d'articles CTI|"SELECT t_type_article_cti.oid, t_type_article_cti.code, t_type_article_cti.texte, ''::text as complement, CASE WHEN p_oids.oid IS NOT NULL THEN 'O' ELSE 'N' END as utilise | |||
| FROM eco.t_type_article_cti LEFT JOIN eco.p_oids ON (t_type_article_cti.oid = p_oids.oid AND code_table = 'type_article_cti') | |||
| ORDER BY t_type_article_cti.code"|TAC | |||
| 1|t_types_articles|Types d'articles|"SELECT t_types_articles.oid, t_types_articles.code, t_types_articles.texte, ''::text as complement, CASE WHEN p_oids.oid IS NOT NULL THEN 'O' ELSE 'N' END as utilise | |||
| FROM eco.t_types_articles LEFT JOIN eco.p_oids ON (t_types_articles.oid = p_oids.oid AND code_table = 'types_articles') | |||
| WHERE t_types_articles.oid > 0 | |||
| ORDER BY t_types_articles.code"|TYA | |||
| 1|t_types_fournisseurs|Types de fournisseurs|"SELECT t_types_fournisseurs.oid, t_types_fournisseurs.code, t_types_fournisseurs.texte, ''::text as complement, CASE WHEN p_oids.oid IS NOT NULL THEN 'O' ELSE 'N' END as utilise | |||
| FROM eco.t_types_fournisseurs LEFT JOIN eco.p_oids ON (t_types_fournisseurs.oid = p_oids.oid AND code_table = 'types_fournisseurs') | |||
| WHERE t_types_fournisseurs.oid > 0 | |||
| ORDER BY t_types_fournisseurs.code"|TYF | |||
| 1|t_types_mouvements|Types de mouvements|"SELECT t_types_mouvements.oid, t_types_mouvements.code, t_types_mouvements.texte, ''::text as complement, CASE WHEN p_oids.oid IS NOT NULL THEN 'O' ELSE 'N' END as utilise | |||
| FROM eco.t_types_mouvements LEFT JOIN eco.p_oids ON (t_types_mouvements.oid = p_oids.oid AND code_table = 'types_mouvements') | |||
| WHERE t_types_mouvements.oid > 0 | |||
| ORDER BY t_types_mouvements.code"|TYM | |||
| 1|t_ucd_c|UCD|"SELECT t_ucd_c.oid, t_ucd_c.code, t_ucd_c.texte, ''::text as complement, CASE WHEN p_oids.oid IS NOT NULL THEN 'O' ELSE 'N' END as utilise | |||
| FROM eco.t_ucd_c LEFT JOIN eco.p_oids ON (t_ucd_c.oid = p_oids.oid AND code_table = 'ucd') | |||
| WHERE t_ucd_c.oid > 0 | |||
| ORDER BY t_ucd_c.code"|UCD | |||
| 1|t_unites_fonctionnelles|Unités fonctionnelles|"SELECT t_unites_fonctionnelles.oid, t_unites_fonctionnelles.code, t_unites_fonctionnelles.texte, ''::text as complement, CASE WHEN p_oids.oid IS NOT NULL THEN 'O' ELSE 'N' END as utilise | |||
| FROM eco.t_unites_fonctionnelles LEFT JOIN eco.p_oids ON (t_unites_fonctionnelles.oid = p_oids.oid AND code_table = 'unites_fonctionnelles') | |||
| WHERE t_unites_fonctionnelles.oid > 0 | |||
| ORDER BY t_unites_fonctionnelles.code"|UFO | |||
| 1|t_unites|Unités|"SELECT t_unites.oid, t_unites.code, t_unites.texte, ''::text as complement, CASE WHEN p_oids.oid IS NOT NULL THEN 'O' ELSE 'N' END as utilise | |||
| FROM eco.t_unites LEFT JOIN eco.p_oids ON (t_unites.oid = p_oids.oid AND code_table = 'unites_stockage_articles') | |||
| WHERE t_unites.oid > 0 | |||
| ORDER BY t_unites.code"|UNI | |||
| @ -0,0 +1,34 @@ | |||
| oid|code|texte|is_cti|template_code|is_template_updatable|condition_codes|is_essentiel | |||
| 1|CTI_ESS_01|Essentiels CTI|1|<NULL>|0|{NULL,NULL,NULL,NULL,NULL}|1 | |||
| 1|CTI_ESS_02|Dispositifs Médicaux|1|CTI_ESS_01|0|"{TYA|CTI_CLE_REP|DM,NULL,NULL,NULL,NULL}"|1 | |||
| 1|CTI_ESS_03|Dispostifs Médicaux Implantables|1|CTI_ESS_01|0|"{TYA|CTI_CLE_REP|DMI,NULL,NULL,NULL,NULL}"|1 | |||
| 1|CTI_ESS_04|Médicaments|1|CTI_ESS_01|0|"{TYA|CTI_CLE_REP|MED,NULL,NULL,NULL,NULL}"|1 | |||
| 1|CTI_ESS_05|Parapharmacie|1|CTI_ESS_01|0|"{TYA|CTI_CLE_REP|PAR,NULL,NULL,NULL,NULL}"|1 | |||
| 1|CTI_ESS_06|Economat|1|CTI_ESS_01|0|"{TYA|CTI_CLE_REP|ECO,NULL,NULL,NULL,NULL}"|1 | |||
| 1|CTI_ESS_07|Cuisine|1|CTI_ESS_01|0|"{TYA|CTI_CLE_REP|CUI,NULL,NULL,NULL,NULL}"|1 | |||
| 1|CTI_ESS_08|Lingerie|1|CTI_ESS_01|0|"{TYA|CTI_CLE_REP|LIN,NULL,NULL,NULL,NULL}"|1 | |||
| 1|CTI_ESS_09|Atelier|1|CTI_ESS_01|0|"{TYA|CTI_CLE_REP|ATE,NULL,NULL,NULL,NULL}"|1 | |||
| 1|CTI_LIST_CMD|Justificatif Commandes|1|<NULL>|0|{NULL,NULL,NULL,NULL,NULL}|0 | |||
| 1|CTI_LIST_CMD2|Justificatif Délais et litiges|1|<NULL>|0|{NULL,NULL,NULL,NULL,NULL}|0 | |||
| 1|CTI_LIST_MVT|Justificatif Mouvements|1|<NULL>|0|{NULL,NULL,NULL,NULL,NULL}|0 | |||
| 1|CTI_LIST_MVT100|Justificatif Mouvements et Stocks|1|<NULL>|0|{NULL,NULL,NULL,NULL,NULL}|0 | |||
| 1|CTI_LIST_MVT2|Justificatif Entrées|1|<NULL>|0|{NULL,NULL,NULL,NULL,NULL}|0 | |||
| 1|CTI_LIST_MVT3|Justificatif Sorties|1|<NULL>|0|{NULL,NULL,NULL,NULL,NULL}|0 | |||
| 1|CTI_LIST_MVT4|Justificatif Quantités|1|<NULL>|0|{NULL,NULL,NULL,NULL,NULL}|0 | |||
| 1|CTI_LIST_MVT5|Justificatif Montants|1|<NULL>|0|{NULL,NULL,NULL,NULL,NULL}|0 | |||
| 1|CTI_LIST_MVT6|Justificatif Montants Entrées|1|<NULL>|0|{NULL,NULL,NULL,NULL,NULL}|0 | |||
| 1|CTI_LIST_MVT7|Justificatif Montants sorties|1|<NULL>|0|{NULL,NULL,NULL,NULL,NULL}|0 | |||
| 1|CTI_VIEW_CMD|Commandes|1|<NULL>|0|{NULL,NULL,NULL,NULL,NULL}|0 | |||
| 1|CTI_VIEW_CMD2|Délais et litiges|1|<NULL>|0|{NULL,NULL,NULL,NULL,NULL}|0 | |||
| 1|CTI_VIEW_CMD3|Commandes (engagement)|1|<NULL>|0|{NULL,NULL,NULL,NULL,NULL}|0 | |||
| 1|CTI_VIEW_MVS|Stocks calculés|1|<NULL>|0|{NULL,NULL,NULL,NULL,NULL}|0 | |||
| 1|CTI_VIEW_MVT|Quantités et Montants Mouvements|1|<NULL>|0|{NULL,NULL,NULL,NULL,NULL}|0 | |||
| 1|CTI_VIEW_MVT2|Quantités et Montants Entrées|1|<NULL>|0|{NULL,NULL,NULL,NULL,NULL}|0 | |||
| 1|CTI_VIEW_MVT3|Quantités et Montants Sorties|1|<NULL>|0|{NULL,NULL,NULL,NULL,NULL}|0 | |||
| 1|CTI_VIEW_MVT4|Quantités Mouvements|1|<NULL>|0|{NULL,NULL,NULL,NULL,NULL}|0 | |||
| 1|CTI_VIEW_MVT5|Montants Mouvements|1|<NULL>|0|{NULL,NULL,NULL,NULL,NULL}|0 | |||
| 1|CTI_VIEW_MVT6|Montants Entrées|1|<NULL>|0|{NULL,NULL,NULL,NULL,NULL}|0 | |||
| 1|CTI_VIEW_MVT7|Montants Sorties|1|<NULL>|0|{NULL,NULL,NULL,NULL,NULL}|0 | |||
| 1|CTI_VIEW_STK|Stocks Mensuels|1|<NULL>|0|{NULL,NULL,NULL,NULL,NULL}|0 | |||
| 1|CTI_VIEW_STK2|Quantités stocks mensuels|1|<NULL>|0|{NULL,NULL,NULL,NULL,NULL}|0 | |||
| 1|CTI_VIEW_STK3|Montants Stocks Mensuels|1|<NULL>|0|{NULL,NULL,NULL,NULL,NULL}|0 | |||
| @ -0,0 +1,7 @@ | |||
| oid|code|texte | |||
| 0|*|Non renseigné | |||
| 1|DM|Dispositifs Médicaux | |||
| 1|DMI|Dispositifs Médicaux Implantables | |||
| 1|ECO|Economat | |||
| 1|MED|Médicaments | |||
| 1|ZZZ|Autres | |||
| @ -0,0 +1,4 @@ | |||
| @ECHO Off | |||
| ECHO /!\ VOUS ETES SUR LE POINT DE PERDRE LES DONNEES DE VOTRE BASE /!\ | |||
| PAUSE | |||
| ..\..\..\Sources\db\data\iCTI_svn_data_apply.exe -m eco | |||
| @ -0,0 +1,2 @@ | |||
| @ECHO Off | |||
| ..\..\..\Sources\db\data\iCTI_svn_data_extract.exe -m eco | |||
| @ -0,0 +1,5 @@ | |||
| -- ============================================================ | |||
| -- Derniers traitements | |||
| -- - Lancement de fonctions PGSQL | |||
| -- - Nettoyage installdb (éventuel) | |||
| -- ============================================================ | |||
| @ -0,0 +1,122 @@ | |||
| -- ===================================================================== | |||
| -- Divers traitements sur les données après l'installation des données | |||
| -- ===================================================================== | |||
| -- Ajout des paramétrages. | |||
| DROP TABLE IF EXISTS w_divers | |||
| ; | |||
| CREATE TEMP TABLE w_divers AS | |||
| SELECT | |||
| 'FORCE_PUMP_STOCK' AS code, | |||
| 'Forcage pump sur celui états de stock' AS texte, | |||
| '1' AS valeur, | |||
| NULL::date AS valeur_date, | |||
| 'Défini si le pump des mouvements est calculé à partir de celui des stocks' AS description | |||
| UNION | |||
| SELECT | |||
| 'FORCE_LIV_LIQ', | |||
| 'Forcage commandes liquidées en livrées en totalité', | |||
| '0', | |||
| NULL::date, | |||
| '' | |||
| UNION | |||
| SELECT | |||
| 'FORCE_QTE_APR_STK', | |||
| 'Commandes soldées non livrées', | |||
| '1', | |||
| NULL::date, | |||
| 'Force à 0 quantite_approvisionnement et quantite_stockage si montant_commande_ht = 0, etat_liquidation = ''T'', quantite_livraison_approvisionnement = 0 et etat_livraison = ''N''.' | |||
| UNION | |||
| SELECT | |||
| 'MERGE_CPT', | |||
| 'Fusionne les comptes de deux prestataires', | |||
| '0', | |||
| NULL::date, | |||
| 'Remplace les comptes ancien prestataire par ceux du nouveaux si les codes de comptes sont les mêmes' | |||
| UNION | |||
| SELECT | |||
| 'MERGE_ART', | |||
| 'Fusionne les articles', | |||
| '0', | |||
| NULL::date, | |||
| 'Remplace les comptes ancien prestataire par ceux du nouveaux si les textes sont les mêmes' | |||
| UNION | |||
| SELECT | |||
| 'MERGE_UF', | |||
| 'Fusionne les UF', | |||
| '0', | |||
| NULL::date, | |||
| 'Remplace les UF ancien prestataire par ceux du nouveaux si les codes sont les mêmes' | |||
| UNION | |||
| SELECT | |||
| 'X3_TYPART', | |||
| 'Type article SageX3', | |||
| '0', | |||
| NULL::date, | |||
| '0: Première lettre 1: Messages chapitre 1019' | |||
| UNION | |||
| SELECT | |||
| 'FORCE_ATC', | |||
| 'Forcer les classifications ATC et Cladimed selon les données CTI', | |||
| '0', | |||
| NULL::date, | |||
| '0: Non 1: Oui' | |||
| UNION | |||
| SELECT | |||
| 'CEGI_FORCE_FAC_COM', | |||
| 'Forcer les montants facturées en commandés dans Cegi', | |||
| '0', | |||
| NULL::date, | |||
| '0: Non 1: Oui' | |||
| UNION | |||
| SELECT | |||
| 'CEGI_FORCE_FAC_LIV', | |||
| 'Forcer les montants facturées en livrés dans Cegi', | |||
| '0', | |||
| NULL::date, | |||
| '0: Non 1: Oui' | |||
| UNION | |||
| SELECT | |||
| 'CEGI_FORCE_LIV_COM', | |||
| 'Forcer les montants livrés en commandés dans Cegi', | |||
| '0', | |||
| NULL::date, | |||
| '0: Non 1: Oui' | |||
| UNION | |||
| SELECT | |||
| 'CEGI_STO_TYP', | |||
| 'Utilise le type de stock Cegi pour le type article au lieu de la racine de la famille', | |||
| '0', | |||
| NULL::date, | |||
| '0: Non 1: Oui' | |||
| ; | |||
| -- Insertion du paramère de répartition | |||
| INSERT INTO eco.t_divers( | |||
| code, | |||
| texte, | |||
| valeur, | |||
| valeur_date, | |||
| description) | |||
| SELECT | |||
| code, | |||
| texte, | |||
| valeur, | |||
| valeur_date, | |||
| description | |||
| FROM w_divers | |||
| WHERE code NOT IN (SELECT code FROM eco.t_divers) | |||
| ; | |||
| UPDATE eco.t_divers SET | |||
| texte = w_divers.texte, | |||
| description = w_divers.description | |||
| FROM w_divers | |||
| WHERE 1=1 | |||
| AND t_divers.code = w_divers.code | |||
| AND (1!=1 | |||
| OR t_divers.texte != w_divers.texte | |||
| OR t_divers.description != w_divers.description) | |||
| ; | |||
| @ -0,0 +1,3 @@ | |||
| -- ===================================================================== | |||
| -- Divers traitements sur les données avant l'installation des données | |||
| -- ===================================================================== | |||
| @ -0,0 +1,8 @@ | |||
| -- ============================================= | |||
| -- Nettoyage de la BDD avant installation. | |||
| -- (Supprimer le contenu au bout de 3 mois) | |||
| -- - Suppression de tables | |||
| -- - Suppression de champs | |||
| -- - Suppression de vues/fonctions SQL | |||
| -- - Suppression ou modification de séquences | |||
| -- ============================================= | |||
| @ -0,0 +1,123 @@ | |||
| return: text | |||
| lang: plpgsql | |||
| src: | | |||
| DECLARE --select * from eco.p_stock order by date_fin desc | |||
| result TEXT; | |||
| BEGIN | |||
| IF ((SELECT valeur FROM eco.t_divers WHERE code = 'CLE_REPARTITION') != | |||
| ( | |||
| SELECT | |||
| t_listes_tables.code | |||
| FROM | |||
| eco.t_classes | |||
| JOIN eco.t_listes_tables ON table_id = t_listes_tables.oid | |||
| WHERE t_classes.code = 'CTI_CLE_REP')) | |||
| THEN | |||
| RAISE NOTICE '%','Valeur changé - Mise à jour'; | |||
| -- enregistrement des sections CTI | |||
| DROP TABLE IF EXISTS w_sections; | |||
| CREATE TEMP TABLE w_sections AS | |||
| SELECT t_classes_sections.code, t_classes_sections.texte | |||
| FROM eco.t_classes | |||
| JOIN eco.t_classes_sections ON classe_id = t_classes.oid | |||
| WHERE t_classes.code = 'CTI_CLE_REP' | |||
| ; | |||
| -- enregistrement des conditions de rapport CTI liées à la clef de répartition | |||
| DROP TABLE IF EXISTS w_conditions; | |||
| CREATE TEMP TABLE w_conditions AS | |||
| SELECT t_rapports.oid, ARRAY[ | |||
| section_0.code, | |||
| section_1.code, | |||
| section_2.code, | |||
| section_3.code, | |||
| section_4.code] AS code_section FROM eco.t_rapports | |||
| LEFT JOIN eco.t_indicateur_condition condition_0 ON t_rapports.rapport_indicateur_condition_id[1] = condition_0.oid | |||
| LEFT JOIN eco.t_classes_sections section_0 ON section_0.oid = right(split_part(condition_0.code,'#',2),-4) AND left(split_part(condition_0.code,'#',2),4) = 'LS30' | |||
| LEFT JOIN eco.t_indicateur_condition condition_1 ON t_rapports.rapport_indicateur_condition_id[2] = condition_1.oid | |||
| LEFT JOIN eco.t_classes_sections section_1 ON section_1.oid = right(split_part(condition_1.code,'#',2),-4) AND left(split_part(condition_1.code,'#',2),4) = 'LS30' | |||
| LEFT JOIN eco.t_indicateur_condition condition_2 ON t_rapports.rapport_indicateur_condition_id[3] = condition_2.oid | |||
| LEFT JOIN eco.t_classes_sections section_2 ON section_2.oid = right(split_part(condition_2.code,'#',2),-4) AND left(split_part(condition_2.code,'#',2),4) = 'LS30' | |||
| LEFT JOIN eco.t_indicateur_condition condition_3 ON t_rapports.rapport_indicateur_condition_id[4] = condition_3.oid | |||
| LEFT JOIN eco.t_classes_sections section_3 ON section_3.oid = right(split_part(condition_3.code,'#',2),-4) AND left(split_part(condition_3.code,'#',2),4) = 'LS30' | |||
| LEFT JOIN eco.t_indicateur_condition condition_4 ON t_rapports.rapport_indicateur_condition_id[5] = condition_4.oid | |||
| LEFT JOIN eco.t_classes_sections section_4 ON section_4.oid = right(split_part(condition_4.code,'#',2),-4) AND left(split_part(condition_4.code,'#',2),4) = 'LS30' | |||
| WHERE t_rapports.code LIKE 'CTI_ESS%' | |||
| ; | |||
| -- effacement de la classe CTI_CLE_REP | |||
| DELETE FROM eco.t_classes_sections_elements | |||
| WHERE section_id IN ( | |||
| SELECT t_classes_sections.oid | |||
| FROM eco.t_classes | |||
| JOIN eco.t_classes_sections ON classe_id = t_classes.oid | |||
| WHERE t_classes.code = 'CTI_CLE_REP' | |||
| ) | |||
| ; | |||
| DELETE FROM eco.t_classes_sections | |||
| WHERE oid IN ( | |||
| SELECT t_classes_sections.oid | |||
| FROM eco.t_classes | |||
| JOIN eco.t_classes_sections ON classe_id = t_classes.oid | |||
| WHERE t_classes.code = 'CTI_CLE_REP' | |||
| ) | |||
| ; | |||
| DELETE FROM eco.t_classes | |||
| WHERE code = 'CTI_CLE_REP' | |||
| ; | |||
| -- création de la classe CTI_CLE_REP | |||
| INSERT INTO eco.t_classes(code, texte, table_id, is_cti, sequence) | |||
| SELECT | |||
| 'CTI_CLE_REP', | |||
| 'Clef de répartition CTI', | |||
| oid, | |||
| 0, | |||
| 30 | |||
| FROM | |||
| eco.t_listes_tables | |||
| WHERE | |||
| code = (SELECT valeur FROM eco.t_divers WHERE code = 'CLE_REPARTITION') | |||
| ; | |||
| INSERT INTO eco.t_classes_sections (code, texte, classe_id) | |||
| SELECT w_sections.code, w_sections.texte, oid | |||
| FROM w_sections LEFT JOIN eco.t_classes ON t_classes.code = 'CTI_CLE_REP' | |||
| ; | |||
| PERFORM eco.cti_reorganize_indicateur_condition(); | |||
| -- ajustement des condition de rapports essentiels CTI | |||
| UPDATE eco.t_rapports | |||
| SET | |||
| rapport_indicateur_condition_id = ARRAY[condition_0.oid,condition_1.oid,condition_2.oid,condition_3.oid,condition_4.oid] | |||
| FROM | |||
| w_conditions | |||
| JOIN eco.t_listes_tables ON t_listes_tables.code = (SELECT valeur FROM eco.t_divers WHERE code = 'CLE_REPARTITION') | |||
| JOIN eco.t_classes ON table_id = t_listes_tables.oid AND sequence = 30 | |||
| LEFT JOIN eco.t_classes_sections section_0 ON t_classes.oid = section_0.classe_id AND section_0.code = code_section[1] | |||
| LEFT JOIN eco.t_indicateur_condition condition_0 ON regexp_replace(regexp_replace(regexp_replace(regexp_replace(t_listes_tables.name,'^t_',''),'x',''),'s_','','g'),'s$','') || 'id' = regexp_replace(condition_0.column_name,'_','','g') | |||
| AND t_classes.sequence = substring(split_part(condition_0.code,'#',2),3,2) AND left(split_part(condition_0.code,'#',2),2) = 'LS' | |||
| AND section_0.oid = right(split_part(condition_0.code,'#',2),-4) | |||
| LEFT JOIN eco.t_classes_sections section_1 ON t_classes.oid = section_1.classe_id AND section_1.code = code_section[2] | |||
| LEFT JOIN eco.t_indicateur_condition condition_1 ON regexp_replace(regexp_replace(regexp_replace(regexp_replace(t_listes_tables.name,'^t_',''),'x',''),'s_','','g'),'s$','') || 'id' = regexp_replace(condition_1.column_name,'_','','g') | |||
| AND t_classes.sequence = substring(split_part(condition_1.code,'#',2),3,2) AND left(split_part(condition_1.code,'#',2),2) = 'LS' | |||
| AND section_1.oid = right(split_part(condition_1.code,'#',2),-4) | |||
| LEFT JOIN eco.t_classes_sections section_2 ON t_classes.oid = section_2.classe_id AND section_2.code = code_section[3] | |||
| LEFT JOIN eco.t_indicateur_condition condition_2 ON regexp_replace(regexp_replace(regexp_replace(regexp_replace(t_listes_tables.name,'^t_',''),'x',''),'s_','','g'),'s$','') || 'id' = regexp_replace(condition_2.column_name,'_','','g') | |||
| AND t_classes.sequence = substring(split_part(condition_2.code,'#',2),3,2) AND left(split_part(condition_2.code,'#',2),2) = 'LS' | |||
| AND section_2.oid = right(split_part(condition_2.code,'#',2),-4) | |||
| LEFT JOIN eco.t_classes_sections section_3 ON t_classes.oid = section_3.classe_id AND section_3.code = code_section[4] | |||
| LEFT JOIN eco.t_indicateur_condition condition_3 ON regexp_replace(regexp_replace(regexp_replace(regexp_replace(t_listes_tables.name,'^t_',''),'x',''),'s_','','g'),'s$','') || 'id' = regexp_replace(condition_3.column_name,'_','','g') | |||
| AND t_classes.sequence = substring(split_part(condition_3.code,'#',2),3,2) AND left(split_part(condition_3.code,'#',2),2) = 'LS' | |||
| AND section_3.oid = right(split_part(condition_3.code,'#',2),-4) | |||
| LEFT JOIN eco.t_classes_sections section_4 ON t_classes.oid = section_4.classe_id AND section_4.code = code_section[5] | |||
| LEFT JOIN eco.t_indicateur_condition condition_4 ON regexp_replace(regexp_replace(regexp_replace(regexp_replace(t_listes_tables.name,'^t_',''),'x',''),'s_','','g'),'s$','') || 'id' = regexp_replace(condition_4.column_name,'_','','g') | |||
| AND t_classes.sequence = substring(split_part(condition_4.code,'#',2),3,2) AND left(split_part(condition_4.code,'#',2),2) = 'LS' | |||
| AND section_4.oid = right(split_part(condition_4.code,'#',2),-4) | |||
| WHERE t_rapports.oid = w_conditions.oid | |||
| ; | |||
| END IF; | |||
| RETURN 'OK'; | |||
| END; | |||
| @ -0,0 +1,33 @@ | |||
| return: text | |||
| lang: plpgsql | |||
| parameters: | |||
| p0: | |||
| type: text | |||
| name: i_formula | |||
| src: | | |||
| DECLARE | |||
| temp_cursor refcursor; | |||
| sqlcmd text; | |||
| _value text; | |||
| _return text; | |||
| BEGIN | |||
| _return = ''; | |||
| sqlcmd = 'SELECT (' || i_formula ||')::text'; | |||
| BEGIN | |||
| OPEN temp_cursor FOR EXECUTE sqlcmd; | |||
| FETCH temp_cursor INTO _value; | |||
| WHILE FOUND LOOP | |||
| _return = _value; | |||
| FETCH temp_cursor INTO _value; | |||
| END LOOP; | |||
| CLOSE temp_cursor; | |||
| EXCEPTION | |||
| WHEN others THEN RAISE NOTICE 'Erreur %' , sqlcmd; | |||
| END; | |||
| RETURN _return; | |||
| END; | |||
| @ -0,0 +1,204 @@ | |||
| return: text | |||
| lang: plpgsql | |||
| src: | | |||
| DECLARE | |||
| result TEXT; | |||
| BEGIN | |||
| TRUNCATE eco.p_oids; | |||
| INSERT INTO eco.p_oids (code_table, oid) | |||
| SELECT 'articles', article_id | |||
| FROM eco.p_mouvements_articles | |||
| WHERE article_id NOT IN (SELECT oid FROM eco.p_oids WHERE code_table = 'articles') | |||
| GROUP BY 1,2; | |||
| INSERT INTO eco.p_oids (code_table, oid) | |||
| SELECT 'articles', article_id | |||
| FROM eco.p_lignes_commandes | |||
| WHERE article_id NOT IN (SELECT oid FROM eco.p_oids WHERE code_table = 'articles') | |||
| GROUP BY 1,2; | |||
| INSERT INTO eco.p_oids (code_table, oid) | |||
| SELECT 'categories_articles', categorie_id | |||
| FROM eco.p_mouvements_articles JOIN eco.t_articles ON article_id = t_articles.oid | |||
| WHERE categorie_id NOT IN (SELECT oid FROM eco.p_oids WHERE code_table = 'categories_articles') | |||
| GROUP BY 1,2; | |||
| INSERT INTO eco.p_oids (code_table, oid) | |||
| SELECT 'categories_articles', categorie_id | |||
| FROM eco.p_lignes_commandes JOIN eco.t_articles ON article_id = t_articles.oid | |||
| WHERE categorie_id NOT IN (SELECT oid FROM eco.p_oids WHERE code_table = 'categories_articles') | |||
| GROUP BY 1,2; | |||
| INSERT INTO eco.p_oids (code_table, oid) | |||
| SELECT 'sous_categories_articles', sous_categorie_id | |||
| FROM eco.p_mouvements_articles JOIN eco.t_articles ON article_id = t_articles.oid | |||
| WHERE sous_categorie_id NOT IN (SELECT oid FROM eco.p_oids WHERE code_table = 'sous_categories_articles') | |||
| GROUP BY 1,2; | |||
| INSERT INTO eco.p_oids (code_table, oid) | |||
| SELECT 'sous_categories_articles', sous_categorie_id | |||
| FROM eco.p_lignes_commandes JOIN eco.t_articles ON article_id = t_articles.oid | |||
| WHERE sous_categorie_id NOT IN (SELECT oid FROM eco.p_oids WHERE code_table = 'sous_categories_articles') | |||
| GROUP BY 1,2; | |||
| INSERT INTO eco.p_oids (code_table, oid) | |||
| SELECT 'classification_atc', classification_atc_id | |||
| FROM eco.p_mouvements_articles JOIN eco.t_articles ON article_id = t_articles.oid | |||
| WHERE classification_atc_id NOT IN (SELECT oid FROM eco.p_oids WHERE code_table = 'classification_atc') | |||
| GROUP BY 1,2; | |||
| INSERT INTO eco.p_oids (code_table, oid) | |||
| SELECT 'classification_atc', classification_atc_id | |||
| FROM eco.p_lignes_commandes JOIN eco.t_articles ON article_id = t_articles.oid | |||
| WHERE classification_atc_id NOT IN (SELECT oid FROM eco.p_oids WHERE code_table = 'classification_atc') | |||
| GROUP BY 1,2; | |||
| INSERT INTO eco.p_oids (code_table, oid) | |||
| SELECT 'familles_articles', famille_id | |||
| FROM eco.p_mouvements_articles JOIN eco.t_articles ON article_id = t_articles.oid | |||
| WHERE famille_id NOT IN (SELECT oid FROM eco.p_oids WHERE code_table = 'familles_articles') | |||
| GROUP BY 1,2; | |||
| INSERT INTO eco.p_oids (code_table, oid) | |||
| SELECT 'familles_articles', famille_id | |||
| FROM eco.p_lignes_commandes JOIN eco.t_articles ON article_id = t_articles.oid | |||
| WHERE famille_id NOT IN (SELECT oid FROM eco.p_oids WHERE code_table = 'familles_articles') | |||
| GROUP BY 1,2; | |||
| INSERT INTO eco.p_oids (code_table, oid) | |||
| SELECT 'sous_familles_articles', sous_famille_id | |||
| FROM eco.p_mouvements_articles JOIN eco.t_articles ON article_id = t_articles.oid | |||
| WHERE sous_famille_id NOT IN (SELECT oid FROM eco.p_oids WHERE code_table = 'sous_familles_articles') | |||
| GROUP BY 1,2; | |||
| INSERT INTO eco.p_oids (code_table, oid) | |||
| SELECT 'sous_familles_articles', sous_famille_id | |||
| FROM eco.p_lignes_commandes JOIN eco.t_articles ON article_id = t_articles.oid | |||
| WHERE sous_famille_id NOT IN (SELECT oid FROM eco.p_oids WHERE code_table = 'sous_familles_articles') | |||
| GROUP BY 1,2; | |||
| INSERT INTO eco.p_oids (code_table, oid) | |||
| SELECT 'compte', compte_id | |||
| FROM eco.p_mouvements_articles | |||
| WHERE compte_id NOT IN (SELECT oid FROM eco.p_oids WHERE code_table = 'compte') | |||
| GROUP BY 1,2; | |||
| INSERT INTO eco.p_oids (code_table, oid) | |||
| SELECT 'compte', compte_id | |||
| FROM eco.p_lignes_commandes | |||
| WHERE compte_id NOT IN (SELECT oid FROM eco.p_oids WHERE code_table = 'compte') | |||
| GROUP BY 1,2; | |||
| INSERT INTO eco.p_oids (code_table, oid) | |||
| SELECT 'types_articles', t_articles.type_id | |||
| FROM eco.p_mouvements_articles JOIN eco.t_articles ON article_id = t_articles.oid | |||
| WHERE t_articles.type_id NOT IN (SELECT oid FROM eco.p_oids WHERE code_table = 'types_articles') | |||
| GROUP BY 1,2; | |||
| INSERT INTO eco.p_oids (code_table, oid) | |||
| SELECT 'types_articles', t_articles.type_id | |||
| FROM eco.p_lignes_commandes JOIN eco.t_articles ON article_id = t_articles.oid | |||
| WHERE t_articles.type_id NOT IN (SELECT oid FROM eco.p_oids WHERE code_table = 'types_articles') | |||
| GROUP BY 1,2; | |||
| INSERT INTO eco.p_oids (code_table, oid) | |||
| SELECT 'unites_stockage_articles', t_articles.unite_stockage_id | |||
| FROM eco.p_mouvements_articles JOIN eco.t_articles ON article_id = t_articles.oid | |||
| WHERE t_articles.unite_stockage_id NOT IN (SELECT oid FROM eco.p_oids WHERE code_table = 'unites_stockage_articles') | |||
| GROUP BY 1,2; | |||
| INSERT INTO eco.p_oids (code_table, oid) | |||
| SELECT 'unites_stockage_articles', t_articles.unite_stockage_id | |||
| FROM eco.p_lignes_commandes JOIN eco.t_articles ON article_id = t_articles.oid | |||
| WHERE t_articles.unite_stockage_id NOT IN (SELECT oid FROM eco.p_oids WHERE code_table = 'unites_stockage_articles') | |||
| GROUP BY 1,2; | |||
| INSERT INTO eco.p_oids (code_table, oid) | |||
| SELECT 'gestionnaires', gestionnaire_id | |||
| FROM eco.p_mouvements_articles | |||
| WHERE gestionnaire_id NOT IN (SELECT oid FROM eco.p_oids WHERE code_table = 'gestionnaires') | |||
| GROUP BY 1,2; | |||
| INSERT INTO eco.p_oids (code_table, oid) | |||
| SELECT 'gestionnaires', gestionnaire_id | |||
| FROM eco.p_commandes | |||
| WHERE gestionnaire_id NOT IN (SELECT oid FROM eco.p_oids WHERE code_table = 'gestionnaires') | |||
| GROUP BY 1,2; | |||
| INSERT INTO eco.p_oids (code_table, oid) | |||
| SELECT 'unites_fonctionnelles', unite_fonctionnelle_id | |||
| FROM eco.p_mouvements_articles | |||
| WHERE unite_fonctionnelle_id NOT IN (SELECT oid FROM eco.p_oids WHERE code_table = 'unites_fonctionnelles') | |||
| GROUP BY 1,2; | |||
| INSERT INTO eco.p_oids (code_table, oid) | |||
| SELECT 'unites_fonctionnelles', unite_fonctionnelle_id | |||
| FROM eco.p_commandes | |||
| WHERE unite_fonctionnelle_id NOT IN (SELECT oid FROM eco.p_oids WHERE code_table = 'unites_fonctionnelles') | |||
| GROUP BY 1,2; | |||
| INSERT INTO eco.p_oids (code_table, oid) | |||
| SELECT 'fournisseurs', fournisseur_id | |||
| FROM eco.p_mouvements_articles | |||
| WHERE fournisseur_id NOT IN (SELECT oid FROM eco.p_oids WHERE code_table = 'fournisseurs') | |||
| GROUP BY 1,2; | |||
| INSERT INTO eco.p_oids (code_table, oid) | |||
| SELECT 'fournisseurs', fournisseur_id | |||
| FROM eco.p_commandes | |||
| WHERE fournisseur_id NOT IN (SELECT oid FROM eco.p_oids WHERE code_table = 'fournisseurs') | |||
| GROUP BY 1,2; | |||
| INSERT INTO eco.p_oids (code_table, oid) | |||
| SELECT 'types_fournisseurs', t_fournisseurs.type_id | |||
| FROM eco.p_mouvements_articles JOIN eco.t_fournisseurs ON fournisseur_id = t_fournisseurs.oid | |||
| WHERE t_fournisseurs.type_id NOT IN (SELECT oid FROM eco.p_oids WHERE code_table = 'types_fournisseurs') | |||
| GROUP BY 1,2; | |||
| INSERT INTO eco.p_oids (code_table, oid) | |||
| SELECT 'types_fournisseurs', t_fournisseurs.type_id | |||
| FROM eco.p_commandes JOIN eco.t_fournisseurs ON fournisseur_id = t_fournisseurs.oid | |||
| WHERE t_fournisseurs.type_id NOT IN (SELECT oid FROM eco.p_oids WHERE code_table = 'types_fournisseurs') | |||
| GROUP BY 1,2; | |||
| INSERT INTO eco.p_oids (code_table, oid) | |||
| SELECT 'lieux_mouvements', lieu_id | |||
| FROM eco.p_mouvements_articles | |||
| WHERE lieu_id NOT IN (SELECT oid FROM eco.p_oids WHERE code_table = 'lieux_mouvements') | |||
| GROUP BY 1,2; | |||
| INSERT INTO eco.p_oids (code_table, oid) | |||
| SELECT 'lieux_commandes', lieu_livraison_id | |||
| FROM eco.p_commandes | |||
| WHERE lieu_livraison_id NOT IN (SELECT oid FROM eco.p_oids WHERE code_table = 'lieux_commandes') | |||
| GROUP BY 1,2; | |||
| INSERT INTO eco.p_oids (code_table, oid) | |||
| SELECT 'types_mouvements', type_mouvement_id | |||
| FROM eco.p_mouvements_articles | |||
| WHERE type_mouvement_id NOT IN (SELECT oid FROM eco.p_oids WHERE code_table = 'types_mouvements') | |||
| GROUP BY 1,2; | |||
| INSERT INTO eco.p_oids (code_table, oid) | |||
| SELECT 'ucd', ucd_id | |||
| FROM eco.p_mouvements_articles | |||
| WHERE ucd_id NOT IN (SELECT oid FROM eco.p_oids WHERE code_table = 'ucd') | |||
| GROUP BY 1,2; | |||
| INSERT INTO eco.p_oids (code_table, oid) | |||
| SELECT 'lpp', lpp_id | |||
| FROM eco.p_mouvements_articles | |||
| WHERE lpp_id NOT IN (SELECT oid FROM eco.p_oids WHERE code_table = 'lpp') | |||
| GROUP BY 1,2; | |||
| RETURN 'OK'; | |||
| END; | |||
| @ -0,0 +1,651 @@ | |||
| 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; | |||
| @ -0,0 +1,365 @@ | |||
| return: text | |||
| lang: plpgsql | |||
| src: | | |||
| DECLARE | |||
| file TEXT; | |||
| ok TEXT; | |||
| result TEXT; | |||
| BEGIN | |||
| INSERT INTO eco.t_divers (code, texte, valeur, description, valeur2) | |||
| SELECT | |||
| 'REFFOUCTI', | |||
| 'Référentiel fournisseur CTI', | |||
| '0', | |||
| '1=Génération référentiel fournisseur CTI', | |||
| '' | |||
| WHERE 'REFFOUCTI' NOT IN (SELECT code FROM eco.t_divers); | |||
| INSERT INTO eco.t_divers (code, texte, valeur, description, valeur2) | |||
| SELECT | |||
| 'REFARTCTI', | |||
| 'Référentiel article CTI', | |||
| '0', | |||
| '1=Génération référentiel article CTI', | |||
| '' | |||
| WHERE 'REFARTCTI' NOT IN (SELECT code FROM eco.t_divers); | |||
| -- Referentiel fournisseurs | |||
| IF EXISTS (SELECT valeur FROM eco.t_divers WHERE code = 'REFFOUCTI' AND valeur = '1') THEN | |||
| IF NOT EXISTS (SELECT * FROM pg_class WHERE relnamespace = pg_my_temp_schema() AND relname = 'w_cti_gen_referentiel') THEN | |||
| DROP TABLE IF EXISTS w_cti_gen_referentiel; | |||
| CREATE TEMP TABLE w_cti_gen_referentiel ( | |||
| oid bigint, | |||
| code text, | |||
| texte text, | |||
| texte_court text, | |||
| texte_soundex text | |||
| ); | |||
| END IF; | |||
| TRUNCATE w_cti_gen_referentiel; | |||
| INSERT INTO w_cti_gen_referentiel | |||
| SELECT oid, code, texte, texte_court, texte AS texte_soundex | |||
| FROM eco.t_fournisseurs | |||
| WHERE oid <> 0 AND | |||
| (fournisseur_reference_cti_id IS NULL OR | |||
| fournisseur_reference_cti_id = 0); | |||
| UPDATE w_cti_gen_referentiel | |||
| SET texte_soundex = trim(split_part(texte_soundex,'(',1)) | |||
| WHERE texte_soundex like '%(%'; | |||
| UPDATE w_cti_gen_referentiel | |||
| SET texte_soundex = translate(texte_soundex,'*.''"-;,/&',''); | |||
| UPDATE w_cti_gen_referentiel | |||
| SET texte_soundex = rtrim(texte_soundex,'X') | |||
| WHERE texte_soundex like '%XX'; | |||
| UPDATE w_cti_gen_referentiel | |||
| SET texte_soundex = ltrim(texte_soundex,'X') | |||
| WHERE texte_soundex like 'XX%'; | |||
| UPDATE w_cti_gen_referentiel | |||
| SET texte_soundex = replace(texte_soundex,' SAS','') | |||
| WHERE texte_soundex like '% SAS%'; | |||
| UPDATE w_cti_gen_referentiel | |||
| SET texte_soundex = replace(texte_soundex,' SA','') | |||
| WHERE texte_soundex like '% SA'; | |||
| UPDATE w_cti_gen_referentiel | |||
| SET texte_soundex = replace(texte_soundex,' SA','') | |||
| WHERE texte_soundex like '% SARL'; | |||
| UPDATE w_cti_gen_referentiel | |||
| SET texte_soundex = replace(texte_soundex,' FRANCE','') | |||
| WHERE texte_soundex like '% FRANCE'; | |||
| UPDATE w_cti_gen_referentiel | |||
| SET texte_soundex = replace(texte_soundex,' ','') | |||
| WHERE texte_soundex like '% %'; | |||
| INSERT INTO eco.t_fournisseur_reference_cti (code_original, code, texte, texte_court) | |||
| SELECT | |||
| texte_soundex AS code_original, | |||
| substr(texte_soundex,1,10), | |||
| MIN(texte) AS texte, | |||
| MIN(texte) AS texte_court | |||
| FROM w_cti_gen_referentiel | |||
| WHERE length(texte_soundex) > 1 AND | |||
| texte_soundex NOT IN (SELECT code_original FROM eco.t_fournisseur_reference_cti WHERE code_original IS NOT NULL) | |||
| GROUP BY 1 | |||
| ORDER BY 1 | |||
| ; | |||
| UPDATE eco.t_fournisseurs | |||
| SET fournisseur_reference_cti_id = t_fournisseur_reference_cti.oid | |||
| FROM w_cti_gen_referentiel | |||
| JOIN eco.t_fournisseur_reference_cti ON t_fournisseur_reference_cti.code_original = texte_soundex | |||
| WHERE t_fournisseurs.oid = w_cti_gen_referentiel.oid; | |||
| UPDATE eco.t_fournisseur_reference_cti | |||
| SET code = '' | |||
| WHERE oid <> 0; | |||
| UPDATE eco.t_fournisseur_reference_cti | |||
| SET code = substr(code_original,1,4) | |||
| FROM | |||
| (SELECT substr(code_original,1,4) AS new_code | |||
| FROM eco.t_fournisseur_reference_cti | |||
| GROUP BY 1 | |||
| HAVING count(*) = 1 | |||
| ) subview | |||
| WHERE oid <> 0 AND | |||
| substr(code_original,1,4) = new_code | |||
| ; | |||
| UPDATE eco.t_fournisseur_reference_cti | |||
| SET code = substr(code_original,1,5) | |||
| FROM | |||
| (SELECT substr(code_original,1,5) AS new_code | |||
| FROM eco.t_fournisseur_reference_cti | |||
| GROUP BY 1 | |||
| HAVING count(*) = 1 | |||
| ) subview | |||
| WHERE oid <> 0 AND | |||
| substr(code_original,1,5) = new_code AND | |||
| code = '' | |||
| ; | |||
| UPDATE eco.t_fournisseur_reference_cti | |||
| SET code = substr(code_original,1,6) | |||
| FROM | |||
| (SELECT substr(code_original,1,6) AS new_code | |||
| FROM eco.t_fournisseur_reference_cti | |||
| GROUP BY 1 | |||
| HAVING count(*) = 1 | |||
| ) subview | |||
| WHERE oid <> 0 AND | |||
| substr(code_original,1,6) = new_code AND | |||
| code = '' | |||
| ; | |||
| UPDATE eco.t_fournisseur_reference_cti | |||
| SET code = substr(code_original,1,7) | |||
| FROM | |||
| (SELECT substr(code_original,1,7) AS new_code | |||
| FROM eco.t_fournisseur_reference_cti | |||
| GROUP BY 1 | |||
| HAVING count(*) = 1 | |||
| ) subview | |||
| WHERE oid <> 0 AND | |||
| substr(code_original,1,7) = new_code AND | |||
| code = '' | |||
| ; | |||
| UPDATE eco.t_fournisseur_reference_cti | |||
| SET code = substr(code_original,1,8) | |||
| FROM | |||
| (SELECT substr(code_original,1,8) AS new_code | |||
| FROM eco.t_fournisseur_reference_cti | |||
| GROUP BY 1 | |||
| HAVING count(*) = 1 | |||
| ) subview | |||
| WHERE oid <> 0 AND | |||
| substr(code_original,1,8) = new_code AND | |||
| code = '' | |||
| ; | |||
| PERFORM base.cti_execute( | |||
| 'UPDATE eco.t_fournisseur_reference_cti | |||
| SET code = substr(code_original,1,8) || to_char(nb,''FM00'') | |||
| FROM | |||
| ( | |||
| SELECT substr(code_original,1,8) AS new_code, | |||
| MAX(oid) AS max_id, | |||
| count(*) AS nb | |||
| FROM eco.t_fournisseur_reference_cti | |||
| WHERE code = '''' | |||
| GROUP BY 1 | |||
| ) subview | |||
| WHERE oid <> 0 AND | |||
| substr(code_original,1,8) = new_code AND | |||
| oid = max_id AND | |||
| code = '''' | |||
| ',100); | |||
| UPDATE eco.t_fournisseurs SET | |||
| fournisseur_reference_cti_code = t_fournisseur_reference_cti.code, | |||
| fournisseur_reference_cti_texte = t_fournisseur_reference_cti.texte_court, | |||
| fournisseur_reference_cti_section_id = t_fournisseur_reference_cti.section_id, | |||
| fournisseur_reference_cti_section_code = t_fournisseur_reference_cti.section_code, | |||
| fournisseur_reference_cti_section_texte = t_fournisseur_reference_cti.section_texte | |||
| FROM eco.t_fournisseur_reference_cti | |||
| WHERE fournisseur_reference_cti_id = t_fournisseur_reference_cti.oid AND | |||
| ( | |||
| fournisseur_reference_cti_code IS DISTINCT FROM t_fournisseur_reference_cti.code OR | |||
| fournisseur_reference_cti_texte IS DISTINCT FROM t_fournisseur_reference_cti.texte_court OR | |||
| fournisseur_reference_cti_section_id IS DISTINCT FROM t_fournisseur_reference_cti.section_id OR | |||
| fournisseur_reference_cti_section_code IS DISTINCT FROM t_fournisseur_reference_cti.section_code OR | |||
| fournisseur_reference_cti_section_texte IS DISTINCT FROM t_fournisseur_reference_cti.section_texte | |||
| ); | |||
| INSERT INTO eco.p_oids (code_table, oid) | |||
| SELECT 'fournisseur_reference_cti', fournisseur_reference_cti_id | |||
| FROM eco.p_mouvements_articles JOIN eco.t_fournisseurs ON fournisseur_id = t_fournisseurs.oid | |||
| WHERE fournisseur_reference_cti_id <> 0 AND fournisseur_reference_cti_id IS NOT NULL AND fournisseur_reference_cti_id NOT IN (SELECT oid FROM eco.p_oids WHERE code_table = 'fournisseur_reference_cti') | |||
| GROUP BY 1,2; | |||
| INSERT INTO eco.p_oids (code_table, oid) | |||
| SELECT 'fournisseur_reference_cti', fournisseur_reference_cti_id | |||
| FROM eco.p_commandes JOIN eco.t_fournisseurs ON fournisseur_id = t_fournisseurs.oid | |||
| WHERE fournisseur_reference_cti_id IS NOT NULL AND fournisseur_reference_cti_id NOT IN (SELECT oid FROM eco.p_oids WHERE code_table = 'fournisseur_reference_cti') | |||
| GROUP BY 1,2; | |||
| END IF; | |||
| -- Referentiel articles | |||
| IF EXISTS (SELECT valeur FROM eco.t_divers WHERE code = 'REFARTCTI' AND valeur = '1') THEN | |||
| IF NOT EXISTS (SELECT * FROM pg_class WHERE relnamespace = pg_my_temp_schema() AND relname = 'w_cti_gen_referentiel') THEN | |||
| DROP TABLE IF EXISTS w_cti_gen_referentiel; | |||
| CREATE TEMP TABLE w_cti_gen_referentiel ( | |||
| oid bigint, | |||
| code text, | |||
| texte text, | |||
| texte_court text, | |||
| texte_soundex text | |||
| ); | |||
| END IF; | |||
| TRUNCATE w_cti_gen_referentiel; | |||
| INSERT INTO w_cti_gen_referentiel | |||
| SELECT oid, code, texte, texte_court, texte AS texte_soundex | |||
| FROM eco.t_articles | |||
| WHERE oid <> 0 AND | |||
| (article_reference_cti_id IS NULL OR | |||
| article_reference_cti_id = 0); | |||
| UPDATE w_cti_gen_referentiel | |||
| SET texte_soundex = trim(split_part(texte_soundex,'(',1)) | |||
| WHERE texte_soundex like '%(%'; | |||
| UPDATE w_cti_gen_referentiel | |||
| SET texte_soundex = translate(texte_soundex,'*.''"-;,/&=',''); | |||
| UPDATE w_cti_gen_referentiel | |||
| SET texte_soundex = rtrim(texte_soundex,'X') | |||
| WHERE texte_soundex like '%XX'; | |||
| UPDATE w_cti_gen_referentiel | |||
| SET texte_soundex = ltrim(texte_soundex,'X') | |||
| WHERE texte_soundex like 'XX%'; | |||
| UPDATE w_cti_gen_referentiel | |||
| SET texte_soundex = replace(texte_soundex,' ','') | |||
| WHERE texte_soundex like '% %'; | |||
| INSERT INTO eco.t_article_reference_cti (code_original, code, texte, texte_court) | |||
| SELECT | |||
| texte_soundex AS code_original, | |||
| substr(texte_soundex,1,10), | |||
| MIN(texte) AS texte, | |||
| MIN(texte) AS texte_court | |||
| FROM w_cti_gen_referentiel | |||
| WHERE length(texte_soundex) > 1 AND | |||
| texte_soundex NOT IN (SELECT code_original FROM eco.t_article_reference_cti WHERE code_original IS NOT NULL) | |||
| GROUP BY 1 | |||
| ORDER BY 1 | |||
| ; | |||
| UPDATE eco.t_articles | |||
| SET article_reference_cti_id = t_article_reference_cti.oid | |||
| FROM w_cti_gen_referentiel | |||
| JOIN eco.t_article_reference_cti ON t_article_reference_cti.code_original = texte_soundex | |||
| WHERE t_articles.oid = w_cti_gen_referentiel.oid; | |||
| UPDATE eco.t_article_reference_cti | |||
| SET code = '' | |||
| WHERE oid <> 0; | |||
| UPDATE eco.t_article_reference_cti | |||
| SET code = substr(translate(code_original,'0123456789',''),1,4) | |||
| FROM | |||
| (SELECT substr(translate(code_original,'0123456789',''),1,4) AS new_code | |||
| FROM eco.t_article_reference_cti | |||
| WHERE length(translate(code_original,'0123456789','')) >= 4 | |||
| GROUP BY 1 | |||
| HAVING count(*) = 1 | |||
| ) subview | |||
| WHERE oid <> 0 AND | |||
| substr(translate(code_original,'0123456789',''),1,4) = new_code | |||
| ; | |||
| UPDATE eco.t_article_reference_cti | |||
| SET code = substr(translate(code_original,'0123456789',''),1,5) | |||
| FROM | |||
| (SELECT substr(translate(code_original,'0123456789',''),1,5) AS new_code | |||
| FROM eco.t_article_reference_cti | |||
| WHERE length(translate(code_original,'0123456789','')) >= 4 | |||
| GROUP BY 1 | |||
| HAVING count(*) = 1 | |||
| ) subview | |||
| WHERE oid <> 0 AND | |||
| substr(translate(code_original,'0123456789',''),1,5) = new_code AND | |||
| code = '' | |||
| ; | |||
| UPDATE eco.t_article_reference_cti | |||
| SET code = substr(translate(code_original,'0123456789',''),1,6) | |||
| FROM | |||
| (SELECT substr(translate(code_original,'0123456789',''),1,6) AS new_code | |||
| FROM eco.t_article_reference_cti | |||
| WHERE length(translate(code_original,'0123456789','')) >= 4 | |||
| GROUP BY 1 | |||
| HAVING count(*) = 1 | |||
| ) subview | |||
| WHERE oid <> 0 AND | |||
| substr(translate(code_original,'0123456789',''),1,6) = new_code AND | |||
| code = '' | |||
| ; | |||
| UPDATE eco.t_article_reference_cti | |||
| SET code = substr(translate(code_original,'0123456789',''),1,7) | |||
| FROM | |||
| (SELECT substr(translate(code_original,'0123456789',''),1,7) AS new_code | |||
| FROM eco.t_article_reference_cti | |||
| WHERE length(translate(code_original,'0123456789','')) >= 4 | |||
| GROUP BY 1 | |||
| HAVING count(*) = 1 | |||
| ) subview | |||
| WHERE oid <> 0 AND | |||
| substr(translate(code_original,'0123456789',''),1,7) = new_code AND | |||
| code = '' | |||
| ; | |||
| PERFORM base.cti_execute( | |||
| 'UPDATE eco.t_article_reference_cti | |||
| SET code = substr(translate(code_original,''0123456789'',''''),1,7) || to_char(nb,''FM00'') | |||
| FROM | |||
| ( | |||
| SELECT substr(translate(code_original,''0123456789'',''''),1,7) AS new_code, | |||
| MAX(oid) AS max_id, | |||
| count(*) AS nb | |||
| FROM eco.t_article_reference_cti | |||
| WHERE length(translate(code_original,''0123456789'','''')) >= 4 AND | |||
| code = '''' | |||
| GROUP BY 1 | |||
| ) subview | |||
| WHERE oid <> 0 AND | |||
| substr(translate(code_original,''0123456789'',''''),1,7) = new_code AND | |||
| oid = max_id AND | |||
| code = ''''',500) | |||
| ; | |||
| PERFORM base.cti_execute( | |||
| 'UPDATE eco.t_article_reference_cti | |||
| SET code = substr(code_original,1,7) || to_char(nb,''FM00'') | |||
| FROM | |||
| ( | |||
| SELECT substr(code_original,1,7) AS new_code, | |||
| MAX(oid) AS max_id, | |||
| count(*) AS nb | |||
| FROM eco.t_article_reference_cti | |||
| WHERE code = '''' | |||
| GROUP BY 1 | |||
| ) subview | |||
| WHERE oid <> 0 AND | |||
| substr(code_original,1,7) = new_code AND | |||
| oid = max_id AND | |||
| code = ''''',500) | |||
| ; | |||
| UPDATE eco.t_articles SET | |||
| article_reference_cti_code = t_article_reference_cti.code, | |||
| article_reference_cti_texte = t_article_reference_cti.texte_court, | |||
| article_reference_cti_section_id = t_article_reference_cti.section_id, | |||
| article_reference_cti_section_code = t_article_reference_cti.section_code, | |||
| article_reference_cti_section_texte = t_article_reference_cti.section_texte | |||
| FROM eco.t_article_reference_cti | |||
| WHERE article_reference_cti_id = t_article_reference_cti.oid AND | |||
| ( | |||
| article_reference_cti_code IS DISTINCT FROM t_article_reference_cti.code OR | |||
| article_reference_cti_texte IS DISTINCT FROM t_article_reference_cti.texte_court OR | |||
| article_reference_cti_section_id IS DISTINCT FROM t_article_reference_cti.section_id OR | |||
| article_reference_cti_section_code IS DISTINCT FROM t_article_reference_cti.section_code OR | |||
| article_reference_cti_section_texte IS DISTINCT FROM t_article_reference_cti.section_texte | |||
| ); | |||
| INSERT INTO eco.p_oids (code_table, oid) | |||
| SELECT 'article_reference_cti', article_reference_cti_id | |||
| FROM eco.p_mouvements_articles JOIN eco.t_articles ON article_id = t_articles.oid | |||
| WHERE article_reference_cti_id IS NOT NULL AND article_reference_cti_id NOT IN (SELECT oid FROM eco.p_oids WHERE code_table = 'article_reference_cti') | |||
| GROUP BY 1,2; | |||
| INSERT INTO eco.p_oids (code_table, oid) | |||
| SELECT 'article_reference_cti', article_reference_cti_id | |||
| FROM eco.p_lignes_commandes JOIN eco.t_articles ON article_id = t_articles.oid | |||
| WHERE article_reference_cti_id IS NOT NULL AND article_reference_cti_id NOT IN (SELECT oid FROM eco.p_oids WHERE code_table = 'article_reference_cti') | |||
| GROUP BY 1,2; | |||
| END IF; | |||
| RETURN 'OK'; | |||
| END; | |||
| @ -0,0 +1,116 @@ | |||
| return: text | |||
| lang: plpgsql | |||
| src: | | |||
| DECLARE | |||
| result TEXT; | |||
| BEGIN | |||
| -- UCD | |||
| INSERT INTO base.t_ucd(oid, code, texte, texte_court) | |||
| SELECT 0, chr(127) || '*', 'Non renseigné', 'N/R' | |||
| WHERE 0 NOT IN (SELECT oid FROM base.t_ucd); | |||
| -- LPP | |||
| INSERT INTO base.t_lpp(oid, code, texte, texte_court) | |||
| SELECT 0, chr(127) || '*', 'Non renseigné', 'N/R' | |||
| WHERE 0 NOT IN (SELECT oid FROM base.t_lpp); | |||
| -- Sites | |||
| INSERT INTO eco.t_sites(oid, code_original, code, texte, texte_court) | |||
| SELECT 0, '', chr(127) || '*', 'Non renseigné', 'N/R' | |||
| WHERE 0 NOT IN (SELECT oid FROM eco.t_sites); | |||
| -- Comptes | |||
| INSERT INTO eco.t_compte(oid, code_original, code, texte, texte_court) | |||
| SELECT 0, '', chr(127) || '*', 'Non renseigné', 'N/R' | |||
| WHERE 0 NOT IN (SELECT oid FROM eco.t_compte); | |||
| -- Classification ATC | |||
| INSERT INTO eco.t_classification_atc(oid, code_original, code, texte, texte_court) | |||
| SELECT 0, '', chr(127) || '*********', 'Non renseignée', 'Non renseignée' | |||
| WHERE 0 NOT IN (SELECT oid FROM eco.t_classification_atc); | |||
| -- Familles articles | |||
| INSERT INTO eco.t_familles_articles(oid, code_original, code, texte, texte_court) | |||
| SELECT 0, '', chr(127) || '*', 'Non renseignée', 'Non renseignée' | |||
| WHERE 0 NOT IN (SELECT oid FROM eco.t_familles_articles); | |||
| -- Sous Familles articles | |||
| INSERT INTO eco.t_sous_familles_articles(oid, code_original, code, texte, texte_court) | |||
| SELECT 0, '', chr(127) || '*', 'Non renseignée', 'Non renseignée' | |||
| WHERE 0 NOT IN (SELECT oid FROM eco.t_sous_familles_articles); | |||
| -- Types articles | |||
| INSERT INTO eco.t_types_articles(oid, code_original, code, texte, texte_court) | |||
| SELECT 0, '', chr(127) || '*', 'Non renseigné', 'Non renseigné' | |||
| WHERE 0 NOT IN (SELECT oid FROM eco.t_types_articles); | |||
| -- Catégories articles | |||
| INSERT INTO eco.t_categories_articles(oid, code_original, code, texte, texte_court) | |||
| SELECT 0, '', chr(127) || '*', 'Non renseigné', 'Non renseigné' | |||
| WHERE 0 NOT IN (SELECT oid FROM eco.t_categories_articles); | |||
| -- Sous Catégories articles | |||
| INSERT INTO eco.t_sous_categories_articles(oid, code_original, code, texte, texte_court) | |||
| SELECT 0, '', chr(127) || '*', 'Non renseigné', 'Non renseigné' | |||
| WHERE 0 NOT IN (SELECT oid FROM eco.t_sous_categories_articles); | |||
| -- Référence article | |||
| INSERT INTO eco.t_article_reference_cacic(oid, code_original, code, texte, texte_court) | |||
| SELECT 0, '', chr(127) || '*', 'Non renseigné', 'Non renseigné' | |||
| WHERE 0 NOT IN (SELECT oid FROM eco.t_article_reference_cacic); | |||
| -- Lieux | |||
| INSERT INTO eco.t_lieux(oid, code_original, code, texte, texte_court) | |||
| SELECT 0, '', chr(127) || '*', 'Non renseigné', 'Non renseigné' | |||
| WHERE 0 NOT IN (SELECT oid FROM eco.t_lieux); | |||
| -- Articles | |||
| INSERT INTO eco.t_articles(oid, code_original, code, texte, texte_court) | |||
| SELECT 0, '', chr(127) || '*', 'Non renseigné', 'Non renseigné' | |||
| WHERE 0 NOT IN (SELECT oid FROM eco.t_articles); | |||
| -- unités | |||
| INSERT INTO eco.t_unites(oid, code_original, code, texte, texte_court) | |||
| SELECT 0, '', chr(127) || '*', 'Non renseignée', 'Non renseignée' | |||
| WHERE 0 NOT IN (SELECT oid FROM eco.t_unites); | |||
| -- Types de fournisseur | |||
| INSERT INTO eco.t_types_fournisseurs(oid, code_original, code, texte, texte_court) | |||
| SELECT 0, '', chr(127) || '*', 'Non renseigné', 'Non renseigné' | |||
| WHERE 0 NOT IN (SELECT oid FROM eco.t_types_fournisseurs); | |||
| -- Fournisseurs | |||
| INSERT INTO eco.t_fournisseurs(oid, code_original, code, texte, texte_court) | |||
| SELECT 0, '', chr(127) || '*', 'Non renseigné', 'Non renseigné' | |||
| WHERE 0 NOT IN (SELECT oid FROM eco.t_fournisseurs); | |||
| -- Gestionnaires | |||
| INSERT INTO eco.t_gestionnaires(oid, code_original, code, texte, texte_court) | |||
| SELECT 0, '', chr(127) || '*', 'Non renseigné', 'Non renseigné' | |||
| WHERE 0 NOT IN (SELECT oid FROM eco.t_gestionnaires); | |||
| -- Référence fournisseur cacic | |||
| INSERT INTO eco.t_fournisseur_reference_cacic(oid, code_original, code, texte, texte_court) | |||
| SELECT 0, '', chr(127) || '*', 'Non renseigné', 'Non renseigné' | |||
| WHERE 0 NOT IN (SELECT oid FROM eco.t_fournisseur_reference_cacic); | |||
| -- Référence fournisseur cti | |||
| INSERT INTO eco.t_fournisseur_reference_cti(oid, code_original, code, texte, texte_court) | |||
| SELECT 0, '', chr(127) || '*', 'Non renseigné', 'Non renseigné' | |||
| WHERE 0 NOT IN (SELECT oid FROM eco.t_fournisseur_reference_cti); | |||
| -- unites fonctionnelles | |||
| INSERT INTO eco.t_unites_fonctionnelles(oid, code_original, code, texte, texte_court) | |||
| SELECT 0, '', chr(127) || '*', 'Non renseignée', 'Non renseignée' | |||
| WHERE 0 NOT IN (SELECT oid FROM eco.t_unites_fonctionnelles); | |||
| -- Types de mouvement | |||
| INSERT INTO eco.t_types_mouvements(oid, code_original, code, texte, texte_court) | |||
| SELECT 0, '', chr(127) || '*', 'Non renseigné', 'Non renseigné' | |||
| WHERE 0 NOT IN (SELECT oid FROM eco.t_types_mouvements); | |||
| RETURN 'OK'; | |||
| END; | |||
| @ -0,0 +1,61 @@ | |||
| return: date | |||
| lang: plpgsql | |||
| parameters: | |||
| p0: | |||
| type: text | |||
| name: i_code | |||
| p1: | |||
| type: text | |||
| name: i_option | |||
| src: | | |||
| DECLARE | |||
| _code text; | |||
| _option text; | |||
| _now date; | |||
| BEGIN | |||
| _code = i_code; | |||
| IF _code NOT IN ('NOW', 'NOWCLOTURE') THEN | |||
| _code = 'NOW'; | |||
| END IF; | |||
| _option = i_option; | |||
| IF NOT EXISTS (SELECT * FROM eco.t_divers WHERE code = _code) THEN | |||
| _option = 'FORCE'; | |||
| END IF; | |||
| IF _option = 'FORCE' THEN | |||
| _now = | |||
| CASE _code | |||
| WHEN 'NOW' THEN | |||
| (SELECT MAX(date) FROM eco.p_mouvements_articles WHERE date <= date(now()) ) | |||
| WHEN 'NOWCLOTURE' THEN | |||
| (SELECT date(date_trunc('month',MAX(date_commande)) - interval '1 day') FROM eco.p_commandes WHERE date_commande <= date(now())) | |||
| ELSE date(now()) | |||
| END; | |||
| UPDATE eco.t_divers SET | |||
| texte = CASE _code | |||
| WHEN 'NOW' THEN 'Date dernier mouvement' | |||
| WHEN 'NOWCLOTURE' THEN 'Date clôture' | |||
| ELSE 'Date dernier mouvement' | |||
| END, | |||
| valeur = _now::text, | |||
| valeur_date = _now, | |||
| show_info_module = true | |||
| WHERE code = _code; | |||
| INSERT INTO eco.t_divers (code, texte, valeur, valeur_date, description, show_info_module) | |||
| SELECT | |||
| _code, | |||
| CASE _code | |||
| WHEN 'NOW' THEN 'Date dernier mouvement' | |||
| WHEN 'NOWCLOTURE' THEN 'Date clôture' | |||
| ELSE 'Date dernier mouvement' | |||
| END, | |||
| _now::text, | |||
| _now, | |||
| 'Date non modifiable', | |||
| true | |||
| WHERE _code NOT IN (SELECT code FROM eco.t_divers); | |||
| ELSE | |||
| _now = (SELECT valeur_date FROM eco.t_divers WHERE code = _code); | |||
| END IF; | |||
| RETURN _now; | |||
| END; | |||
| @ -0,0 +1,51 @@ | |||
| return: text | |||
| lang: plpgsql | |||
| parameters: | |||
| p0: | |||
| type: text | |||
| name: i_column_name | |||
| p1: | |||
| type: text | |||
| name: i_table_name | |||
| p2: | |||
| type: integer | |||
| name: i_array_index | |||
| p3: | |||
| type: bigint | |||
| name: i_indicateur_id | |||
| p4: | |||
| type: bigint | |||
| name: i_indicateur_associe_1_id | |||
| p5: | |||
| type: bigint | |||
| name: i_indicateur_associe_2_id | |||
| p6: | |||
| type: bigint | |||
| name: i_indicateur_associe_3_id | |||
| p7: | |||
| type: bigint | |||
| name: i_indicateur_associe_4_id | |||
| p8: | |||
| type: bigint | |||
| name: i_indicateur_associe_5_id | |||
| src: | | |||
| DECLARE | |||
| column_name text; | |||
| array_index text; | |||
| BEGIN | |||
| array_index = ''; | |||
| if i_array_index > 0 THEN | |||
| array_index = '[0000' || i_array_index || ']'; | |||
| END IF; | |||
| if i_table_name <> '*CALC' THEN | |||
| column_name = 'SUM(indicateurs[000' || i_indicateur_id || ']' || array_index ||')'; | |||
| ELSE | |||
| column_name = replace(i_column_name, '[1]', 'SUM(indicateurs[000' || i_indicateur_associe_1_id || ']' || array_index ||')'); | |||
| column_name = replace(column_name, '[2]', 'SUM(indicateurs[000' || i_indicateur_associe_2_id || ']' || array_index ||')'); | |||
| column_name = replace(column_name, '[3]', 'SUM(indicateurs[000' || i_indicateur_associe_3_id || ']' || array_index ||')'); | |||
| column_name = replace(column_name, '[4]', 'SUM(indicateurs[000' || i_indicateur_associe_4_id || ']' || array_index ||')'); | |||
| column_name = replace(column_name, '[5]', 'SUM(indicateurs[000' || i_indicateur_associe_5_id || ']' || array_index ||')'); | |||
| END IF; | |||
| RETURN column_name; | |||
| END; | |||
| @ -0,0 +1,72 @@ | |||
| return: SETOF record | |||
| lang: plpgsql | |||
| parameters: | |||
| p0: | |||
| type: bigint | |||
| name: i_rapport_id | |||
| src: | | |||
| DECLARE | |||
| sqlcmd text; | |||
| temp_cursor refcursor; | |||
| _oid integer; | |||
| _maxind integer; | |||
| row RECORD; | |||
| BEGIN | |||
| FOR row IN | |||
| SELECT * FROM econom.cti_prepare_rapport_indicateurs(i_rapport_id, 'v_contrats_mois_1', 'COMP') AS (name text, value text) | |||
| UNION | |||
| SELECT * FROM econom.cti_prepare_rapport_indicateurs(i_rapport_id, 'v_historique_paie_1', 'COMP') AS (name text, value text) | |||
| UNION | |||
| SELECT * FROM econom.cti_prepare_rapport_indicateurs(i_rapport_id, 'v_arrets_travail_mois_1', 'COMP') AS (name text, value text) | |||
| UNION | |||
| SELECT 'RUBRIQUES_RAPPORT', | |||
| base.cti_group_concat( | |||
| 'ARRAY[' || | |||
| econom.cti_prepare_rapport_calc_indicator(column_name, table_name, 3, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id ) || ', ' || | |||
| econom.cti_prepare_rapport_calc_indicator(column_name, table_name, 2, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id ) || ', ' || | |||
| '(' || econom.cti_prepare_rapport_calc_indicator(column_name, table_name, 2, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id ) || ' - ' || | |||
| econom.cti_prepare_rapport_calc_indicator(column_name, table_name, 3, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id ) || ') ' || | |||
| ', ' || | |||
| 'CASE WHEN ' || econom.cti_prepare_rapport_calc_indicator(column_name, table_name, 2, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id ) || ' > 0 AND ' || | |||
| econom.cti_prepare_rapport_calc_indicator(column_name, table_name, 3, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id ) || '> 0 THEN ' || | |||
| 'base.cti_division((' || econom.cti_prepare_rapport_calc_indicator(column_name, table_name, 2, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id ) || ' - ' || | |||
| econom.cti_prepare_rapport_calc_indicator(column_name, table_name, 3, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id ) || '), ' || | |||
| econom.cti_prepare_rapport_calc_indicator(column_name, table_name, 3, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id ) || ') * 100 ' || | |||
| 'ELSE 0 END, ' || | |||
| econom.cti_prepare_rapport_calc_indicator(column_name, table_name, 1, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id ) || ', ' || | |||
| '(' || econom.cti_prepare_rapport_calc_indicator(column_name, table_name, 1, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id ) || ' - ' || | |||
| econom.cti_prepare_rapport_calc_indicator(column_name, table_name, 2, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id ) || ') ' || | |||
| ', ' || | |||
| 'CASE WHEN ' || econom.cti_prepare_rapport_calc_indicator(column_name, table_name, 1, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id ) || ' > 0 AND ' || | |||
| econom.cti_prepare_rapport_calc_indicator(column_name, table_name, 2, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id ) || '> 0 THEN ' || | |||
| 'base.cti_division((' || econom.cti_prepare_rapport_calc_indicator(column_name, table_name, 1, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id ) || ' - ' || | |||
| econom.cti_prepare_rapport_calc_indicator(column_name, table_name, 2, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id ) || '), ' || | |||
| econom.cti_prepare_rapport_calc_indicator(column_name, table_name, 2, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id ) || ') * 100 ' || | |||
| 'ELSE 0 END ' || | |||
| ']' | |||
| ) | |||
| FROM econom.t_rapports_rubriques | |||
| JOIN econom.t_indicateurs ON t_rapports_rubriques.indicateur_id = t_indicateurs.oid | |||
| WHERE rapport_id = i_rapport_id | |||
| LOOP | |||
| RETURN NEXT row; | |||
| END LOOP; | |||
| RETURN ; | |||
| END; | |||
| @ -0,0 +1,178 @@ | |||
| return: SETOF record | |||
| lang: plpgsql | |||
| parameters: | |||
| p0: | |||
| type: bigint | |||
| name: i_rapport_id | |||
| p1: | |||
| type: text | |||
| name: i_table_name | |||
| p2: | |||
| type: text | |||
| name: i_option | |||
| src: | | |||
| DECLARE | |||
| sqlcmd text; | |||
| temp_cursor refcursor; | |||
| _oid integer; | |||
| _count integer; | |||
| _table_count integer; | |||
| _maxind integer; | |||
| _indicateur_name text; | |||
| row RECORD; | |||
| BEGIN | |||
| _maxind = 100; | |||
| _table_count = 0; | |||
| OPEN temp_cursor FOR | |||
| SELECT MAX(oid), SUM(CASE WHEN i_table_name = table_name THEN 1 ELSE 0 END) | |||
| FROM econom.t_indicateurs | |||
| WHERE oid IN ( | |||
| SELECT base.cti_unnest(Array[indicateur_id, indicateur_associe_1_id, indicateur_associe_2_id, indicateur_associe_3_id, indicateur_associe_4_id, indicateur_associe_5_id]) | |||
| FROM econom.t_rapports | |||
| JOIN econom.t_rapports_rubriques ON t_rapports.oid = t_rapports_rubriques.rapport_id AND rapport_id = i_rapport_id | |||
| JOIN econom.t_indicateurs ON t_rapports_rubriques.indicateur_id = t_indicateurs.oid); | |||
| FETCH temp_cursor INTO _oid,_count; | |||
| WHILE FOUND LOOP | |||
| _maxind = _oid; | |||
| _table_count = _count; | |||
| FETCH temp_cursor INTO _oid, _count; | |||
| END LOOP; | |||
| CLOSE temp_cursor; | |||
| _indicateur_name = CASE i_table_name WHEN 'v_contrats_mois_1' THEN 'INDICATEURS_CONTRAT' | |||
| WHEN 'v_historique_paie_1' THEN 'INDICATEURS_PAIE' | |||
| WHEN 'v_arrets_travail_mois_1' THEN 'INDICATEURS_ARRET' | |||
| ELSE 'INDICATEURS_OTHERS' END; | |||
| IF (_table_count = 0) THEN | |||
| FOR row IN SELECT _indicateur_name::text, ''::text | |||
| LOOP | |||
| RETURN NEXT row; | |||
| END LOOP; | |||
| END IF; | |||
| IF (i_option <> 'MONTH' AND i_option <> 'COMP' AND _table_count > 0) THEN | |||
| FOR row IN | |||
| SELECT | |||
| _indicateur_name::text, base.cti_group_concat(CASE WHEN subview.oid IS NOT NULL THEN total_function || '(' || column_name || ')' ELSE 'NULL::numeric' END) | |||
| FROM generate_series(1, _maxind) | |||
| LEFT JOIN | |||
| ( | |||
| SELECT * | |||
| FROM econom.t_indicateurs | |||
| WHERE oid IN ( | |||
| SELECT base.cti_unnest(Array[indicateur_id, indicateur_associe_1_id, indicateur_associe_2_id, indicateur_associe_3_id, indicateur_associe_4_id, indicateur_associe_5_id]) | |||
| FROM econom.t_rapports | |||
| JOIN econom.t_rapports_rubriques ON t_rapports.oid = t_rapports_rubriques.rapport_id AND rapport_id = i_rapport_id | |||
| JOIN econom.t_indicateurs ON t_rapports_rubriques.indicateur_id = t_indicateurs.oid) | |||
| ) subview ON generate_series = subview.oid AND subview.table_name = i_table_name | |||
| UNION | |||
| SELECT 'RUBRIQUES_RAPPORT', | |||
| base.cti_group_concat( | |||
| CASE WHEN table_name <> '*CALC' THEN 'SUM(indicateurs[' || indicateur_id || '])' | |||
| ELSE | |||
| replace( | |||
| replace( | |||
| column_name, | |||
| '[1]', | |||
| 'SUM(indicateurs[000' || indicateur_associe_1_id || '])' | |||
| ), | |||
| '[2]', | |||
| 'SUM(indicateurs[000' || indicateur_associe_2_id || '])' | |||
| ) | |||
| END) | |||
| FROM econom.t_rapports_rubriques | |||
| JOIN econom.t_indicateurs ON t_rapports_rubriques.indicateur_id = t_indicateurs.oid | |||
| WHERE rapport_id = i_rapport_id | |||
| LOOP | |||
| RETURN NEXT row; | |||
| END LOOP; | |||
| END IF; | |||
| IF (i_option = 'MONTH' AND _table_count > 0) THEN | |||
| FOR row IN | |||
| SELECT | |||
| _indicateur_name::text, | |||
| base.cti_group_concat( | |||
| CASE WHEN subview.oid IS NOT NULL THEN | |||
| 'ARRAY[' | |||
| || '(' || total_function || '(' || column_name || ')::numeric),' | |||
| || replace(month_formula, '#SEQ#', '< 1') || ',' | |||
| || replace(month_formula, '#SEQ#', '= 1') || ',' | |||
| || replace(month_formula, '#SEQ#', '= 2') || ',' | |||
| || replace(month_formula, '#SEQ#', '= 3') || ',' | |||
| || replace(month_formula, '#SEQ#', '= 4') || ',' | |||
| || replace(month_formula, '#SEQ#', '= 5') || ',' | |||
| || replace(month_formula, '#SEQ#', '= 6') || ',' | |||
| || replace(month_formula, '#SEQ#', '= 7') || ',' | |||
| || replace(month_formula, '#SEQ#', '= 8') || ',' | |||
| || replace(month_formula, '#SEQ#', '= 9') || ',' | |||
| || replace(month_formula, '#SEQ#', '= 10') || ',' | |||
| || replace(month_formula, '#SEQ#', '= 11') || ',' | |||
| || replace(month_formula, '#SEQ#', '= 12') || '' | |||
| || ']' | |||
| ELSE 'ARRAY[NULL::numeric,NULL::numeric,NULL::numeric,NULL::numeric,NULL::numeric,NULL::numeric,NULL::numeric,NULL::numeric,NULL::numeric,NULL::numeric,NULL::numeric,NULL::numeric,NULL::numeric,NULL::numeric]' END) | |||
| FROM generate_series(1, _maxind) | |||
| LEFT JOIN | |||
| ( | |||
| SELECT *, | |||
| CASE WHEN column_name ILIKE '%DISTINCT%' | |||
| THEN total_function || '(DISTINCT CASE WHEN columnby_sequence #SEQ# THEN ' || replace(column_name,'DISTINCT','') || ' ELSE NULL END)' | |||
| ELSE total_function || '(CASE WHEN columnby_sequence #SEQ# THEN ' || column_name || ' ELSE NULL END)' END AS month_formula | |||
| FROM econom.t_indicateurs | |||
| WHERE oid IN ( | |||
| SELECT base.cti_unnest(Array[indicateur_id, indicateur_associe_1_id, indicateur_associe_2_id, indicateur_associe_3_id, indicateur_associe_4_id, indicateur_associe_5_id]) | |||
| FROM econom.t_rapports | |||
| JOIN econom.t_rapports_rubriques ON t_rapports.oid = t_rapports_rubriques.rapport_id AND rapport_id = i_rapport_id | |||
| JOIN econom.t_indicateurs ON t_rapports_rubriques.indicateur_id = t_indicateurs.oid) | |||
| ) subview ON generate_series = subview.oid AND subview.table_name = i_table_name | |||
| LOOP | |||
| RETURN NEXT row; | |||
| END LOOP; | |||
| END IF; | |||
| IF (i_option = 'COMP' AND _table_count > 0) THEN | |||
| FOR row IN | |||
| SELECT | |||
| _indicateur_name::text, | |||
| base.cti_group_concat( | |||
| CASE WHEN subview.oid IS NOT NULL THEN | |||
| 'ARRAY[' | |||
| || replace(month_formula, '#SEQ#', '= 1') || '::numeric,' | |||
| || replace(month_formula, '#SEQ#', '= 2') || '::numeric,' | |||
| || replace(month_formula, '#SEQ#', '= 3') || '::numeric' | |||
| || ']' | |||
| ELSE 'ARRAY[NULL::numeric,NULL::numeric,NULL::numeric]' END) | |||
| FROM generate_series(1, _maxind) | |||
| LEFT JOIN | |||
| ( | |||
| SELECT *, | |||
| CASE WHEN column_name ILIKE '%DISTINCT%' | |||
| THEN total_function || '(DISTINCT CASE WHEN columnby_sequence #SEQ# THEN ' || replace(column_name,'DISTINCT','') || ' ELSE NULL END)' | |||
| ELSE total_function || '(CASE WHEN columnby_sequence #SEQ# THEN ' || column_name || ' ELSE NULL END)' END AS month_formula | |||
| FROM econom.t_indicateurs | |||
| WHERE oid IN ( | |||
| SELECT base.cti_unnest(Array[indicateur_id, indicateur_associe_1_id, indicateur_associe_2_id, indicateur_associe_3_id, indicateur_associe_4_id, indicateur_associe_5_id]) | |||
| FROM econom.t_rapports | |||
| JOIN econom.t_rapports_rubriques ON t_rapports.oid = t_rapports_rubriques.rapport_id AND rapport_id = i_rapport_id | |||
| JOIN econom.t_indicateurs ON t_rapports_rubriques.indicateur_id = t_indicateurs.oid) | |||
| ) subview ON generate_series = subview.oid AND subview.table_name = i_table_name | |||
| LOOP | |||
| RETURN NEXT row; | |||
| END LOOP; | |||
| END IF; | |||
| RETURN ; | |||
| END; | |||
| @ -0,0 +1,59 @@ | |||
| return: SETOF record | |||
| lang: plpgsql | |||
| parameters: | |||
| p0: | |||
| type: bigint | |||
| name: i_rapport_id | |||
| src: | | |||
| DECLARE | |||
| sqlcmd text; | |||
| temp_cursor refcursor; | |||
| _oid integer; | |||
| _maxind integer; | |||
| row RECORD; | |||
| BEGIN | |||
| FOR row IN | |||
| SELECT * FROM econom.cti_prepare_rapport_indicateurs(i_rapport_id, 'v_contrats_mois_1', 'MONTH') AS (name text, value text) | |||
| UNION | |||
| SELECT * FROM econom.cti_prepare_rapport_indicateurs(i_rapport_id, 'v_historique_paie_1', 'MONTH') AS (name text, value text) | |||
| UNION | |||
| SELECT * FROM econom.cti_prepare_rapport_indicateurs(i_rapport_id, 'v_arrets_travail_mois_1', 'MONTH') AS (name text, value text) | |||
| UNION | |||
| SELECT 'RUBRIQUES_RAPPORT', | |||
| base.cti_group_concat( | |||
| 'ARRAY[' || | |||
| econom.cti_prepare_rapport_calc_indicator(column_name, table_name, 1, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id ) || ', ' || | |||
| econom.cti_prepare_rapport_calc_indicator(column_name, table_name, 2, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id ) || ', ' || | |||
| econom.cti_prepare_rapport_calc_indicator(column_name, table_name, 3, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id ) || ', ' || | |||
| econom.cti_prepare_rapport_calc_indicator(column_name, table_name, 4, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id ) || ', ' || | |||
| econom.cti_prepare_rapport_calc_indicator(column_name, table_name, 5, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id ) || ', ' || | |||
| econom.cti_prepare_rapport_calc_indicator(column_name, table_name, 6, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id ) || ', ' || | |||
| econom.cti_prepare_rapport_calc_indicator(column_name, table_name, 7, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id ) || ', ' || | |||
| econom.cti_prepare_rapport_calc_indicator(column_name, table_name, 8, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id ) || ', ' || | |||
| econom.cti_prepare_rapport_calc_indicator(column_name, table_name, 9, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id ) || ', ' || | |||
| econom.cti_prepare_rapport_calc_indicator(column_name, table_name, 10, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id ) || ', ' || | |||
| econom.cti_prepare_rapport_calc_indicator(column_name, table_name, 11, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id ) || ', ' || | |||
| econom.cti_prepare_rapport_calc_indicator(column_name, table_name, 12, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id ) || ', ' || | |||
| econom.cti_prepare_rapport_calc_indicator(column_name, table_name, 13, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id ) || ', ' || | |||
| econom.cti_prepare_rapport_calc_indicator(column_name, table_name, 14, indicateur_id, indicateur_associe_1_id , indicateur_associe_2_id , indicateur_associe_3_id ,indicateur_associe_4_id ,indicateur_associe_5_id ) | |||
| || ']' | |||
| ) | |||
| FROM econom.t_rapports_rubriques | |||
| JOIN econom.t_indicateurs ON t_rapports_rubriques.indicateur_id = t_indicateurs.oid | |||
| WHERE rapport_id = i_rapport_id | |||
| LOOP | |||
| RETURN NEXT row; | |||
| END LOOP; | |||
| RETURN ; | |||
| END; | |||
| @ -0,0 +1,88 @@ | |||
| return: SETOF record | |||
| lang: plpgsql | |||
| parameters: | |||
| p0: | |||
| type: bigint | |||
| name: i_rapport_id | |||
| src: | | |||
| DECLARE | |||
| sqlcmd text; | |||
| temp_cursor refcursor; | |||
| _oid integer; | |||
| _maxind integer; | |||
| row RECORD; | |||
| BEGIN | |||
| FOR row IN | |||
| SELECT * FROM econom.cti_prepare_rapport_indicateurs(i_rapport_id, 'v_contrats_mois_1', '') AS (name text, value text) | |||
| UNION | |||
| SELECT * FROM econom.cti_prepare_rapport_indicateurs(i_rapport_id, 'v_historique_paie_1', '') AS (name text, value text) | |||
| UNION | |||
| SELECT * FROM econom.cti_prepare_rapport_indicateurs(i_rapport_id, 'v_arrets_travail_mois_1', '') AS (name text, value text) | |||
| UNION | |||
| SELECT 'RUBRIQUES_RAPPORT', | |||
| base.cti_group_concat( | |||
| CASE WHEN table_name <> '*CALC' THEN 'SUM(indicateurs[000' || indicateur_id || '])' | |||
| ELSE | |||
| replace( | |||
| replace( | |||
| column_name, | |||
| '[1]', | |||
| 'SUM(indicateurs[000' || indicateur_associe_1_id || '])' | |||
| ), | |||
| '[2]', | |||
| 'SUM(indicateurs[000' || indicateur_associe_2_id || '])' | |||
| ) | |||
| END) | |||
| FROM econom.t_rapports_rubriques | |||
| JOIN econom.t_indicateurs ON t_rapports_rubriques.indicateur_id = t_indicateurs.oid | |||
| WHERE rapport_id = i_rapport_id | |||
| UNION | |||
| SELECT 'IC' || numero_rubrique, t_indicateurs.oid::text FROM econom.t_rapports_rubriques, econom.t_indicateurs | |||
| WHERE t_rapports_rubriques.rapport_id = i_rapport_id AND t_rapports_rubriques.indicateur_id = t_indicateurs.oid | |||
| UNION | |||
| SELECT 'IH' || numero_rubrique, CASE WHEN t_rapports_rubriques.entete <> '' THEN t_rapports_rubriques.entete ELSE t_indicateurs.entete END FROM econom.t_rapports_rubriques, econom.t_indicateurs | |||
| WHERE t_rapports_rubriques.rapport_id = i_rapport_id AND t_rapports_rubriques.indicateur_id = t_indicateurs.oid | |||
| UNION | |||
| SELECT 'IW' || numero_rubrique, | |||
| CASE | |||
| WHEN t_indicateurs.table_name = 'SEP' THEN '2' | |||
| WHEN t_rapports_rubriques.width > 0 THEN t_rapports_rubriques.width::text | |||
| WHEN t_indicateurs.width > 0 THEN t_indicateurs.width::text | |||
| ELSE '80' | |||
| END | |||
| FROM econom.t_rapports_rubriques, econom.t_indicateurs | |||
| WHERE t_rapports_rubriques.rapport_id = i_rapport_id AND t_rapports_rubriques.indicateur_id = t_indicateurs.oid | |||
| UNION | |||
| SELECT 'IO' || numero_rubrique, | |||
| CASE WHEN t_rapports_rubriques.output_format <> '' THEN t_rapports_rubriques.output_format | |||
| WHEN t_indicateurs.output_format <> '' THEN t_indicateurs.output_format | |||
| ELSE '#' END | |||
| FROM econom.t_rapports_rubriques, econom.t_indicateurs | |||
| WHERE t_rapports_rubriques.rapport_id = i_rapport_id AND t_rapports_rubriques.indicateur_id = t_indicateurs.oid | |||
| UNION | |||
| SELECT 'IT' || numero_rubrique, t_indicateurs.table_name::text FROM econom.t_rapports_rubriques, econom.t_indicateurs | |||
| WHERE t_rapports_rubriques.rapport_id = i_rapport_id AND t_rapports_rubriques.indicateur_id = t_indicateurs.oid | |||
| LOOP | |||
| RETURN NEXT row; | |||
| END LOOP; | |||
| RETURN ; | |||
| END; | |||
| @ -0,0 +1,540 @@ | |||
| return: text | |||
| lang: plpgsql | |||
| src: | | |||
| DECLARE | |||
| result TEXT; | |||
| BEGIN | |||
| -- Standard ATC | |||
| INSERT INTO eco.t_classification_atc(code_original, code, texte, texte_court ) | |||
| SELECT code_original || '99XX99', code_original || '99XX99', texte || ' (NON PRECISE)', texte_court || ' (NON PRECISE)' | |||
| FROM eco.t_classification_atc | |||
| WHERE oid <> 0 AND | |||
| length(code) = 1 AND | |||
| code_original || '99XX99' NOT IN (SELECT code FROM eco.t_classification_atc); | |||
| INSERT INTO eco.t_classification_atc(code_original, code, texte, texte_court ) | |||
| SELECT code_original || '99', code_original || '99', texte || ' (NON PRECISE)', texte_court || ' (NON PRECISE)' | |||
| FROM eco.t_classification_atc | |||
| WHERE oid <> 0 AND | |||
| length(code) = 1 AND | |||
| code_original || '99' NOT IN (SELECT code FROM eco.t_classification_atc); | |||
| INSERT INTO eco.t_classification_atc(code_original, code, texte, texte_court ) | |||
| SELECT code_original || '99X', code_original || '99X', texte || ' (NON PRECISE)', texte_court || ' (NON PRECISE)' | |||
| FROM eco.t_classification_atc | |||
| WHERE oid <> 0 AND | |||
| length(code) = 1 AND | |||
| code_original || '99X' NOT IN (SELECT code FROM eco.t_classification_atc); | |||
| INSERT INTO eco.t_classification_atc(code_original, code, texte, texte_court ) | |||
| SELECT code_original || '99XX', code_original || '99XX', texte || ' (NON PRECISE)', texte_court || ' (NON PRECISE)' | |||
| FROM eco.t_classification_atc | |||
| WHERE oid <> 0 AND | |||
| length(code) = 1 AND | |||
| code_original || '99XX' NOT IN (SELECT code FROM eco.t_classification_atc); | |||
| INSERT INTO eco.t_classification_atc(code_original, code, texte, texte_court ) | |||
| SELECT code_original || 'XX99', code_original || 'XX99', texte || ' (NON PRECISE)', texte_court || ' (NON PRECISE)' | |||
| FROM eco.t_classification_atc | |||
| WHERE oid <> 0 AND | |||
| length(code) = 3 AND substr(code,2,1) BETWEEN '0' AND '9' AND | |||
| substr(code,1,1) IN (SELECT code FROM eco.t_classification_atc) AND | |||
| code_original || 'XX99' NOT IN (SELECT code FROM eco.t_classification_atc); | |||
| INSERT INTO eco.t_classification_atc(code_original, code, texte, texte_court ) | |||
| SELECT code_original || 'XX', code_original || 'XX', texte || ' (NON PRECISE)', texte_court || ' (NON PRECISE)' | |||
| FROM eco.t_classification_atc | |||
| WHERE oid <> 0 AND | |||
| length(code) = 3 AND substr(code,2,1) BETWEEN '0' AND '9' AND | |||
| substr(code,1,1) IN (SELECT code FROM eco.t_classification_atc) AND | |||
| code_original || 'XX' NOT IN (SELECT code FROM eco.t_classification_atc); | |||
| INSERT INTO eco.t_classification_atc(code_original, code, texte, texte_court ) | |||
| SELECT code_original || 'X', code_original || 'X', texte || ' (NON PRECISE)', texte_court || ' (NON PRECISE)' | |||
| FROM eco.t_classification_atc | |||
| WHERE oid <> 0 AND | |||
| length(code) = 3 AND substr(code,2,1) BETWEEN '0' AND '9' AND | |||
| substr(code,1,1) IN (SELECT code FROM eco.t_classification_atc) AND | |||
| code_original || 'X' NOT IN (SELECT code FROM eco.t_classification_atc); | |||
| INSERT INTO eco.t_classification_atc(code_original, code, texte, texte_court ) | |||
| SELECT code_original || 'X99', code_original || 'X99', texte || ' (NON PRECISE)', texte_court || ' (NON PRECISE)' | |||
| FROM eco.t_classification_atc | |||
| WHERE oid <> 0 AND | |||
| length(code) = 4 AND substr(code,2,1) BETWEEN '0' AND '9' AND | |||
| substr(code,1,3) IN (SELECT code FROM eco.t_classification_atc) AND | |||
| code_original || 'X99' NOT IN (SELECT code FROM eco.t_classification_atc); | |||
| INSERT INTO eco.t_classification_atc(code_original, code, texte, texte_court ) | |||
| SELECT code_original || 'X', code_original || 'X', texte || ' (NON PRECISE)', texte_court || ' (NON PRECISE)' | |||
| FROM eco.t_classification_atc | |||
| WHERE oid <> 0 AND | |||
| length(code) = 4 AND substr(code,2,1) BETWEEN '0' AND '9' AND | |||
| substr(code,1,3) IN (SELECT code FROM eco.t_classification_atc) AND | |||
| code_original || 'X' NOT IN (SELECT code FROM eco.t_classification_atc); | |||
| INSERT INTO eco.t_classification_atc(code_original, code, texte, texte_court ) | |||
| SELECT code_original || '99', code_original || '99', texte || ' (NON PRECISE)', texte_court || ' (NON PRECISE)' | |||
| FROM eco.t_classification_atc | |||
| WHERE oid <> 0 AND | |||
| length(code) = 5 AND substr(code,2,1) BETWEEN '0' AND '9' AND | |||
| substr(code,1,4) IN (SELECT code FROM eco.t_classification_atc) AND | |||
| code_original || '99' NOT IN (SELECT code FROM eco.t_classification_atc); | |||
| -- Spécial préfixe à deux caractères | |||
| INSERT INTO eco.t_classification_atc(code_original, code, texte, texte_court ) | |||
| SELECT code_original || '99XX99', code_original || '99XX99', texte || ' (NON PRECISE)', texte_court || ' (NON PRECISE)' | |||
| FROM eco.t_classification_atc | |||
| WHERE oid <> 0 AND | |||
| length(code) = 2 AND substr(code,2,1) NOT BETWEEN '0' AND '9' AND | |||
| code_original || '99XX99' NOT IN (SELECT code FROM eco.t_classification_atc); | |||
| INSERT INTO eco.t_classification_atc(code_original, code, texte, texte_court ) | |||
| SELECT code_original || '99', code_original || '99', texte || ' (NON PRECISE)', texte_court || ' (NON PRECISE)' | |||
| FROM eco.t_classification_atc | |||
| WHERE oid <> 0 AND | |||
| length(code) = 2 AND substr(code,2,1) NOT BETWEEN '0' AND '9' AND | |||
| code_original || '99' NOT IN (SELECT code FROM eco.t_classification_atc); | |||
| INSERT INTO eco.t_classification_atc(code_original, code, texte, texte_court ) | |||
| SELECT code_original || '99X', code_original || '99X', texte || ' (NON PRECISE)', texte_court || ' (NON PRECISE)' | |||
| FROM eco.t_classification_atc | |||
| WHERE oid <> 0 AND | |||
| length(code) = 2 AND substr(code,2,1) NOT BETWEEN '0' AND '9' AND | |||
| code_original || '99X' NOT IN (SELECT code FROM eco.t_classification_atc); | |||
| INSERT INTO eco.t_classification_atc(code_original, code, texte, texte_court ) | |||
| SELECT code_original || '99XX', code_original || '99XX', texte || ' (NON PRECISE)', texte_court || ' (NON PRECISE)' | |||
| FROM eco.t_classification_atc | |||
| WHERE oid <> 0 AND | |||
| length(code) = 2 AND substr(code,2,1) NOT BETWEEN '0' AND '9' AND | |||
| code_original || '99XX' NOT IN (SELECT code FROM eco.t_classification_atc); | |||
| INSERT INTO eco.t_classification_atc(code_original, code, texte, texte_court ) | |||
| SELECT code_original || 'XX99', code_original || 'XX99', texte || ' (NON PRECISE)', texte_court || ' (NON PRECISE)' | |||
| FROM eco.t_classification_atc | |||
| WHERE oid <> 0 AND | |||
| length(code) = 4 AND substr(code,2,1) NOT BETWEEN '0' AND '9' AND | |||
| substr(code,1,2) IN (SELECT code FROM eco.t_classification_atc) AND | |||
| code_original || 'XX99' NOT IN (SELECT code FROM eco.t_classification_atc); | |||
| INSERT INTO eco.t_classification_atc(code_original, code, texte, texte_court ) | |||
| SELECT code_original || 'XX', code_original || 'XX', texte || ' (NON PRECISE)', texte_court || ' (NON PRECISE)' | |||
| FROM eco.t_classification_atc | |||
| WHERE oid <> 0 AND | |||
| length(code) = 4 AND substr(code,2,1) NOT BETWEEN '0' AND '9' AND | |||
| substr(code,1,2) IN (SELECT code FROM eco.t_classification_atc) AND | |||
| code_original || 'XX' NOT IN (SELECT code FROM eco.t_classification_atc); | |||
| INSERT INTO eco.t_classification_atc(code_original, code, texte, texte_court ) | |||
| SELECT code_original || 'X', code_original || 'X', texte || ' (NON PRECISE)', texte_court || ' (NON PRECISE)' | |||
| FROM eco.t_classification_atc | |||
| WHERE oid <> 0 AND | |||
| length(code) = 4 AND substr(code,2,1) NOT BETWEEN '0' AND '9' AND | |||
| substr(code,1,2) IN (SELECT code FROM eco.t_classification_atc) AND | |||
| code_original || 'X' NOT IN (SELECT code FROM eco.t_classification_atc); | |||
| INSERT INTO eco.t_classification_atc(code_original, code, texte, texte_court ) | |||
| SELECT code_original || 'X99', code_original || 'X99', texte || ' (NON PRECISE)', texte_court || ' (NON PRECISE)' | |||
| FROM eco.t_classification_atc | |||
| WHERE oid <> 0 AND | |||
| length(code) = 5 AND substr(code,2,1) NOT BETWEEN '0' AND '9' AND | |||
| substr(code,1,4) IN (SELECT code FROM eco.t_classification_atc) AND | |||
| code_original || 'X99' NOT IN (SELECT code FROM eco.t_classification_atc); | |||
| INSERT INTO eco.t_classification_atc(code_original, code, texte, texte_court ) | |||
| SELECT code_original || 'X', code_original || 'X', texte || ' (NON PRECISE)', texte_court || ' (NON PRECISE)' | |||
| FROM eco.t_classification_atc | |||
| WHERE oid <> 0 AND | |||
| length(code) = 5 AND substr(code,2,1) NOT BETWEEN '0' AND '9' AND | |||
| substr(code,1,4) IN (SELECT code FROM eco.t_classification_atc) AND | |||
| code_original || 'X' NOT IN (SELECT code FROM eco.t_classification_atc); | |||
| INSERT INTO eco.t_classification_atc(code_original, code, texte, texte_court ) | |||
| SELECT code_original || '99', code_original || '99', texte || ' (NON PRECISE)', texte_court || ' (NON PRECISE)' | |||
| FROM eco.t_classification_atc | |||
| WHERE oid <> 0 AND | |||
| length(code) = 6 AND substr(code,2,1) NOT BETWEEN '0' AND '9' AND | |||
| substr(code,1,5) IN (SELECT code FROM eco.t_classification_atc) AND | |||
| code_original || '99' NOT IN (SELECT code FROM eco.t_classification_atc); | |||
| -- compléments | |||
| UPDATE eco.t_classification_atc SET | |||
| texte = trim(replace(texte,'(NON PRECISE)','')), | |||
| texte_court = trim(replace(texte,'(NON PRECISE)','')) | |||
| WHERE code like 'Z%' AND texte like '%(NON PRECISE)%'; | |||
| UPDATE eco.t_classification_atc SET | |||
| classification_atc_1_id = t_classification_atc_1.oid, | |||
| classification_atc_1_code = t_classification_atc_1.code, | |||
| classification_atc_1_texte = t_classification_atc_1.texte | |||
| FROM eco.t_classification_atc t_classification_atc_1 | |||
| WHERE t_classification_atc.oid <> 0 AND | |||
| substr(t_classification_atc.code,1,1) = t_classification_atc_1.code AND | |||
| substr(t_classification_atc.code,2,1) BETWEEN '0' AND '9' AND | |||
| ( | |||
| t_classification_atc.classification_atc_1_id IS DISTINCT FROM t_classification_atc_1.oid OR | |||
| t_classification_atc.classification_atc_1_code IS DISTINCT FROM t_classification_atc_1.code OR | |||
| t_classification_atc.classification_atc_1_texte IS DISTINCT FROM t_classification_atc_1.texte | |||
| ); | |||
| UPDATE eco.t_classification_atc SET | |||
| classification_atc_1_id = t_classification_atc_1.oid, | |||
| classification_atc_1_code = t_classification_atc_1.code, | |||
| classification_atc_1_texte = t_classification_atc_1.texte | |||
| FROM eco.t_classification_atc t_classification_atc_1 | |||
| WHERE t_classification_atc.oid <> 0 AND | |||
| substr(t_classification_atc.code,1,2) = t_classification_atc_1.code AND | |||
| substr(t_classification_atc.code,2,1) NOT BETWEEN '0' AND '9' AND | |||
| ( | |||
| t_classification_atc.classification_atc_1_id IS DISTINCT FROM t_classification_atc_1.oid OR | |||
| t_classification_atc.classification_atc_1_code IS DISTINCT FROM t_classification_atc_1.code OR | |||
| t_classification_atc.classification_atc_1_texte IS DISTINCT FROM t_classification_atc_1.texte | |||
| ); | |||
| UPDATE eco.t_classification_atc SET | |||
| classification_atc_1_id = t_classification_atc_1.oid, | |||
| classification_atc_1_code = t_classification_atc_1.code, | |||
| classification_atc_1_texte = t_classification_atc_1.texte | |||
| FROM eco.t_classification_atc t_classification_atc_1 | |||
| WHERE t_classification_atc.oid <> 0 AND | |||
| t_classification_atc_1.code = 'X' AND COALESCE(t_classification_atc.classification_atc_1_id,0) = 0 AND | |||
| ( | |||
| t_classification_atc.classification_atc_1_id IS DISTINCT FROM t_classification_atc_1.oid OR | |||
| t_classification_atc.classification_atc_1_code IS DISTINCT FROM t_classification_atc_1.code OR | |||
| t_classification_atc.classification_atc_1_texte IS DISTINCT FROM t_classification_atc_1.texte | |||
| ); | |||
| UPDATE eco.t_classification_atc SET | |||
| classification_atc_1_code = t_classification_atc_1.code, | |||
| classification_atc_1_texte = t_classification_atc_1.texte | |||
| FROM eco.t_classification_atc t_classification_atc_1 | |||
| WHERE t_classification_atc.classification_atc_1_id = t_classification_atc_1.oid AND | |||
| ( | |||
| t_classification_atc.classification_atc_1_code IS DISTINCT FROM t_classification_atc_1.code OR | |||
| t_classification_atc.classification_atc_1_texte IS DISTINCT FROM t_classification_atc_1.texte | |||
| ); | |||
| UPDATE eco.t_classification_atc SET | |||
| classification_atc_2_id = t_classification_atc_1.oid, | |||
| classification_atc_2_code = t_classification_atc_1.code, | |||
| classification_atc_2_texte = t_classification_atc_1.texte | |||
| FROM eco.t_classification_atc t_classification_atc_1 | |||
| WHERE t_classification_atc.oid <> 0 AND | |||
| substr(t_classification_atc.code,1,3) = t_classification_atc_1.code AND | |||
| substr(t_classification_atc.code,2,1) BETWEEN '0' AND '9' AND | |||
| length(t_classification_atc.code) >= 3 AND | |||
| ( | |||
| t_classification_atc.classification_atc_2_id IS DISTINCT FROM t_classification_atc_1.oid OR | |||
| t_classification_atc.classification_atc_2_code IS DISTINCT FROM t_classification_atc_1.code OR | |||
| t_classification_atc.classification_atc_2_texte IS DISTINCT FROM t_classification_atc_1.texte | |||
| ); | |||
| UPDATE eco.t_classification_atc SET | |||
| classification_atc_2_id = t_classification_atc_1.oid, | |||
| classification_atc_2_code = t_classification_atc_1.code, | |||
| classification_atc_2_texte = t_classification_atc_1.texte | |||
| FROM eco.t_classification_atc t_classification_atc_1 | |||
| WHERE t_classification_atc.oid <> 0 AND | |||
| substr(t_classification_atc.code,1,4) = t_classification_atc_1.code AND | |||
| substr(t_classification_atc.code,2,1) NOT BETWEEN '0' AND '9' AND | |||
| length(t_classification_atc.code) >= 4 AND | |||
| ( | |||
| t_classification_atc.classification_atc_2_id IS DISTINCT FROM t_classification_atc_1.oid OR | |||
| t_classification_atc.classification_atc_2_code IS DISTINCT FROM t_classification_atc_1.code OR | |||
| t_classification_atc.classification_atc_2_texte IS DISTINCT FROM t_classification_atc_1.texte | |||
| ); | |||
| UPDATE eco.t_classification_atc SET | |||
| classification_atc_2_id = t_classification_atc_1.oid, | |||
| classification_atc_2_code = t_classification_atc_1.code, | |||
| classification_atc_2_texte = t_classification_atc_1.texte | |||
| FROM eco.t_classification_atc t_classification_atc_1 | |||
| WHERE t_classification_atc.oid <> 0 AND | |||
| t_classification_atc_1.code = t_classification_atc.classification_atc_1_code || '99' AND COALESCE(t_classification_atc.classification_atc_2_id,0) = 0 AND | |||
| ( | |||
| t_classification_atc.classification_atc_2_id IS DISTINCT FROM t_classification_atc_1.oid OR | |||
| t_classification_atc.classification_atc_2_code IS DISTINCT FROM t_classification_atc_1.code OR | |||
| t_classification_atc.classification_atc_2_texte IS DISTINCT FROM t_classification_atc_1.texte | |||
| ); | |||
| UPDATE eco.t_classification_atc SET | |||
| classification_atc_2_code = t_classification_atc_1.code, | |||
| classification_atc_2_texte = t_classification_atc_1.texte | |||
| FROM eco.t_classification_atc t_classification_atc_1 | |||
| WHERE t_classification_atc.classification_atc_2_id = t_classification_atc_1.oid AND | |||
| ( | |||
| t_classification_atc.classification_atc_2_code IS DISTINCT FROM t_classification_atc_1.code OR | |||
| t_classification_atc.classification_atc_2_texte IS DISTINCT FROM t_classification_atc_1.texte | |||
| ); | |||
| UPDATE eco.t_classification_atc SET | |||
| classification_atc_3_id = t_classification_atc_1.oid, | |||
| classification_atc_3_code = t_classification_atc_1.code, | |||
| classification_atc_3_texte = t_classification_atc_1.texte | |||
| FROM eco.t_classification_atc t_classification_atc_1 | |||
| WHERE t_classification_atc.oid <> 0 AND | |||
| substr(t_classification_atc.code,1,4) = t_classification_atc_1.code AND | |||
| substr(t_classification_atc.code,2,1) BETWEEN '0' AND '9' AND | |||
| length(t_classification_atc.code) >= 4 AND | |||
| ( | |||
| t_classification_atc.classification_atc_3_id IS DISTINCT FROM t_classification_atc_1.oid OR | |||
| t_classification_atc.classification_atc_3_code IS DISTINCT FROM t_classification_atc_1.code OR | |||
| t_classification_atc.classification_atc_3_texte IS DISTINCT FROM t_classification_atc_1.texte | |||
| ); | |||
| UPDATE eco.t_classification_atc SET | |||
| classification_atc_3_id = t_classification_atc_1.oid, | |||
| classification_atc_3_code = t_classification_atc_1.code, | |||
| classification_atc_3_texte = t_classification_atc_1.texte | |||
| FROM eco.t_classification_atc t_classification_atc_1 | |||
| WHERE t_classification_atc.oid <> 0 AND | |||
| substr(t_classification_atc.code,1,5) = t_classification_atc_1.code AND | |||
| substr(t_classification_atc.code,2,1) NOT BETWEEN '0' AND '9' AND | |||
| length(t_classification_atc.code) >= 5 AND | |||
| ( | |||
| t_classification_atc.classification_atc_3_id IS DISTINCT FROM t_classification_atc_1.oid OR | |||
| t_classification_atc.classification_atc_3_code IS DISTINCT FROM t_classification_atc_1.code OR | |||
| t_classification_atc.classification_atc_3_texte IS DISTINCT FROM t_classification_atc_1.texte | |||
| ); | |||
| UPDATE eco.t_classification_atc SET | |||
| classification_atc_3_id = t_classification_atc_1.oid, | |||
| classification_atc_3_code = t_classification_atc_1.code, | |||
| classification_atc_3_texte = t_classification_atc_1.texte | |||
| FROM eco.t_classification_atc t_classification_atc_1 | |||
| WHERE t_classification_atc.oid <> 0 AND | |||
| t_classification_atc_1.code = t_classification_atc.classification_atc_2_code || 'X' AND COALESCE(t_classification_atc.classification_atc_3_id,0) = 0 AND | |||
| ( | |||
| t_classification_atc.classification_atc_3_id IS DISTINCT FROM t_classification_atc_1.oid OR | |||
| t_classification_atc.classification_atc_3_code IS DISTINCT FROM t_classification_atc_1.code OR | |||
| t_classification_atc.classification_atc_3_texte IS DISTINCT FROM t_classification_atc_1.texte | |||
| ); | |||
| UPDATE eco.t_classification_atc SET | |||
| classification_atc_3_code = t_classification_atc_1.code, | |||
| classification_atc_3_texte = t_classification_atc_1.texte | |||
| FROM eco.t_classification_atc t_classification_atc_1 | |||
| WHERE t_classification_atc.classification_atc_3_id = t_classification_atc_1.oid AND | |||
| ( | |||
| t_classification_atc.classification_atc_3_code IS DISTINCT FROM t_classification_atc_1.code OR | |||
| t_classification_atc.classification_atc_3_texte IS DISTINCT FROM t_classification_atc_1.texte | |||
| ); | |||
| UPDATE eco.t_classification_atc SET | |||
| classification_atc_4_id = t_classification_atc_1.oid, | |||
| classification_atc_4_code = t_classification_atc_1.code, | |||
| classification_atc_4_texte = t_classification_atc_1.texte | |||
| FROM eco.t_classification_atc t_classification_atc_1 | |||
| WHERE t_classification_atc.oid <> 0 AND | |||
| substr(t_classification_atc.code,2,1) BETWEEN '0' AND '9' AND | |||
| substr(t_classification_atc.code,1,5) = t_classification_atc_1.code AND | |||
| length(t_classification_atc.code) >= 5 AND | |||
| ( | |||
| t_classification_atc.classification_atc_4_id IS DISTINCT FROM t_classification_atc_1.oid OR | |||
| t_classification_atc.classification_atc_4_code IS DISTINCT FROM t_classification_atc_1.code OR | |||
| t_classification_atc.classification_atc_4_texte IS DISTINCT FROM t_classification_atc_1.texte | |||
| ); | |||
| UPDATE eco.t_classification_atc SET | |||
| classification_atc_4_id = t_classification_atc_1.oid, | |||
| classification_atc_4_code = t_classification_atc_1.code, | |||
| classification_atc_4_texte = t_classification_atc_1.texte | |||
| FROM eco.t_classification_atc t_classification_atc_1 | |||
| WHERE t_classification_atc.oid <> 0 AND | |||
| substr(t_classification_atc.code,2,1) NOT BETWEEN '0' AND '9' AND | |||
| substr(t_classification_atc.code,1,6) = t_classification_atc_1.code AND | |||
| length(t_classification_atc.code) >= 6 AND | |||
| ( | |||
| t_classification_atc.classification_atc_4_id IS DISTINCT FROM t_classification_atc_1.oid OR | |||
| t_classification_atc.classification_atc_4_code IS DISTINCT FROM t_classification_atc_1.code OR | |||
| t_classification_atc.classification_atc_4_texte IS DISTINCT FROM t_classification_atc_1.texte | |||
| ); | |||
| UPDATE eco.t_classification_atc SET | |||
| classification_atc_4_id = t_classification_atc_1.oid, | |||
| classification_atc_4_code = t_classification_atc_1.code, | |||
| classification_atc_4_texte = t_classification_atc_1.texte | |||
| FROM eco.t_classification_atc t_classification_atc_1 | |||
| WHERE t_classification_atc.oid <> 0 AND | |||
| t_classification_atc_1.code = t_classification_atc.classification_atc_3_code || 'X' AND COALESCE(t_classification_atc.classification_atc_4_id,0) = 0 AND | |||
| ( | |||
| t_classification_atc.classification_atc_4_id IS DISTINCT FROM t_classification_atc_1.oid OR | |||
| t_classification_atc.classification_atc_4_code IS DISTINCT FROM t_classification_atc_1.code OR | |||
| t_classification_atc.classification_atc_4_texte IS DISTINCT FROM t_classification_atc_1.texte | |||
| ); | |||
| UPDATE eco.t_classification_atc SET | |||
| classification_atc_4_code = t_classification_atc_1.code, | |||
| classification_atc_4_texte = t_classification_atc_1.texte | |||
| FROM eco.t_classification_atc t_classification_atc_1 | |||
| WHERE t_classification_atc.classification_atc_4_id = t_classification_atc_1.oid AND | |||
| ( | |||
| t_classification_atc.classification_atc_4_code IS DISTINCT FROM t_classification_atc_1.code OR | |||
| t_classification_atc.classification_atc_4_texte IS DISTINCT FROM t_classification_atc_1.texte | |||
| ); | |||
| UPDATE eco.t_classification_atc SET | |||
| classification_atc_1_id = oid, | |||
| classification_atc_1_code = code, | |||
| classification_atc_1_texte = texte_court, | |||
| classification_atc_2_id = oid, | |||
| classification_atc_2_code = code, | |||
| classification_atc_2_texte = texte_court, | |||
| classification_atc_3_id = oid, | |||
| classification_atc_3_code = code, | |||
| classification_atc_3_texte = texte_court, | |||
| classification_atc_4_id = oid, | |||
| classification_atc_4_code = code, | |||
| classification_atc_4_texte = texte_court | |||
| WHERE | |||
| ( | |||
| classification_atc_1_code = 'X' AND code NOT LIKE 'X%' OR | |||
| classification_atc_1_id = 0 OR | |||
| classification_atc_1_id IS NULL | |||
| ) | |||
| AND | |||
| (classification_atc_1_id IS DISTINCT FROM oid OR | |||
| classification_atc_1_code IS DISTINCT FROM code OR | |||
| classification_atc_1_texte IS DISTINCT FROM texte_court OR | |||
| classification_atc_2_id IS DISTINCT FROM oid OR | |||
| classification_atc_2_code IS DISTINCT FROM code OR | |||
| classification_atc_2_texte IS DISTINCT FROM texte_court OR | |||
| classification_atc_3_id IS DISTINCT FROM oid OR | |||
| classification_atc_3_code IS DISTINCT FROM code OR | |||
| classification_atc_3_texte IS DISTINCT FROM texte_court OR | |||
| classification_atc_4_id IS DISTINCT FROM oid OR | |||
| classification_atc_4_code IS DISTINCT FROM code OR | |||
| classification_atc_4_texte IS DISTINCT FROM texte_court | |||
| ) | |||
| ; | |||
| -- Ventilation ATC/CLADIMED | |||
| UPDATE eco.t_classification_atc SET | |||
| est_atc = subview.est_atc, | |||
| est_cladimed = subview.est_cladimed | |||
| FROM | |||
| (SELECT substr(t_classification_atc.code,1,1) AS code, MAX(est_atc) AS est_atc, MAX(est_cladimed) AS est_cladimed | |||
| FROM eco.t_classification_atc | |||
| WHERE oid <> 0 | |||
| GROUP BY 1 | |||
| ORDER BY 1 | |||
| ) subview | |||
| WHERE substr(t_classification_atc.code,2,6) = '99' AND | |||
| substr(t_classification_atc.code,1,1) = subview.code AND | |||
| ( | |||
| t_classification_atc.est_atc IS DISTINCT FROM subview.est_atc OR | |||
| t_classification_atc.est_cladimed IS DISTINCT FROM subview.est_cladimed | |||
| ) | |||
| ; | |||
| UPDATE eco.t_classification_atc SET | |||
| est_atc = subview.est_atc, | |||
| est_cladimed = subview.est_cladimed | |||
| FROM | |||
| (SELECT substr(t_classification_atc.code,1,3) AS code, MAX(est_atc) AS est_atc, MAX(est_cladimed) AS est_cladimed | |||
| FROM eco.t_classification_atc | |||
| WHERE oid <> 0 | |||
| GROUP BY 1 | |||
| ORDER BY 1 | |||
| ) subview | |||
| WHERE substr(t_classification_atc.code,4,4) = 'X' AND | |||
| substr(t_classification_atc.code,1,3) = subview.code AND | |||
| ( | |||
| t_classification_atc.est_atc IS DISTINCT FROM subview.est_atc OR | |||
| t_classification_atc.est_cladimed IS DISTINCT FROM subview.est_cladimed | |||
| ) | |||
| ; | |||
| UPDATE eco.t_classification_atc SET | |||
| est_atc = subview.est_atc, | |||
| est_cladimed = subview.est_cladimed | |||
| FROM | |||
| (SELECT substr(t_classification_atc.code,1,4) AS code, MAX(est_atc) AS est_atc, MAX(est_cladimed) AS est_cladimed | |||
| FROM eco.t_classification_atc | |||
| WHERE oid <> 0 | |||
| GROUP BY 1 | |||
| ORDER BY 1 | |||
| ) subview | |||
| WHERE substr(t_classification_atc.code,5,3) = 'X' AND | |||
| substr(t_classification_atc.code,1,4) = subview.code AND | |||
| ( | |||
| t_classification_atc.est_atc IS DISTINCT FROM subview.est_atc OR | |||
| t_classification_atc.est_cladimed IS DISTINCT FROM subview.est_cladimed | |||
| ) | |||
| ; | |||
| UPDATE eco.t_classification_atc SET | |||
| est_atc = subview.est_atc, | |||
| est_cladimed = subview.est_cladimed | |||
| FROM | |||
| (SELECT substr(t_classification_atc.code,1,5) AS code, MAX(est_atc) AS est_atc, MAX(est_cladimed) AS est_cladimed | |||
| FROM eco.t_classification_atc | |||
| WHERE oid <> 0 | |||
| GROUP BY 1 | |||
| ORDER BY 1 | |||
| ) subview | |||
| WHERE substr(t_classification_atc.code,6,2) = 'XX' AND | |||
| substr(t_classification_atc.code,1,5) = subview.code AND | |||
| ( | |||
| t_classification_atc.est_atc IS DISTINCT FROM subview.est_atc OR | |||
| t_classification_atc.est_cladimed IS DISTINCT FROM subview.est_cladimed | |||
| ) | |||
| ; | |||
| -- Atc dans articles selon ucd | |||
| UPDATE eco.t_articles SET | |||
| classification_atc_id = t_classification_atc.oid | |||
| FROM base.t_ucd | |||
| JOIN base.t_classification_atc t_classification_atc_base ON t_ucd.classification_atc_id = t_classification_atc_base.oid | |||
| JOIN eco.t_classification_atc ON t_classification_atc_base.code = t_classification_atc.code | |||
| WHERE t_articles.ucd_id = t_ucd.oid AND | |||
| t_articles.ucd_id <> 0 AND | |||
| t_classification_atc.oid <> 0 AND | |||
| ( | |||
| t_articles.classification_atc_id IS DISTINCT FROM t_classification_atc.oid | |||
| ) | |||
| ; | |||
| -- UPDATE eco.t_articles SET | |||
| -- classification_atc_id = 0 | |||
| -- WHERE ucd_id = 0 AND | |||
| -- lpp_id = 0 AND | |||
| -- classification_atc_id <> 0 | |||
| -- ; | |||
| -- Les articles sans ATC sont affectés à Z99XX99 (Verrouillé en attendant alanyse : ELA) | |||
| UPDATE eco.t_articles SET | |||
| classification_atc_id = t_classification_atc.oid | |||
| FROM eco.t_classification_atc | |||
| WHERE 1<>1 AND | |||
| (ucd_id <> 0 OR lpp_id <> 0) AND | |||
| classification_atc_id = 0 AND | |||
| t_classification_atc.code = 'Z99XX99' AND | |||
| ( | |||
| t_articles.classification_atc_id IS DISTINCT FROM t_classification_atc.oid | |||
| ) | |||
| ; | |||
| UPDATE eco.t_articles SET | |||
| classification_atc_id = 0 | |||
| WHERE classification_atc_id IN (SELECT oid FROM eco.t_classification_atc WHERE code LIKE 'Z99%') | |||
| ; | |||
| UPDATE eco.t_articles SET | |||
| 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 | |||
| FROM eco.t_classification_atc | |||
| WHERE t_articles.classification_atc_id = t_classification_atc.oid AND | |||
| ( | |||
| 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 | |||
| ); | |||
| RETURN 'OK'; | |||
| END; | |||
| @ -0,0 +1,94 @@ | |||
| return: text | |||
| lang: plpgsql | |||
| src: | | |||
| DECLARE | |||
| result TEXT; | |||
| _module_pmsimco TEXT; | |||
| BEGIN | |||
| -- Fusion des fournisseurs | |||
| UPDATE eco.p_commandes SET | |||
| fournisseur_id = fusionner_vers_fournisseur_id | |||
| FROM eco.t_fournisseurs | |||
| WHERE p_commandes.fournisseur_id = t_fournisseurs.oid AND | |||
| fusionner_vers_fournisseur_id <> 0 AND | |||
| fusionner_vers_fournisseur_id IS NOT NULL | |||
| ; | |||
| UPDATE eco.p_commandes SET | |||
| fournisseur_distributeur_id = fusionner_vers_fournisseur_id | |||
| FROM eco.t_fournisseurs | |||
| WHERE p_commandes.fournisseur_distributeur_id = t_fournisseurs.oid AND | |||
| fusionner_vers_fournisseur_id <> 0 AND | |||
| fusionner_vers_fournisseur_id IS NOT NULL | |||
| ; | |||
| UPDATE eco.p_lignes_commandes SET | |||
| fournisseur_distributeur_id = fusionner_vers_fournisseur_id | |||
| FROM eco.t_fournisseurs | |||
| WHERE p_lignes_commandes.fournisseur_distributeur_id = t_fournisseurs.oid AND | |||
| fusionner_vers_fournisseur_id <> 0 AND | |||
| fusionner_vers_fournisseur_id IS NOT NULL | |||
| ; | |||
| UPDATE eco.p_mouvements_articles SET | |||
| fournisseur_id = fusionner_vers_fournisseur_id | |||
| FROM eco.t_fournisseurs | |||
| WHERE p_mouvements_articles.fournisseur_id = t_fournisseurs.oid AND | |||
| fusionner_vers_fournisseur_id <> 0 AND | |||
| fusionner_vers_fournisseur_id IS NOT NULL | |||
| ; | |||
| UPDATE eco.p_facture SET | |||
| fournisseur_id = fusionner_vers_fournisseur_id | |||
| FROM eco.t_fournisseurs | |||
| WHERE p_facture.fournisseur_id = t_fournisseurs.oid AND | |||
| fusionner_vers_fournisseur_id <> 0 AND | |||
| fusionner_vers_fournisseur_id IS NOT NULL | |||
| ; | |||
| UPDATE eco.t_profils SET | |||
| fournisseur_id = fusionner_vers_fournisseur_id | |||
| FROM eco.t_fournisseurs | |||
| WHERE t_profils.fournisseur_id = t_fournisseurs.oid AND | |||
| fusionner_vers_fournisseur_id <> 0 AND | |||
| fusionner_vers_fournisseur_id IS NOT NULL | |||
| ; | |||
| UPDATE eco.t_articles | |||
| SET fournisseur_principal_id = fusionner_vers_fournisseur_id | |||
| FROM eco.t_fournisseurs | |||
| WHERE t_articles.fournisseur_principal_id = t_fournisseurs.oid AND | |||
| fusionner_vers_fournisseur_id <> 0 AND | |||
| fusionner_vers_fournisseur_id IS NOT NULL | |||
| ; | |||
| UPDATE eco.t_article_fournisseur | |||
| SET fournisseur_id = fusionner_vers_fournisseur_id | |||
| FROM eco.t_fournisseurs | |||
| WHERE t_article_fournisseur.fournisseur_id = t_fournisseurs.oid AND | |||
| fusionner_vers_fournisseur_id <> 0 AND | |||
| fusionner_vers_fournisseur_id IS NOT NULL AND | |||
| (t_article_fournisseur.article_id::text||'-'||fusionner_vers_fournisseur_id::text) NOT IN (SELECT (t_article_fournisseur2.article_id::text||'-'||t_article_fournisseur2.fournisseur_id::text) FROM eco.t_article_fournisseur t_article_fournisseur2) | |||
| ; | |||
| UPDATE eco.t_article_fournisseur | |||
| SET fournisseur_distributeur_id = fusionner_vers_fournisseur_id | |||
| FROM eco.t_fournisseurs | |||
| WHERE t_article_fournisseur.fournisseur_distributeur_id = t_fournisseurs.oid AND | |||
| fusionner_vers_fournisseur_id <> 0 AND | |||
| fusionner_vers_fournisseur_id IS NOT NULL | |||
| ; | |||
| DELETE | |||
| FROM eco.p_oids | |||
| WHERE code_table = 'fournisseurs' AND | |||
| oid IN (SELECT t_fournisseurs.oid FROM eco.t_fournisseurs WHERE fusionner_vers_fournisseur_id <> 0 AND fusionner_vers_fournisseur_id IS NOT NULL) | |||
| ; | |||
| RETURN 'OK'; | |||
| END; | |||
| @ -0,0 +1,454 @@ | |||
| return: text | |||
| lang: plpgsql | |||
| src: | | |||
| DECLARE | |||
| sqlcmd text; | |||
| def_cursor refcursor; | |||
| _schemaname text; | |||
| result TEXT; | |||
| BEGIN | |||
| -- Types d'articles | |||
| DROP TABLE IF EXISTS w_indicateur_condition; | |||
| CREATE TEMP TABLE w_indicateur_condition AS | |||
| SELECT | |||
| 'CTI_TYPEARTICLE#'::text || v_source.oid::text AS code, 'Type article'::text AS table_texte, 'TYA'::text AS table_code, | |||
| v_source.texte AS texte, | |||
| v_source.texte AS texte_court, | |||
| 'type_article_id'::text AS column_name, | |||
| v_source.oid AS value, | |||
| 'TYPE_ARTICLE='||v_source.oid AS view_select_rule, | |||
| ARRAY['9'::text, COALESCE('DT#'||t_source.code,v_source.texte)]::text[] AS arbre_code, | |||
| ARRAY['Valeurs', v_source.texte]::text[] AS arbre_texte | |||
| FROM eco.v_types_articles_1 v_source | |||
| LEFT JOIN eco.t_types_articles t_source ON v_source.oid LIKE 'DT%' AND t_source.oid = substr(v_source.oid,3) | |||
| WHERE v_source.oid NOT LIKE 'LC%' AND | |||
| v_source.oid <> 'DT0' AND | |||
| v_source.oid NOT LIKE '-%' | |||
| ; | |||
| -- Categorie Articles | |||
| INSERT INTO w_indicateur_condition | |||
| SELECT | |||
| 'CTI_CATARTICLE#' || v_source.oid::text AS code, 'Catégorie article' AS table_texte, 'CAA' AS table_code, | |||
| v_source.texte AS texte, | |||
| v_source.texte AS texte_court, | |||
| 'categorie_article_id'::text AS column_name, | |||
| v_source.oid AS value, | |||
| 'CATEGORIE_ARTICLE='||v_source.oid AS view_select_rule, | |||
| ARRAY['9'::text, COALESCE('DT#'||t_source.code,v_source.texte)] AS arbre_code, | |||
| ARRAY['Valeurs', v_source.texte] AS arbre_texte | |||
| FROM eco.v_categories_articles_1 v_source | |||
| LEFT JOIN eco.t_categories_articles t_source ON v_source.oid LIKE 'DT%' AND t_source.oid = substr(v_source.oid,3) | |||
| WHERE v_source.oid NOT LIKE 'LC%' AND | |||
| v_source.oid <> 'DT0' AND | |||
| v_source.oid NOT LIKE '-%' | |||
| ; | |||
| -- Famille Articles | |||
| INSERT INTO w_indicateur_condition | |||
| SELECT | |||
| 'CTI_FAMARTICLE#' || v_source.oid::text AS code, 'Famille article' AS table_texte, 'FAA' AS table_code, | |||
| v_source.texte AS texte, | |||
| v_source.texte AS texte_court, | |||
| 'famille_article_id'::text AS column_name, | |||
| v_source.oid AS value, | |||
| 'FAMILLE_ARTICLE='||v_source.oid AS view_select_rule, | |||
| ARRAY['9'::text, COALESCE('DT#'||t_source.code,v_source.texte)] AS arbre_code, | |||
| ARRAY['Valeurs', v_source.texte] AS arbre_texte | |||
| FROM eco.v_familles_articles_1 v_source | |||
| LEFT JOIN eco.t_familles_articles t_source ON v_source.oid LIKE 'DT%' AND t_source.oid = substr(v_source.oid,3) | |||
| WHERE v_source.oid NOT LIKE 'LC%' AND | |||
| v_source.oid <> 'DT0' AND | |||
| v_source.oid NOT LIKE '-%' | |||
| ; | |||
| -- Articles | |||
| INSERT INTO w_indicateur_condition | |||
| SELECT | |||
| 'CTI_ARTICLE#' || v_source.oid::text AS code, 'Article' AS table_texte, 'ART' AS table_code, | |||
| v_source.texte AS texte, | |||
| v_source.texte AS texte_court, | |||
| 'article_id'::text AS column_name, | |||
| v_source.oid AS value, | |||
| 'ARTICLE='||v_source.oid AS view_select_rule, | |||
| ARRAY['9'::text, COALESCE('DT#'||t_source.code,v_source.texte)] AS arbre_code, | |||
| ARRAY['Valeurs', v_source.texte] AS arbre_texte | |||
| FROM eco.v_articles_1 v_source | |||
| LEFT JOIN eco.t_articles t_source ON v_source.oid LIKE 'DT%' AND t_source.oid = substr(v_source.oid,3) | |||
| WHERE v_source.oid NOT LIKE 'LC%' AND | |||
| v_source.oid NOT LIKE 'DT%' AND | |||
| v_source.oid <> 'DT0' AND | |||
| v_source.oid NOT LIKE '-%' | |||
| ; | |||
| -- Fournisseurs | |||
| INSERT INTO w_indicateur_condition | |||
| SELECT | |||
| 'CTI_FOURNISSEUR#' || v_source.oid::text AS code, 'Fournisseur' AS table_texte, 'FOU' AS table_code, | |||
| v_source.texte AS texte, | |||
| v_source.texte AS texte_court, | |||
| 'fournisseur_id'::text AS column_name, | |||
| v_source.oid AS value, | |||
| 'FOURNISSEUR='||v_source.oid AS view_select_rule, | |||
| ARRAY['9'::text, COALESCE('DT#'||t_source.code,v_source.texte)] AS arbre_code, | |||
| ARRAY['Valeurs', v_source.texte] AS arbre_texte | |||
| FROM eco.v_fournisseurs_1 v_source | |||
| LEFT JOIN eco.t_fournisseurs t_source ON v_source.oid LIKE 'DT%' AND t_source.oid = substr(v_source.oid,3) | |||
| WHERE v_source.oid NOT LIKE 'LC%' AND | |||
| v_source.oid NOT LIKE 'DT%' AND | |||
| v_source.oid <> 'DT0' AND | |||
| v_source.oid NOT LIKE '-%' | |||
| ; | |||
| -- Types mouvement | |||
| INSERT INTO w_indicateur_condition | |||
| SELECT | |||
| 'CTI_TYPEMOUVEMENT#' || v_source.oid::text AS code, 'Type mvt' AS table_texte, 'TYM' AS table_code, | |||
| v_source.texte AS texte, | |||
| v_source.texte AS texte_court, | |||
| 'type_mouvement_id'::text AS column_name, | |||
| v_source.oid AS value, | |||
| 'TYPE_MOUVEMENT='||v_source.oid AS view_select_rule, | |||
| ARRAY['9'::text, COALESCE('DT#'||t_source.code,v_source.texte)] AS arbre_code, | |||
| ARRAY['Valeurs', v_source.texte] AS arbre_texte | |||
| FROM eco.v_types_mouvements_1 v_source | |||
| LEFT JOIN eco.t_types_mouvements t_source ON v_source.oid LIKE 'DT%' AND t_source.oid = substr(v_source.oid,3) | |||
| WHERE v_source.oid NOT LIKE 'LC%' AND | |||
| v_source.oid <> 'DT0' AND | |||
| v_source.oid NOT LIKE '-%' | |||
| ; | |||
| -- Types compte | |||
| INSERT INTO w_indicateur_condition | |||
| SELECT | |||
| 'CTI_COMPTE#' || v_source.oid::text AS code, 'Compte' AS table_texte, 'CPT' AS table_code, | |||
| v_source.texte AS texte, | |||
| v_source.texte AS texte_court, | |||
| 'compte_article_id'::text AS column_name, | |||
| v_source.oid AS value, | |||
| 'COMPTE_ARTICLE='||v_source.oid AS view_select_rule, | |||
| ARRAY['9'::text, COALESCE('DT#'||t_source.code,v_source.texte)] AS arbre_code, | |||
| ARRAY['Valeurs', v_source.texte] AS arbre_texte | |||
| FROM eco.v_compte_1 v_source | |||
| LEFT JOIN eco.t_compte t_source ON v_source.oid LIKE 'DT%' AND t_source.oid = substr(v_source.oid,3) | |||
| WHERE v_source.oid NOT LIKE 'LC%' AND | |||
| v_source.oid <> 'DT0' AND | |||
| v_source.oid NOT LIKE '-%' | |||
| ; | |||
| -- Unite de sortie | |||
| INSERT INTO w_indicateur_condition | |||
| SELECT | |||
| 'CTI_UFMOUVEMENT#' || v_source.oid::text AS code, 'UF Mvt' AS table_texte, 'UFO' AS table_code, | |||
| v_source.texte AS texte, | |||
| v_source.texte AS texte_court, | |||
| 'unite_fonctionnelle_id'::text AS column_name, | |||
| v_source.oid AS value, | |||
| 'UNITE_FONCTIONNELLE='||v_source.oid AS view_select_rule, | |||
| ARRAY['9'::text, COALESCE('DT#'||t_source.code,v_source.texte)] AS arbre_code, | |||
| ARRAY['Valeurs', v_source.texte] AS arbre_texte | |||
| FROM eco.v_unites_fonctionnelles_1 v_source | |||
| LEFT JOIN eco.t_unites_fonctionnelles t_source ON v_source.oid LIKE 'DT%' AND t_source.oid = substr(v_source.oid,3) | |||
| WHERE v_source.oid NOT LIKE 'LC%' AND | |||
| v_source.oid <> 'DT0' AND | |||
| v_source.oid NOT LIKE '-%' | |||
| ; | |||
| -- Unite de sortie | |||
| INSERT INTO w_indicateur_condition | |||
| SELECT | |||
| 'CTI_POLE#'::text || v_source.oid::text AS code, 'Pole'::text AS table_texte, 'POL'::text AS table_code, | |||
| v_source.texte AS texte, | |||
| v_source.texte AS texte_court, | |||
| 'pole_id'::text AS column_name, | |||
| v_source.oid AS value, | |||
| 'POL='||v_source.oid AS view_select_rule, | |||
| ARRAY['9'::text, COALESCE('DT#'||t_source.code,v_source.texte)] AS arbre_code, | |||
| ARRAY['Valeurs'::text, v_source.texte] AS arbre_texte | |||
| FROM eco.v_pole_2 v_source | |||
| LEFT JOIN eco.t_pole t_source ON v_source.oid LIKE 'DT%' AND t_source.oid = substr(v_source.oid,3) | |||
| WHERE v_source.oid NOT LIKE 'LC%' AND | |||
| v_source.oid <> 'DT0' AND | |||
| v_source.oid NOT LIKE '-%' | |||
| ; | |||
| -- Ne pas garder les listes vides | |||
| -- Ajout des valeurs à zéro | |||
| INSERT INTO w_indicateur_condition | |||
| SELECT * | |||
| FROM | |||
| ( | |||
| SELECT | |||
| split_part(code,'#',1)||'#'||'DT0' AS code, | |||
| MAX(table_texte) AS table_texte, | |||
| MAX(table_code) AS table_code, | |||
| chr(127)||MAX(table_texte) || ' non renseigné(e)' AS texte, | |||
| 'Non renseigné(e)'::text AS texte_court, | |||
| MAX(column_name) AS column_name, | |||
| 'DT0'::text AS value, | |||
| MAX(split_part(view_select_rule,'=',1)||'=DT0') AS view_select_rule, | |||
| ARRAY['9','DT'||chr(127)||'**'] AS arbre_code, | |||
| ARRAY['Valeurs','Non renseigné(e)'] AS arbre_texte | |||
| FROM w_indicateur_condition | |||
| WHERE value LIKE 'DT%' | |||
| GROUP BY 1 | |||
| ) subview | |||
| WHERE code NOT IN (SELECT code FROM w_indicateur_condition) | |||
| ; | |||
| -- Intitulés pour les classes et les listes | |||
| DROP TABLE IF EXISTS w_indicateur_condition_classes; | |||
| CREATE TEMP TABLE w_indicateur_condition_classes AS | |||
| SELECT | |||
| w_indicateur_condition.code, | |||
| t_classes.texte || '. ' || t_classes_sections.texte AS texte, | |||
| t_classes_sections.texte AS texte_court, | |||
| ARRAY[ | |||
| '1-Classe'||to_char(t_classes.sequence,'FM00'), | |||
| 'LS#'||table_code||':'||CASE WHEN t_classes.code <> '' THEN t_classes.code ELSE '*CLS'||to_char(t_classes.sequence,'FM00') END||':'||t_classes_sections.code | |||
| ]::text[] AS arbre_code, | |||
| ARRAY[ | |||
| t_classes.texte, | |||
| t_classes_sections.texte | |||
| ]::text[] AS arbre_texte, | |||
| w_indicateur_condition.value AS value | |||
| FROM w_indicateur_condition | |||
| JOIN eco.t_listes_tables ON t_listes_tables.code = table_code | |||
| JOIN eco.t_classes ON | |||
| t_classes.table_id = t_listes_tables.oid AND | |||
| to_char(t_classes.sequence,'FM00') = substr(w_indicateur_condition.value,3,2) | |||
| JOIN eco.t_classes_sections ON | |||
| t_classes_sections.classe_id = t_classes.oid AND | |||
| t_classes_sections.oid::text = substr(w_indicateur_condition.value,5) | |||
| WHERE w_indicateur_condition.code LIKE '%LS%' | |||
| ; | |||
| INSERT INTO w_indicateur_condition_classes | |||
| SELECT | |||
| w_indicateur_condition.code, | |||
| t_classes.texte || '. Sections attribuées' AS texte, | |||
| 'Sections attribuées' AS texte_court, | |||
| ARRAY[ | |||
| '1-Classe'||to_char(t_classes.sequence,'FM00'), | |||
| 'LC#'||table_code||':'||CASE WHEN t_classes.code <> '' THEN t_classes.code ELSE '*CLS'||to_char(t_classes.sequence,'FM00') END | |||
| ]::text[] AS arbre_code, | |||
| ARRAY[ | |||
| t_classes.texte, | |||
| 'Sections attribuées'::text | |||
| ]::text[] AS arbre_texte, | |||
| w_indicateur_condition.value AS value | |||
| FROM w_indicateur_condition | |||
| JOIN eco.t_listes_tables ON t_listes_tables.code = table_code | |||
| JOIN eco.t_classes ON | |||
| t_classes.table_id = t_listes_tables.oid AND | |||
| to_char(t_classes.sequence,'FM00') = substr(w_indicateur_condition.value,3,2) AND | |||
| t_classes.oid::text = substr(w_indicateur_condition.value,5) | |||
| WHERE w_indicateur_condition.code LIKE '%LC%' | |||
| ; | |||
| INSERT INTO w_indicateur_condition_classes | |||
| SELECT | |||
| w_indicateur_condition.code, | |||
| chr(127)||t_classes.texte || '. ' || 'Section non attribuée' AS texte, | |||
| 'Section non attribuée' AS texte_court, | |||
| ARRAY[ | |||
| '1-Classe'||to_char(t_classes.sequence,'FM00'), | |||
| chr(127)||'LS#'||table_code||':'||CASE WHEN t_classes.code <> '' THEN t_classes.code ELSE '*CLS'||to_char(t_classes.sequence,'FM00') END||':' | |||
| ] AS arbre_code, | |||
| ARRAY[ | |||
| t_classes.texte, | |||
| 'Section non attribuée' | |||
| ] AS arbre_texte, | |||
| 'LX'||t_classes.oid AS value | |||
| FROM w_indicateur_condition | |||
| JOIN eco.t_listes_tables ON t_listes_tables.code = table_code | |||
| JOIN eco.t_classes ON | |||
| t_classes.table_id = t_listes_tables.oid AND | |||
| to_char(t_classes.sequence,'FM00') = substr(split_part(w_indicateur_condition.code,'#',2),3,2) | |||
| WHERE w_indicateur_condition.code LIKE '%LS%' AND | |||
| substr(split_part(w_indicateur_condition.code,'#',2),5) = '0' | |||
| ; | |||
| INSERT INTO w_indicateur_condition_classes | |||
| SELECT | |||
| w_indicateur_condition.code, | |||
| table_texte || ' ' || t_listes.texte AS texte, | |||
| t_listes.texte AS texte_court, | |||
| ARRAY[ | |||
| CASE WHEN t_listes.is_cti = '1' THEN '2-Listes CTI' ELSE '3-Listes ETS' END, | |||
| 'LI#'||table_code||':'||CASE WHEN t_listes.code <> '' THEN t_listes.code ELSE '*LST'||t_listes.oid END | |||
| ] AS arbre_code, | |||
| ARRAY[ | |||
| CASE WHEN t_listes.is_cti = '1' THEN '2-Listes CTI' ELSE '3-Listes ETS' END, | |||
| t_listes.texte | |||
| ] AS arbre_texte, | |||
| w_indicateur_condition.value AS value | |||
| FROM w_indicateur_condition | |||
| JOIN eco.t_listes_tables ON t_listes_tables.code = table_code | |||
| JOIN eco.t_listes ON | |||
| t_listes.table_id = t_listes_tables.oid AND | |||
| t_listes.oid::text = substr(split_part(w_indicateur_condition.code,'#',2),3) | |||
| WHERE w_indicateur_condition.code LIKE '%#LI%' | |||
| ; | |||
| INSERT INTO w_indicateur_condition_classes | |||
| SELECT | |||
| w_indicateur_condition.code, | |||
| table_texte || ' sauf ' || t_listes.texte AS texte, | |||
| 'Sauf ' || t_listes.texte AS texte_court, | |||
| ARRAY[ | |||
| CASE WHEN t_listes.is_cti = '1' THEN '2-Listes CTI' ELSE '3-Listes ETS' END, | |||
| 'SL#'||table_code||':'||CASE WHEN t_listes.code <> '' THEN t_listes.code ELSE '*LST'||t_listes.oid END | |||
| ] AS arbre_code, | |||
| ARRAY[ | |||
| CASE WHEN t_listes.is_cti = '1' THEN '2-Listes CTI' ELSE '3-Listes ETS' END, | |||
| 'Sauf ' || t_listes.texte | |||
| ] AS arbre_texte, | |||
| w_indicateur_condition.value AS value | |||
| FROM w_indicateur_condition | |||
| JOIN eco.t_listes_tables ON t_listes_tables.code = table_code | |||
| JOIN eco.t_listes ON | |||
| t_listes.table_id = t_listes_tables.oid AND | |||
| t_listes.oid::text = substr(split_part(w_indicateur_condition.code,'#',2),3) | |||
| WHERE w_indicateur_condition.code LIKE '%#SL%' | |||
| ; | |||
| UPDATE w_indicateur_condition SET | |||
| texte = w_indicateur_condition_classes.texte, | |||
| texte_court = w_indicateur_condition_classes.texte_court, | |||
| arbre_code = w_indicateur_condition_classes.arbre_code, | |||
| arbre_texte = w_indicateur_condition_classes.arbre_texte, | |||
| value = w_indicateur_condition_classes.value | |||
| FROM w_indicateur_condition_classes | |||
| WHERE w_indicateur_condition.code = w_indicateur_condition_classes.code | |||
| ; | |||
| INSERT INTO eco.t_indicateur_condition(code, texte,texte_court,column_name,column_texte,value,view_select_rule, arbre_code, arbre_texte) | |||
| SELECT code, texte,texte_court,column_name,table_texte,value,view_select_rule, arbre_code, arbre_texte | |||
| FROM w_indicateur_condition | |||
| WHERE code NOT IN (SELECT code FROM eco.t_indicateur_condition WHERE code IS NOT NULL) | |||
| ; | |||
| UPDATE eco.t_indicateur_condition SET | |||
| texte = w_indicateur_condition.texte, | |||
| texte_court = w_indicateur_condition.texte_court, | |||
| column_name = w_indicateur_condition.column_name, | |||
| column_texte = w_indicateur_condition.table_texte, | |||
| value = w_indicateur_condition.value, | |||
| view_select_rule = w_indicateur_condition.view_select_rule, | |||
| arbre_code = w_indicateur_condition.arbre_code, | |||
| arbre_texte = w_indicateur_condition.arbre_texte | |||
| FROM w_indicateur_condition | |||
| WHERE w_indicateur_condition.code = t_indicateur_condition.code AND | |||
| ( | |||
| t_indicateur_condition.texte IS DISTINCT FROM w_indicateur_condition.texte OR | |||
| t_indicateur_condition.texte_court IS DISTINCT FROM w_indicateur_condition.texte_court OR | |||
| t_indicateur_condition.column_name IS DISTINCT FROM w_indicateur_condition.column_name OR | |||
| t_indicateur_condition.column_texte IS DISTINCT FROM w_indicateur_condition.table_texte OR | |||
| t_indicateur_condition.value IS DISTINCT FROM w_indicateur_condition.value OR | |||
| t_indicateur_condition.view_select_rule IS DISTINCT FROM w_indicateur_condition.view_select_rule OR | |||
| t_indicateur_condition.arbre_code IS DISTINCT FROM w_indicateur_condition.arbre_code OR | |||
| t_indicateur_condition.arbre_texte IS DISTINCT FROM w_indicateur_condition.arbre_texte | |||
| ) | |||
| ; | |||
| DELETE FROM eco.t_indicateur_condition | |||
| WHERE code LIKE 'CTI%' AND | |||
| code NOT IN (SELECT code FROM w_indicateur_condition) | |||
| ; | |||
| UPDATE eco.t_indicateur_condition | |||
| SET external_code = split_part(code,'#',1)||'#'||CASE | |||
| WHEN arbre_code[1] LIKE '1-Classe%' AND arbre_code[2] NOT LIKE '%:%' THEN 'LS'::text||substr(arbre_code[1],9) || '-'::text | |||
| WHEN arbre_code[1] LIKE '1-Classe%' AND arbre_code[2] LIKE '%:%' THEN '' | |||
| ELSE '' END||CASE WHEN code NOT LIKE '%#DT0' THEN arbre_code[2] ELSE 'DT0' END | |||
| WHERE external_code IS DISTINCT FROM (split_part(code,'#',1)||'#'||CASE | |||
| WHEN arbre_code[1] LIKE '1-Classe%' AND arbre_code[2] NOT LIKE '%:%' THEN 'LS'::text||substr(arbre_code[1],9) || '-'::text | |||
| WHEN arbre_code[1] LIKE '1-Classe%' AND arbre_code[2] LIKE '%:%' THEN '' | |||
| ELSE '' END||CASE WHEN code NOT LIKE '%#DT0' THEN arbre_code[2] ELSE 'DT0' END) | |||
| ; | |||
| UPDATE eco.t_indicateur_condition SET | |||
| column_texte = CASE column_name | |||
| WHEN 'type_article_id' THEN 'Type article' | |||
| WHEN 'unite_fonctionnelle_id' THEN 'UF' | |||
| WHEN 'compte_article_id' THEN 'Compte' | |||
| ELSE replace(Upper(substr(split_part(column_name,'_id',1),1,1)) || substr(split_part(column_name,'_id',1),2),'_',' ') END | |||
| WHERE | |||
| column_texte IS DISTINCT FROM | |||
| CASE column_name | |||
| WHEN 'type_article_id' THEN 'Type article' | |||
| WHEN 'unite_fonctionnelle_id' THEN 'UF' | |||
| WHEN 'compte_article_id' THEN 'Compte' | |||
| ELSE replace(Upper(substr(split_part(column_name,'_id',1),1,1)) || substr(split_part(column_name,'_id',1),2),'_',' ') END | |||
| ; | |||
| DROP TABLE IF EXISTS w_indicateur_condition_table; | |||
| CREATE TEMP TABLE w_indicateur_condition_table AS | |||
| SELECT t_indicateur_condition.oid AS indicateur_condition_id, | |||
| ''::text As table_name, | |||
| t_indicateur_condition.column_name || ' ' || | |||
| CASE | |||
| WHEN t_indicateur_condition.value LIKE 'LS%' THEN 'IN' | |||
| WHEN t_indicateur_condition.value LIKE 'LI%' THEN 'IN' | |||
| WHEN t_indicateur_condition.value LIKE 'SL%' THEN 'NOT IN' | |||
| WHEN t_indicateur_condition.value LIKE 'DT%' THEN '=' | |||
| ELSE '=' | |||
| END || ' ' || | |||
| CASE | |||
| WHEN t_indicateur_condition.value LIKE 'LS%' THEN | |||
| '(SELECT to_id FROM eco.t_classes_sections_elements WHERE section_id = ' || substr(value,5) || ')' | |||
| WHEN t_indicateur_condition.value LIKE 'LI%' THEN | |||
| '(SELECT to_id FROM eco.t_listes_contenu WHERE liste_id = ' || substr(value,3) || ')' | |||
| WHEN t_indicateur_condition.value LIKE 'SL%' THEN | |||
| '(SELECT to_id FROM eco.t_listes_contenu WHERE liste_id = ' || substr(value,3) || ')' | |||
| WHEN t_indicateur_condition.value LIKE 'DT%' THEN | |||
| substr(value,3) | |||
| ELSE substr(value,3) | |||
| END AS check_where | |||
| FROM eco.t_indicateur_condition | |||
| WHERE t_indicateur_condition.code LIKE 'CTI%' | |||
| ; | |||
| INSERT INTO eco.t_indicateur_condition_table(indicateur_condition_id, table_name, check_where) | |||
| SELECT indicateur_condition_id, table_name, check_where | |||
| FROM w_indicateur_condition_table | |||
| WHERE (indicateur_condition_id::text || '-' || table_name) NOT IN | |||
| (SELECT indicateur_condition_id::text || '-' || table_name FROM eco.t_indicateur_condition_table WHERE table_name IS NOT NULL) | |||
| ; | |||
| UPDATE eco.t_indicateur_condition_table SET | |||
| check_where = w_indicateur_condition_table.check_where | |||
| FROM w_indicateur_condition_table | |||
| WHERE t_indicateur_condition_table.indicateur_condition_id = w_indicateur_condition_table.indicateur_condition_id AND | |||
| t_indicateur_condition_table.table_name = w_indicateur_condition_table.table_name AND | |||
| ( | |||
| t_indicateur_condition_table.check_where IS DISTINCT FROM w_indicateur_condition_table.check_where | |||
| ) | |||
| ; | |||
| DELETE FROM eco.t_indicateur_condition_table | |||
| USING eco.t_indicateur_condition | |||
| WHERE t_indicateur_condition.oid = t_indicateur_condition_table.indicateur_condition_id AND | |||
| t_indicateur_condition.code LIKE 'CTI%' AND | |||
| (indicateur_condition_id::text || '-' || table_name) NOT IN | |||
| (SELECT indicateur_condition_id::text || '-' || table_name FROM w_indicateur_condition_table WHERE table_name IS NOT NULL) | |||
| ; | |||
| RETURN 'OK'; | |||
| END; | |||
| @ -0,0 +1,108 @@ | |||
| return: text | |||
| lang: plpgsql | |||
| src: | | |||
| DECLARE | |||
| result TEXT; | |||
| _module_pmsimco TEXT; | |||
| BEGIN | |||
| RAISE NOTICE '%' , 'Initialisation poles'; | |||
| -- Contenu table | |||
| INSERT INTO base.t_pole (oid, code, texte, texte_court) | |||
| SELECT 0, '**', 'Non renseigné', 'Non renseigné' | |||
| WHERE 0 NOT IN (SELECT oid FROM base.t_pole); | |||
| -- replication dans eco | |||
| TRUNCATE eco.t_pole; | |||
| INSERT INTO eco.t_pole (oid, code, texte, texte_court, section_id, section_code, section_texte) | |||
| SELECT oid, code, texte, texte_court, section_id, section_code, section_texte | |||
| FROM base.t_pole | |||
| ; | |||
| -- Traduction des règles en oid | |||
| RAISE NOTICE '%' , 'Application des regles. Traduction en oid'; | |||
| DROP TABLE IF EXISTS w_pole_rule; | |||
| CREATE TEMP TABLE w_pole_rule AS | |||
| SELECT | |||
| t_pole_rule.oid, | |||
| pole_id, | |||
| priorite, | |||
| CASE WHEN liste_finess <> '' THEN '1' ELSE '0' END AS a_liste_finess, | |||
| string_to_array(translate(liste_finess,'*,','% '),' ') AS liste_finess, | |||
| NULL::bigint[] AS liste_finess_id , | |||
| CASE WHEN liste_site <> '' THEN '1' ELSE '0' END AS a_liste_site, | |||
| string_to_array(translate(liste_site,'*,','% '),' ') AS liste_site, | |||
| NULL::bigint[] AS liste_site_id , | |||
| CASE WHEN liste_unite_fonctionnelle <> '' THEN '1' ELSE '0' END AS a_liste_unite_fonctionnelle, | |||
| string_to_array(translate(liste_unite_fonctionnelle,'*,','% '),' ') AS liste_unite_fonctionnelle, | |||
| NULL::bigint[] AS liste_unite_fonctionnelle_id | |||
| FROM eco.t_pole_rule | |||
| JOIN eco.t_pole ON pole_id = t_pole.oid | |||
| ORDER BY priorite, pole_id; | |||
| UPDATE w_pole_rule | |||
| SET liste_finess_id = (SELECT base.cti_group_array3(oid) FROM base.t_finess WHERE oid <> 0 AND code LIKE ANY (liste_finess)) | |||
| WHERE a_liste_finess = '1'; | |||
| UPDATE w_pole_rule | |||
| SET liste_site_id = (SELECT base.cti_group_array3(oid) FROM eco.t_sites WHERE oid <> 0 AND code LIKE ANY (liste_site)) | |||
| WHERE a_liste_site = '1'; | |||
| UPDATE w_pole_rule | |||
| SET liste_unite_fonctionnelle_id = (SELECT base.cti_group_array3(oid) FROM eco.t_unites_fonctionnelles WHERE oid <> 0 AND code LIKE ANY (liste_unite_fonctionnelle)) | |||
| WHERE a_liste_unite_fonctionnelle = '1'; | |||
| RAISE NOTICE '%' , 'Application des regles.'; | |||
| DROP TABLE IF EXISTS w_mouvements_articles; | |||
| CREATE TEMP TABLE w_mouvements_articles AS | |||
| SELECT p_mouvements_articles.CTID AS from_CTID, | |||
| COALESCE(MIN(priorite),999999999) AS pole_priorite, | |||
| COALESCE((MIN(ARRAY[priorite,w_pole_rule.pole_id]))[2],0) AS pole_id | |||
| FROM eco.p_mouvements_articles | |||
| JOIN eco.t_sites ON t_sites.oid = site_id | |||
| JOIN w_pole_rule ON | |||
| (a_liste_finess = '0' OR finess_id = ANY (liste_finess_id)) AND | |||
| (a_liste_site = '0' OR site_id = ANY (liste_site_id)) AND | |||
| (a_liste_unite_fonctionnelle = '0' OR unite_fonctionnelle_id = ANY (liste_unite_fonctionnelle_id)) | |||
| GROUP BY 1 | |||
| ORDER BY 2,1 | |||
| ; | |||
| RAISE NOTICE '%' , 'Application des regles. Validation des poles'; | |||
| UPDATE eco.p_mouvements_articles | |||
| SET pole_id = w_mouvements_articles.pole_id | |||
| FROM w_mouvements_articles | |||
| WHERE p_mouvements_articles.CTID = w_mouvements_articles.from_CTID AND | |||
| p_mouvements_articles.pole_id IS DISTINCT FROM w_mouvements_articles.pole_id | |||
| ; | |||
| ANALYSE eco.p_mouvements_articles | |||
| ; | |||
| INSERT INTO eco.p_oids (code_table, oid) | |||
| SELECT 'pole', pole_id | |||
| FROM eco.p_mouvements_articles | |||
| WHERE pole_id NOT IN (SELECT oid FROM eco.p_oids WHERE code_table = 'pole') | |||
| GROUP BY 2; | |||
| RETURN 'OK'; | |||
| END; | |||
| @ -0,0 +1,27 @@ | |||
| return: text | |||
| lang: plpgsql | |||
| src: | | |||
| DECLARE | |||
| result TEXT; | |||
| BEGIN | |||
| PERFORM econom.cti_reorganize_profils_table('t_types_contrat', 'type_contrat'); | |||
| PERFORM econom.cti_reorganize_profils_table('t_motifs_debut_contrat', 'motif_debut'); | |||
| PERFORM econom.cti_reorganize_profils_table('t_motifs_fin_contrat', 'motif_fin'); | |||
| PERFORM econom.cti_reorganize_profils_table('t_qualifications', 'qualification'); | |||
| PERFORM econom.cti_reorganize_profils_table('t_services', 'service'); | |||
| PERFORM econom.cti_reorganize_profils_table('t_specialites', 'specialite'); | |||
| PERFORM econom.cti_reorganize_profils_table('t_types_temps_travail', 'type_temps_travail'); | |||
| PERFORM econom.cti_reorganize_profils_table('t_categories_socio_professionnelle', 'categorie_socio_professionnelle'); | |||
| PERFORM econom.cti_reorganize_profils_table('t_statuts', 'statut'); | |||
| PERFORM econom.cti_reorganize_profils_table('t_codes_emploi', 'code_emploi'); | |||
| PERFORM econom.cti_reorganize_profils_table('t_societes_interim', 'societe_interim'); | |||
| PERFORM econom.cti_reorganize_profils_table('t_sections_analytiques_paie', 'section_analytique_paie'); | |||
| PERFORM econom.cti_reorganize_profils_table('t_sections_analytiques', 'section_analytique'); | |||
| PERFORM econom.cti_reorganize_profils_table('t_grilles', 'grille'); | |||
| PERFORM econom.cti_reorganize_profils_table('t_grilles_groupes', 'grille_groupe'); | |||
| PERFORM econom.cti_reorganize_profils_table('t_types_horaire', 'type_horaire'); | |||
| PERFORM econom.cti_reorganize_profils_table('t_groupes_cotisant', 'groupe_cotisant'); | |||
| RETURN 'OK'; | |||
| END; | |||
| @ -0,0 +1,43 @@ | |||
| return: text | |||
| lang: plpgsql | |||
| parameters: | |||
| p0: | |||
| type: text | |||
| name: tablename | |||
| p1: | |||
| type: text | |||
| name: field_prefix | |||
| src: | | |||
| DECLARE | |||
| w_tablename TEXT; | |||
| w_field_prefix TEXT; | |||
| result TEXT; | |||
| BEGIN | |||
| w_tablename = tablename; | |||
| IF w_tablename = '' THEN | |||
| w_tablename = 't_articles'; | |||
| END IF; | |||
| w_field_prefix = field_prefix; | |||
| IF w_field_prefix = '' THEN | |||
| w_field_prefix = 'article'; | |||
| END IF; | |||
| EXECUTE 'UPDATE econom.p_profils | |||
| SET ' || w_field_prefix || '_id = ' || w_tablename || '.oid | |||
| FROM econom.' || w_tablename || ' | |||
| WHERE ' || w_tablename || '.code_original = p_profils.' || w_field_prefix || '_code_original | |||
| AND ' || w_field_prefix || '_id IS DISTINCT FROM ' || w_tablename || '.oid;'; | |||
| EXECUTE 'UPDATE econom.p_profils SET ' || w_field_prefix || '_id = 0 WHERE ' || w_field_prefix || '_id IS NULL;'; | |||
| EXECUTE 'UPDATE econom.p_profils | |||
| SET | |||
| ' || w_field_prefix || '_code = ' || w_tablename || '.code, | |||
| ' || w_field_prefix || '_texte = ' || w_tablename || '.texte_court | |||
| FROM econom.' || w_tablename || ' | |||
| WHERE ' || w_tablename || '.oid = p_profils.' || w_field_prefix || '_id | |||
| AND (' || w_field_prefix || '_code IS DISTINCT FROM ' || w_tablename || '.code OR | |||
| ' || w_field_prefix || '_texte IS DISTINCT FROM ' || w_tablename || '.texte_court);'; | |||
| RETURN 'OK'; | |||
| END; | |||
| @ -0,0 +1,353 @@ | |||
| return: text | |||
| lang: plpgsql | |||
| src: | | |||
| DECLARE | |||
| _module_pmsimco TEXT; | |||
| _module_activite TEXT; | |||
| _module_pmsissr TEXT; | |||
| result TEXT; | |||
| BEGIN | |||
| IF EXISTS (SELECT * FROM pg_tables WHERE schemaname = 'pmsi' AND tablename = 'p_rss') THEN | |||
| _module_pmsimco = '1'; | |||
| ELSE | |||
| _module_pmsimco = '0'; | |||
| END IF; | |||
| IF EXISTS (SELECT * FROM pg_tables WHERE schemaname = 'activite' AND tablename = 'p_sejours') THEN | |||
| _module_activite = '1'; | |||
| ELSE | |||
| _module_activite = '0'; | |||
| END IF; | |||
| IF EXISTS (SELECT * FROM pg_tables WHERE schemaname = 'pmsissr' AND tablename = 'p_ssr') THEN | |||
| _module_pmsissr = '1'; | |||
| ELSE | |||
| _module_pmsissr = '0'; | |||
| END IF; | |||
| IF NOT EXISTS ( | |||
| SELECT column_name | |||
| FROM information_schema.columns | |||
| WHERE table_schema || '.' || table_name = 'eco.p_sejours' AND | |||
| column_name = 'ssr_id') THEN | |||
| ALTER TABLE eco.p_sejours ADD COLUMN ssr_id bigint DEFAULT 0; | |||
| END IF; | |||
| IF NOT EXISTS ( | |||
| SELECT column_name | |||
| FROM information_schema.columns | |||
| WHERE table_schema || '.' || table_name = 'eco.p_sejours' AND | |||
| column_name = 'ssr_id') THEN | |||
| ALTER TABLE eco.p_sejours ADD COLUMN ssr_id bigint DEFAULT 0; | |||
| END IF; | |||
| TRUNCATE eco.p_sejours; | |||
| -- Creation association eco - sejour pmsi | |||
| IF _module_pmsimco = '1' THEN | |||
| BEGIN | |||
| IF NOT EXISTS ( | |||
| SELECT column_name | |||
| FROM information_schema.columns | |||
| WHERE 'pmsi.' || table_name = 'pmsi.p_rss_lpp' AND | |||
| column_name = 'from_eco') THEN | |||
| ALTER TABLE pmsi.p_rss_lpp ADD COLUMN from_eco bigint DEFAULT 0; | |||
| END IF; | |||
| IF NOT EXISTS ( | |||
| SELECT column_name | |||
| FROM information_schema.columns | |||
| WHERE 'pmsi.' || table_name = 'pmsi.p_rss_ucd' AND | |||
| column_name = 'from_eco') THEN | |||
| ALTER TABLE pmsi.p_rss_ucd ADD COLUMN from_eco bigint DEFAULT 0; | |||
| END IF; | |||
| IF NOT EXISTS ( | |||
| SELECT column_name | |||
| FROM information_schema.columns | |||
| WHERE 'pmsi.' || table_name = 'pmsi.p_rss_lpp' AND | |||
| column_name = 'montant_consommation') THEN | |||
| ALTER TABLE pmsi.p_rss_lpp ADD COLUMN montant_consommation numeric DEFAULT 0; | |||
| END IF; | |||
| IF NOT EXISTS ( | |||
| SELECT column_name | |||
| FROM information_schema.columns | |||
| WHERE 'pmsi.' || table_name = 'pmsi.p_rss_ucd' AND | |||
| column_name = 'montant_consommation') THEN | |||
| ALTER TABLE pmsi.p_rss_ucd ADD COLUMN montant_consommation numeric DEFAULT 0; | |||
| END IF; | |||
| IF NOT EXISTS ( | |||
| SELECT column_name | |||
| FROM information_schema.columns | |||
| WHERE 'pmsi.' || table_name = 'pmsi.p_rss_lpp' AND | |||
| column_name = 'type_lpp_id') THEN | |||
| ALTER TABLE pmsi.p_rss_lpp ADD COLUMN type_lpp_id bigint DEFAULT 0; | |||
| END IF; | |||
| DROP TABLE IF EXISTS w_rss; | |||
| CREATE TEMP TABLE w_rss | |||
| ( | |||
| mouvement_id bigint, | |||
| rss_id bigint, | |||
| no_sejour_pmsi text, | |||
| no_rss text, | |||
| date_entree date, | |||
| date_sortie date | |||
| ) ; | |||
| CREATE INDEX w_rss_i1 | |||
| ON w_rss | |||
| USING btree | |||
| (mouvement_id); | |||
| CREATE INDEX w_rss_i2 | |||
| ON w_rss | |||
| USING btree | |||
| (no_sejour_pmsi); | |||
| CREATE INDEX w_rss_i3 | |||
| ON w_rss | |||
| USING btree | |||
| (rss_id); | |||
| -- sejour + date | |||
| INSERT INTO w_rss | |||
| SELECT p_mouvements_articles.oid AS mouvement_id, | |||
| p_rss.oid AS rss_id, | |||
| p_rss.no_sejour_administratif, | |||
| p_rss.no_rss, | |||
| p_rss.date_entree, | |||
| p_rss.date_sortie | |||
| FROM eco.p_mouvements_articles | |||
| JOIN pmsi.p_rss ON no_sejour_administratif = no_sejour | |||
| AND no_sejour_administratif != '' | |||
| AND p_mouvements_articles.date BETWEEN date_entree AND date_sortie | |||
| WHERE p_rss.etat = '' | |||
| ; | |||
| -- sejour + patient + première date | |||
| INSERT INTO w_rss | |||
| SELECT p_mouvements_articles.oid AS mouvement_id, | |||
| sub.rss_id, | |||
| p_rss.no_sejour_administratif, | |||
| p_rss.no_rss, | |||
| p_rss.date_entree, | |||
| p_rss.date_sortie | |||
| FROM eco.p_mouvements_articles | |||
| LEFT JOIN w_rss ON oid = mouvement_id | |||
| JOIN (SELECT p_mouvements_articles.oid, | |||
| (MIN(ARRAY[abs(date - date_entree)::text,p_rss.oid::text]))[2]::bigint AS rss_id | |||
| FROM eco.p_mouvements_articles JOIN pmsi.p_rss ON no_sejour_administratif = no_sejour | |||
| AND p_rss.no_patient = p_mouvements_articles.no_patient | |||
| WHERE p_rss.etat = '' AND p_mouvements_articles.oid NOT IN (SELECT mouvement_id FROM w_rss) | |||
| GROUP BY 1) sub ON sub.oid = p_mouvements_articles.oid | |||
| JOIN pmsi.p_rss ON sub.rss_id = p_rss.oid | |||
| WHERE mouvement_id IS NULL | |||
| ; | |||
| -- no patient avec dates correspondantes | |||
| INSERT INTO w_rss | |||
| SELECT p_mouvements_articles.oid AS mouvement_id, | |||
| sub.rss_id, | |||
| p_rss.no_sejour_administratif, | |||
| p_rss.no_rss, | |||
| p_rss.date_entree, | |||
| p_rss.date_sortie | |||
| FROM eco.p_mouvements_articles | |||
| JOIN (SELECT p_mouvements_articles.oid, | |||
| (MIN(ARRAY[abs(date - date_entree)::text,p_rss.oid::text]))[2]::bigint AS rss_id | |||
| FROM eco.p_mouvements_articles JOIN pmsi.p_rss ON date BETWEEN p_rss.date_entree AND p_rss.date_sortie | |||
| AND p_rss.no_patient = p_mouvements_articles.no_patient | |||
| WHERE p_rss.etat = '' AND p_mouvements_articles.oid NOT IN (SELECT mouvement_id FROM w_rss) | |||
| GROUP BY 1) sub ON sub.oid = p_mouvements_articles.oid | |||
| JOIN pmsi.p_rss ON sub.rss_id = p_rss.oid | |||
| ; | |||
| INSERT INTO eco.p_sejours ( | |||
| mouvement_id, | |||
| rss_id, | |||
| no_sejour, | |||
| no_rss | |||
| ) | |||
| SELECT mouvement_id, | |||
| rss_id, | |||
| no_sejour_pmsi, | |||
| no_rss | |||
| FROM w_rss | |||
| ; | |||
| UPDATE eco.p_sejours | |||
| SET no_patient = p_rss.no_patient | |||
| FROM pmsi.p_rss | |||
| WHERE p_sejours.rss_id = p_rss.oid AND | |||
| p_sejours.no_patient IS DISTINCT FROM p_rss.no_patient | |||
| ; | |||
| UPDATE eco.p_mouvements_articles | |||
| SET medecin_reference_id = t_medecins.medecin_id | |||
| FROM eco.p_sejours | |||
| JOIN pmsi.p_rss ON p_sejours.rss_id = p_rss.oid | |||
| JOIN pmsi.t_medecins ON medecin_rss_id = t_medecins.oid | |||
| WHERE mouvement_id = p_mouvements_articles.oid AND | |||
| p_mouvements_articles.medecin_reference_id IS DISTINCT FROM t_medecins.medecin_id | |||
| ; | |||
| END; | |||
| END IF; | |||
| -- Mise e jour des associations provenant d'activité | |||
| IF _module_activite = '1' THEN | |||
| DROP TABLE IF EXISTS w_sejours; | |||
| CREATE TEMP TABLE w_sejours | |||
| ( | |||
| mouvement_id bigint, | |||
| sejour_id bigint, | |||
| no_sejour_pmsi text, | |||
| date_entree date, | |||
| date_sortie date | |||
| ) ; | |||
| CREATE INDEX w_sejours_i1 | |||
| ON w_sejours | |||
| USING btree | |||
| (mouvement_id); | |||
| CREATE INDEX w_sejours_i2 | |||
| ON w_sejours | |||
| USING btree | |||
| (no_sejour_pmsi); | |||
| CREATE INDEX w_sejours_i3 | |||
| ON w_sejours | |||
| USING btree | |||
| (sejour_id); | |||
| -- sejour + patient + date | |||
| INSERT INTO w_sejours | |||
| SELECT p_mouvements_articles.oid AS mouvement_id, | |||
| p_sejours.oid AS sejour_id, | |||
| p_sejours.no_sejour, | |||
| p_sejours.date_entree, | |||
| p_sejours.date_sortie | |||
| FROM eco.p_mouvements_articles | |||
| JOIN activite.p_sejours ON p_sejours.no_sejour = p_mouvements_articles.no_sejour AND | |||
| p_mouvements_articles.date BETWEEN date_entree AND date_sortie | |||
| ; | |||
| -- sejour + patient + première date | |||
| INSERT INTO w_sejours | |||
| SELECT p_mouvements_articles.oid AS mouvement_id, | |||
| sub.sejour_id, | |||
| p_sejours.no_sejour, | |||
| p_sejours.date_entree, | |||
| p_sejours.date_sortie | |||
| FROM eco.p_mouvements_articles | |||
| LEFT JOIN w_sejours ON oid = mouvement_id | |||
| JOIN (SELECT p_mouvements_articles.oid, | |||
| (MIN(ARRAY[abs(date - date_entree)::text,p_sejours.oid::text]))[2]::bigint AS sejour_id | |||
| FROM eco.p_mouvements_articles JOIN activite.p_sejours ON p_sejours.no_sejour = p_mouvements_articles.no_sejour | |||
| AND p_sejours.no_patient = p_mouvements_articles.no_patient | |||
| WHERE p_sejours.etat = '' AND p_mouvements_articles.oid NOT IN (SELECT mouvement_id FROM w_sejours) | |||
| GROUP BY 1) sub ON sub.oid = p_mouvements_articles.oid | |||
| JOIN activite.p_sejours ON sub.sejour_id = p_sejours.oid | |||
| WHERE mouvement_id IS NULL | |||
| ; | |||
| -- no patient avec dates correspondantes | |||
| INSERT INTO w_sejours | |||
| SELECT p_mouvements_articles.oid AS mouvement_id, | |||
| sub.sejour_id, | |||
| p_sejours.no_sejour, | |||
| p_sejours.date_entree, | |||
| p_sejours.date_sortie | |||
| FROM eco.p_mouvements_articles | |||
| JOIN (SELECT p_mouvements_articles.oid, | |||
| (MIN(ARRAY[abs(date - date_entree)::text,p_sejours.oid::text]))[2]::bigint AS sejour_id | |||
| FROM eco.p_mouvements_articles JOIN activite.p_sejours ON date BETWEEN p_sejours.date_entree AND p_sejours.date_sortie | |||
| AND p_sejours.no_patient = p_mouvements_articles.no_patient | |||
| WHERE p_sejours.etat = '' AND p_mouvements_articles.oid NOT IN (SELECT mouvement_id FROM w_sejours) | |||
| GROUP BY 1) sub ON sub.oid = p_mouvements_articles.oid | |||
| JOIN activite.p_sejours ON sub.sejour_id = p_sejours.oid | |||
| ; | |||
| UPDATE eco.p_sejours | |||
| SET | |||
| sejour_id = w_sejours.sejour_id | |||
| FROM | |||
| w_sejours | |||
| WHERE | |||
| p_sejours.mouvement_id = w_sejours.mouvement_id | |||
| ; | |||
| INSERT INTO eco.p_sejours (mouvement_id, sejour_id, no_sejour) | |||
| SELECT mouvement_id, sejour_id , no_sejour_pmsi | |||
| FROM w_sejours | |||
| WHERE w_sejours.mouvement_id NOT IN (SELECT mouvement_id FROM eco.p_sejours) | |||
| ; | |||
| UPDATE eco.p_sejours | |||
| SET | |||
| sejour_id = p_sejour_pmsi.sejour_id, | |||
| no_sejour = p_sejour_pmsi.no_sejour | |||
| FROM | |||
| activite.p_sejour_pmsi | |||
| WHERE | |||
| p_sejours.rss_id = p_sejour_pmsi.rss_id | |||
| AND p_sejours.sejour_id = 0 | |||
| AND p_sejour_pmsi.sejour_id IS NOT NULL | |||
| ; | |||
| UPDATE eco.p_sejours | |||
| SET | |||
| rss_id = p_sejour_pmsi.rss_id, | |||
| no_rss = p_sejour_pmsi.no_rss | |||
| FROM | |||
| activite.p_sejour_pmsi | |||
| WHERE | |||
| p_sejours.sejour_id = p_sejour_pmsi.sejour_id | |||
| AND p_sejours.rss_id = 0 | |||
| AND p_sejour_pmsi.rss_id IS NOT NULL | |||
| ; | |||
| UPDATE eco.p_sejours SET no_patient = sejours.no_patient | |||
| FROM | |||
| activite.p_sejours sejours | |||
| WHERE sejour_id = sejours.oid AND | |||
| p_sejours.no_patient IS DISTINCT FROM sejours.no_patient | |||
| ; | |||
| UPDATE eco.p_mouvements_articles | |||
| SET medecin_reference_id = t_medecins_administratifs.medecin_id | |||
| FROM eco.p_sejours | |||
| JOIN activite.p_sejours p_sejours_activite ON p_sejours.sejour_id = p_sejours_activite.oid | |||
| JOIN activite.t_medecins_administratifs ON p_sejours_activite.medecin_sejour_id = t_medecins_administratifs.oid AND | |||
| t_medecins_administratifs.medecin_id <> 0 | |||
| WHERE p_mouvements_articles.oid = p_sejours.mouvement_id | |||
| AND p_mouvements_articles.medecin_reference_id IS DISTINCT FROM t_medecins_administratifs.medecin_id | |||
| ; | |||
| END IF; | |||
| -- Mise e jour des associations provenant du SSR | |||
| IF _module_pmsissr = '1' THEN | |||
| BEGIN | |||
| END; | |||
| END IF; | |||
| UPDATE eco.p_mouvements_articles | |||
| SET medecin_reference_id = 0 | |||
| WHERE medecin_reference_id IS NULL | |||
| ; | |||
| ANALYSE eco.p_sejours; | |||
| REINDEX TABLE eco.p_sejours; | |||
| RETURN 'OK'; | |||
| END; | |||
| @ -0,0 +1,654 @@ | |||
| return: text | |||
| lang: plpgsql | |||
| src: | | |||
| DECLARE | |||
| _module_pmsimco TEXT; | |||
| _module_activite TEXT; | |||
| _module_pmsissr TEXT; | |||
| result TEXT; | |||
| BEGIN | |||
| IF EXISTS (SELECT * FROM pg_tables WHERE schemaname = 'pmsi' AND tablename = 'p_rss') THEN | |||
| _module_pmsimco = '1'; | |||
| ELSE | |||
| _module_pmsimco = '0'; | |||
| END IF; | |||
| IF EXISTS (SELECT * FROM pg_tables WHERE schemaname = 'activite' AND tablename = 'p_sejours') THEN | |||
| _module_activite = '1'; | |||
| ELSE | |||
| _module_activite = '0'; | |||
| END IF; | |||
| IF EXISTS (SELECT * FROM pg_tables WHERE schemaname = 'pmsissr' AND tablename = 'p_ssr') THEN | |||
| _module_pmsissr = '1'; | |||
| ELSE | |||
| _module_pmsissr = '0'; | |||
| END IF; | |||
| PERFORM base.cti_execute('INSERT INTO eco.t_divers(code,texte,valeur,description) | |||
| VALUES (''UPDATE_PMSI'',''Mise à jour des LPP et UCD dans le module Pmsi Mco à partir du module Gestion Economique'',''0'',''0: Non 1: Oui'')',1) | |||
| WHERE (SELECT count(*) FROM eco.t_divers WHERE code = 'UPDATE_PMSI') = 0 | |||
| ; | |||
| DROP TABLE IF EXISTS w_mvt_sejours; | |||
| CREATE TABLE w_mvt_sejours AS | |||
| SELECT | |||
| sejour_id | |||
| ,rss_id | |||
| ,COALESCE(t_lpp_c.code,t_ucd_c.code,'') AS code | |||
| ,SUM(sortie_montant-entree_montant) AS sortie_montant | |||
| FROM eco.p_mouvements_articles | |||
| JOIN eco.p_sejours ON mouvement_id = p_mouvements_articles.oid | |||
| LEFT JOIN eco.t_lpp_c ON lpp_id = t_lpp_c.oid | |||
| LEFT JOIN eco.t_ucd_c ON ucd_id = t_ucd_c.oid | |||
| WHERE (lpp_id != 0 OR ucd_id != 0) | |||
| AND type_mouvement_id IN (SELECT to_id from eco.t_classes JOIN eco.t_classes_sections ON t_classes.oid = classe_id | |||
| JOIN eco.t_classes_sections_elements ON section_id = t_classes_sections.oid | |||
| WHERE t_classes.code = 'CTI_TYPMVT' AND t_classes_sections.code = '01') | |||
| GROUP BY 1,2,3 | |||
| ; | |||
| CREATE INDEX w_mvt_sejours_i1 on w_mvt_sejours USING btree (sejour_id); | |||
| CREATE INDEX w_mvt_sejours_i2 on w_mvt_sejours USING btree (rss_id); | |||
| CREATE INDEX w_mvt_sejours_i3 on w_mvt_sejours USING btree (code); | |||
| -- Mise à jour des ucd et lpp | |||
| DROP TABLE IF EXISTS w_fac; | |||
| CREATE TEMP TABLE w_fac AS | |||
| SELECT | |||
| 0::bigint AS mco_rss_id, | |||
| 0::bigint AS act_sejour_id, | |||
| ''::text AS fac_code, | |||
| ''::text AS fac_code_orig, | |||
| 0 AS from_eco, | |||
| 0 AS nombre, | |||
| 0 AS montant_facture | |||
| ; | |||
| DROP TABLE IF EXISTS w_ghs; | |||
| CREATE TEMP TABLE w_ghs AS | |||
| SELECT | |||
| 0::bigint AS mco_rss_id, | |||
| 0::bigint AS act_sejour_id, | |||
| 0::int AS encours, | |||
| 0::numeric AS ca_ghs_theorique | |||
| ; | |||
| IF _module_pmsimco = '1' THEN | |||
| INSERT INTO w_fac | |||
| SELECT | |||
| rss_id AS mco_rss_id, | |||
| 0::bigint AS act_sejour_id, | |||
| lpp_code AS fac_code, | |||
| '', | |||
| COALESCE(from_eco,0), | |||
| sum(nombre) AS nombre, | |||
| sum(montant_facture) AS montant_facture | |||
| FROM pmsi.v_rss_lpp_1 | |||
| WHERE rss_id = ANY(ARRAY(SELECT rss_id FROM w_mvt_sejours)) | |||
| GROUP BY 1,2,3,4,5 | |||
| ; | |||
| INSERT INTO w_fac | |||
| SELECT | |||
| rss_id AS mco_rss_id, | |||
| 0::bigint AS act_sejour_id, | |||
| ucd_code AS fac_code, | |||
| '', | |||
| COALESCE(from_eco,0), | |||
| sum(nombre) AS nombre, | |||
| sum(montant_facture) AS montant_facture | |||
| FROM pmsi.v_rss_ucd_1 | |||
| WHERE rss_id = ANY(ARRAY(SELECT rss_id FROM w_mvt_sejours)) | |||
| GROUP BY 1,2,3,4,5 | |||
| ; | |||
| INSERT INTO w_ghs | |||
| SELECT | |||
| v_rss_1.rss_id AS mco_rss_id, | |||
| 0, | |||
| 0::bigint AS act_sejour_id, | |||
| SUM(ca_ghs_theorique) AS ca_ghs_theorique | |||
| FROM pmsi.v_rss_1 | |||
| WHERE ca_ghs_theorique != 0 | |||
| AND rss_id = ANY(ARRAY(SELECT rss_id FROM w_mvt_sejours)) | |||
| GROUP BY 1,2,3 | |||
| ; | |||
| END IF; | |||
| IF _module_activite = '1' THEN | |||
| INSERT INTO w_fac | |||
| SELECT | |||
| p_sejour_pmsi.rss_id, | |||
| p_sejours.oid AS act_sejour_id, | |||
| CASE WHEN lpp_id != 0 THEN t_lpp.code | |||
| WHEN ucd_id != 0 THEN t_ucd.code | |||
| WHEN t_prestations.code IN ('PME','PII') THEN 'LPP' || (montant_facture+montant_encours)::text | |||
| ELSE 'UCD' || (montant_facture+montant_encours)::text END, | |||
| '', | |||
| 0 AS from_eco, | |||
| sum(nb_prestation), | |||
| sum(montant_facture + montant_encours) | |||
| FROM | |||
| activite.v_factures_lignes_c_5 | |||
| JOIN activite.p_sejours ON v_factures_lignes_c_5.no_sejour = p_sejours.no_sejour | |||
| JOIN activite.p_sejour_pmsi ON v_factures_lignes_c_5.no_sejour = p_sejour_pmsi.no_sejour | |||
| LEFT JOIN base.t_ucd on ucd_id = t_ucd.oid | |||
| LEFT JOIN base.t_lpp on lpp_id = t_lpp.oid | |||
| JOIN activite.t_prestations ON prestation_id = t_prestations.oid AND t_prestations.code IN ('PII','PME','LPP','PH8','PHX','UCD') | |||
| WHERE | |||
| p_sejours.oid = ANY(ARRAY(SELECT sejour_id FROM w_mvt_sejours)) AND | |||
| (p_sejour_pmsi.rss_id = 0 OR (p_sejour_pmsi.rss_id,COALESCE(t_ucd.code,t_lpp.code)) NOT IN (SELECT mco_rss_id, fac_code FROM w_fac)) | |||
| GROUP BY 1,2,3,4,5 | |||
| ; | |||
| INSERT INTO w_ghs | |||
| SELECT | |||
| p_sejour_pmsi.rss_id, | |||
| p_sejours.oid AS act_sejour_id, | |||
| CASE WHEN montant_encours != 0 THEN 1 ELSE 0 END as encours, | |||
| sum(montant_facture + montant_encours) as ca_ghs_theorique | |||
| FROM | |||
| activite.v_factures_lignes_c_1 | |||
| JOIN activite.p_sejours ON v_factures_lignes_c_1.no_sejour = p_sejours.no_sejour | |||
| LEFT JOIN activite.p_sejour_pmsi ON v_factures_lignes_c_1.no_sejour = p_sejour_pmsi.no_sejour | |||
| WHERE | |||
| prestation_code = 'GHS' AND | |||
| p_sejours.oid = ANY(ARRAY(SELECT sejour_id FROM w_mvt_sejours)) AND | |||
| (p_sejour_pmsi.rss_id = 0 OR p_sejour_pmsi.rss_id NOT IN (SELECT mco_rss_id FROM w_ghs)) | |||
| GROUP BY 1,2,3 | |||
| ; | |||
| UPDATE w_ghs | |||
| SET encours = 1 | |||
| FROM | |||
| activite.v_factures_lignes_c_1 | |||
| JOIN activite.p_sejours ON v_factures_lignes_c_1.no_sejour = p_sejours.no_sejour | |||
| LEFT JOIN activite.p_sejour_pmsi ON v_factures_lignes_c_1.no_sejour = p_sejour_pmsi.no_sejour | |||
| WHERE | |||
| prestation_code = 'GHS' AND | |||
| montant_encours != 0 AND | |||
| p_sejour_pmsi.rss_id = mco_rss_id | |||
| ; | |||
| END IF; | |||
| CREATE INDEX w_fac_i1 on w_fac USING btree (mco_rss_id); | |||
| CREATE INDEX w_fac_i2 on w_fac USING btree (act_sejour_id); | |||
| CREATE INDEX w_ghs_i1 on w_ghs USING btree (mco_rss_id); | |||
| CREATE INDEX w_ghs_i2 on w_ghs USING btree (act_sejour_id); | |||
| ANALYSE w_fac; | |||
| ANALYSe w_ghs; | |||
| UPDATE w_fac | |||
| SET fac_code_orig = w_fac.fac_code | |||
| ,fac_code = sub.code | |||
| FROM ( | |||
| SELECT w_fac.* | |||
| ,sub.* | |||
| FROM w_fac | |||
| JOIN ( | |||
| SELECT sejour_id | |||
| ,rss_id | |||
| ,code | |||
| ,sortie_montant | |||
| FROM w_mvt_sejours | |||
| LEFT JOIN w_fac ON ( | |||
| rss_id = mco_rss_id | |||
| AND rss_id != 0 | |||
| OR sejour_id = act_sejour_id | |||
| AND sejour_id != 0 | |||
| ) | |||
| AND code = fac_code | |||
| WHERE | |||
| COALESCE(from_eco,1) != 0 | |||
| ) sub ON ( | |||
| rss_id = mco_rss_id | |||
| AND rss_id != 0 | |||
| OR sejour_id = act_sejour_id | |||
| AND sejour_id != 0 | |||
| ) | |||
| LEFT JOIN w_mvt_sejours ON ( | |||
| w_mvt_sejours.rss_id = mco_rss_id | |||
| AND w_mvt_sejours.rss_id != 0 | |||
| OR w_mvt_sejours.sejour_id = act_sejour_id | |||
| AND w_mvt_sejours.sejour_id != 0 | |||
| ) | |||
| AND w_mvt_sejours.code = fac_code | |||
| WHERE w_mvt_sejours.code IS NULL | |||
| AND base.cti_division(abs(sub.sortie_montant - montant_facture), sub.sortie_montant) < 0.01 | |||
| ) sub | |||
| WHERE ( | |||
| sub.mco_rss_id = w_fac.mco_rss_id | |||
| AND sub.act_sejour_id = w_fac.act_sejour_id | |||
| AND sub.fac_code = w_fac.fac_code | |||
| ); | |||
| UPDATE eco.p_sejours | |||
| SET ca_ghs = ca_ghs_theorique, | |||
| encours = w_ghs.encours | |||
| FROM w_ghs | |||
| WHERE p_sejours.sejour_id = w_ghs.act_sejour_id AND w_ghs.act_sejour_id != 0 | |||
| ; | |||
| UPDATE eco.p_sejours | |||
| SET ca_ghs = ca_ghs_theorique, | |||
| encours = w_ghs.encours | |||
| FROM w_ghs | |||
| WHERE p_sejours.rss_id = w_ghs.mco_rss_id AND w_ghs.mco_rss_id != 0 AND | |||
| ca_ghs = 0 | |||
| ; | |||
| UPDATE w_fac | |||
| SET fac_code_orig = w_fac.fac_code | |||
| ,fac_code = sub.code | |||
| FROM ( | |||
| SELECT w_fac.* | |||
| ,sub.* | |||
| FROM w_fac | |||
| JOIN ( | |||
| SELECT sejour_id | |||
| ,rss_id | |||
| ,code | |||
| ,sortie_montant | |||
| FROM w_mvt_sejours | |||
| LEFT JOIN w_fac ON ( | |||
| rss_id = mco_rss_id | |||
| AND rss_id != 0 | |||
| OR sejour_id = act_sejour_id | |||
| AND sejour_id != 0 | |||
| ) | |||
| AND code = fac_code | |||
| WHERE | |||
| COALESCE(from_eco,1) != 0 | |||
| ) sub ON ( | |||
| rss_id = mco_rss_id | |||
| AND rss_id != 0 | |||
| OR sejour_id = act_sejour_id | |||
| AND sejour_id != 0 | |||
| ) | |||
| LEFT JOIN w_mvt_sejours ON ( | |||
| w_mvt_sejours.rss_id = mco_rss_id | |||
| AND w_mvt_sejours.rss_id != 0 | |||
| OR w_mvt_sejours.sejour_id = act_sejour_id | |||
| AND w_mvt_sejours.sejour_id != 0 | |||
| ) | |||
| AND w_mvt_sejours.code = fac_code | |||
| WHERE w_mvt_sejours.code IS NULL | |||
| AND base.cti_division(abs(sub.sortie_montant - montant_facture), sub.sortie_montant) < 0.1 | |||
| ) sub | |||
| WHERE ( | |||
| sub.mco_rss_id = w_fac.mco_rss_id | |||
| AND sub.act_sejour_id = w_fac.act_sejour_id | |||
| AND sub.fac_code = w_fac.fac_code | |||
| ); | |||
| UPDATE eco.p_sejours | |||
| SET ca_ghs = ca_ghs_theorique, | |||
| encours = w_ghs.encours | |||
| FROM w_ghs | |||
| WHERE p_sejours.sejour_id = w_ghs.act_sejour_id AND w_ghs.act_sejour_id != 0 | |||
| ; | |||
| UPDATE eco.p_sejours | |||
| SET ca_ghs = ca_ghs_theorique, | |||
| encours = w_ghs.encours | |||
| FROM w_ghs | |||
| WHERE p_sejours.rss_id = w_ghs.mco_rss_id AND w_ghs.mco_rss_id != 0 AND ca_ghs = 0 | |||
| ; | |||
| DROP TABLE IF EXISTS w_fac_sej; | |||
| CREATE TEMP TABLE w_fac_sej AS | |||
| SELECT w_fac.*, mouvement_id | |||
| FROM w_fac JOIN eco.p_sejours ON ( | |||
| rss_id != 0 AND mco_rss_id != 0 AND rss_id = mco_rss_id) | |||
| ; | |||
| INSERT INTO w_fac_sej | |||
| SELECT w_fac.*, p_sejours.mouvement_id | |||
| FROM w_fac JOIN eco.p_sejours ON ( | |||
| sejour_id != 0 | |||
| AND act_sejour_id != 0 | |||
| AND sejour_id = act_sejour_id) | |||
| LEFT JOIN (SELECT DISTINCT mouvement_id FROM w_fac_sej) sub ON sub.mouvement_id = p_sejours.mouvement_id | |||
| WHERE sub.mouvement_id IS NULL | |||
| ; | |||
| UPDATE eco.p_mouvements_articles | |||
| SET quantite_ligne_facture = nombre, | |||
| montant_ligne_facture = montant_facture | |||
| FROM | |||
| w_fac_sej | |||
| LEFT JOIN eco.t_lpp_c ON w_fac_sej.fac_code = t_lpp_c.code | |||
| LEFT JOIN eco.t_ucd_c ON w_fac_sej.fac_code = t_ucd_c.code | |||
| WHERE | |||
| mouvement_id = p_mouvements_articles.oid | |||
| AND (lpp_id = t_lpp_c.oid | |||
| OR ucd_id = t_ucd_c.oid) | |||
| ; | |||
| IF _module_pmsimco = '1' AND (SELECT count(*) FROM eco.t_divers WHERE code = 'UPDATE_PMSI' AND valeur = '1') = 1 THEN | |||
| BEGIN | |||
| -- maj et ajout des ucd | |||
| DELETE FROM pmsi.p_rss_ucd | |||
| WHERE from_eco = 1 | |||
| ; | |||
| UPDATE pmsi.p_rss_ucd | |||
| SET | |||
| montant_consommation = sortie_montant | |||
| FROM eco.p_sejours | |||
| JOIN pmsi.p_rss ON p_rss.oid = p_sejours.rss_id | |||
| JOIN eco.p_mouvements_articles ON p_mouvements_articles.oid = mouvement_id | |||
| JOIN eco.t_ucd_c ON t_ucd_c.oid = p_mouvements_articles.ucd_id AND p_mouvements_articles.ucd_id != 0 | |||
| JOIN pmsi.t_ucd ON t_ucd.code = t_ucd_c.code | |||
| JOIN pmsi.t_ucd_tarifs ON t_ucd.oid = t_ucd_tarifs.ucd_id AND date BETWEEN t_ucd_tarifs.date_debut AND t_ucd_tarifs.date_fin | |||
| WHERE p_rss_ucd.rss_id = p_rss.oid AND t_ucd.oid = p_rss_ucd.ucd_id AND sortie_quantite = nombre | |||
| ; | |||
| INSERT INTO pmsi.p_rss_ucd ( | |||
| finess, | |||
| no_rss, | |||
| date_ucd, | |||
| ucd_id, | |||
| nombre, | |||
| prix_unitaire_achat, | |||
| montant_consommation, | |||
| rss_id, | |||
| type_ucd_id, | |||
| from_eco) | |||
| SELECT | |||
| p_rss.finess, | |||
| p_rss.no_rss, | |||
| date, | |||
| t_ucd.oid, | |||
| sortie_quantite, | |||
| COALESCE(prix_unitaire_ttc,prix_unitaire), | |||
| sortie_montant, | |||
| p_rss.oid, | |||
| CASE WHEN t_ucd_tarifs.ucd_id IS NULL OR top_taa = 0 THEN 0 ELSE 1 END , | |||
| 1 | |||
| FROM eco.p_sejours | |||
| JOIN pmsi.p_rss ON p_rss.oid = p_sejours.rss_id | |||
| JOIN eco.p_mouvements_articles ON p_mouvements_articles.oid = mouvement_id | |||
| JOIN eco.t_ucd_c ON t_ucd_c.oid = p_mouvements_articles.ucd_id AND p_mouvements_articles.ucd_id != 0 | |||
| JOIN pmsi.t_ucd ON t_ucd.code = t_ucd_c.code | |||
| LEFT JOIN pmsi.t_ucd_tarifs ON t_ucd.oid = t_ucd_tarifs.ucd_id AND date BETWEEN t_ucd_tarifs.date_debut AND t_ucd_tarifs.date_fin | |||
| LEFT JOIN pmsi.p_rss_ucd ON p_rss_ucd.rss_id = p_rss.oid AND t_ucd.oid = p_rss_ucd.ucd_id | |||
| WHERE p_rss_ucd.ucd_id IS NULL AND type_mouvement_id IN | |||
| (SELECT to_id FROM eco.t_classes JOIN eco.t_classes_sections on classe_id = t_classes.oid | |||
| JOIN eco.t_classes_sections_elements ON section_id = t_classes_sections.oid | |||
| WHERE t_classes.code = 'CTI_TYPMVT' AND t_classes_sections.code = '01') | |||
| ; | |||
| -- maj et ajout des lpp | |||
| DELETE FROM pmsi.p_rss_lpp | |||
| WHERE from_eco = 1 | |||
| ; | |||
| UPDATE pmsi.p_rss_lpp | |||
| SET | |||
| montant_consommation = sortie_montant | |||
| FROM eco.p_sejours | |||
| JOIN pmsi.p_rss ON p_rss.oid = p_sejours.rss_id | |||
| JOIN eco.p_mouvements_articles ON p_mouvements_articles.oid = mouvement_id | |||
| JOIN eco.t_lpp_c ON t_lpp_c.oid = p_mouvements_articles.lpp_id AND p_mouvements_articles.lpp_id != 0 | |||
| JOIN pmsi.t_lpp ON t_lpp.code = t_lpp_c.code | |||
| JOIN pmsi.t_lpp_tarifs ON t_lpp.oid = t_lpp_tarifs.lpp_id AND date BETWEEN t_lpp_tarifs.date_debut AND t_lpp_tarifs.date_fin | |||
| WHERE p_rss_lpp.rss_id = p_rss.oid AND t_lpp.oid = p_rss_lpp.lpp_id AND sortie_quantite = nombre | |||
| ; | |||
| INSERT INTO pmsi.p_rss_lpp ( | |||
| finess, | |||
| no_rss, | |||
| date_lpp, | |||
| lpp_id, | |||
| nombre, | |||
| prix_unitaire, | |||
| montant_consommation, | |||
| rss_id, | |||
| type_lpp_id, | |||
| from_eco) | |||
| SELECT | |||
| p_rss.finess, | |||
| p_rss.no_rss, | |||
| date, | |||
| t_lpp.oid, | |||
| sortie_quantite, | |||
| COALESCE(t_lpp_tarifs.prix_unitaire, p_mouvements_articles.prix_unitaire), | |||
| sortie_montant, | |||
| p_rss.oid, | |||
| CASE WHEN annexe = 1 OR (annexe = 2 AND type_etablissement = 1) THEN 1 ELSE 0 END , | |||
| 1 | |||
| FROM eco.p_sejours | |||
| JOIN pmsi.p_rss ON p_rss.oid = p_sejours.rss_id | |||
| JOIN base.t_finess ON finess = t_finess.code | |||
| JOIN eco.p_mouvements_articles ON p_mouvements_articles.oid = mouvement_id | |||
| JOIN eco.t_lpp_c ON t_lpp_c.oid = p_mouvements_articles.lpp_id AND p_mouvements_articles.lpp_id != 0 | |||
| JOIN pmsi.t_lpp ON t_lpp.code = t_lpp_c.code | |||
| LEFT JOIN base.t_lpp_sus ON t_lpp.oid = t_lpp_sus.lpp_id AND date BETWEEN t_lpp_sus.date_debut AND t_lpp_sus.date_fin | |||
| LEFT JOIN pmsi.t_lpp_tarifs ON t_lpp.oid = t_lpp_tarifs.lpp_id AND date BETWEEN t_lpp_tarifs.date_debut AND t_lpp_tarifs.date_fin | |||
| LEFT JOIN pmsi.p_rss_lpp ON p_rss_lpp.rss_id = p_rss.oid AND t_lpp.oid = p_rss_lpp.lpp_id | |||
| WHERE p_rss_lpp.lpp_id IS NULL AND type_mouvement_id IN | |||
| (SELECT to_id FROM eco.t_classes JOIN eco.t_classes_sections on classe_id = t_classes.oid | |||
| JOIN eco.t_classes_sections_elements ON section_id = t_classes_sections.oid | |||
| WHERE t_classes.code = 'CTI_TYPMVT' AND t_classes_sections.code = 'CO') | |||
| ; | |||
| END; | |||
| END IF; | |||
| -- Mise à jour des prestation PII et PH8 | |||
| IF _module_activite = '1' AND _module_pmsimco = '1' AND false THEN | |||
| BEGIN | |||
| -- maj et ajout des lpp | |||
| DELETE FROM activite.p_factures_lignes_non_facturees_c | |||
| WHERE from_eco = 1 | |||
| ; | |||
| DROP TABLE IF EXISTS w_factures_lignes_non_facturees_c; | |||
| CREATE TEMP TABLE w_factures_lignes_non_facturees_c AS | |||
| SELECT | |||
| finess, | |||
| sejour_id, | |||
| sejour_act.no_sejour, | |||
| ghs_id, | |||
| date, | |||
| lieu_sortie_id, | |||
| t_prestations.code, | |||
| t_lpp_tarifs.prix_unitaire, | |||
| t_lpp_tarifs.prix_unitaire * sortie_quantite AS montant_non_facture, | |||
| sortie_quantite, | |||
| sejour_act.date_entree, | |||
| sejour_act.date_sortie | |||
| FROM eco.p_sejours | |||
| JOIN eco.p_mouvements_articles ON mouvement_id = p_mouvements_articles.oid | |||
| JOIN activite.p_sejours sejour_act ON p_sejours.sejour_id = sejour_act.oid | |||
| LEFT JOIN base.t_finess ON sejour_act.finess = t_finess.code | |||
| JOIN eco.t_lpp_c on lpp_id = t_lpp_c.oid | |||
| JOIN pmsi.t_lpp on t_lpp_c.code = t_lpp.code | |||
| JOIN pmsi.t_prestations on t_lpp.prestation_defaut_id = t_prestations.oid | |||
| JOIN base.t_lpp_sus on t_lpp_sus.lpp_id = t_lpp.oid AND date BETWEEN t_lpp_sus.date_debut AND t_lpp_sus.date_fin | |||
| JOIN pmsi.t_lpp_tarifs on t_lpp_tarifs.lpp_id = t_lpp.oid AND date BETWEEN t_lpp_tarifs.date_debut AND t_lpp_tarifs.date_fin | |||
| WHERE p_mouvements_articles.lpp_id != 0 | |||
| AND (annexe = 1 OR annexe = 2 AND COALESCE(type_etablissement,'1') = '1') | |||
| AND type_sejour = '1' | |||
| ; | |||
| DELETE FROM w_factures_lignes_non_facturees_c | |||
| USING activite.p_factures | |||
| JOIN activite.p_factures_lignes_c ON facture_id = p_factures.oid | |||
| JOIN activite.t_prestations ON p_factures_lignes_c.prestation_id = t_prestations.oid | |||
| WHERE | |||
| p_factures.sejour_id = w_factures_lignes_non_facturees_c.sejour_id AND | |||
| (t_prestations.code = w_factures_lignes_non_facturees_c.code OR code_cloture = 'H') | |||
| ; | |||
| INSERT INTO activite.p_factures ( | |||
| sejour_id, | |||
| finess, | |||
| no_sejour, | |||
| no_facture, | |||
| no_facture_reference, | |||
| type_facture, | |||
| code_facture, | |||
| date_facture, | |||
| ghs_id, | |||
| date_debut, | |||
| date_fin, | |||
| montant_encours_c) | |||
| SELECT | |||
| w_factures_lignes_non_facturees_c.sejour_id, | |||
| w_factures_lignes_non_facturees_c.finess, | |||
| w_factures_lignes_non_facturees_c.no_sejour, | |||
| 'E' || w_factures_lignes_non_facturees_c.no_sejour, | |||
| 'E' || w_factures_lignes_non_facturees_c.no_sejour, | |||
| 'E', | |||
| '0', | |||
| '20991231'::date, | |||
| w_factures_lignes_non_facturees_c.ghs_id, | |||
| date_entree AS date_debut, | |||
| date_sortie AS date_fin, | |||
| sum(prix_unitaire * sortie_quantite) | |||
| FROM w_factures_lignes_non_facturees_c | |||
| LEFT JOIN activite.p_factures ON p_factures.sejour_id = w_factures_lignes_non_facturees_c.sejour_id AND montant_encours_c != 0 | |||
| WHERE p_factures.no_facture IS NULL | |||
| GROUP BY 1,2,3,4,5,6,7,8,9,10,11; | |||
| INSERT INTO activite.p_factures_lignes_non_facturees_c( | |||
| no_facture, | |||
| date_debut, | |||
| date_fin, | |||
| nb_rubrique, | |||
| coefficient, | |||
| rubrique_facturation_id, | |||
| prestation_id, | |||
| prix_unitaire, | |||
| lieu_id, | |||
| from_eco) | |||
| SELECT | |||
| no_facture, | |||
| date, | |||
| date, | |||
| sortie_quantite, | |||
| 1, | |||
| 0, | |||
| t_prestations.oid, | |||
| prix_unitaire, | |||
| lieu_sortie_id, | |||
| 1 | |||
| FROM w_factures_lignes_non_facturees_c | |||
| JOIN activite.p_factures ON w_factures_lignes_non_facturees_c.sejour_id = p_factures.sejour_id | |||
| AND montant_encours_c != 0 | |||
| LEFT JOIN activite.t_prestations ON w_factures_lignes_non_facturees_c.code = t_prestations.code | |||
| --LEFT JOIN activite.t_rubriques_facturation ON w_factures_lignes_non_facturees_c.code = t_prestations.code | |||
| ; | |||
| -- maj et ajout des ucd | |||
| DROP TABLE IF EXISTS w_factures_lignes_non_facturees_c; | |||
| CREATE TEMP TABLE w_factures_lignes_non_facturees_c AS | |||
| SELECT | |||
| finess, | |||
| sejour_id, | |||
| sejour_act.no_sejour, | |||
| ghs_id, | |||
| date, | |||
| lieu_sortie_id, | |||
| t_prestations.code, | |||
| t_ucd_tarifs.prix_unitaire_ttc, | |||
| sortie_montant, | |||
| sortie_quantite, | |||
| sejour_act.date_entree, | |||
| sejour_act.date_sortie | |||
| FROM eco.p_sejours | |||
| JOIN eco.p_mouvements_articles ON mouvement_id = p_mouvements_articles.oid | |||
| JOIN activite.p_sejours sejour_act ON p_sejours.sejour_id = sejour_act.oid | |||
| LEFT JOIN base.t_finess ON sejour_act.finess = t_finess.code | |||
| JOIN eco.t_ucd_c on ucd_id = t_ucd_c.oid | |||
| JOIN pmsi.t_ucd on t_ucd_c.code = t_ucd.code | |||
| JOIN pmsi.t_prestations on t_ucd.prestation_defaut_id = t_prestations.oid | |||
| JOIN pmsi.t_ucd_tarifs on t_ucd_tarifs.ucd_id = t_ucd.oid AND date BETWEEN t_ucd_tarifs.date_debut AND t_ucd_tarifs.date_fin | |||
| WHERE p_mouvements_articles.ucd_id != 0 | |||
| AND type_sejour = '1' | |||
| ; | |||
| DELETE FROM w_factures_lignes_non_facturees_c | |||
| USING activite.p_factures | |||
| JOIN activite.p_factures_lignes_c ON facture_id = p_factures.oid | |||
| JOIN activite.t_prestations ON p_factures_lignes_c.prestation_id = t_prestations.oid | |||
| WHERE | |||
| p_factures.sejour_id = w_factures_lignes_non_facturees_c.sejour_id AND | |||
| (t_prestations.code = w_factures_lignes_non_facturees_c.code OR code_cloture = 'H') | |||
| ; | |||
| INSERT INTO activite.p_factures ( | |||
| sejour_id, | |||
| finess, | |||
| no_sejour, | |||
| no_facture, | |||
| no_facture_reference, | |||
| type_facture, | |||
| code_facture, | |||
| date_facture, | |||
| ghs_id, | |||
| date_debut, | |||
| date_fin, | |||
| montant_encours_c) | |||
| SELECT | |||
| w_factures_lignes_non_facturees_c.sejour_id, | |||
| w_factures_lignes_non_facturees_c.finess, | |||
| w_factures_lignes_non_facturees_c.no_sejour, | |||
| 'E' || w_factures_lignes_non_facturees_c.no_sejour, | |||
| 'E' || w_factures_lignes_non_facturees_c.no_sejour, | |||
| 'E', | |||
| '0', | |||
| '20991231'::date, | |||
| w_factures_lignes_non_facturees_c.ghs_id, | |||
| date_entree AS date_debut, | |||
| date_sortie AS date_fin, | |||
| sum(prix_unitaire_ttc * sortie_quantite) | |||
| FROM w_factures_lignes_non_facturees_c | |||
| LEFT JOIN activite.p_factures ON p_factures.sejour_id = w_factures_lignes_non_facturees_c.sejour_id AND montant_encours_c != 0 | |||
| WHERE p_factures.no_facture IS NULL | |||
| GROUP BY 1,2,3,4,5,6,7,8,9,10,11; | |||
| INSERT INTO activite.p_factures_lignes_non_facturees_c( | |||
| no_facture, | |||
| date_debut, | |||
| date_fin, | |||
| nb_rubrique, | |||
| coefficient, | |||
| rubrique_facturation_id, | |||
| prestation_id, | |||
| prix_unitaire, | |||
| lieu_id) | |||
| SELECT | |||
| no_facture, | |||
| date, | |||
| date, | |||
| prix_unitaire_ttc * sortie_quantite, | |||
| 1, | |||
| 0, | |||
| t_prestations.oid, | |||
| prix_unitaire_ttc, | |||
| lieu_sortie_id | |||
| FROM w_factures_lignes_non_facturees_c | |||
| JOIN activite.p_factures ON w_factures_lignes_non_facturees_c.sejour_id = p_factures.sejour_id | |||
| AND montant_encours_c != 0 | |||
| LEFT JOIN activite.t_prestations ON w_factures_lignes_non_facturees_c.code = t_prestations.code | |||
| --LEFT JOIN activite.t_rubriques_facturation ON w_factures_lignes_non_facturees_c.code = t_prestations.code | |||
| ; | |||
| END; | |||
| END IF; | |||
| REINDEX TABLE eco.p_sejours; | |||
| RETURN 'OK'; | |||
| END; | |||
| @ -0,0 +1,233 @@ | |||
| return: text | |||
| lang: plpgsql | |||
| src: | | |||
| DECLARE | |||
| result TEXT; | |||
| _module_pmsimco TEXT; | |||
| BEGIN | |||
| RAISE NOTICE '%' , 'Initialisation Selon compte'; | |||
| DROP TABLE IF EXISTS w_compte_article; | |||
| CREATE TEMP TABLE w_compte_article AS | |||
| SELECT | |||
| t_compte.code AS compte_code, | |||
| t_compte.texte AS compte_texte, | |||
| CASE | |||
| WHEN t_compte.texte LIKE '%DMI%' THEN 'DMI' | |||
| WHEN t_compte.texte ILIKE '%prothese%' THEN 'DMI' | |||
| WHEN t_compte.texte ILIKE '%prothèse%' THEN 'DMI' | |||
| WHEN t_compte.texte ILIKE '%dispo%' AND t_compte.texte ILIKE '%implant%' THEN 'DMI' | |||
| WHEN t_compte.texte LIKE '%DM %' THEN 'DM' | |||
| WHEN t_compte.texte LIKE '% DM%' THEN 'DM' | |||
| WHEN t_compte.texte ILIKE '%medicament%' THEN 'MED' | |||
| WHEN t_compte.texte ILIKE '%médicament%' THEN 'MED' | |||
| WHEN t_compte.texte ILIKE '%pharmacie%' THEN 'MED' | |||
| WHEN t_compte.texte ILIKE '%produit%' AND t_compte.texte ILIKE '%entretien%' THEN 'ECO' | |||
| WHEN t_compte.texte ILIKE '%sang%' THEN 'MED' | |||
| WHEN 1<>1 THEN '' | |||
| ELSE '' END AS type_article_cti_code | |||
| FROM eco.t_articles | |||
| JOIN eco.t_compte ON compte_id = t_compte.oid | |||
| WHERE compte_id <> 0 AND | |||
| ( | |||
| t_compte.code LIKE '467%' OR | |||
| t_compte.code LIKE '60%' | |||
| ) AND | |||
| ( | |||
| t_articles.oid IN (SELECT article_id FROM eco.p_lignes_commandes) OR | |||
| t_articles.oid IN (SELECT article_id FROM eco.p_mouvements_articles) | |||
| ) | |||
| GROUP BY 1,2,3 | |||
| ORDER BY 1 | |||
| ; | |||
| DROP TABLE IF EXISTS w_type_article_cti_rule; | |||
| CREATE TEMP TABLE w_type_article_cti_rule AS | |||
| SELECT type_article_cti_code, | |||
| 'Défaut CTI selon compte ' || t_type_article_cti.texte AS type_article_cti_rule_texte, | |||
| t_type_article_cti.oid AS type_article_cti_id, | |||
| CASE type_article_cti_code | |||
| WHEN 'DMI' THEN 70001 | |||
| WHEN 'DM' THEN 70002 | |||
| WHEN 'MED' THEN 70003 | |||
| WHEN 'ECO' THEN 70004 | |||
| END AS priorite, | |||
| array_to_string(base.cti_array_accum(compte_code),',') AS liste_compte | |||
| FROM w_compte_article | |||
| JOIN eco.t_type_article_cti ON t_type_article_cti.code = type_article_cti_code | |||
| WHERE type_article_cti_code <> '' | |||
| GROUP BY 1,2,3,4 | |||
| ; | |||
| INSERT INTO w_type_article_cti_rule | |||
| SELECT | |||
| t_type_article_cti.code, | |||
| CASE WHEN t_type_article_cti.code <> 'ZZZ' THEN 'Défaut CTI selon racine de compte ' || t_type_article_cti.texte ELSE 'Défaut CTI Autres' END AS type_article_cti_rule_texte, | |||
| t_type_article_cti.oid, | |||
| CASE t_type_article_cti.code | |||
| WHEN 'ECO' THEN 70009 | |||
| WHEN 'ZZZ' THEN 99999 | |||
| END AS priorite, | |||
| CASE t_type_article_cti.code | |||
| WHEN 'ECO' THEN '2%,61%,62%' | |||
| WHEN 'ZZZ' THEN '' | |||
| END AS liste_compte | |||
| FROM eco.t_type_article_cti | |||
| WHERE code IN ('ECO','ZZZ') | |||
| ; | |||
| INSERT INTO eco.t_type_article_cti_rule( | |||
| texte, | |||
| priorite, | |||
| type_article_cti_id, | |||
| liste_compte | |||
| ) | |||
| SELECT | |||
| type_article_cti_rule_texte AS texte, | |||
| priorite, | |||
| type_article_cti_id, | |||
| liste_compte | |||
| FROM w_type_article_cti_rule | |||
| WHERE w_type_article_cti_rule.priorite NOT IN (SELECT t_type_article_cti_rule.priorite FROM eco.t_type_article_cti_rule) | |||
| ; | |||
| UPDATE eco.t_type_article_cti_rule SET | |||
| texte = type_article_cti_rule_texte, | |||
| type_article_cti_id = w_type_article_cti_rule.type_article_cti_id, | |||
| liste_compte = w_type_article_cti_rule.liste_compte | |||
| FROM w_type_article_cti_rule | |||
| WHERE t_type_article_cti_rule.priorite = w_type_article_cti_rule.priorite AND | |||
| ( | |||
| t_type_article_cti_rule.texte IS DISTINCT FROM type_article_cti_rule_texte OR | |||
| t_type_article_cti_rule.type_article_cti_id IS DISTINCT FROM w_type_article_cti_rule.type_article_cti_id OR | |||
| t_type_article_cti_rule.liste_compte IS DISTINCT FROM w_type_article_cti_rule.liste_compte | |||
| ) | |||
| ; | |||
| -- Traduction des règles en oid | |||
| RAISE NOTICE '%' , 'Application des regles. Traduction en oid'; | |||
| DROP TABLE IF EXISTS w_type_article_cti_rule; | |||
| CREATE TEMP TABLE w_type_article_cti_rule AS | |||
| SELECT | |||
| t_type_article_cti_rule.oid, | |||
| type_article_cti_id, | |||
| priorite, | |||
| CASE WHEN liste_article <> '' THEN '1' ELSE '0' END AS a_liste_article, | |||
| string_to_array(translate(liste_article,'*,','% '),' ') AS liste_article, | |||
| NULL::bigint[] AS liste_article_id , | |||
| CASE WHEN liste_type_article <> '' THEN '1' ELSE '0' END AS a_liste_type_article, | |||
| string_to_array(translate(liste_type_article,'*,','% '),' ') AS liste_type_article, | |||
| NULL::bigint[] AS liste_type_article_id , | |||
| CASE WHEN liste_famille <> '' THEN '1' ELSE '0' END AS a_liste_famille, | |||
| string_to_array(translate(liste_famille,'*,','% '),' ') AS liste_famille, | |||
| NULL::bigint[] AS liste_famille_id, | |||
| CASE WHEN liste_sous_famille <> '' THEN '1' ELSE '0' END AS a_liste_sous_famille, | |||
| string_to_array(translate(liste_sous_famille,'*,','% '),' ') AS liste_sous_famille, | |||
| NULL::bigint[] AS liste_sous_famille_id, | |||
| CASE WHEN liste_categorie <> '' THEN '1' ELSE '0' END AS a_liste_categorie, | |||
| string_to_array(translate(liste_categorie,'*,','% '),' ') AS liste_categorie, | |||
| NULL::bigint[] AS liste_categorie_id, | |||
| CASE WHEN liste_sous_categorie <> '' THEN '1' ELSE '0' END AS a_liste_sous_categorie, | |||
| string_to_array(translate(liste_sous_categorie,'*,','% '),' ') AS liste_sous_categorie, | |||
| NULL::bigint[] AS liste_sous_categorie_id, | |||
| CASE WHEN liste_compte <> '' THEN '1' ELSE '0' END AS a_liste_compte, | |||
| string_to_array(translate(liste_compte,'*,','% '),' ') AS liste_compte, | |||
| NULL::bigint[] AS liste_compte_id | |||
| FROM eco.t_type_article_cti_rule | |||
| JOIN eco.t_type_article_cti ON type_article_cti_id = t_type_article_cti.oid | |||
| ORDER BY priorite, type_article_cti_id; | |||
| UPDATE w_type_article_cti_rule | |||
| SET liste_article_id = (SELECT base.cti_group_array3(oid) FROM eco.t_articles WHERE oid <> 0 AND code LIKE ANY (liste_article)) | |||
| WHERE a_liste_article = '1'; | |||
| UPDATE w_type_article_cti_rule | |||
| SET liste_type_article_id = (SELECT base.cti_group_array3(oid) FROM eco.t_types_articles WHERE oid <> 0 AND code LIKE ANY (liste_type_article)) | |||
| WHERE a_liste_type_article = '1'; | |||
| UPDATE w_type_article_cti_rule | |||
| SET liste_famille_id = (SELECT base.cti_group_array3(oid) FROM eco.t_familles_articles WHERE oid <> 0 AND code LIKE ANY (liste_famille)) | |||
| WHERE a_liste_famille = '1'; | |||
| UPDATE w_type_article_cti_rule | |||
| SET liste_sous_famille_id = (SELECT base.cti_group_array3(oid) FROM eco.t_sous_familles_articles WHERE oid <> 0 AND code LIKE ANY (liste_sous_famille)) | |||
| WHERE a_liste_sous_famille = '1'; | |||
| UPDATE w_type_article_cti_rule | |||
| SET liste_categorie_id = (SELECT base.cti_group_array3(oid) FROM eco.t_categories_articles WHERE oid <> 0 AND code LIKE ANY (liste_categorie)) | |||
| WHERE a_liste_categorie = '1'; | |||
| UPDATE w_type_article_cti_rule | |||
| SET liste_sous_categorie_id = (SELECT base.cti_group_array3(oid) FROM eco.t_sous_categories_articles WHERE oid <> 0 AND code LIKE ANY (liste_sous_categorie)) | |||
| WHERE a_liste_sous_categorie = '1'; | |||
| UPDATE w_type_article_cti_rule | |||
| SET liste_compte_id = (SELECT base.cti_group_array3(oid) FROM eco.t_compte WHERE oid <> 0 AND code LIKE ANY (liste_compte)) | |||
| WHERE a_liste_compte = '1'; | |||
| RAISE NOTICE '%' , 'Application des regles.'; | |||
| DROP TABLE IF EXISTS w_articles; | |||
| CREATE TEMP TABLE w_articles AS | |||
| SELECT t_articles.oid, | |||
| COALESCE(MIN(priorite),999999999) AS type_article_cti_priorite, | |||
| COALESCE((MIN(ARRAY[priorite,w_type_article_cti_rule.type_article_cti_id]))[2],0) AS type_article_cti_id | |||
| FROM eco.t_articles | |||
| JOIN w_type_article_cti_rule ON | |||
| (a_liste_article = '0' OR t_articles.oid = ANY (liste_article_id)) AND | |||
| (a_liste_type_article = '0' OR type_id = ANY (liste_type_article_id)) AND | |||
| (a_liste_famille = '0' OR famille_id = ANY (liste_famille_id)) AND | |||
| (a_liste_sous_famille = '0' OR sous_famille_id = ANY (liste_sous_famille_id)) AND | |||
| (a_liste_categorie = '0' OR categorie_id = ANY (liste_categorie_id)) AND | |||
| (a_liste_sous_categorie = '0' OR sous_categorie_id = ANY (liste_sous_categorie_id)) AND | |||
| (a_liste_compte = '0' OR compte_id = ANY (liste_compte_id)) | |||
| GROUP BY 1 | |||
| ORDER BY 2,1 | |||
| ; | |||
| ANALYSE w_articles | |||
| ; | |||
| RAISE NOTICE '%' , 'Application des regles. Validation des type_article_ctis'; | |||
| UPDATE eco.t_articles | |||
| SET type_article_cti_id = w_articles.type_article_cti_id | |||
| FROM w_articles | |||
| WHERE t_articles.oid = w_articles.oid AND | |||
| t_articles.type_article_cti_id IS DISTINCT FROM w_articles.type_article_cti_id | |||
| ; | |||
| ANALYSE eco.t_articles | |||
| ; | |||
| INSERT INTO eco.p_oids (code_table, oid) | |||
| SELECT 'type_article_cti', type_article_cti_id | |||
| FROM eco.t_articles | |||
| WHERE type_article_cti_id NOT IN (SELECT oid FROM eco.p_oids WHERE code_table = 'type_article_cti') | |||
| GROUP BY 2; | |||
| RETURN 'OK'; | |||
| END; | |||
| @ -0,0 +1,92 @@ | |||
| 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; | |||
| @ -0,0 +1,45 @@ | |||
| return: date | |||
| lang: plpgsql | |||
| parameters: | |||
| p0: | |||
| type: anyelement | |||
| p1: | |||
| type: anyelement | |||
| p2: | |||
| type: anyelement | |||
| p3: | |||
| type: anyelement | |||
| strict: STRICT | |||
| src: | | |||
| DECLARE | |||
| i_century text; | |||
| i_year text; | |||
| i_month text; | |||
| i_day text; | |||
| return_date date; | |||
| BEGIN | |||
| i_century = $1; | |||
| IF (length(i_century ) <= 1) THEN | |||
| i_century = '0' || i_century; | |||
| END IF; | |||
| if i_century = '00' THEN | |||
| i_century = '00'; | |||
| END IF; | |||
| i_year = $2; | |||
| IF (length(i_year ) <= 1) THEN | |||
| i_year = '0' || i_year; | |||
| END IF; | |||
| i_month = $3; | |||
| IF (length(i_month ) <= 1) THEN | |||
| i_month = '0' || i_month; | |||
| END IF; | |||
| i_day = $4; | |||
| IF (length(i_day ) <= 1) THEN | |||
| i_day = '0' || i_day; | |||
| END IF; | |||
| if i_day = '00' THEN | |||
| i_day = '01'; | |||
| END IF; | |||
| return_date = to_date(i_century || i_year || i_month || i_day, 'YYYYMMDD'); | |||
| return return_date; | |||
| END; | |||
| @ -0,0 +1,193 @@ | |||
| return: text | |||
| lang: plpgsql | |||
| src: | | |||
| DECLARE --eco.p_stock order by date_fin desc | |||
| result TEXT; | |||
| BEGIN | |||
| UPDATE eco.p_mouvements_articles | |||
| SET prix_unitaire_calcule = null; | |||
| -- initialisation des pump à première entrée ou au pu des stock selon le paramétrage | |||
| UPDATE eco.p_mouvements_articles | |||
| SET prix_unitaire_calcule = prix_unitaire | |||
| FROM ( | |||
| SELECT | |||
| article_id, | |||
| site_id, | |||
| lieu_id, | |||
| (MIN(ARRAY[CASE WHEN entree_montant > 0 and entree_quantite > 0 THEN date::text ELSE '2099-12-31' END, oid::text]))[2] as oid | |||
| FROM eco.p_mouvements_articles | |||
| LEFT JOIN eco.t_divers ON t_divers.code = 'FORCE_PUMP_STOCK' | |||
| WHERE t_divers.valeur = '0' | |||
| GROUP BY 1,2,3 | |||
| ) sub | |||
| WHERE p_mouvements_articles.oid = sub.oid | |||
| AND p_mouvements_articles.site_id = sub.site_id | |||
| AND p_mouvements_articles.lieu_id = sub.lieu_id | |||
| AND p_mouvements_articles.article_id = sub.article_id | |||
| ; | |||
| UPDATE eco.p_mouvements_articles | |||
| SET prix_unitaire_calcule = CASE WHEN pump_ttc > 0 THEN pump_ttc ELSE pump END | |||
| FROM ( | |||
| SELECT | |||
| article_id, | |||
| site_id, | |||
| lieu_id, | |||
| date_fin, | |||
| pump, | |||
| pump_ttc | |||
| FROM eco.p_stock | |||
| LEFT JOIN eco.t_divers ON t_divers.code = 'FORCE_PUMP_STOCK' | |||
| WHERE t_divers.valeur = '1' | |||
| ) sub | |||
| WHERE (p_mouvements_articles.lieu_id = sub.lieu_id OR (SELECT COUNT(DISTINCT lieu_id) FROM eco.p_stock) = 1) | |||
| AND p_mouvements_articles.site_id = sub.site_id | |||
| AND p_mouvements_articles.article_id = sub.article_id | |||
| AND sub.date_fin BETWEEN date AND p_mouvements_articles.date_fin | |||
| ; | |||
| -- ou si le stock est nul avant et pas après | |||
| UPDATE eco.p_mouvements_articles | |||
| SET prix_unitaire_calcule = prix_unitaire | |||
| WHERE prix_unitaire_calcule IS NULL | |||
| AND stock_quantite_debut <= 0 | |||
| AND stock_quantite_fin > 0; | |||
| -- pump 0 si pas de stock | |||
| UPDATE eco.p_mouvements_articles | |||
| SET prix_unitaire_calcule = 0 | |||
| WHERE stock_quantite_fin = 0 | |||
| ; | |||
| ANALYSE eco.p_mouvements_articles; | |||
| DROP SEQUENCE IF EXISTS s_mv_sto; | |||
| CREATE TEMP SEQUENCE s_mv_sto; | |||
| DROP TABLE IF EXISTS w_mvt_sto; | |||
| CREATE TEMP TABLE w_mvt_sto AS | |||
| SELECT | |||
| nextval(' s_mv_sto'::regclass) AS sequence, | |||
| *, | |||
| 0::bigint AS derniere_entree | |||
| FROM ( | |||
| SELECT article_id, | |||
| site_id, | |||
| lieu_id, | |||
| date, | |||
| oid, | |||
| stock_quantite_fin, | |||
| entree_quantite, | |||
| entree_montant, | |||
| prix_unitaire_calcule, | |||
| date_fin | |||
| FROM eco.p_mouvements_articles | |||
| WHERE date >= date_trunc('month', now()) - interval '3 year' | |||
| ORDER BY 1,2,3,4,5 | |||
| ) sub; | |||
| -- sélection des mouvements d'entrée | |||
| DROP TABLE IF EXISTS w_periode_sto; | |||
| CREATE TEMP TABLE w_periode_sto AS | |||
| SELECT article_id, | |||
| site_id, | |||
| lieu_id, | |||
| date, | |||
| oid, | |||
| lead(oid,1) OVER (PARTITION BY article_id, site_id, lieu_id ORDER BY sequence) AS oid_next, | |||
| lead(date,1) OVER (PARTITION BY article_id, site_id, lieu_id ORDER BY sequence) as date_fin | |||
| FROM w_mvt_sto | |||
| WHERE (entree_montant > 0 AND entree_quantite > 0) | |||
| ORDER BY 1,2,3,4 | |||
| ; | |||
| UPDATE w_periode_sto SET date_fin = '2099-12-31' WHERE date_fin IS NULL; | |||
| -- calcul des dernière entrées | |||
| UPDATE w_mvt_sto | |||
| SET derniere_entree = w_periode_sto.oid | |||
| FROM w_periode_sto | |||
| WHERE 1=1 | |||
| AND w_mvt_sto.article_id = w_periode_sto.article_id | |||
| AND w_mvt_sto.site_id = w_periode_sto.site_id | |||
| AND w_mvt_sto.lieu_id = w_periode_sto.lieu_id | |||
| AND (w_mvt_sto.oid = w_periode_sto.oid_next | |||
| OR (w_mvt_sto.oid > w_periode_sto.oid AND w_mvt_sto.date BETWEEN w_periode_sto.date AND w_periode_sto.date_fin)) | |||
| ; | |||
| UPDATE w_mvt_sto | |||
| SET derniere_entree = w_first_ent.oid | |||
| FROM (SELECT article_id, site_id, lieu_id, (MIN(ARRAY[date::text, oid::text]))[2]::bigint as oid FROM w_periode_sto GROUP BY 1,2,3) w_first_ent | |||
| WHERE 1=1 | |||
| AND derniere_entree = 0 | |||
| AND w_mvt_sto.article_id = w_first_ent.article_id | |||
| AND w_mvt_sto.site_id = w_first_ent.site_id | |||
| AND w_mvt_sto.lieu_id = w_first_ent.lieu_id | |||
| ; | |||
| CREATE INDEX w_mvt_article_id ON w_mvt_sto USING btree (article_id); | |||
| CREATE INDEX w_mvt_site_id ON w_mvt_sto USING btree (site_id); | |||
| CREATE INDEX w_mvt_lieu_id ON w_mvt_sto USING btree (lieu_id); | |||
| CREATE INDEX w_mvt_oid ON w_mvt_sto USING btree (oid); | |||
| ANALYSE w_mvt_sto; | |||
| -- maj des pump | |||
| PERFORM base.cti_execute(' | |||
| UPDATE w_mvt_sto | |||
| SET prix_unitaire_calcule = base.cti_division(abs(w_mvt_prev.stock_quantite_fin)*w_mvt_prev.prix_unitaire_calcule + abs(w_mvt_sto.entree_montant), abs(w_mvt_prev.stock_quantite_fin) + abs(w_mvt_sto.entree_quantite)) | |||
| FROM w_mvt_sto w_mvt_prev | |||
| WHERE 1=1 | |||
| AND w_mvt_sto.prix_unitaire_calcule IS NULL | |||
| AND w_mvt_prev.prix_unitaire_calcule IS NOT NULL | |||
| AND w_mvt_sto.derniere_entree = w_mvt_prev.oid | |||
| AND (w_mvt_sto.entree_montant != 0)',2000) | |||
| --select article_id, lieu_id, (MIN(ARRAY[sequence::text, prix_unitaire_calcule::text]))[2] from w_mvt_sto group by 1,2 having (MIN(ARRAY[sequence::text, prix_unitaire_calcule::text]))[2] is null order by 3 desc | |||
| --select * from eco.v_mouvements_articles_1 where article_id = 6634 and lieu_id = 2 order by date | |||
| --select * from w_mvt_sto where article_id = 9663 and lieu_id = 2 order by sequence | |||
| ; | |||
| -- extension aux mouvements de sortie | |||
| UPDATE w_mvt_sto | |||
| SET prix_unitaire_calcule = w_mvt_prev.prix_unitaire_calcule | |||
| FROM w_mvt_sto w_mvt_prev | |||
| WHERE 1=1 | |||
| AND w_mvt_sto.prix_unitaire_calcule IS NULL | |||
| AND w_mvt_sto.derniere_entree != 0 | |||
| AND w_mvt_prev.oid = w_mvt_sto.derniere_entree | |||
| AND w_mvt_prev.prix_unitaire_calcule IS NOT NULL | |||
| ; | |||
| -- prise en compte des lieu différents au besoin | |||
| UPDATE w_mvt_sto | |||
| SET prix_unitaire_calcule = w_mvt_prev.prix_unitaire_calcule | |||
| FROM w_mvt_sto w_mvt_prev | |||
| WHERE 1=1 | |||
| AND w_mvt_sto.prix_unitaire_calcule IS NULL | |||
| AND w_mvt_prev.article_id = w_mvt_sto.article_id | |||
| AND w_mvt_prev.prix_unitaire_calcule IS NOT NULL | |||
| AND w_mvt_sto.date BETWEEN w_mvt_prev.date AND w_mvt_prev.date_fin | |||
| AND w_mvt_prev.site_id != w_mvt_sto.site_id | |||
| AND w_mvt_prev.lieu_id != w_mvt_sto.lieu_id | |||
| ; | |||
| -- maj des mouvements | |||
| UPDATE eco.p_mouvements_articles | |||
| SET prix_unitaire_calcule = round(w_mvt_sto.prix_unitaire_calcule,10) | |||
| FROM w_mvt_sto | |||
| WHERE p_mouvements_articles.oid = w_mvt_sto.oid | |||
| ; | |||
| -- sinon (au pire si pas d'information) pump = pu | |||
| UPDATE eco.p_mouvements_articles | |||
| SET prix_unitaire_calcule = prix_unitaire | |||
| WHERE 1=1 | |||
| AND prix_unitaire_calcule IS NULL | |||
| ; | |||
| RETURN 'OK'; | |||
| END; | |||
| @ -0,0 +1,164 @@ | |||
| return: text | |||
| lang: plpgsql | |||
| src: | | |||
| DECLARE --select * from eco.p_stock order by date_fin desc | |||
| result TEXT; | |||
| BEGIN | |||
| DROP TABLE IF EXISTS w_mouvements_articles; | |||
| CREATE TABLE w_mouvements_articles AS SELECT * from eco.p_mouvements_articles; | |||
| ANALYSE w_mouvements_articles; | |||
| ANALYSE eco.p_stock; | |||
| CREATE INDEX w_mvt_1 ON w_mouvements_articles using btree (article_id); | |||
| CREATE INDEX w_mvt_2 ON w_mouvements_articles using btree (site_id); | |||
| CREATE INDEX w_mvt_3 ON w_mouvements_articles using btree (lieu_id); | |||
| CREATE INDEX w_mvt_4 ON w_mouvements_articles using btree (date); | |||
| PERFORM base.cti_execute( | |||
| 'UPDATE w_mouvements_articles | |||
| SET | |||
| est_premier_jour = sub.est_premier_jour, | |||
| est_dernier_jour = sub.est_dernier_jour, | |||
| date_fin = sub.date_fin | |||
| FROM (SELECT | |||
| oid, | |||
| CASE | |||
| WHEN rank() OVER (PARTITION BY w_mouvements_articles.article_id, w_mouvements_articles.site_id, w_mouvements_articles.lieu_id,date ORDER BY w_mouvements_articles.oid) = 1 THEN 1 | |||
| ELSE 0 | |||
| END AS est_premier_jour, | |||
| CASE | |||
| WHEN cume_dist() OVER (PARTITION BY w_mouvements_articles.article_id, w_mouvements_articles.site_id, w_mouvements_articles.lieu_id, w_mouvements_articles.date ORDER BY w_mouvements_articles.oid) = 1 THEN 1 | |||
| ELSE 0 | |||
| END AS est_dernier_jour, | |||
| CASE | |||
| WHEN cume_dist() OVER (PARTITION BY w_mouvements_articles.article_id, w_mouvements_articles.site_id, w_mouvements_articles.lieu_id, w_mouvements_articles.date ORDER BY w_mouvements_articles.oid) = 1 | |||
| THEN lead(w_mouvements_articles.date) OVER (PARTITION BY w_mouvements_articles.article_id, w_mouvements_articles.site_id, w_mouvements_articles.lieu_id ORDER BY w_mouvements_articles.date) - interval ''1 day'' | |||
| ELSE date | |||
| END AS date_fin | |||
| FROm w_mouvements_articles | |||
| ) sub | |||
| WHERE sub.oid = w_mouvements_articles.oid; | |||
| UPDATE w_mouvements_articles | |||
| SET date_fin = date_trunc(''month'',now()) - interval ''1 day'' + interval ''1 month'' | |||
| WHERE date_fin IS NULL | |||
| ; | |||
| UPDATE w_mouvements_articles | |||
| SET | |||
| stock_quantite_debut = 0, | |||
| stock_quantite_fin = 0 | |||
| ; | |||
| UPDATE w_mouvements_articles | |||
| SET | |||
| stock_quantite_debut = p_stock.stock_quantite_fin - w_stock_var.entree_var + w_stock_var.sortie_var, | |||
| stock_quantite_fin = p_stock.stock_quantite_fin - w_stock_var.entree_var + w_stock_var.sortie_var + w_mouvements_articles.entree_quantite - w_mouvements_articles.sortie_quantite | |||
| FROM | |||
| ( | |||
| SELECT | |||
| oid, | |||
| site_id, | |||
| lieu_id, | |||
| article_id, | |||
| date, | |||
| date_trunc(''month'',date) as month, | |||
| sum(entree_quantite) OVER (PARTITION BY site_id, lieu_id, article_id, date_trunc(''month'',date) ORDER BY date DESC, oid DESC) AS entree_var, | |||
| sum(sortie_quantite) OVER (PARTITION BY site_id, lieu_id, article_id, date_trunc(''month'',date) ORDER BY date DESC, oid DESC) AS sortie_var | |||
| FROM w_mouvements_articles | |||
| ORDER BY 1,2,3,4,5 | |||
| ) w_stock_var | |||
| JOIN | |||
| eco.p_stock | |||
| ON 1=1 | |||
| AND w_stock_var.article_id = p_stock.article_id | |||
| AND w_stock_var.site_id = p_stock.site_id | |||
| AND w_stock_var.lieu_id = p_stock.lieu_id | |||
| AND date_trunc(''month'',date_fin) = month | |||
| WHERE 1=1 | |||
| AND w_mouvements_articles.article_id = w_stock_var.article_id | |||
| AND w_mouvements_articles.site_id = w_stock_var.site_id | |||
| AND w_mouvements_articles.lieu_id = w_stock_var.lieu_id | |||
| AND w_mouvements_articles.oid = w_stock_var.oid | |||
| ',1) | |||
| WHERE (SELECT count(DISTINCT lieu_id) FROM eco.p_stock) > 1 | |||
| ; | |||
| PERFORM base.cti_execute( | |||
| 'UPDATE w_mouvements_articles | |||
| SET | |||
| est_premier_jour = sub.est_premier_jour, | |||
| est_dernier_jour = sub.est_dernier_jour, | |||
| date_fin = sub.date_fin | |||
| FROM (SELECT | |||
| oid, | |||
| CASE | |||
| WHEN rank() OVER (PARTITION BY w_mouvements_articles.article_id, w_mouvements_articles.site_id, date ORDER BY w_mouvements_articles.oid) = 1 THEN 1 | |||
| ELSE 0 | |||
| END AS est_premier_jour, | |||
| CASE | |||
| WHEN cume_dist() OVER (PARTITION BY w_mouvements_articles.article_id, w_mouvements_articles.site_id, w_mouvements_articles.date ORDER BY w_mouvements_articles.oid) = 1 THEN 1 | |||
| ELSE 0 | |||
| END AS est_dernier_jour, | |||
| CASE | |||
| WHEN cume_dist() OVER (PARTITION BY w_mouvements_articles.article_id, w_mouvements_articles.site_id, w_mouvements_articles.date ORDER BY w_mouvements_articles.oid) = 1 | |||
| THEN lead(w_mouvements_articles.date) OVER (PARTITION BY w_mouvements_articles.article_id, w_mouvements_articles.site_id ORDER BY w_mouvements_articles.date) - interval ''1 day'' | |||
| ELSE date | |||
| END AS date_fin | |||
| FROm w_mouvements_articles | |||
| ) sub | |||
| WHERE sub.oid = w_mouvements_articles.oid; | |||
| UPDATE w_mouvements_articles | |||
| SET date_fin = date_trunc(''month'',now()) - interval ''1 day'' + interval ''1 month'' | |||
| WHERE date_fin IS NULL | |||
| ; | |||
| UPDATE w_mouvements_articles | |||
| SET | |||
| stock_quantite_debut = 0, | |||
| stock_quantite_fin = 0 | |||
| ; | |||
| UPDATE w_mouvements_articles | |||
| SET | |||
| stock_quantite_debut = p_stock.stock_quantite_fin - w_stock_var.entree_var + w_stock_var.sortie_var, | |||
| stock_quantite_fin = p_stock.stock_quantite_fin - w_stock_var.entree_var + w_stock_var.sortie_var + w_mouvements_articles.entree_quantite - w_mouvements_articles.sortie_quantite | |||
| FROM | |||
| ( | |||
| SELECT | |||
| oid, | |||
| site_id, | |||
| lieu_id, | |||
| article_id, | |||
| date, | |||
| date_trunc(''month'',date) as month, | |||
| sum(entree_quantite) OVER (PARTITION BY site_id, article_id, date_trunc(''month'',date) ORDER BY date DESC, oid DESC) AS entree_var, | |||
| sum(sortie_quantite) OVER (PARTITION BY site_id, article_id, date_trunc(''month'',date) ORDER BY date DESC, oid DESC) AS sortie_var | |||
| FROM w_mouvements_articles | |||
| ORDER BY 1,2,3,4,5 | |||
| ) w_stock_var | |||
| JOIN | |||
| eco.p_stock | |||
| ON 1=1 | |||
| AND w_stock_var.article_id = p_stock.article_id | |||
| AND w_stock_var.site_id = p_stock.site_id | |||
| AND date_trunc(''month'',date_fin) = month | |||
| WHERE 1=1 | |||
| AND w_mouvements_articles.article_id = w_stock_var.article_id | |||
| AND w_mouvements_articles.site_id = w_stock_var.site_id | |||
| AND w_mouvements_articles.oid = w_stock_var.oid | |||
| ',1) | |||
| WHERE (SELECT count(DISTINCT lieu_id) FROM eco.p_stock) = 1 | |||
| ; | |||
| TRUNCATE eco.p_mouvements_articles; | |||
| INSERT INTO eco.p_mouvements_articles SELECT * FROM w_mouvements_articles; | |||
| ANALYSE eco.p_mouvements_articles; | |||
| REINDEX TABLE eco.p_mouvements_articles; | |||
| RETURN 'OK'; | |||
| END; | |||
| @ -0,0 +1,229 @@ | |||
| return: text | |||
| lang: plpgsql | |||
| src: | | |||
| DECLARE --select * from eco.p_stock order by date_fin desc | |||
| result TEXT; | |||
| BEGIN | |||
| UPDATE eco.p_mouvements_articles | |||
| SET | |||
| est_premier_jour = sub.est_premier_jour, | |||
| est_dernier_jour = sub.est_dernier_jour, | |||
| date_fin = sub.date_fin | |||
| FROM (SELECT | |||
| oid, | |||
| CASE | |||
| WHEN rank() OVER (PARTITION BY p_mouvements_articles.article_id, p_mouvements_articles.lieu_id,date ORDER BY p_mouvements_articles.oid) = 1 THEN 1 | |||
| ELSE 0 | |||
| END AS est_premier_jour, | |||
| CASE | |||
| WHEN cume_dist() OVER (PARTITION BY p_mouvements_articles.article_id, p_mouvements_articles.lieu_id, p_mouvements_articles.date ORDER BY p_mouvements_articles.oid) = 1 THEN 1 | |||
| ELSE 0 | |||
| END AS est_dernier_jour, | |||
| CASE | |||
| WHEN cume_dist() OVER (PARTITION BY p_mouvements_articles.article_id, p_mouvements_articles.lieu_id, p_mouvements_articles.date ORDER BY p_mouvements_articles.oid) = 1 | |||
| THEN lead(p_mouvements_articles.date) OVER (PARTITION BY p_mouvements_articles.article_id, p_mouvements_articles.lieu_id ORDER BY p_mouvements_articles.date) - interval '1 day' | |||
| ELSE date | |||
| END AS date_fin | |||
| FROm eco.p_mouvements_articles | |||
| ) sub | |||
| WHERE sub.oid = p_mouvements_articles.oid; | |||
| UPDATE eco.p_mouvements_articles | |||
| SET date_fin = date_trunc('month',now()) - interval '1 day' + interval '1 month' | |||
| WHERE date_fin IS NULL | |||
| ; | |||
| UPDATE eco.p_mouvements_articles | |||
| SET | |||
| stock_quantite_debut = 0, | |||
| stock_quantite_fin = 0 | |||
| ; | |||
| UPDATE eco.p_mouvements_articles | |||
| SET | |||
| stock_quantite_debut = p_stock.stock_quantite_fin - w_stock_var.entree_var + w_stock_var.sortie_var, | |||
| stock_quantite_fin = p_stock.stock_quantite_fin - w_stock_var.entree_var + w_stock_var.sortie_var + p_mouvements_articles.entree_quantite - p_mouvements_articles.sortie_quantite | |||
| FROM | |||
| ( | |||
| SELECT | |||
| oid, | |||
| lieu_id, | |||
| article_id, | |||
| date, | |||
| date_trunc('month',date) as month, | |||
| sum(entree_quantite) OVER (PARTITION BY lieu_id, article_id, date_trunc('month',date) ORDER BY date DESC, oid DESC) AS entree_var, | |||
| sum(sortie_quantite) OVER (PARTITION BY lieu_id, article_id, date_trunc('month',date) ORDER BY date DESC, oid DESC) AS sortie_var | |||
| FROM eco.p_mouvements_articles | |||
| ORDER BY 1,2,3,4 | |||
| ) w_stock_var | |||
| JOIN | |||
| eco.p_stock | |||
| ON 1=1 | |||
| AND w_stock_var.article_id = p_stock.article_id | |||
| AND w_stock_var.lieu_id = p_stock.lieu_id | |||
| AND date_trunc('month',date_fin) = month | |||
| WHERE 1=1 | |||
| AND p_mouvements_articles.article_id = w_stock_var.article_id | |||
| AND p_mouvements_articles.lieu_id = w_stock_var.lieu_id | |||
| AND p_mouvements_articles.oid = w_stock_var.oid | |||
| ; | |||
| UPDATE eco.p_mouvements_articles | |||
| SET prix_unitaire_calcule = null; | |||
| -- initialisation des pump à première entrée | |||
| UPDATE eco.p_mouvements_articles | |||
| SET prix_unitaire_calcule = prix_unitaire | |||
| FROM ( | |||
| SELECT | |||
| article_id, | |||
| lieu_id, | |||
| (MIN(ARRAY[CASE WHEN entree_montant_ht > 0 and entree_quantite > 0 THEN date::text ELSE '2099-12-31' END, oid::text]))[2] as oid | |||
| FROM eco.p_mouvements_articles | |||
| GROUP BY 1,2 | |||
| ) sub | |||
| WHERE p_mouvements_articles.oid = sub.oid | |||
| AND p_mouvements_articles.lieu_id = sub.lieu_id | |||
| AND p_mouvements_articles.article_id = sub.article_id | |||
| ; | |||
| -- ou si le stock est nul avant et pas après | |||
| UPDATE eco.p_mouvements_articles | |||
| SET prix_unitaire_calcule = prix_unitaire | |||
| WHERE prix_unitaire_calcule IS NULL | |||
| AND stock_quantite_debut <= 0 | |||
| AND stock_quantite_fin > 0; | |||
| -- pump 0 si pas de stock | |||
| UPDATE eco.p_mouvements_articles | |||
| SET prix_unitaire_calcule = 0 | |||
| WHERE stock_quantite_fin = 0 | |||
| ; | |||
| ANALYSE eco.p_mouvements_articles; | |||
| DROP SEQUENCE IF EXISTS s_mv_sto; | |||
| CREATE TEMP SEQUENCE s_mv_sto; | |||
| DROP TABLE IF EXISTS w_mvt_sto; | |||
| CREATE TEMP TABLE w_mvt_sto AS | |||
| SELECT | |||
| nextval(' s_mv_sto'::regclass) AS sequence, | |||
| *, | |||
| 0::bigint AS derniere_entree | |||
| FROM ( | |||
| SELECT article_id, | |||
| lieu_id, | |||
| date, | |||
| oid, | |||
| stock_quantite_fin, | |||
| entree_quantite, | |||
| entree_montant_ht, | |||
| prix_unitaire_calcule, | |||
| date_fin | |||
| FROM eco.p_mouvements_articles | |||
| ORDER BY 1,2,3,4 | |||
| ) sub; | |||
| -- sélection des mouvements d'entrée | |||
| DROP TABLE IF EXISTS w_periode_sto; | |||
| CREATE TEMP TABLE w_periode_sto AS | |||
| SELECT article_id, | |||
| lieu_id, | |||
| date, | |||
| oid, | |||
| lead(oid,1) OVER (PARTITION BY article_id, lieu_id ORDER BY sequence) AS oid_next, | |||
| lead(date,1) OVER (PARTITION BY article_id, lieu_id ORDER BY sequence) as date_fin | |||
| FROM w_mvt_sto | |||
| WHERE (entree_montant_ht > 0 AND entree_quantite > 0) | |||
| ORDER BY 1,2,3 | |||
| ; | |||
| UPDATE w_periode_sto SET date_fin = '2099-12-31' WHERE date_fin IS NULL; | |||
| -- calcul des dernière entrées | |||
| UPDATE w_mvt_sto | |||
| SET derniere_entree = w_periode_sto.oid | |||
| FROM w_periode_sto | |||
| WHERE 1=1 | |||
| AND w_mvt_sto.article_id = w_periode_sto.article_id | |||
| AND w_mvt_sto.lieu_id = w_periode_sto.lieu_id | |||
| AND (w_mvt_sto.oid = w_periode_sto.oid_next | |||
| OR (w_mvt_sto.oid > w_periode_sto.oid AND w_mvt_sto.date BETWEEN w_periode_sto.date AND w_periode_sto.date_fin)) | |||
| ; | |||
| UPDATE w_mvt_sto | |||
| SET derniere_entree = w_first_ent.oid | |||
| FROM (SELECT article_id, lieu_id, (MIN(ARRAY[date::text, oid::text]))[2]::bigint as oid FROM w_periode_sto GROUP BY 1,2) w_first_ent | |||
| WHERE 1=1 | |||
| AND derniere_entree = 0 | |||
| AND w_mvt_sto.article_id = w_first_ent.article_id | |||
| AND w_mvt_sto.lieu_id = w_first_ent.lieu_id | |||
| ; | |||
| CREATE INDEX w_mvt_article_id ON w_mvt_sto USING btree (article_id); | |||
| CREATE INDEX w_mvt_lieu_id ON w_mvt_sto USING btree (lieu_id); | |||
| CREATE INDEX w_mvt_oid ON w_mvt_sto USING btree (oid); | |||
| ANALYSE w_mvt_sto; | |||
| -- maj des pump | |||
| PERFORM base.cti_execute(' | |||
| UPDATE w_mvt_sto | |||
| SET prix_unitaire_calcule = base.cti_division(abs(w_mvt_prev.stock_quantite_fin)*w_mvt_prev.prix_unitaire_calcule + abs(w_mvt_sto.entree_montant_ht), abs(w_mvt_prev.stock_quantite_fin) + abs(w_mvt_sto.entree_quantite)) | |||
| FROM w_mvt_sto w_mvt_prev | |||
| WHERE 1=1 | |||
| AND w_mvt_sto.prix_unitaire_calcule IS NULL | |||
| AND w_mvt_prev.prix_unitaire_calcule IS NOT NULL | |||
| AND w_mvt_sto.derniere_entree = w_mvt_prev.oid | |||
| AND (w_mvt_sto.entree_montant_ht != 0)',2000) | |||
| --select article_id, lieu_id, (MIN(ARRAY[sequence::text, prix_unitaire_calcule::text]))[2] from w_mvt_sto group by 1,2 having (MIN(ARRAY[sequence::text, prix_unitaire_calcule::text]))[2] is null order by 3 desc | |||
| --select * from eco.v_mouvements_articles_1 where article_id = 6634 and lieu_id = 2 order by date | |||
| --select * from w_mvt_sto where article_id = 9663 and lieu_id = 2 order by sequence | |||
| ; | |||
| -- extension aux mouvements de sortie | |||
| UPDATE w_mvt_sto | |||
| SET prix_unitaire_calcule = w_mvt_prev.prix_unitaire_calcule | |||
| FROM w_mvt_sto w_mvt_prev | |||
| WHERE 1=1 | |||
| AND w_mvt_sto.prix_unitaire_calcule IS NULL | |||
| AND w_mvt_sto.derniere_entree != 0 | |||
| AND w_mvt_prev.oid = w_mvt_sto.derniere_entree | |||
| AND w_mvt_prev.prix_unitaire_calcule IS NOT NULL | |||
| ; | |||
| -- prise en compte des lieu différents au besoin | |||
| UPDATE w_mvt_sto | |||
| SET prix_unitaire_calcule = w_mvt_prev.prix_unitaire_calcule | |||
| FROM w_mvt_sto w_mvt_prev | |||
| WHERE 1=1 | |||
| AND w_mvt_sto.prix_unitaire_calcule IS NULL | |||
| AND w_mvt_prev.article_id = w_mvt_sto.article_id | |||
| AND w_mvt_prev.prix_unitaire_calcule IS NOT NULL | |||
| AND w_mvt_sto.date BETWEEN w_mvt_prev.date AND w_mvt_prev.date_fin | |||
| AND w_mvt_prev.lieu_id != w_mvt_sto.lieu_id | |||
| ; | |||
| -- maj des mouvements | |||
| UPDATE eco.p_mouvements_articles | |||
| SET prix_unitaire_calcule = w_mvt_sto.prix_unitaire_calcule | |||
| FROM w_mvt_sto | |||
| WHERE p_mouvements_articles.oid = w_mvt_sto.oid | |||
| ; | |||
| -- sinon (au pire si pas d'information) pump = pu | |||
| UPDATE eco.p_mouvements_articles | |||
| SET prix_unitaire_calcule = prix_unitaire | |||
| WHERE 1=1 | |||
| AND prix_unitaire_calcule IS NULL | |||
| ; | |||
| UPDATE eco.p_mouvements_articles SET date_fin = date_fin + interval '1 day' WHERE est_dernier_jour = 1; | |||
| RETURN 'OK'; | |||
| END; | |||
| @ -0,0 +1,229 @@ | |||
| return: text | |||
| lang: plpgsql | |||
| parameters: | |||
| p0: | |||
| type: text | |||
| name: i_table_code | |||
| src: | | |||
| DECLARE | |||
| result TEXT; | |||
| BEGIN | |||
| IF (i_table_code = 'ART' OR i_table_code = '*ALL') THEN | |||
| PERFORM base.cti_update_classes('eco', 't_articles', 'ART',''); | |||
| END IF; | |||
| IF (i_table_code = 'CAA' OR i_table_code = '*ALL') THEN | |||
| PERFORM base.cti_update_classes('eco', 't_categories_articles', 'CAA',''); | |||
| END IF; | |||
| IF (i_table_code = 'SCA' OR i_table_code = '*ALL') THEN | |||
| PERFORM base.cti_update_classes('eco', 't_sous_categories_articles', 'SCA',''); | |||
| END IF; | |||
| IF (i_table_code = 'FAA' OR i_table_code = '*ALL') THEN | |||
| PERFORM base.cti_update_classes('eco', 't_familles_articles', 'FAA',''); | |||
| END IF; | |||
| IF (i_table_code = 'SFA' OR i_table_code = '*ALL') THEN | |||
| PERFORM base.cti_update_classes('eco', 't_sous_familles_articles', 'SFA',''); | |||
| END IF; | |||
| IF (i_table_code = 'TYA' OR i_table_code = '*ALL') THEN | |||
| PERFORM base.cti_update_classes('eco', 't_types_articles', 'TYA',''); | |||
| END IF; | |||
| IF (i_table_code = 'SIT' OR i_table_code = '*ALL') THEN | |||
| PERFORM base.cti_update_classes('eco', 't_sites', 'SIT',''); | |||
| END IF; | |||
| IF (i_table_code = 'GES' OR i_table_code = '*ALL') THEN | |||
| PERFORM base.cti_update_classes('eco', 't_gestionnaires', 'GES',''); | |||
| END IF; | |||
| IF (i_table_code = 'LIE' OR i_table_code = '*ALL') THEN | |||
| PERFORM base.cti_update_classes('eco', 't_lieux', 'LIE',''); | |||
| END IF; | |||
| IF (i_table_code = 'TYF' OR i_table_code = '*ALL') THEN | |||
| PERFORM base.cti_update_classes('eco', 't_types_fournisseurs', 'TYF',''); | |||
| END IF; | |||
| IF (i_table_code = 'FOU' OR i_table_code = '*ALL') THEN | |||
| PERFORM base.cti_update_classes('eco', 't_fournisseurs', 'FOU',''); | |||
| END IF; | |||
| IF (i_table_code = 'TYM' OR i_table_code = '*ALL') THEN | |||
| PERFORM base.cti_update_classes('eco', 't_types_mouvements', 'TYM',''); | |||
| END IF; | |||
| IF (i_table_code = 'UFO' OR i_table_code = '*ALL') THEN | |||
| PERFORM base.cti_update_classes('eco', 't_unites_fonctionnelles', 'UFO',''); | |||
| END IF; | |||
| IF (i_table_code = 'UNI' OR i_table_code = '*ALL') THEN | |||
| PERFORM base.cti_update_classes('eco', 't_unites', 'UNI',''); | |||
| END IF; | |||
| IF (i_table_code = 'CPT' OR i_table_code = '*ALL') THEN | |||
| PERFORM base.cti_update_classes('eco', 't_compte', 'CPT',''); | |||
| END IF; | |||
| IF i_table_code IN ('*ALL', 'CAA', 'SCA', 'FAA', 'SFA', 'TYA', 'UNI') THEN | |||
| 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 | |||
| ); | |||
| END IF; | |||
| IF i_table_code IN ('*ALL', 'TYF') THEN | |||
| 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 | |||
| ); | |||
| END IF; | |||
| RETURN 'OK'; | |||
| END; | |||
| @ -0,0 +1,705 @@ | |||
| return: text | |||
| lang: plpgsql | |||
| parameters: | |||
| p0: | |||
| type: text | |||
| name: i_table | |||
| p1: | |||
| type: text | |||
| name: i_option | |||
| src: | | |||
| DECLARE | |||
| _TABLE text; | |||
| _VIEWTYPE text; | |||
| _DG_SETCOLUMNS text; | |||
| _DG_MAXCOLUMNS text; | |||
| BEGIN | |||
| _TABLE = i_table; | |||
| IF _TABLE = '' THEN | |||
| _TABLE = 'w_table'; | |||
| END IF | |||
| ; | |||
| -- DEBUG | |||
| EXECUTE('DROP TABLE IF EXISTS temp.debug_w_table; CREATE TABLE temp.debug_w_table AS SELECT * FROM ' || _TABLE || ';'); | |||
| EXECUTE('DROP TABLE IF EXISTS temp.debug_cti_get_columns_from_indicateurs_properties; CREATE TABLE temp.debug_cti_get_columns_from_indicateurs_properties AS SELECT * FROM cti_get_columns_from_indicateurs_properties;'); | |||
| _VIEWTYPE = | |||
| ( | |||
| SELECT COALESCE(MAX(property_value),'') | |||
| FROM cti_get_columns_from_indicateurs_properties | |||
| WHERE property LIKE 'IN_VIEWTYPE' | |||
| ) | |||
| ; | |||
| _DG_SETCOLUMNS = | |||
| ( | |||
| SELECT COALESCE(MAX(property_value),'') | |||
| FROM cti_get_columns_from_indicateurs_properties | |||
| WHERE property LIKE 'DG_SETCOLUMNS' | |||
| ) | |||
| ; | |||
| _DG_MAXCOLUMNS = | |||
| ( | |||
| SELECT COALESCE(array_to_string(base.cti_array_accum(item),','),'MAX(work_indicateurs[1]') | |||
| FROM | |||
| ( | |||
| SELECT 'MAX(work_indicateurs['||i::text||'])' AS item | |||
| FROM cti_get_columns_from_indicateurs_properties | |||
| JOIN generate_series(1,1000) i ON (string_to_array(property_value,',,'))[i] IS NOT NULL OR i = 1 | |||
| WHERE property = 'DB_COLUMNS' | |||
| ORDER BY i | |||
| ) subview | |||
| ) | |||
| ; | |||
| -- Regroupement si plusieurs tables analysées | |||
| EXECUTE('INSERT INTO ' || _TABLE || ' ( | |||
| work_table_sequence, | |||
| sort, | |||
| level, | |||
| oidt, | |||
| labelt, | |||
| textet, | |||
| oid1, | |||
| code1, | |||
| texte1, | |||
| oid2, | |||
| code2, | |||
| texte2, | |||
| oid3, | |||
| code3, | |||
| texte3, | |||
| oid, | |||
| code, | |||
| texte, | |||
| other_fields, | |||
| significant_data, | |||
| indicateurs, | |||
| work_indicateurs, | |||
| indicateurs_text, | |||
| q_special | |||
| ) | |||
| SELECT | |||
| ''*'', | |||
| MAX(sort), | |||
| level, | |||
| oidt, | |||
| MAX(labelt), | |||
| MAX(textet), | |||
| oid1, | |||
| MAX(code1), | |||
| MAX(texte1), | |||
| oid2, | |||
| MAX(code2), | |||
| MAX(texte2), | |||
| oid3, | |||
| MAX(code3), | |||
| MAX(texte3), | |||
| oid, | |||
| MAX(code), | |||
| MAX(texte), | |||
| MAX(other_fields), | |||
| MAX(significant_data), | |||
| NULL AS indicateurs, | |||
| ARRAY['||_DG_MAXCOLUMNS||'], | |||
| indicateurs_text, | |||
| ''0''::text AS q_special | |||
| FROM ' || _TABLE || ' | |||
| WHERE NOT (oid = -9999999 AND indicateurs[1] IS NULL AND work_indicateurs[1] IS NULL) | |||
| GROUP BY level, oidt, oid1, oid2, oid3, oid, indicateurs_text | |||
| ; | |||
| DELETE FROM ' || _TABLE || ' WHERE work_table_sequence <> ''*'' | |||
| ; | |||
| ANALYSE ' || _TABLE || ' | |||
| '); | |||
| IF _TABLE <> 'w_table' THEN | |||
| EXECUTE 'DROP VIEW IF EXISTS w_table CASCADE; CREATE TEMP VIEW w_table AS SELECT * FROM '||_TABLE; | |||
| END IF ; | |||
| PERFORM base.cti_execute(' | |||
| UPDATE ' || _TABLE || ' w_table | |||
| SET ' || itemset || ' | |||
| FROM w_table w_table123 | |||
| WHERE | |||
| w_table123.level = w_table.level AND | |||
| w_table123.oid1 = w_table.oid1 AND | |||
| w_table123.oid2 = w_table.oid2 AND | |||
| w_table123.oid3 = w_table.oid3 AND | |||
| w_table123.oidt = -123 AND | |||
| w_table.oidt <> -123 AND | |||
| ('||itemwhere||') | |||
| ; | |||
| UPDATE ' || _TABLE || ' w_table | |||
| SET ' || itemset || ' | |||
| FROM w_table w_table123 | |||
| WHERE | |||
| w_table123.level = w_table.level AND | |||
| w_table123.oid1 = -123 AND | |||
| w_table.oid1 <> -123 AND | |||
| w_table123.oid2 = w_table.oid2 AND | |||
| w_table123.oid3 = w_table.oid3 AND | |||
| w_table123.oidt = -123 AND | |||
| w_table.oidt <> -123 AND | |||
| ('||itemwhere||') | |||
| ; | |||
| UPDATE ' || _TABLE || ' w_table | |||
| SET ' || itemset || ' | |||
| FROM w_table w_table123 | |||
| WHERE | |||
| w_table123.level = w_table.level AND | |||
| w_table123.oidt = w_table.oidt AND | |||
| w_table123.oid2 = w_table.oid2 AND | |||
| w_table123.oid3 = w_table.oid3 AND | |||
| w_table123.oid1 = -123 AND | |||
| w_table.oid1 <> -123 AND | |||
| ('||itemwhere||') | |||
| ; | |||
| UPDATE ' || _TABLE || ' w_table | |||
| SET ' || itemset || ' | |||
| FROM w_table w_table123 | |||
| WHERE | |||
| w_table123.level = w_table.level AND | |||
| w_table123.oidt = w_table.oidt AND | |||
| w_table123.oid1 = w_table.oid1 AND | |||
| w_table123.oid3 = w_table.oid3 AND | |||
| w_table123.oid2 = -123 AND | |||
| w_table.oid2 <> -123 AND | |||
| ('||itemwhere||') | |||
| ; | |||
| UPDATE ' || _TABLE || ' w_table | |||
| SET ' || itemset || ' | |||
| FROM w_table w_table123 | |||
| WHERE | |||
| w_table123.level = w_table.level AND | |||
| w_table123.oidt = w_table.oidt AND | |||
| w_table123.oid1 = w_table.oid1 AND | |||
| w_table123.oid2 = w_table.oid2 AND | |||
| w_table123.oid3 = -123 AND | |||
| w_table.oid3 <> -123 AND | |||
| ('||itemwhere||') | |||
| ; | |||
| ',1) | |||
| FROM | |||
| ( | |||
| SELECT array_to_string(base.cti_array_accum(itemset),',') AS itemset, | |||
| array_to_string(base.cti_array_accum(itemwhere),' OR ') AS itemwhere | |||
| FROM | |||
| (SELECT | |||
| 'work_indicateurs['||i||'] = CASE WHEN w_table123.work_indicateurs['||i||'] <> 0 THEN w_table123.work_indicateurs['||i||'] ELSE w_table.work_indicateurs['||i||'] END' AS itemset, | |||
| 'w_table123.work_indicateurs['||i||'] <> 0' AS itemwhere | |||
| FROM cti_get_columns_from_indicateurs_properties | |||
| JOIN generate_series(1,1000) i ON (string_to_array(property_value,',,'))[i] IS NOT NULL OR i = 1 | |||
| WHERE property = 'DB_COLUMNS' | |||
| ORDER BY i | |||
| ) subview | |||
| ) subview | |||
| ; | |||
| EXECUTE(' | |||
| DELETE FROM ' || _TABLE || ' w_table | |||
| WHERE | |||
| ( | |||
| w_table.oidt = -123 OR | |||
| w_table.oid1 = -123 OR | |||
| w_table.oid2 = -123 OR | |||
| w_table.oid2 = -123 | |||
| ) | |||
| ;') | |||
| ; | |||
| IF _DG_SETCOLUMNS <> '' THEN | |||
| EXECUTE ' | |||
| DROP TABLE IF EXISTS w_tablet | |||
| ; | |||
| CREATE TEMP TABLE w_tablet AS SELECT MAX(work_indicateurs) AS work_indicateurs FROM ' || _TABLE || ' w_table WHERE w_table.level = 9 AND w_table.oid = -9999999 | |||
| ; | |||
| UPDATE ' || _TABLE || ' w_table | |||
| SET '||_DG_SETCOLUMNS||' | |||
| FROM w_tablet' | |||
| ; | |||
| END IF; | |||
| -- Si comparaison, différenes et pourcentages | |||
| IF _VIEWTYPE = 'COMP' THEN | |||
| EXECUTE ' | |||
| UPDATE ' || _TABLE || ' SET | |||
| indicateurs[009]=indicateurs[001]-indicateurs[002], | |||
| indicateurs[010]=indicateurs[002]-indicateurs[003], | |||
| indicateurs[011]=indicateurs[003]-indicateurs[004], | |||
| indicateurs[012]=indicateurs[005]-indicateurs[006], | |||
| indicateurs[013]=indicateurs[006]-indicateurs[007], | |||
| indicateurs[014]=indicateurs[007]-indicateurs[008], | |||
| indicateurs[015]=base.cti_division(indicateurs[001]-indicateurs[002],indicateurs[002])*100, | |||
| indicateurs[016]=base.cti_division(indicateurs[002]-indicateurs[003],indicateurs[003])*100, | |||
| indicateurs[017]=base.cti_division(indicateurs[003]-indicateurs[004],indicateurs[004])*100, | |||
| indicateurs[018]=base.cti_division(indicateurs[005]-indicateurs[006],indicateurs[006])*100, | |||
| indicateurs[019]=base.cti_division(indicateurs[006]-indicateurs[007],indicateurs[007])*100, | |||
| indicateurs[020]=base.cti_division(indicateurs[007]-indicateurs[008],indicateurs[008])*100, | |||
| indicateurs[029]=indicateurs[021]-indicateurs[022], | |||
| indicateurs[030]=indicateurs[022]-indicateurs[023], | |||
| indicateurs[031]=indicateurs[023]-indicateurs[024], | |||
| indicateurs[032]=indicateurs[025]-indicateurs[026], | |||
| indicateurs[033]=indicateurs[026]-indicateurs[027], | |||
| indicateurs[034]=indicateurs[027]-indicateurs[028], | |||
| indicateurs[035]=base.cti_division(indicateurs[021]-indicateurs[022],indicateurs[022])*100, | |||
| indicateurs[036]=base.cti_division(indicateurs[022]-indicateurs[023],indicateurs[023])*100, | |||
| indicateurs[037]=base.cti_division(indicateurs[023]-indicateurs[024],indicateurs[024])*100, | |||
| indicateurs[038]=base.cti_division(indicateurs[025]-indicateurs[026],indicateurs[026])*100, | |||
| indicateurs[039]=base.cti_division(indicateurs[026]-indicateurs[027],indicateurs[027])*100, | |||
| indicateurs[040]=base.cti_division(indicateurs[027]-indicateurs[028],indicateurs[028])*100, | |||
| indicateurs[049]=indicateurs[041]-indicateurs[042], | |||
| indicateurs[050]=indicateurs[042]-indicateurs[043], | |||
| indicateurs[051]=indicateurs[043]-indicateurs[044], | |||
| indicateurs[052]=indicateurs[045]-indicateurs[046], | |||
| indicateurs[053]=indicateurs[046]-indicateurs[047], | |||
| indicateurs[054]=indicateurs[047]-indicateurs[048], | |||
| indicateurs[055]=base.cti_division(indicateurs[041]-indicateurs[042],indicateurs[042])*100, | |||
| indicateurs[056]=base.cti_division(indicateurs[042]-indicateurs[043],indicateurs[043])*100, | |||
| indicateurs[057]=base.cti_division(indicateurs[043]-indicateurs[044],indicateurs[044])*100, | |||
| indicateurs[058]=base.cti_division(indicateurs[045]-indicateurs[046],indicateurs[046])*100, | |||
| indicateurs[059]=base.cti_division(indicateurs[046]-indicateurs[047],indicateurs[047])*100, | |||
| indicateurs[060]=base.cti_division(indicateurs[047]-indicateurs[048],indicateurs[048])*100, | |||
| indicateurs[069]=indicateurs[061]-indicateurs[062], | |||
| indicateurs[070]=indicateurs[062]-indicateurs[063], | |||
| indicateurs[071]=indicateurs[063]-indicateurs[064], | |||
| indicateurs[072]=indicateurs[065]-indicateurs[066], | |||
| indicateurs[073]=indicateurs[066]-indicateurs[067], | |||
| indicateurs[074]=indicateurs[067]-indicateurs[068], | |||
| indicateurs[075]=base.cti_division(indicateurs[061]-indicateurs[062],indicateurs[062])*100, | |||
| indicateurs[076]=base.cti_division(indicateurs[062]-indicateurs[063],indicateurs[063])*100, | |||
| indicateurs[077]=base.cti_division(indicateurs[063]-indicateurs[064],indicateurs[064])*100, | |||
| indicateurs[078]=base.cti_division(indicateurs[065]-indicateurs[066],indicateurs[066])*100, | |||
| indicateurs[079]=base.cti_division(indicateurs[066]-indicateurs[067],indicateurs[067])*100, | |||
| indicateurs[080]=base.cti_division(indicateurs[067]-indicateurs[068],indicateurs[068])*100, | |||
| indicateurs[089]=indicateurs[081]-indicateurs[082], | |||
| indicateurs[090]=indicateurs[082]-indicateurs[083], | |||
| indicateurs[091]=indicateurs[083]-indicateurs[084], | |||
| indicateurs[092]=indicateurs[085]-indicateurs[086], | |||
| indicateurs[093]=indicateurs[086]-indicateurs[087], | |||
| indicateurs[094]=indicateurs[087]-indicateurs[088], | |||
| indicateurs[095]=base.cti_division(indicateurs[081]-indicateurs[082],indicateurs[082])*100, | |||
| indicateurs[096]=base.cti_division(indicateurs[082]-indicateurs[083],indicateurs[083])*100, | |||
| indicateurs[097]=base.cti_division(indicateurs[083]-indicateurs[084],indicateurs[084])*100, | |||
| indicateurs[098]=base.cti_division(indicateurs[085]-indicateurs[086],indicateurs[086])*100, | |||
| indicateurs[099]=base.cti_division(indicateurs[086]-indicateurs[087],indicateurs[087])*100, | |||
| indicateurs[100]=base.cti_division(indicateurs[087]-indicateurs[088],indicateurs[088])*100, | |||
| indicateurs[109]=indicateurs[101]-indicateurs[102], | |||
| indicateurs[110]=indicateurs[102]-indicateurs[103], | |||
| indicateurs[111]=indicateurs[103]-indicateurs[104], | |||
| indicateurs[112]=indicateurs[105]-indicateurs[106], | |||
| indicateurs[113]=indicateurs[106]-indicateurs[107], | |||
| indicateurs[114]=indicateurs[107]-indicateurs[108], | |||
| indicateurs[115]=base.cti_division(indicateurs[101]-indicateurs[102],indicateurs[102])*100, | |||
| indicateurs[116]=base.cti_division(indicateurs[102]-indicateurs[103],indicateurs[103])*100, | |||
| indicateurs[117]=base.cti_division(indicateurs[103]-indicateurs[104],indicateurs[104])*100, | |||
| indicateurs[118]=base.cti_division(indicateurs[105]-indicateurs[106],indicateurs[106])*100, | |||
| indicateurs[119]=base.cti_division(indicateurs[106]-indicateurs[107],indicateurs[107])*100, | |||
| indicateurs[120]=base.cti_division(indicateurs[107]-indicateurs[108],indicateurs[108])*100, | |||
| indicateurs[129]=indicateurs[121]-indicateurs[122], | |||
| indicateurs[130]=indicateurs[122]-indicateurs[123], | |||
| indicateurs[131]=indicateurs[123]-indicateurs[124], | |||
| indicateurs[132]=indicateurs[125]-indicateurs[126], | |||
| indicateurs[133]=indicateurs[126]-indicateurs[127], | |||
| indicateurs[134]=indicateurs[127]-indicateurs[128], | |||
| indicateurs[135]=base.cti_division(indicateurs[121]-indicateurs[122],indicateurs[122])*100, | |||
| indicateurs[136]=base.cti_division(indicateurs[122]-indicateurs[123],indicateurs[123])*100, | |||
| indicateurs[137]=base.cti_division(indicateurs[123]-indicateurs[124],indicateurs[124])*100, | |||
| indicateurs[138]=base.cti_division(indicateurs[125]-indicateurs[126],indicateurs[126])*100, | |||
| indicateurs[139]=base.cti_division(indicateurs[126]-indicateurs[127],indicateurs[127])*100, | |||
| indicateurs[140]=base.cti_division(indicateurs[127]-indicateurs[128],indicateurs[128])*100, | |||
| indicateurs[149]=indicateurs[141]-indicateurs[142], | |||
| indicateurs[150]=indicateurs[142]-indicateurs[143], | |||
| indicateurs[151]=indicateurs[143]-indicateurs[144], | |||
| indicateurs[152]=indicateurs[145]-indicateurs[146], | |||
| indicateurs[153]=indicateurs[146]-indicateurs[147], | |||
| indicateurs[154]=indicateurs[147]-indicateurs[148], | |||
| indicateurs[155]=base.cti_division(indicateurs[141]-indicateurs[142],indicateurs[142])*100, | |||
| indicateurs[156]=base.cti_division(indicateurs[142]-indicateurs[143],indicateurs[143])*100, | |||
| indicateurs[157]=base.cti_division(indicateurs[143]-indicateurs[144],indicateurs[144])*100, | |||
| indicateurs[158]=base.cti_division(indicateurs[145]-indicateurs[146],indicateurs[146])*100, | |||
| indicateurs[159]=base.cti_division(indicateurs[146]-indicateurs[147],indicateurs[147])*100, | |||
| indicateurs[160]=base.cti_division(indicateurs[147]-indicateurs[148],indicateurs[148])*100, | |||
| indicateurs[169]=indicateurs[161]-indicateurs[162], | |||
| indicateurs[170]=indicateurs[162]-indicateurs[163], | |||
| indicateurs[171]=indicateurs[163]-indicateurs[164], | |||
| indicateurs[172]=indicateurs[165]-indicateurs[166], | |||
| indicateurs[173]=indicateurs[166]-indicateurs[167], | |||
| indicateurs[174]=indicateurs[167]-indicateurs[168], | |||
| indicateurs[175]=base.cti_division(indicateurs[161]-indicateurs[162],indicateurs[162])*100, | |||
| indicateurs[176]=base.cti_division(indicateurs[162]-indicateurs[163],indicateurs[163])*100, | |||
| indicateurs[177]=base.cti_division(indicateurs[163]-indicateurs[164],indicateurs[164])*100, | |||
| indicateurs[178]=base.cti_division(indicateurs[165]-indicateurs[166],indicateurs[166])*100, | |||
| indicateurs[179]=base.cti_division(indicateurs[166]-indicateurs[167],indicateurs[167])*100, | |||
| indicateurs[180]=base.cti_division(indicateurs[167]-indicateurs[168],indicateurs[168])*100, | |||
| indicateurs[189]=indicateurs[181]-indicateurs[182], | |||
| indicateurs[190]=indicateurs[182]-indicateurs[183], | |||
| indicateurs[191]=indicateurs[183]-indicateurs[184], | |||
| indicateurs[192]=indicateurs[185]-indicateurs[186], | |||
| indicateurs[193]=indicateurs[186]-indicateurs[187], | |||
| indicateurs[194]=indicateurs[187]-indicateurs[188], | |||
| indicateurs[195]=base.cti_division(indicateurs[181]-indicateurs[182],indicateurs[182])*100, | |||
| indicateurs[196]=base.cti_division(indicateurs[182]-indicateurs[183],indicateurs[183])*100, | |||
| indicateurs[197]=base.cti_division(indicateurs[183]-indicateurs[184],indicateurs[184])*100, | |||
| indicateurs[198]=base.cti_division(indicateurs[185]-indicateurs[186],indicateurs[186])*100, | |||
| indicateurs[199]=base.cti_division(indicateurs[186]-indicateurs[187],indicateurs[187])*100, | |||
| indicateurs[200]=base.cti_division(indicateurs[187]-indicateurs[188],indicateurs[188])*100, | |||
| indicateurs[209]=indicateurs[201]-indicateurs[202], | |||
| indicateurs[210]=indicateurs[202]-indicateurs[203], | |||
| indicateurs[211]=indicateurs[203]-indicateurs[204], | |||
| indicateurs[212]=indicateurs[205]-indicateurs[206], | |||
| indicateurs[213]=indicateurs[206]-indicateurs[207], | |||
| indicateurs[214]=indicateurs[207]-indicateurs[208], | |||
| indicateurs[215]=base.cti_division(indicateurs[201]-indicateurs[202],indicateurs[202])*100, | |||
| indicateurs[216]=base.cti_division(indicateurs[202]-indicateurs[203],indicateurs[203])*100, | |||
| indicateurs[217]=base.cti_division(indicateurs[203]-indicateurs[204],indicateurs[204])*100, | |||
| indicateurs[218]=base.cti_division(indicateurs[205]-indicateurs[206],indicateurs[206])*100, | |||
| indicateurs[219]=base.cti_division(indicateurs[206]-indicateurs[207],indicateurs[207])*100, | |||
| indicateurs[220]=base.cti_division(indicateurs[207]-indicateurs[208],indicateurs[208])*100, | |||
| indicateurs[229]=indicateurs[221]-indicateurs[222], | |||
| indicateurs[230]=indicateurs[222]-indicateurs[223], | |||
| indicateurs[231]=indicateurs[223]-indicateurs[224], | |||
| indicateurs[232]=indicateurs[225]-indicateurs[226], | |||
| indicateurs[233]=indicateurs[226]-indicateurs[227], | |||
| indicateurs[234]=indicateurs[227]-indicateurs[228], | |||
| indicateurs[235]=base.cti_division(indicateurs[221]-indicateurs[222],indicateurs[222])*100, | |||
| indicateurs[236]=base.cti_division(indicateurs[222]-indicateurs[223],indicateurs[223])*100, | |||
| indicateurs[237]=base.cti_division(indicateurs[223]-indicateurs[224],indicateurs[224])*100, | |||
| indicateurs[238]=base.cti_division(indicateurs[225]-indicateurs[226],indicateurs[226])*100, | |||
| indicateurs[239]=base.cti_division(indicateurs[226]-indicateurs[227],indicateurs[227])*100, | |||
| indicateurs[240]=base.cti_division(indicateurs[227]-indicateurs[228],indicateurs[228])*100, | |||
| indicateurs[249]=indicateurs[241]-indicateurs[242], | |||
| indicateurs[250]=indicateurs[242]-indicateurs[243], | |||
| indicateurs[251]=indicateurs[243]-indicateurs[244], | |||
| indicateurs[252]=indicateurs[245]-indicateurs[246], | |||
| indicateurs[253]=indicateurs[246]-indicateurs[247], | |||
| indicateurs[254]=indicateurs[247]-indicateurs[248], | |||
| indicateurs[255]=base.cti_division(indicateurs[241]-indicateurs[242],indicateurs[242])*100, | |||
| indicateurs[256]=base.cti_division(indicateurs[242]-indicateurs[243],indicateurs[243])*100, | |||
| indicateurs[257]=base.cti_division(indicateurs[243]-indicateurs[244],indicateurs[244])*100, | |||
| indicateurs[258]=base.cti_division(indicateurs[245]-indicateurs[246],indicateurs[246])*100, | |||
| indicateurs[259]=base.cti_division(indicateurs[246]-indicateurs[247],indicateurs[247])*100, | |||
| indicateurs[260]=base.cti_division(indicateurs[247]-indicateurs[248],indicateurs[248])*100, | |||
| indicateurs[269]=indicateurs[261]-indicateurs[262], | |||
| indicateurs[270]=indicateurs[262]-indicateurs[263], | |||
| indicateurs[271]=indicateurs[263]-indicateurs[264], | |||
| indicateurs[272]=indicateurs[265]-indicateurs[266], | |||
| indicateurs[273]=indicateurs[266]-indicateurs[267], | |||
| indicateurs[274]=indicateurs[267]-indicateurs[268], | |||
| indicateurs[275]=base.cti_division(indicateurs[261]-indicateurs[262],indicateurs[262])*100, | |||
| indicateurs[276]=base.cti_division(indicateurs[262]-indicateurs[263],indicateurs[263])*100, | |||
| indicateurs[277]=base.cti_division(indicateurs[263]-indicateurs[264],indicateurs[264])*100, | |||
| indicateurs[278]=base.cti_division(indicateurs[265]-indicateurs[266],indicateurs[266])*100, | |||
| indicateurs[279]=base.cti_division(indicateurs[266]-indicateurs[267],indicateurs[267])*100, | |||
| indicateurs[280]=base.cti_division(indicateurs[267]-indicateurs[268],indicateurs[268])*100, | |||
| indicateurs[289]=indicateurs[281]-indicateurs[282], | |||
| indicateurs[290]=indicateurs[282]-indicateurs[283], | |||
| indicateurs[291]=indicateurs[283]-indicateurs[284], | |||
| indicateurs[292]=indicateurs[285]-indicateurs[286], | |||
| indicateurs[293]=indicateurs[286]-indicateurs[287], | |||
| indicateurs[294]=indicateurs[287]-indicateurs[288], | |||
| indicateurs[295]=base.cti_division(indicateurs[281]-indicateurs[282],indicateurs[282])*100, | |||
| indicateurs[296]=base.cti_division(indicateurs[282]-indicateurs[283],indicateurs[283])*100, | |||
| indicateurs[297]=base.cti_division(indicateurs[283]-indicateurs[284],indicateurs[284])*100, | |||
| indicateurs[298]=base.cti_division(indicateurs[285]-indicateurs[286],indicateurs[286])*100, | |||
| indicateurs[299]=base.cti_division(indicateurs[286]-indicateurs[287],indicateurs[287])*100, | |||
| indicateurs[300]=base.cti_division(indicateurs[287]-indicateurs[288],indicateurs[288])*100 | |||
| ' | |||
| ; | |||
| END IF; | |||
| -- Si evolution comparative, transformation des colonnes en lignes d'indicateurs | |||
| IF _VIEWTYPE = 'EVOLCOMP' THEN | |||
| EXECUTE(' | |||
| DROP TABLE IF EXISTS w_evolcomp_indicateurs | |||
| ; | |||
| CREATE TEMP TABLE w_evolcomp_indicateurs AS | |||
| SELECT property, property_value, substr(property,9,3)::integer AS indicateur_num, (substr(property,9,3)::integer-1)*20 AS indicateur_index | |||
| FROM cti_get_columns_from_indicateurs_properties | |||
| WHERE property LIKE ''DG\_LHEAD%'' | |||
| ; | |||
| UPDATE w_table SET | |||
| level = 2, | |||
| oidt = oid2, | |||
| textet = texte2, | |||
| labelt = texte2, | |||
| oid1 = oid2, | |||
| code1 = code2, | |||
| texte1 = texte2, | |||
| oid2 = oid1, | |||
| code2 = code1, | |||
| texte2 = texte1, | |||
| oid3 = oid1, | |||
| code3 = code1, | |||
| texte3 = texte1 , | |||
| oid = oid1, | |||
| code = code1, | |||
| texte = texte1 | |||
| ; | |||
| DROP TABLE IF EXISTS w_table_evolcomp | |||
| ; | |||
| CREATE TEMP TABLE w_table_evolcomp AS | |||
| SELECT | |||
| w_table.work_table_sequence, | |||
| 0::bigint AS sort, | |||
| w_table.level, | |||
| CASE WHEN w_table.oidt = -9999999 THEN 1 ELSE w_table.oidt END AS oidt, | |||
| CASE WHEN w_table.oidt = -9999999 THEN '' Synthèse'' ELSE w_table.labelt END AS labelt, | |||
| CASE WHEN w_table.oidt = -9999999 THEN ''Synthèse'' ELSE w_table.textet END, | |||
| w_table.oid1 , | |||
| w_table.code1, | |||
| w_table.texte1, | |||
| indicateur_num AS oid2 , | |||
| to_char(indicateur_num,''FM000'') AS code2, | |||
| property_value AS texte2, | |||
| w_table.oid3, | |||
| w_table.code3, | |||
| w_table.texte3, | |||
| w_table.oid , | |||
| w_table.code, | |||
| w_table.texte, | |||
| w_table.other_fields, | |||
| w_table.significant_data, | |||
| CASE WHEN w_table.level = 2 THEN | |||
| Array[ | |||
| indicateurs[indicateur_index+01], | |||
| indicateurs[indicateur_index+02], | |||
| indicateurs[indicateur_index+03], | |||
| indicateurs[indicateur_index+04], | |||
| indicateurs[indicateur_index+05], | |||
| indicateurs[indicateur_index+06], | |||
| indicateurs[indicateur_index+07], | |||
| indicateurs[indicateur_index+08], | |||
| indicateurs[indicateur_index+09], | |||
| indicateurs[indicateur_index+10], | |||
| indicateurs[indicateur_index+11], | |||
| indicateurs[indicateur_index+12], | |||
| indicateurs[indicateur_index+13], | |||
| indicateurs[indicateur_index+14], | |||
| indicateurs[indicateur_index+15], | |||
| indicateurs[indicateur_index+16], | |||
| indicateurs[indicateur_index+17], | |||
| indicateurs[indicateur_index+18], | |||
| indicateurs[indicateur_index+19], | |||
| indicateurs[indicateur_index+20] | |||
| ] ELSE NULL END AS indicateurs, | |||
| w_table.work_indicateurs, | |||
| w_table.indicateurs_text, | |||
| w_table.q_special | |||
| FROM w_table | |||
| JOIN w_evolcomp_indicateurs ON 1=1 | |||
| WHERE w_table.oid <> -9999999 | |||
| ; | |||
| DROP TABLE IF EXISTS w_table_evolcomp_compare | |||
| ; | |||
| CREATE TEMP TABLE w_table_evolcomp_compare AS | |||
| SELECT row_number() OVER (PARTITION BY oidt, oid1, oid2 ORDER BY code) AS n, | |||
| oidt||''-''||oid1||''-''||oid2 AS indicateur_code, | |||
| NULL::numeric[] AS indicateurs_p, | |||
| ''''::text AS code_p, | |||
| * | |||
| FROM w_table_evolcomp | |||
| WHERE level = 2 | |||
| ; | |||
| UPDATE w_table_evolcomp_compare SET | |||
| code_p = w_table_evolcomp_compare_p.code, | |||
| indicateurs_p = ARRAY[ | |||
| w_table_evolcomp_compare_p.indicateurs[01], | |||
| w_table_evolcomp_compare_p.indicateurs[02], | |||
| w_table_evolcomp_compare_p.indicateurs[03], | |||
| w_table_evolcomp_compare_p.indicateurs[04], | |||
| w_table_evolcomp_compare_p.indicateurs[05], | |||
| w_table_evolcomp_compare_p.indicateurs[06], | |||
| w_table_evolcomp_compare_p.indicateurs[07], | |||
| w_table_evolcomp_compare_p.indicateurs[08], | |||
| w_table_evolcomp_compare_p.indicateurs[09], | |||
| w_table_evolcomp_compare_p.indicateurs[10], | |||
| w_table_evolcomp_compare_p.indicateurs[11], | |||
| w_table_evolcomp_compare_p.indicateurs[12], | |||
| w_table_evolcomp_compare_p.indicateurs[13], | |||
| w_table_evolcomp_compare_p.indicateurs[14], | |||
| w_table_evolcomp_compare_p.indicateurs[15], | |||
| w_table_evolcomp_compare_p.indicateurs[16], | |||
| w_table_evolcomp_compare_p.indicateurs[17], | |||
| w_table_evolcomp_compare_p.indicateurs[18], | |||
| w_table_evolcomp_compare_p.indicateurs[19], | |||
| w_table_evolcomp_compare_p.indicateurs[20] | |||
| ] | |||
| FROM w_table_evolcomp_compare w_table_evolcomp_compare_p | |||
| WHERE w_table_evolcomp_compare.indicateur_code = w_table_evolcomp_compare_p.indicateur_code AND | |||
| w_table_evolcomp_compare.n = w_table_evolcomp_compare_p.n+1 | |||
| ; | |||
| INSERT INTO w_table_evolcomp | |||
| SELECT | |||
| work_table_sequence, | |||
| 0::bigint AS sort, | |||
| level, | |||
| oidt, | |||
| labelt, | |||
| textet, | |||
| oid1, | |||
| code1, | |||
| texte1, | |||
| oid2, | |||
| code2, | |||
| texte2, | |||
| oid3, | |||
| code3 || ''E'', | |||
| texte3, | |||
| oid, | |||
| code || ''E'', | |||
| ''Evolution ''||code||''-''||code_p, | |||
| other_fields, | |||
| significant_data, | |||
| CASE WHEN level = 2 THEN | |||
| Array[ | |||
| indicateurs[01]-indicateurs_p[01], | |||
| indicateurs[02]-indicateurs_p[02], | |||
| indicateurs[03]-indicateurs_p[03], | |||
| indicateurs[04]-indicateurs_p[04], | |||
| indicateurs[05]-indicateurs_p[05], | |||
| indicateurs[06]-indicateurs_p[06], | |||
| indicateurs[07]-indicateurs_p[07], | |||
| indicateurs[08]-indicateurs_p[08], | |||
| indicateurs[09]-indicateurs_p[09], | |||
| indicateurs[10]-indicateurs_p[10], | |||
| indicateurs[11]-indicateurs_p[11], | |||
| indicateurs[12]-indicateurs_p[12], | |||
| indicateurs[13]-indicateurs_p[13], | |||
| indicateurs[14]-indicateurs_p[14], | |||
| indicateurs[15]-indicateurs_p[15], | |||
| indicateurs[16]-indicateurs_p[16], | |||
| indicateurs[17]-indicateurs_p[17], | |||
| indicateurs[18]-indicateurs_p[18], | |||
| indicateurs[19]-indicateurs_p[19], | |||
| indicateurs[20]-indicateurs_p[20] | |||
| ] ELSE NULL END AS indicateurs, | |||
| work_indicateurs, | |||
| indicateurs_text, | |||
| q_special | |||
| FROM w_table_evolcomp_compare | |||
| WHERE n > 1 | |||
| ; | |||
| INSERT INTO w_table_evolcomp | |||
| SELECT | |||
| work_table_sequence, | |||
| 0::bigint AS sort, | |||
| level, | |||
| oidt, | |||
| labelt, | |||
| textet, | |||
| oid1, | |||
| code1, | |||
| texte1, | |||
| oid2, | |||
| code2, | |||
| texte2, | |||
| oid3, | |||
| code3 || ''P'', | |||
| texte3, | |||
| oid, | |||
| code || ''P'', | |||
| ''% Evolution ''||code||''-''||code_p, | |||
| other_fields, | |||
| significant_data, | |||
| CASE WHEN level = 2 THEN | |||
| Array[ | |||
| base.cti_division(indicateurs[01]-indicateurs_p[01],indicateurs_p[01])*100, | |||
| base.cti_division(indicateurs[02]-indicateurs_p[02],indicateurs_p[02])*100, | |||
| base.cti_division(indicateurs[03]-indicateurs_p[03],indicateurs_p[03])*100, | |||
| base.cti_division(indicateurs[04]-indicateurs_p[04],indicateurs_p[04])*100, | |||
| base.cti_division(indicateurs[05]-indicateurs_p[05],indicateurs_p[05])*100, | |||
| base.cti_division(indicateurs[06]-indicateurs_p[06],indicateurs_p[06])*100, | |||
| base.cti_division(indicateurs[07]-indicateurs_p[07],indicateurs_p[07])*100, | |||
| base.cti_division(indicateurs[08]-indicateurs_p[08],indicateurs_p[08])*100, | |||
| base.cti_division(indicateurs[09]-indicateurs_p[09],indicateurs_p[09])*100, | |||
| base.cti_division(indicateurs[10]-indicateurs_p[10],indicateurs_p[10])*100, | |||
| base.cti_division(indicateurs[11]-indicateurs_p[11],indicateurs_p[11])*100, | |||
| base.cti_division(indicateurs[12]-indicateurs_p[12],indicateurs_p[12])*100, | |||
| base.cti_division(indicateurs[13]-indicateurs_p[13],indicateurs_p[13])*100, | |||
| base.cti_division(indicateurs[14]-indicateurs_p[14],indicateurs_p[14])*100, | |||
| base.cti_division(indicateurs[15]-indicateurs_p[15],indicateurs_p[15])*100, | |||
| base.cti_division(indicateurs[16]-indicateurs_p[16],indicateurs_p[16])*100, | |||
| base.cti_division(indicateurs[17]-indicateurs_p[17],indicateurs_p[17])*100, | |||
| base.cti_division(indicateurs[18]-indicateurs_p[18],indicateurs_p[18])*100, | |||
| base.cti_division(indicateurs[19]-indicateurs_p[19],indicateurs_p[19])*100, | |||
| base.cti_division(indicateurs[20]-indicateurs_p[20],indicateurs_p[20])*100 | |||
| ] ELSE NULL END AS indicateurs, | |||
| work_indicateurs, | |||
| indicateurs_text, | |||
| q_special | |||
| FROM w_table_evolcomp_compare | |||
| WHERE n > 1 | |||
| ; | |||
| INSERT INTO w_table_evolcomp | |||
| SELECT | |||
| work_table_sequence, | |||
| 0::bigint AS sort, | |||
| 1 AS level, | |||
| oidt, | |||
| labelt, | |||
| textet, | |||
| oid1 , | |||
| code1, | |||
| texte1, | |||
| oid2 , | |||
| code2, | |||
| texte2, | |||
| -9999999 , | |||
| chr(1), | |||
| '''', | |||
| oid2 AS oid , | |||
| code2 AS code, | |||
| texte2 AS texte, | |||
| NULL, | |||
| NULL, | |||
| NULL AS indicateurs, | |||
| NULL AS work_indicateurs, | |||
| NULL AS indicateurs_text, | |||
| ''0'' AS q_special | |||
| FROM w_table_evolcomp | |||
| GROUP BY 1,2,3,4,5,6,7,8,9,10,11,12 | |||
| ; | |||
| TRUNCATE w_table | |||
| ; | |||
| INSERT INTO w_table | |||
| SELECT * FROM w_table_evolcomp | |||
| '); | |||
| END IF; | |||
| UPDATE w_table SET absolute_sum = (SELECT SUM(ABS(s)) FROM UNNEST(indicateurs) s) | |||
| ; | |||
| RETURN 'OK'; | |||
| END; | |||
| @ -0,0 +1,5 @@ | |||
| min: NO MINVALUE | |||
| max: NO MAXVALUE | |||
| start: 1 | |||
| increment: 1 | |||
| cache: 1 | |||
| @ -0,0 +1,5 @@ | |||
| min: NO MINVALUE | |||
| max: NO MAXVALUE | |||
| start: 1 | |||
| increment: 1 | |||
| cache: 1 | |||
| @ -0,0 +1,5 @@ | |||
| min: NO MINVALUE | |||
| max: NO MAXVALUE | |||
| start: 1 | |||
| increment: 1 | |||
| cache: 1 | |||
| @ -0,0 +1,5 @@ | |||
| min: NO MINVALUE | |||
| max: NO MAXVALUE | |||
| start: 1 | |||
| increment: 1 | |||
| cache: 1 | |||
| @ -0,0 +1,5 @@ | |||
| min: NO MINVALUE | |||
| max: NO MAXVALUE | |||
| start: 1 | |||
| increment: 1 | |||
| cache: 1 | |||
| @ -0,0 +1,5 @@ | |||
| min: NO MINVALUE | |||
| max: NO MAXVALUE | |||
| start: 1 | |||
| increment: 1 | |||
| cache: 1 | |||
| @ -0,0 +1,5 @@ | |||
| min: NO MINVALUE | |||
| max: NO MAXVALUE | |||
| start: 1 | |||
| increment: 1 | |||
| cache: 1 | |||
| @ -0,0 +1,5 @@ | |||
| min: NO MINVALUE | |||
| max: NO MAXVALUE | |||
| start: 1 | |||
| increment: 1 | |||
| cache: 1 | |||
| @ -0,0 +1,5 @@ | |||
| min: NO MINVALUE | |||
| max: NO MAXVALUE | |||
| start: 1 | |||
| increment: 1 | |||
| cache: 1 | |||
| @ -0,0 +1,5 @@ | |||
| min: NO MINVALUE | |||
| max: NO MAXVALUE | |||
| start: 1 | |||
| increment: 1 | |||
| cache: 1 | |||
| @ -0,0 +1,5 @@ | |||
| min: NO MINVALUE | |||
| max: NO MAXVALUE | |||
| start: 1 | |||
| increment: 1 | |||
| cache: 1 | |||
| @ -0,0 +1,5 @@ | |||
| min: NO MINVALUE | |||
| max: NO MAXVALUE | |||
| start: 1 | |||
| increment: 1 | |||
| cache: 1 | |||
| @ -0,0 +1,5 @@ | |||
| min: NO MINVALUE | |||
| max: NO MAXVALUE | |||
| start: 1 | |||
| increment: 1 | |||
| cache: 1 | |||
| @ -0,0 +1,5 @@ | |||
| min: NO MINVALUE | |||
| max: NO MAXVALUE | |||
| start: 1 | |||
| increment: 1 | |||
| cache: 1 | |||
| @ -0,0 +1,5 @@ | |||
| min: NO MINVALUE | |||
| max: NO MAXVALUE | |||
| start: 1 | |||
| increment: 1 | |||
| cache: 1 | |||
| @ -0,0 +1,5 @@ | |||
| min: NO MINVALUE | |||
| max: NO MAXVALUE | |||
| start: 1 | |||
| increment: 1 | |||
| cache: 1 | |||
| @ -0,0 +1,5 @@ | |||
| min: NO MINVALUE | |||
| max: NO MAXVALUE | |||
| start: 1 | |||
| increment: 1 | |||
| cache: 1 | |||
| @ -0,0 +1,5 @@ | |||
| min: NO MINVALUE | |||
| max: NO MAXVALUE | |||
| start: 1 | |||
| increment: 1 | |||
| cache: 1 | |||
| @ -0,0 +1,5 @@ | |||
| min: NO MINVALUE | |||
| max: NO MAXVALUE | |||
| start: 1 | |||
| increment: 1 | |||
| cache: 1 | |||
| @ -0,0 +1,5 @@ | |||
| min: NO MINVALUE | |||
| max: NO MAXVALUE | |||
| start: 1 | |||
| increment: 1 | |||
| cache: 1 | |||
| @ -0,0 +1,5 @@ | |||
| min: NO MINVALUE | |||
| max: NO MAXVALUE | |||
| start: 1 | |||
| increment: 1 | |||
| cache: 1 | |||
| @ -0,0 +1,5 @@ | |||
| min: NO MINVALUE | |||
| max: NO MAXVALUE | |||
| start: 1 | |||
| increment: 1 | |||
| cache: 1 | |||
| @ -0,0 +1,5 @@ | |||
| min: NO MINVALUE | |||
| max: NO MAXVALUE | |||
| start: 1 | |||
| increment: 1 | |||
| cache: 1 | |||
| @ -0,0 +1,5 @@ | |||
| min: NO MINVALUE | |||
| max: NO MAXVALUE | |||
| start: 1 | |||
| increment: 1 | |||
| cache: 1 | |||
| @ -0,0 +1,5 @@ | |||
| min: NO MINVALUE | |||
| max: NO MAXVALUE | |||
| start: 1 | |||
| increment: 1 | |||
| cache: 1 | |||
| @ -0,0 +1,5 @@ | |||
| min: NO MINVALUE | |||
| max: NO MAXVALUE | |||
| start: 1 | |||
| increment: 1 | |||
| cache: 1 | |||
| @ -0,0 +1,5 @@ | |||
| min: NO MINVALUE | |||
| max: NO MAXVALUE | |||
| start: 1 | |||
| increment: 1 | |||
| cache: 1 | |||
| @ -0,0 +1,5 @@ | |||
| min: NO MINVALUE | |||
| max: NO MAXVALUE | |||
| start: 1 | |||
| increment: 1 | |||
| cache: 1 | |||
| @ -0,0 +1,5 @@ | |||
| min: NO MINVALUE | |||
| max: NO MAXVALUE | |||
| start: 1 | |||
| increment: 1 | |||
| cache: 1 | |||
| @ -0,0 +1,5 @@ | |||
| min: NO MINVALUE | |||
| max: NO MAXVALUE | |||
| start: 1 | |||
| increment: 1 | |||
| cache: 1 | |||
| @ -0,0 +1,5 @@ | |||
| min: NO MINVALUE | |||
| max: NO MAXVALUE | |||
| start: 1 | |||
| increment: 1 | |||
| cache: 1 | |||
| @ -0,0 +1,5 @@ | |||
| min: NO MINVALUE | |||
| max: NO MAXVALUE | |||
| start: 1 | |||
| increment: 1 | |||
| cache: 1 | |||
| @ -0,0 +1,5 @@ | |||
| min: NO MINVALUE | |||
| max: NO MAXVALUE | |||
| start: 1 | |||
| increment: 1 | |||
| cache: 1 | |||
| @ -0,0 +1,5 @@ | |||
| min: NO MINVALUE | |||
| max: NO MAXVALUE | |||
| start: 1 | |||
| increment: 1 | |||
| cache: 1 | |||
| @ -0,0 +1,5 @@ | |||
| min: NO MINVALUE | |||
| max: NO MAXVALUE | |||
| start: 1 | |||
| increment: 1 | |||
| cache: 1 | |||
| @ -0,0 +1,5 @@ | |||
| min: NO MINVALUE | |||
| max: NO MAXVALUE | |||
| start: 1 | |||
| increment: 1 | |||
| cache: 1 | |||
| @ -0,0 +1,5 @@ | |||
| min: NO MINVALUE | |||
| max: NO MAXVALUE | |||
| start: 1 | |||
| increment: 1 | |||
| cache: 1 | |||
| @ -0,0 +1,5 @@ | |||
| min: NO MINVALUE | |||
| max: NO MAXVALUE | |||
| start: 1 | |||
| increment: 1 | |||
| cache: 1 | |||
| @ -0,0 +1,5 @@ | |||
| min: NO MINVALUE | |||
| max: NO MAXVALUE | |||
| start: 1 | |||
| increment: 1 | |||
| cache: 1 | |||
| @ -0,0 +1,5 @@ | |||
| min: NO MINVALUE | |||
| max: NO MAXVALUE | |||
| start: 1 | |||
| increment: 1 | |||
| cache: 1 | |||