Skip to content

Commit

Permalink
[FIX] l10n_es_aeat_mod390: Calculation of field 85
Browse files Browse the repository at this point in the history
  • Loading branch information
LauraCForgeFlow committed Jan 24, 2025
1 parent 1a3ba85 commit 22a5b60
Show file tree
Hide file tree
Showing 2 changed files with 61 additions and 10 deletions.
35 changes: 28 additions & 7 deletions l10n_es_aeat_mod390/models/mod390.py
Original file line number Diff line number Diff line change
Expand Up @@ -408,11 +408,10 @@ class L10nEsAeatMod390Report(models.Model):
string="[85] Compens. ejercicio anterior",
readonly=True,
states=EDITABLE_ON_CALCULATED,
help="Si en la autoliquidación del último período del ejercicio "
"anterior resultó un saldo a su favor y usted optó por la "
"compensación, consigne en esta casilla la cantidad a "
"compensar, salvo que la misma haya sido modificada por la "
"Administración, en cuyo caso se consignará esta última.",
help="Se consignará el importe de las cuotas pendientes de compensación "
"generadas en ejercicios anteriores y aplicadas en el ejercicio (es "
"decir, que se hubiesen consignado en la casilla 78 de alguna de las "
"autoliquidaciones del periodo).",
)
casilla_86 = fields.Float(
compute="_compute_casilla_86",
Expand Down Expand Up @@ -817,6 +816,27 @@ def _check_type(self):
_("You cannot make complementary reports for this model.")
)

def _calculate_casilla_85(self, reports_303_this_year):
self.ensure_one()
report_303_first_period = reports_303_this_year.filtered(
lambda r: r.period_type in {"1T", "1"}
)
# Si no hay autoliquidaciones del primer periodo del ejercicio, asumimos
# que el total viene de ejercicios anteriores
if not report_303_first_period:
return sum(reports_303_this_year.mapped("cuota_compensar"))

Check warning on line 827 in l10n_es_aeat_mod390/models/mod390.py

View check run for this annotation

Codecov / codecov/patch

l10n_es_aeat_mod390/models/mod390.py#L827

Added line #L827 was not covered by tests
# Obtenemos cuotas pendientes de compensación generadas en ejercicios anteriores
# Casilla [110] de la primera autoliquidación del ejercicio
remaining_cuota_compensar = report_303_first_period.potential_cuota_compensar
# Obtenemos total a compensar aplicado en el ejercicio
# Casilla [78] de todas las autoliquidaciones del ejercicio (suma)
total_cuota_compensar = sum(reports_303_this_year.mapped("cuota_compensar"))
# Si durante el ejercicio se ha aplicado más de remaining_cuota_compensar,
# entonces hemos aplicado el total durante el ejercicio.
# En caso contrario, solo hemos aplicado una parte de
# remaining_cuota_compensar, usamos la suma de las casillas [78]
return min(total_cuota_compensar, remaining_cuota_compensar)

def calculate(self):
res = super().calculate()
for mod390 in self:
Expand All @@ -832,8 +852,9 @@ def calculate(self):
)
if not reports_303_this_year:
continue
# casilla 85 = sumatorio de las casilla 78 de los periodos del año
casilla_85 = sum(reports_303_this_year.mapped("cuota_compensar"))
# casilla 85 = cuotas pendientes de compensación generadas en ejercicios
# anteriores y aplicadas en el ejercicio
casilla_85 = self._calculate_casilla_85(reports_303_this_year)
# casilla 95 = sumatorio de las casilla 71 de los periodos del año que
# sean a ingresar
casilla_95 = sum(
Expand Down
36 changes: 33 additions & 3 deletions l10n_es_aeat_mod390/tests/test_l10n_es_aeat_mod390.py
Original file line number Diff line number Diff line change
Expand Up @@ -409,6 +409,26 @@ def test_model_390_using_303_02(self):
model303_4T.button_calculate()
self.model390_2018.button_calculate()
# Check casilla_85, casilla_95, casilla_97, casilla_98, casilla_662
self.assertAlmostEqual(self.model390_2018.casilla_85, 0.0, 2)
self.assertAlmostEqual(self.model390_2018.casilla_95, 0.0, 2)
self.assertAlmostEqual(self.model390_2018.casilla_97, 0.0, 2)
self.assertAlmostEqual(self.model390_2018.casilla_98, 1235.33, 2)
self.assertAlmostEqual(self.model390_2018.casilla_662, 0.0, 2)

model303_1T.potential_cuota_compensar = 500.0
model303_1T.button_calculate()
self.model390_2018.button_calculate()
# Check casilla_85, casilla_95, casilla_97, casilla_98, casilla_662
self.assertAlmostEqual(self.model390_2018.casilla_85, 500.0, 2)
self.assertAlmostEqual(self.model390_2018.casilla_95, 0.0, 2)
self.assertAlmostEqual(self.model390_2018.casilla_97, 0.0, 2)
self.assertAlmostEqual(self.model390_2018.casilla_98, 1235.33, 2)
self.assertAlmostEqual(self.model390_2018.casilla_662, 0.0, 2)

model303_1T.potential_cuota_compensar = 1000.0
model303_1T.button_calculate()
self.model390_2018.button_calculate()
# Check casilla_85, casilla_95, casilla_97, casilla_98, casilla_662
self.assertAlmostEqual(self.model390_2018.casilla_85, 674.48, 2)
self.assertAlmostEqual(self.model390_2018.casilla_95, 0.0, 2)
self.assertAlmostEqual(self.model390_2018.casilla_97, 0.0, 2)
Expand Down Expand Up @@ -478,18 +498,28 @@ def test_model_390_using_303_03(self):
model303_4T.button_calculate()
self.model390_2018.button_calculate()
# Check casilla_85, casilla_95, casilla_97, casilla_98, casilla_662
self.assertAlmostEqual(self.model390_2018.casilla_85, 805.25, 2)
self.assertAlmostEqual(self.model390_2018.casilla_85, 0.0, 2)
self.assertAlmostEqual(self.model390_2018.casilla_95, 2302.12, 2)
self.assertAlmostEqual(self.model390_2018.casilla_97, 100.0, 2)
self.assertAlmostEqual(self.model390_2018.casilla_98, 0.0, 2)
self.assertAlmostEqual(self.model390_2018.casilla_662, 0.0, 2)

model303_1T.potential_cuota_compensar = 2000.0
model303_1T.button_calculate()
self.model390_2018.button_calculate()
# Check casilla_85, casilla_95, casilla_97, casilla_98, casilla_662
self.assertAlmostEqual(self.model390_2018.casilla_85, 1610.50, 2)
self.assertAlmostEqual(self.model390_2018.casilla_95, 1496.87, 2)
self.assertAlmostEqual(self.model390_2018.casilla_97, 100.0, 2)
self.assertAlmostEqual(self.model390_2018.casilla_98, 0.0, 2)
self.assertAlmostEqual(self.model390_2018.casilla_662, 0.0, 2)

model303_4T.return_last_period = True
model303_4T.button_calculate()
self.model390_2018.button_calculate()
# Check casilla_85, casilla_95, casilla_97, casilla_98, casilla_662
self.assertAlmostEqual(self.model390_2018.casilla_85, 905.25, 2)
self.assertAlmostEqual(self.model390_2018.casilla_95, 2302.12, 2)
self.assertAlmostEqual(self.model390_2018.casilla_85, 1710.5, 2)
self.assertAlmostEqual(self.model390_2018.casilla_95, 1496.87, 2)
self.assertAlmostEqual(self.model390_2018.casilla_97, 0.0, 2)
self.assertAlmostEqual(self.model390_2018.casilla_98, 100.00, 2)
self.assertAlmostEqual(self.model390_2018.casilla_662, 0.0, 2)

0 comments on commit 22a5b60

Please sign in to comment.