[IMP] Manufacturing: update MO costs

closes odoo/documentation#11475

X-original-commit: e1227f0c2b
Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
Signed-off-by: John Holton (hojo) <hojo@odoo.com>
This commit is contained in:
John Holton (hojo) 2024-11-19 19:55:22 +00:00
parent 921bf0d82e
commit d60310c25e

View File

@ -9,13 +9,12 @@ Manufacturing order costs
.. |BoMs| replace:: :abbr:`BoMs (Bills of Materials)` .. |BoMs| replace:: :abbr:`BoMs (Bills of Materials)`
The ability to accurately calculate the cost of manufacturing a product is critical when determining The ability to accurately calculate the cost of manufacturing a product is critical when determining
product profitability. Odoo's *Manufacturing* app simplifies this calculation by automatically product profitability. Odoo's **Manufacturing** app simplifies this calculation by automatically
calculating the cost to complete each manufacturing order (MO), as well as the average production calculating the cost to complete each manufacturing order (MO), as well as the average production
cost of a product, based on all completed |MOs|. cost of a product, based on all completed |MOs|.
.. important:: .. important::
Odoo's Manufacturing app distinguishes between the *manufacturing order cost* and the *real cost* Odoo's Manufacturing app distinguishes between the *MO cost* and the *real cost* of an |MO|.
of an |MO|.
The |MO| cost represents how much it *should* cost to complete an |MO|, based on the The |MO| cost represents how much it *should* cost to complete an |MO|, based on the
configuration of the product's bill of materials (BoM). This takes into account the cost and configuration of the product's bill of materials (BoM). This takes into account the cost and
@ -30,8 +29,9 @@ Cost configuration
================== ==================
Odoo computes |MO| costs based on the configuration of the |BoM| used to manufacture a product. This Odoo computes |MO| costs based on the configuration of the |BoM| used to manufacture a product. This
includes the cost and quantity of components and operations listed on the |BoM|, in addition to the calculation includes the cost and quantity of components and operations listed on the |BoM|, in
operating costs of the work centers where those operations are carried out. addition to the operating costs of the work centers where those operations are carried out, and the
amount paid to each employee who works on an operation.
Component cost Component cost
-------------- --------------
@ -42,44 +42,61 @@ Products --> Products`, and select a component product. The cost is displayed in
:guilabel:`Cost` field of the :guilabel:`General Information` tab, on the component's product form. :guilabel:`Cost` field of the :guilabel:`General Information` tab, on the component's product form.
It is possible to set the cost of a component manually, by clicking the :guilabel:`Cost` field on It is possible to set the cost of a component manually, by clicking the :guilabel:`Cost` field on
the component's product form, and entering a value. However, any future |POs| for the component the component's product form and entering a value. However, any future |POs| for the component
override a value entered manually, resetting the :guilabel:`Cost` field back to an automatically override a manually entered value, resetting the :guilabel:`Cost` field back to an automatically
computed value. computed value.
.. _manufacturing/mo-costs/work-center-cost:
Work center cost Work center cost
---------------- ----------------
To set the operating cost for a specific work center, navigate to :menuselection:`Manufacturing app To set the operating cost for a specific work center, navigate to :menuselection:`Manufacturing app
--> Configuration --> Work Centers`, and select a work center. --> Configuration --> Work Centers`, and select a work center.
To set the operating cost for the work center, as a whole, enter a value in the :guilabel:`per To set the cost of operating the work center for one hour, enter a value in the :guilabel:`per
workcenter` field, located beside the :guilabel:`Cost per hour` section on the work center's workcenter` field, located beside the :guilabel:`Cost per hour` section on the work center's
:guilabel:`General Information` tab. This operating cost is used regardless of how many employees :guilabel:`General Information` tab.
are working at the work center at any given time.
To set the operating cost for the work center based on the number of employees working there at a To set the hourly cost of each employee that operates the work center, enter a value in the
given time, enter a value in the :guilabel:`per employee` field, located beside the :guilabel:`Cost :guilabel:`per employee` field, located beside the :guilabel:`Cost per hour` section on the work
per hour` section on the work center's :guilabel:`General Information` tab. For example, if `25.00` center's :guilabel:`General Information` tab. For example, if `25.00` is entered in the
is entered in the :guilabel:`per employee` field, it costs $25.00 per hour for *each* employee :guilabel:`per employee` field, it costs $25.00 per hour for *each* employee working at the work
working at the work center. center.
Note that, if values are entered in both the :guilabel:`per workcenter` *and* :guilabel:`per
employee` fields, the value in the :guilabel:`per workcenter` field takes precedence, and the value
in the :guilabel:`per employee` field is ignored.
.. important:: .. important::
It is also possible to set a per hour cost for specific employees, by navigating to the The value entered in the :guilabel:`per employee` field is only used to calculate the |MO| cost,
:menuselection:`Employees` app, selecting an employee, clicking the :guilabel:`HR Settings` tab which is the estimated cost of completing the |MO|.
on their employee form, and entering a value in the :guilabel:`Hourly Cost` field.
Just like the *per workcenter* field on a work center form, the :guilabel:`Hourly Cost` field on The actual cost of completing the |MO| is represented by the real cost. Instead of using the
an employee's form overrides the *per employee* field on a work center form. value entered in the :guilabel:`per employee` field, the real cost is calculated using the hourly
cost specific to each employee.
However, the *per workcenter* field takes precedence over both the *per employee* field on the For example, if the :guilabel:`per employee` cost of a work center is '$50.00', and an employee
workcenter form *and* the :guilabel:`Hourly Cost` field on the employee form. with an hourly cost of '$60.00' completes a work order there, the |MO| cost (estimated) is
calculated using the $50/hr cost, while the real cost is calculated using the $60/hr cost.
|BoM| cost See the :ref:`employee cost section <manufacturing/mo-costs/employee-cost>` below for information
---------- on how to set the cost for specific employees.
.. _manufacturing/mo-costs/employee-cost:
Employee cost
-------------
To set the hourly cost for a specific employee, navigate to the :menuselection:`Employees` app, and
select an employee. On the employee's form, select the :guilabel:`Settings` tab, and enter the
employee's rate in the :guilabel:`Hourly Cost` field of the :guilabel:`Application Settings`
section.
.. important::
As detailed in the :ref:`work center cost section <manufacturing/mo-costs/work-center-cost>`
above, the value entered in the :guilabel:`Hourly Cost` field on the employee's form is used to
calculate the real cost of an |MO|. The estimated cost of an |MO|, referred to as the |MO| cost,
uses the per employee cost set on each work center's form.
|BoM| configuration
-------------------
Configuring a |BoM| so Odoo can accurately calculate the cost of |MOs| that use it requires two Configuring a |BoM| so Odoo can accurately calculate the cost of |MOs| that use it requires two
steps. First, components **must** be added, and the required quantity specified. Second, operations steps. First, components **must** be added, and the required quantity specified. Second, operations
@ -103,10 +120,10 @@ By default, the :guilabel:`Duration Computation` field is set to :guilabel:`Set
which means that the number entered in :guilabel:`Default Duration` field is always used as the which means that the number entered in :guilabel:`Default Duration` field is always used as the
expected duration of the operation. expected duration of the operation.
Selecting :guilabel:`Compute based on tracked time` causes Odoo to automatically compute the default Selecting :guilabel:`Compute based on tracked time` causes Odoo to automatically compute the
duration based on a certain number of work orders, which is set in the :guilabel:`Based on` field. :guilabel:`Default Duration` based on a certain number of work orders, which is set in the
Before there are work orders to compute this duration, the value in the :guilabel:`Default Duration` :guilabel:`Based on` field. Before there are work orders to compute this duration, the value in the
field is used instead. :guilabel:`Default Duration` field is used instead.
The hourly cost of operating the work center, and the duration of the operation, are used to The hourly cost of operating the work center, and the duration of the operation, are used to
calculate the operation's cost. calculate the operation's cost.
@ -137,7 +154,9 @@ same costs. This is the *estimated* cost of completing the |MO|.
However, once work commences, the values in the :guilabel:`Real Cost` column may begin to diverge However, once work commences, the values in the :guilabel:`Real Cost` column may begin to diverge
from the values in the :guilabel:`MO Cost` column. This happens if a different component quantity is from the values in the :guilabel:`MO Cost` column. This happens if a different component quantity is
used than was listed on the |MO|, or if the duration of a work order is different than expected. used than was listed on the |MO|, the duration of a work order is different than expected, or the
hourly cost of the employee performing a work order differs from the employee cost set on the work
center.
Once the |MO| has been completed by clicking :guilabel:`Produce All`, the values in the Once the |MO| has been completed by clicking :guilabel:`Produce All`, the values in the
:guilabel:`MO Cost` column update to match those displayed in the :guilabel:`Real Cost` column. :guilabel:`MO Cost` column update to match those displayed in the :guilabel:`Real Cost` column.