odoo-addon-l10n-es-vat-book 18.0.2.0.2__py3-none-any.whl → 18.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 (39) 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.line.csv +6 -4
  4. odoo/addons/l10n_es_vat_book/data/l10n.es.aeat.map.tax.line.tax.csv +47 -0
  5. odoo/addons/l10n_es_vat_book/i18n/bg.po +16 -1
  6. odoo/addons/l10n_es_vat_book/i18n/ca.po +20 -2
  7. odoo/addons/l10n_es_vat_book/i18n/cs.po +16 -1
  8. odoo/addons/l10n_es_vat_book/i18n/de.po +16 -1
  9. odoo/addons/l10n_es_vat_book/i18n/es.po +20 -2
  10. odoo/addons/l10n_es_vat_book/i18n/es_CO.po +16 -1
  11. odoo/addons/l10n_es_vat_book/i18n/es_CR.po +16 -1
  12. odoo/addons/l10n_es_vat_book/i18n/eu.po +16 -1
  13. odoo/addons/l10n_es_vat_book/i18n/fr.po +16 -1
  14. odoo/addons/l10n_es_vat_book/i18n/gl.po +16 -1
  15. odoo/addons/l10n_es_vat_book/i18n/hr.po +16 -1
  16. odoo/addons/l10n_es_vat_book/i18n/l10n_es_vat_book.pot +16 -1
  17. odoo/addons/l10n_es_vat_book/i18n/nl.po +16 -1
  18. odoo/addons/l10n_es_vat_book/i18n/pl.po +16 -1
  19. odoo/addons/l10n_es_vat_book/i18n/pt.po +16 -1
  20. odoo/addons/l10n_es_vat_book/i18n/pt_BR.po +16 -1
  21. odoo/addons/l10n_es_vat_book/i18n/ru.po +16 -1
  22. odoo/addons/l10n_es_vat_book/i18n/sl.po +16 -1
  23. odoo/addons/l10n_es_vat_book/i18n/sv.po +16 -1
  24. odoo/addons/l10n_es_vat_book/i18n/tr.po +16 -1
  25. odoo/addons/l10n_es_vat_book/i18n/vi.po +16 -1
  26. odoo/addons/l10n_es_vat_book/models/l10n_es_vat_book.py +5 -0
  27. odoo/addons/l10n_es_vat_book/models/l10n_es_vat_book_line.py +10 -0
  28. odoo/addons/l10n_es_vat_book/readme/CONTRIBUTORS.md +1 -0
  29. odoo/addons/l10n_es_vat_book/readme/DESCRIPTION.md +3 -3
  30. odoo/addons/l10n_es_vat_book/readme/ROADMAP.md +3 -0
  31. odoo/addons/l10n_es_vat_book/report/vat_book_xlsx.py +206 -117
  32. odoo/addons/l10n_es_vat_book/static/description/index.html +10 -6
  33. odoo/addons/l10n_es_vat_book/tests/test_l10n_es_aeat_vat_book.py +6 -1
  34. odoo/addons/l10n_es_vat_book/views/l10n_es_vat_book.xml +4 -1
  35. {odoo_addon_l10n_es_vat_book-18.0.2.0.2.dist-info → odoo_addon_l10n_es_vat_book-18.0.2.1.0.1.dist-info}/METADATA +13 -9
  36. odoo_addon_l10n_es_vat_book-18.0.2.1.0.1.dist-info/RECORD +63 -0
  37. odoo_addon_l10n_es_vat_book-18.0.2.0.2.dist-info/RECORD +0 -63
  38. {odoo_addon_l10n_es_vat_book-18.0.2.0.2.dist-info → odoo_addon_l10n_es_vat_book-18.0.2.1.0.1.dist-info}/WHEEL +0 -0
  39. {odoo_addon_l10n_es_vat_book-18.0.2.0.2.dist-info → odoo_addon_l10n_es_vat_book-18.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", f"NIF: {book.company_vat}")
63
64
  sheet.write("A4:D4", f"NOMBRE/RAZÓN SOCIAL: {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
- f"{line.fee_type_xlsx_column}6:{line.fee_type_xlsx_column}7",
87
- f"Tipo de {line.name}",
88
- header_format,
89
- )
90
- sheet.merge_range(
91
- f"{line.fee_amount_xlsx_column}6:{line.fee_amount_xlsx_column}7",
92
- f"Cuota {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
+ f"{line.fee_type_xlsx_column}6:{line.fee_type_xlsx_column}7",
100
+ f"Tipo de {line.name}",
101
+ header_format,
102
+ )
103
+ sheet.merge_range(
104
+ f"{line.fee_amount_xlsx_column}6:{line.fee_amount_xlsx_column}7",
105
+ f"Cuota {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", f"NIF: {book.company_vat}")
217
253
  sheet.write("A4:D4", f"NOMBRE/RAZÓN SOCIAL: {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
- f"{line.fee_type_xlsx_column}6:{line.fee_type_xlsx_column}7",
245
- f"Tipo de {line.name}",
246
- header_format,
247
- )
248
- sheet.merge_range(
249
- f"{line.fee_amount_xlsx_column}6:{line.fee_amount_xlsx_column}7",
250
- f"Cuota {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
+ f"{line.fee_type_xlsx_column}6:{line.fee_type_xlsx_column}7",
298
+ f"Tipo de {line.name}",
299
+ header_format,
300
+ )
301
+ sheet.merge_range(
302
+ f"{line.fee_amount_xlsx_column}6:{line.fee_amount_xlsx_column}7",
303
+ f"Cuota {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:2d2b8fd7a961ab634d8d331a0b58df9f5a5ca54e9e8246327835e985cd042fe2
375
+ !! source digest: sha256:df2894f85a707364acdb7106ab99c3505929e5e14752c235796df60c96f9a31d
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/18.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-18-0/l10n-spain-18-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=18.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
380
- -&gt; 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
380
+ -&gt; Informe -&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 @@ no tener NIF informado siguiendo lo especificado en el formato BOE.</p>
446
446
  <li>Criterio de caja</li>
447
447
  <li>Regímenes especiales de seguros, de agencias de viaje o de bienes
448
448
  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
 
@@ -78,7 +79,7 @@ class TestL10nEsAeatVatBook(TestL10nEsAeatVatBookBase):
78
79
  self.assertEqual(line.base_amount, 0.0)
79
80
  self.assertEqual(line.tax_amount, 0.0)
80
81
  # Check tax summary for received invoices
81
- self.assertEqual(len(vat_book.received_tax_summary_ids), 6)
82
+ self.assertEqual(len(vat_book.received_tax_summary_ids), 7)
82
83
  rec_summaries = sorted(
83
84
  vat_book.received_tax_summary_ids,
84
85
  key=lambda line: line.tax_amount,
@@ -108,6 +109,10 @@ class TestL10nEsAeatVatBook(TestL10nEsAeatVatBookBase):
108
109
  line = rec_summaries[5]
109
110
  self.assertAlmostEqual(line.base_amount, 270)
110
111
  self.assertAlmostEqual(line.tax_amount, 1.35)
112
+ # P_IRPF19 - 19% Impuesto sobre la resta fisica
113
+ line = rec_summaries[6]
114
+ self.assertAlmostEqual(line.base_amount, 1024)
115
+ self.assertAlmostEqual(line.tax_amount, -194.56)
111
116
  # Let's dig into this tax detail for checking the deductible amount
112
117
  tax_line = vat_book.received_line_ids.tax_line_ids.filtered(
113
118
  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_l10n_es_aeat_submenu"
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,11 +1,11 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: odoo-addon-l10n_es_vat_book
3
- Version: 18.0.2.0.2
3
+ Version: 18.0.2.1.0.1
4
4
  Requires-Python: >=3.10
5
5
  Requires-Dist: odoo-addon-l10n_es_aeat==18.0.*
6
6
  Requires-Dist: odoo-addon-report_xlsx==18.0.*
7
7
  Requires-Dist: odoo==18.0.*
8
- Summary: Libro de IVA
8
+ Summary: Libros registro del IVA y del IRPF
9
9
  Home-page: https://github.com/OCA/l10n-spain
10
10
  License: AGPL-3
11
11
  Author: PRAXYA, ForgeFlow, Tecnativa, Odoo Community Association (OCA)
@@ -20,16 +20,16 @@ Description-Content-Type: text/x-rst
20
20
  :target: https://odoo-community.org/get-involved?utm_source=readme
21
21
  :alt: Odoo Community Association
22
22
 
23
- ============
24
- Libro de IVA
25
- ============
23
+ ==================================
24
+ Libros registro del IVA y del IRPF
25
+ ==================================
26
26
 
27
27
  ..
28
28
  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
29
29
  !! This file is generated by oca-gen-addon-readme !!
30
30
  !! changes will be overwritten. !!
31
31
  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
32
- !! source digest: sha256:2d2b8fd7a961ab634d8d331a0b58df9f5a5ca54e9e8246327835e985cd042fe2
32
+ !! source digest: sha256:df2894f85a707364acdb7106ab99c3505929e5e14752c235796df60c96f9a31d
33
33
  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
34
34
 
35
35
  .. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
@@ -50,10 +50,10 @@ Libro de IVA
50
50
 
51
51
  |badge1| |badge2| |badge3| |badge4| |badge5|
52
52
 
53
- Módulo que calcula el libro de IVA español.
53
+ Módulo que calcula los libros de IVA e IRPF español.
54
54
 
55
- Esto módulo introduce el menú "Libro de IVA" en Contabilidad -> Informe
56
- -> Declaraciones AEAT -> Libro de IVA.
55
+ Esto módulo introduce el menú "Libros de IVA y del IRPF" en Contabilidad
56
+ -> Informe -> Declaraciones AEAT.
57
57
 
58
58
  Es posible visualizar e imprimir por separado:
59
59
 
@@ -117,6 +117,9 @@ Funcionalidades del Libro Registro de IVA no incluídas por el momento:
117
117
  - Criterio de caja
118
118
  - Regímenes especiales de seguros, de agencias de viaje o de bienes
119
119
  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
 
153
157
  - Omar Castiñeira <omar@comunitea.com>
154
158
  - Fernando La Chica <fernandolachica@gmail.com>
@@ -0,0 +1,63 @@
1
+ odoo/addons/l10n_es_vat_book/README.rst,sha256=3HcnUQNyHKsECsA93U76md99eWYVS8nNHZUDPg7iipY,5291
2
+ odoo/addons/l10n_es_vat_book/__init__.py,sha256=RYGen4VvN9c8GXvMfZMuO7ERiyRCUJfuAbgo0aC3DEU,42
3
+ odoo/addons/l10n_es_vat_book/__manifest__.py,sha256=bgGkFT6wXI3FlEWsBrIB9_gFOWdKcZ4NCFoWaTqjKl8,1453
4
+ odoo/addons/l10n_es_vat_book/data/aeat.vat.book.map.line.csv,sha256=x1NIbPjRy03G_uKWY-K-aNRpBRiSG-DDWXzk8xO7RjM,2635
5
+ odoo/addons/l10n_es_vat_book/data/l10n.es.aeat.map.tax.line.account.csv,sha256=TrL5kRO3FRIuUv2X2yoU3Tb6hRIKcfi3IeiHkILfp6Y,68
6
+ odoo/addons/l10n_es_vat_book/data/l10n.es.aeat.map.tax.line.tax.csv,sha256=DxaveCuJxj6xCmBF_nMM_aaF2GXjQu86mjLiRVnIdC4,6496
7
+ odoo/addons/l10n_es_vat_book/i18n/bg.po,sha256=vAA5XpU14_t7_ULsl5pMa5Qti8Xt6qa8l2jzuU_Q_Vw,35641
8
+ odoo/addons/l10n_es_vat_book/i18n/ca.po,sha256=9tfgB30zM1CZ37B0minmG3C7Q6E3lNF2N_lwBJq4js8,41299
9
+ odoo/addons/l10n_es_vat_book/i18n/cs.po,sha256=cJUTXhXs9AzGMTgS8nQNmuSOIx36T2KfXfAn52HxTRM,35559
10
+ odoo/addons/l10n_es_vat_book/i18n/de.po,sha256=r-KDxr5tBGC6ypqOk-oSukq02_Nye_WOVoaFEk7oyhw,35326
11
+ odoo/addons/l10n_es_vat_book/i18n/es.po,sha256=dMhzhlFE9HNWBrPQ4z5XCQ4ADLLL2kWNdKdIvFYkDfM,41908
12
+ odoo/addons/l10n_es_vat_book/i18n/es_CO.po,sha256=dPbM1h_5bnFvhGcgnpK0htY-DXiPSsH60mH82_olbRg,35503
13
+ odoo/addons/l10n_es_vat_book/i18n/es_CR.po,sha256=oXB5oBfiIgg40P6iPFYQSS9h1NIsj1EKUk68Yf7tUY4,35490
14
+ odoo/addons/l10n_es_vat_book/i18n/eu.po,sha256=GbTgtqr9xdAgIeVkNoFGhywozAQcfaVqdhwYOSZi3Yw,35515
15
+ odoo/addons/l10n_es_vat_book/i18n/fr.po,sha256=gpGxT-WYRkbzGAT3zDSJbnqdeb92E9jZAdlDxbKiewo,35545
16
+ odoo/addons/l10n_es_vat_book/i18n/gl.po,sha256=GgG1Ue69OhZs5eZG3fTQ__kh9i4yXYPgVp1FDkEW5HM,35608
17
+ odoo/addons/l10n_es_vat_book/i18n/hr.po,sha256=5lGUPAVsxp1lDTmPHEU-bBXHQ5fm5_VwohU6lRXOnFU,35591
18
+ odoo/addons/l10n_es_vat_book/i18n/l10n_es_vat_book.pot,sha256=DiChpwOBHWxy2X4S-hexobgjUdfrr4Yz_NuMNNUVWZ8,35056
19
+ odoo/addons/l10n_es_vat_book/i18n/nl.po,sha256=jl_g63PwI3yOIFKumxV8nEmtWr4Z3Eor2-NqQIyUyNA,35543
20
+ odoo/addons/l10n_es_vat_book/i18n/pl.po,sha256=Rb5s-Fw4by7sip9mH0qYIvGcYEK9BcGfx0paPkScR3Q,35699
21
+ odoo/addons/l10n_es_vat_book/i18n/pt.po,sha256=bBqwizKwq2AxtjdaaTyfQJ29w57yOZHvoFnwHpdO8a8,35556
22
+ odoo/addons/l10n_es_vat_book/i18n/pt_BR.po,sha256=UaZ1xJ8sJncTBGP7m7PlcAD88djwOTRDJYjM1aDGCx8,35583
23
+ odoo/addons/l10n_es_vat_book/i18n/ru.po,sha256=lvALdiJDjva6gQHWy60bmtK5Q4cOlM3NuPpWjqetT0Q,35659
24
+ odoo/addons/l10n_es_vat_book/i18n/sl.po,sha256=NF58XcfjFUKixALeOLYnhp1QjwtQPMad6TA-L55u6WA,35607
25
+ odoo/addons/l10n_es_vat_book/i18n/sv.po,sha256=ws92TTWUbRzJz8mG0Qg7WQlp6E74IjL9Vx1Io5UUH4U,35523
26
+ odoo/addons/l10n_es_vat_book/i18n/tr.po,sha256=c1tUulH3ZZIJMsfx5BYT9fktAVqFd6TPjh7V2Fsrmgk,35524
27
+ odoo/addons/l10n_es_vat_book/i18n/vi.po,sha256=pRHw5NUgEt8Iw5dxr_fUNXlukG_WD6znQt_Cf5Qe6IQ,35522
28
+ odoo/addons/l10n_es_vat_book/migrations/18.0.2.0.0/post-migration.py,sha256=AXJRI3J9g9OR0nOskb4ufGX3AUT-wEv_xMV7URfcvmI,334
29
+ odoo/addons/l10n_es_vat_book/models/__init__.py,sha256=V0ONDc9wKn8JF0Soh2NCORHEAQ7EcOn16SNkxjA50WU,226
30
+ odoo/addons/l10n_es_vat_book/models/aeat_vat_book_map_line.py,sha256=CfuXLhscmFWhzgbK7bTcFGgu4klJH_Hr3r3LouphLKI,2088
31
+ odoo/addons/l10n_es_vat_book/models/l10n_es_vat_book.py,sha256=6mr1ko7OBg3cnJ7Xqt0GXmnHxMtUHV9o991p4JK11Kk,22129
32
+ odoo/addons/l10n_es_vat_book/models/l10n_es_vat_book_line.py,sha256=CJp7F9IBv-Yge0FJR5oT7G4mAb6zDYX43Tb81TMhLXQ,2465
33
+ odoo/addons/l10n_es_vat_book/models/l10n_es_vat_book_line_tax.py,sha256=Uoid5DEQc07Bz5r7JqfKbkd91LGqR_1tsfq1VXkaSQw,2440
34
+ odoo/addons/l10n_es_vat_book/models/l10n_es_vat_book_summary.py,sha256=7NKIt1v_hx-5PXs4rbpdngX-4cIPpbRtht2LRQ26HV8,1202
35
+ odoo/addons/l10n_es_vat_book/models/l10n_es_vat_book_tax_summary.py,sha256=No6PJ34A-V16ij_1h5zqsGI6wpg1i-g57ZQX_R8YyY8,1260
36
+ odoo/addons/l10n_es_vat_book/readme/CONFIGURE.md,sha256=prDqeAmmUOBhAn-LV4kghJ9zcBAEG1Sp9EBun61KaZ0,351
37
+ odoo/addons/l10n_es_vat_book/readme/CONTRIBUTORS.md,sha256=GLZ6NrWIhvtRKYn-rNXZPRVzGoivL3RJSDFhM9qReqc,506
38
+ odoo/addons/l10n_es_vat_book/readme/DESCRIPTION.md,sha256=vA9lxX-KEvTtCSbY2xdC-km4yKpy0K0BJsRVcvsHYC8,478
39
+ odoo/addons/l10n_es_vat_book/readme/INSTALL.md,sha256=szULZOUnQsfO-mRKmnF_PsGmARm1m9zeuh9ma5FswbI,469
40
+ odoo/addons/l10n_es_vat_book/readme/ROADMAP.md,sha256=0fgBRgoMJ3sELkXeeSY_A6BZv1dIWnJbopbzTFnpSp0,240
41
+ odoo/addons/l10n_es_vat_book/readme/USAGE.md,sha256=WTI42NoWwgTi0lmaj9icm_TFvGcnks_fit7kJwwEyos,227
42
+ odoo/addons/l10n_es_vat_book/report/__init__.py,sha256=QS0o-fQFNABxF_-bBmduhokP3PWyj7GhHU2mEeGdKXI,28
43
+ odoo/addons/l10n_es_vat_book/report/common_templates.xml,sha256=Hu_8s9pR6Ll4ui-0rCHG68gB2pzXpCXKZnh35xSWGbI,10046
44
+ odoo/addons/l10n_es_vat_book/report/report_views.xml,sha256=CiXGZY8KFwZFqAxjWMYWXIR0iUSBxaS67eCl9lMxAQk,2277
45
+ odoo/addons/l10n_es_vat_book/report/vat_book_invoices_issued.xml,sha256=9RnQeHVKFBXG2hQH-Vf41oHs1yrz2sknaj4bDhKrs7Y,4127
46
+ odoo/addons/l10n_es_vat_book/report/vat_book_invoices_received.xml,sha256=l43OPxfR2IlVACmyRWgEYp7x62Q0k9bQG7jdEFwjwIs,4121
47
+ odoo/addons/l10n_es_vat_book/report/vat_book_xlsx.py,sha256=Y_AnIiLB9lUgByDEV1QV_jR74ZOeZD4lX2rYN2wVsV4,20013
48
+ odoo/addons/l10n_es_vat_book/report/vat_book_xlsx.xml,sha256=sZd6sU-mnZUN-odM8R5MHtt6XfuXkVxPEkyP8XjJMf8,576
49
+ odoo/addons/l10n_es_vat_book/security/ir.model.access.csv,sha256=D-VRSm4gZ7A0LOlIH9JL-EXkH7EzbubObuFL634GuUs,871
50
+ odoo/addons/l10n_es_vat_book/security/ir_rule.xml,sha256=4HkdO_WPIAK6hXcVUIFTLmzl0af-tVplhO-o2Xsic1M,521
51
+ odoo/addons/l10n_es_vat_book/static/description/icon.png,sha256=6xBPJauaFOF0KDHfHgQopSc28kKvxMaeoQFQWZtfZDo,9455
52
+ odoo/addons/l10n_es_vat_book/static/description/index.html,sha256=cSHjDCLZKLCmhZE6CScsJt7UdT6HsHA_gaR1-49JoXE,16454
53
+ odoo/addons/l10n_es_vat_book/tests/__init__.py,sha256=4dynCSzE14Nz6hAqV9vEmx8lEt3Byn-gqNKA0-wj7uc,41
54
+ odoo/addons/l10n_es_vat_book/tests/test_l10n_es_aeat_vat_book.py,sha256=4DNuQKedqFnm4To5ekL5O-iCZaNtJwsvj7mfD7Q4xUE,6274
55
+ odoo/addons/l10n_es_vat_book/views/aeat_vat_book_map_view.xml,sha256=5JshRk9EUj7748Wgq0GFLEFKFPzoYZ8cOpr42TPQ4eU,1281
56
+ odoo/addons/l10n_es_vat_book/views/l10n_es_vat_book.xml,sha256=Zu3WLsVAQfhTBkVFJfBU5IV73q64_YHcu--Jg2sbSTU,5731
57
+ odoo/addons/l10n_es_vat_book/views/l10n_es_vat_book_line.xml,sha256=Pu42fg7xC8CnwDxnmUhMrC8CQt71kS1Wamue9wKKApw,4575
58
+ odoo/addons/l10n_es_vat_book/views/l10n_es_vat_book_summary.xml,sha256=eofP_7uLFzOxxXZKTIIKckhEJnOHtbZcLU1vtL9OJzE,1333
59
+ odoo/addons/l10n_es_vat_book/views/l10n_es_vat_book_tax_summary.xml,sha256=pZ_xc9TA7kvln4ecgyQxPZaSfxSToCjylUUnMBTHrNE,2086
60
+ odoo_addon_l10n_es_vat_book-18.0.2.1.0.1.dist-info/METADATA,sha256=ZzHtlAW2s0NOQZpjvdEodKMrDeKhCZ4gYe5RNYByh5M,5956
61
+ odoo_addon_l10n_es_vat_book-18.0.2.1.0.1.dist-info/WHEEL,sha256=ZhOvUsYhy81Dx67gN3TV0RchQWBIIzutDZaJODDg2Vo,81
62
+ odoo_addon_l10n_es_vat_book-18.0.2.1.0.1.dist-info/top_level.txt,sha256=QE6RBQ0QX5f4eFuUcGgU5Kbq1A_qJcDs-e_vpr6pmfU,4
63
+ odoo_addon_l10n_es_vat_book-18.0.2.1.0.1.dist-info/RECORD,,