diff --git a/account_tax_settlement/models/account_journal_dashboard.py b/account_tax_settlement/models/account_journal_dashboard.py index 2d2e27a4..7ca8cfbf 100644 --- a/account_tax_settlement/models/account_journal_dashboard.py +++ b/account_tax_settlement/models/account_journal_dashboard.py @@ -1,23 +1,29 @@ from odoo import models from odoo.tools.misc import formatLang - +from odoo.tools.safe_eval import safe_eval class AccountJournal(models.Model): _inherit = 'account.journal' - def get_journal_dashboard_datas(self): - res = super(AccountJournal, self).get_journal_dashboard_datas() - currency = self.currency_id or self.company_id.currency_id - # TODO hacer por sql por temas de performance? - unsettled_lines = self._get_tax_settlement_move_lines_by_tags() - res.update({ - # los importes estan en la moneda de la cia, sin importar el diario - 'unsettled_count': len(unsettled_lines), - 'unsettled_amount': formatLang(self.env, -sum(unsettled_lines.mapped('balance')), currency_obj=currency), - 'debit_amount': formatLang(self.env, self.settlement_partner_id.debit, currency_obj=currency), - }) + def _get_journal_dashboard_data_batched(self): + res = super(AccountJournal, self)._get_journal_dashboard_data_batched() + self._fill_tax_settlement_dashboard_data(res) return res + def _fill_tax_settlement_dashboard_data(self, dashboard_data): + tax_settlement_journals = self.filtered(lambda journal: journal.tax_settlement != False) + if not tax_settlement_journals: + return + # TODO hacer por sql para mejorar performance + for journal in tax_settlement_journals: + currency = journal.currency_id or journal.company_id.currency_id + unsettled_lines = journal._get_tax_settlement_move_lines_by_tags() + dashboard_data[journal.id].update({ + 'unsettled_count': len(unsettled_lines), + 'unsettled_amount': formatLang(self.env, -sum(unsettled_lines.mapped('balance')), currency_obj=currency), + 'debit_amount': formatLang(self.env, journal.settlement_partner_id.debit, currency_obj=currency), + }) + def open_action(self): """ Modificamos funcion para que si es liquidacion de impuestos devuelva accion correspondiente @@ -32,7 +38,7 @@ def open_action(self): return action elif debt_balance and self.settlement_partner_id: action = self.settlement_partner_id.open_partner_ledger() - ctx = action.get('context') + ctx = safe_eval(action.get('context')) ctx.update({ 'default_partner_id': self.settlement_partner_id.id, })