def no_origin(move):
return ((move.from_location.type in types)
^ (move.to_location.type in types)
and not move.origin)
moves = sorted(filter(no_origin, moves))
if moves:
names = ', '.join(m.rec_name for m in moves[:5])
if len(moves) > 5:
names += '...'
warning_name = '%s.done' % hashlib.md5(
str(moves).encode('utf-8')).hexdigest()
if Warning.check(warning_name):
raise MoveOriginWarning(warning_name,
gettext('stock.msg_move_no_origin',
moves=names))
et moi j’ai implémenté
types = {'customer', 'supplier'}
def no_origin(move):
print(move)
return ((move.from_location.type in types)
^ (move.to_location.type in types)
and not move.origin)
movesw = sorted(filter(no_origin, moves))
key = ', '.join(m.rec_name for m in moves[:5])
if len(moves) > 5:
key += '...'
warning_name = '%s.done' % hashlib.md5(str(movesw).encode('utf-8')).hexdigest()
Model.get('res.user.warning')(user=admin_user, name=warning_name, always=True).save()
et il continue à me dire
trytond.modules.stock.exceptions.MoveOriginWarning:.... n'ont pas d'origine
parce que je le suis emmêlé car dans proteus movesw est les moves classés et que dans move.py c’est moves qui l’est.
mais j’ai eu de la chance des 2 cotés j’ai la même clé, mais pas le même hash
il faut que je regarde bien mes 2 chaînes, elles semblent identiques mais ne le sont pas. car si je fais l’expérience avec une AZERT5678UIOIPO j’ai le même hash
ce serait tellement simple de pouvoir choisit stock move comme origine, comme dans l’interface, SAO mais je n’ai pas réussi à remonter et comprendre comment faire.
Si c’est un mouvement d’entrée, logiquement ce doit être un Purchase comme origine, les mouvements de stock avec un stock move comme origine sont des mouvements d’inventaire.
Pourquoi ne pas reproduire la clé comme dans l’exemple de @DancesWithHaggises ?
Comme explique plus haut, c’est pour cela que je donne le code ET que je donne les étapes que j’ai suivi j’ai tenté. et j’ai déjà tenté
except trytond.modules.stock.exceptions.MoveOriginWarning as e:
^^^^^^^
NameError: name ‘trytond’ is not defined
malgré le fait que j’ai bien
from trytond import modules
from trytond.modules.stock.exceptions import MoveOriginWarning
d’ailleurs il faut importer ces lignes après la config de la base de donnée sinon il la zappe et recherche une base sqlite et plante.
Pour mettre à jour, il y a une multitude d’étape de non régression et de re-vérification de ce qui a déjà été vérifié. il faut que toutes les bibliothèques soient disponibles et soient aussi compatibles avec les autres logiciels qui interagissent.
ce n’est pas un simple clic dans l’interface : une mise à jour sur le dev puis du travail et une mise à jour sur la prod, ce n’est pas aussi simple, la prod ne peut pas être en rade.
Dans l’interface on peut choisir stock move comme origine, qui donne stock.move,-1 dans la table, mais j’ai essayé 1/4 de journée à le faire tomber en marche sans succès