Skip to content

Commit

Permalink
l10n_it_dichiarazione_intento: permit to add dichiarazione.intento re…
Browse files Browse the repository at this point in the history
…cords that exceeds the limit_amount of dichiarazione.intento.yearly.limit
  • Loading branch information
fredzamoabg committed Jul 22, 2021
1 parent 98bbab7 commit 818119e
Show file tree
Hide file tree
Showing 3 changed files with 28 additions and 7 deletions.
12 changes: 10 additions & 2 deletions l10n_it_dichiarazione_intento/models/account_invoice.py
Original file line number Diff line number Diff line change
Expand Up @@ -79,14 +79,22 @@ def action_move_create(self):
'change fiscal position and verify applied tax'))
else:
continue
plafond = self.env.user.company_id.\
dichiarazione_yearly_limit_ids.filtered(
lambda r: r.year == str(fields.first(dichiarazioni).date_start.year)
)
available_plafond = plafond.limit_amount - plafond.actual_used_amount
sign = 1 if invoice.type in ['out_invoice', 'in_invoice'] else -1
dichiarazioni_amounts = {}
for tax_line in invoice.tax_line_ids:
amount = sign * tax_line.base
for dichiarazione in dichiarazioni:
if dichiarazione.id not in dichiarazioni_amounts:
dichiarazioni_amounts[dichiarazione.id] = \
dichiarazione.available_amount
if dichiarazione.available_amount > available_plafond:
dichiarazioni_amounts[dichiarazione.id] = available_plafond
else:
dichiarazioni_amounts[dichiarazione.id] = \
dichiarazione.available_amount
if tax_line.tax_id.id in [t.id for t
in dichiarazione.taxes_ids]:
dichiarazioni_amounts[dichiarazione.id] -= amount
Expand Down
20 changes: 16 additions & 4 deletions l10n_it_dichiarazione_intento/models/dichiarazione_intento.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,18 @@ class DichiarazioneIntentoYearlyLimit(models.Model):

company_id = fields.Many2one('res.company', string='Company')
year = fields.Char(required=True)
limit_amount = fields.Float()
used_amount = fields.Float(compute='_compute_used_amount')
limit_amount = fields.Float(
string='Plafond'
)
# TODO align terms: used_amount > issued_declarations
used_amount = fields.Float(
string='Issued Declarations',
compute='_compute_used_amount'
)
actual_used_amount = fields.Float(
string='Actual Used Amount',
compute='_compute_used_amount'
)

@api.multi
def _compute_used_amount(self):
Expand All @@ -30,6 +40,7 @@ def _compute_used_amount(self):
('date_end', '<=', date_end),
('type', '=', 'in'), ])
record.used_amount = sum([d.limit_amount for d in dichiarazioni])
record.actual_used_amount = sum([d.used_amount for d in dichiarazioni])


class DichiarazioneIntento(models.Model):
Expand Down Expand Up @@ -103,8 +114,9 @@ def create(self, values):
actual_limit_total = sum([d.limit_amount for d in dichiarazioni]) \
+ values['limit_amount']
if actual_limit_total > plafond.limit_amount:
raise UserError(
_('Total of documents exceed yearly limit'))
if plafond.limit_amount < plafond.actual_used_amount:
raise UserError(
_('Total of documents exceed yearly limit'))
# ----- Assign a number to dichiarazione
if values and not values.get('number', ''):
values['number'] = self.env['ir.sequence'].next_by_code(
Expand Down
3 changes: 2 additions & 1 deletion l10n_it_dichiarazione_intento/views/company_view.xml
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,13 @@
<field name="inherit_id" ref="base.view_company_form"/>
<field name="arch" type="xml">
<xpath expr="//page[last()]" position="after">
<page string="Declarations of intent">
<page string="Exporter Plafond">
<field name="dichiarazione_yearly_limit_ids">
<tree editable="top">
<field name="year"/>
<field name="limit_amount"/>
<field name="used_amount"/>
<field name="actual_used_amount"/>
</tree>
</field>
</page>
Expand Down

0 comments on commit 818119e

Please sign in to comment.