Как добавить два плавающих поля с разным знаком валюты? - PullRequest
0 голосов
/ 11 октября 2019

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

1 Ответ

1 голос
/ 11 октября 2019

Для этого я добавил новое поле many2one для базовой валюты, как показано ниже:

base_currency_id = fields.Many2one('res.currency', default=lambda self: self.invoice_id.company_id.currency_id.id)

Затем я добавил новое поле с плавающей запятой для вычисления суммы в базовой валюте, например:

@api.onchange('price_subtotal', 'invoice_id.currency_id')
def compute_amount_in_base_currency(self):
    company_currency = self.invoice_id.company_id.currency_id
    for l in self:
        amount_in_base = l.currency_id.compute(l.price_subtotal, company_currency)
        l.amount_in_base = amount_in_base

amount_in_base = fields.Float('Base Amount', readonly=True, compute='compute_amount_in_base_currency')

В XML-файле я добавил поле base_currency_id и сделал его невидимым. Затем добавили поле amount_in_base к представлению с widget='monetary' и options="{'currency_field': 'base_currency_id'}". Мой XML-файл выглядит так:

<xpath expr="//field[@name='invoice_line_ids']/tree/field[@name='price_subtotal']" position="after">
    <field name="base_currency_id" invisible="True"/>
    <field name="amount_in_base" widget="monetary" options="{'currency_field': 'base_currency_id'}"/>
</xpath>
...