diff --git a/edi_core_oca/models/edi_backend.py b/edi_core_oca/models/edi_backend.py index 037ead3e9..de323684d 100644 --- a/edi_core_oca/models/edi_backend.py +++ b/edi_core_oca/models/edi_backend.py @@ -143,7 +143,8 @@ def exchange_generate(self, exchange_record, store=True, force=False, **kw): if output: message = exchange_record._exchange_status_message("generate_ok") try: - self._validate_data(exchange_record, output) + with self.env.cr.savepoint(): + self._validate_data(exchange_record, output) except EDIValidationError as err: traceback = _get_exception_traceback() error = _get_exception_msg(err) @@ -231,8 +232,9 @@ def exchange_send(self, exchange_record): message = None res = "" try: - self._exchange_send(exchange_record) - _logger.debug("%s sent", exchange_record.identifier) + with self.env.cr.savepoint(): + self._exchange_send(exchange_record) + _logger.debug("%s sent", exchange_record.identifier) except self._send_retryable_exceptions() as err: traceback = _get_exception_traceback() error = _get_exception_msg(err) @@ -459,7 +461,8 @@ def exchange_process(self, exchange_record): message = None res = None try: - res = self._exchange_process(exchange_record) + with self.env.cr.savepoint(): + res = self._exchange_process(exchange_record) except self._swallable_exceptions() as err: if self.env.context.get("_edi_process_break_on_error"): raise @@ -515,12 +518,14 @@ def exchange_receive(self, exchange_record): error = traceback = False message = None content = None + res = None try: - content = self._exchange_receive(exchange_record) - # Ignore result of FileNotFoundError/OSError - if content is not None: - exchange_record._set_file_content(content) - self._validate_data(exchange_record) + with self.env.cr.savepoint(): + content = self._exchange_receive(exchange_record) + # Ignore result of FileNotFoundError/OSError + if content is not None: + exchange_record._set_file_content(content) + self._validate_data(exchange_record) except EDIValidationError as err: traceback = _get_exception_traceback() error = _get_exception_msg(err)