odoo-addon-l10n-es-verifactu-oca 18.0.1.2.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.
Files changed (78) hide show
  1. odoo/addons/l10n_es_verifactu_oca/README.rst +195 -0
  2. odoo/addons/l10n_es_verifactu_oca/__init__.py +3 -0
  3. odoo/addons/l10n_es_verifactu_oca/__manifest__.py +50 -0
  4. odoo/addons/l10n_es_verifactu_oca/data/ir_config_parameter.xml +9 -0
  5. odoo/addons/l10n_es_verifactu_oca/data/ir_cron.xml +13 -0
  6. odoo/addons/l10n_es_verifactu_oca/data/l10n.es.aeat.map.tax.line.tax.csv +50 -0
  7. odoo/addons/l10n_es_verifactu_oca/data/mail_activity_data.xml +11 -0
  8. odoo/addons/l10n_es_verifactu_oca/data/neutralize.sql +2 -0
  9. odoo/addons/l10n_es_verifactu_oca/data/template/account.fiscal.position-es_common.csv +27 -0
  10. odoo/addons/l10n_es_verifactu_oca/data/verifactu.map.csv +2 -0
  11. odoo/addons/l10n_es_verifactu_oca/data/verifactu.map.line.csv +8 -0
  12. odoo/addons/l10n_es_verifactu_oca/data/verifactu_registration_key_data.xml +205 -0
  13. odoo/addons/l10n_es_verifactu_oca/data/verifactu_tax_agency_data.xml +19 -0
  14. odoo/addons/l10n_es_verifactu_oca/hooks.py +43 -0
  15. odoo/addons/l10n_es_verifactu_oca/i18n/es.po +1682 -0
  16. odoo/addons/l10n_es_verifactu_oca/i18n/l10n_es_verifactu_oca.pot +1640 -0
  17. odoo/addons/l10n_es_verifactu_oca/migrations/18.0.1.1.0/pre-migration.py +25 -0
  18. odoo/addons/l10n_es_verifactu_oca/models/__init__.py +15 -0
  19. odoo/addons/l10n_es_verifactu_oca/models/account_chart_template.py +17 -0
  20. odoo/addons/l10n_es_verifactu_oca/models/account_fiscal_position.py +34 -0
  21. odoo/addons/l10n_es_verifactu_oca/models/account_journal.py +64 -0
  22. odoo/addons/l10n_es_verifactu_oca/models/account_move.py +631 -0
  23. odoo/addons/l10n_es_verifactu_oca/models/aeat_tax_agency.py +30 -0
  24. odoo/addons/l10n_es_verifactu_oca/models/res_company.py +48 -0
  25. odoo/addons/l10n_es_verifactu_oca/models/res_partner.py +26 -0
  26. odoo/addons/l10n_es_verifactu_oca/models/verifactu_chaining.py +37 -0
  27. odoo/addons/l10n_es_verifactu_oca/models/verifactu_developer.py +16 -0
  28. odoo/addons/l10n_es_verifactu_oca/models/verifactu_invoice_entry.py +398 -0
  29. odoo/addons/l10n_es_verifactu_oca/models/verifactu_invoice_entry_response.py +116 -0
  30. odoo/addons/l10n_es_verifactu_oca/models/verifactu_invoice_entry_response_line.py +47 -0
  31. odoo/addons/l10n_es_verifactu_oca/models/verifactu_map.py +68 -0
  32. odoo/addons/l10n_es_verifactu_oca/models/verifactu_mixin.py +485 -0
  33. odoo/addons/l10n_es_verifactu_oca/models/verifactu_registration_key.py +26 -0
  34. odoo/addons/l10n_es_verifactu_oca/readme/CONFIGURE.md +27 -0
  35. odoo/addons/l10n_es_verifactu_oca/readme/CONTRIBUTORS.md +18 -0
  36. odoo/addons/l10n_es_verifactu_oca/readme/DESCRIPTION.md +1 -0
  37. odoo/addons/l10n_es_verifactu_oca/readme/INSTALL.md +6 -0
  38. odoo/addons/l10n_es_verifactu_oca/readme/ROADMAP.md +30 -0
  39. odoo/addons/l10n_es_verifactu_oca/readme/USAGE.md +3 -0
  40. odoo/addons/l10n_es_verifactu_oca/security/ir.model.access.csv +23 -0
  41. odoo/addons/l10n_es_verifactu_oca/security/verifactu_security.xml +6 -0
  42. odoo/addons/l10n_es_verifactu_oca/static/description/icon.png +0 -0
  43. odoo/addons/l10n_es_verifactu_oca/static/description/index.html +551 -0
  44. odoo/addons/l10n_es_verifactu_oca/tests/__init__.py +2 -0
  45. odoo/addons/l10n_es_verifactu_oca/tests/common.py +281 -0
  46. odoo/addons/l10n_es_verifactu_oca/tests/json/verifactu_mocked_response_accepted_with_errors.json +35 -0
  47. odoo/addons/l10n_es_verifactu_oca/tests/json/verifactu_mocked_response_cancel.json +35 -0
  48. odoo/addons/l10n_es_verifactu_oca/tests/json/verifactu_mocked_response_cancel_incorrect.json +37 -0
  49. odoo/addons/l10n_es_verifactu_oca/tests/json/verifactu_mocked_response_cancel_with_errors.json +35 -0
  50. odoo/addons/l10n_es_verifactu_oca/tests/json/verifactu_mocked_response_correct.json +35 -0
  51. odoo/addons/l10n_es_verifactu_oca/tests/json/verifactu_mocked_response_duplicated.json +43 -0
  52. odoo/addons/l10n_es_verifactu_oca/tests/json/verifactu_mocked_response_incorrect.json +37 -0
  53. odoo/addons/l10n_es_verifactu_oca/tests/json/verifactu_out_invoice_s_iva10b_s_iva21s_dict.json +59 -0
  54. odoo/addons/l10n_es_verifactu_oca/tests/json/verifactu_out_invoice_s_iva21s_s_req52_dict.json +58 -0
  55. odoo/addons/l10n_es_verifactu_oca/tests/json/verifactu_out_refund_s_iva10b_s_iva10b_s_iva21s_dict.json +66 -0
  56. odoo/addons/l10n_es_verifactu_oca/tests/test_10n_es_verifactu.py +506 -0
  57. odoo/addons/l10n_es_verifactu_oca/tests/test_verifactu_invoice.py +348 -0
  58. odoo/addons/l10n_es_verifactu_oca/views/account_fiscal_position_view.xml +29 -0
  59. odoo/addons/l10n_es_verifactu_oca/views/account_journal_view.xml +22 -0
  60. odoo/addons/l10n_es_verifactu_oca/views/account_move_view.xml +237 -0
  61. odoo/addons/l10n_es_verifactu_oca/views/aeat_tax_agency_view.xml +31 -0
  62. odoo/addons/l10n_es_verifactu_oca/views/report_invoice.xml +53 -0
  63. odoo/addons/l10n_es_verifactu_oca/views/res_company_view.xml +50 -0
  64. odoo/addons/l10n_es_verifactu_oca/views/verifactu_chaining_view.xml +45 -0
  65. odoo/addons/l10n_es_verifactu_oca/views/verifactu_developer_view.xml +46 -0
  66. odoo/addons/l10n_es_verifactu_oca/views/verifactu_invoice_entry_response_view.xml +134 -0
  67. odoo/addons/l10n_es_verifactu_oca/views/verifactu_invoice_entry_view.xml +127 -0
  68. odoo/addons/l10n_es_verifactu_oca/views/verifactu_map_lines_view.xml +16 -0
  69. odoo/addons/l10n_es_verifactu_oca/views/verifactu_map_view.xml +54 -0
  70. odoo/addons/l10n_es_verifactu_oca/views/verifactu_registration_keys_view.xml +43 -0
  71. odoo/addons/l10n_es_verifactu_oca/wizards/__init__.py +2 -0
  72. odoo/addons/l10n_es_verifactu_oca/wizards/account_move_reversal.py +16 -0
  73. odoo/addons/l10n_es_verifactu_oca/wizards/verifactu_cancel_invoice_wizard.py +24 -0
  74. odoo/addons/l10n_es_verifactu_oca/wizards/verifactu_cancel_invoice_wizard_view.xml +35 -0
  75. odoo_addon_l10n_es_verifactu_oca-18.0.1.2.1.dist-info/METADATA +213 -0
  76. odoo_addon_l10n_es_verifactu_oca-18.0.1.2.1.dist-info/RECORD +78 -0
  77. odoo_addon_l10n_es_verifactu_oca-18.0.1.2.1.dist-info/WHEEL +5 -0
  78. odoo_addon_l10n_es_verifactu_oca-18.0.1.2.1.dist-info/top_level.txt +1 -0
@@ -0,0 +1,53 @@
1
+ <?xml version="1.0" encoding="utf-8" ?>
2
+ <odoo>
3
+ <template
4
+ id="report_invoice_document"
5
+ inherit_id="account.report_invoice_document"
6
+ priority="1000"
7
+ >
8
+ <xpath expr="//t[@t-set='forced_vat']" position="after">
9
+ <t
10
+ t-set="verifactu_invoice"
11
+ t-value="o.verifactu_enabled and o.verifactu_qr"
12
+ />
13
+ </xpath>
14
+ </template>
15
+ <template id="address_layout" inherit_id="web.address_layout" priority="1000">
16
+ <div t-attf-class="address row mb-4" position="attributes">
17
+ <attribute name="t-if">not verifactu_invoice</attribute>
18
+ </div>
19
+ <div t-attf-class="address row mb-4" position="after">
20
+ <div t-if="verifactu_invoice" class="row" id="verifactu_row">
21
+ <div
22
+ id="verifactu"
23
+ style="page-break-inside:avoid;"
24
+ class="text-center col-3"
25
+ >
26
+ <ul class="list-inline mb4">QR Tributario</ul>
27
+ <ul id="verifactu_qr" class="list-inline mb4">
28
+ <img
29
+ t-attf-src="data:image/png;base64,{{o.verifactu_qr}}"
30
+ style="min-width: 40mm; max-width: 40mm"
31
+ />
32
+ </ul>
33
+ <ul class="list-inline mb4">VERI*FACTU</ul>
34
+ </div>
35
+ <t t-if="information_block">
36
+ <t t-set="colclass" t-value="'col-5'" />
37
+ <div name="information_block" class="col-4">
38
+ <t t-out="information_block" />
39
+ </div>
40
+ <div name="address" t-att-class="colclass">
41
+ <t t-esc="address" />
42
+ </div>
43
+ </t>
44
+ <t t-if="not information_block">
45
+ <t t-set="colclass" t-value="'col-5 offset-4'" />
46
+ <div name="address" t-att-class="colclass">
47
+ <t t-esc="address" />
48
+ </div>
49
+ </t>
50
+ </div>
51
+ </div>
52
+ </template>
53
+ </odoo>
@@ -0,0 +1,50 @@
1
+ <?xml version="1.0" encoding="UTF-8" ?>
2
+ <!-- Copyright 2024 Jose Zambudio <jose@aurestic.es> ç
3
+ License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). -->
4
+ <odoo>
5
+ <record id="view_company_verifactu_form" model="ir.ui.view">
6
+ <field name="name">res.company.verifactu.form</field>
7
+ <field name="model">res.company</field>
8
+ <field name="inherit_id" ref="base.view_company_form" />
9
+ <field name="arch" type="xml">
10
+ <notebook position="inside">
11
+ <page name="verifactu" string="VERI*FACTU">
12
+ <group name="verifactu_enabled">
13
+ <field name="verifactu_enabled" string="Enabled?" />
14
+ </group>
15
+ <group invisible="not verifactu_enabled">
16
+ <group name="verifactu_config">
17
+ <field name="verifactu_test" string="Test environment?" />
18
+ <field name="verifactu_start_date" string="Start date" />
19
+ </group>
20
+ </group>
21
+ <group invisible="not verifactu_enabled">
22
+ <group name="verifactu_verifactu_chaining">
23
+ <field
24
+ name="verifactu_chaining_id"
25
+ string="Chaining reference"
26
+ required="verifactu_enabled"
27
+ />
28
+ </group>
29
+ </group>
30
+ <group invisible="not verifactu_enabled">
31
+ <group name="verifactu_description">
32
+ <field
33
+ name="verifactu_description"
34
+ string="Default description"
35
+ />
36
+ </group>
37
+ </group>
38
+ <group invisible="not verifactu_enabled">
39
+ <group name="verifactu_developer_id">
40
+ <field
41
+ name="verifactu_developer_id"
42
+ string="Developer reference"
43
+ />
44
+ </group>
45
+ </group>
46
+ </page>
47
+ </notebook>
48
+ </field>
49
+ </record>
50
+ </odoo>
@@ -0,0 +1,45 @@
1
+ <?xml version="1.0" encoding="utf-8" ?>
2
+ <!-- Copyright 2024 Aures TIC - Almudena de La Puente
3
+ License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). -->
4
+ <odoo>
5
+ <record id="verifactu_chaining_form_view" model="ir.ui.view">
6
+ <field name="name">verifactu.chaining.form</field>
7
+ <field name="model">verifactu.chaining</field>
8
+ <field name="arch" type="xml">
9
+ <form>
10
+ <sheet>
11
+ <group>
12
+ <field name="name" />
13
+ <field name="last_verifactu_invoice_entry_id" />
14
+ <field name="sif_id" />
15
+ <field name="installation_number" />
16
+ </group>
17
+ </sheet>
18
+ <chatter />
19
+ </form>
20
+ </field>
21
+ </record>
22
+ <record id="verifactu_chaining_tree_view" model="ir.ui.view">
23
+ <field name="name">verifactu.chaining.list</field>
24
+ <field name="model">verifactu.chaining</field>
25
+ <field name="arch" type="xml">
26
+ <list>
27
+ <field name="name" />
28
+ <field name="last_verifactu_invoice_entry_id" />
29
+ <field name="sif_id" />
30
+ <field name="installation_number" />
31
+ </list>
32
+ </field>
33
+ </record>
34
+ <record id="verifactu_chaining_action" model="ir.actions.act_window">
35
+ <field name="name">VERI*FACTU chainings</field>
36
+ <field name="path">verifactu-chainings</field>
37
+ <field name="res_model">verifactu.chaining</field>
38
+ <field name="view_mode">list,form</field>
39
+ </record>
40
+ <menuitem
41
+ id="verifactu_chaining_menu"
42
+ action="verifactu_chaining_action"
43
+ parent="l10n_es_aeat.menu_l10n_es_aeat_config"
44
+ />
45
+ </odoo>
@@ -0,0 +1,46 @@
1
+ <?xml version="1.0" encoding="utf-8" ?>
2
+ <!-- Copyright 2024 Aures TIC - Almudena de La Puente
3
+ License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). -->
4
+ <odoo>
5
+ <record id="verifactu_developer_form_view" model="ir.ui.view">
6
+ <field name="name">verifactu.developer.form</field>
7
+ <field name="model">verifactu.developer</field>
8
+ <field name="arch" type="xml">
9
+ <form>
10
+ <sheet>
11
+ <group>
12
+ <field name="name" />
13
+ <field name="vat" />
14
+ <field name="sif_name" />
15
+ <field name="version" />
16
+ <field name="responsibility_declaration" />
17
+ </group>
18
+ </sheet>
19
+ <chatter />
20
+ </form>
21
+ </field>
22
+ </record>
23
+ <record id="verifactu_developer_tree_view" model="ir.ui.view">
24
+ <field name="name">verifactu.developer.list</field>
25
+ <field name="model">verifactu.developer</field>
26
+ <field name="arch" type="xml">
27
+ <list>
28
+ <field name="name" />
29
+ <field name="vat" />
30
+ <field name="sif_name" />
31
+ <field name="version" />
32
+ </list>
33
+ </field>
34
+ </record>
35
+ <record id="verifactu_developer_action" model="ir.actions.act_window">
36
+ <field name="name">VERI*FACTU developers</field>
37
+ <field name="res_model">verifactu.developer</field>
38
+ <field name="path">verifactu-developers</field>
39
+ <field name="view_mode">list,form</field>
40
+ </record>
41
+ <menuitem
42
+ id="verifactu_developer_menu"
43
+ action="verifactu_developer_action"
44
+ parent="l10n_es_aeat.menu_l10n_es_aeat_config"
45
+ />
46
+ </odoo>
@@ -0,0 +1,134 @@
1
+ <?xml version="1.0" encoding="utf-8" ?>
2
+ <!-- Copyright 2024 Aures TIC - Almudena de La Puente
3
+ License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). -->
4
+ <odoo>
5
+ <record id="verifactu_invoice_entry_response_view_tree" model="ir.ui.view">
6
+ <field name="name">verifactu.invoice.entry.response.view.list</field>
7
+ <field name="model">verifactu.invoice.entry.response</field>
8
+ <field name="arch" type="xml">
9
+ <list create="false" delete="false" duplicate="0">
10
+ <field name="id" />
11
+ <field name="name" />
12
+ <field name="date_response" />
13
+ <field name="verifactu_csv" />
14
+ <field name="header" />
15
+ </list>
16
+ </field>
17
+ </record>
18
+ <record id="verifactu_invoice_entry_response_view_form" model="ir.ui.view">
19
+ <field name="name">verifactu.invoice.entry.response.view.form</field>
20
+ <field name="model">verifactu.invoice.entry.response</field>
21
+ <field name="arch" type="xml">
22
+ <form
23
+ string="VERI*FACTU Response"
24
+ create="false"
25
+ delete="false"
26
+ duplicate="0"
27
+ >
28
+ <sheet>
29
+ <h1 style="font-size: 1.9rem;">
30
+ <div class="row">
31
+ <div class="col col-md-8">
32
+ <label for="name" string="Name" />
33
+ <div>
34
+ <field name="name" style="width:80% !important;" />
35
+ </div>
36
+ </div>
37
+ </div>
38
+ </h1>
39
+ <h2 style="font-size: 1.5rem;">
40
+ <label for="date_response" string="Date" />
41
+ <div>
42
+ <field name="date_response" style="width:80% !important;" />
43
+ </div>
44
+ </h2>
45
+ <notebook>
46
+ <page string="Details">
47
+ <group>
48
+ <group name="verifactu1">
49
+ <field name="response" readonly="1" />
50
+ <field name="header" readonly="1" />
51
+ <field name="invoice_data" readonly="1" />
52
+ </group>
53
+ <group name="verifactu2">
54
+ <div class="o_row" name="recruitment_target">
55
+ <span>Other details</span>
56
+ </div>
57
+ </group>
58
+ </group>
59
+ </page>
60
+ <page string="Details">
61
+ <field name="response_line_ids" readonly="1">
62
+ <list>
63
+ <field name="entry_id" column_invisible="1" />
64
+ <field name="entry_response_id" />
65
+ <field name="document_name" />
66
+ <field name="create_date" />
67
+ <field
68
+ name="send_state"
69
+ widget="badge"
70
+ decoration-success="send_state == 'sent'"
71
+ decoration-danger="send_state == 'not_sent'"
72
+ decoration-warning="send_state in ('sent_w_errors', 'incorrect', 'cancel_incorrect', 'cancel_w_errors')"
73
+ decoration-muted="send_state == 'cancel'"
74
+ />
75
+ </list>
76
+ </field>
77
+ </page>
78
+ </notebook>
79
+ </sheet>
80
+ <chatter />
81
+ </form>
82
+ </field>
83
+ </record>
84
+ <record id="verifactu_invoice_entry_response_view_kanban" model="ir.ui.view">
85
+ <field name="name">verifactu.invoice.entry.response.view.kanban</field>
86
+ <field name="model">verifactu.invoice.entry.response</field>
87
+ <field name="arch" type="xml">
88
+ <kanban class="o_kanban_activity">
89
+ <field name="name" />
90
+ <field name="date_response" />
91
+ <templates>
92
+ <t t-name="card">
93
+ <field name="name" />
94
+ <field name="date_response" />
95
+ <field name="activity_type_id" />
96
+ </t>
97
+ </templates>
98
+ </kanban>
99
+ </field>
100
+ </record>
101
+ <record id="verifactu_invoice_entry_response_view_search" model="ir.ui.view">
102
+ <field name="name">verifactu.invoice.entry.response.view.search</field>
103
+ <field name="model">verifactu.invoice.entry.response</field>
104
+ <field name="arch" type="xml">
105
+ <search>
106
+ <field name="name" />
107
+ <group expand="0" string="Group By">
108
+ <filter
109
+ string="Activity Type"
110
+ name="name"
111
+ context="{'group_by':'activity_type_id'}"
112
+ />
113
+ </group>
114
+ </search>
115
+ </field>
116
+ </record>
117
+ <record id="action_verifactu_invoice_entry_response" model="ir.actions.act_window">
118
+ <field name="name">VERI*FACTU responses</field>
119
+ <field name="res_model">verifactu.invoice.entry.response</field>
120
+ <field name="path">verifactu-invoice-entry-responses</field>
121
+ <field name="view_mode">list,form</field>
122
+ <field name="help" type="html">
123
+ <p class="o_view_nocontent_smiling_face">
124
+ No VERI*FACTU responses found!
125
+ </p>
126
+ </field>
127
+ </record>
128
+ <menuitem
129
+ id="menu_verifactu_invoice_entry_response"
130
+ parent="l10n_es_aeat.menu_l10n_es_aeat_config"
131
+ action="action_verifactu_invoice_entry_response"
132
+ sequence="51"
133
+ />
134
+ </odoo>
@@ -0,0 +1,127 @@
1
+ <?xml version="1.0" encoding="utf-8" ?>
2
+ <odoo>
3
+ <record id="view_verifactu_invoice_entry_tree" model="ir.ui.view">
4
+ <field name="name">verifactu.invoice.entry.list</field>
5
+ <field name="model">verifactu.invoice.entry</field>
6
+ <field name="arch" type="xml">
7
+ <list create="false" edit="false" delete="false" duplicate="0">
8
+ <field name="create_date" />
9
+ <field name="verifactu_chaining_id" />
10
+ <field name="document_id" optional="hide" />
11
+ <field name="model" optional="hide" />
12
+ <field name="document_name" />
13
+ <field name="company_id" groups="base.group_multi_company" />
14
+ <field name="document_hash" />
15
+ <field name="previous_hash" />
16
+ <field name="entry_type" />
17
+ <field
18
+ name="send_state"
19
+ widget="badge"
20
+ decoration-success="send_state == 'sent'"
21
+ decoration-danger="send_state == 'not_sent'"
22
+ decoration-warning="send_state in ('sent_w_errors', 'incorrect', 'cancel_incorrect', 'cancel_w_errors')"
23
+ decoration-muted="send_state == 'cancel'"
24
+ />
25
+ </list>
26
+ </field>
27
+ </record>
28
+ <record id="view_verifactu_invoice_entry_form" model="ir.ui.view">
29
+ <field name="name">verifactu.invoice.entry.form</field>
30
+ <field name="model">verifactu.invoice.entry</field>
31
+ <field name="arch" type="xml">
32
+ <form create="false" edit="false" delete="false" duplicate="0">
33
+ <sheet>
34
+ <group>
35
+ <group>
36
+ <field name="verifactu_chaining_id" />
37
+ <field name="document_id" />
38
+ <field name="model" />
39
+ <field name="document_name" />
40
+ <field
41
+ name="company_id"
42
+ groups="base.group_multi_company"
43
+ />
44
+ </group>
45
+ <group>
46
+ <field name="previous_invoice_entry_id" />
47
+ <field name="document_hash" />
48
+ <field name="create_date" />
49
+ <field name="entry_type" />
50
+ <field name="send_state" />
51
+ </group>
52
+ </group>
53
+ <notebook>
54
+ <page string="AEAT DATA">
55
+ <group>
56
+ <field name="aeat_json_data" widget="text" />
57
+ </group>
58
+ </page>
59
+ <page string="Responses">
60
+ <group>
61
+ <field name="response_line_ids">
62
+ <list>
63
+ <field name="entry_id" column_invisible="1" />
64
+ <field name="entry_response_id" />
65
+ <field name="create_date" />
66
+ <field
67
+ name="send_state"
68
+ widget="badge"
69
+ decoration-success="send_state == 'sent'"
70
+ decoration-danger="send_state == 'not_sent'"
71
+ decoration-warning="send_state in ('sent_w_errors', 'incorrect', 'cancel_incorrect', 'cancel_w_errors')"
72
+ decoration-muted="send_state == 'cancel'"
73
+ />
74
+ </list>
75
+ </field>
76
+ </group>
77
+ </page>
78
+ </notebook>
79
+ </sheet>
80
+ </form>
81
+ </field>
82
+ </record>
83
+ <record id="view_verifactu_invoice_entry_search" model="ir.ui.view">
84
+ <field name="name">verifactu.invoice.entry.search</field>
85
+ <field name="model">verifactu.invoice.entry</field>
86
+ <field name="arch" type="xml">
87
+ <search>
88
+ <field name="document_id" />
89
+ <field name="company_id" />
90
+ <field name="document_hash" />
91
+ <filter
92
+ string="Company"
93
+ name="group_by_company"
94
+ domain="[]"
95
+ context="{'group_by': 'company_id'}"
96
+ />
97
+ <filter
98
+ string="Chaining"
99
+ name="group_by_chaining"
100
+ domain="[]"
101
+ context="{'group_by': 'verifactu_chaining_id'}"
102
+ />
103
+ <filter
104
+ string="Date"
105
+ name="group_by_date"
106
+ domain="[]"
107
+ context="{'group_by': 'create_date:month'}"
108
+ />
109
+ </search>
110
+ </field>
111
+ </record>
112
+ <record id="action_verifactu_invoice_entry" model="ir.actions.act_window">
113
+ <field name="name">VERI*FACTU invoices</field>
114
+ <field name="res_model">verifactu.invoice.entry</field>
115
+ <field name="path">verifactu-invoice-entries</field>
116
+ <field name="view_mode">list,form</field>
117
+ <field name="help" type="html">
118
+ <p class="o_view_nocontent_smiling_face">
119
+ No VERI*FACTU invoice entries found!
120
+ </p>
121
+ <p>
122
+ Invoice entries are automatically created when invoices are validated
123
+ with VERI*FACTU enabled.
124
+ </p>
125
+ </field>
126
+ </record>
127
+ </odoo>
@@ -0,0 +1,16 @@
1
+ <?xml version="1.0" encoding="utf-8" ?>
2
+ <!-- Copyright 2024 Aures TIC - Almudena de La Puente
3
+ Copyright 2025 Tecnativa - Pedro M. Baeza
4
+ License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). -->
5
+ <odoo>
6
+ <record id="l10n_es_verifactu_map_lines_view_tree" model="ir.ui.view">
7
+ <field name="model">verifactu.map.line</field>
8
+ <field name="arch" type="xml">
9
+ <list editable="bottom">
10
+ <field name="code" />
11
+ <field name="name" />
12
+ <field name="tax_xmlid_ids" widget="many2many_tags" />
13
+ </list>
14
+ </field>
15
+ </record>
16
+ </odoo>
@@ -0,0 +1,54 @@
1
+ <?xml version="1.0" encoding="utf-8" ?>
2
+ <!-- Copyright 2024 Aures TIC - Almudena de La Puente
3
+ License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). -->
4
+ <odoo>
5
+ <record id="verifactu_map_view_tree" model="ir.ui.view">
6
+ <field name="name">verifactu.map.view.list</field>
7
+ <field name="model">verifactu.map</field>
8
+ <field name="arch" type="xml">
9
+ <list>
10
+ <field name="name" />
11
+ <field name="date_from" />
12
+ <field name="date_to" />
13
+ </list>
14
+ </field>
15
+ </record>
16
+ <record id="verifactu_map_view_form" model="ir.ui.view">
17
+ <field name="name">verifactu.map.view.form</field>
18
+ <field name="model">verifactu.map</field>
19
+ <field name="arch" type="xml">
20
+ <form>
21
+ <sheet>
22
+ <group>
23
+ <group>
24
+ <field name="name" />
25
+ </group>
26
+ <group>
27
+ <field name="date_from" />
28
+ <field name="date_to" />
29
+ </group>
30
+ </group>
31
+ <group string="Mapping Lines" col="4">
32
+ <field
33
+ name="map_lines"
34
+ nolabel="1"
35
+ colspan="4"
36
+ context="{'active_test': False}"
37
+ />
38
+ </group>
39
+ </sheet>
40
+ </form>
41
+ </field>
42
+ </record>
43
+ <record id="action_verifactu_mapping" model="ir.actions.act_window">
44
+ <field name="name">VERI*FACTU mappings</field>
45
+ <field name="res_model">verifactu.map</field>
46
+ <field name="path">verifactu-maps</field>
47
+ <field name="view_mode">list,form</field>
48
+ </record>
49
+ <menuitem
50
+ id="menu_verifactu_map"
51
+ parent="l10n_es_aeat.menu_l10n_es_aeat_config"
52
+ action="action_verifactu_mapping"
53
+ />
54
+ </odoo>
@@ -0,0 +1,43 @@
1
+ <?xml version="1.0" encoding="utf-8" ?>
2
+ <!-- Copyright 2024 Aures TIC - Almudena de La Puente
3
+ License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). -->
4
+ <odoo>
5
+ <record id="verifactu_registration_keys_view_tree" model="ir.ui.view">
6
+ <field name="model">verifactu.registration.key</field>
7
+ <field name="arch" type="xml">
8
+ <list editable="bottom">
9
+ <field name="code" />
10
+ <field name="name" />
11
+ <field name="verifactu_tax_key" />
12
+ </list>
13
+ </field>
14
+ </record>
15
+ <record id="verifactu_registration_keys_view_search" model="ir.ui.view">
16
+ <field name="model">verifactu.registration.key</field>
17
+ <field name="arch" type="xml">
18
+ <search>
19
+ <field name="name" />
20
+ <field name="code" />
21
+ <field name="verifactu_tax_key" />
22
+ <group expand="0" string="Group By">
23
+ <filter
24
+ string="Tax Type"
25
+ name="tax_type"
26
+ context="{'group_by':'verifactu_tax_key'}"
27
+ />
28
+ </group>
29
+ </search>
30
+ </field>
31
+ </record>
32
+ <record id="action_verifactu_registration_keys" model="ir.actions.act_window">
33
+ <field name="name">VERI*FACTU registration keys</field>
34
+ <field name="res_model">verifactu.registration.key</field>
35
+ <field name="path">verifactu-registration-keys</field>
36
+ <field name="view_mode">list,form</field>
37
+ </record>
38
+ <menuitem
39
+ id="menu_verifactu_registration_keys"
40
+ parent="l10n_es_aeat.menu_l10n_es_aeat_config"
41
+ action="action_verifactu_registration_keys"
42
+ />
43
+ </odoo>
@@ -0,0 +1,2 @@
1
+ from . import account_move_reversal
2
+ from . import verifactu_cancel_invoice_wizard
@@ -0,0 +1,16 @@
1
+ # Copyright 2024 Aures TIC - Almudena de La Puente <almudena@aurestic.es>
2
+ # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
3
+
4
+
5
+ from odoo import models
6
+
7
+
8
+ class AccountMoveReversal(models.TransientModel):
9
+ _inherit = "account.move.reversal"
10
+
11
+ def reverse_moves(self, is_modify=False):
12
+ res = super().reverse_moves(is_modify=is_modify)
13
+ self.move_ids.filtered(lambda mov: mov.move_type == "out_invoice").mapped(
14
+ "reversal_move_ids"
15
+ ).write({"verifactu_refund_type": "I"})
16
+ return res
@@ -0,0 +1,24 @@
1
+ # Copyright 2025 Factor Libre - Almudena de La Puente
2
+ # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
3
+ from odoo import fields, models
4
+
5
+
6
+ class VerifactuCancelInvoiceWizard(models.TransientModel):
7
+ _name = "verifactu.cancel.invoice.wizard"
8
+ _description = "VERI*FACTU cancel invoice wizard"
9
+
10
+ invoice_id = fields.Many2one(
11
+ comodel_name="account.move",
12
+ string="Invoice",
13
+ required=True,
14
+ readonly=True,
15
+ )
16
+ cancel_reason = fields.Char(string="Cancellation reason")
17
+
18
+ def cancel_invoice_in_verifactu(self):
19
+ self.ensure_one()
20
+ invoice = self.invoice_id
21
+ invoice.verifactu_cancel_reason = self.cancel_reason
22
+ res = invoice.with_context(verifactu_cancel=True).button_cancel()
23
+ invoice.cancel_verifactu()
24
+ return res