odoo-addon-base-report-to-printer 18.0.1.1.6__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.
- odoo/addons/base_report_to_printer/README.rst +205 -0
- odoo/addons/base_report_to_printer/__init__.py +9 -0
- odoo/addons/base_report_to_printer/__manifest__.py +39 -0
- odoo/addons/base_report_to_printer/data/neutralize.sql +2 -0
- odoo/addons/base_report_to_printer/data/printing_data.xml +27 -0
- odoo/addons/base_report_to_printer/i18n/am.po +936 -0
- odoo/addons/base_report_to_printer/i18n/base_report_to_printer.pot +932 -0
- odoo/addons/base_report_to_printer/i18n/bg.po +939 -0
- odoo/addons/base_report_to_printer/i18n/ca.po +936 -0
- odoo/addons/base_report_to_printer/i18n/de.po +994 -0
- odoo/addons/base_report_to_printer/i18n/el_GR.po +937 -0
- odoo/addons/base_report_to_printer/i18n/es.po +1004 -0
- odoo/addons/base_report_to_printer/i18n/es_AR.po +987 -0
- odoo/addons/base_report_to_printer/i18n/es_ES.po +937 -0
- odoo/addons/base_report_to_printer/i18n/fi.po +939 -0
- odoo/addons/base_report_to_printer/i18n/fr.po +999 -0
- odoo/addons/base_report_to_printer/i18n/gl.po +936 -0
- odoo/addons/base_report_to_printer/i18n/hr.po +966 -0
- odoo/addons/base_report_to_printer/i18n/hr_HR.po +941 -0
- odoo/addons/base_report_to_printer/i18n/it.po +985 -0
- odoo/addons/base_report_to_printer/i18n/nl.po +939 -0
- odoo/addons/base_report_to_printer/i18n/nl_NL.po +950 -0
- odoo/addons/base_report_to_printer/i18n/pt.po +936 -0
- odoo/addons/base_report_to_printer/i18n/pt_BR.po +940 -0
- odoo/addons/base_report_to_printer/i18n/pt_PT.po +937 -0
- odoo/addons/base_report_to_printer/i18n/sl.po +943 -0
- odoo/addons/base_report_to_printer/i18n/sv.po +983 -0
- odoo/addons/base_report_to_printer/i18n/tr.po +936 -0
- odoo/addons/base_report_to_printer/i18n/zh_CN.po +958 -0
- odoo/addons/base_report_to_printer/models/__init__.py +8 -0
- odoo/addons/base_report_to_printer/models/ir_actions_report.py +253 -0
- odoo/addons/base_report_to_printer/models/printing_action.py +26 -0
- odoo/addons/base_report_to_printer/models/printing_job.py +131 -0
- odoo/addons/base_report_to_printer/models/printing_printer.py +268 -0
- odoo/addons/base_report_to_printer/models/printing_report_xml_action.py +48 -0
- odoo/addons/base_report_to_printer/models/printing_server.py +275 -0
- odoo/addons/base_report_to_printer/models/printing_tray.py +21 -0
- odoo/addons/base_report_to_printer/models/res_users.py +55 -0
- odoo/addons/base_report_to_printer/readme/CONFIGURE.md +13 -0
- odoo/addons/base_report_to_printer/readme/CONTRIBUTORS.md +18 -0
- odoo/addons/base_report_to_printer/readme/CREDITS.md +1 -0
- odoo/addons/base_report_to_printer/readme/DESCRIPTION.md +27 -0
- odoo/addons/base_report_to_printer/readme/HISTORY.md +7 -0
- odoo/addons/base_report_to_printer/readme/INSTALL.md +10 -0
- odoo/addons/base_report_to_printer/readme/ROADMAP.md +3 -0
- odoo/addons/base_report_to_printer/readme/USAGE.md +15 -0
- odoo/addons/base_report_to_printer/security/ir.model.access.csv +2 -0
- odoo/addons/base_report_to_printer/security/security.xml +151 -0
- odoo/addons/base_report_to_printer/static/description/icon.png +0 -0
- odoo/addons/base_report_to_printer/static/description/index.html +561 -0
- odoo/addons/base_report_to_printer/static/src/js/qweb_action_manager.esm.js +92 -0
- odoo/addons/base_report_to_printer/tests/__init__.py +13 -0
- odoo/addons/base_report_to_printer/tests/test_ir_actions_report.py +350 -0
- odoo/addons/base_report_to_printer/tests/test_printing_job.py +70 -0
- odoo/addons/base_report_to_printer/tests/test_printing_printer.py +198 -0
- odoo/addons/base_report_to_printer/tests/test_printing_printer_tray.py +256 -0
- odoo/addons/base_report_to_printer/tests/test_printing_printer_wizard.py +94 -0
- odoo/addons/base_report_to_printer/tests/test_printing_report_xml_action.py +98 -0
- odoo/addons/base_report_to_printer/tests/test_printing_server.py +219 -0
- odoo/addons/base_report_to_printer/tests/test_printing_tray.py +49 -0
- odoo/addons/base_report_to_printer/tests/test_report.py +226 -0
- odoo/addons/base_report_to_printer/tests/test_res_users.py +53 -0
- odoo/addons/base_report_to_printer/views/ir_actions_report.xml +21 -0
- odoo/addons/base_report_to_printer/views/printing_job.xml +46 -0
- odoo/addons/base_report_to_printer/views/printing_printer.xml +147 -0
- odoo/addons/base_report_to_printer/views/printing_report.xml +39 -0
- odoo/addons/base_report_to_printer/views/printing_server.xml +79 -0
- odoo/addons/base_report_to_printer/views/res_users.xml +33 -0
- odoo/addons/base_report_to_printer/wizards/__init__.py +2 -0
- odoo/addons/base_report_to_printer/wizards/print_attachment_report.py +80 -0
- odoo/addons/base_report_to_printer/wizards/print_attachment_report.xml +56 -0
- odoo/addons/base_report_to_printer/wizards/printing_printer_update_wizard.py +27 -0
- odoo/addons/base_report_to_printer/wizards/printing_printer_update_wizard_view.xml +37 -0
- odoo_addon_base_report_to_printer-18.0.1.1.6.dist-info/METADATA +222 -0
- odoo_addon_base_report_to_printer-18.0.1.1.6.dist-info/RECORD +77 -0
- odoo_addon_base_report_to_printer-18.0.1.1.6.dist-info/WHEEL +5 -0
- odoo_addon_base_report_to_printer-18.0.1.1.6.dist-info/top_level.txt +1 -0
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
# Copyright 2016 LasLabs Inc.
|
|
2
|
+
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
|
|
3
|
+
|
|
4
|
+
from odoo.tests.common import TransactionCase
|
|
5
|
+
|
|
6
|
+
model = "odoo.addons.base_report_to_printer.models.printing_server"
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
class TestPrintingTray(TransactionCase):
|
|
10
|
+
def setUp(self):
|
|
11
|
+
super().setUp()
|
|
12
|
+
self.Model = self.env["printing.tray"]
|
|
13
|
+
self.server = self.env["printing.server"].create({})
|
|
14
|
+
self.printer = self.env["printing.printer"].create(
|
|
15
|
+
{
|
|
16
|
+
"name": "Printer",
|
|
17
|
+
"server_id": self.server.id,
|
|
18
|
+
"system_name": "Sys Name",
|
|
19
|
+
"default": True,
|
|
20
|
+
"status": "unknown",
|
|
21
|
+
"status_message": "Msg",
|
|
22
|
+
"model": "res.users",
|
|
23
|
+
"location": "Location",
|
|
24
|
+
"uri": "URI",
|
|
25
|
+
}
|
|
26
|
+
)
|
|
27
|
+
self.tray_vals = {
|
|
28
|
+
"name": "Tray",
|
|
29
|
+
"system_name": "TrayName",
|
|
30
|
+
"printer_id": self.printer.id,
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
def new_tray(self):
|
|
34
|
+
return self.env["printing.tray"].create(self.tray_vals)
|
|
35
|
+
|
|
36
|
+
def test_report_behaviour(self):
|
|
37
|
+
"""It should add the selected tray in the report data"""
|
|
38
|
+
ir_report = self.env["ir.actions.report"].search([], limit=1)
|
|
39
|
+
report = self.env["printing.report.xml.action"].create(
|
|
40
|
+
{"user_id": self.env.user.id, "report_id": ir_report.id, "action": "server"}
|
|
41
|
+
)
|
|
42
|
+
report.printer_tray_id = False
|
|
43
|
+
behaviour = report.behaviour()
|
|
44
|
+
self.assertEqual(behaviour["tray"], False)
|
|
45
|
+
|
|
46
|
+
# Check that we have te right value
|
|
47
|
+
report.printer_tray_id = self.new_tray()
|
|
48
|
+
behaviour = report.behaviour()
|
|
49
|
+
self.assertEqual(behaviour["tray"], report.printer_tray_id.system_name)
|
|
@@ -0,0 +1,226 @@
|
|
|
1
|
+
# Copyright 2016 LasLabs Inc.
|
|
2
|
+
# Copyright 2017 Tecnativa - Jairo Llopis
|
|
3
|
+
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
|
|
4
|
+
|
|
5
|
+
import logging
|
|
6
|
+
from unittest import mock
|
|
7
|
+
|
|
8
|
+
from odoo import exceptions
|
|
9
|
+
from odoo.tests import common
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class TestReport(common.HttpCase):
|
|
13
|
+
def setUp(self):
|
|
14
|
+
super().setUp()
|
|
15
|
+
self.Model = self.env["ir.actions.report"].with_context(
|
|
16
|
+
skip_printer_exception=True
|
|
17
|
+
)
|
|
18
|
+
self.server = self.env["printing.server"].create({})
|
|
19
|
+
self.report_vals = {
|
|
20
|
+
"name": "Test Report",
|
|
21
|
+
"model": "ir.actions.report",
|
|
22
|
+
"report_name": "Test Report",
|
|
23
|
+
}
|
|
24
|
+
self.report_pdf_view = self.env["ir.ui.view"].create(
|
|
25
|
+
{
|
|
26
|
+
"name": "Test",
|
|
27
|
+
"type": "qweb",
|
|
28
|
+
"arch": """<t t-name="base_report_to_printer.test">
|
|
29
|
+
<div>Test</div>
|
|
30
|
+
</t>""",
|
|
31
|
+
}
|
|
32
|
+
)
|
|
33
|
+
self.report_pdf_imd = (
|
|
34
|
+
self.env["ir.model.data"]
|
|
35
|
+
.sudo()
|
|
36
|
+
.create(
|
|
37
|
+
{
|
|
38
|
+
"name": "test_pdf",
|
|
39
|
+
"module": "base_report_to_printer",
|
|
40
|
+
"model": "ir.ui.view",
|
|
41
|
+
"res_id": self.report_pdf_view.id,
|
|
42
|
+
}
|
|
43
|
+
)
|
|
44
|
+
)
|
|
45
|
+
self.report_text_view = self.env["ir.ui.view"].create(
|
|
46
|
+
{
|
|
47
|
+
"name": "Test",
|
|
48
|
+
"type": "qweb",
|
|
49
|
+
"arch": """<t t-name="base_report_to_printer.test_text">
|
|
50
|
+
Test
|
|
51
|
+
</t>""",
|
|
52
|
+
}
|
|
53
|
+
)
|
|
54
|
+
self.report_text_imd = (
|
|
55
|
+
self.env["ir.model.data"]
|
|
56
|
+
.sudo()
|
|
57
|
+
.create(
|
|
58
|
+
{
|
|
59
|
+
"name": "test_text",
|
|
60
|
+
"module": "base_report_to_printer",
|
|
61
|
+
"model": "ir.ui.view",
|
|
62
|
+
"res_id": self.report_text_view.id,
|
|
63
|
+
}
|
|
64
|
+
)
|
|
65
|
+
)
|
|
66
|
+
self.report = self.Model.create(
|
|
67
|
+
{
|
|
68
|
+
"name": "Test",
|
|
69
|
+
"report_type": "qweb-pdf",
|
|
70
|
+
"model": "res.partner",
|
|
71
|
+
"report_name": "base_report_to_printer.test_pdf",
|
|
72
|
+
}
|
|
73
|
+
)
|
|
74
|
+
self.report_text = self.Model.create(
|
|
75
|
+
{
|
|
76
|
+
"name": "Test",
|
|
77
|
+
"report_type": "qweb-text",
|
|
78
|
+
"model": "res.partner",
|
|
79
|
+
"report_name": "base_report_to_printer.test_text",
|
|
80
|
+
}
|
|
81
|
+
)
|
|
82
|
+
self.partners = self.env["res.partner"]
|
|
83
|
+
for n in range(5):
|
|
84
|
+
self.partners += self.env["res.partner"].create({"name": "Test %d" % n})
|
|
85
|
+
|
|
86
|
+
def new_record(self):
|
|
87
|
+
return self.Model.create(self.report_vals)
|
|
88
|
+
|
|
89
|
+
def new_printer(self):
|
|
90
|
+
return self.env["printing.printer"].create(
|
|
91
|
+
{
|
|
92
|
+
"name": "Printer",
|
|
93
|
+
"server_id": self.server.id,
|
|
94
|
+
"system_name": "Sys Name",
|
|
95
|
+
"default": True,
|
|
96
|
+
"status": "unknown",
|
|
97
|
+
"status_message": "Msg",
|
|
98
|
+
"model": "res.users",
|
|
99
|
+
"location": "Location",
|
|
100
|
+
"uri": "URI",
|
|
101
|
+
}
|
|
102
|
+
)
|
|
103
|
+
|
|
104
|
+
def test_can_print_report_context_skip(self):
|
|
105
|
+
"""It should return False based on context"""
|
|
106
|
+
rec_id = self.new_record().with_context(must_skip_send_to_printer=True)
|
|
107
|
+
res = rec_id._can_print_report({"action": "server"}, True, True)
|
|
108
|
+
self.assertFalse(res)
|
|
109
|
+
|
|
110
|
+
def test_can_print_report_true(self):
|
|
111
|
+
"""It should return True when server print allowed"""
|
|
112
|
+
res = self.new_record()._can_print_report({"action": "server"}, True, True)
|
|
113
|
+
self.assertTrue(res)
|
|
114
|
+
|
|
115
|
+
def test_can_print_report_false(self):
|
|
116
|
+
"""It should return False when server print not allowed"""
|
|
117
|
+
res = self.new_record()._can_print_report({"action": "server"}, True, False)
|
|
118
|
+
self.assertFalse(res)
|
|
119
|
+
|
|
120
|
+
def test_render_qweb_pdf_not_printable(self):
|
|
121
|
+
"""It should print the report, only if it is printable"""
|
|
122
|
+
with mock.patch(
|
|
123
|
+
"odoo.addons.base_report_to_printer.models."
|
|
124
|
+
"printing_printer.PrintingPrinter."
|
|
125
|
+
"print_document"
|
|
126
|
+
) as print_document:
|
|
127
|
+
self.report._render_qweb_pdf(self.report.report_name, self.partners.ids)
|
|
128
|
+
print_document.assert_not_called()
|
|
129
|
+
|
|
130
|
+
def test_render_qweb_pdf_printable(self):
|
|
131
|
+
"""It should print the report, only if it is printable"""
|
|
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
|
+
):
|
|
140
|
+
self.report.property_printing_action_id.action_type = "server"
|
|
141
|
+
self.report.printing_printer_id = self.new_printer()
|
|
142
|
+
document = self.report._render_qweb_pdf(
|
|
143
|
+
self.report.report_name, self.partners.ids
|
|
144
|
+
)
|
|
145
|
+
print_document.assert_called_once_with(
|
|
146
|
+
self.report,
|
|
147
|
+
document[0],
|
|
148
|
+
action="server",
|
|
149
|
+
doc_format="qweb-pdf",
|
|
150
|
+
tray=False,
|
|
151
|
+
)
|
|
152
|
+
self.assertEqual(len(logs.records), 1)
|
|
153
|
+
self.assertEqual(logs.records[0].levelno, logging.WARNING)
|
|
154
|
+
|
|
155
|
+
def test_render_qweb_text_printable(self):
|
|
156
|
+
"""It should print the report, only if it is printable"""
|
|
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
|
+
):
|
|
165
|
+
self.report_text.property_printing_action_id.action_type = "server"
|
|
166
|
+
self.report_text.printing_printer_id = self.new_printer()
|
|
167
|
+
document = self.report_text._render_qweb_text(
|
|
168
|
+
self.report_text.report_name, self.partners.ids
|
|
169
|
+
)
|
|
170
|
+
print_document.assert_called_once_with(
|
|
171
|
+
self.report_text,
|
|
172
|
+
document[0],
|
|
173
|
+
action="server",
|
|
174
|
+
doc_format="qweb-text",
|
|
175
|
+
tray=False,
|
|
176
|
+
)
|
|
177
|
+
self.assertEqual(len(logs.records), 1)
|
|
178
|
+
self.assertEqual(logs.records[0].levelno, logging.WARNING)
|
|
179
|
+
|
|
180
|
+
def test_print_document_not_printable(self):
|
|
181
|
+
"""It should print the report, regardless of the defined behaviour"""
|
|
182
|
+
self.report.printing_printer_id = self.new_printer()
|
|
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
|
+
):
|
|
191
|
+
self.report.print_document(self.partners.ids)
|
|
192
|
+
print_document.assert_called_once()
|
|
193
|
+
self.assertEqual(len(logs.records), 2)
|
|
194
|
+
self.assertEqual(logs.records[0].levelno, logging.WARNING)
|
|
195
|
+
|
|
196
|
+
def test_print_document_printable(self):
|
|
197
|
+
"""It should print the report, regardless of the defined behaviour"""
|
|
198
|
+
self.report.property_printing_action_id.action_type = "server"
|
|
199
|
+
self.report.printing_printer_id = self.new_printer()
|
|
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
|
+
):
|
|
208
|
+
self.report.print_document(self.partners.ids)
|
|
209
|
+
print_document.assert_called_once()
|
|
210
|
+
self.assertEqual(len(logs.records), 2)
|
|
211
|
+
self.assertEqual(logs.records[0].levelno, logging.WARNING)
|
|
212
|
+
|
|
213
|
+
def test_print_document_no_printer(self):
|
|
214
|
+
"""It should raise an error"""
|
|
215
|
+
with self.assertRaises(exceptions.UserError):
|
|
216
|
+
self.report.print_document(self.partners.ids)
|
|
217
|
+
|
|
218
|
+
def test_print_document_string(self):
|
|
219
|
+
"""Test string encoding"""
|
|
220
|
+
with mock.patch(
|
|
221
|
+
"odoo.addons.base_report_to_printer.models."
|
|
222
|
+
"printing_printer.PrintingPrinter."
|
|
223
|
+
"print_file"
|
|
224
|
+
) as print_file:
|
|
225
|
+
self.new_printer().print_document("", "test")
|
|
226
|
+
print_file.assert_called_once()
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
# Copyright 2016 LasLabs Inc.
|
|
2
|
+
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
|
|
3
|
+
|
|
4
|
+
from odoo.tests import common
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
class TestResUsers(common.TransactionCase):
|
|
8
|
+
def setUp(self):
|
|
9
|
+
super().setUp()
|
|
10
|
+
self.user_vals = {"name": "Test", "login": "login"}
|
|
11
|
+
|
|
12
|
+
def new_record(self):
|
|
13
|
+
return self.env["res.users"].create(self.user_vals)
|
|
14
|
+
|
|
15
|
+
def test_available_action_types_excludes_user_default(self):
|
|
16
|
+
"""It should not contain `user_default` in avail actions"""
|
|
17
|
+
self.user_vals["printing_action"] = "user_default"
|
|
18
|
+
with self.assertRaises(ValueError):
|
|
19
|
+
self.new_record()
|
|
20
|
+
|
|
21
|
+
def test_available_action_types_includes_something_else(self):
|
|
22
|
+
"""It should still contain other valid keys"""
|
|
23
|
+
self.user_vals["printing_action"] = "server"
|
|
24
|
+
self.assertTrue(self.new_record())
|
|
25
|
+
|
|
26
|
+
def test_onchange_printer_tray_id_empty(self):
|
|
27
|
+
user = self.env["res.users"].new({"printer_tray_id": False})
|
|
28
|
+
user.onchange_printing_printer_id()
|
|
29
|
+
self.assertFalse(user.printer_tray_id)
|
|
30
|
+
|
|
31
|
+
def test_onchange_printer_tray_id_not_empty(self):
|
|
32
|
+
server = self.env["printing.server"].create({})
|
|
33
|
+
printer = self.env["printing.printer"].create(
|
|
34
|
+
{
|
|
35
|
+
"name": "Printer",
|
|
36
|
+
"server_id": server.id,
|
|
37
|
+
"system_name": "Sys Name",
|
|
38
|
+
"default": True,
|
|
39
|
+
"status": "unknown",
|
|
40
|
+
"status_message": "Msg",
|
|
41
|
+
"model": "res.users",
|
|
42
|
+
"location": "Location",
|
|
43
|
+
"uri": "URI",
|
|
44
|
+
}
|
|
45
|
+
)
|
|
46
|
+
tray = self.env["printing.tray"].create(
|
|
47
|
+
{"name": "Tray", "system_name": "TrayName", "printer_id": printer.id}
|
|
48
|
+
)
|
|
49
|
+
|
|
50
|
+
user = self.env["res.users"].new({"printer_tray_id": tray.id})
|
|
51
|
+
self.assertEqual(user.printer_tray_id, tray)
|
|
52
|
+
user.onchange_printing_printer_id()
|
|
53
|
+
self.assertFalse(user.printer_tray_id)
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
<?xml version="1.0" ?>
|
|
2
|
+
<odoo>
|
|
3
|
+
<record model="ir.ui.view" id="act_report_xml_view">
|
|
4
|
+
<field name="name">ir.actions.report.form (in base_report_to_printer)</field>
|
|
5
|
+
<field name="model">ir.actions.report</field>
|
|
6
|
+
<field name="inherit_id" ref="base.act_report_xml_view" />
|
|
7
|
+
<field name="arch" type="xml">
|
|
8
|
+
<page name="security" position="before">
|
|
9
|
+
<page string="Print" name="print">
|
|
10
|
+
<group>
|
|
11
|
+
<field name="property_printing_action_id" />
|
|
12
|
+
<field name="printing_printer_id" />
|
|
13
|
+
<field name="printer_tray_id" />
|
|
14
|
+
</group>
|
|
15
|
+
<separator string="Specific actions per user" />
|
|
16
|
+
<field name="printing_action_ids" />
|
|
17
|
+
</page>
|
|
18
|
+
</page>
|
|
19
|
+
</field>
|
|
20
|
+
</record>
|
|
21
|
+
</odoo>
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
<?xml version="1.0" ?>
|
|
2
|
+
<odoo>
|
|
3
|
+
<record model="ir.ui.view" id="printing_job_view_form">
|
|
4
|
+
<field name="name">printing.job.form (in base_report_to_printer)</field>
|
|
5
|
+
<field name="model">printing.job</field>
|
|
6
|
+
<field name="arch" type="xml">
|
|
7
|
+
<form>
|
|
8
|
+
<header>
|
|
9
|
+
<button
|
|
10
|
+
name="action_cancel"
|
|
11
|
+
type="object"
|
|
12
|
+
string="Cancel"
|
|
13
|
+
invisible="job_state in ['canceled','aborted','completed']"
|
|
14
|
+
/>
|
|
15
|
+
<field name="job_state" widget="statusbar" />
|
|
16
|
+
</header>
|
|
17
|
+
<sheet>
|
|
18
|
+
<group>
|
|
19
|
+
<group>
|
|
20
|
+
<field name="name" />
|
|
21
|
+
<field name="job_id_cups" />
|
|
22
|
+
<field name="job_media_progress" widget="progressbar" />
|
|
23
|
+
<field name="job_state_reason" />
|
|
24
|
+
</group>
|
|
25
|
+
<group>
|
|
26
|
+
<field name="time_at_creation" />
|
|
27
|
+
<field name="time_at_processing" />
|
|
28
|
+
<field name="time_at_completed" />
|
|
29
|
+
</group>
|
|
30
|
+
</group>
|
|
31
|
+
</sheet>
|
|
32
|
+
</form>
|
|
33
|
+
</field>
|
|
34
|
+
</record>
|
|
35
|
+
<record model="ir.ui.view" id="printing_job_view_tree">
|
|
36
|
+
<field name="name">printing.job.tree (in base_report_to_printer)</field>
|
|
37
|
+
<field name="model">printing.job</field>
|
|
38
|
+
<field name="arch" type="xml">
|
|
39
|
+
<list>
|
|
40
|
+
<field name="name" />
|
|
41
|
+
<field name="job_id_cups" />
|
|
42
|
+
<field name="job_state" />
|
|
43
|
+
</list>
|
|
44
|
+
</field>
|
|
45
|
+
</record>
|
|
46
|
+
</odoo>
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
<?xml version="1.0" ?>
|
|
2
|
+
<odoo>
|
|
3
|
+
<menuitem
|
|
4
|
+
name="Printing"
|
|
5
|
+
id="printing_menu"
|
|
6
|
+
sequence="1"
|
|
7
|
+
parent="base.menu_administration"
|
|
8
|
+
groups="printing_group_manager"
|
|
9
|
+
/>
|
|
10
|
+
<record model="ir.ui.view" id="printing_printer_view_form">
|
|
11
|
+
<field name="name">printing.printer.form (in base_report_to_printer)</field>
|
|
12
|
+
<field name="model">printing.printer</field>
|
|
13
|
+
<field name="arch" type="xml">
|
|
14
|
+
<form>
|
|
15
|
+
<header>
|
|
16
|
+
<button
|
|
17
|
+
name="enable"
|
|
18
|
+
type="object"
|
|
19
|
+
string="Enable"
|
|
20
|
+
invisible="status in ['available','printing']"
|
|
21
|
+
/>
|
|
22
|
+
<button
|
|
23
|
+
name="disable"
|
|
24
|
+
type="object"
|
|
25
|
+
string="Disable"
|
|
26
|
+
invisible="status == 'unavailable'"
|
|
27
|
+
/>
|
|
28
|
+
<button
|
|
29
|
+
name="action_cancel_all_jobs"
|
|
30
|
+
type="object"
|
|
31
|
+
string="Cancel all running jobs"
|
|
32
|
+
confirm="Are you sure to want to cancel all jobs of this printer?"
|
|
33
|
+
/>
|
|
34
|
+
<button
|
|
35
|
+
name="print_test_page"
|
|
36
|
+
type="object"
|
|
37
|
+
string="Print Test Page"
|
|
38
|
+
confirm="Are you sure to want to print a test page?"
|
|
39
|
+
/>
|
|
40
|
+
</header>
|
|
41
|
+
<sheet>
|
|
42
|
+
<widget
|
|
43
|
+
name="web_ribbon"
|
|
44
|
+
text="Archived"
|
|
45
|
+
bg_color="bg-danger"
|
|
46
|
+
invisible="active"
|
|
47
|
+
/>
|
|
48
|
+
<field name="active" invisible="1" />
|
|
49
|
+
<div class="oe_title">
|
|
50
|
+
<h1>
|
|
51
|
+
<field name="name" />
|
|
52
|
+
</h1>
|
|
53
|
+
</div>
|
|
54
|
+
<group name="name">
|
|
55
|
+
<field name="system_name" />
|
|
56
|
+
<field name="server_id" />
|
|
57
|
+
</group>
|
|
58
|
+
<group col="4" colspan="4" name="default">
|
|
59
|
+
<field name="default" />
|
|
60
|
+
<button
|
|
61
|
+
name="set_default"
|
|
62
|
+
string="Set Default"
|
|
63
|
+
type="object"
|
|
64
|
+
invisible="default"
|
|
65
|
+
colspan="2"
|
|
66
|
+
/>
|
|
67
|
+
<button
|
|
68
|
+
name="unset_default"
|
|
69
|
+
string="Unset Default"
|
|
70
|
+
type="object"
|
|
71
|
+
invisible="not default"
|
|
72
|
+
colspan="2"
|
|
73
|
+
/>
|
|
74
|
+
</group>
|
|
75
|
+
<group name="details">
|
|
76
|
+
<field name="uri" />
|
|
77
|
+
<field name="model" />
|
|
78
|
+
<field name="location" />
|
|
79
|
+
<field name="status" />
|
|
80
|
+
<field name="status_message" />
|
|
81
|
+
<field name="multi_thread" />
|
|
82
|
+
</group>
|
|
83
|
+
<group string="Trays" name="trays">
|
|
84
|
+
<field name="tray_ids" nolabel="1" colspan="2">
|
|
85
|
+
<form>
|
|
86
|
+
<group name="name_fields">
|
|
87
|
+
<field name="name" />
|
|
88
|
+
<field name="system_name" />
|
|
89
|
+
</group>
|
|
90
|
+
</form>
|
|
91
|
+
</field>
|
|
92
|
+
</group>
|
|
93
|
+
<group name="jobs" string="Jobs">
|
|
94
|
+
<field name="job_ids" nolabel="1" colspan="2" />
|
|
95
|
+
</group>
|
|
96
|
+
</sheet>
|
|
97
|
+
</form>
|
|
98
|
+
</field>
|
|
99
|
+
</record>
|
|
100
|
+
<record model="ir.ui.view" id="printing_printer_view_tree">
|
|
101
|
+
<field name="name">printing.printer.tree (in base_report_to_printer)</field>
|
|
102
|
+
<field name="model">printing.printer</field>
|
|
103
|
+
<field name="arch" type="xml">
|
|
104
|
+
<list
|
|
105
|
+
decoration-success="status=='available'"
|
|
106
|
+
decoration-warning="status=='printing'"
|
|
107
|
+
decoration-danger="status not in ['printing', 'available']"
|
|
108
|
+
>
|
|
109
|
+
<field name="default" />
|
|
110
|
+
<field name="name" />
|
|
111
|
+
<field name="system_name" />
|
|
112
|
+
<field name="server_id" />
|
|
113
|
+
<field name="status" />
|
|
114
|
+
</list>
|
|
115
|
+
</field>
|
|
116
|
+
</record>
|
|
117
|
+
<record model="ir.ui.view" id="printing_printer_view_search">
|
|
118
|
+
<field name="name">printing.printer.search (in base_report_to_printer)</field>
|
|
119
|
+
<field name="model">printing.printer</field>
|
|
120
|
+
<field name="arch" type="xml">
|
|
121
|
+
<search string="Printers">
|
|
122
|
+
<field name="name" />
|
|
123
|
+
<field name="system_name" />
|
|
124
|
+
<field name="location" />
|
|
125
|
+
<field name="status" />
|
|
126
|
+
<filter
|
|
127
|
+
string="Archived"
|
|
128
|
+
name="inactive"
|
|
129
|
+
domain="[('active', '=', False)]"
|
|
130
|
+
/>
|
|
131
|
+
</search>
|
|
132
|
+
</field>
|
|
133
|
+
</record>
|
|
134
|
+
<record model="ir.actions.act_window" id="printing_printer_action">
|
|
135
|
+
<field name="name">Show Printers</field>
|
|
136
|
+
<field name="type">ir.actions.act_window</field>
|
|
137
|
+
<field name="res_model">printing.printer</field>
|
|
138
|
+
<field name="view_mode">list,form</field>
|
|
139
|
+
</record>
|
|
140
|
+
<menuitem
|
|
141
|
+
name="Printers"
|
|
142
|
+
sequence="20"
|
|
143
|
+
id="printing_printer_menu"
|
|
144
|
+
parent="printing_menu"
|
|
145
|
+
action="printing_printer_action"
|
|
146
|
+
/>
|
|
147
|
+
</odoo>
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
<?xml version="1.0" ?>
|
|
2
|
+
<odoo>
|
|
3
|
+
<record model="ir.ui.view" id="printing_report_xml_action_view_form">
|
|
4
|
+
<field name="name">printing.report.xml.action.form (in base_report_to_printer)
|
|
5
|
+
</field>
|
|
6
|
+
<field name="model">printing.report.xml.action</field>
|
|
7
|
+
<field name="arch" type="xml">
|
|
8
|
+
<form>
|
|
9
|
+
<group col="2">
|
|
10
|
+
<field name="user_id" />
|
|
11
|
+
<field name="action" />
|
|
12
|
+
<field name="printer_id" select="1" />
|
|
13
|
+
<field name="printer_tray_id" />
|
|
14
|
+
</group>
|
|
15
|
+
</form>
|
|
16
|
+
</field>
|
|
17
|
+
</record>
|
|
18
|
+
<record model="ir.ui.view" id="printing_report_xml_action_view_tree">
|
|
19
|
+
<field
|
|
20
|
+
name="name"
|
|
21
|
+
>printing.report.xml.action.tree (in base_report_to_printer)</field>
|
|
22
|
+
<field name="model">printing.report.xml.action</field>
|
|
23
|
+
<field name="arch" type="xml">
|
|
24
|
+
<list>
|
|
25
|
+
<field name="user_id" />
|
|
26
|
+
<field name="action" />
|
|
27
|
+
<field name="printer_id" />
|
|
28
|
+
<field name="printer_tray_id" />
|
|
29
|
+
</list>
|
|
30
|
+
</field>
|
|
31
|
+
</record>
|
|
32
|
+
<!-- Add a shorcut to "Actions/Report" in the Printing menu -->
|
|
33
|
+
<menuitem
|
|
34
|
+
id="printing_report_xml_action_menu"
|
|
35
|
+
sequence="30"
|
|
36
|
+
parent="printing_menu"
|
|
37
|
+
action="base.ir_action_report"
|
|
38
|
+
/>
|
|
39
|
+
</odoo>
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
<?xml version="1.0" ?>
|
|
2
|
+
<odoo>
|
|
3
|
+
<record model="ir.ui.view" id="printing_server_view_form">
|
|
4
|
+
<field name="name">printing.server.form (in base_report_to_printer)</field>
|
|
5
|
+
<field name="model">printing.server</field>
|
|
6
|
+
<field name="arch" type="xml">
|
|
7
|
+
<form>
|
|
8
|
+
<header>
|
|
9
|
+
<button
|
|
10
|
+
name="action_update_printers"
|
|
11
|
+
type="object"
|
|
12
|
+
string="Update Printers"
|
|
13
|
+
/>
|
|
14
|
+
<button
|
|
15
|
+
name="action_update_jobs"
|
|
16
|
+
type="object"
|
|
17
|
+
string="Update Jobs"
|
|
18
|
+
/>
|
|
19
|
+
</header>
|
|
20
|
+
<sheet>
|
|
21
|
+
<div class="oe_title">
|
|
22
|
+
<h1>
|
|
23
|
+
<field name="name" />
|
|
24
|
+
</h1>
|
|
25
|
+
</div>
|
|
26
|
+
<group>
|
|
27
|
+
<group>
|
|
28
|
+
<field name="address" />
|
|
29
|
+
<field name="port" />
|
|
30
|
+
</group>
|
|
31
|
+
<group>
|
|
32
|
+
<field name="user" />
|
|
33
|
+
<field name="password" />
|
|
34
|
+
<field name="encryption_policy" />
|
|
35
|
+
<field name="multi_thread" />
|
|
36
|
+
</group>
|
|
37
|
+
</group>
|
|
38
|
+
<separator name="printers" string="Printers" />
|
|
39
|
+
<field name="printer_ids" />
|
|
40
|
+
</sheet>
|
|
41
|
+
</form>
|
|
42
|
+
</field>
|
|
43
|
+
</record>
|
|
44
|
+
<record model="ir.ui.view" id="printing_server_view_tree">
|
|
45
|
+
<field name="name">printing.server.tree (in base_report_to_printer)</field>
|
|
46
|
+
<field name="model">printing.server</field>
|
|
47
|
+
<field name="arch" type="xml">
|
|
48
|
+
<list>
|
|
49
|
+
<field name="name" />
|
|
50
|
+
<field name="address" />
|
|
51
|
+
<field name="port" />
|
|
52
|
+
</list>
|
|
53
|
+
</field>
|
|
54
|
+
</record>
|
|
55
|
+
<record model="ir.ui.view" id="printing_server_view_search">
|
|
56
|
+
<field name="name">printing.server.search (in base_report_to_printer)</field>
|
|
57
|
+
<field name="model">printing.server</field>
|
|
58
|
+
<field name="arch" type="xml">
|
|
59
|
+
<search string="Servers">
|
|
60
|
+
<field name="name" />
|
|
61
|
+
<field name="address" />
|
|
62
|
+
<field name="port" />
|
|
63
|
+
</search>
|
|
64
|
+
</field>
|
|
65
|
+
</record>
|
|
66
|
+
<record model="ir.actions.act_window" id="printing_server_action">
|
|
67
|
+
<field name="name">Servers</field>
|
|
68
|
+
<field name="type">ir.actions.act_window</field>
|
|
69
|
+
<field name="res_model">printing.server</field>
|
|
70
|
+
<field name="view_mode">list,form</field>
|
|
71
|
+
</record>
|
|
72
|
+
<menuitem
|
|
73
|
+
name="Servers"
|
|
74
|
+
sequence="10"
|
|
75
|
+
id="printing_server_menu"
|
|
76
|
+
parent="printing_menu"
|
|
77
|
+
action="printing_server_action"
|
|
78
|
+
/>
|
|
79
|
+
</odoo>
|