odoo-addon-l10n-it-vat-registries 16.0.1.3.0.1__py3-none-any.whl → 16.0.1.4.0__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/l10n_it_vat_registries/README.rst +1 -1
- odoo/addons/l10n_it_vat_registries/__manifest__.py +2 -1
- odoo/addons/l10n_it_vat_registries/i18n/l10n_it_vat_registries.pot +55 -0
- odoo/addons/l10n_it_vat_registries/report/reports.xml +12 -0
- odoo/addons/l10n_it_vat_registries/static/description/index.html +1 -1
- odoo/addons/l10n_it_vat_registries/tests/test_registry.py +46 -20
- odoo/addons/l10n_it_vat_registries/wizard/__init__.py +1 -0
- odoo/addons/l10n_it_vat_registries/wizard/print_registro_iva.py +28 -17
- odoo/addons/l10n_it_vat_registries/wizard/print_registro_iva.xml +7 -0
- odoo/addons/l10n_it_vat_registries/wizard/report_registro_iva_xlsx.py +161 -0
- {odoo_addon_l10n_it_vat_registries-16.0.1.3.0.1.dist-info → odoo_addon_l10n_it_vat_registries-16.0.1.4.0.dist-info}/METADATA +3 -2
- {odoo_addon_l10n_it_vat_registries-16.0.1.3.0.1.dist-info → odoo_addon_l10n_it_vat_registries-16.0.1.4.0.dist-info}/RECORD +14 -13
- {odoo_addon_l10n_it_vat_registries-16.0.1.3.0.1.dist-info → odoo_addon_l10n_it_vat_registries-16.0.1.4.0.dist-info}/WHEEL +0 -0
- {odoo_addon_l10n_it_vat_registries-16.0.1.3.0.1.dist-info → odoo_addon_l10n_it_vat_registries-16.0.1.4.0.dist-info}/top_level.txt +0 -0
@@ -7,7 +7,7 @@ ITA - Registri IVA
|
|
7
7
|
!! This file is generated by oca-gen-addon-readme !!
|
8
8
|
!! changes will be overwritten. !!
|
9
9
|
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
10
|
-
!! source digest: sha256:
|
10
|
+
!! source digest: sha256:d0ea45cf9b52cfe3008aa85d0253415706583df2e25119c599113f829169ee7b
|
11
11
|
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
12
12
|
|
13
13
|
.. |badge1| image:: https://img.shields.io/badge/maturity-Production%2FStable-green.png
|
@@ -6,7 +6,7 @@
|
|
6
6
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
7
7
|
|
8
8
|
{
|
9
|
-
"version": "16.0.1.
|
9
|
+
"version": "16.0.1.4.0",
|
10
10
|
"name": "ITA - Registri IVA",
|
11
11
|
"category": "Localization/Italy",
|
12
12
|
"author": "Agile Business Group, Odoo Community Association (OCA), LinkIt Srl",
|
@@ -20,6 +20,7 @@
|
|
20
20
|
"web",
|
21
21
|
"account_tax_balance",
|
22
22
|
"date_range",
|
23
|
+
"report_xlsx_helper",
|
23
24
|
],
|
24
25
|
"data": [
|
25
26
|
"security/ir.model.access.csv",
|
@@ -19,7 +19,10 @@ msgid "A VAT registry is used to group several journals in one registry."
|
|
19
19
|
msgstr ""
|
20
20
|
|
21
21
|
#. module: l10n_it_vat_registries
|
22
|
+
#. odoo-python
|
23
|
+
#: code:addons/l10n_it_vat_registries/wizard/report_registro_iva_xlsx.py:0
|
22
24
|
#: model_terms:ir.ui.view,arch_db:l10n_it_vat_registries.report_registro_iva
|
25
|
+
#, python-format
|
23
26
|
msgid "BUSINESS NAME"
|
24
27
|
msgstr ""
|
25
28
|
|
@@ -111,12 +114,18 @@ msgid "ID"
|
|
111
114
|
msgstr ""
|
112
115
|
|
113
116
|
#. module: l10n_it_vat_registries
|
117
|
+
#. odoo-python
|
118
|
+
#: code:addons/l10n_it_vat_registries/wizard/report_registro_iva_xlsx.py:0
|
114
119
|
#: model_terms:ir.ui.view,arch_db:l10n_it_vat_registries.report_registro_iva
|
120
|
+
#, python-format
|
115
121
|
msgid "INV. DATE"
|
116
122
|
msgstr ""
|
117
123
|
|
118
124
|
#. module: l10n_it_vat_registries
|
125
|
+
#. odoo-python
|
126
|
+
#: code:addons/l10n_it_vat_registries/wizard/report_registro_iva_xlsx.py:0
|
119
127
|
#: model_terms:ir.ui.view,arch_db:l10n_it_vat_registries.report_registro_iva
|
128
|
+
#, python-format
|
120
129
|
msgid "INV. NUM."
|
121
130
|
msgstr ""
|
122
131
|
|
@@ -125,6 +134,11 @@ msgstr ""
|
|
125
134
|
msgid "Invoices VAT Registry"
|
126
135
|
msgstr ""
|
127
136
|
|
137
|
+
#. module: l10n_it_vat_registries
|
138
|
+
#: model:ir.actions.report,name:l10n_it_vat_registries.action_report_registro_iva_xlsx
|
139
|
+
msgid "Invoices VAT Registry XLSX"
|
140
|
+
msgstr ""
|
141
|
+
|
128
142
|
#. module: l10n_it_vat_registries
|
129
143
|
#: model:ir.model,name:l10n_it_vat_registries.model_account_journal
|
130
144
|
msgid "Journal"
|
@@ -186,6 +200,13 @@ msgstr ""
|
|
186
200
|
msgid "Move line %s has too many base taxes"
|
187
201
|
msgstr ""
|
188
202
|
|
203
|
+
#. module: l10n_it_vat_registries
|
204
|
+
#. odoo-python
|
205
|
+
#: code:addons/l10n_it_vat_registries/wizard/report_registro_iva_xlsx.py:0
|
206
|
+
#, python-format
|
207
|
+
msgid "N/A"
|
208
|
+
msgstr ""
|
209
|
+
|
189
210
|
#. module: l10n_it_vat_registries
|
190
211
|
#: model:ir.model.fields,field_description:l10n_it_vat_registries.field_account_tax_registry__name
|
191
212
|
msgid "Name"
|
@@ -210,23 +231,37 @@ msgstr ""
|
|
210
231
|
msgid "Print"
|
211
232
|
msgstr ""
|
212
233
|
|
234
|
+
#. module: l10n_it_vat_registries
|
235
|
+
#: model_terms:ir.ui.view,arch_db:l10n_it_vat_registries.wizard_registro_iva
|
236
|
+
msgid "Print XLSX"
|
237
|
+
msgstr ""
|
238
|
+
|
213
239
|
#. module: l10n_it_vat_registries
|
214
240
|
#: model:ir.model.fields,field_description:l10n_it_vat_registries.field_wizard_registro_iva__only_totals
|
215
241
|
msgid "Prints only totals"
|
216
242
|
msgstr ""
|
217
243
|
|
218
244
|
#. module: l10n_it_vat_registries
|
245
|
+
#. odoo-python
|
246
|
+
#: code:addons/l10n_it_vat_registries/wizard/report_registro_iva_xlsx.py:0
|
219
247
|
#: model_terms:ir.ui.view,arch_db:l10n_it_vat_registries.report_registro_iva
|
248
|
+
#, python-format
|
220
249
|
msgid "REASON"
|
221
250
|
msgstr ""
|
222
251
|
|
223
252
|
#. module: l10n_it_vat_registries
|
253
|
+
#. odoo-python
|
254
|
+
#: code:addons/l10n_it_vat_registries/wizard/report_registro_iva_xlsx.py:0
|
224
255
|
#: model_terms:ir.ui.view,arch_db:l10n_it_vat_registries.report_registro_iva
|
256
|
+
#, python-format
|
225
257
|
msgid "REG. DATE"
|
226
258
|
msgstr ""
|
227
259
|
|
228
260
|
#. module: l10n_it_vat_registries
|
261
|
+
#. odoo-python
|
262
|
+
#: code:addons/l10n_it_vat_registries/wizard/report_registro_iva_xlsx.py:0
|
229
263
|
#: model_terms:ir.ui.view,arch_db:l10n_it_vat_registries.report_registro_iva
|
264
|
+
#, python-format
|
230
265
|
msgid "REG. NUM."
|
231
266
|
msgstr ""
|
232
267
|
|
@@ -264,18 +299,27 @@ msgid "Supplier Invoices"
|
|
264
299
|
msgstr ""
|
265
300
|
|
266
301
|
#. module: l10n_it_vat_registries
|
302
|
+
#. odoo-python
|
303
|
+
#: code:addons/l10n_it_vat_registries/wizard/report_registro_iva_xlsx.py:0
|
267
304
|
#: model_terms:ir.ui.view,arch_db:l10n_it_vat_registries.report_registro_iva
|
305
|
+
#, python-format
|
268
306
|
msgid "TIN"
|
269
307
|
msgstr ""
|
270
308
|
|
271
309
|
#. module: l10n_it_vat_registries
|
310
|
+
#. odoo-python
|
311
|
+
#: code:addons/l10n_it_vat_registries/wizard/report_registro_iva_xlsx.py:0
|
272
312
|
#: model_terms:ir.ui.view,arch_db:l10n_it_vat_registries.report_registro_iva
|
313
|
+
#, python-format
|
273
314
|
msgid "TOTAL"
|
274
315
|
msgstr ""
|
275
316
|
|
276
317
|
#. module: l10n_it_vat_registries
|
318
|
+
#. odoo-python
|
319
|
+
#: code:addons/l10n_it_vat_registries/wizard/report_registro_iva_xlsx.py:0
|
277
320
|
#: model:ir.model,name:l10n_it_vat_registries.model_account_tax
|
278
321
|
#: model_terms:ir.ui.view,arch_db:l10n_it_vat_registries.report_registro_iva
|
322
|
+
#, python-format
|
279
323
|
msgid "Tax"
|
280
324
|
msgstr ""
|
281
325
|
|
@@ -285,7 +329,10 @@ msgid "Tax Journal"
|
|
285
329
|
msgstr ""
|
286
330
|
|
287
331
|
#. module: l10n_it_vat_registries
|
332
|
+
#. odoo-python
|
333
|
+
#: code:addons/l10n_it_vat_registries/wizard/report_registro_iva_xlsx.py:0
|
288
334
|
#: model_terms:ir.ui.view,arch_db:l10n_it_vat_registries.report_registro_iva
|
335
|
+
#, python-format
|
289
336
|
msgid "Tax description"
|
290
337
|
msgstr ""
|
291
338
|
|
@@ -295,7 +342,10 @@ msgid "Tax registry"
|
|
295
342
|
msgstr ""
|
296
343
|
|
297
344
|
#. module: l10n_it_vat_registries
|
345
|
+
#. odoo-python
|
346
|
+
#: code:addons/l10n_it_vat_registries/wizard/report_registro_iva_xlsx.py:0
|
298
347
|
#: model_terms:ir.ui.view,arch_db:l10n_it_vat_registries.report_registro_iva
|
348
|
+
#, python-format
|
299
349
|
msgid "Taxable"
|
300
350
|
msgstr ""
|
301
351
|
|
@@ -341,6 +391,11 @@ msgstr ""
|
|
341
391
|
msgid "Value printed near number of page in the footer"
|
342
392
|
msgstr ""
|
343
393
|
|
394
|
+
#. module: l10n_it_vat_registries
|
395
|
+
#: model:ir.model,name:l10n_it_vat_registries.model_report_l10n_it_vat_registries_report_registro_iva_xlsx
|
396
|
+
msgid "XLSX report for VAT registries"
|
397
|
+
msgstr ""
|
398
|
+
|
344
399
|
#. module: l10n_it_vat_registries
|
345
400
|
#: model:ir.model.fields,field_description:l10n_it_vat_registries.field_wizard_registro_iva__year_footer
|
346
401
|
msgid "Year for Footer"
|
@@ -13,4 +13,16 @@
|
|
13
13
|
/>
|
14
14
|
</record>
|
15
15
|
|
16
|
+
<record id="action_report_registro_iva_xlsx" model="ir.actions.report">
|
17
|
+
<field name="name">Invoices VAT Registry XLSX</field>
|
18
|
+
<field name="model">account.move</field>
|
19
|
+
<field name="report_type">xlsx</field>
|
20
|
+
<field
|
21
|
+
name="report_name"
|
22
|
+
>l10n_it_vat_registries.report_registro_iva_xlsx</field>
|
23
|
+
<field
|
24
|
+
name="report_file"
|
25
|
+
>l10n_it_vat_registries.report_registro_iva_xlsx</field>
|
26
|
+
</record>
|
27
|
+
|
16
28
|
</odoo>
|
@@ -367,7 +367,7 @@ ul.auto-toc {
|
|
367
367
|
!! This file is generated by oca-gen-addon-readme !!
|
368
368
|
!! changes will be overwritten. !!
|
369
369
|
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
370
|
-
!! source digest: sha256:
|
370
|
+
!! source digest: sha256:d0ea45cf9b52cfe3008aa85d0253415706583df2e25119c599113f829169ee7b
|
371
371
|
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
|
372
372
|
<p><a class="reference external image-reference" href="https://odoo-community.org/page/development-status"><img alt="Production/Stable" src="https://img.shields.io/badge/maturity-Production%2FStable-green.png" /></a> <a class="reference external image-reference" href="http://www.gnu.org/licenses/agpl-3.0-standalone.html"><img alt="License: AGPL-3" src="https://img.shields.io/badge/licence-AGPL--3-blue.png" /></a> <a class="reference external image-reference" href="https://github.com/OCA/l10n-italy/tree/16.0/l10n_it_vat_registries"><img alt="OCA/l10n-italy" src="https://img.shields.io/badge/github-OCA%2Fl10n--italy-lightgray.png?logo=github" /></a> <a class="reference external image-reference" href="https://translation.odoo-community.org/projects/l10n-italy-16-0/l10n-italy-16-0-l10n_it_vat_registries"><img alt="Translate me on Weblate" src="https://img.shields.io/badge/weblate-Translate%20me-F47D42.png" /></a> <a class="reference external image-reference" href="https://runboat.odoo-community.org/builds?repo=OCA/l10n-italy&target_branch=16.0"><img alt="Try me on Runboat" src="https://img.shields.io/badge/runboat-Try%20me-875A7B.png" /></a></p>
|
373
373
|
<p>Law: Decreto del Presidente della Repubblica del 26 ottobre 1972 n. 633
|
@@ -1,35 +1,42 @@
|
|
1
1
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
2
2
|
|
3
|
+
import io
|
4
|
+
from zipfile import ZipFile
|
5
|
+
|
3
6
|
from odoo import fields
|
4
7
|
from odoo.tests.common import TransactionCase
|
5
8
|
|
6
9
|
|
7
10
|
class TestRegistry(TransactionCase):
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
+
@classmethod
|
12
|
+
def setUpClass(cls):
|
13
|
+
super().setUpClass()
|
14
|
+
|
15
|
+
cls.test_date = fields.Date.today()
|
16
|
+
cls.journal = cls.env["account.journal"].search(
|
11
17
|
[("type", "=", "sale")], limit=1
|
12
18
|
)
|
13
|
-
|
19
|
+
cls.ova = cls.env["account.account"].search(
|
14
20
|
[("account_type", "=", "asset_current")],
|
15
21
|
limit=1,
|
16
22
|
)
|
17
|
-
tax =
|
23
|
+
cls.tax = cls.env["account.tax"].create(
|
18
24
|
{
|
19
25
|
"name": "Tax 10.0",
|
20
26
|
"amount": 10.0,
|
21
27
|
"amount_type": "fixed",
|
22
28
|
}
|
23
29
|
)
|
24
|
-
tax_registry =
|
30
|
+
cls.tax_registry = cls.env["account.tax.registry"].create(
|
25
31
|
{
|
26
32
|
"name": "Sales",
|
27
33
|
"layout_type": "customer",
|
28
|
-
"journal_ids": [(6, 0, [
|
34
|
+
"journal_ids": [(6, 0, [cls.journal.id])],
|
29
35
|
}
|
30
36
|
)
|
31
|
-
|
32
|
-
|
37
|
+
|
38
|
+
cls.invoice_line_account = (
|
39
|
+
cls.env["account.account"]
|
33
40
|
.search(
|
34
41
|
[("account_type", "=", "expense")],
|
35
42
|
limit=1,
|
@@ -37,35 +44,36 @@ class TestRegistry(TransactionCase):
|
|
37
44
|
.id
|
38
45
|
)
|
39
46
|
|
40
|
-
invoice =
|
47
|
+
cls.invoice = cls.env["account.move"].create(
|
41
48
|
{
|
42
|
-
"partner_id":
|
43
|
-
"invoice_date": test_date,
|
49
|
+
"partner_id": cls.env.ref("base.res_partner_2").id,
|
50
|
+
"invoice_date": cls.test_date,
|
44
51
|
"move_type": "out_invoice",
|
45
|
-
"journal_id":
|
52
|
+
"journal_id": cls.journal.id,
|
46
53
|
"invoice_line_ids": [
|
47
54
|
(
|
48
55
|
0,
|
49
56
|
None,
|
50
57
|
{
|
51
|
-
"product_id":
|
58
|
+
"product_id": cls.env.ref("product.product_product_4").id,
|
52
59
|
"quantity": 1.0,
|
53
60
|
"price_unit": 100.0,
|
54
61
|
"name": "product that cost 100",
|
55
|
-
"account_id": invoice_line_account,
|
56
|
-
"tax_ids": [(6, 0, [tax.id])],
|
62
|
+
"account_id": cls.invoice_line_account,
|
63
|
+
"tax_ids": [(6, 0, [cls.tax.id])],
|
57
64
|
},
|
58
65
|
)
|
59
66
|
],
|
60
67
|
}
|
61
68
|
)
|
62
|
-
invoice.action_post()
|
69
|
+
cls.invoice.action_post()
|
63
70
|
|
71
|
+
def test_invoice_and_report(self):
|
64
72
|
wizard = self.env["wizard.registro.iva"].create(
|
65
73
|
{
|
66
|
-
"from_date": test_date,
|
67
|
-
"to_date": test_date,
|
68
|
-
"tax_registry_id": tax_registry.id,
|
74
|
+
"from_date": self.test_date,
|
75
|
+
"to_date": self.test_date,
|
76
|
+
"tax_registry_id": self.tax_registry.id,
|
69
77
|
"layout_type": "supplier",
|
70
78
|
"fiscal_page_base": 0,
|
71
79
|
}
|
@@ -84,6 +92,24 @@ class TestRegistry(TransactionCase):
|
|
84
92
|
|
85
93
|
self.assertTrue(b"Tax 10.0" in html[0])
|
86
94
|
|
95
|
+
# XLSX
|
96
|
+
res = wizard.print_registro_xlsx()
|
97
|
+
|
98
|
+
report_name = "l10n_it_vat_registries.report_registro_iva_xlsx"
|
99
|
+
domain = [
|
100
|
+
("report_type", "=", "xlsx"),
|
101
|
+
("report_name", "=", report_name),
|
102
|
+
]
|
103
|
+
report = self.env["ir.actions.report"].search(domain)
|
104
|
+
data = res["context"]["report_action"]["data"]
|
105
|
+
xlsx, _type = report._render_xlsx(report_name, data["ids"], data)
|
106
|
+
|
107
|
+
# basic reading of a file
|
108
|
+
# we don't want to depend on other non-standard libraries such as openpyxl
|
109
|
+
f = io.BytesIO(xlsx)
|
110
|
+
with ZipFile(f, "r").open("xl/sharedStrings.xml", "r") as wf:
|
111
|
+
self.assertTrue(self.invoice.partner_id.name.encode("utf8") in wf.read())
|
112
|
+
|
87
113
|
def test_no_report_from_invoice(self):
|
88
114
|
"""Check that the report is not available from invoice context menu."""
|
89
115
|
report_id = self.ref("l10n_it_vat_registries.action_report_registro_iva")
|
@@ -84,25 +84,22 @@ class WizardRegistroIva(models.TransientModel):
|
|
84
84
|
)
|
85
85
|
return moves.ids
|
86
86
|
|
87
|
-
def
|
87
|
+
def _get_datas_form(self):
|
88
88
|
self.ensure_one()
|
89
|
-
|
90
|
-
if not wizard.journal_ids:
|
89
|
+
if not self.journal_ids:
|
91
90
|
raise UserError(
|
92
91
|
_(
|
93
92
|
"No journals found in the current selection.\n"
|
94
93
|
"Please load them before to retry!"
|
95
94
|
)
|
96
95
|
)
|
97
|
-
move_ids = self._get_move_ids(wizard)
|
98
|
-
|
99
96
|
datas_form = {}
|
100
|
-
datas_form["from_date"] =
|
101
|
-
datas_form["to_date"] =
|
102
|
-
datas_form["journal_ids"] = [j.id for j in
|
103
|
-
datas_form["fiscal_page_base"] =
|
104
|
-
datas_form["registry_type"] =
|
105
|
-
datas_form["year_footer"] =
|
97
|
+
datas_form["from_date"] = self.from_date
|
98
|
+
datas_form["to_date"] = self.to_date
|
99
|
+
datas_form["journal_ids"] = [j.id for j in self.journal_ids]
|
100
|
+
datas_form["fiscal_page_base"] = self.fiscal_page_base
|
101
|
+
datas_form["registry_type"] = self.layout_type
|
102
|
+
datas_form["year_footer"] = self.year_footer
|
106
103
|
|
107
104
|
lang_code = self.env.company.partner_id.lang
|
108
105
|
lang = self.env["res.lang"]
|
@@ -110,14 +107,28 @@ class WizardRegistroIva(models.TransientModel):
|
|
110
107
|
date_format = lang_id.date_format
|
111
108
|
datas_form["date_format"] = date_format
|
112
109
|
|
113
|
-
if
|
114
|
-
datas_form["tax_registry_name"] =
|
110
|
+
if self.tax_registry_id:
|
111
|
+
datas_form["tax_registry_name"] = self.tax_registry_id.name
|
115
112
|
else:
|
116
113
|
datas_form["tax_registry_name"] = ""
|
117
|
-
datas_form["only_totals"] =
|
118
|
-
datas_form["entry_order"] =
|
119
|
-
datas_form["show_full_contact_addess"] =
|
120
|
-
|
114
|
+
datas_form["only_totals"] = self.only_totals
|
115
|
+
datas_form["entry_order"] = self.entry_order
|
116
|
+
datas_form["show_full_contact_addess"] = self.show_full_contact_addess
|
117
|
+
return datas_form
|
118
|
+
|
119
|
+
def print_registro(self):
|
120
|
+
move_ids = self._get_move_ids(self)
|
121
|
+
datas_form = self._get_datas_form()
|
122
|
+
|
121
123
|
report_name = "l10n_it_vat_registries.action_report_registro_iva"
|
122
124
|
datas = {"ids": move_ids, "model": "account.move", "form": datas_form}
|
123
125
|
return self.env.ref(report_name).report_action(self, data=datas)
|
126
|
+
|
127
|
+
def print_registro_xlsx(self):
|
128
|
+
move_ids = self._get_move_ids(self)
|
129
|
+
datas_form = self._get_datas_form()
|
130
|
+
|
131
|
+
report_name = "l10n_it_vat_registries.action_report_registro_iva_xlsx"
|
132
|
+
datas = {"ids": move_ids, "model": "account.move", "form": datas_form}
|
133
|
+
moves = self.env["account.move"].browse(move_ids)
|
134
|
+
return self.env.ref(report_name).report_action(moves, data=datas)
|
@@ -0,0 +1,161 @@
|
|
1
|
+
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
2
|
+
|
3
|
+
import logging
|
4
|
+
|
5
|
+
from odoo import _, models
|
6
|
+
from odoo.tools.misc import formatLang
|
7
|
+
|
8
|
+
from odoo.addons.report_xlsx_helper.report.report_xlsx_format import (
|
9
|
+
FORMATS,
|
10
|
+
XLS_HEADERS,
|
11
|
+
)
|
12
|
+
|
13
|
+
_logger = logging.getLogger(__name__)
|
14
|
+
|
15
|
+
|
16
|
+
class ReportRegistroIvaXlsx(models.AbstractModel):
|
17
|
+
_name = "report.l10n_it_vat_registries.report_registro_iva_xlsx"
|
18
|
+
_inherit = [
|
19
|
+
"report.report_xlsx.abstract",
|
20
|
+
"report.l10n_it_vat_registries.report_registro_iva",
|
21
|
+
]
|
22
|
+
_description = "XLSX report for VAT registries"
|
23
|
+
|
24
|
+
# to override
|
25
|
+
def _get_vat_settlement_date_col_spec(self):
|
26
|
+
return {}
|
27
|
+
|
28
|
+
def _get_ws_params(self, workbook, data, objects):
|
29
|
+
registry_type = data["form"]["registry_type"]
|
30
|
+
titles = {
|
31
|
+
"customer": "Registro IVA vendite",
|
32
|
+
"supplier": "Registro IVA acquisti",
|
33
|
+
"corrispettivi": "Registro corrispettivi",
|
34
|
+
}
|
35
|
+
title = data["form"]["tax_registry_name"] or titles.get(registry_type, _("N/A"))
|
36
|
+
|
37
|
+
col_specs = {
|
38
|
+
"date": {
|
39
|
+
"header": {"value": _("REG. DATE")},
|
40
|
+
"lines": {"value": self._render("format_date(move.date,date_format)")},
|
41
|
+
"width": 20,
|
42
|
+
},
|
43
|
+
"no": {
|
44
|
+
"header": {"value": _("REG. NUM.")},
|
45
|
+
"lines": {"value": self._render("move.name")},
|
46
|
+
"width": 20,
|
47
|
+
},
|
48
|
+
"reason": {
|
49
|
+
"header": {"value": _("REASON")},
|
50
|
+
"lines": {"value": self._render("line['invoice_type']")},
|
51
|
+
"width": 20,
|
52
|
+
},
|
53
|
+
"inv_date": {
|
54
|
+
"header": {"value": _("INV. DATE")},
|
55
|
+
"lines": {
|
56
|
+
"value": self._render(
|
57
|
+
"format_date(line['invoice_date'],date_format)"
|
58
|
+
)
|
59
|
+
},
|
60
|
+
"width": 20,
|
61
|
+
},
|
62
|
+
"inv_name": {
|
63
|
+
"header": {"value": _("INV. NUM.")},
|
64
|
+
"lines": {
|
65
|
+
"value": self._render(
|
66
|
+
"move.ref if move.journal_id.type == 'purchase' "
|
67
|
+
"else move.name"
|
68
|
+
)
|
69
|
+
},
|
70
|
+
"width": 20,
|
71
|
+
},
|
72
|
+
"partner": {
|
73
|
+
"header": {"value": _("BUSINESS NAME")},
|
74
|
+
"lines": {"value": self._render("move.partner_id.name")},
|
75
|
+
"width": 20,
|
76
|
+
},
|
77
|
+
"tin": {
|
78
|
+
"header": {"value": _("TIN")},
|
79
|
+
"lines": {"value": self._render("move.partner_id.vat")},
|
80
|
+
"width": 20,
|
81
|
+
},
|
82
|
+
"total": {
|
83
|
+
"header": {"value": _("TOTAL")},
|
84
|
+
"lines": {
|
85
|
+
"value": self._render("formatLang(env, invoice_total(move))")
|
86
|
+
},
|
87
|
+
"width": 20,
|
88
|
+
},
|
89
|
+
"tax_name": {
|
90
|
+
"header": {"value": _("Tax description")},
|
91
|
+
"lines": {"value": self._render("line['tax_code_name']")},
|
92
|
+
"width": 20,
|
93
|
+
},
|
94
|
+
"taxable": {
|
95
|
+
"header": {"value": _("Taxable")},
|
96
|
+
"lines": {"value": self._render("formatLang(env, line['base'])")},
|
97
|
+
"width": 20,
|
98
|
+
},
|
99
|
+
"tax": {
|
100
|
+
"header": {"value": _("Tax")},
|
101
|
+
"lines": {"value": self._render("formatLang(env, line['tax'])")},
|
102
|
+
"width": 20,
|
103
|
+
},
|
104
|
+
}
|
105
|
+
|
106
|
+
col_specs.update(self._get_vat_settlement_date_col_spec())
|
107
|
+
wanted = col_specs.keys()
|
108
|
+
if registry_type == "corrispettivi":
|
109
|
+
wanted -= ["reason", "inv_date", "inv_name", "partner", "tin"]
|
110
|
+
|
111
|
+
return [
|
112
|
+
{
|
113
|
+
"ws_name": "vat_registry",
|
114
|
+
"title": title,
|
115
|
+
"wanted_list": wanted,
|
116
|
+
"col_specs": col_specs,
|
117
|
+
"generate_ws_method": "generate_ws",
|
118
|
+
}
|
119
|
+
]
|
120
|
+
|
121
|
+
def generate_ws(self, workbook, ws, ws_params, data, objects):
|
122
|
+
ws.set_landscape()
|
123
|
+
ws.fit_to_pages(1, 0)
|
124
|
+
ws.set_header(XLS_HEADERS["xls_headers"]["standard"])
|
125
|
+
ws.set_footer(XLS_HEADERS["xls_footers"]["standard"])
|
126
|
+
|
127
|
+
self._set_column_width(ws, ws_params)
|
128
|
+
|
129
|
+
row_pos = 0
|
130
|
+
row_pos = self._write_ws_title(ws, row_pos, ws_params)
|
131
|
+
|
132
|
+
row_pos = self._write_line(
|
133
|
+
ws,
|
134
|
+
row_pos,
|
135
|
+
ws_params,
|
136
|
+
col_specs_section="header",
|
137
|
+
default_format=FORMATS["format_theader_yellow_left"],
|
138
|
+
)
|
139
|
+
|
140
|
+
ws.freeze_panes(row_pos, 0)
|
141
|
+
|
142
|
+
for move in objects:
|
143
|
+
inv_taxes, used_taxes = self._get_tax_lines(move, data["form"])
|
144
|
+
|
145
|
+
for line in inv_taxes:
|
146
|
+
row_pos = self._write_line(
|
147
|
+
ws,
|
148
|
+
row_pos,
|
149
|
+
ws_params,
|
150
|
+
col_specs_section="lines",
|
151
|
+
render_space={
|
152
|
+
"env": self.env,
|
153
|
+
"move": move,
|
154
|
+
"line": line,
|
155
|
+
"format_date": self._format_date,
|
156
|
+
"date_format": data["form"]["date_format"],
|
157
|
+
"formatLang": formatLang,
|
158
|
+
"invoice_total": self._get_move_total,
|
159
|
+
},
|
160
|
+
default_format=FORMATS["format_tcell_left"],
|
161
|
+
)
|
@@ -1,10 +1,11 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: odoo-addon-l10n_it_vat_registries
|
3
|
-
Version: 16.0.1.
|
3
|
+
Version: 16.0.1.4.0
|
4
4
|
Requires-Python: >=3.10
|
5
5
|
Requires-Dist: odoo-addon-account_tax_balance>=16.0dev,<16.1dev
|
6
6
|
Requires-Dist: odoo-addon-date_range>=16.0dev,<16.1dev
|
7
7
|
Requires-Dist: odoo-addon-l10n_it_account>=16.0dev,<16.1dev
|
8
|
+
Requires-Dist: odoo-addon-report_xlsx_helper>=16.0dev,<16.1dev
|
8
9
|
Requires-Dist: odoo>=16.0a,<16.1dev
|
9
10
|
Summary: ITA - Registri IVA
|
10
11
|
Home-page: https://github.com/OCA/l10n-italy
|
@@ -26,7 +27,7 @@ ITA - Registri IVA
|
|
26
27
|
!! This file is generated by oca-gen-addon-readme !!
|
27
28
|
!! changes will be overwritten. !!
|
28
29
|
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
29
|
-
!! source digest: sha256:
|
30
|
+
!! source digest: sha256:d0ea45cf9b52cfe3008aa85d0253415706583df2e25119c599113f829169ee7b
|
30
31
|
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
31
32
|
|
32
33
|
.. |badge1| image:: https://img.shields.io/badge/maturity-Production%2FStable-green.png
|
@@ -1,6 +1,6 @@
|
|
1
|
-
odoo/addons/l10n_it_vat_registries/README.rst,sha256=
|
1
|
+
odoo/addons/l10n_it_vat_registries/README.rst,sha256=bN2FKaEsuDVsHFxZVkUDYdRmnx7i_bMLAjveIqWcxiU,6044
|
2
2
|
odoo/addons/l10n_it_vat_registries/__init__.py,sha256=JqDSCLCkAweuTaARbhG1B8Lkrgg-ZjR4Jbkty4ySwok,107
|
3
|
-
odoo/addons/l10n_it_vat_registries/__manifest__.py,sha256=
|
3
|
+
odoo/addons/l10n_it_vat_registries/__manifest__.py,sha256=GE3-rDQvtqBmxYTI1OkW_d5qsFZFQL_WSuM674H5iW0,1211
|
4
4
|
odoo/addons/l10n_it_vat_registries/i18n/am.po,sha256=WSOaUM9dqbuAtMfVaIZobLtQGt7A34XNRDAHh2GEmGI,13362
|
5
5
|
odoo/addons/l10n_it_vat_registries/i18n/ar.po,sha256=xtcNUJQqSCS9IYb1So6yekqrPHJItYXHc1nVlp_15no,13520
|
6
6
|
odoo/addons/l10n_it_vat_registries/i18n/bg.po,sha256=6Bc3CcemvSoutcf9vYiBojgLTEjMGZBjC9hrkp56gHw,13494
|
@@ -44,7 +44,7 @@ odoo/addons/l10n_it_vat_registries/i18n/id.po,sha256=ZBRhDOsjcVHXZF-1bf0N0k3jHpd
|
|
44
44
|
odoo/addons/l10n_it_vat_registries/i18n/it.po,sha256=hIyao3Chaht0tw6RcW1MXzMdqjKkWrFPK822Xdr2Z3E,15685
|
45
45
|
odoo/addons/l10n_it_vat_registries/i18n/ja.po,sha256=RCldAxXo9zvNlFZt_ZSzw5SLoGr2fgfXcL3TtpHZuk8,13372
|
46
46
|
odoo/addons/l10n_it_vat_registries/i18n/ko.po,sha256=-kbVO3RITQRxD98U3GhVrECJjOb-uKgJxHhBdjGOMDU,13373
|
47
|
-
odoo/addons/l10n_it_vat_registries/i18n/l10n_it_vat_registries.pot,sha256=
|
47
|
+
odoo/addons/l10n_it_vat_registries/i18n/l10n_it_vat_registries.pot,sha256=i924DegGbppjrZvH97eP7cDLzJvRkpXsrao3cnp1cAE,14812
|
48
48
|
odoo/addons/l10n_it_vat_registries/i18n/lo.po,sha256=fkmL0691B7LHKA3RYGtfPVN6qyXI4P-0pCQQagVHswA,13296
|
49
49
|
odoo/addons/l10n_it_vat_registries/i18n/lt.po,sha256=wWHbtTdJu5lBJyYIpQCCkdVb-DhKLwyoBZJa_SV6QYA,13487
|
50
50
|
odoo/addons/l10n_it_vat_registries/i18n/lt_LT.po,sha256=zeMkSjKtcUBqktAywwHGBPVRrtEXsJzd8gFMNnErJMs,13449
|
@@ -84,20 +84,21 @@ odoo/addons/l10n_it_vat_registries/readme/CREDITS.md,sha256=adgy2b0E705AYaKihyQS
|
|
84
84
|
odoo/addons/l10n_it_vat_registries/readme/DESCRIPTION.md,sha256=wtW9ElobuDdencAdgRd6QzLDx1C5eeDzQOnDOLK-C4Q,96
|
85
85
|
odoo/addons/l10n_it_vat_registries/readme/USAGE.md,sha256=DtBGHIk1gM695eu4_SwWqSeIyuX1mf4M5kArnojCkpY,792
|
86
86
|
odoo/addons/l10n_it_vat_registries/report/report_registro_iva.xml,sha256=IKPPOt2ORvIz6ecjpShZkVII4bowMEEFvRYvTZN-i68,19785
|
87
|
-
odoo/addons/l10n_it_vat_registries/report/reports.xml,sha256=
|
87
|
+
odoo/addons/l10n_it_vat_registries/report/reports.xml,sha256=PvUnJig1ovVTWakXlCNV0olE4O_bsjvNchJP7I-04iw,1059
|
88
88
|
odoo/addons/l10n_it_vat_registries/security/ir.model.access.csv,sha256=60vgVGdBp4z_DW3k8g10Xsqn_lC3ISmsXRS8yFMIVSw,651
|
89
89
|
odoo/addons/l10n_it_vat_registries/security/vat_registry_security.xml,sha256=Pv8n9zR3hlhuZcl2IgL76OuS8c1Q090zzB1TrpXHCMs,441
|
90
90
|
odoo/addons/l10n_it_vat_registries/static/description/icon.png,sha256=xbRU_cSM3yeaxH2HArBlJ9csFUu0GYQitvLydbJnpAM,6167
|
91
|
-
odoo/addons/l10n_it_vat_registries/static/description/index.html,sha256=
|
91
|
+
odoo/addons/l10n_it_vat_registries/static/description/index.html,sha256=U6th_Oo52UMd3MQ3ozkyEZxxJFgHgEgb8jHi0l75DjY,16687
|
92
92
|
odoo/addons/l10n_it_vat_registries/tests/__init__.py,sha256=dZJwSFx0LQvIqMT8R2Pw_Z0kaW0spztW5C03jAy5bPY,93
|
93
|
-
odoo/addons/l10n_it_vat_registries/tests/test_registry.py,sha256=
|
93
|
+
odoo/addons/l10n_it_vat_registries/tests/test_registry.py,sha256=JRJXzMcWjEKTPhNskNkl4uWAz60QF9hqgr0FX44sMY4,4233
|
94
94
|
odoo/addons/l10n_it_vat_registries/views/account_journal_view.xml,sha256=TQwBBKqaIb-8mzfD4fBtaRGCVyqZZT5lTiltFrekZEI,493
|
95
95
|
odoo/addons/l10n_it_vat_registries/views/account_tax_registry_view.xml,sha256=iXC4sFLvbX_SwmprHLjP_MyTsxXdKQeAhh2Mx_Xddoc,1377
|
96
96
|
odoo/addons/l10n_it_vat_registries/views/account_view.xml,sha256=AHJosvsC4zr9CU8JKcPJr7crLsDPjBTlyAwUVWrrdyA,470
|
97
|
-
odoo/addons/l10n_it_vat_registries/wizard/__init__.py,sha256=
|
98
|
-
odoo/addons/l10n_it_vat_registries/wizard/print_registro_iva.py,sha256=
|
99
|
-
odoo/addons/l10n_it_vat_registries/wizard/print_registro_iva.xml,sha256=
|
100
|
-
|
101
|
-
odoo_addon_l10n_it_vat_registries-16.0.1.
|
102
|
-
odoo_addon_l10n_it_vat_registries-16.0.1.
|
103
|
-
odoo_addon_l10n_it_vat_registries-16.0.1.
|
97
|
+
odoo/addons/l10n_it_vat_registries/wizard/__init__.py,sha256=mGqx5yofct5XGCZHYycLIyem9PVQYnLqcByZZgGQ8a0,137
|
98
|
+
odoo/addons/l10n_it_vat_registries/wizard/print_registro_iva.py,sha256=OqZ6R-37D3Ycc3EEMzj08CDZzk0I74TS55q4ameRlP8,4956
|
99
|
+
odoo/addons/l10n_it_vat_registries/wizard/print_registro_iva.xml,sha256=7Xd9r4BS9kUTuuMOJ-TSGtk7R7lvIY7su20hwr5J9jc,3121
|
100
|
+
odoo/addons/l10n_it_vat_registries/wizard/report_registro_iva_xlsx.py,sha256=Z5kJMyiwpNUiuOUZCaEFxxtSTKqPxIPfw95QzT6N0g4,5479
|
101
|
+
odoo_addon_l10n_it_vat_registries-16.0.1.4.0.dist-info/METADATA,sha256=crguvF06U5nG9B8Wz7e-xuB1ays0PohSqtW_etl6j7Q,6877
|
102
|
+
odoo_addon_l10n_it_vat_registries-16.0.1.4.0.dist-info/WHEEL,sha256=9fEMia4zL7ZuZbnCOrcYogUhmn4XFIVaJ8G4YGI31xc,81
|
103
|
+
odoo_addon_l10n_it_vat_registries-16.0.1.4.0.dist-info/top_level.txt,sha256=QE6RBQ0QX5f4eFuUcGgU5Kbq1A_qJcDs-e_vpr6pmfU,4
|
104
|
+
odoo_addon_l10n_it_vat_registries-16.0.1.4.0.dist-info/RECORD,,
|
File without changes
|