Есть ли способ динамически добавлять поля в древовидном представлении в Odoo 11? - PullRequest
0 голосов
/ 01 декабря 2018

Мне нужно показать каждую отдельную валюту в строках аналитической учетной записи «Затраты и доходы», мне нужно было бы динамически добавлять столбцы для разных валют, которые есть в каждом счете, и отображать итоговую сумму ниже (подражая поведению столбца «Сумма»).это уже есть), есть ли способ сделать это или обходной путь с аналогичным результатом?

Аналитические строки счета уже хранят сумму в исходной валюте, а также конвертированную сумму в валюту компании.

Я хочу избежать сумасшествия, добавив поле для каждой валюты вручную.

Вот пример.

example

1 Ответ

0 голосов
/ 18 февраля 2019

Вы можете использовать метод fields_view_get для динамического обновления представления из кода Python (до отображения представления).Это только один пример, который я нашел в Odoo:

@api.model
def fields_view_get(self, view_id=None, view_type='form', toolbar=False, submenu=False):
    res = super(MailThread, self).fields_view_get(
        view_id=view_id, view_type=view_type, toolbar=toolbar, submenu=submenu
    )
    if view_type == 'form':
        doc = etree.XML(res['arch'])
        for node in doc.xpath("//field[@name='message_ids']"):
            # the 'Log a note' button is employee only
            options = safe_eval(node.get('options', '{}'))
            is_employee = self.env.user.has_group('base.group_user')
            options['display_log_button'] = is_employee
            # save options on the node
            node.set('options', repr(options))
        res['arch'] = etree.tostring(doc, encoding='unicode')
    return res

Поместите его в свою модель.Найдите поле столбца с doc.xpath и обновите его с помощью node.set

На самом деле это то, что сказал Хуан Сальседо в своем комментарии

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...