Initial commit
This commit is contained in:
41
Fusion Accounting/models/res_currency.py
Normal file
41
Fusion Accounting/models/res_currency.py
Normal file
@@ -0,0 +1,41 @@
|
||||
# Fusion Accounting - Currency Extensions
|
||||
# Incorporates manual fiscal year boundaries into the currency rate table
|
||||
|
||||
from odoo import models
|
||||
|
||||
|
||||
class FusionResCurrency(models.Model):
|
||||
"""Extends the currency rate table generation to honour manually
|
||||
defined fiscal years when computing period boundaries."""
|
||||
|
||||
_inherit = 'res.currency'
|
||||
|
||||
def _get_currency_table_fiscal_year_bounds(self, main_company):
|
||||
"""Merge automatically computed fiscal-year boundaries with
|
||||
any manually defined ``account.fiscal.year`` records, ensuring
|
||||
that manual periods take precedence within their date ranges."""
|
||||
auto_bounds = super()._get_currency_table_fiscal_year_bounds(main_company)
|
||||
|
||||
manual_fy_records = self.env['account.fiscal.year'].search(
|
||||
self.env['account.fiscal.year']._check_company_domain(main_company),
|
||||
order='date_from ASC',
|
||||
)
|
||||
manual_periods = manual_fy_records.mapped(lambda fy: (fy.date_from, fy.date_to))
|
||||
|
||||
merged = []
|
||||
for auto_start, auto_end in auto_bounds:
|
||||
# Pop manual periods that fall within this automatic boundary
|
||||
while (
|
||||
manual_periods
|
||||
and (
|
||||
not auto_end
|
||||
or (auto_start and auto_start <= manual_periods[0][0] and auto_end >= manual_periods[0][0])
|
||||
or auto_end >= manual_periods[0][1]
|
||||
)
|
||||
):
|
||||
merged.append(manual_periods.pop(0))
|
||||
|
||||
if not merged or merged[-1][1] < auto_start:
|
||||
merged.append((auto_start, auto_end))
|
||||
|
||||
return merged
|
||||
Reference in New Issue
Block a user