diff --git a/mis_builder/models/aep.py b/mis_builder/models/aep.py index 94f57d0c2..63a0bc481 100644 --- a/mis_builder/models/aep.py +++ b/mis_builder/models/aep.py @@ -12,6 +12,7 @@ from odoo.tools.safe_eval import datetime, dateutil, safe_eval, time from .accounting_none import AccountingNone +from .simple_array import SimpleArray _logger = logging.getLogger(__name__) @@ -316,7 +317,7 @@ def do_queries( aml_model = aml_model.with_context(active_test=False) company_rates = self._get_company_rates(date_to) # {(domain, mode): {account_id: (debit, credit)}} - self._data = defaultdict(dict) + self._data = defaultdict(lambda: defaultdict(lambda: SimpleArray((0.0, 0.0)))) domain_by_mode = {} ends = [] for key in self._map_account_ids: @@ -364,7 +365,9 @@ def do_queries( ): # in initial mode, ignore accounts with 0 balance continue - self._data[key][acc["account_id"][0]] = (debit * rate, credit * rate) + # due to branches, it's possible to have multiple acc + # with the same account_id + self._data[key][acc["account_id"][0]] += (debit * rate, credit * rate) # compute ending balances by summing initial and variation for key in ends: domain, mode = key diff --git a/mis_builder/readme/newsfragments/648.feature b/mis_builder/readme/newsfragments/648.feature new file mode 100644 index 000000000..5fd451914 --- /dev/null +++ b/mis_builder/readme/newsfragments/648.feature @@ -0,0 +1 @@ +Add support for branch companies. diff --git a/mis_builder/tests/test_aep.py b/mis_builder/tests/test_aep.py index 8b325d715..ddc562895 100644 --- a/mis_builder/tests/test_aep.py +++ b/mis_builder/tests/test_aep.py @@ -410,3 +410,28 @@ def test_invalid_field(self): datetime.date(self.prev_year, 12, 1), ) assert "Error while querying move line source" in str(cm.exception) + + def test_aep_branch(self): + # create branch + self.branch = self.res_company.create( + { + "name": "AEP Branch", + "parent_id": self.company.id, + } + ) + # create branch move in March this year + branch_move = self._create_move( + date=datetime.date(self.curr_year, 3, 1), + amount=50, + debit_acc=self.account_ar, + credit_acc=self.account_in, + ) + branch_move.company_id = self.branch + self.aep = AEP(self.company | self.branch) + self.aep.parse_expr("balp[]") + self.aep.done_parsing() + self._do_queries( + datetime.date(self.curr_year, 3, 1), datetime.date(self.curr_year, 3, 31) + ) + variation = self._eval_by_account_id("balp[]") + self.assertEqual(variation, {self.account_ar.id: 550, self.account_in.id: -550})