diff --git a/l10n_ve_accountant/models/account_move_line.py b/l10n_ve_accountant/models/account_move_line.py index 898a4710..162bced0 100644 --- a/l10n_ve_accountant/models/account_move_line.py +++ b/l10n_ve_accountant/models/account_move_line.py @@ -150,11 +150,28 @@ def _compute_name(self): line.name = line.move_id.name return res - @api.depends("price_unit", "foreign_inverse_rate") + @api.depends("price_unit", "foreign_inverse_rate", "currency_id") def _compute_foreign_price(self): for line in self: - line.foreign_price = line.price_unit * line.foreign_inverse_rate - + company_currency = line.company_id.currency_id + foreign_currency = line.company_id.foreign_currency_id + # Si la línea está en moneda principal de la compañía + if line.currency_id.id == company_currency.id: + line.foreign_price = line.price_unit * line.foreign_inverse_rate + # Si la línea está en moneda foránea + elif line.currency_id.id == foreign_currency.id: + line.foreign_price = line.price_unit + # Si la línea está en otra moneda (ni principal ni foránea) + else: + # Convertir de la moneda de la línea a la moneda principal + price_in_company = line.currency_id._convert( + line.price_unit, + company_currency, + line.company_id, + line.move_id.invoice_date or fields.Date.today(), + ) + # Luego convertir de la moneda principal a la foránea usando la tasa de la factura + line.foreign_price = price_in_company * line.foreign_inverse_rate @api.depends("foreign_price", "quantity", "discount", "tax_ids", "price_unit") def _compute_foreign_subtotal(self): for line in self: