odoo-addon-l10n-es-vat-book 16.0.2.0.2__py3-none-any.whl → 16.0.2.1.0.1__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-l10n-es-vat-book might be problematic. Click here for more details.

Files changed (38) hide show
  1. odoo/addons/l10n_es_vat_book/README.rst +11 -7
  2. odoo/addons/l10n_es_vat_book/__manifest__.py +3 -2
  3. odoo/addons/l10n_es_vat_book/data/aeat_vat_book_map_data.xml +88 -8
  4. odoo/addons/l10n_es_vat_book/i18n/bg.po +16 -1
  5. odoo/addons/l10n_es_vat_book/i18n/ca.po +20 -2
  6. odoo/addons/l10n_es_vat_book/i18n/cs.po +16 -1
  7. odoo/addons/l10n_es_vat_book/i18n/de.po +16 -1
  8. odoo/addons/l10n_es_vat_book/i18n/es.po +20 -2
  9. odoo/addons/l10n_es_vat_book/i18n/es_CO.po +16 -1
  10. odoo/addons/l10n_es_vat_book/i18n/es_CR.po +18 -3
  11. odoo/addons/l10n_es_vat_book/i18n/eu.po +16 -1
  12. odoo/addons/l10n_es_vat_book/i18n/fr.po +16 -1
  13. odoo/addons/l10n_es_vat_book/i18n/gl.po +16 -1
  14. odoo/addons/l10n_es_vat_book/i18n/hr.po +16 -1
  15. odoo/addons/l10n_es_vat_book/i18n/l10n_es_vat_book.pot +16 -1
  16. odoo/addons/l10n_es_vat_book/i18n/nl.po +16 -1
  17. odoo/addons/l10n_es_vat_book/i18n/pl.po +16 -1
  18. odoo/addons/l10n_es_vat_book/i18n/pt.po +16 -1
  19. odoo/addons/l10n_es_vat_book/i18n/pt_BR.po +18 -3
  20. odoo/addons/l10n_es_vat_book/i18n/ru.po +16 -1
  21. odoo/addons/l10n_es_vat_book/i18n/sl.po +16 -1
  22. odoo/addons/l10n_es_vat_book/i18n/sv.po +16 -1
  23. odoo/addons/l10n_es_vat_book/i18n/tr.po +16 -1
  24. odoo/addons/l10n_es_vat_book/i18n/vi.po +16 -1
  25. odoo/addons/l10n_es_vat_book/models/l10n_es_vat_book.py +5 -0
  26. odoo/addons/l10n_es_vat_book/models/l10n_es_vat_book_line.py +10 -0
  27. odoo/addons/l10n_es_vat_book/readme/CONTRIBUTORS.rst +1 -0
  28. odoo/addons/l10n_es_vat_book/readme/DESCRIPTION.rst +3 -3
  29. odoo/addons/l10n_es_vat_book/readme/ROADMAP.rst +3 -0
  30. odoo/addons/l10n_es_vat_book/report/vat_book_xlsx.py +206 -117
  31. odoo/addons/l10n_es_vat_book/static/description/index.html +10 -6
  32. odoo/addons/l10n_es_vat_book/tests/test_l10n_es_aeat_vat_book.py +6 -1
  33. odoo/addons/l10n_es_vat_book/views/l10n_es_vat_book.xml +4 -1
  34. {odoo_addon_l10n_es_vat_book-16.0.2.0.2.dist-info → odoo_addon_l10n_es_vat_book-16.0.2.1.0.1.dist-info}/METADATA +13 -9
  35. odoo_addon_l10n_es_vat_book-16.0.2.1.0.1.dist-info/RECORD +61 -0
  36. odoo_addon_l10n_es_vat_book-16.0.2.0.2.dist-info/RECORD +0 -61
  37. {odoo_addon_l10n_es_vat_book-16.0.2.0.2.dist-info → odoo_addon_l10n_es_vat_book-16.0.2.1.0.1.dist-info}/WHEEL +0 -0
  38. {odoo_addon_l10n_es_vat_book-16.0.2.0.2.dist-info → odoo_addon_l10n_es_vat_book-16.0.2.1.0.1.dist-info}/top_level.txt +0 -0
@@ -1,4 +1,5 @@
1
1
  # Copyright 2019 Tecnativa - Carlos Dauden
2
+ # Copyright 2026 Tecnativa - Eduardo Ezerouali
2
3
  # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).
3
4
 
4
5
  from odoo import fields, models
@@ -62,37 +63,49 @@ class VatNumberXlsx(models.AbstractModel):
62
63
  sheet.write("A3", "NIF: %s" % book.company_vat)
63
64
  sheet.merge_range("A4:D4", "NOMBRE/RAZÓN SOCIAL: %s" % book.company_id.name)
64
65
 
65
- sheet.merge_range("C6:E6", "Identificación de la Factura", header_format)
66
- sheet.merge_range("F6:H6", "NIF Destinatario", header_format)
66
+ sheet.merge_range("A6:B6", "Autoliquidación", header_format)
67
+ sheet.merge_range("C6:E6", "Actividad", header_format)
68
+ sheet.merge_range("K6:M6", "Identificación de la Factura", header_format)
69
+ sheet.merge_range("N6:P6", "NIF Destinatario", header_format)
67
70
 
68
- sheet.merge_range("A6:A7", "Fecha Expedición", header_format)
69
- sheet.merge_range("B6:B7", "Fecha Operación", header_format)
70
- sheet.write("C7", "Serie", subheader_format)
71
- sheet.write("D7", "Número", subheader_format)
72
- sheet.write("E7", "Número-Final", subheader_format)
73
- sheet.write("F7", "Tipo", subheader_format)
74
- sheet.write("G7", "Código País", subheader_format)
75
- sheet.write("H7", "Identificación", subheader_format)
76
- sheet.merge_range("I6:I7", "Nombre Destinatario", header_format)
77
- sheet.merge_range("J6:J7", "Factura Sustitutiva", header_format)
78
- sheet.merge_range("K6:K7", "Clave de Operación", header_format)
79
- sheet.merge_range("L6:L7", "Total Factura", header_format)
80
- sheet.merge_range("M6:M7", "Base Imponible", header_format)
81
- sheet.merge_range("N6:N7", "Tipo de IVA", header_format)
82
- sheet.merge_range("O6:O7", "Cuota IVA Repercutida", header_format)
83
- last_col = "O"
71
+ sheet.write("A7", "Ejercicio", subheader_format)
72
+ sheet.write("B7", "Periodo", subheader_format)
73
+ sheet.write("C7", "Código", subheader_format)
74
+ sheet.write("D7", "Tipo", subheader_format)
75
+ sheet.write("E7", "Grupo o Epígrafe del IAE", subheader_format)
76
+ sheet.merge_range("F6:F7", "Tipo de factura", header_format)
77
+ sheet.merge_range("G6:G7", "Concepto de Ingreso", header_format)
78
+ sheet.merge_range("H6:H7", "Ingreso Computable", header_format)
79
+ sheet.merge_range("I6:I7", "Fecha Expedición", header_format)
80
+ sheet.merge_range("J6:J7", "Fecha Operación", header_format)
81
+ sheet.write("K7", "Serie", subheader_format)
82
+ sheet.write("L7", "Número", subheader_format)
83
+ sheet.write("M7", "Número-Final", subheader_format)
84
+ sheet.write("N7", "Tipo", subheader_format)
85
+ sheet.write("O7", "Código País", subheader_format)
86
+ sheet.write("P7", "Identificación", subheader_format)
87
+ sheet.merge_range("Q6:Q7", "Nombre Destinatario", header_format)
88
+ sheet.merge_range("R6:R7", "Clave de Operación", header_format)
89
+ sheet.merge_range("S6:S7", "Calificación de la operación", header_format)
90
+ sheet.merge_range("T6:T7", "Operación Exenta", header_format)
91
+ sheet.merge_range("U6:U7", "Total Factura", header_format)
92
+ sheet.merge_range("V6:V7", "Base Imponible", header_format)
93
+ sheet.merge_range("W6:W7", "Tipo de IVA", header_format)
94
+ sheet.merge_range("X6:X7", "Cuota IVA Repercutida", header_format)
95
+ last_col = "X"
84
96
  for line in self._get_vat_book_map_lines("issued"):
85
- sheet.merge_range(
86
- "{0}6:{0}7".format(line.fee_type_xlsx_column),
87
- "Tipo de {}".format(line.name),
88
- header_format,
89
- )
90
- sheet.merge_range(
91
- "{0}6:{0}7".format(line.fee_amount_xlsx_column),
92
- "Cuota {}".format(line.name),
93
- header_format,
94
- )
95
- last_col = line.fee_amount_xlsx_column
97
+ if line.special_tax_group != "irpf":
98
+ sheet.merge_range(
99
+ "{0}6:{0}7".format(line.fee_type_xlsx_column),
100
+ "Tipo de {}".format(line.name),
101
+ header_format,
102
+ )
103
+ sheet.merge_range(
104
+ "{0}6:{0}7".format(line.fee_amount_xlsx_column),
105
+ "Cuota {}".format(line.name),
106
+ header_format,
107
+ )
108
+ last_col = line.fee_amount_xlsx_column
96
109
  next_col = excel_col_number(last_col) + 1
97
110
  # Las filas empiezan por 0, por eso se resta 1
98
111
  sheet.merge_range(
@@ -110,18 +123,37 @@ class VatNumberXlsx(models.AbstractModel):
110
123
  sheet.write(6, next_col, "Medio Utilizado", subheader_format)
111
124
  next_col += 1
112
125
  sheet.write(6, next_col, "Identificación Medio Utilizado", subheader_format)
126
+ next_col += 1
127
+ sheet.merge_range(
128
+ 5,
129
+ next_col,
130
+ 6,
131
+ next_col,
132
+ "Tipo de Retención del IRPF",
133
+ header_format,
134
+ )
135
+ next_col += 1
136
+ sheet.merge_range(
137
+ 5,
138
+ next_col,
139
+ 6,
140
+ next_col,
141
+ "Importe Retenido del IRPF",
142
+ header_format,
143
+ )
113
144
 
114
- sheet.set_column("A:B", 16, date_format)
115
- sheet.set_column("C:C", 14)
116
- sheet.set_column("D:D", 17)
117
- sheet.set_column("E:E", 17)
118
- sheet.set_column("F:F", 8)
119
- sheet.set_column("G:G", 12)
120
- sheet.set_column("H:H", 14)
121
- sheet.set_column("I:I", 40)
122
- sheet.set_column("J:J", 16)
123
- sheet.set_column("K:K", 16)
124
- sheet.set_column("L:Q", 14, decimal_format)
145
+ sheet.set_column("A:G", 14)
146
+ sheet.set_column("H:H", 16, decimal_format)
147
+ sheet.set_column("I:J", 16, date_format)
148
+ sheet.set_column("K:K", 14)
149
+ sheet.set_column("L:L", 17)
150
+ sheet.set_column("M:M", 17)
151
+ sheet.set_column("N:N", 8)
152
+ sheet.set_column("O:O", 12)
153
+ sheet.set_column("P:P", 14)
154
+ sheet.set_column("Q:Q", 40)
155
+ sheet.set_column("R:T", 16)
156
+ sheet.set_column("U:Z", 14, decimal_format)
125
157
 
126
158
  next_col = excel_col_number(last_col) + 1
127
159
  sheet.set_column(next_col, next_col, 14, date_format)
@@ -131,6 +163,11 @@ class VatNumberXlsx(models.AbstractModel):
131
163
  sheet.set_column(next_col, next_col, 14)
132
164
  next_col += 1
133
165
  sheet.set_column(next_col, next_col, 30)
166
+ next_col += 1
167
+ sheet.set_column(next_col, next_col, 16)
168
+ next_col += 1
169
+ sheet.set_column(next_col, next_col, 16)
170
+
134
171
  if draft_export:
135
172
  next_col += 1
136
173
  sheet.write(5, next_col, "Impuesto (Solo borrador)")
@@ -149,30 +186,29 @@ class VatNumberXlsx(models.AbstractModel):
149
186
  country_code, identifier_type, vat_number = (
150
187
  line.partner_id and line.partner_id._parse_aeat_vat_info() or ("ES", "", "")
151
188
  )
152
- sheet.write("A" + str(row), self.format_boe_date(line.invoice_date))
153
- # sheet.write('B' + str(row), self.format_boe_date(line.invoice_date))
154
- sheet.write("C" + str(row), line.ref[:-20])
155
- sheet.write("D" + str(row), line.ref[-20:])
156
- sheet.write("E" + str(row), "") # Final number
157
- sheet.write("F" + str(row), identifier_type)
189
+ sheet.write("A" + str(row), str(line.vat_book_id.year))
190
+ sheet.write("B" + str(row), str(line.vat_book_id.period_type))
191
+ sheet.write("I" + str(row), self.format_boe_date(line.invoice_date))
192
+ # sheet.write('J' + str(row), self.format_boe_date(line.invoice_date))
193
+ sheet.write("K" + str(row), line.ref[:-20])
194
+ sheet.write("L" + str(row), line.ref[-20:])
195
+ sheet.write("M" + str(row), "") # Final number
196
+ sheet.write("N" + str(row), identifier_type)
158
197
  if country_code != "ES":
159
- sheet.write("G" + str(row), country_code)
160
- sheet.write("H" + str(row), vat_number)
198
+ sheet.write("O" + str(row), country_code)
199
+ sheet.write("P" + str(row), vat_number)
161
200
  if not vat_number and (
162
201
  line.partner_id.aeat_anonymous_cash_customer or not line.partner_id
163
202
  ):
164
- sheet.write("I" + str(row), "Venta anónima")
203
+ sheet.write("Q" + str(row), "Venta anónima")
165
204
  else:
166
- sheet.write("I" + str(row), (line.partner_id.name or "")[:40])
167
- # TODO: Substitute Invoice
168
- # sheet.write('J' + str(row),
169
- # line.invoice_id.refund_invoice_id.number or '')
170
- sheet.write("K" + str(row), "") # Operation Key
205
+ sheet.write("Q" + str(row), (line.partner_id.name or "")[:40])
206
+ sheet.write("R" + str(row), "") # Operation Key
171
207
  if with_total:
172
- sheet.write("L" + str(row), line.total_amount)
173
- sheet.write("M" + str(row), tax_line.base_amount)
174
- sheet.write("N" + str(row), tax_line.tax_id.amount)
175
- sheet.write("O" + str(row), tax_line.tax_amount)
208
+ sheet.write("U" + str(row), line.total_amount)
209
+ sheet.write("V" + str(row), tax_line.base_amount)
210
+ sheet.write("W" + str(row), tax_line.tax_id.amount)
211
+ sheet.write("X" + str(row), tax_line.tax_amount)
176
212
  if tax_line.special_tax_id:
177
213
  map_vals = line.vat_book_id.get_special_taxes_dic()[
178
214
  tax_line.special_tax_id.id
@@ -216,41 +252,58 @@ class VatNumberXlsx(models.AbstractModel):
216
252
  sheet.write("A3", "NIF: %s" % book.company_vat)
217
253
  sheet.merge_range("A4:D4", "NOMBRE/RAZÓN SOCIAL: %s" % book.company_id.name)
218
254
 
255
+ sheet.merge_range("A6:B6", "Autoliquidación", header_format)
256
+ sheet.merge_range("C6:E6", "Actividad", header_format)
219
257
  sheet.merge_range(
220
- "C6:D6", "Identificación Factura del Expedidor", header_format
258
+ "K6:L6", "Identificación Factura del Expedidor", header_format
221
259
  )
222
- sheet.merge_range("G6:I6", "NIF Expedidor", header_format)
260
+ sheet.merge_range("P6:R6", "NIF Expedidor", header_format)
261
+ sheet.merge_range("X6:Y6", "Periodo Deducción", header_format)
223
262
 
224
- sheet.merge_range("A6:A7", "Fecha Expedición", header_format)
225
- sheet.merge_range("B6:B7", "Fecha Operación", header_format)
226
- sheet.write("C7", "(Serie-Número)", subheader_format)
227
- sheet.write("D7", "Número-Final", subheader_format)
228
- sheet.merge_range("E6:E7", "Número Recepción", header_format)
229
- sheet.merge_range("F6:F7", "Número Recepción Final", header_format)
230
- sheet.write("G7", "Tipo", subheader_format)
231
- sheet.write("H7", "Código País", subheader_format)
232
- sheet.write("I7", "Identificación", subheader_format)
233
- sheet.merge_range("J6:J7", "Nombre Expedidor", header_format)
234
- sheet.merge_range("K6:K7", "Factura Sustitutiva", header_format)
235
- sheet.merge_range("L6:L7", "Clave de Operación", header_format)
236
- sheet.merge_range("M6:M7", "Total Factura", header_format)
237
- sheet.merge_range("N6:N7", "Base Imponible", header_format)
238
- sheet.merge_range("O6:O7", "Tipo de IVA", header_format)
239
- sheet.merge_range("P6:P7", "Cuota IVA Soportado", header_format)
240
- sheet.merge_range("Q6:Q7", "Cuota Deducible", header_format)
241
- last_col = "Q"
263
+ sheet.write("A7", "Ejercicio", subheader_format)
264
+ sheet.write("B7", "Periodo", subheader_format)
265
+ sheet.write("C7", "Código", subheader_format)
266
+ sheet.write("D7", "Tipo", subheader_format)
267
+ sheet.write("E7", "Grupo o Epígrafe del IAE", subheader_format)
268
+ sheet.merge_range("F6:F7", "Tipo de factura", header_format)
269
+ sheet.merge_range("G6:G7", "Concepto de Gasto", header_format)
270
+ sheet.merge_range("H6:H7", "Gasto Deducible", header_format)
271
+ sheet.merge_range("I6:I7", "Fecha Expedición", header_format)
272
+ sheet.merge_range("J6:J7", "Fecha Operación", header_format)
273
+ sheet.write("K7", "(Serie-Número)", subheader_format)
274
+ sheet.write("L7", "Número-Final", subheader_format)
275
+ sheet.merge_range("M6:M7", "Fecha Recepción", header_format)
276
+ sheet.merge_range("N6:N7", "Número Recepción", header_format)
277
+ sheet.merge_range("O6:O7", "Número Recepción Final", header_format)
278
+ sheet.write("P7", "Tipo", subheader_format)
279
+ sheet.write("Q7", "Código País", subheader_format)
280
+ sheet.write("R7", "Identificación", subheader_format)
281
+ sheet.merge_range("S6:S7", "Nombre Expedidor", header_format)
282
+ sheet.merge_range("T6:T7", "Clave de Operación", header_format)
283
+ sheet.merge_range("U6:U7", "Bien de Inversión", header_format)
284
+ sheet.merge_range("V6:V7", "Inversión del Sujeto Pasivo", header_format)
285
+ sheet.merge_range("W6:W7", "Deducible en Periodo Posterior", header_format)
286
+ sheet.write("X7", "Ejercicio", header_format)
287
+ sheet.write("Y7", "Periodo", header_format)
288
+ sheet.merge_range("Z6:Z7", "Total Factura", header_format)
289
+ sheet.merge_range("AA6:AA7", "Base Imponible", header_format)
290
+ sheet.merge_range("AB6:AB7", "Tipo de IVA", header_format)
291
+ sheet.merge_range("AC6:AC7", "Cuota IVA Soportado", header_format)
292
+ sheet.merge_range("AD6:AD7", "Cuota Deducible", header_format)
293
+ last_col = "AD"
242
294
  for line in self._get_vat_book_map_lines("received"):
243
- sheet.merge_range(
244
- "{0}6:{0}7".format(line.fee_type_xlsx_column),
245
- "Tipo de {}".format(line.name),
246
- header_format,
247
- )
248
- sheet.merge_range(
249
- "{0}6:{0}7".format(line.fee_amount_xlsx_column),
250
- "Cuota {}".format(line.name),
251
- header_format,
252
- )
253
- last_col = line.fee_amount_xlsx_column
295
+ if line.special_tax_group != "irpf":
296
+ sheet.merge_range(
297
+ "{0}6:{0}7".format(line.fee_type_xlsx_column),
298
+ "Tipo de {}".format(line.name),
299
+ header_format,
300
+ )
301
+ sheet.merge_range(
302
+ "{0}6:{0}7".format(line.fee_amount_xlsx_column),
303
+ "Cuota {}".format(line.name),
304
+ header_format,
305
+ )
306
+ last_col = line.fee_amount_xlsx_column
254
307
  next_col = excel_col_number(last_col) + 1
255
308
  # Las filas empiezan por 0, por eso se resta 1
256
309
  sheet.merge_range(
@@ -268,16 +321,44 @@ class VatNumberXlsx(models.AbstractModel):
268
321
  sheet.write(6, next_col, "Medio Utilizado", subheader_format)
269
322
  next_col += 1
270
323
  sheet.write(6, next_col, "Identificación Medio Utilizado", subheader_format)
324
+ next_col += 1
325
+ sheet.merge_range(
326
+ 5,
327
+ next_col,
328
+ 6,
329
+ next_col,
330
+ "Tipo de Retención del IRPF",
331
+ header_format,
332
+ )
333
+ next_col += 1
334
+ sheet.merge_range(
335
+ 5,
336
+ next_col,
337
+ 6,
338
+ next_col,
339
+ "Importe Retenido del IRPF",
340
+ header_format,
341
+ )
342
+ next_col += 1
343
+ sheet.merge_range(
344
+ 5,
345
+ next_col,
346
+ 6,
347
+ next_col,
348
+ "Registro Acuerdo Facturación",
349
+ header_format,
350
+ )
271
351
 
272
- sheet.set_column("A:B", 16, date_format)
273
- sheet.set_column("C:F", 17)
274
- sheet.set_column("G:G", 8)
275
- sheet.set_column("H:H", 12)
276
- sheet.set_column("I:I", 14)
277
- sheet.set_column("J:J", 40)
278
- sheet.set_column("K:K", 16)
279
- sheet.set_column("L:L", 14)
280
- sheet.set_column("M:S", 14, decimal_format)
352
+ sheet.set_column("A:G", 14)
353
+ sheet.set_column("H:H", 16, decimal_format)
354
+ sheet.set_column("I:J", 16, date_format)
355
+ sheet.set_column("K:O", 17)
356
+ sheet.set_column("P:P", 8)
357
+ sheet.set_column("Q:Q", 12)
358
+ sheet.set_column("R:R", 14)
359
+ sheet.set_column("S:S", 40)
360
+ sheet.set_column("T:Y", 16)
361
+ sheet.set_column("Z:AF", 14, decimal_format)
281
362
  next_col = excel_col_number(last_col) + 1
282
363
  sheet.set_column(next_col, next_col, 14, date_format)
283
364
  next_col += 1
@@ -286,6 +367,13 @@ class VatNumberXlsx(models.AbstractModel):
286
367
  sheet.set_column(next_col, next_col, 14)
287
368
  next_col += 1
288
369
  sheet.set_column(next_col, next_col, 30)
370
+ next_col += 1
371
+ sheet.set_column(next_col, next_col, 14, decimal_format)
372
+ next_col += 1
373
+ sheet.set_column(next_col, next_col, 14, decimal_format)
374
+ next_col += 1
375
+ sheet.set_column(next_col, next_col, 16)
376
+
289
377
  if draft_export:
290
378
  next_col += 1
291
379
  sheet.write(5, next_col, "Impuesto (Solo borrador)")
@@ -305,29 +393,30 @@ class VatNumberXlsx(models.AbstractModel):
305
393
  country_code, identifier_type, vat_number = (
306
394
  line.partner_id and line.partner_id._parse_aeat_vat_info() or ("ES", "", "")
307
395
  )
308
- sheet.write("A" + str(row), self.format_boe_date(line.invoice_date))
396
+ sheet.write("A" + str(row), str(line.vat_book_id.year))
397
+ sheet.write("B" + str(row), str(line.vat_book_id.period_type))
398
+ sheet.write("I" + str(row), self.format_boe_date(line.invoice_date))
309
399
  if date_invoice and date_invoice != line.invoice_date:
310
- sheet.write("B" + str(row), self.format_boe_date(date_invoice))
311
- sheet.write("C" + str(row), (line.external_ref or "")[:40])
312
- sheet.write("D" + str(row), "")
313
- sheet.write("E" + str(row), line.ref[:20])
314
- sheet.write("F" + str(row), "")
315
- sheet.write("G" + str(row), identifier_type)
400
+ sheet.write("J" + str(row), self.format_boe_date(date_invoice))
401
+ sheet.write("K" + str(row), (line.external_ref or "")[:40])
402
+ sheet.write("L" + str(row), "")
403
+ sheet.write("N" + str(row), line.ref[:20])
404
+ sheet.write("O" + str(row), "")
405
+ sheet.write("P" + str(row), identifier_type)
316
406
  if country_code != "ES":
317
- sheet.write("H" + str(row), country_code)
318
- sheet.write("I" + str(row), vat_number)
319
- sheet.write("J" + str(row), (line.partner_id.name or "")[:40])
320
- # TODO: Substitute Invoice
321
- # sheet.write('K' + str(row),
322
- # line.invoice_id.refund_invoice_id.number or '')
323
- sheet.write("L" + str(row), "") # Operation Key
407
+ sheet.write("Q" + str(row), country_code)
408
+ sheet.write("R" + str(row), vat_number)
409
+ sheet.write("S" + str(row), (line.partner_id.name or "")[:40])
410
+ sheet.write("T" + str(row), "") # Operation Key
411
+ sheet.write("X" + str(row), line.move_id.date.year)
412
+ sheet.write("Y" + str(row), line._get_settlement_period())
324
413
  if with_total:
325
- sheet.write("M" + str(row), line.total_amount)
326
- sheet.write("N" + str(row), tax_line.base_amount)
327
- sheet.write("O" + str(row), tax_line.tax_id.amount)
328
- sheet.write("P" + str(row), tax_line.tax_amount)
414
+ sheet.write("Z" + str(row), line.total_amount)
415
+ sheet.write("AA" + str(row), tax_line.base_amount)
416
+ sheet.write("AB" + str(row), tax_line.tax_id.amount)
417
+ sheet.write("AC" + str(row), tax_line.tax_amount)
329
418
  if tax_line.tax_id not in self._get_undeductible_taxes(line.vat_book_id):
330
- sheet.write("Q" + str(row), tax_line.deductible_amount)
419
+ sheet.write("AD" + str(row), tax_line.deductible_amount)
331
420
  if tax_line.special_tax_id:
332
421
  map_vals = line.vat_book_id.get_special_taxes_dic()[
333
422
  tax_line.special_tax_id.id
@@ -366,18 +366,18 @@ ul.auto-toc {
366
366
  <a class="reference external image-reference" href="https://odoo-community.org/get-involved?utm_source=readme">
367
367
  <img alt="Odoo Community Association" src="https://odoo-community.org/readme-banner-image" />
368
368
  </a>
369
- <div class="section" id="libro-de-iva">
370
- <h1>Libro de IVA</h1>
369
+ <div class="section" id="libros-registro-del-iva-y-del-irpf">
370
+ <h1>Libros registro del IVA y del IRPF</h1>
371
371
  <!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
372
372
  !! This file is generated by oca-gen-addon-readme !!
373
373
  !! changes will be overwritten. !!
374
374
  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
375
- !! source digest: sha256:287d6585a93fc073370e7d6128261e85e4c4997615f19ce2fdd97cf4fa4163d8
375
+ !! source digest: sha256:c8f8ebdce0bb4bd0ca6a82f3deaca17349e4b5cb15737855e91697344f6b38f2
376
376
  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
377
377
  <p><a class="reference external image-reference" href="https://odoo-community.org/page/development-status"><img alt="Beta" src="https://img.shields.io/badge/maturity-Beta-yellow.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/license-AGPL--3-blue.png" /></a> <a class="reference external image-reference" href="https://github.com/OCA/l10n-spain/tree/16.0/l10n_es_vat_book"><img alt="OCA/l10n-spain" src="https://img.shields.io/badge/github-OCA%2Fl10n--spain-lightgray.png?logo=github" /></a> <a class="reference external image-reference" href="https://translation.odoo-community.org/projects/l10n-spain-16-0/l10n-spain-16-0-l10n_es_vat_book"><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-spain&amp;target_branch=16.0"><img alt="Try me on Runboat" src="https://img.shields.io/badge/runboat-Try%20me-875A7B.png" /></a></p>
378
- <p>Módulo que calcula el libro de IVA español.</p>
379
- <p>Esto módulo introduce el menú “Libro de IVA” en Contabilidad -&gt; Informe -&gt;
380
- Declaraciones AEAT -&gt; Libro de IVA.</p>
378
+ <p>Módulo que calcula los libros de IVA e IRPF español.</p>
379
+ <p>Esto módulo introduce el menú “Libros de IVA y del IRPF” en Contabilidad -&gt; Informe
380
+ -&gt; Declaraciones AEAT.</p>
381
381
  <p>Es posible visualizar e imprimir por separado:</p>
382
382
  <ul class="simple">
383
383
  <li>Libro Registro de Facturas Emitidas</li>
@@ -446,6 +446,9 @@ informado siguiendo lo especificado en el formato BOE.</p>
446
446
  <ul class="simple">
447
447
  <li>Criterio de caja</li>
448
448
  <li>Regímenes especiales de seguros, de agencias de viaje o de bienes usados.</li>
449
+ <li>Clave de operación.</li>
450
+ <li>Deducible en periodo posterior.</li>
451
+ <li>Actividad</li>
449
452
  </ul>
450
453
  </div>
451
454
  <div class="section" id="bug-tracker">
@@ -476,6 +479,7 @@ If you spotted it first, help us to smash it by providing a detailed and welcome
476
479
  <li>Pedro M. Baeza</li>
477
480
  <li>Carlos Dauden</li>
478
481
  <li>Ernesto Tejeda</li>
482
+ <li>Eduardo Ezerouali</li>
479
483
  </ul>
480
484
  </li>
481
485
  <li>Omar Castiñeira &lt;<a class="reference external" href="mailto:omar&#64;comunitea.com">omar&#64;comunitea.com</a>&gt;</li>
@@ -27,6 +27,7 @@ class TestL10nEsAeatVatBookBase(TestL10nEsAeatModBase):
27
27
  "P_REQ05": (270, 1.35),
28
28
  "P_REQ014": (280, 3.92),
29
29
  "P_REQ52": (290, 15.08),
30
+ "P_IRPF19": (1024, 194.56),
30
31
  }
31
32
 
32
33
 
@@ -77,7 +78,7 @@ class TestL10nEsAeatVatBook(TestL10nEsAeatVatBookBase):
77
78
  self.assertEqual(line.base_amount, 0.0)
78
79
  self.assertEqual(line.tax_amount, 0.0)
79
80
  # Check tax summary for received invoices
80
- self.assertEqual(len(vat_book.received_tax_summary_ids), 6)
81
+ self.assertEqual(len(vat_book.received_tax_summary_ids), 7)
81
82
  rec_summaries = sorted(
82
83
  vat_book.received_tax_summary_ids,
83
84
  key=lambda line: line.tax_amount,
@@ -107,6 +108,10 @@ class TestL10nEsAeatVatBook(TestL10nEsAeatVatBookBase):
107
108
  line = rec_summaries[5]
108
109
  self.assertAlmostEqual(line.base_amount, 270)
109
110
  self.assertAlmostEqual(line.tax_amount, 1.35)
111
+ # P_IRPF19 - 19% Impuesto sobre la resta fisica
112
+ line = rec_summaries[6]
113
+ self.assertAlmostEqual(line.base_amount, 1024)
114
+ self.assertAlmostEqual(line.tax_amount, -194.56)
110
115
  # Let's dig into this tax detail for checking the deductible amount
111
116
  tax_line = vat_book.received_line_ids.tax_line_ids.filtered(
112
117
  lambda x: "account_tax_template_p_iva0_nd" in x.tax_id.get_external_id()
@@ -93,6 +93,9 @@
93
93
  </page>
94
94
  </notebook>
95
95
  </xpath>
96
+ <field name="period_type" position="after">
97
+ <field name="vat_settlement_period" />
98
+ </field>
96
99
  </field>
97
100
  </record>
98
101
  <record id="l10n_es_vat_book_action" model="ir.actions.act_window">
@@ -121,7 +124,7 @@
121
124
  id="menu_vat_book_report"
122
125
  parent="l10n_es_aeat.menu_root_aeat"
123
126
  action="l10n_es_vat_book_action"
124
- name="Libro de IVA"
127
+ name="Libros del IVA y del IRPF"
125
128
  />
126
129
  <!-- sequence="340" -->
127
130
  </odoo>
@@ -1,7 +1,7 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: odoo-addon-l10n_es_vat_book
3
- Version: 16.0.2.0.2
4
- Summary: Libro de IVA
3
+ Version: 16.0.2.1.0.1
4
+ Summary: Libros registro del IVA y del IRPF
5
5
  Home-page: https://github.com/OCA/l10n-spain
6
6
  Author: PRAXYA, ForgeFlow, Tecnativa, Odoo Community Association (OCA)
7
7
  Author-email: support@odoo-community.org
@@ -19,16 +19,16 @@ Requires-Dist: odoo<16.1dev,>=16.0a
19
19
  :target: https://odoo-community.org/get-involved?utm_source=readme
20
20
  :alt: Odoo Community Association
21
21
 
22
- ============
23
- Libro de IVA
24
- ============
22
+ ==================================
23
+ Libros registro del IVA y del IRPF
24
+ ==================================
25
25
 
26
26
  ..
27
27
  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
28
28
  !! This file is generated by oca-gen-addon-readme !!
29
29
  !! changes will be overwritten. !!
30
30
  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
31
- !! source digest: sha256:287d6585a93fc073370e7d6128261e85e4c4997615f19ce2fdd97cf4fa4163d8
31
+ !! source digest: sha256:c8f8ebdce0bb4bd0ca6a82f3deaca17349e4b5cb15737855e91697344f6b38f2
32
32
  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
33
33
 
34
34
  .. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
@@ -49,10 +49,10 @@ Libro de IVA
49
49
 
50
50
  |badge1| |badge2| |badge3| |badge4| |badge5|
51
51
 
52
- Módulo que calcula el libro de IVA español.
52
+ Módulo que calcula los libros de IVA e IRPF español.
53
53
 
54
- Esto módulo introduce el menú "Libro de IVA" en Contabilidad -> Informe ->
55
- Declaraciones AEAT -> Libro de IVA.
54
+ Esto módulo introduce el menú "Libros de IVA y del IRPF" en Contabilidad -\> Informe
55
+ -\> Declaraciones AEAT.
56
56
 
57
57
  Es posible visualizar e imprimir por separado:
58
58
 
@@ -117,6 +117,9 @@ Funcionalidades del Libro Registro de IVA no incluídas por el momento:
117
117
 
118
118
  * Criterio de caja
119
119
  * Regímenes especiales de seguros, de agencias de viaje o de bienes usados.
120
+ * Clave de operación.
121
+ * Deducible en periodo posterior.
122
+ * Actividad
120
123
 
121
124
  Bug Tracker
122
125
  ===========
@@ -149,6 +152,7 @@ Contributors
149
152
  * Pedro M. Baeza
150
153
  * Carlos Dauden
151
154
  * Ernesto Tejeda
155
+ * Eduardo Ezerouali
152
156
  * Omar Castiñeira <omar@comunitea.com>
153
157
  * Fernando La Chica <fernandolachica@gmail.com>
154
158
  * Victor Garcia <victor.garcia@kayuulab.com>
@@ -0,0 +1,61 @@
1
+ odoo/addons/l10n_es_vat_book/README.rst,sha256=RqaXC5HdxjAvHlRZ5rl_MWQaBeFXGGKr_apaMu5iT6c,5479
2
+ odoo/addons/l10n_es_vat_book/__init__.py,sha256=RYGen4VvN9c8GXvMfZMuO7ERiyRCUJfuAbgo0aC3DEU,42
3
+ odoo/addons/l10n_es_vat_book/__manifest__.py,sha256=dVZrHmO1ta88TA7hXcMTqloXH9_8TYWKQIWxWmOJYww,1344
4
+ odoo/addons/l10n_es_vat_book/data/aeat_vat_book_map_data.xml,sha256=06OvS4sT8Y2mcN5dP7v_PQxw_jHwJJv1fdSfFdvUNxc,13717
5
+ odoo/addons/l10n_es_vat_book/i18n/bg.po,sha256=IZTrWH7svFlepHFiEbqEmO1R0V6pZ9OuNJ-TbQTifuM,36528
6
+ odoo/addons/l10n_es_vat_book/i18n/ca.po,sha256=jGJh6VYGJMbIsqOH-7xA8If2yeGrKQwbGj2v4_Mbovc,42143
7
+ odoo/addons/l10n_es_vat_book/i18n/cs.po,sha256=6sX6DJ7noxlcDTlbjiqT9Bfr1CEn3E6APwOfcYqsn_c,36446
8
+ odoo/addons/l10n_es_vat_book/i18n/de.po,sha256=FmFyZ7VXa5O5gWs3uD9RDgs5n_Bv9awSCbiJGBlweto,36255
9
+ odoo/addons/l10n_es_vat_book/i18n/es.po,sha256=hdIUuWgaLLUSPCCIXPwpr5BFr1FLuMOeXRTcfYDx7nk,42764
10
+ odoo/addons/l10n_es_vat_book/i18n/es_CO.po,sha256=WiboqQcmRafOf-sQvR6v86mtMjcKvFdbc0kC1cceuLQ,36390
11
+ odoo/addons/l10n_es_vat_book/i18n/es_CR.po,sha256=5NYzEL8ZBAJfeE5lWD9yMVgo1qmCvxb2lEGjeYAE0zg,36419
12
+ odoo/addons/l10n_es_vat_book/i18n/eu.po,sha256=Wh17zbLmrAGi7bg45iUD_rd1G6MfOiCWyKakqQ0KOJM,36402
13
+ odoo/addons/l10n_es_vat_book/i18n/fr.po,sha256=x9b0LKNrNIwnOTYDqwRiU4sv39tPVIgNG4foVetShGY,36432
14
+ odoo/addons/l10n_es_vat_book/i18n/gl.po,sha256=KnE8EloSECAp4dYy09JSXGAV0yOCP8D03obYZ_0KTrQ,36495
15
+ odoo/addons/l10n_es_vat_book/i18n/hr.po,sha256=p5bUra79dAyuWt32jzvUioAp4ZkErtEGQEesRi03XpA,36478
16
+ odoo/addons/l10n_es_vat_book/i18n/l10n_es_vat_book.pot,sha256=J3Gu3f1dcdS_favKJytQkoQCT4BgZp2vxBPfLJVCTX8,35985
17
+ odoo/addons/l10n_es_vat_book/i18n/nl.po,sha256=7pJ8o3f18Ec4nxsZDUCEcmQ0fYTF4Tolk-Dty1iNDBY,36430
18
+ odoo/addons/l10n_es_vat_book/i18n/pl.po,sha256=550tDpgFdbVfYQNZkfO7SXPeQdA7ljrRUMklILvwhgo,36586
19
+ odoo/addons/l10n_es_vat_book/i18n/pt.po,sha256=F3r62x27fTkfj3GcbeCTCXVuPdLs3CfLlKOsRfshWHA,36443
20
+ odoo/addons/l10n_es_vat_book/i18n/pt_BR.po,sha256=TB4ZDaOsb6R8zXz6V2BAT2tCHcJEz-PcE0vh8yvFfM4,36470
21
+ odoo/addons/l10n_es_vat_book/i18n/ru.po,sha256=uqlJ5Qr4YYAeYiJTpFNEOucQn8pufRmANGNDdZeTOPs,36588
22
+ odoo/addons/l10n_es_vat_book/i18n/sl.po,sha256=2KvNbgiBGcFuLb3g5ext4BzM38OP3emhmZ9YzjBWmpo,36494
23
+ odoo/addons/l10n_es_vat_book/i18n/sv.po,sha256=hqzveuCsqRpLR6qVw1NxNQ8euKi4-bMmvmcFXTmfUBs,36410
24
+ odoo/addons/l10n_es_vat_book/i18n/tr.po,sha256=fbYkYIjhLB2Y8j6Updfbwz_Eo_77C_h0vUleGoi6Jcs,36411
25
+ odoo/addons/l10n_es_vat_book/i18n/vi.po,sha256=QCT_8qQ-ppfP0hNOMfSPur10soQ1Y71-a8zdFZ-nP54,36409
26
+ odoo/addons/l10n_es_vat_book/migrations/16.0.2.0.0/post-migration.py,sha256=QRoxJbbiygJ1P0Q3QVlzP6ZeVMxQfcUIf5BnpRqwJng,283
27
+ odoo/addons/l10n_es_vat_book/models/__init__.py,sha256=V0ONDc9wKn8JF0Soh2NCORHEAQ7EcOn16SNkxjA50WU,226
28
+ odoo/addons/l10n_es_vat_book/models/aeat_vat_book_map_line.py,sha256=IWdvWME1lnp4WBg93duQGkwr6Zpy9wE5wM0MQ5A1Q24,1437
29
+ odoo/addons/l10n_es_vat_book/models/l10n_es_vat_book.py,sha256=3jTZEB89GPBkCgrzak7kzISyO1uJu6oUvyN62M40qOE,22344
30
+ odoo/addons/l10n_es_vat_book/models/l10n_es_vat_book_line.py,sha256=4nWchnxlYyD45x5tD4XU0jhymMNTlCE0YvYQbv35Mzg,2481
31
+ odoo/addons/l10n_es_vat_book/models/l10n_es_vat_book_line_tax.py,sha256=Uoid5DEQc07Bz5r7JqfKbkd91LGqR_1tsfq1VXkaSQw,2440
32
+ odoo/addons/l10n_es_vat_book/models/l10n_es_vat_book_summary.py,sha256=jKvai8td7NQwT2suuY-dA1AfQxRvM6VBIVuHZnfwSrY,1208
33
+ odoo/addons/l10n_es_vat_book/models/l10n_es_vat_book_tax_summary.py,sha256=No6PJ34A-V16ij_1h5zqsGI6wpg1i-g57ZQX_R8YyY8,1260
34
+ odoo/addons/l10n_es_vat_book/readme/CONFIGURE.rst,sha256=p0gkMvzeKo8w5Gjz4rVE5iuQx2gd-sd9nChaeUs45fI,348
35
+ odoo/addons/l10n_es_vat_book/readme/CONTRIBUTORS.rst,sha256=w1cTtiwV_HIDETbZXoH2L7fEa95QXSJCSKJHCjQbBoU,556
36
+ odoo/addons/l10n_es_vat_book/readme/DESCRIPTION.rst,sha256=M6y3oJ8y9Zuhl8oKrDyvm7By6-mya_4jrAUfbMs41n4,478
37
+ odoo/addons/l10n_es_vat_book/readme/INSTALL.rst,sha256=1TNDm0rcwK_MCjZJ8Lmu1Ua3OXI2Ri4OuTmtXDGJ8KQ,580
38
+ odoo/addons/l10n_es_vat_book/readme/ROADMAP.rst,sha256=dZ-2DOOpRMy6cgVhwHWrzjRjvIaF8GXga4tW-z1rzyA,237
39
+ odoo/addons/l10n_es_vat_book/readme/USAGE.rst,sha256=GJzyBMLql5WxrlQDRzb1VEK2fo7momxhEH_KSKEtxlY,220
40
+ odoo/addons/l10n_es_vat_book/report/__init__.py,sha256=QS0o-fQFNABxF_-bBmduhokP3PWyj7GhHU2mEeGdKXI,28
41
+ odoo/addons/l10n_es_vat_book/report/common_templates.xml,sha256=bGTZrPV2YG8G6p7YSr3J-6shOxAT10EZqaQeKBuylFg,10054
42
+ odoo/addons/l10n_es_vat_book/report/report_views.xml,sha256=CiXGZY8KFwZFqAxjWMYWXIR0iUSBxaS67eCl9lMxAQk,2277
43
+ odoo/addons/l10n_es_vat_book/report/vat_book_invoices_issued.xml,sha256=9RnQeHVKFBXG2hQH-Vf41oHs1yrz2sknaj4bDhKrs7Y,4127
44
+ odoo/addons/l10n_es_vat_book/report/vat_book_invoices_received.xml,sha256=l43OPxfR2IlVACmyRWgEYp7x62Q0k9bQG7jdEFwjwIs,4121
45
+ odoo/addons/l10n_es_vat_book/report/vat_book_xlsx.py,sha256=ryqTddQupZ8gVHZVreUKcg5QqsSePJ95X5Bp19VD9uE,20002
46
+ odoo/addons/l10n_es_vat_book/report/vat_book_xlsx.xml,sha256=sZd6sU-mnZUN-odM8R5MHtt6XfuXkVxPEkyP8XjJMf8,576
47
+ odoo/addons/l10n_es_vat_book/security/ir.model.access.csv,sha256=D-VRSm4gZ7A0LOlIH9JL-EXkH7EzbubObuFL634GuUs,871
48
+ odoo/addons/l10n_es_vat_book/security/ir_rule.xml,sha256=4HkdO_WPIAK6hXcVUIFTLmzl0af-tVplhO-o2Xsic1M,521
49
+ odoo/addons/l10n_es_vat_book/static/description/icon.png,sha256=6xBPJauaFOF0KDHfHgQopSc28kKvxMaeoQFQWZtfZDo,9455
50
+ odoo/addons/l10n_es_vat_book/static/description/index.html,sha256=fnQxTg1nMGgYLcyaxtd4GkskMip7FF8VSi34LuOa9S0,16809
51
+ odoo/addons/l10n_es_vat_book/tests/__init__.py,sha256=4dynCSzE14Nz6hAqV9vEmx8lEt3Byn-gqNKA0-wj7uc,41
52
+ odoo/addons/l10n_es_vat_book/tests/test_l10n_es_aeat_vat_book.py,sha256=Bq1c4Ggs19z9_4h0-B8hLcurJ6uQ8VqvJmT-jyRw_bk,6212
53
+ odoo/addons/l10n_es_vat_book/views/aeat_vat_book_map_view.xml,sha256=57r8qyI1KZCeoqDrs7bBt2K3UF85vJxi0ZXWMDUsZuc,1278
54
+ odoo/addons/l10n_es_vat_book/views/l10n_es_vat_book.xml,sha256=pA4Qi8JSf2OXP7O9JyqU5LLHNo4Qe-6rVhP1NWlLeu0,5794
55
+ odoo/addons/l10n_es_vat_book/views/l10n_es_vat_book_line.xml,sha256=DyJY5YXkzqNjepNI88FKklb-DZs-Kg2Fn5-rfXdWevI,4760
56
+ odoo/addons/l10n_es_vat_book/views/l10n_es_vat_book_summary.xml,sha256=PTX2BDmnE6bIZjlMlRH6R479DdZgDPzG0WO_e-iC2gU,1333
57
+ odoo/addons/l10n_es_vat_book/views/l10n_es_vat_book_tax_summary.xml,sha256=HGDXXDWt3hVT3HEd-QXg_w9DGsiiZ_BDBG1YJUtVZ4Y,2086
58
+ odoo_addon_l10n_es_vat_book-16.0.2.1.0.1.dist-info/METADATA,sha256=Q87QIsEhQTFaTDMo8F081CnwciCtp994LL7wQsyrCSU,6135
59
+ odoo_addon_l10n_es_vat_book-16.0.2.1.0.1.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92
60
+ odoo_addon_l10n_es_vat_book-16.0.2.1.0.1.dist-info/top_level.txt,sha256=qBj40grFkGOfDZ2WDSw3y1RnDlgG0u8rP8pvGNdbz4w,5
61
+ odoo_addon_l10n_es_vat_book-16.0.2.1.0.1.dist-info/RECORD,,