36 lines
1.4 KiB
Python
36 lines
1.4 KiB
Python
# Fusion Accounting - Fiscal Position Extensions
|
|
# Automated draft tax closing moves for foreign VAT positions
|
|
|
|
from odoo import models
|
|
|
|
|
|
class FusionFiscalPosition(models.Model):
|
|
"""Extends fiscal positions to generate draft tax-closing entries
|
|
whenever a foreign VAT number is set or updated."""
|
|
|
|
_inherit = 'account.fiscal.position'
|
|
|
|
def _inverse_foreign_vat(self):
|
|
"""When the foreign_vat field is written, propagate draft
|
|
closing moves for each affected fiscal position."""
|
|
super()._inverse_foreign_vat()
|
|
for fpos in self:
|
|
if fpos.foreign_vat:
|
|
fpos._create_draft_closing_move_for_foreign_vat()
|
|
|
|
def _create_draft_closing_move_for_foreign_vat(self):
|
|
"""For every existing draft tax-closing entry, ensure a
|
|
corresponding closing move exists for this fiscal position."""
|
|
self.ensure_one()
|
|
draft_closings = self.env['account.move'].search([
|
|
('tax_closing_report_id', '!=', False),
|
|
('state', '=', 'draft'),
|
|
])
|
|
for closing_date, grouped_entries in draft_closings.grouped('date').items():
|
|
for entry in grouped_entries:
|
|
self.company_id._get_and_update_tax_closing_moves(
|
|
closing_date,
|
|
entry.tax_closing_report_id,
|
|
fiscal_positions=self,
|
|
)
|