mirror of
https://github.com/OCA/report-print-send.git
synced 2025-02-16 07:11:31 +02:00
[IMP] base_report_to_printer: exceptions notifications
Better handling of exceptions feedback. A notification will show up with the issued printer and report and a button for the user to download the report as a fallback to the failure. TT51628
This commit is contained in:
@@ -111,6 +111,13 @@ Guidelines for use:
|
||||
When no tray is configured for a report and a user, the default tray
|
||||
setup on the CUPS server is used.
|
||||
|
||||
Known issues / Roadmap
|
||||
======================
|
||||
|
||||
- With threaded printing there's no download fallback when the issue
|
||||
isn't detected by the CUPS Odoo backend. To able to do it, we would
|
||||
need to notify the bus or use web_notify for it.
|
||||
|
||||
Changelog
|
||||
=========
|
||||
|
||||
|
||||
@@ -59,6 +59,8 @@ class IrActionsReport(models.Model):
|
||||
"skip_printer_exception"
|
||||
):
|
||||
serializable_result["printer_exception"] = True
|
||||
if self.env.context.get("force_print_to_client"):
|
||||
serializable_result["action"] = "client"
|
||||
return serializable_result
|
||||
|
||||
def _get_user_default_print_behaviour(self):
|
||||
@@ -135,7 +137,10 @@ class IrActionsReport(models.Model):
|
||||
|
||||
return True
|
||||
else:
|
||||
return self.print_document(record_ids, data=data)
|
||||
try:
|
||||
return self.print_document(record_ids, data=data)
|
||||
except Exception:
|
||||
return
|
||||
|
||||
def print_document_threaded(self, report_id, record_ids, data):
|
||||
with registry(self._cr.dbname).cursor() as cr:
|
||||
@@ -171,6 +176,7 @@ class IrActionsReport(models.Model):
|
||||
else:
|
||||
title = self.report_name
|
||||
behaviour["title"] = title
|
||||
behaviour["res_ids"] = record_ids
|
||||
# TODO should we use doc_format instead of report_type
|
||||
return printer.print_document(
|
||||
self, document, doc_format=self.report_type, **behaviour
|
||||
|
||||
3
base_report_to_printer/readme/ROADMAP.md
Normal file
3
base_report_to_printer/readme/ROADMAP.md
Normal file
@@ -0,0 +1,3 @@
|
||||
- With threaded printing there's no download fallback when the issue
|
||||
isn't detected by the CUPS Odoo backend. To able to do it, we would
|
||||
need to notify the bus or use web_notify for it.
|
||||
@@ -399,16 +399,17 @@ preprinted paper such as payment slip.</p>
|
||||
<li><a class="reference internal" href="#installation" id="toc-entry-1">Installation</a></li>
|
||||
<li><a class="reference internal" href="#configuration" id="toc-entry-2">Configuration</a></li>
|
||||
<li><a class="reference internal" href="#usage" id="toc-entry-3">Usage</a></li>
|
||||
<li><a class="reference internal" href="#changelog" id="toc-entry-4">Changelog</a><ul>
|
||||
<li><a class="reference internal" href="#section-1" id="toc-entry-5">13.0.1.0.0 (2019-09-30)</a></li>
|
||||
<li><a class="reference internal" href="#section-2" id="toc-entry-6">12.0.1.0.0 (2018-02-04)</a></li>
|
||||
<li><a class="reference internal" href="#known-issues-roadmap" id="toc-entry-4">Known issues / Roadmap</a></li>
|
||||
<li><a class="reference internal" href="#changelog" id="toc-entry-5">Changelog</a><ul>
|
||||
<li><a class="reference internal" href="#section-1" id="toc-entry-6">13.0.1.0.0 (2019-09-30)</a></li>
|
||||
<li><a class="reference internal" href="#section-2" id="toc-entry-7">12.0.1.0.0 (2018-02-04)</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a class="reference internal" href="#bug-tracker" id="toc-entry-7">Bug Tracker</a></li>
|
||||
<li><a class="reference internal" href="#credits" id="toc-entry-8">Credits</a><ul>
|
||||
<li><a class="reference internal" href="#authors" id="toc-entry-9">Authors</a></li>
|
||||
<li><a class="reference internal" href="#contributors" id="toc-entry-10">Contributors</a></li>
|
||||
<li><a class="reference internal" href="#maintainers" id="toc-entry-11">Maintainers</a></li>
|
||||
<li><a class="reference internal" href="#bug-tracker" id="toc-entry-8">Bug Tracker</a></li>
|
||||
<li><a class="reference internal" href="#credits" id="toc-entry-9">Credits</a><ul>
|
||||
<li><a class="reference internal" href="#authors" id="toc-entry-10">Authors</a></li>
|
||||
<li><a class="reference internal" href="#contributors" id="toc-entry-11">Contributors</a></li>
|
||||
<li><a class="reference internal" href="#maintainers" id="toc-entry-12">Maintainers</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
@@ -462,23 +463,31 @@ preferences.</li>
|
||||
<p>When no tray is configured for a report and a user, the default tray
|
||||
setup on the CUPS server is used.</p>
|
||||
</div>
|
||||
<div class="section" id="known-issues-roadmap">
|
||||
<h1><a class="toc-backref" href="#toc-entry-4">Known issues / Roadmap</a></h1>
|
||||
<ul class="simple">
|
||||
<li>With threaded printing there’s no download fallback when the issue
|
||||
isn’t detected by the CUPS Odoo backend. To able to do it, we would
|
||||
need to notify the bus or use web_notify for it.</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="section" id="changelog">
|
||||
<h1><a class="toc-backref" href="#toc-entry-4">Changelog</a></h1>
|
||||
<h1><a class="toc-backref" href="#toc-entry-5">Changelog</a></h1>
|
||||
<div class="section" id="section-1">
|
||||
<h2><a class="toc-backref" href="#toc-entry-5">13.0.1.0.0 (2019-09-30)</a></h2>
|
||||
<h2><a class="toc-backref" href="#toc-entry-6">13.0.1.0.0 (2019-09-30)</a></h2>
|
||||
<ul class="simple">
|
||||
<li>[RELEASE] Port from V12.</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="section" id="section-2">
|
||||
<h2><a class="toc-backref" href="#toc-entry-6">12.0.1.0.0 (2018-02-04)</a></h2>
|
||||
<h2><a class="toc-backref" href="#toc-entry-7">12.0.1.0.0 (2018-02-04)</a></h2>
|
||||
<ul class="simple">
|
||||
<li>[RELEASE] Port from V11.</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="section" id="bug-tracker">
|
||||
<h1><a class="toc-backref" href="#toc-entry-7">Bug Tracker</a></h1>
|
||||
<h1><a class="toc-backref" href="#toc-entry-8">Bug Tracker</a></h1>
|
||||
<p>Bugs are tracked on <a class="reference external" href="https://github.com/OCA/report-print-send/issues">GitHub Issues</a>.
|
||||
In case of trouble, please check there if your issue has already been reported.
|
||||
If you spotted it first, help us to smash it by providing a detailed and welcomed
|
||||
@@ -486,9 +495,9 @@ If you spotted it first, help us to smash it by providing a detailed and welcome
|
||||
<p>Do not contact contributors directly about support or help with technical issues.</p>
|
||||
</div>
|
||||
<div class="section" id="credits">
|
||||
<h1><a class="toc-backref" href="#toc-entry-8">Credits</a></h1>
|
||||
<h1><a class="toc-backref" href="#toc-entry-9">Credits</a></h1>
|
||||
<div class="section" id="authors">
|
||||
<h2><a class="toc-backref" href="#toc-entry-9">Authors</a></h2>
|
||||
<h2><a class="toc-backref" href="#toc-entry-10">Authors</a></h2>
|
||||
<ul class="simple">
|
||||
<li>Agile Business Group & Domsense</li>
|
||||
<li>Pegueroles SCP</li>
|
||||
@@ -499,7 +508,7 @@ If you spotted it first, help us to smash it by providing a detailed and welcome
|
||||
</ul>
|
||||
</div>
|
||||
<div class="section" id="contributors">
|
||||
<h2><a class="toc-backref" href="#toc-entry-10">Contributors</a></h2>
|
||||
<h2><a class="toc-backref" href="#toc-entry-11">Contributors</a></h2>
|
||||
<ul class="simple">
|
||||
<li>Ferran Pegueroles <<a class="reference external" href="mailto:ferran@pegueroles.com">ferran@pegueroles.com</a>></li>
|
||||
<li>Albert Cervera i Areny <<a class="reference external" href="mailto:albert@nan-tic.com">albert@nan-tic.com</a>></li>
|
||||
@@ -521,7 +530,7 @@ If you spotted it first, help us to smash it by providing a detailed and welcome
|
||||
</ul>
|
||||
</div>
|
||||
<div class="section" id="maintainers">
|
||||
<h2><a class="toc-backref" href="#toc-entry-11">Maintainers</a></h2>
|
||||
<h2><a class="toc-backref" href="#toc-entry-12">Maintainers</a></h2>
|
||||
<p>This module is maintained by the OCA.</p>
|
||||
<a class="reference external image-reference" href="https://odoo-community.org">
|
||||
<img alt="Odoo Community Association" src="https://odoo-community.org/logo.png" />
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
/** @odoo-module */
|
||||
import {Markup} from "web.utils";
|
||||
import {_t} from "@web/core/l10n/translation";
|
||||
import {registry} from "@web/core/registry";
|
||||
|
||||
@@ -9,13 +10,12 @@ async function cupsReportActionHandler(action, options, env) {
|
||||
const print_action = await orm.call(
|
||||
"ir.actions.report",
|
||||
"print_action_for_report_name",
|
||||
[action.report_name]
|
||||
[action.report_name],
|
||||
{context: {force_print_to_client: action.context.force_print_to_client}}
|
||||
);
|
||||
if (
|
||||
print_action &&
|
||||
print_action.action === "server" &&
|
||||
!print_action.printer_exception
|
||||
) {
|
||||
var printer_exception = print_action.printer_exception;
|
||||
if (print_action && print_action.action === "server" && !printer_exception) {
|
||||
// The Odoo CUPS backend is ok. We try to print into the printer
|
||||
const result = await orm.call(
|
||||
"ir.actions.report",
|
||||
"print_document_client_action",
|
||||
@@ -25,20 +25,58 @@ async function cupsReportActionHandler(action, options, env) {
|
||||
env.services.notification.add(_t("Successfully sent to printer!"), {
|
||||
type: "success",
|
||||
});
|
||||
} else {
|
||||
env.services.notification.add(_t("Could not send to printer!"), {
|
||||
type: "danger",
|
||||
});
|
||||
return true;
|
||||
// In case of exception during the job, we won't get any response. So we
|
||||
// should flag the exception and notify the user
|
||||
}
|
||||
return true;
|
||||
env.services.notification.add(_t("Could not sent to printer!"), {
|
||||
type: "danger",
|
||||
});
|
||||
printer_exception = true;
|
||||
}
|
||||
if (print_action.printer_exception) {
|
||||
env.services.notification.add(
|
||||
env._t("The printer couldn't be reached. Downloading document instead"),
|
||||
if (print_action && print_action.action === "server" && printer_exception) {
|
||||
// Just so the translation engine detects them as it doesn't do it inside
|
||||
// template strings
|
||||
const terms = {
|
||||
the_report: env._t("The report"),
|
||||
couldnt_be_printed: env._t(
|
||||
"couldn't be printed. Click on the button below to download it"
|
||||
),
|
||||
issue_on: env._t("Issue on"),
|
||||
};
|
||||
const notificationRemove = env.services.notification.add(
|
||||
Markup(
|
||||
`<p>${terms.the_report} <strong>${action.name}</strong> ${terms.couldnt_be_printed}</p>`
|
||||
),
|
||||
{
|
||||
title: `${terms.issue_on} ${print_action.printer_name}`,
|
||||
type: "warning",
|
||||
sticky: true,
|
||||
messageIsHtml: true,
|
||||
buttons: [
|
||||
{
|
||||
name: env._t("Print"),
|
||||
primary: true,
|
||||
icon: "fa-print",
|
||||
onClick: async () => {
|
||||
const context = {
|
||||
force_print_to_client: true,
|
||||
must_skip_send_to_printer: true,
|
||||
};
|
||||
env.services.user.updateContext(context);
|
||||
await env.services.action.doAction(
|
||||
{type: "ir.actions.report", ...action},
|
||||
{
|
||||
additionalContext: context,
|
||||
}
|
||||
);
|
||||
notificationRemove();
|
||||
},
|
||||
},
|
||||
],
|
||||
}
|
||||
);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user