diff --git a/modules/document_incoming_wr/document.py b/modules/document_incoming_wr/document.py index 0f95deb..9e907f0 100644 --- a/modules/document_incoming_wr/document.py +++ b/modules/document_incoming_wr/document.py @@ -6,6 +6,7 @@ from trytond.model import fields from trytond.modules.document_incoming.exceptions import ( DocumentIncomingProcessError) from trytond.pool import Pool, PoolMeta +import json class IncomingConfiguration(metaclass=PoolMeta): @@ -37,8 +38,31 @@ class Incoming(metaclass=PoolMeta): WR.run_ocr([wr]) WR.run_metadata([wr]) + metadata = wr.metadata_json + + # DEBUG: Vérifiez le type et contenu + print(f"Type de metadata: {type(metadata)}") + print(f"Contenu de metadata: {metadata}") + + # Si c'est une chaîne, parsez-la + if isinstance(metadata, str): + try: + metadata = json.loads(metadata) + except json.JSONDecodeError as e: + raise DocumentIncomingProcessError( + gettext('document_incoming.msg_invalid_json', + document=self.rec_name, + error=str(e))) + + # Maintenant metadata devrait être un dict + if not isinstance(metadata, dict): + raise DocumentIncomingProcessError( + gettext('document_incoming.msg_no_metadata', + document=self.rec_name)) + + # Créez le rapport - CORRECT, pas besoin de save() supplémentaire WeightReport = Pool().get('weight.report') - WeightReport.create_from_json(wr.metadata_json) + WeightReport.create_from_json(metadata) return wr