[IMP] inventory: costing chart
closes odoo/documentation#10724
X-original-commit: c6e16b3666
Signed-off-by: Felicia Kuan (feku) <feku@odoo.com>
Co-authored-by: kekiss <karaekiss@yahoo.com>
Co-authored-by: ksc-odoo <73958186+ksc-odoo@users.noreply.github.com>
Co-authored-by: Sam Lieber (sali) <36018073+samueljlieber@users.noreply.github.com>
This commit is contained in:
parent
7ba46e2579
commit
39326280bb
@ -107,27 +107,184 @@ Go to :menuselection:`Inventory app --> Configuration --> Product Categories` an
|
||||
product category. In the :guilabel:`Inventory Valuation` section, select the appropriate
|
||||
:guilabel:`Costing Method`:
|
||||
|
||||
- :guilabel:`Standard Price`: the default costing method in Odoo. The cost of the product is
|
||||
manually defined on the product form, and this cost is used to compute the valuation. Even if the
|
||||
purchase price on a purchase order differs, the valuation will still use the cost defined on the
|
||||
product form.
|
||||
- :guilabel:`Average Cost (AVCO)`: calculates the valuation of a product based on the average cost
|
||||
of that product, divided by the total number of available stock on-hand. With this costing method,
|
||||
inventory valuation is *dynamic*, and constantly adjusts based on the purchase price of products.
|
||||
|
||||
.. note::
|
||||
When choosing :guilabel:`Average Cost (AVCO)` as the :guilabel:`Costing Method`, changing the
|
||||
numerical value in the :guilabel:`Cost` field for products in the respective product category
|
||||
creates a new record in the *Inventory Valuation* report to adjust the value of the product.
|
||||
The :guilabel:`Cost` amount will then automatically update based on the average purchase price
|
||||
both of inventory on hand and the costs accumulated from validated purchase orders.
|
||||
.. tabs::
|
||||
|
||||
- :guilabel:`First In First Out (FIFO)`: tracks the costs of incoming and outgoing items in
|
||||
real-time and uses the real price of the products to change the valuation. The oldest purchase
|
||||
price is used as the cost for the next good sold until an entire lot of that product is sold. When
|
||||
the next inventory lot moves up in the queue, an updated product cost is used based on the
|
||||
valuation of that specific lot. This method is arguably the most accurate inventory valuation
|
||||
method for a variety of reasons, however, it is highly sensitive to input data and human error.
|
||||
.. tab:: Standard Price
|
||||
|
||||
The default costing method in Odoo. The cost of the product is manually defined on the product
|
||||
form, and this cost is used to compute the valuation. Even if the purchase price on a purchase
|
||||
order differs, the valuation is the cost defined on the product form.
|
||||
|
||||
.. list-table::
|
||||
:header-rows: 1
|
||||
:stub-columns: 1
|
||||
|
||||
* - Operation
|
||||
- Unit Cost
|
||||
- Qty On Hand
|
||||
- Incoming Value
|
||||
- Inventory Value
|
||||
* -
|
||||
- $10
|
||||
- 0
|
||||
-
|
||||
- $0
|
||||
* - Receive 8 products for $10/unit
|
||||
- $10
|
||||
- 8
|
||||
- 8 * $10
|
||||
- $80
|
||||
* - Receive 4 products for $16/unit
|
||||
- $10
|
||||
- 12
|
||||
- 4 * $10
|
||||
- $120
|
||||
* - Deliver 10 products
|
||||
- $10
|
||||
- 2
|
||||
- -10 * $10
|
||||
- $20
|
||||
* - Receive 2 products for $9/unit
|
||||
- $10
|
||||
- 4
|
||||
- 2 * $10
|
||||
- $40
|
||||
|
||||
.. tab:: Average Cost (AVCO)
|
||||
|
||||
Calculates the valuation of a product based on the average cost of that product, divided by
|
||||
the total number of available stock on-hand. With this costing method, inventory valuation is
|
||||
*dynamic*, and constantly adjusts based on the purchase price of products.
|
||||
|
||||
.. list-table::
|
||||
:header-rows: 1
|
||||
:stub-columns: 1
|
||||
|
||||
* - Operation
|
||||
- Unit Cost
|
||||
- Qty On Hand
|
||||
- Incoming Value
|
||||
- Inventory Value
|
||||
* -
|
||||
- $0
|
||||
- 0
|
||||
-
|
||||
- $0
|
||||
* - Receive 8 products for $10/unit
|
||||
- $10
|
||||
- 8
|
||||
- 8 * $10
|
||||
- $80
|
||||
* - Receive 4 products for $16/unit
|
||||
- $12
|
||||
- 12
|
||||
- 4 * $16
|
||||
- $144
|
||||
* - Deliver 10 products
|
||||
- $12
|
||||
- 2
|
||||
- -10 * $12
|
||||
- $24
|
||||
* - Receive 2 products for $6/unit
|
||||
- $9
|
||||
- 4
|
||||
- 2 * $6
|
||||
- $36
|
||||
|
||||
How are unit cost and inventory value calculated at each step?
|
||||
|
||||
- When receiving four products for $16 each:
|
||||
|
||||
- Inventory value is calculated by adding the previous inventory value with the incoming
|
||||
value: :math:`$80 + (4 * $16) = $144`.
|
||||
- Unit cost is calculated by dividing the inventory value by the quantity on-hand:
|
||||
:math:`$144 / 12 = $12`.
|
||||
|
||||
- When delivering ten products, the average unit cost is used to calculate the inventory
|
||||
value, regardless of the purchase price of the product. Therefore, inventory value is
|
||||
:math:`$144 + (-10 * $12) = $24`.
|
||||
|
||||
- Receive two products for $6 each:
|
||||
|
||||
- Inventory value: :math:`$24 + (2 * $6) = $36`
|
||||
- Unit cost: :math:`$36 / 4 = $9`
|
||||
|
||||
.. note::
|
||||
When choosing :guilabel:`Average Cost (AVCO)` as the :guilabel:`Costing Method`, changing
|
||||
the numerical value in the *Cost* field for products in the respective product category
|
||||
creates a new record in the *Inventory Valuation* report to adjust the value of the
|
||||
product. The *Cost* amount is then automatically updated, based on the average purchase
|
||||
price of both the inventory on-hand and the costs accumulated from validated purchase
|
||||
orders.
|
||||
|
||||
.. tab:: First In First Out (FIFO)
|
||||
|
||||
Tracks the costs of incoming and outgoing items in real-time, and uses the real price of the
|
||||
products to change the valuation. The oldest purchase price is used as the cost for the next
|
||||
good sold, until an entire lot of that product is sold. When the next inventory lot moves up
|
||||
in the queue, an updated product cost is used based on the valuation of that specific lot.
|
||||
|
||||
This method is arguably the most accurate inventory valuation method for a variety of reasons,
|
||||
but it is highly sensitive to input data and human error.
|
||||
|
||||
.. list-table::
|
||||
:header-rows: 1
|
||||
:stub-columns: 1
|
||||
|
||||
* - Operation
|
||||
- Unit Cost
|
||||
- Qty On Hand
|
||||
- Incoming Value
|
||||
- Inventory Value
|
||||
* -
|
||||
- $0
|
||||
- 0
|
||||
-
|
||||
- $0
|
||||
* - Receive 8 products for $10/unit
|
||||
- $10
|
||||
- 8
|
||||
- 8 * $10
|
||||
- $80
|
||||
* - Receive 4 products for $16/unit
|
||||
- $12
|
||||
- 12
|
||||
- 4 * $16
|
||||
- $144
|
||||
* - Deliver 10 products
|
||||
- $16
|
||||
- 2
|
||||
- | -8 * $10
|
||||
| -2 * $16
|
||||
- $32
|
||||
* - Receive 2 products for $6/unit
|
||||
- $11
|
||||
- 4
|
||||
- 2 * $6
|
||||
- $44
|
||||
|
||||
How are unit cost and inventory value calculated at each step?
|
||||
|
||||
- When receiving four products for $16 each:
|
||||
|
||||
- Inventory value is calculated by adding the previous inventory value to the incoming
|
||||
value: :math:`$80 + (4 * $16) = $144`.
|
||||
- Unit cost is calculated by dividing the inventory value by the quantity on-hand:
|
||||
:math:`$144 / 12 = $12`.
|
||||
|
||||
- When delivering ten products, eight units were purchased for $10, and two units were
|
||||
purchased for $16.
|
||||
|
||||
- First, the incoming value is calculated by multiplying the on-hand quantity by the
|
||||
purchased price: :math:`(-8 * $10) + (-2 * $16) = -112`.
|
||||
- The inventory value is calculated by subtracting the incoming value from the previous
|
||||
inventory value: :math:`$144 - $112 = $32`.
|
||||
- Unit cost is calculated by dividing the inventory value by the remaining quantity:
|
||||
:math:`$32 / 2 = $16`.
|
||||
|
||||
- When receiving two products for $6, inventory value is :math:`$32 + $12 = $44`. Unit cost is
|
||||
:math:`$44 / 4 = $11`.
|
||||
|
||||
.. warning::
|
||||
Changing the costing method greatly impacts inventory valuation. It is highly recommended to
|
||||
|
Loading…
Reference in New Issue
Block a user