Skip to content

Commit 52d3985

Browse files
[IMP] l10n_es_aeat_mod390_vat_prorate: Added 12. Prorates
1 parent a67f120 commit 52d3985

File tree

3 files changed

+330
-3
lines changed

3 files changed

+330
-3
lines changed
Lines changed: 33 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,33 @@
1-
id,alignment,apply_sign,bool_no,bool_yes,conditional_expression,decimal_size,export_config_id:id,export_type,expression,fixed_value,name,sequence,size,subconfig_id:id
2-
"l10n_es_aeat_mod390.aeat_mod390_2024_sub04_export_line_43","right","True",,,,"2","l10n_es_aeat_mod390.aeat_mod390_2024_sub04_export_config","float",${object.casilla_522},,"5. Operaciones Reg. Gral. - IVA deducible - Regularización por aplicación porcentaje definitivo de prorrata [522]","43","17",
3-
"l10n_es_aeat_mod390.aeat_mod390_2025_sub04_export_line_43","right","True",,,,"2","l10n_es_aeat_mod390.aeat_mod390_2025_sub04_export_config","float",${object.casilla_522},,"5. Operaciones Reg. Gral. - IVA deducible - Regularización por aplicación porcentaje definitivo de prorrata [522]","43","17",
1+
id,expression
2+
l10n_es_aeat_mod390.aeat_mod390_2024_sub04_export_line_43,${object.casilla_522}
3+
l10n_es_aeat_mod390.aeat_mod390_2025_sub04_export_line_43,${object.casilla_522}
4+
l10n_es_aeat_mod390.aeat_mod390_2019_sub07_export_line_17,${object.first_dev_activity}
5+
l10n_es_aeat_mod390.aeat_mod390_2019_sub07_export_line_18,${object.first_dev_activity_cnae_code}
6+
l10n_es_aeat_mod390.aeat_mod390_2019_sub07_export_line_19,${object.first_dev_activity_operation_amount}
7+
l10n_es_aeat_mod390.aeat_mod390_2019_sub07_export_line_20,${object.first_dev_activity_operation_amount_deductible}
8+
l10n_es_aeat_mod390.aeat_mod390_2019_sub07_export_line_21,${object.first_dev_activity_prorate_type}
9+
l10n_es_aeat_mod390.aeat_mod390_2019_sub07_export_line_22,${object.first_dev_activity_prorate_percent}
10+
l10n_es_aeat_mod390.aeat_mod390_2019_sub07_export_line_23,${object.second_dev_activity}
11+
l10n_es_aeat_mod390.aeat_mod390_2019_sub07_export_line_24,${object.second_dev_activity_cnae_code}
12+
l10n_es_aeat_mod390.aeat_mod390_2019_sub07_export_line_25,${object.second_dev_activity_operation_amount}
13+
l10n_es_aeat_mod390.aeat_mod390_2019_sub07_export_line_26,${object.second_dev_activity_operation_amount_deductible}
14+
l10n_es_aeat_mod390.aeat_mod390_2019_sub07_export_line_27,${object.second_dev_activity_prorate_type}
15+
l10n_es_aeat_mod390.aeat_mod390_2019_sub07_export_line_28,${object.second_dev_activity_prorate_percent}
16+
l10n_es_aeat_mod390.aeat_mod390_2019_sub07_export_line_29,${object.third_dev_activity}
17+
l10n_es_aeat_mod390.aeat_mod390_2019_sub07_export_line_30,${object.third_dev_activity_cnae_code}
18+
l10n_es_aeat_mod390.aeat_mod390_2019_sub07_export_line_31,${object.third_dev_activity_operation_amount}
19+
l10n_es_aeat_mod390.aeat_mod390_2019_sub07_export_line_32,${object.third_dev_activity_operation_amount_deductible}
20+
l10n_es_aeat_mod390.aeat_mod390_2019_sub07_export_line_33,${object.third_dev_activity_prorate_type}
21+
l10n_es_aeat_mod390.aeat_mod390_2019_sub07_export_line_34,${object.third_dev_activity_prorate_percent}
22+
l10n_es_aeat_mod390.aeat_mod390_2019_sub07_export_line_35,${object.fourth_dev_activity}
23+
l10n_es_aeat_mod390.aeat_mod390_2019_sub07_export_line_36,${object.fourth_dev_activity_cnae_code}
24+
l10n_es_aeat_mod390.aeat_mod390_2019_sub07_export_line_37,${object.fourth_dev_activity_operation_amount}
25+
l10n_es_aeat_mod390.aeat_mod390_2019_sub07_export_line_38,${object.fourth_dev_activity_operation_amount_deductible}
26+
l10n_es_aeat_mod390.aeat_mod390_2019_sub07_export_line_39,${object.fourth_dev_activity_prorate_type}
27+
l10n_es_aeat_mod390.aeat_mod390_2019_sub07_export_line_40,${object.fourth_dev_activity_prorate_percent}
28+
l10n_es_aeat_mod390.aeat_mod390_2019_sub07_export_line_41,${object.fifth_dev_activity}
29+
l10n_es_aeat_mod390.aeat_mod390_2019_sub07_export_line_42,${object.fifth_dev_activity_cnae_code}
30+
l10n_es_aeat_mod390.aeat_mod390_2019_sub07_export_line_43,${object.fifth_dev_activity_operation_amount}
31+
l10n_es_aeat_mod390.aeat_mod390_2019_sub07_export_line_44,${object.fifth_dev_activity_operation_amount_deductible}
32+
l10n_es_aeat_mod390.aeat_mod390_2019_sub07_export_line_45,${object.fifth_dev_activity_prorate_type}
33+
l10n_es_aeat_mod390.aeat_mod390_2019_sub07_export_line_46,${object.fifth_dev_activity_prorate_percent}

l10n_es_aeat_mod390_vat_prorate/models/mod390.py

Lines changed: 174 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,16 @@
11
# Copyright 2025 Moduon Team S.L.
2+
# Copyright 2026 Tecnativa - Christian Ramos
23
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl
34

5+
import math
6+
47
from odoo import api, exceptions, fields, models
58

9+
ACTIVITY_PRORATE_TYPES = [
10+
("G", "General"),
11+
("E", "Especial"),
12+
]
13+
614

715
class L10nEsAeatMod390Report(models.Model):
816
_inherit = "l10n.es.aeat.mod390.report"
@@ -20,6 +28,172 @@ class L10nEsAeatMod390Report(models.Model):
2028
readonly=True,
2129
)
2230

31+
first_dev_activity = fields.Char(string="1 - Actividad desarrollada", size=40)
32+
first_dev_activity_cnae_code = fields.Char(string="1 - Código CNAE [114]", size=3)
33+
first_dev_activity_operation_amount = fields.Float(
34+
string="1 - Importe operaciones [115]",
35+
digits=(15, 2),
36+
)
37+
first_dev_activity_operation_amount_deductible = fields.Float(
38+
string="1 - Importe de operaciones con derecho a deducción [116]",
39+
digits=(15, 2),
40+
)
41+
first_dev_activity_prorate_type = fields.Selection(
42+
ACTIVITY_PRORATE_TYPES,
43+
string="1 - Tipo de prorrata [117]",
44+
)
45+
first_dev_activity_prorate_percent = fields.Float(
46+
string="1 - % de prorrata [118]",
47+
readonly=True,
48+
compute="_compute_dev_activity_first_prorate_percentage",
49+
)
50+
second_dev_activity = fields.Char(string="2 - Actividad desarrollada", size=40)
51+
second_dev_activity_cnae_code = fields.Char(string="2 - Código CNAE [114]", size=3)
52+
second_dev_activity_operation_amount = fields.Float(
53+
string="2 - Importe operaciones [115]",
54+
digits=(15, 2),
55+
)
56+
second_dev_activity_operation_amount_deductible = fields.Float(
57+
string="2 - Importe de operaciones con derecho a deducción [116]",
58+
digits=(15, 2),
59+
)
60+
second_dev_activity_prorate_type = fields.Selection(
61+
ACTIVITY_PRORATE_TYPES,
62+
string="2 - Tipo de prorrata [117]",
63+
)
64+
second_dev_activity_prorate_percent = fields.Float(
65+
string="2 - % de prorrata [118]",
66+
readonly=True,
67+
compute="_compute_dev_activity_second_prorate_percentage",
68+
)
69+
third_dev_activity = fields.Char(string="3 - Actividad desarrollada", size=40)
70+
third_dev_activity_cnae_code = fields.Char(string="3 - Código CNAE [114]", size=3)
71+
third_dev_activity_operation_amount = fields.Float(
72+
string="3 - Importe operaciones [115]",
73+
digits=(15, 2),
74+
)
75+
third_dev_activity_operation_amount_deductible = fields.Float(
76+
string="3 - Importe de operaciones con derecho a deducción [116]",
77+
digits=(15, 2),
78+
)
79+
third_dev_activity_prorate_type = fields.Selection(
80+
ACTIVITY_PRORATE_TYPES,
81+
string="3 - Tipo de prorrata [117]",
82+
)
83+
third_dev_activity_prorate_percent = fields.Float(
84+
string="3 - % de prorrata [118]",
85+
readonly=True,
86+
compute="_compute_dev_activity_third_prorate_percentage",
87+
)
88+
fourth_dev_activity = fields.Char(string="4 - Actividad desarrollada", size=40)
89+
fourth_dev_activity_cnae_code = fields.Char(string="4 - Código CNAE [114]", size=3)
90+
fourth_dev_activity_operation_amount = fields.Float(
91+
string="4 - Importe operaciones [115]",
92+
digits=(15, 2),
93+
)
94+
fourth_dev_activity_operation_amount_deductible = fields.Float(
95+
string="4 - Importe de operaciones con derecho a deducción [116]",
96+
digits=(15, 2),
97+
)
98+
fourth_dev_activity_prorate_type = fields.Selection(
99+
ACTIVITY_PRORATE_TYPES,
100+
string="4 - Tipo de prorrata [117]",
101+
)
102+
fourth_dev_activity_prorate_percent = fields.Float(
103+
string="4 - % de prorrata [118]",
104+
readonly=True,
105+
compute="_compute_dev_activity_fourth_prorate_percentage",
106+
)
107+
fifth_dev_activity = fields.Char(string="5 - Actividad desarrollada", size=40)
108+
fifth_dev_activity_cnae_code = fields.Char(string="5 - Código CNAE [114]", size=3)
109+
fifth_dev_activity_operation_amount = fields.Float(
110+
string="5 - Importe operaciones [115]",
111+
digits=(15, 2),
112+
)
113+
fifth_dev_activity_operation_amount_deductible = fields.Float(
114+
string="5 - Importe de operaciones con derecho a deducción [116]",
115+
digits=(15, 2),
116+
)
117+
fifth_dev_activity_prorate_type = fields.Selection(
118+
ACTIVITY_PRORATE_TYPES,
119+
string="5 - Tipo de prorrata [117]",
120+
)
121+
fifth_dev_activity_prorate_percent = fields.Float(
122+
string="5 - % de prorrata [118]",
123+
readonly=True,
124+
compute="_compute_dev_activity_fifth_prorate_percentage",
125+
)
126+
127+
@api.depends(
128+
"first_dev_activity_operation_amount",
129+
"first_dev_activity_operation_amount_deductible",
130+
)
131+
def _compute_dev_activity_first_prorate_percentage(self):
132+
for record in self:
133+
record.first_dev_activity_prorate_percent = (
134+
self._get_dev_activity_prorate_percentage(
135+
record.first_dev_activity_operation_amount,
136+
record.first_dev_activity_operation_amount_deductible,
137+
)
138+
)
139+
140+
@api.depends(
141+
"second_dev_activity_operation_amount",
142+
"second_dev_activity_operation_amount_deductible",
143+
)
144+
def _compute_dev_activity_second_prorate_percentage(self):
145+
for record in self:
146+
record.second_dev_activity_prorate_percent = (
147+
self._get_dev_activity_prorate_percentage(
148+
record.second_dev_activity_operation_amount,
149+
record.second_dev_activity_operation_amount_deductible,
150+
)
151+
)
152+
153+
@api.depends(
154+
"third_dev_activity_operation_amount",
155+
"third_dev_activity_operation_amount_deductible",
156+
)
157+
def _compute_dev_activity_third_prorate_percentage(self):
158+
for record in self:
159+
record.third_dev_activity_prorate_percent = (
160+
self._get_dev_activity_prorate_percentage(
161+
record.third_dev_activity_operation_amount,
162+
record.third_dev_activity_operation_amount_deductible,
163+
)
164+
)
165+
166+
@api.depends(
167+
"fourth_dev_activity_operation_amount",
168+
"fourth_dev_activity_operation_amount_deductible",
169+
)
170+
def _compute_dev_activity_fourth_prorate_percentage(self):
171+
for record in self:
172+
record.fourth_dev_activity_prorate_percent = (
173+
self._get_dev_activity_prorate_percentage(
174+
record.fourth_dev_activity_operation_amount,
175+
record.fourth_dev_activity_operation_amount_deductible,
176+
)
177+
)
178+
179+
@api.depends(
180+
"fifth_dev_activity_operation_amount",
181+
"fifth_dev_activity_operation_amount_deductible",
182+
)
183+
def _compute_dev_activity_fifth_prorate_percentage(self):
184+
for record in self:
185+
record.fifth_dev_activity_prorate_percent = (
186+
self._get_dev_activity_prorate_percentage(
187+
record.fifth_dev_activity_operation_amount,
188+
record.fifth_dev_activity_operation_amount_deductible,
189+
)
190+
)
191+
192+
def _get_dev_activity_prorate_percentage(self, amount, amount_deductible):
193+
if amount > 0 and amount_deductible > 0:
194+
return math.ceil((amount_deductible / amount) * 100)
195+
return 0.0
196+
23197
@api.depends(
24198
"company_id.vat_prorate_ids",
25199
"company_id.with_vat_prorate",

l10n_es_aeat_mod390_vat_prorate/views/mod390_views.xml

Lines changed: 123 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,129 @@
3232
readonly="state != 'draft'"
3333
/>
3434
</field>
35+
<notebook position="inside">
36+
<page string="12. Prorrata" invisible="not with_vat_prorate">
37+
<group>
38+
<group string="Desarrollo - 1ª Actividad">
39+
<field
40+
name="first_dev_activity"
41+
readonly="state != 'calculated'"
42+
required="state == 'calculated' and with_vat_prorate"
43+
/>
44+
<field
45+
name="first_dev_activity_cnae_code"
46+
readonly="state != 'calculated'"
47+
required="state == 'calculated' and with_vat_prorate"
48+
/>
49+
<field
50+
name="first_dev_activity_operation_amount"
51+
readonly="state != 'calculated'"
52+
/>
53+
<field
54+
name="first_dev_activity_operation_amount_deductible"
55+
readonly="state != 'calculated'"
56+
/>
57+
<field
58+
name="first_dev_activity_prorate_type"
59+
readonly="state != 'calculated'"
60+
/>
61+
<field name="first_dev_activity_prorate_percent" />
62+
</group>
63+
<group string="Desarrollo - 2ª Actividad">
64+
<field
65+
name="second_dev_activity"
66+
readonly="state != 'calculated'"
67+
/>
68+
<field
69+
name="second_dev_activity_cnae_code"
70+
readonly="state != 'calculated'"
71+
/>
72+
<field
73+
name="second_dev_activity_operation_amount"
74+
readonly="state != 'calculated'"
75+
/>
76+
<field
77+
name="second_dev_activity_operation_amount_deductible"
78+
readonly="state != 'calculated'"
79+
/>
80+
<field
81+
name="second_dev_activity_prorate_type"
82+
readonly="state != 'calculated'"
83+
/>
84+
<field name="second_dev_activity_prorate_percent" />
85+
</group>
86+
<group string="Desarrollo - 3ª Actividad">
87+
<field
88+
name="third_dev_activity"
89+
readonly="state != 'calculated'"
90+
/>
91+
<field
92+
name="third_dev_activity_cnae_code"
93+
readonly="state != 'calculated'"
94+
/>
95+
<field
96+
name="third_dev_activity_operation_amount"
97+
readonly="state != 'calculated'"
98+
/>
99+
<field
100+
name="third_dev_activity_operation_amount_deductible"
101+
readonly="state != 'calculated'"
102+
/>
103+
<field
104+
name="third_dev_activity_prorate_type"
105+
readonly="state != 'calculated'"
106+
/>
107+
<field name="third_dev_activity_prorate_percent" />
108+
</group>
109+
<group string="Desarrollo - 4ª Actividad">
110+
<field
111+
name="fourth_dev_activity"
112+
readonly="state != 'calculated'"
113+
/>
114+
<field
115+
name="fourth_dev_activity_cnae_code"
116+
readonly="state != 'calculated'"
117+
/>
118+
<field
119+
name="fourth_dev_activity_operation_amount"
120+
readonly="state != 'calculated'"
121+
/>
122+
<field
123+
name="fourth_dev_activity_operation_amount_deductible"
124+
readonly="state != 'calculated'"
125+
/>
126+
<field
127+
name="fourth_dev_activity_prorate_type"
128+
readonly="state != 'calculated'"
129+
/>
130+
<field name="fourth_dev_activity_prorate_percent" />
131+
</group>
132+
<group string="Desarrollo - 5ª Actividad">
133+
<field
134+
name="fifth_dev_activity"
135+
readonly="state != 'calculated'"
136+
/>
137+
<field
138+
name="fifth_dev_activity_cnae_code"
139+
readonly="state != 'calculated'"
140+
/>
141+
<field
142+
name="fifth_dev_activity_operation_amount"
143+
readonly="state != 'calculated'"
144+
/>
145+
<field
146+
name="fifth_dev_activity_operation_amount_deductible"
147+
readonly="state != 'calculated'"
148+
/>
149+
<field
150+
name="fifth_dev_activity_prorate_type"
151+
readonly="state != 'calculated'"
152+
/>
153+
<field name="fifth_dev_activity_prorate_percent" />
154+
</group>
155+
</group>
156+
</page>
157+
</notebook>
35158
</field>
36159
</record>
37160
</odoo>

0 commit comments

Comments
 (0)