added `it-ur1-l1p5.tsv`, which contains the it hardware bought by ur1 in 2019 in the format expected by labo1.5

This commit is contained in:
Guillaume Raffy 2023-03-06 16:36:39 +01:00
parent 3163224c8c
commit fff972cb23
4 changed files with 167 additions and 0 deletions

View File

@ -82,3 +82,11 @@ critique:
- id2767 samsung 860 evo le libellé ne précise pas la capacité (cette même réf est utilisée pour des disques dur de différent capacité) - id2767 samsung 860 evo le libellé ne précise pas la capacité (cette même réf est utilisée pour des disques dur de différent capacité)
### généré it-cnrs-l15.tsv
critique:
- peu de lignes comparé à cnrs... est-ce normal ?
- libellé incomplet
- id527 - l'écran n'apparait même pas dans le libellé alors que je sais qu'il y en a un
- beaucoup de libellés qui ne contiennent pas le numéro de modèle

View File

@ -0,0 +1,34 @@
Centre financier Elément d'OTP Document d'achat Fournisseur/Division fourn. Date du document Code TVA Désignation Date livraison Valeur totale en cours Reste à livrer (quantité) Livraison finale Reste à facturer (quantité) Facture finale Immobilisation Groupe marchandises Texte Correspondance Créateur commande comment
21 991R423 17CQ423-S0 4500458349.0 7976 DELL 2019-02-14 DK LATITUDE 5590 - Portable conf.n°2 2019-02-25 1616.8 0 X 0 126639.0 IA.11 Danièle, Le numéro d'ordre n'est pas cor DE MOREL DANIELE
38 991R423 17CQ423-S0 4500463111.0 7976 DELL 2019-03-28 DJ Acessoires pour LATITUDE 5 DELL 2019-04-15 81.74 0 X 0 X IA.24 BC soldé mail Danièle 14/06/19 Danièle, DE MOREL DANIELE
39 991R423 17CQ423-S0 4500463928.0 4945 MISCO INMAC WSTORE 2019-04-03 DJ Disque dur 1 To devis joint 2019-04-15 71.92 0 X 0 X IA.23 bc soldé à la demande de Danièle DE MOREL DANIELE
64 991R423 17CQ423-S0 4500474750.0 7976 DELL 2019-07-16 DJ Accessoires DELL : sac à dos,cable,clé 2019-07-20 82.94 0 X 0 IA.24 DE MOREL DANIELE
233 991R423 17CQ423-G0 4500479590.0 7976 DELL 2019-10-01 DK PC portable DELL pour MARIETTE Céline 2019-10-28 1474.61 0 X 0 127281.0 IA.11 num IMMO = 127281 num etiquette 052108 LECLAIRE FRANCIS modèle ?
234 991R423 17CQ423-G0 4500479590.0 7976 DELL 2019-10-01 DJ Eco contribution 2019-10-28 2.21 0 X 0 X IA.11 num IMMO = 127281 num etiquette 052108 LECLAIRE FRANCIS
237 991R423 17CQ423-G0 4500481443.0 7976 DELL 2019-10-14 DJ CAT1_Configuration n°1 - Latitude 3400 2019-10-28 900.04 0 X 0 IA.11 LECLAIRE FRANCIS
238 991R423 17CQ423-G0 4500481449.0 7976 DELL 2019-10-14 DJ Cat1-Configuration1-Optiplex 5070 2019-10-28 883.85 0 X 0 IA.01 erreur de numéro de contrat. Il y a plus LECLAIRE FRANCIS
292 991R423 17CQ423-B0 4500466068.0 4945 MISCO INMAC WSTORE 2019-04-26 DJ 4 Disques dur externe réf. 2963591 2019-05-02 378.62 0 X 0 IA.23 DE MOREL DANIELE
294 991R423 17CQ423-B0 4500467898.0 4945 MISCO INMAC WSTORE 2019-05-14 DJ consom. inform. (clé, cable, cordon) 2019-12-20 52.9 0 X 0 IA.24 DE MOREL DANIELE
321 991R423 17CQ423-B0 4500480354.0 7976 DELL 2019-10-07 DJ "Moniteur 27""-P27 19H" 2019-10-28 248.4 0 X 0 IA.01 erreur de numéro de contrat. il s'agit d LECLAIRE FRANCIS
322 991R423 17CQ423-B0 4500480354.0 7976 DELL 2019-10-07 DJ eco contribution 2019-10-28 3.0 0 X 0 IA.01 erreur de numéro de contrat. il s'agit d LECLAIRE FRANCIS
323 991R423 17CQ423-B0 4500481836.0 16783 ECONOCOM 2019-10-16 DJ "Philips moniteur 32"" LED Brillance p-Lin" 2019-10-28 491.58 0 X 0 IA.24 LECLAIRE FRANCIS
335 991R423 17CQ423-F0 4500458618.0 16783 ECONOCOM 2019-02-18 DJ Apple adaptateur Thunderbolt 3 2019-02-25 45.67 0 X 0 IA.24 DE MOREL DANIELE
337 991R423 17CQ423-F0 4500459260.0 4945 MISCO INMAC WSTORE 2019-02-26 DJ CLES USB VERBATIM REF.49065 2019-03-04 149.88 0 X 0 IA.23 Erreur de numéro de poste Nicolas DE MOREL DANIELE
382 991R423 17CQ423-F0 4500467350.0 4945 MISCO INMAC WSTORE 2019-05-09 DJ cons.informatiques (disque dur, souris.. 2019-05-20 140.47 0 X 0 IA.24 DE MOREL DANIELE
458 991R423 17CQ423-E0 4500481443.0 7976 DELL 2019-10-14 DJ compélement CAT1 conf n°1 2019-10-28 0.32 0 X 0 IA.11 LECLAIRE FRANCIS
461 991R423 17CQ423-E0 4500484012.0 7976 DELL 2019-11-04 DJ "Moniteur 27"" - Ecran panoramique" 2019-11-25 407.4 0 X 0 IA.01 erreur de n° de marché Attention à bien LECLAIRE FRANCIS
509 991R423 17CQ423-A0 4500466536.0 7976 DELL 2019-05-02 DK ORDINATEUR PORTABLE LUCILE RUTKOWSKI 2019-05-15 2205.84 0 X 0 126799.0 IA.11 immo: 126799 code barre: 051358 MARCAULT MAGALI modèle ? + écran ?
527 991R423 17CQ423-A0 4500469692.0 7976 DELL 2019-05-28 DK Ordinateur portable Guillaume Raffy 2019-06-17 1981.57 0 X 0 X 126871.0 IA.11 numéro immo 126871 étiquette 051357 MARCAULT MAGALI latitude 7490 + écran u2719d
530 991R423 17CQ423-A0 4500472335.0 7976 DELL 2019-06-25 DK PORTABLE LATITUDE DEV. 100000519892 2019-07-01 1680.16 0 X 0 X 126927.0 IA.11 immo: 126927 Etiquette: 051641 DE MOREL DANIELE modèle ?
545 991R423 17CQ423-A0 4500478894.0 7976 DELL 2019-09-25 DJ DELL mémoire mise niveau 16-GO 2019-09-30 906.84 0 X 0 IA.32 Bonjour, le devis n'est que pour une bar LECLAIRE FRANCIS
556 991R423 17CQ423-A0 4500482087.0 7976 DELL 2019-10-17 DK Cat3_Configuration n°1 Latitude 7400 2019-11-18 1675.1 0 X 0 127312.0 IA.11 IMMO 127312 Etiquette 052037 LECLAIRE FRANCIS
578 991R423 17CQ423-A0 4500483795.0 16783 ECONOCOM 2019-10-29 DJ Apple souris sans fil magic mouse 2 argt 2019-11-18 70.55 0 X 0 IA.24 LECLAIRE FRANCIS
579 991R423 17CQ423-A0 4500483795.0 16783 ECONOCOM 2019-10-29 DJ Apple adaptateur secteur 2019-11-18 73.92 0 X 0 IA.24 LECLAIRE FRANCIS
583 991R423 17CQ423-A0 4500484318.0 7976 DELL 2019-11-05 DJ CAT2 CONFIG 2 OPTIPLEX 7070 FORMAT MT 2019-11-25 897.98 0 X 0 IA.01 LECLAIRE FRANCIS
589 991R423 17CQ423-A0 4500484523.0 7976 DELL 2019-11-05 DJ "Moniteur 27"" Écran + sac à dos Dell" 2019-11-25 306.6 0 0 IA.24 le disque dur et le casque sont à passer LECLAIRE FRANCIS
590 991R423 17CQ423-A0 7976 DELL 2019-11-05 DJ Casque Pro sans fil Bluetooth 2019-11-25 165.6 0 0 IA.24 le disque dur et le casque sont à passer LECLAIRE FRANCIS
591 991R423 17CQ423-A0 7976 DELL 2019-11-05 DJ Câble réseau RJ45 2019-11-25 24.0 0 0 IA.24 le disque dur et le casque sont à passer LECLAIRE FRANCIS
592 991R423 17CQ423-A0 7976 DELL 2019-11-05 DJ Disque dur externe 2To 2019-11-25 108.0 0 0 IA.24 le disque dur et le casque sont à passer LECLAIRE FRANCIS
593 991R423 17CQ423-A0 4500484523.0 7976 DELL 2019-11-05 DJ Sac à dos Dell Pro 2019-11-25 40.32 0 0 IA.24 le disque dur et le casque sont à passer LECLAIRE FRANCIS
613 991R423 17CQ423-A0 4500484656.0 4945 MISCO INMAC WSTORE 2019-11-06 DJ PLANTRONICS Voyager 8200 UC Noir 2019-11-25 298.52 0 X 0 IA.24 LECLAIRE FRANCIS
614 991R423 17CQ423-A0 4500484825.0 7976 DELL 2019-11-06 DJ "Moniteur 27"" + sac à dos DELL" 2019-11-25 306.6 0 X 0 IA.24 LECLAIRE FRANCIS
Can't render this file because it has a wrong number of fields in line 2.

View File

@ -0,0 +1,24 @@
id Modele Fabricant Type
21 latitude 5590 dell pc portable
39 1 To disque dur
233 dell pc portable
237 latitude 3400 dell pc portable
238 optiplex 5070 dell pc fixe
292 disque dur externe disque dur
292 disque dur externe disque dur
292 disque dur externe disque dur
292 disque dur externe disque dur
321 p2719h dell écran
323 led brilliance p-line 32" philips écran
461 écran panormaique 27" dell écran
509 dell pc portable
527 latitude 7490 dell pc portable
527 u2719d dell écran
530 latitude dell pc portable
556 latitude 7400 dell pc portable
578 magic mouse 2 apple souris
583 optiplex 7070 dell pc fixe
589 moniteur 27" dell écran
592 externe 2 To disque dur
614 moniteur 27" dell écran
Can't render this file because it contains an unexpected character in line 13 and column 29.

101
src/sifact002_to_itorders.py Executable file
View File

@ -0,0 +1,101 @@
#!/usr/bin/env python3
from pathlib import Path
import re
import pandas
# converts a cnrs geslab type t001 report to a single table
def sifact002_to_sheet(sifact002_dir: Path, out_tsv_file_path: Path):
dept_names = [
'DIRECTION',
'MAT.NANO.SCIENCES',
'MATERIAUX ET LUMIERE',
'MATIERE MOLLE',
'MECA VERRES',
'MILIEU DIVISE',
'PHYSIQUE MOLECULAIRE'
]
with open(out_tsv_file_path, 'wt') as outf:
out_header_has_been_written = False
for dept_name in dept_names:
src_file_path = sifact002_dir / ('2019.' + dept_name + '.xls')
tmp_file_path = Path('./tmp') / ('2019.' + dept_name + '.tsv')
df = pandas.read_excel(src_file_path)
df.to_csv(tmp_file_path, sep='\t')
with open(tmp_file_path) as inf:
in_header_has_been_read = False
for line in inf.readlines():
if in_header_has_been_read:
outf.write(line)
else:
# this line is the header only output it if it's the 1st header
in_header_has_been_read = True
if not out_header_has_been_written:
outf.write(line)
out_header_has_been_written = True
# add an index
df = pandas.read_csv(out_tsv_file_path, sep='\t')
# df.rename(columns={0: 'uid'})
# df['id'] = range(1, len(df) + 1)
# df.insert(0, 'id', df.pop('id'))
# df = df[-1:] + df[:-1] # put the id column in the first column
df.to_csv(out_tsv_file_path, sep='\t')
# 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 # noqa
# 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 sifact002_to_itorders(sifact002_dir: Path, itorders_file_path: Path):
sheet_file_path = Path('./tmp/commandes-2019-ur1.tsv')
sifact002_to_sheet(sifact002_dir, sheet_file_path)
df = pandas.read_csv(sheet_file_path, sep='\t')
# delete the colums for which the label 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['Fournisseur/Division fourn.'] == '7976 DELL') |
(df['Fournisseur/Division fourn.'] == '16783 ECONOCOM') |
(df['Fournisseur/Division fourn.'] == '4945 MISCO INMAC WSTORE')
]
# 'AMAZON EU SARL SUCCURSALE FRANCAISE'
# 'INMAC'
# 'RETIS'
# 'APIXIT'
print(it_df)
# print(it_df[['Montant facturé', 'Raison sociale fournisseur', 'Libellé commande']])
it_df.to_csv(itorders_file_path, sep='\t')
def main():
sifact002_to_itorders(Path('./achats-ipr/2019/ur1/from_ddemorel'), Path('./tmp/commandes-it-2019-ur1-002.tsv'))
main()