On ne change pas une équipe qui gagne, alors j’ai une nouvelle question Tryton pour DISTILIBRE (franchement, on est motivés!).
Quelles sont les bonnes pratiques pour mettre à jour les catégories de produits de façon massive (en fermant les yeux) et automatique (en filant des fichiers de mise à jour officiels)?
Le besoin est d’arriver à un truc comme les taux de change des devises ou encore les tarifs des transporteurs qu’on peut mettre à jour (même si je comprends que ça nécessite un service tiers toujours up et disponible pour les données de référence, sinon ça marche pas).
Je pense qu’il y a moyen d’utiliser l’import CSV pour une structure aussi simple.
Car l’import CSV peut être utiliser aussi pour mettre à jour si on définit une colonne id. Cette colonne peut contenir le nom du record à mettre à jour. Donc dans cette example le code de la catégorie.
Par contre un import doit soit contenir que des mise à jour soit que des créations. Mais a priori il devrait être possible d’améliorer l’import pour gérer les deux cas d’un coup.
Est-ce que ça pourrait être un truc genre, dans le format CSV:
si l’ID est renseigné, c’est une mise à jour (dont désactiver un record);
si l’ID n’est pas renseigné, c’est une création.
Par contre, ça veut dire qu’il y a une bijection entre l’ID dans Tryton et l’ID dans le référentiel (ici, c’est facile, le code NC en tant que tel est unique et peut être mis à jour, créé, ou encore rendu obsolete, donc ça marche aussi).
Tu as déjà quelque chose de ce type qui fonctionne dans les scripts d’intégration que je t’ai mis a disposition.
Recherche d’un éléments par son ‘_rec_name’ et mise a jour.
Si ces catégories doivent se mettre à jour selon la réglementation qui évolue annuellement, ne doivent-elles pas être intégrées en xml dans le module pour mise à jour automatique à chaque nouvelle version du module ?
Justement si elle évolue si souvent, les maintenir en standard dans de l’XML ne permettra pas de les mettre à jour si souvent.
Maintenant s’il y a une source structurée ça pourrait se gérer comme l’import de pays ou code postal.
Si je comprends bien ce fonctionnement type (en lisant vite fait le code de ces scripts):
Il y aurait donc un script trytond_import_nc8 dans je ne sais quel module, qui a toutes les données de références structurées, genre:
[...]
ORGANIZATIONS = {
# Founding members has no from date
'EU': {
'AT': [(dt.date(1995, 1, 1), None)],
'BE': [(None, None)],
[...]
Dans chaque script, il y a toute la logique de mise à jour, genre si le record existe déjà on le remplace:
[...]
def update_countries(countries):
[...]
if code in countries:
[...]
if organization_code in organizations and code in members:
Lorsque met à jour Tryton, ce script qui est dans le répertoire du module, est à jour également (avec les dernières améliorations).
Mais alors, après avoir mis à jour les modules Tryton, est-ce qu’il faut relancer les scripts trytond_import_countries, trytond_import_postal_codes ou trytond_import_currencies à la main pour mettre à jour leurs données respectives?
En toute logique, je dirai que oui, c’est manuel, mais je ne suis pas sûr…
Si j’ai bien compris, elles représentent une version de la réglementation qui évolue chaque année, mais pas en cours d’année.
Je crois aussi que l’historique de ces données réglementaires doit accompagner les données d’opération de l’année civile correspondante.
Pas comme les codes postaux. Plutot comme les règles de taxes associées à chaque période historique…