12345678910111213141516171819202122232425262728293031323334 |
- # -*- coding: utf-8 -*-
- # Part of Odoo. See LICENSE file for full copyright and licensing details.
- from odoo import api, models, fields
- class SaleOrderLine(models.Model):
- _inherit = "sale.order.line"
- expense_id = fields.Many2one('hr.expense', string='Expense')
- @api.depends('is_expense')
- def _compute_purchase_price(self):
- date_today = fields.Date.context_today(self)
- expense_lines = self.filtered('expense_id')
- for line in expense_lines:
- if line.expense_id.product_has_cost:
- product_cost = line.expense_id.untaxed_amount / line.expense_id.quantity
- else:
- product_cost = line.expense_id.untaxed_amount
- from_currency = line.expense_id.currency_id
- to_currency = line.currency_id or line.order_id.currency_id
- if to_currency and product_cost and from_currency != to_currency:
- line.purchase_price = from_currency._convert(
- from_amount=product_cost,
- to_currency=to_currency,
- company=line.company_id or self.env.company,
- date=line.order_id.date_order or date_today,
- round=False)
- else:
- line.purchase_price = product_cost
- return super(SaleOrderLine, self - expense_lines)._compute_purchase_price()
|