mrp_average_cost: Fix decimal precision
product_usability: add link to show history of standard price
This commit is contained in:
@@ -18,9 +18,8 @@ class LabourCostProfile(models.Model):
|
||||
|
||||
name = fields.Char(
|
||||
string='Name', required=True, track_visibility='onchange')
|
||||
hour_cost = fields.Monetary(
|
||||
hour_cost = fields.Float(
|
||||
string='Cost per Hour', required=True,
|
||||
currency_field='company_currency_id',
|
||||
digits=dp.get_precision('Product Price'),
|
||||
track_visibility='onchange',
|
||||
help="Labour cost per hour per person in company currency")
|
||||
@@ -54,9 +53,9 @@ class MrpBomLabourLine(models.Model):
|
||||
"items of the BOM, in hours.")
|
||||
labour_cost_profile_id = fields.Many2one(
|
||||
'labour.cost.profile', string='Labour Cost Profile', required=True)
|
||||
labour_cost_subtotal = fields.Monetary(
|
||||
labour_cost_subtotal = fields.Float(
|
||||
compute='_compute_labour_cost_subtotal', readonly=True, store=True,
|
||||
string='Subtotal', currency_field='company_currency_id')
|
||||
digits=dp.get_precision('Product Price'), string='Subtotal')
|
||||
company_currency_id = fields.Many2one(
|
||||
related='bom_id.company_id.currency_id', readonly=True,
|
||||
string='Company Currency')
|
||||
@@ -107,28 +106,24 @@ class MrpBom(models.Model):
|
||||
company_currency_id = fields.Many2one(
|
||||
related='company_id.currency_id', readonly=True,
|
||||
string='Company Currency')
|
||||
total_labour_cost = fields.Monetary(
|
||||
total_labour_cost = fields.Float(
|
||||
compute='_compute_total_labour_cost', readonly=True,
|
||||
currency_field='company_currency_id',
|
||||
digits=dp.get_precision('Product Price'),
|
||||
string="Total Labour Cost")
|
||||
extra_cost = fields.Monetary(
|
||||
extra_cost = fields.Float(
|
||||
string='Extra Cost', track_visibility='onchange',
|
||||
digits=dp.get_precision('Product Price'),
|
||||
currency_field='company_currency_id',
|
||||
help="Extra cost for the production of the quantity of "
|
||||
"items of the BOM, in company currency. "
|
||||
"You can use this field to enter the cost of the consumables "
|
||||
"that are used to produce the product but are not listed in "
|
||||
"the BOM")
|
||||
total_components_cost = fields.Monetary(
|
||||
total_components_cost = fields.Float(
|
||||
compute='_compute_total_cost', readonly=True,
|
||||
currency_field='company_currency_id',
|
||||
digits=dp.get_precision('Product Price'),
|
||||
string='Total Components Cost')
|
||||
total_cost = fields.Float(
|
||||
compute='_compute_total_cost', readonly=True,
|
||||
currency_field='company_currency_id', string='Total Cost',
|
||||
compute='_compute_total_cost', readonly=True, string='Total Cost',
|
||||
digits=dp.get_precision('Product Price'),
|
||||
help="Total Cost = Total Components Cost + "
|
||||
"Total Labour Cost + Extra Cost")
|
||||
@@ -170,16 +165,16 @@ class MrpBomLine(models.Model):
|
||||
|
||||
standard_price = fields.Float(
|
||||
related='product_id.standard_price', readonly=True)
|
||||
# Monetary ? standard_price on product is a float...
|
||||
# company_currency_id =
|
||||
company_currency_id = fields.Many2one(
|
||||
related='bom_id.company_id.currency_id', readonly=True,
|
||||
string='Company Currency')
|
||||
|
||||
|
||||
class MrpProduction(models.Model):
|
||||
_inherit = 'mrp.production'
|
||||
|
||||
unit_cost = fields.Monetary(
|
||||
unit_cost = fields.Float(
|
||||
string='Unit Cost', readonly=True,
|
||||
currency_field='company_currency_id',
|
||||
digits=dp.get_precision('Product Price'),
|
||||
help="This cost per unit in the unit of measure of the product "
|
||||
"in company currency takes into account "
|
||||
|
||||
@@ -12,10 +12,10 @@
|
||||
<field name="inherit_id" ref="mrp.mrp_bom_form_view"/>
|
||||
<field name="arch" type="xml">
|
||||
<field name="routing_id" position="after">
|
||||
<field name="total_components_cost"/>
|
||||
<field name="total_labour_cost"/>
|
||||
<field name="extra_cost"/>
|
||||
<label for="total_cost"/>
|
||||
<field name="total_components_cost" widget="monetary" options="{'currency_field': 'company_currency_id'}"/>
|
||||
<field name="total_labour_cost" widget="monetary" options="{'currency_field': 'company_currency_id'}"/>
|
||||
<field name="extra_cost" widget="monetary" options="{'currency_field': 'company_currency_id'}"/>
|
||||
<label for="total_cost" widget="monetary" options="{'currency_field': 'company_currency_id'}"/>
|
||||
<div>
|
||||
<field name="total_cost" widget="monetary"
|
||||
options="{'currency_field': 'company_currency_id'}"
|
||||
@@ -33,7 +33,8 @@
|
||||
</page>
|
||||
</xpath>
|
||||
<xpath expr="//field[@name='bom_line_ids']/tree/field[@name='product_uom_id']" position="after">
|
||||
<field name="standard_price"/>
|
||||
<field name="standard_price" widget="monetary" options="{'currency_field': 'company_currency_id'}" sum="Total"/>
|
||||
<field name="company_currency_id" invisible="1"/>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
@@ -46,7 +47,7 @@
|
||||
<field name="bom_id" invisible="not context.get('mrp_bom_labour_line_main_view')"/>
|
||||
<field name="labour_time" string="Labour Time (hours)"/>
|
||||
<field name="labour_cost_profile_id"/>
|
||||
<field name="labour_cost_subtotal" sum="Total"/>
|
||||
<field name="labour_cost_subtotal" sum="Total" widget="monetary" options="{'currency_field': 'company_currency_id'}"/>
|
||||
<field name="company_currency_id" invisible="1"/>
|
||||
<field name="note"/>
|
||||
</tree>
|
||||
@@ -66,7 +67,7 @@
|
||||
<label string="hours"/>
|
||||
</div>
|
||||
<field name="labour_cost_profile_id"/>
|
||||
<field name="labour_cost_subtotal"/>
|
||||
<field name="labour_cost_subtotal" widget="monetary" options="{'currency_field': 'company_currency_id'}"/>
|
||||
<field name="company_currency_id" invisible="1"/>
|
||||
<field name="note"/>
|
||||
</group>
|
||||
@@ -83,7 +84,7 @@
|
||||
<form string="Labour Cost Profile">
|
||||
<group name="main">
|
||||
<field name="name"/>
|
||||
<field name="hour_cost"/>
|
||||
<field name="hour_cost" widget="monetary" options="{'currency_field': 'company_currency_id'}"/>
|
||||
<field name="company_id" groups="base.group_multi_company"/>
|
||||
<field name="company_currency_id" invisible="1"/>
|
||||
</group>
|
||||
@@ -97,7 +98,7 @@
|
||||
<field name="arch" type="xml">
|
||||
<tree string="Labour Cost Profiles">
|
||||
<field name="name"/>
|
||||
<field name="hour_cost"/>
|
||||
<field name="hour_cost" widget="monetary" options="{'currency_field': 'company_currency_id'}"/>
|
||||
<field name="company_currency_id" invisible="1"/>
|
||||
</tree>
|
||||
</field>
|
||||
|
||||
@@ -16,6 +16,17 @@ class ProductTemplate(models.Model):
|
||||
purchase_ok = fields.Boolean(track_visibility='onchange')
|
||||
active = fields.Boolean(track_visibility='onchange')
|
||||
|
||||
def show_product_price_history(self):
|
||||
self.ensure_one()
|
||||
products = self.env['product.product'].search(
|
||||
[('product_tmpl_id', '=', self._context['active_id'])])
|
||||
action = self.env['ir.actions.act_window'].for_xml_id(
|
||||
'product_usability', 'product_price_history_action')
|
||||
action.update({
|
||||
'domain': "[('id', 'in', %s)]" % products.ids,
|
||||
})
|
||||
return action
|
||||
|
||||
|
||||
class ProductProduct(models.Model):
|
||||
_inherit = 'product.product'
|
||||
@@ -38,9 +49,26 @@ class ProductProduct(models.Model):
|
||||
'unique(default_code)',
|
||||
'This internal reference already exists!')]
|
||||
|
||||
def show_product_price_history(self):
|
||||
self.ensure_one()
|
||||
action = self.env['ir.actions.act_window'].for_xml_id(
|
||||
'product_usability', 'product_price_history_action')
|
||||
action.update({
|
||||
'domain': "[('product_id', '=', %d)]" % self.ids[0],
|
||||
})
|
||||
return action
|
||||
|
||||
|
||||
class ProductSupplierinfo(models.Model):
|
||||
_inherit = 'product.supplierinfo'
|
||||
|
||||
name = fields.Many2one(
|
||||
domain=[('supplier', '=', True), ('parent_id', '=', False)])
|
||||
|
||||
|
||||
class ProductPriceHistory(models.Model):
|
||||
_inherit = 'product.price.history'
|
||||
|
||||
company_currency_id = fields.Many2one(
|
||||
related='company_id.currency_id', readonly=True,
|
||||
string='Company Currency')
|
||||
|
||||
@@ -16,8 +16,9 @@
|
||||
<group name="main">
|
||||
<field name="product_id" invisible="not context.get('product_price_history_main_view')"/>
|
||||
<field name="datetime"/>
|
||||
<field name="cost"/>
|
||||
<field name="cost" widget="monetary" options="{'currency_field': 'company_currency_id'}"/>
|
||||
<field name="company_id" groups="base.group_multi_company"/>
|
||||
<field name="company_currency_id" invisible="1"/>
|
||||
</group>
|
||||
</form>
|
||||
</field>
|
||||
@@ -30,8 +31,9 @@
|
||||
<tree string="Product Price History" editable="bottom">
|
||||
<field name="product_id" invisible="not context.get('product_price_history_main_view')"/>
|
||||
<field name="datetime"/>
|
||||
<field name="cost"/>
|
||||
<field name="cost" widget="monetary" options="{'currency_field': 'company_currency_id'}"/>
|
||||
<field name="company_id" groups="base.group_multi_company"/>
|
||||
<field name="company_currency_id" invisible="1"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
@@ -67,13 +69,9 @@
|
||||
<field name="model">product.template</field>
|
||||
<field name="inherit_id" ref="product.product_template_form_view" />
|
||||
<field name="arch" type="xml">
|
||||
<!--
|
||||
<group name="general" position="after">
|
||||
<group name="price_history" string="Price History">
|
||||
<field name="price_history_ids" nolabel="1"/>
|
||||
</group>
|
||||
</group>
|
||||
-->
|
||||
<field name="standard_price" class="oe_inline" position="after">
|
||||
<button name="show_product_price_history" class="oe_inline oe_link" type="object" string="Show History" context="{'active_id': active_id}"/>
|
||||
</field>
|
||||
<!-- START for wider 'name' field -->
|
||||
<!-- Don't make it too big, othesize computers with small resolutions
|
||||
will see the product name + image under the block of buttons -->
|
||||
|
||||
Reference in New Issue
Block a user