[FIX] product, stock_account: cost currency
The cost of the product is a property field, meaning that: - its value depends on the current company; - its currency is the company currency However, several views use the monetary widget to display its currency with the default `currency_id` field. This can be incorrect, since the latter is computed based on the product's company. We introduce the new computed field `cost_currency_id` which has the appropriate value and can be used in the views. Closes #30616 opw-1934443
This commit is contained in:
@@ -62,6 +62,8 @@ class ProductTemplate(models.Model):
|
||||
|
||||
currency_id = fields.Many2one(
|
||||
'res.currency', 'Currency', compute='_compute_currency_id')
|
||||
cost_currency_id = fields.Many2one(
|
||||
'res.currency', 'Cost Currency', compute='_compute_cost_currency_id')
|
||||
|
||||
# price fields
|
||||
price = fields.Float(
|
||||
@@ -163,6 +165,10 @@ class ProductTemplate(models.Model):
|
||||
for template in self:
|
||||
template.currency_id = template.company_id.sudo().currency_id.id or main_company.currency_id.id
|
||||
|
||||
def _compute_cost_currency_id(self):
|
||||
for template in self:
|
||||
template.cost_currency_id = self.env.user.company_id.currency_id.id
|
||||
|
||||
@api.multi
|
||||
def _compute_template_price(self):
|
||||
prices = {}
|
||||
|
||||
@@ -51,13 +51,14 @@
|
||||
<field name="list_price" widget='monetary' options="{'currency_field': 'currency_id', 'field_digits': True}"/>
|
||||
<label for="standard_price" groups="base.group_user" attrs="{'invisible': [('product_variant_count', '>', 1), ('is_product_variant', '=', False)]}"/>
|
||||
<div name="standard_price_uom" groups="base.group_user" attrs="{'invisible': [('product_variant_count', '>', 1), ('is_product_variant', '=', False)]}">
|
||||
<field name="standard_price" widget='monetary' options="{'currency_field': 'currency_id', 'field_digits': True}"/>
|
||||
<field name="standard_price" widget='monetary' options="{'currency_field': 'cost_currency_id', 'field_digits': True}"/>
|
||||
</div>
|
||||
<field name="company_id" groups="base.group_multi_company"
|
||||
options="{'no_create': True}"/>
|
||||
<field name="uom_id" groups="product.group_uom" options="{'no_create': True}"/>
|
||||
<field name="uom_po_id" groups="product.group_uom" options="{'no_create': True}"/>
|
||||
<field name="currency_id" invisible="1"/>
|
||||
<field name="cost_currency_id" invisible="1"/>
|
||||
<field name="product_variant_id" invisible="1"/>
|
||||
</group>
|
||||
</group>
|
||||
|
||||
@@ -41,7 +41,7 @@
|
||||
<div class="o_row">
|
||||
<field name="standard_price"
|
||||
attrs="{'readonly':[('valuation','=','real_time')]}"
|
||||
widget='monetary' options="{'currency_field': 'currency_id', 'field_digits': True}" />
|
||||
widget='monetary' options="{'currency_field': 'cost_currency_id', 'field_digits': True}" />
|
||||
<button string="Update Cost" type="action"
|
||||
name="%(action_view_change_standard_price)d"
|
||||
attrs="{'invisible':['|', '|', ('valuation','!=', 'real_time'), ('cost_method', 'not in', ['average', 'standard']), ('product_variant_count', '>', 1)]}"
|
||||
|
||||
@@ -77,7 +77,8 @@
|
||||
<field name="qty_at_date"/>
|
||||
<field name="uom_id" groups="product.group_uom"/>
|
||||
<field name="currency_id" invisible="1"/>
|
||||
<field name="stock_value" sum="Stock Valuation" widget="monetary"/>
|
||||
<field name="cost_currency_id" invisible="1"/>
|
||||
<field name="stock_value" sum="Stock Valuation" widget="monetary" options="{'currency_field': 'cost_currency_id'}"/>
|
||||
<field name="cost_method" invisible="1"/>
|
||||
<button name="action_valuation_at_date_details" type="object" icon="fa-info-circle" attrs="{'invisible': [('cost_method', '!=', 'fifo')]}" />
|
||||
</tree>
|
||||
|
||||
Reference in New Issue
Block a user