#odoo #odoo-11
#odoo #odoo-11
Вопрос:
Привет всем, я добавил новое поле account.invoice
и добавил это поле в представление счетов поставщика, чтобы получить весь бюджет. После выбора определенного бюджета я хочу показать только аналитический счет, связанный с этим бюджетом, в разделе счета, используя onchange.
Вот учетная запись.счет-фактура
class custom_accounting_invoice(models.Model):
_inherit = 'account.invoice'
creating_user_id = fields.Many2one('res.users', 'Project Manager', default=lambda self: self.env.user)
email = fields.Char('Email', related='creating_user_id.login')
budget_id = fields.Many2one('crossovered.budget', string='Budget')
@api.onchange('budget_id')
def onchange_analytic_account_budget(self):
return {'domain': {'invoice_line_ids.account_analytic_id': [
('id',
'in',
self.mapped('budget_id.crossovered_budget_line.analytic_account_id.id')
)]
}
}
Ответ №1:
Вы можете переопределить существующий метод onchange в строках счета, чтобы изменить analytic_account_id
домен.
В следующем примере домен устанавливается при Unit of Measure
изменении и только в том случае, если budget_id
поле установлено:
class BillsEdit(models.Model):
_inherit = 'account.invoice.line'
account_analytic_id = fields.Many2one('account.analytic.account',
string='Budget line')
@api.onchange('uom_id')
def _onchange_uom_id(self):
res = super(BillsEdit, self)._onchange_uom_id()
account_ids = self.mapped('invoice_id.budget_id.crossovered_budget_line.analytic_account_id.id')
new_domain = {}
if account_ids:
new_domain['account_analytic_id'] = [('id', 'in', account_ids)]
if 'domain' in res:
res['domain'].update(new_domain)
else:
res['domain'] = new_domain
return res
Комментарии:
1. большое вам спасибо за спасение моего дня
2. что я могу для вас сделать?