diff --git a/printing_auto_base/models/printing_auto.py b/printing_auto_base/models/printing_auto.py index 2216fc0..351f80b 100644 --- a/printing_auto_base/models/printing_auto.py +++ b/printing_auto_base/models/printing_auto.py @@ -53,6 +53,12 @@ class PrintingAuto(models.Model): printer_id = fields.Many2one("printing.printer", "Printer") printer_tray_id = fields.Many2one("printing.tray", "Tray") nbr_of_copies = fields.Integer("Number of Copies", default=1) + action_on_error = fields.Selection( + [("log", "Record an error"), ("raise", "Raise an Exception")], + "Action on error", + default="log", + required=True, + ) @api.constrains("data_source", "report_id", "attachment_domain") def _check_data_source(self): diff --git a/printing_auto_base/models/printing_auto_mixin.py b/printing_auto_base/models/printing_auto_mixin.py index 036415b..5bb0f85 100644 --- a/printing_auto_base/models/printing_auto_mixin.py +++ b/printing_auto_base/models/printing_auto_mixin.py @@ -37,14 +37,21 @@ class PrintingAutoMixin(models.AbstractModel): def _get_printing_auto(self): return self.auto_printing_ids - def _handle_print_auto(self, printing_auto): + def _do_print_auto(self, printing_auto): self.ensure_one() printing_auto.ensure_one() + printer, count = printing_auto.do_print(self) + if count: + self._on_printing_auto_done(printing_auto, printer, count) + + def _handle_print_auto(self, printing_auto): + printing_auto.ensure_one() + if printing_auto.action_on_error == "raise": + self._do_print_auto(printing_auto) + return try: with self.env.cr.savepoint(): - printer, count = printing_auto.do_print(self) - if count: - self._on_printing_auto_done(printing_auto, printer, count) + self._do_print_auto(printing_auto) except Exception as e: _logger.exception( "An error occurred while printing '%s' for record %s.", diff --git a/printing_auto_base/views/printing_auto.xml b/printing_auto_base/views/printing_auto.xml index a346bd5..5489e49 100644 --- a/printing_auto_base/views/printing_auto.xml +++ b/printing_auto_base/views/printing_auto.xml @@ -24,6 +24,7 @@ domain="[('printer_id', '=', printer_id)]" /> + @@ -44,6 +45,7 @@ +