odoo-addon-base-report-to-printer 17.0.1.1.1__py3-none-any.whl → 18.0.1.0.0.4__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of odoo-addon-base-report-to-printer might be problematic. Click here for more details.
- odoo/addons/base_report_to_printer/README.rst +52 -45
- odoo/addons/base_report_to_printer/__manifest__.py +1 -1
- odoo/addons/base_report_to_printer/data/printing_data.xml +5 -11
- odoo/addons/base_report_to_printer/i18n/am.po +0 -11
- odoo/addons/base_report_to_printer/i18n/base_report_to_printer.pot +1 -12
- odoo/addons/base_report_to_printer/i18n/bg.po +0 -11
- odoo/addons/base_report_to_printer/i18n/ca.po +0 -11
- odoo/addons/base_report_to_printer/i18n/de.po +0 -11
- odoo/addons/base_report_to_printer/i18n/el_GR.po +0 -11
- odoo/addons/base_report_to_printer/i18n/es.po +0 -11
- odoo/addons/base_report_to_printer/i18n/es_AR.po +0 -11
- odoo/addons/base_report_to_printer/i18n/es_ES.po +0 -11
- odoo/addons/base_report_to_printer/i18n/fi.po +0 -11
- odoo/addons/base_report_to_printer/i18n/fr.po +0 -11
- odoo/addons/base_report_to_printer/i18n/gl.po +0 -11
- odoo/addons/base_report_to_printer/i18n/hr.po +0 -11
- odoo/addons/base_report_to_printer/i18n/hr_HR.po +0 -11
- odoo/addons/base_report_to_printer/i18n/it.po +1 -12
- odoo/addons/base_report_to_printer/i18n/nl.po +0 -11
- odoo/addons/base_report_to_printer/i18n/nl_NL.po +0 -11
- odoo/addons/base_report_to_printer/i18n/pt.po +0 -11
- odoo/addons/base_report_to_printer/i18n/pt_BR.po +0 -11
- odoo/addons/base_report_to_printer/i18n/pt_PT.po +0 -11
- odoo/addons/base_report_to_printer/i18n/sl.po +0 -11
- odoo/addons/base_report_to_printer/i18n/sv.po +0 -11
- odoo/addons/base_report_to_printer/i18n/tr.po +0 -11
- odoo/addons/base_report_to_printer/i18n/zh_CN.po +0 -11
- odoo/addons/base_report_to_printer/models/ir_actions_report.py +6 -5
- odoo/addons/base_report_to_printer/models/printing_action.py +2 -2
- odoo/addons/base_report_to_printer/models/printing_printer.py +1 -1
- odoo/addons/base_report_to_printer/models/printing_report_xml_action.py +1 -1
- odoo/addons/base_report_to_printer/models/res_users.py +11 -3
- odoo/addons/base_report_to_printer/readme/CONTRIBUTORS.md +1 -0
- odoo/addons/base_report_to_printer/readme/CREDITS.md +1 -0
- odoo/addons/base_report_to_printer/static/description/index.html +16 -9
- odoo/addons/base_report_to_printer/static/src/js/qweb_action_manager.esm.js +2 -2
- odoo/addons/base_report_to_printer/tests/test_ir_actions_report.py +121 -86
- odoo/addons/base_report_to_printer/tests/test_printing_job.py +16 -9
- odoo/addons/base_report_to_printer/tests/test_printing_printer.py +50 -34
- odoo/addons/base_report_to_printer/tests/test_printing_printer_tray.py +9 -9
- odoo/addons/base_report_to_printer/tests/test_printing_printer_wizard.py +15 -9
- odoo/addons/base_report_to_printer/tests/test_printing_server.py +38 -27
- odoo/addons/base_report_to_printer/tests/test_report.py +41 -20
- odoo/addons/base_report_to_printer/views/printing_job.xml +2 -2
- odoo/addons/base_report_to_printer/views/printing_printer.xml +3 -3
- odoo/addons/base_report_to_printer/views/printing_report.xml +2 -2
- odoo/addons/base_report_to_printer/views/printing_server.xml +3 -3
- odoo/addons/base_report_to_printer/wizards/print_attachment_report.xml +2 -2
- odoo/addons/base_report_to_printer/wizards/printing_printer_update_wizard.py +1 -1
- {odoo_addon_base_report_to_printer-17.0.1.1.1.dist-info → odoo_addon_base_report_to_printer-18.0.1.0.0.4.dist-info}/METADATA +55 -48
- odoo_addon_base_report_to_printer-18.0.1.0.0.4.dist-info/RECORD +77 -0
- odoo_addon_base_report_to_printer-17.0.1.1.1.dist-info/RECORD +0 -76
- {odoo_addon_base_report_to_printer-17.0.1.1.1.dist-info → odoo_addon_base_report_to_printer-18.0.1.0.0.4.dist-info}/WHEEL +0 -0
- {odoo_addon_base_report_to_printer-17.0.1.1.1.dist-info → odoo_addon_base_report_to_printer-18.0.1.0.0.4.dist-info}/top_level.txt +0 -0
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
# Copyright 2016 LasLabs Inc.
|
|
2
2
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
|
|
3
3
|
|
|
4
|
+
import logging
|
|
4
5
|
from unittest import mock
|
|
5
6
|
|
|
6
7
|
from odoo import fields
|
|
@@ -43,15 +44,20 @@ class TestPrintingServer(TransactionCase):
|
|
|
43
44
|
values["printer_id"] = printer.id
|
|
44
45
|
return self.env["printing.job"].create(values)
|
|
45
46
|
|
|
46
|
-
|
|
47
|
-
def test_update_printers_error(self, cups):
|
|
47
|
+
def test_update_printers_error(self):
|
|
48
48
|
"""It should catch any exception from CUPS and update status"""
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
49
|
+
with (
|
|
50
|
+
mock.patch(f"{model}.cups") as cups,
|
|
51
|
+
self.assertLogs(level=logging.WARNING) as logs,
|
|
52
|
+
):
|
|
53
|
+
cups.Connection.side_effect = Exception
|
|
54
|
+
rec_id = self.new_printer()
|
|
55
|
+
self.Model.update_printers()
|
|
56
|
+
self.assertEqual("server-error", rec_id.status)
|
|
57
|
+
self.assertEqual(len(logs.records), 1)
|
|
58
|
+
self.assertEqual(logs.records[0].levelno, logging.WARNING)
|
|
53
59
|
|
|
54
|
-
@mock.patch("
|
|
60
|
+
@mock.patch(f"{model}.cups")
|
|
55
61
|
def test_update_printers_inits_cups(self, cups):
|
|
56
62
|
"""It should init CUPS connection"""
|
|
57
63
|
self.new_printer()
|
|
@@ -60,29 +66,29 @@ class TestPrintingServer(TransactionCase):
|
|
|
60
66
|
host=self.server.address, port=self.server.port
|
|
61
67
|
)
|
|
62
68
|
|
|
63
|
-
@mock.patch("
|
|
69
|
+
@mock.patch(f"{model}.cups")
|
|
64
70
|
def test_update_printers_gets_all_printers(self, cups):
|
|
65
71
|
"""It should get all printers from CUPS server"""
|
|
66
72
|
self.new_printer()
|
|
67
73
|
self.Model.update_printers()
|
|
68
74
|
cups.Connection().getPrinters.assert_called_once_with()
|
|
69
75
|
|
|
70
|
-
@mock.patch("
|
|
76
|
+
@mock.patch(f"{model}.cups")
|
|
71
77
|
def test_update_printers_search(self, cups):
|
|
72
78
|
"""It should search all when no domain"""
|
|
73
|
-
with mock.patch("
|
|
79
|
+
with mock.patch(f"{model_base}.search") as search:
|
|
74
80
|
self.Model.update_printers()
|
|
75
81
|
search.assert_called_once_with([])
|
|
76
82
|
|
|
77
|
-
@mock.patch("
|
|
83
|
+
@mock.patch(f"{model}.cups")
|
|
78
84
|
def test_update_printers_search_domain(self, cups):
|
|
79
85
|
"""It should use specific domain for search"""
|
|
80
|
-
with mock.patch("
|
|
86
|
+
with mock.patch(f"{model_base}.search") as search:
|
|
81
87
|
expect = [("id", ">", 0)]
|
|
82
88
|
self.Model.update_printers(expect)
|
|
83
89
|
search.assert_called_once_with(expect)
|
|
84
90
|
|
|
85
|
-
@mock.patch("
|
|
91
|
+
@mock.patch(f"{model}.cups")
|
|
86
92
|
def test_update_printers_update_unavailable(self, cups):
|
|
87
93
|
"""It should update status when printer is unavailable"""
|
|
88
94
|
rec_id = self.new_printer()
|
|
@@ -90,7 +96,7 @@ class TestPrintingServer(TransactionCase):
|
|
|
90
96
|
self.Model.action_update_printers()
|
|
91
97
|
self.assertEqual("unavailable", rec_id.status)
|
|
92
98
|
|
|
93
|
-
@mock.patch("
|
|
99
|
+
@mock.patch(f"{model}.cups")
|
|
94
100
|
def test_update_archived_printers(self, cups):
|
|
95
101
|
"""It should update status even if printer is archived"""
|
|
96
102
|
rec_id = self.new_printer()
|
|
@@ -103,7 +109,7 @@ class TestPrintingServer(TransactionCase):
|
|
|
103
109
|
rec_id.status,
|
|
104
110
|
)
|
|
105
111
|
|
|
106
|
-
@mock.patch("
|
|
112
|
+
@mock.patch(f"{model}.cups")
|
|
107
113
|
def test_update_jobs_cron(self, cups):
|
|
108
114
|
"""It should get all jobs from CUPS server"""
|
|
109
115
|
self.new_printer()
|
|
@@ -125,7 +131,7 @@ class TestPrintingServer(TransactionCase):
|
|
|
125
131
|
],
|
|
126
132
|
)
|
|
127
133
|
|
|
128
|
-
@mock.patch("
|
|
134
|
+
@mock.patch(f"{model}.cups")
|
|
129
135
|
def test_update_jobs_button(self, cups):
|
|
130
136
|
"""It should get all jobs from CUPS server"""
|
|
131
137
|
self.new_printer()
|
|
@@ -147,17 +153,22 @@ class TestPrintingServer(TransactionCase):
|
|
|
147
153
|
],
|
|
148
154
|
)
|
|
149
155
|
|
|
150
|
-
|
|
151
|
-
def test_update_jobs_error(self, cups):
|
|
156
|
+
def test_update_jobs_error(self):
|
|
152
157
|
"""It should catch any exception from CUPS and update status"""
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
158
|
+
with (
|
|
159
|
+
mock.patch(f"{model}.cups") as cups,
|
|
160
|
+
self.assertLogs(level=logging.WARNING) as logs,
|
|
161
|
+
):
|
|
162
|
+
cups.Connection.side_effect = Exception
|
|
163
|
+
self.new_printer()
|
|
164
|
+
self.server.update_jobs()
|
|
165
|
+
cups.Connection.assert_called_with(
|
|
166
|
+
host=self.server.address, port=self.server.port
|
|
167
|
+
)
|
|
168
|
+
self.assertEqual(len(logs.records), 2)
|
|
169
|
+
self.assertEqual(logs.records[0].levelno, logging.WARNING)
|
|
170
|
+
|
|
171
|
+
@mock.patch(f"{model}.cups")
|
|
161
172
|
def test_update_jobs_uncompleted(self, cups):
|
|
162
173
|
"""
|
|
163
174
|
It should search which jobs have been completed since last update
|
|
@@ -182,7 +193,7 @@ class TestPrintingServer(TransactionCase):
|
|
|
182
193
|
],
|
|
183
194
|
)
|
|
184
195
|
|
|
185
|
-
@mock.patch("
|
|
196
|
+
@mock.patch(f"{model}.cups")
|
|
186
197
|
def test_update_jobs(self, cups):
|
|
187
198
|
"""
|
|
188
199
|
It should update all jobs, known or not
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
# Copyright 2017 Tecnativa - Jairo Llopis
|
|
3
3
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
|
|
4
4
|
|
|
5
|
+
import logging
|
|
5
6
|
from unittest import mock
|
|
6
7
|
|
|
7
8
|
from odoo import exceptions
|
|
@@ -128,11 +129,14 @@ class TestReport(common.HttpCase):
|
|
|
128
129
|
|
|
129
130
|
def test_render_qweb_pdf_printable(self):
|
|
130
131
|
"""It should print the report, only if it is printable"""
|
|
131
|
-
with
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
132
|
+
with (
|
|
133
|
+
mock.patch(
|
|
134
|
+
"odoo.addons.base_report_to_printer.models."
|
|
135
|
+
"printing_printer.PrintingPrinter."
|
|
136
|
+
"print_document"
|
|
137
|
+
) as print_document,
|
|
138
|
+
self.assertLogs(level=logging.WARNING) as logs,
|
|
139
|
+
):
|
|
136
140
|
self.report.property_printing_action_id.action_type = "server"
|
|
137
141
|
self.report.printing_printer_id = self.new_printer()
|
|
138
142
|
document = self.report._render_qweb_pdf(
|
|
@@ -145,14 +149,19 @@ class TestReport(common.HttpCase):
|
|
|
145
149
|
doc_format="qweb-pdf",
|
|
146
150
|
tray=False,
|
|
147
151
|
)
|
|
152
|
+
self.assertEqual(len(logs.records), 1)
|
|
153
|
+
self.assertEqual(logs.records[0].levelno, logging.WARNING)
|
|
148
154
|
|
|
149
155
|
def test_render_qweb_text_printable(self):
|
|
150
156
|
"""It should print the report, only if it is printable"""
|
|
151
|
-
with
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
157
|
+
with (
|
|
158
|
+
mock.patch(
|
|
159
|
+
"odoo.addons.base_report_to_printer.models."
|
|
160
|
+
"printing_printer.PrintingPrinter."
|
|
161
|
+
"print_document"
|
|
162
|
+
) as print_document,
|
|
163
|
+
self.assertLogs(level=logging.WARNING) as logs,
|
|
164
|
+
):
|
|
156
165
|
self.report_text.property_printing_action_id.action_type = "server"
|
|
157
166
|
self.report_text.printing_printer_id = self.new_printer()
|
|
158
167
|
document = self.report_text._render_qweb_text(
|
|
@@ -165,29 +174,41 @@ class TestReport(common.HttpCase):
|
|
|
165
174
|
doc_format="qweb-text",
|
|
166
175
|
tray=False,
|
|
167
176
|
)
|
|
177
|
+
self.assertEqual(len(logs.records), 1)
|
|
178
|
+
self.assertEqual(logs.records[0].levelno, logging.WARNING)
|
|
168
179
|
|
|
169
180
|
def test_print_document_not_printable(self):
|
|
170
181
|
"""It should print the report, regardless of the defined behaviour"""
|
|
171
182
|
self.report.printing_printer_id = self.new_printer()
|
|
172
|
-
with
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
183
|
+
with (
|
|
184
|
+
mock.patch(
|
|
185
|
+
"odoo.addons.base_report_to_printer.models."
|
|
186
|
+
"printing_printer.PrintingPrinter."
|
|
187
|
+
"print_document"
|
|
188
|
+
) as print_document,
|
|
189
|
+
self.assertLogs(level=logging.WARNING) as logs,
|
|
190
|
+
):
|
|
177
191
|
self.report.print_document(self.partners.ids)
|
|
178
192
|
print_document.assert_called_once()
|
|
193
|
+
self.assertEqual(len(logs.records), 2)
|
|
194
|
+
self.assertEqual(logs.records[0].levelno, logging.WARNING)
|
|
179
195
|
|
|
180
196
|
def test_print_document_printable(self):
|
|
181
197
|
"""It should print the report, regardless of the defined behaviour"""
|
|
182
198
|
self.report.property_printing_action_id.action_type = "server"
|
|
183
199
|
self.report.printing_printer_id = self.new_printer()
|
|
184
|
-
with
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
200
|
+
with (
|
|
201
|
+
mock.patch(
|
|
202
|
+
"odoo.addons.base_report_to_printer.models."
|
|
203
|
+
"printing_printer.PrintingPrinter."
|
|
204
|
+
"print_document"
|
|
205
|
+
) as print_document,
|
|
206
|
+
self.assertLogs(level=logging.WARNING) as logs,
|
|
207
|
+
):
|
|
189
208
|
self.report.print_document(self.partners.ids)
|
|
190
209
|
print_document.assert_called_once()
|
|
210
|
+
self.assertEqual(len(logs.records), 2)
|
|
211
|
+
self.assertEqual(logs.records[0].levelno, logging.WARNING)
|
|
191
212
|
|
|
192
213
|
def test_print_document_no_printer(self):
|
|
193
214
|
"""It should raise an error"""
|
|
@@ -36,11 +36,11 @@
|
|
|
36
36
|
<field name="name">printing.job.tree (in base_report_to_printer)</field>
|
|
37
37
|
<field name="model">printing.job</field>
|
|
38
38
|
<field name="arch" type="xml">
|
|
39
|
-
<
|
|
39
|
+
<list>
|
|
40
40
|
<field name="name" />
|
|
41
41
|
<field name="job_id_cups" />
|
|
42
42
|
<field name="job_state" />
|
|
43
|
-
</
|
|
43
|
+
</list>
|
|
44
44
|
</field>
|
|
45
45
|
</record>
|
|
46
46
|
</odoo>
|
|
@@ -101,7 +101,7 @@
|
|
|
101
101
|
<field name="name">printing.printer.tree (in base_report_to_printer)</field>
|
|
102
102
|
<field name="model">printing.printer</field>
|
|
103
103
|
<field name="arch" type="xml">
|
|
104
|
-
<
|
|
104
|
+
<list
|
|
105
105
|
decoration-success="status=='available'"
|
|
106
106
|
decoration-warning="status=='printing'"
|
|
107
107
|
decoration-danger="status not in ['printing', 'available']"
|
|
@@ -111,7 +111,7 @@
|
|
|
111
111
|
<field name="system_name" />
|
|
112
112
|
<field name="server_id" />
|
|
113
113
|
<field name="status" />
|
|
114
|
-
</
|
|
114
|
+
</list>
|
|
115
115
|
</field>
|
|
116
116
|
</record>
|
|
117
117
|
<record model="ir.ui.view" id="printing_printer_view_search">
|
|
@@ -135,7 +135,7 @@
|
|
|
135
135
|
<field name="name">Show Printers</field>
|
|
136
136
|
<field name="type">ir.actions.act_window</field>
|
|
137
137
|
<field name="res_model">printing.printer</field>
|
|
138
|
-
<field name="view_mode">
|
|
138
|
+
<field name="view_mode">list,form</field>
|
|
139
139
|
</record>
|
|
140
140
|
<menuitem
|
|
141
141
|
name="Printers"
|
|
@@ -21,12 +21,12 @@
|
|
|
21
21
|
>printing.report.xml.action.tree (in base_report_to_printer)</field>
|
|
22
22
|
<field name="model">printing.report.xml.action</field>
|
|
23
23
|
<field name="arch" type="xml">
|
|
24
|
-
<
|
|
24
|
+
<list>
|
|
25
25
|
<field name="user_id" />
|
|
26
26
|
<field name="action" />
|
|
27
27
|
<field name="printer_id" />
|
|
28
28
|
<field name="printer_tray_id" />
|
|
29
|
-
</
|
|
29
|
+
</list>
|
|
30
30
|
</field>
|
|
31
31
|
</record>
|
|
32
32
|
<!-- Add a shorcut to "Actions/Report" in the Printing menu -->
|
|
@@ -45,11 +45,11 @@
|
|
|
45
45
|
<field name="name">printing.server.tree (in base_report_to_printer)</field>
|
|
46
46
|
<field name="model">printing.server</field>
|
|
47
47
|
<field name="arch" type="xml">
|
|
48
|
-
<
|
|
48
|
+
<list>
|
|
49
49
|
<field name="name" />
|
|
50
50
|
<field name="address" />
|
|
51
51
|
<field name="port" />
|
|
52
|
-
</
|
|
52
|
+
</list>
|
|
53
53
|
</field>
|
|
54
54
|
</record>
|
|
55
55
|
<record model="ir.ui.view" id="printing_server_view_search">
|
|
@@ -67,7 +67,7 @@
|
|
|
67
67
|
<field name="name">Servers</field>
|
|
68
68
|
<field name="type">ir.actions.act_window</field>
|
|
69
69
|
<field name="res_model">printing.server</field>
|
|
70
|
-
<field name="view_mode">
|
|
70
|
+
<field name="view_mode">list,form</field>
|
|
71
71
|
</record>
|
|
72
72
|
<menuitem
|
|
73
73
|
name="Servers"
|
|
@@ -8,11 +8,11 @@
|
|
|
8
8
|
<group>
|
|
9
9
|
<field name="printer_id" />
|
|
10
10
|
<field name="attachment_line_ids">
|
|
11
|
-
<
|
|
11
|
+
<list editable="top">
|
|
12
12
|
<field name="attachment_id" create="0" />
|
|
13
13
|
<field name="record_name" />
|
|
14
14
|
<field name="copies" />
|
|
15
|
-
</
|
|
15
|
+
</list>
|
|
16
16
|
</field>
|
|
17
17
|
</group>
|
|
18
18
|
<footer>
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: odoo-addon-base_report_to_printer
|
|
3
|
-
Version:
|
|
3
|
+
Version: 18.0.1.0.0.4
|
|
4
4
|
Requires-Python: >=3.10
|
|
5
|
-
Requires-Dist: odoo
|
|
5
|
+
Requires-Dist: odoo==18.0.*
|
|
6
6
|
Requires-Dist: pycups
|
|
7
7
|
Summary: Report to printer
|
|
8
8
|
Home-page: https://github.com/OCA/report-print-send
|
|
@@ -11,7 +11,7 @@ Author: Agile Business Group & Domsense, Pegueroles SCP, NaN, LasLabs, Camptocam
|
|
|
11
11
|
Author-email: support@odoo-community.org
|
|
12
12
|
Classifier: Programming Language :: Python
|
|
13
13
|
Classifier: Framework :: Odoo
|
|
14
|
-
Classifier: Framework :: Odoo ::
|
|
14
|
+
Classifier: Framework :: Odoo :: 18.0
|
|
15
15
|
Classifier: License :: OSI Approved :: GNU Affero General Public License v3
|
|
16
16
|
|
|
17
17
|
=================
|
|
@@ -23,7 +23,7 @@ Report to printer
|
|
|
23
23
|
!! This file is generated by oca-gen-addon-readme !!
|
|
24
24
|
!! changes will be overwritten. !!
|
|
25
25
|
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
26
|
-
!! source digest: sha256:
|
|
26
|
+
!! source digest: sha256:7761acf7bc8cae2f3c56913a0da0ebc3d646ee29311fb4682bde14452b3a69d8
|
|
27
27
|
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
28
28
|
|
|
29
29
|
.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
|
|
@@ -33,13 +33,13 @@ Report to printer
|
|
|
33
33
|
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
|
|
34
34
|
:alt: License: AGPL-3
|
|
35
35
|
.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Freport--print--send-lightgray.png?logo=github
|
|
36
|
-
:target: https://github.com/OCA/report-print-send/tree/
|
|
36
|
+
:target: https://github.com/OCA/report-print-send/tree/18.0/base_report_to_printer
|
|
37
37
|
:alt: OCA/report-print-send
|
|
38
38
|
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
|
|
39
|
-
:target: https://translation.odoo-community.org/projects/report-print-send-
|
|
39
|
+
:target: https://translation.odoo-community.org/projects/report-print-send-18-0/report-print-send-18-0-base_report_to_printer
|
|
40
40
|
:alt: Translate me on Weblate
|
|
41
41
|
.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png
|
|
42
|
-
:target: https://runboat.odoo-community.org/builds?repo=OCA/report-print-send&target_branch=
|
|
42
|
+
:target: https://runboat.odoo-community.org/builds?repo=OCA/report-print-send&target_branch=18.0
|
|
43
43
|
:alt: Try me on Runboat
|
|
44
44
|
|
|
45
45
|
|badge1| |badge2| |badge3| |badge4| |badge5|
|
|
@@ -50,9 +50,9 @@ server.
|
|
|
50
50
|
It adds an optional behaviour on reports to send it directly to a
|
|
51
51
|
printer.
|
|
52
52
|
|
|
53
|
-
-
|
|
54
|
-
|
|
55
|
-
-
|
|
53
|
+
- Send to Client is the default behaviour providing you a downloadable
|
|
54
|
+
PDF
|
|
55
|
+
- Send to Printer prints the report on selected printer
|
|
56
56
|
|
|
57
57
|
It detects trays on printers installation plus permits to select the
|
|
58
58
|
paper source on which you want to print directly.
|
|
@@ -67,10 +67,10 @@ preprinted paper such as payment slip.
|
|
|
67
67
|
|
|
68
68
|
Settings can be configured:
|
|
69
69
|
|
|
70
|
-
-
|
|
71
|
-
-
|
|
72
|
-
-
|
|
73
|
-
-
|
|
70
|
+
- globally
|
|
71
|
+
- per user
|
|
72
|
+
- per report
|
|
73
|
+
- per user and report
|
|
74
74
|
|
|
75
75
|
**Table of contents**
|
|
76
76
|
|
|
@@ -114,16 +114,16 @@ Usage
|
|
|
114
114
|
|
|
115
115
|
Guidelines for use:
|
|
116
116
|
|
|
117
|
-
-
|
|
118
|
-
|
|
119
|
-
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
-
|
|
126
|
-
|
|
117
|
+
- To update the CUPS printers in *Settings > Printing > Update
|
|
118
|
+
Printers from CUPS*
|
|
119
|
+
- To print a report on a specific printer or tray, you can change
|
|
120
|
+
these in *Settings > Printing > Reports* to define default
|
|
121
|
+
behaviour.
|
|
122
|
+
- To print a report on a specific printer and/or tray for a user, you
|
|
123
|
+
can change these in *Settings > Printing > Reports* in *Specific
|
|
124
|
+
actions per user*
|
|
125
|
+
- Users may also select a default action, printer or tray in their
|
|
126
|
+
preferences.
|
|
127
127
|
|
|
128
128
|
When no tray is configured for a report and a user, the default tray
|
|
129
129
|
setup on the CUPS server is used.
|
|
@@ -131,9 +131,9 @@ setup on the CUPS server is used.
|
|
|
131
131
|
Known issues / Roadmap
|
|
132
132
|
======================
|
|
133
133
|
|
|
134
|
-
-
|
|
135
|
-
|
|
136
|
-
|
|
134
|
+
- With threaded printing there's no download fallback when the issue
|
|
135
|
+
isn't detected by the CUPS Odoo backend. To able to do it, we would
|
|
136
|
+
need to notify the bus or use web_notify for it.
|
|
137
137
|
|
|
138
138
|
Changelog
|
|
139
139
|
=========
|
|
@@ -141,12 +141,12 @@ Changelog
|
|
|
141
141
|
13.0.1.0.0 (2019-09-30)
|
|
142
142
|
-----------------------
|
|
143
143
|
|
|
144
|
-
-
|
|
144
|
+
- [RELEASE] Port from V12.
|
|
145
145
|
|
|
146
146
|
12.0.1.0.0 (2018-02-04)
|
|
147
147
|
-----------------------
|
|
148
148
|
|
|
149
|
-
-
|
|
149
|
+
- [RELEASE] Port from V11.
|
|
150
150
|
|
|
151
151
|
Bug Tracker
|
|
152
152
|
===========
|
|
@@ -154,7 +154,7 @@ Bug Tracker
|
|
|
154
154
|
Bugs are tracked on `GitHub Issues <https://github.com/OCA/report-print-send/issues>`_.
|
|
155
155
|
In case of trouble, please check there if your issue has already been reported.
|
|
156
156
|
If you spotted it first, help us to smash it by providing a detailed and welcomed
|
|
157
|
-
`feedback <https://github.com/OCA/report-print-send/issues/new?body=module:%20base_report_to_printer%0Aversion:%
|
|
157
|
+
`feedback <https://github.com/OCA/report-print-send/issues/new?body=module:%20base_report_to_printer%0Aversion:%2018.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.
|
|
158
158
|
|
|
159
159
|
Do not contact contributors directly about support or help with technical issues.
|
|
160
160
|
|
|
@@ -174,23 +174,30 @@ Authors
|
|
|
174
174
|
Contributors
|
|
175
175
|
------------
|
|
176
176
|
|
|
177
|
-
-
|
|
178
|
-
-
|
|
179
|
-
-
|
|
180
|
-
-
|
|
181
|
-
-
|
|
182
|
-
-
|
|
183
|
-
-
|
|
184
|
-
-
|
|
185
|
-
-
|
|
186
|
-
-
|
|
187
|
-
-
|
|
188
|
-
-
|
|
189
|
-
-
|
|
190
|
-
-
|
|
191
|
-
-
|
|
192
|
-
-
|
|
193
|
-
-
|
|
177
|
+
- Ferran Pegueroles <ferran@pegueroles.com>
|
|
178
|
+
- Albert Cervera i Areny <albert@nan-tic.com>
|
|
179
|
+
- Davide Corio <davide.corio@agilebg.com>
|
|
180
|
+
- Lorenzo Battistini <lorenzo.battistini@agilebg.com>
|
|
181
|
+
- Yannick Vaucher <yannick.vaucher@camptocamp.com>
|
|
182
|
+
- Lionel Sausin <ls@numerigraphe.com>
|
|
183
|
+
- Guewen Baconnier <guewen.baconnier@camptocamp.com>
|
|
184
|
+
- Dave Lasley <dave@laslabs.com>
|
|
185
|
+
- Sylvain Garancher <sylvain.garancher@syleam.fr>
|
|
186
|
+
- Jairo Llopis <jairo.llopis@tecnativa.com>
|
|
187
|
+
- Graeme Gellatly <graeme@o4sb.com>
|
|
188
|
+
- Rod Schouteden <rod@schout-it.be>
|
|
189
|
+
- Alexandre Fayolle <alexandre.fayolle@camptocamp.com>
|
|
190
|
+
- Matias Peralta <mnp@adhoc.com.ar>
|
|
191
|
+
- Hughes Damry <hughes.damry@acsone.eu>
|
|
192
|
+
- Akim Juillerat <akim.juillerat@camptocamp.com>
|
|
193
|
+
- Jacques-Etienne Baudoux (BCIM) <je@bcim.be>
|
|
194
|
+
- Tris Doan <tridm@trobz.com>
|
|
195
|
+
|
|
196
|
+
Other credits
|
|
197
|
+
-------------
|
|
198
|
+
|
|
199
|
+
The migration of this module from 17.0 to 18.0 was financially supported
|
|
200
|
+
by Camptocamp.
|
|
194
201
|
|
|
195
202
|
Maintainers
|
|
196
203
|
-----------
|
|
@@ -205,6 +212,6 @@ OCA, or the Odoo Community Association, is a nonprofit organization whose
|
|
|
205
212
|
mission is to support the collaborative development of Odoo features and
|
|
206
213
|
promote its widespread use.
|
|
207
214
|
|
|
208
|
-
This module is part of the `OCA/report-print-send <https://github.com/OCA/report-print-send/tree/
|
|
215
|
+
This module is part of the `OCA/report-print-send <https://github.com/OCA/report-print-send/tree/18.0/base_report_to_printer>`_ project on GitHub.
|
|
209
216
|
|
|
210
217
|
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
odoo/addons/base_report_to_printer/README.rst,sha256=HQPiyhXvdAFqv2LLgfym5Rp0nxcS1R4fCFP92tGgsks,6613
|
|
2
|
+
odoo/addons/base_report_to_printer/__init__.py,sha256=Ldk9I_2g8cYtB7aM2jrf7Si9uWQbxTyaUwq31rv-X1E,439
|
|
3
|
+
odoo/addons/base_report_to_printer/__manifest__.py,sha256=YscDYxI7VwW0oj8sbZgGORUSkAvOoPtyhJJGZ1oDvoU,1478
|
|
4
|
+
odoo/addons/base_report_to_printer/data/neutralize.sql,sha256=ED9Je55ll3LB7G6W2Wjm9daqurleECxpmLe68DjCoWc,83
|
|
5
|
+
odoo/addons/base_report_to_printer/data/printing_data.xml,sha256=UULb0SZ21TRW0r7xOXxUK94XxSqMD5c6OGaUTKCFb1Y,1157
|
|
6
|
+
odoo/addons/base_report_to_printer/i18n/am.po,sha256=mr70sWctOe-KoOdyEu2KwZqLGsYhNo06H_wqAeIRK5o,37362
|
|
7
|
+
odoo/addons/base_report_to_printer/i18n/base_report_to_printer.pot,sha256=c5brfI-uoAW0E77ASlOCL-_a7Gl8Ebjt7WwvpseBqMU,36992
|
|
8
|
+
odoo/addons/base_report_to_printer/i18n/bg.po,sha256=9ddUs1RR0gmRXvjj0RwQdJw52w5aDfY1P2k30lJp9rY,37503
|
|
9
|
+
odoo/addons/base_report_to_printer/i18n/ca.po,sha256=7TGdoBZfQbYOnVKl4EP0I1ffmQuNNS3wlKP6QHuyT3U,37361
|
|
10
|
+
odoo/addons/base_report_to_printer/i18n/de.po,sha256=aFry3dutvY6WzDCiqClj-pufkD1T5wX7LL6eZllNloo,41396
|
|
11
|
+
odoo/addons/base_report_to_printer/i18n/el_GR.po,sha256=BqbKJFRW40eEGQw6zmthERANjKhXiOBAIiMxqCo0ic8,37480
|
|
12
|
+
odoo/addons/base_report_to_printer/i18n/es.po,sha256=9THT8SrKnvBbwfxcBlGism5g2mB8YyQvDhXyrwVBVFM,43106
|
|
13
|
+
odoo/addons/base_report_to_printer/i18n/es_AR.po,sha256=MlK920LH6cfAe-dBGLMV00W_ruY3fM3-LL72s0Yj1gk,41562
|
|
14
|
+
odoo/addons/base_report_to_printer/i18n/es_ES.po,sha256=P6xPYYaJZXTdSN72vBiflFhyqNYNN9Zdd8QpHjXMz-Q,37380
|
|
15
|
+
odoo/addons/base_report_to_printer/i18n/fi.po,sha256=bLksMAihL_Yki0QaAn261sFRcA2G50VGVOlf6smsngo,37409
|
|
16
|
+
odoo/addons/base_report_to_printer/i18n/fr.po,sha256=kRvFQJbIj0ZmJ96m9uKP3QJcpfipKFZzhP39osNu8As,42857
|
|
17
|
+
odoo/addons/base_report_to_printer/i18n/gl.po,sha256=k6x3Prs-XjxZ4H3gtWOnQOtfMQpN4EhVyU0NSXp1UmI,37364
|
|
18
|
+
odoo/addons/base_report_to_printer/i18n/hr.po,sha256=AHO752jqiq6sI0QeL-gcZj4SpDvo5xlA9Ta0mXutMKo,40136
|
|
19
|
+
odoo/addons/base_report_to_printer/i18n/hr_HR.po,sha256=IaY7uiZAGSutILrHdXOFBbDsy3QMtLhLWqRWPBr7x7M,37502
|
|
20
|
+
odoo/addons/base_report_to_printer/i18n/it.po,sha256=AtnUrVoqoQNR0ARFI49DHdvolIbRNvhT_6xXUWrH2P8,42209
|
|
21
|
+
odoo/addons/base_report_to_printer/i18n/nl.po,sha256=z0_TVKgkjeY0u5bUWHTTo4MGaA59TWAMtTnhsu1ug84,37368
|
|
22
|
+
odoo/addons/base_report_to_printer/i18n/nl_NL.po,sha256=v6mYXWe7nLbiIX1w-hgnjQ8GrHHjkQI-OrwpJkrw9DI,38039
|
|
23
|
+
odoo/addons/base_report_to_printer/i18n/pt.po,sha256=hJXtSwrBtocqZBb019IgzbKCkZF-KB0Vm9S-mAVEVvo,37376
|
|
24
|
+
odoo/addons/base_report_to_printer/i18n/pt_BR.po,sha256=TxaWhFrcw41EI4H3hxWSi4VD2roLASJeu4MLLLfhjZY,37477
|
|
25
|
+
odoo/addons/base_report_to_printer/i18n/pt_PT.po,sha256=TDNysQoq-1oxiVn1EkZW5895EFRD2CUD2GbNATRJBUE,37396
|
|
26
|
+
odoo/addons/base_report_to_printer/i18n/sl.po,sha256=SI4p0w8JsAU-uyYfu-SXxKqZNdsX6oudpLJo5XQeTVs,37536
|
|
27
|
+
odoo/addons/base_report_to_printer/i18n/sv.po,sha256=Kjdiq7PY70kU2pIi8z7ZkReuQMtjOLx5SIVFrM1Zhv8,42015
|
|
28
|
+
odoo/addons/base_report_to_printer/i18n/tr.po,sha256=FBZU6J0mqU2UTZkFOtJXWMv3tyl8M93pDdOorK2jAcs,37345
|
|
29
|
+
odoo/addons/base_report_to_printer/i18n/zh_CN.po,sha256=medO9VtsFUnjZk7o1eJlzqZkouUFK2F8Em65VSmX1M4,40735
|
|
30
|
+
odoo/addons/base_report_to_printer/models/__init__.py,sha256=y92zKlKN-X-KT04jwLi8XgUsY8HAbDiRvdPKDWCpvGo,243
|
|
31
|
+
odoo/addons/base_report_to_printer/models/ir_actions_report.py,sha256=XsDdHfCQ5ASUHsHwo_tkYRkx3hqH5CniEa29q-42HTc,9481
|
|
32
|
+
odoo/addons/base_report_to_printer/models/printing_action.py,sha256=Y8ZUpeZFYb4tGM8Wwqd0ZQVDBHD-sNXywepm_TFcqBs,906
|
|
33
|
+
odoo/addons/base_report_to_printer/models/printing_job.py,sha256=DBQSIqYhGVeqa2DgC_PWtoRAXbyLLvBKnNHn5G9XLWE,5029
|
|
34
|
+
odoo/addons/base_report_to_printer/models/printing_printer.py,sha256=ULj3XrOh6TqzkpcoGbQvAs0BL1H2fQe0BS1nslnvzS4,8940
|
|
35
|
+
odoo/addons/base_report_to_printer/models/printing_report_xml_action.py,sha256=psGmwsumPPOlao3j2OmpgujGL51qUnUfpheX2YASnO8,1629
|
|
36
|
+
odoo/addons/base_report_to_printer/models/printing_server.py,sha256=1EXGvgnDwKQjDqgnttTsltmpy40kqiFzF77EYfR8kwg,10574
|
|
37
|
+
odoo/addons/base_report_to_printer/models/printing_tray.py,sha256=tmSwhwdwiJIIRefDOQnLUG1k0tqAj96Pvh6T3zeYgzM,566
|
|
38
|
+
odoo/addons/base_report_to_printer/models/res_users.py,sha256=xN9faiF3NYRZ-ih2bjphnGhycapInUGD0_7pQauCaig,1873
|
|
39
|
+
odoo/addons/base_report_to_printer/readme/CONFIGURE.md,sha256=dCI7EMlKK2OPYuN7VCqkX-G9iddKWBLmK3dumfeKp1Q,657
|
|
40
|
+
odoo/addons/base_report_to_printer/readme/CONTRIBUTORS.md,sha256=Wu_ffGRpyIAyWH6Wgy96dgsKYSSWU64N68hYUPiJiME,855
|
|
41
|
+
odoo/addons/base_report_to_printer/readme/CREDITS.md,sha256=iBbhXVnE2APvLFeXl0Bdd-uXfNXH21qo0HnEDi8tVNI,88
|
|
42
|
+
odoo/addons/base_report_to_printer/readme/DESCRIPTION.md,sha256=iyIjrNhUHuelUc0p3D_Ye_h-__8-S7wQRHdz1Fi4UhA,765
|
|
43
|
+
odoo/addons/base_report_to_printer/readme/HISTORY.md,sha256=60aUga9zXMM4ku3CVKUqjDZmlMmCQdlGgCeUq86FYGY,115
|
|
44
|
+
odoo/addons/base_report_to_printer/readme/INSTALL.md,sha256=_AzvskY0An_rpz0vjWp4KnhACStV2yaSKhJgoFxCiCA,228
|
|
45
|
+
odoo/addons/base_report_to_printer/readme/ROADMAP.md,sha256=fcdQsLCglw89JfrVV4U5vWQgn9XB7196ZAyJSGNQuPw,190
|
|
46
|
+
odoo/addons/base_report_to_printer/readme/USAGE.md,sha256=wHHBzN6pbyQdWYdGtAis2Byp4_B9fM1ceEeU2jejsxQ,615
|
|
47
|
+
odoo/addons/base_report_to_printer/security/ir.model.access.csv,sha256=tIjk4kiES-JnJ_vgM7QrBSkuldIfvqUH5mZAKYPnY08,194
|
|
48
|
+
odoo/addons/base_report_to_printer/security/security.xml,sha256=wnrjXp2w6bgVUt0c4kPfc8XOP3hPOox8jA2FdL0wdxw,7481
|
|
49
|
+
odoo/addons/base_report_to_printer/static/description/icon.png,sha256=6xBPJauaFOF0KDHfHgQopSc28kKvxMaeoQFQWZtfZDo,9455
|
|
50
|
+
odoo/addons/base_report_to_printer/static/description/index.html,sha256=ZBT9sM5VuHpveuCGZ5IcJ4AUPcuL_i9GNswcpjZXp0U,19907
|
|
51
|
+
odoo/addons/base_report_to_printer/static/src/js/qweb_action_manager.esm.js,sha256=5eI_gSbS-JYC5auWGNhbG2z59v5wRmUzG72wHty5nBk,3599
|
|
52
|
+
odoo/addons/base_report_to_printer/tests/__init__.py,sha256=tpUyFuG96289zrpY1fTMi-moLC2KFq_93_NjuDCw1Rg,458
|
|
53
|
+
odoo/addons/base_report_to_printer/tests/test_ir_actions_report.py,sha256=tNE9IKR1_u16U-OvNlBLBqPRX9kY_A9jJM6x-p3KtcM,13586
|
|
54
|
+
odoo/addons/base_report_to_printer/tests/test_printing_job.py,sha256=QsvtP3eKlRxVq12FUbaR2HKuqLhrM3-Y4GyxHdCHIU4,2362
|
|
55
|
+
odoo/addons/base_report_to_printer/tests/test_printing_printer.py,sha256=n5HCdlYK6Hnl44WTqTpgSNCWxHmcj28ib3cZEhfMeRU,7826
|
|
56
|
+
odoo/addons/base_report_to_printer/tests/test_printing_printer_tray.py,sha256=63Y0NpK8O0W23xAAEvfMLi5uN-AqQ20YxwglUvqckgA,8961
|
|
57
|
+
odoo/addons/base_report_to_printer/tests/test_printing_printer_wizard.py,sha256=-UrEXSzq-RG-Tm7aBV34gPiTOgfieZNuGAtKvHLLe7E,3616
|
|
58
|
+
odoo/addons/base_report_to_printer/tests/test_printing_report_xml_action.py,sha256=pfZ6Ak6bwvrW6jrBeC0GokJpRzxUOVpcbWWxQ8yoq8c,3158
|
|
59
|
+
odoo/addons/base_report_to_printer/tests/test_printing_server.py,sha256=2VXKWQsBtiGQQKfcM62ZBpNMoBxVIoAqqlrPZtRnqYg,8019
|
|
60
|
+
odoo/addons/base_report_to_printer/tests/test_printing_tray.py,sha256=4TMb5mmkh4I6os2OBwMjN2uCEL_KRhIF9E_3PTkuRqM,1765
|
|
61
|
+
odoo/addons/base_report_to_printer/tests/test_report.py,sha256=vTAXZNG4Agjz3tZfNnSAGeSR9gw8EN3EXl2Wf0L-1k4,8447
|
|
62
|
+
odoo/addons/base_report_to_printer/tests/test_res_users.py,sha256=7SDSYcx61fxLx42C-8htFDW3CzSx7P1OH-zYWOKDTWw,1965
|
|
63
|
+
odoo/addons/base_report_to_printer/views/ir_actions_report.xml,sha256=CP_pykwKIJRjy39X1sp9CPOMaMpnt0PK8OR9-2DascU,890
|
|
64
|
+
odoo/addons/base_report_to_printer/views/printing_job.xml,sha256=K-uL4-ZNErnQGE4L44qWkbspDAMjQ5KSDq8OfgNFDwc,1816
|
|
65
|
+
odoo/addons/base_report_to_printer/views/printing_printer.xml,sha256=1JrqmzMpOJ9Pwk4MBelpbdd1eADwD-HHtABPcacGdgE,5872
|
|
66
|
+
odoo/addons/base_report_to_printer/views/printing_report.xml,sha256=XEUS-mE9E-yDHGWHz-Hus3EGSJ17YOtiifFcM7WU_gg,1408
|
|
67
|
+
odoo/addons/base_report_to_printer/views/printing_server.xml,sha256=Qmv6ME2quAkoEmuBjx9DFR8OEzr9GEy78vJkBXr4wSc,2970
|
|
68
|
+
odoo/addons/base_report_to_printer/views/res_users.xml,sha256=IIi8W930iAEp1jknTsZ5MxBP2qiRJE4DNMI6yME9G-c,1392
|
|
69
|
+
odoo/addons/base_report_to_printer/wizards/__init__.py,sha256=MvgzXHSqDX2nGpbYkjyXSuv1iHe2ECwuPaAJdz5zitc,83
|
|
70
|
+
odoo/addons/base_report_to_printer/wizards/print_attachment_report.py,sha256=VS7FZ4Gz6ZjsUrsNXHqx2YBmagGWq-FnJJ5Wl64uaFY,2478
|
|
71
|
+
odoo/addons/base_report_to_printer/wizards/print_attachment_report.xml,sha256=liPNHCG-Cm6r8asC8iVZkGAl-MPK_KLwZkyR0NbUKCo,2187
|
|
72
|
+
odoo/addons/base_report_to_printer/wizards/printing_printer_update_wizard.py,sha256=a1ZGzHWINb3OlVOaDqZ8w9UEI3CxqCPunEHTGZiiCJk,895
|
|
73
|
+
odoo/addons/base_report_to_printer/wizards/printing_printer_update_wizard_view.xml,sha256=UbN9xjc12hI57ojjs84hPgQOfqPbuD_XThPyvyMxp-Y,1399
|
|
74
|
+
odoo_addon_base_report_to_printer-18.0.1.0.0.4.dist-info/METADATA,sha256=nzpoj5CRcOXxjT_wtR0h3KWEhzFKHWqQGqg1-N9oz6M,7240
|
|
75
|
+
odoo_addon_base_report_to_printer-18.0.1.0.0.4.dist-info/WHEEL,sha256=9fEMia4zL7ZuZbnCOrcYogUhmn4XFIVaJ8G4YGI31xc,81
|
|
76
|
+
odoo_addon_base_report_to_printer-18.0.1.0.0.4.dist-info/top_level.txt,sha256=QE6RBQ0QX5f4eFuUcGgU5Kbq1A_qJcDs-e_vpr6pmfU,4
|
|
77
|
+
odoo_addon_base_report_to_printer-18.0.1.0.0.4.dist-info/RECORD,,
|