ajout d'un programme pour extraire automatiquement la table concernant les achats informatiques à partier des extractions gestlab de ngicquiaux

This commit is contained in:
Guillaume Raffy 2023-01-27 12:10:41 +01:00
commit 6bfc9bf300
6 changed files with 5268 additions and 0 deletions

10
README.md Normal file
View File

@ -0,0 +1,10 @@
# journal
## 2023/01/26
- graffy a demandé à ddemorel de faire une extraction achats ur1 2019 comme celle qui avait été faite pour 2021
- graffy vu qu'il est impossible d'isoler de façon automatique la totalité des achats informatiques (on peut certes identifier les fournisseurs 'informatique' tels que dell ou econocom, mais certains matériels informatiques sont achetés chez des généralistes tels que amazon ou radiospares) à partir de `from-cloud.ipr/2019/commandes-2019-cnrs-t001.xls`, car il manque quelque chose du style code nacres. graffy a donc demandé à ngiquiaux de voir si elle ne pouvait pas obtenir une extraction avec toutes les infos concernant tous les achats. Elle m'a envoyé `from-cloud.ipr/2019/commandes-2019-cnrs-t002.xls` qui ne contient finalement pas du tout les détails des achats (fausse manip ?)
## 2023/01/27
- graffy a obtenu de ngicquiaux un nouveau fichier `from-cloud.ipr/2019/commandes-2019-cnrs-t002.xls` qui semble correct cette fois!

View File

@ -0,0 +1,114 @@
Liste des matières;;
;;
Date;26/01/2023;
;;
Critères de la recherche;;
Filtre;Valeur;
Afficher les matières;Matières actives;
Niveau;;
Code;;
Libellé;;
;;
Liste des résultats;;
Niveau;Code;Libellé
Principal;1;PETIT MATERIEL
Secondaire;1100;Informatique
Secondaire;1200;Bureautique
Secondaire;1300;Scientifique (optique)
Secondaire;1400;Electronique
Secondaire;1500;Mécanique
Secondaire;1600;Autres
Secondaire;1700;Electricité
Secondaire;1800;Produit Chimique
Secondaire;1900;Scientifique (vide)
Principal;2;EQUIPEMENT
Secondaire;2100;Informatique
Secondaire;2200;Bureautique
Secondaire;2300;Scientifique (Optique)
Secondaire;2400;Scientifique (vide)
Secondaire;2500;Divers
Principal;3;BIBLIOTHEQUE
Secondaire;3100;Livres
Secondaire;3200;Abonnement
Secondaire;3300;Publications
Principal;4;ADMINISTRATION
Secondaire;4100;Fournitures bureau
Secondaire;4200;Reprographie
Secondaire;4300;Frais de documentation
Secondaire;4400;Frais de Transport
Secondaire;4500;Frais divers (douane)
Secondaire;4600;Frais de Maintenance et Réparation
Secondaire;4700;Frais de repas
Secondaire;4800;Abonnement téléphonique
Secondaire;4900;AUTRES
Principal;5;MISSION
Secondaire;5100;France
Secondaire;5200;CEE
Secondaire;5300;Hors CEE
Secondaire;5400;Inscription congrès
Principal;6;FLUIDES
Secondaire;6100;AIR LIQUIDE
Secondaire;6200;AIR PRODUCT
Secondaire;6300;CARBOGLACE
Secondaire;6400;LINDE
Secondaire;6500;SPECTRA GASES, GMBH
Secondaire;6600;AUTRES
Principal;7;DIVERS
Secondaire;7100;ANIMALERIE
Principal;8;PERSONNEL
Secondaire;8100;VACATIONS
Principal;9;MAINTENANCE/TRAVAUX
Secondaire;9100;Interventions
Secondaire;9200;Logiciels
Secondaire;9300;Travaux
Principal;A;FONCTIONNEMENT COURANT
Secondaire;A1--;FOURNITURES ET CONSOMMABLES DE BUREAU
Secondaire;A2--;MOBILIER ET MATERIEL DE BUREAU
Secondaire;A3--;FLUIDES
Secondaire;A4--;AUTRES DEPENSES
Secondaire;A5--;FI- FONCTIONNEMENT COURANT HORS FLUIDES
Secondaire;A6--;FLUIDES
Principal;B;FOURNITURES & EQUIPEMENTS SC, VALORISAT°
Secondaire;B01-;ANIMALERIE, EXPERIM° ANIMALE, VEGETALE
Secondaire;B02-;CONSOM.LABO, PETITS MATERIELS EQUIP.PAIL
Secondaire;B03-;GAZ & PRODUITS CHIMIE BIOCHIMIE BIOLOGIE
Secondaire;B04-;GROS EQUIPEMENTS DE LABORATOIRE
Secondaire;B05-;GROSSE INSTRUMENTATION SCIENTIFIQUE
Secondaire;B06-;OPTIQUE
Secondaire;B07-;ELECTRONIQUE / MESURES ELECTRIQUES
Secondaire;B08-;PHYSIQUE-MESURES PHYSIQUES-MECANIQUE
Secondaire;B09-;"SCIENCES DE LA TERRE & DE L'UNIVERS ARCH"
Secondaire;B10-;"CONSOMMABLES ET FOURNITURES D'ATELIER"
Secondaire;B11-;DOCUMENTATION ET EDITION
Secondaire;B12-;HYGIENE ET SECURITE
Secondaire;B13-;VALORISATION
Secondaire;B14-;FI-FOURNITURES & EQUIPEMTS SC VALORISAT°
Principal;C;MISSIONS, DEPLACEMTS, COLLOQUES COMMUNIC
Secondaire;C1--;MISSIONS, DEPLACEMENTS
Secondaire;C2--;COLLOQUES
Secondaire;C3--;COMMUNICATIONS, RECEPTIONS
Secondaire;C4--;ACHATS ET ENTRETIEN DE VEHICULES
Secondaire;C5--;FI-MISSIONS, DEPLACEM. COLLOQUES COMMUNI
Principal;D;INFORMATIQUE
Secondaire;D1--;MAINTENANCE (LOGIGIEL ET MATERIEL)
Secondaire;D2--;ABONNEMENT ET CONSOMMABLE
Secondaire;D3--;ACHAT (LOGICIEL ET MATERIEL)
Secondaire;D4--;PRESTATION (PROJET ET HORS PROJET)
Secondaire;D5--;FACTURATION INTERNE
Principal;E;IMMOBILIER
Secondaire;E1--;ENTRETIEN CHARGES RELEVANT DU LOCATAIRE
Secondaire;E2--;LOYERS
Secondaire;E3--;CONSTR° MAINTEN. RELEVANT DU PROPRIETAIR
Secondaire;E4--;FI - IMMOBILIER
Principal;F;ACTION SOCIALE
Secondaire;F1--;MEDECINE
Secondaire;F2--;RESTAURATION
Secondaire;F3--;OEUVRES SOCIALES
Secondaire;F4--;FI - ACTION SOCIALE
Principal;G;SUBVENTIONS
Secondaire;G1--;PARTICIP° FINANC. BUDGETS DES ORGANISMES
Secondaire;G2--;DELEGATION DE GESTION
Secondaire;G3--;AUTRES SUBVENTIONS
Secondaire;G4--;FI - SUBVENTIONS
;;
99 enregistrements;;
1 Liste des matières
2
3 Date 26/01/2023
4
5 Critères de la recherche
6 Filtre Valeur
7 Afficher les matières Matières actives
8 Niveau
9 Code
10 Libellé
11
12 Liste des résultats
13 Niveau Code Libellé
14 Principal 1 PETIT MATERIEL
15 Secondaire 1100 Informatique
16 Secondaire 1200 Bureautique
17 Secondaire 1300 Scientifique (optique)
18 Secondaire 1400 Electronique
19 Secondaire 1500 Mécanique
20 Secondaire 1600 Autres
21 Secondaire 1700 Electricité
22 Secondaire 1800 Produit Chimique
23 Secondaire 1900 Scientifique (vide)
24 Principal 2 EQUIPEMENT
25 Secondaire 2100 Informatique
26 Secondaire 2200 Bureautique
27 Secondaire 2300 Scientifique (Optique)
28 Secondaire 2400 Scientifique (vide)
29 Secondaire 2500 Divers
30 Principal 3 BIBLIOTHEQUE
31 Secondaire 3100 Livres
32 Secondaire 3200 Abonnement
33 Secondaire 3300 Publications
34 Principal 4 ADMINISTRATION
35 Secondaire 4100 Fournitures bureau
36 Secondaire 4200 Reprographie
37 Secondaire 4300 Frais de documentation
38 Secondaire 4400 Frais de Transport
39 Secondaire 4500 Frais divers (douane)
40 Secondaire 4600 Frais de Maintenance et Réparation
41 Secondaire 4700 Frais de repas
42 Secondaire 4800 Abonnement téléphonique
43 Secondaire 4900 AUTRES
44 Principal 5 MISSION
45 Secondaire 5100 France
46 Secondaire 5200 CEE
47 Secondaire 5300 Hors CEE
48 Secondaire 5400 Inscription congrès
49 Principal 6 FLUIDES
50 Secondaire 6100 AIR LIQUIDE
51 Secondaire 6200 AIR PRODUCT
52 Secondaire 6300 CARBOGLACE
53 Secondaire 6400 LINDE
54 Secondaire 6500 SPECTRA GASES, GMBH
55 Secondaire 6600 AUTRES
56 Principal 7 DIVERS
57 Secondaire 7100 ANIMALERIE
58 Principal 8 PERSONNEL
59 Secondaire 8100 VACATIONS
60 Principal 9 MAINTENANCE/TRAVAUX
61 Secondaire 9100 Interventions
62 Secondaire 9200 Logiciels
63 Secondaire 9300 Travaux
64 Principal A FONCTIONNEMENT COURANT
65 Secondaire A1-- FOURNITURES ET CONSOMMABLES DE BUREAU
66 Secondaire A2-- MOBILIER ET MATERIEL DE BUREAU
67 Secondaire A3-- FLUIDES
68 Secondaire A4-- AUTRES DEPENSES
69 Secondaire A5-- FI- FONCTIONNEMENT COURANT HORS FLUIDES
70 Secondaire A6-- FLUIDES
71 Principal B FOURNITURES & EQUIPEMENTS SC, VALORISAT°
72 Secondaire B01- ANIMALERIE, EXPERIM° ANIMALE, VEGETALE
73 Secondaire B02- CONSOM.LABO, PETITS MATERIELS EQUIP.PAIL
74 Secondaire B03- GAZ & PRODUITS CHIMIE BIOCHIMIE BIOLOGIE
75 Secondaire B04- GROS EQUIPEMENTS DE LABORATOIRE
76 Secondaire B05- GROSSE INSTRUMENTATION SCIENTIFIQUE
77 Secondaire B06- OPTIQUE
78 Secondaire B07- ELECTRONIQUE / MESURES ELECTRIQUES
79 Secondaire B08- PHYSIQUE-MESURES PHYSIQUES-MECANIQUE
80 Secondaire B09- SCIENCES DE LA TERRE & DE L'UNIVERS ARCH
81 Secondaire B10- CONSOMMABLES ET FOURNITURES D'ATELIER
82 Secondaire B11- DOCUMENTATION ET EDITION
83 Secondaire B12- HYGIENE ET SECURITE
84 Secondaire B13- VALORISATION
85 Secondaire B14- FI-FOURNITURES & EQUIPEMTS SC VALORISAT°
86 Principal C MISSIONS, DEPLACEMTS, COLLOQUES COMMUNIC
87 Secondaire C1-- MISSIONS, DEPLACEMENTS
88 Secondaire C2-- COLLOQUES
89 Secondaire C3-- COMMUNICATIONS, RECEPTIONS
90 Secondaire C4-- ACHATS ET ENTRETIEN DE VEHICULES
91 Secondaire C5-- FI-MISSIONS, DEPLACEM. COLLOQUES COMMUNI
92 Principal D INFORMATIQUE
93 Secondaire D1-- MAINTENANCE (LOGIGIEL ET MATERIEL)
94 Secondaire D2-- ABONNEMENT ET CONSOMMABLE
95 Secondaire D3-- ACHAT (LOGICIEL ET MATERIEL)
96 Secondaire D4-- PRESTATION (PROJET ET HORS PROJET)
97 Secondaire D5-- FACTURATION INTERNE
98 Principal E IMMOBILIER
99 Secondaire E1-- ENTRETIEN CHARGES RELEVANT DU LOCATAIRE
100 Secondaire E2-- LOYERS
101 Secondaire E3-- CONSTR° MAINTEN. RELEVANT DU PROPRIETAIR
102 Secondaire E4-- FI - IMMOBILIER
103 Principal F ACTION SOCIALE
104 Secondaire F1-- MEDECINE
105 Secondaire F2-- RESTAURATION
106 Secondaire F3-- OEUVRES SOCIALES
107 Secondaire F4-- FI - ACTION SOCIALE
108 Principal G SUBVENTIONS
109 Secondaire G1-- PARTICIP° FINANC. BUDGETS DES ORGANISMES
110 Secondaire G2-- DELEGATION DE GESTION
111 Secondaire G3-- AUTRES SUBVENTIONS
112 Secondaire G4-- FI - SUBVENTIONS
113
114 99 enregistrements

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

10
achats-ipr/2019/readme.md Normal file
View File

@ -0,0 +1,10 @@
# description des fichiers
- `commandes-2019-cnrs-t001.xls` : Ce fichier contient l'ensemble des achats de 2019, avec le libellé et le fournisseur. ngiquiaux a obtenu ce fichier par un des types d'extraction (todo: trouver son nom) de `gestlab`. Ca ressemble davantage à un rapport qu'une base de données, vu que l'unique feuille de calcul contient en fait une série de tableaux du même type, à raison d'un tableau par `Entité dépensière`. Un seul tableau avec une colonne entité `Entité dépensière` aurait été plus facile à exploiter.
- fichier envoyé par ngiquiaux à graffy le `Wed, 18 Jan 2023 14:55:29 +0100`.
- `commandes-2019-cnrs-t001.tsv` : `commandes-2019-cnrs-t001.xls` après conversion au format `tsv` avec `libreoffice`
- `commandes-2019-cnrs-t002.xls` : Suite à une demande de graffy signalant à ngiquiaux qu'il manquait le code nacres dans `commandes-2019-cnrs-t001.xls`, ngiquiaux a obtenu ce fichier par un des types d'extraction (todo: trouver son nom, mais dedans je me souviens qu'il y avait le mot *détail*) de `gestlab`, après en avoir essayés pluieurs autres.
- fichier envoyé par ngiquiaux à graffy le `Thu, 26 Jan 2023 17:39:10 +0100`
- `cnrs-matieres-001.csv` : ce fichier est censé décrire les codes des matières utilisés dans `commandes-2019-cnrs-t002.xls`
- fichier envoyé par ngiquiaux à graffy le `Thu, 26 Jan 2023 17:39:10 +0100`

53
src/main.py Normal file
View File

@ -0,0 +1,53 @@
from pathlib import Path
import re
import pandas
def cnrsformat1_to_sheet(in_tsv_file_path: Path, out_tsv_file_path: Path):
with open(in_tsv_file_path) as inf, open(out_tsv_file_path, 'wt') as outf:
table_header_has_been_written = False
for line in inf.readlines():
ignore_line = False
# Entité dépensière : AESJULLIEN AES RENNES METROPOLE MC JULLIEN Crédits reçus : 40,000.00
# Disponible : 24,743.14
#
#
# N° commande Souche Libellé commande Date commande Raison sociale fournisseur Montant consommé sur exercice antérieur Montant consommé sur l'exercice Montant réservé Montant facturé Code origine Nature dépense Statut Cde groupée
if re.match(r'^Entité dépensière', line):
ignore_line = True
is_table_header = re.match(r'^N° commande', line) is not None
# 19,572.00 19AESMCJ CAMERA ZYLA 5.5 sCMOS 04/11/19 ANDOR TECHNOLOGY LIMITED 0.00 13,681.56 0.00 0.00 635991 IM
if is_table_header and not table_header_has_been_written:
outf.write('# %s' % line)
table_header_has_been_written = True
if re.match(r'^[0-9,./]+\t', line):
outf.write(line)
def main():
cnrsformat1_file_path = Path('./from-cloud.ipr/2019/commandes-2019-cnrs-t001.tsv')
sheet_file_path = Path('./tmp/commandes-2019-cnrs.tsv')
cnrsformat1_to_sheet(cnrsformat1_file_path, sheet_file_path)
df = pandas.read_csv(sheet_file_path, sep='\t')
# delete the colums for which the labve is of the form 'Unnamed: <n>'. They come from the csv export of libre office
unnamed_columns = [column_label for column_label in df.keys() if re.match(r'^Unnamed', column_label) is not None]
print(unnamed_columns)
df = df.drop(columns=unnamed_columns)
print(df.columns)
print(df.keys())
print(df)
it_df = df[(df['Raison sociale fournisseur'] == 'DELL SAS') | (df['Raison sociale fournisseur'] == 'ECONOCOM PRODUCTS & SOLUTIONS')]
# 'AMAZON EU SARL SUCCURSALE FRANCAISE'
# 'INMAC'
# 'RETIS'
# 'APIXIT'
print(it_df)
print(it_df[['Montant facturé', 'Raison sociale fournisseur', 'Libellé commande']])
main()