[IMP] warehouse -> inventory
This commit is contained in:
@@ -0,0 +1,9 @@
|
||||
====================
|
||||
Warehouse Management
|
||||
====================
|
||||
|
||||
.. toctree::
|
||||
:titlesonly:
|
||||
:glob:
|
||||
|
||||
management/miscellaneous
|
||||
@@ -0,0 +1,9 @@
|
||||
========================
|
||||
Miscellaneous Operations
|
||||
========================
|
||||
|
||||
.. toctree::
|
||||
:titlesonly:
|
||||
:glob:
|
||||
|
||||
miscellaneous/schedulers
|
||||
@@ -0,0 +1,3 @@
|
||||
====================================
|
||||
How to configure and run schedulers?
|
||||
====================================
|
||||
@@ -0,0 +1,9 @@
|
||||
========
|
||||
Overview
|
||||
========
|
||||
|
||||
.. toctree::
|
||||
:titlesonly:
|
||||
:glob:
|
||||
|
||||
overview/*
|
||||
@@ -0,0 +1,263 @@
|
||||
:code-column:
|
||||
|
||||
=================================
|
||||
Double-Entry Inventory Management
|
||||
=================================
|
||||
|
||||
A double-entry inventory has no stock input, output (disparition of products)
|
||||
or transformation. Instead, all operations are stock moves between locations
|
||||
(possibly virtual).
|
||||
|
||||
.. h:div:: doc-aside chart-of-locations
|
||||
|
||||
.. placeholder
|
||||
|
||||
Operations
|
||||
==========
|
||||
|
||||
Stock moves represent the transit of goods and materials between locations.
|
||||
|
||||
.. rst-class:: alternatives doc-aside
|
||||
|
||||
Production Order
|
||||
Consume:
|
||||
| 2 Wheels: Stock → Production
|
||||
| 1 Bike Frame: Stock → Production
|
||||
Produce:
|
||||
1 Bicycle: Production → Stock
|
||||
Configuration:
|
||||
| Stock: the location the Manufacturing Order is initiated from
|
||||
| Production: on the product form, field "Production Location"
|
||||
|
||||
Drop-shipping
|
||||
1 Bicycle: Supplier → Customer
|
||||
|
||||
Configurarion:
|
||||
| Supplier: on the product form
|
||||
| Customer: on the sale order itself
|
||||
Client Delivery
|
||||
Pick
|
||||
1 Bicycle: Stock → Packing Zone
|
||||
Pack
|
||||
1 Bicycle: Packing Zone → Output
|
||||
Shipping
|
||||
1 Bicycle: Output → Customer
|
||||
Configuration:
|
||||
| on the pick+pack+ship route for the warehouse
|
||||
Inter-Warehouse transfer
|
||||
Transfer:
|
||||
| 1 Bicycle: Warehouse 1 → Transit
|
||||
| 1 Bicycle: Transit → Warehouse 2
|
||||
Configuration:
|
||||
| Warehouse 2: the location the transfer is initiated from
|
||||
| Warehouse 1: on the transit route
|
||||
Broken Product (scrapped)
|
||||
1 Bicycle: Warehouse → Scrap
|
||||
|
||||
Configuration:
|
||||
Scrap: Scrap Location when creating the scrapping
|
||||
Inventory
|
||||
Missing products in inventory
|
||||
1 Bicycle: Warehouse → Inventory Loss
|
||||
Extra products in inventory
|
||||
1 Bicycle: Inventory Loss → Warehouse
|
||||
Configuration:
|
||||
Inventory Loss: "Inventory Location" field on the product
|
||||
Reception
|
||||
| 1 Bicycle: Supplier → Input
|
||||
| 1 Bicycle: Input → Stock
|
||||
|
||||
Configuration:
|
||||
| Supplier: purchase order supplier
|
||||
| Input: "destination" field on the purchase order
|
||||
|
||||
Analysis
|
||||
========
|
||||
|
||||
Inventory analysis can use products count or products value (= number of
|
||||
products * product cost).
|
||||
|
||||
For each inventory location, multiple data points can be analysed:
|
||||
|
||||
.. raw:: html
|
||||
|
||||
<ul class="highlighter-list" data-target=".analysis-table">
|
||||
<li data-highlight=".analysis-valuation">inventory valuation</li>
|
||||
<li data-highlight=".analysis-creation">
|
||||
value creation (difference between the value of manufactured products
|
||||
and the cost of raw materials used during manufacturing) (negative)
|
||||
</li>
|
||||
<li data-highlight=".analysis-lost">value of lost/stolen products</li>
|
||||
<li data-highlight=".analysis-scrapped">value of scrapped products</li>
|
||||
<li data-highlight=".analysis-delivered">value of products delivered to clients over a period</li>
|
||||
<li data-highlight=".analysis-received">value of products received from suppliers over a period (negative)</li>
|
||||
<li data-highlight=".analysis-transit">value of products in transit between locations</li>
|
||||
</ul>
|
||||
|
||||
.. h:div:: doc-aside analysis-table
|
||||
|
||||
.. raw:: html
|
||||
|
||||
<table class="table table-condensed highlighter-target">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Location</th> <th class="text-right">Value</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr class="analysis-valuation">
|
||||
<th>Physical Locations</th> <td class="text-right">$1,000</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th> Warehouse 1</th> <td class="text-right">$600</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th> Warehouse 2</th> <td class="text-right">$400</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>Partner Locations</th> <td class="text-right">- $1,500</td>
|
||||
</tr>
|
||||
<tr class="analysis-delivered">
|
||||
<th> Customers</th> <td class="text-right">$2,000</td>
|
||||
</tr>
|
||||
<tr class="analysis-received">
|
||||
<th> Suppliers</th> <td class="text-right">- $3,500</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>Virtual Locations</th> <td class="text-right">$500</td>
|
||||
</tr>
|
||||
<tr class="analysis-transit">
|
||||
<th> Transit Location</th> <td class="text-right">$600</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th> Initial Inventory</th> <td class="text-right">$0</td>
|
||||
</tr>
|
||||
<tr class="analysis-lost">
|
||||
<th> Inventory Loss</th> <td class="text-right">$350</td>
|
||||
</tr>
|
||||
<tr class="analysis-scrapped">
|
||||
<th> Scrapped</th> <td class="text-right">$550</td>
|
||||
</tr>
|
||||
<tr class="analysis-creation">
|
||||
<th> Manufacturing</th> <td class="text-right">- $1,000</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
Procurements & Procurement Rules
|
||||
================================
|
||||
|
||||
A procurement is a request for a specific quantity of products to a specific
|
||||
location. They can be created manually or automatically triggered by:
|
||||
|
||||
.. rst-class:: alternatives doc-aside
|
||||
|
||||
New sale orders
|
||||
Effect
|
||||
A procurement is created at the customer location for every product
|
||||
ordered by the customer (you have to deliver the customer)
|
||||
Configuration
|
||||
Procurement Location: on the customer, field “Customer Location” (property)
|
||||
Minimum Stock Rules
|
||||
Effect
|
||||
A procurement is created at the rule's location.
|
||||
Configuration
|
||||
Procurement location: on the rule, field "Location"
|
||||
Procurement rules
|
||||
Effect
|
||||
A new procurement is created on the rule's source location
|
||||
|
||||
*Procurement rules* describe how procurements on specific locations should be
|
||||
fulfilled e.g.:
|
||||
|
||||
* where the product should come from (source location)
|
||||
* whether the procurement is :abbr:`MTO (Made To Order)` or :abbr:`MTS (Made
|
||||
To Stock)`
|
||||
|
||||
.. h:div:: doc-aside
|
||||
|
||||
.. todo:: needs schema thing from FP
|
||||
|
||||
Routes
|
||||
======
|
||||
|
||||
Procurement rules are grouped in routes. Routes define paths the product must
|
||||
follow. Routes may be applicable or not, depending on the products, sales
|
||||
order lines, warehouse,...
|
||||
|
||||
To fulfill a procurement, the system will search for rules belonging to routes
|
||||
that are defined in (by order of priority):
|
||||
|
||||
.. rst-class:: alternatives doc-aside
|
||||
|
||||
Warehouses
|
||||
Warehouse Route Example: Pick → Pack → Ship
|
||||
|
||||
Picking List:
|
||||
Pick Zone → Pack Zone
|
||||
Pack List:
|
||||
Pack Zone → Gate A
|
||||
Delivery Order:
|
||||
Gate A → Customer
|
||||
|
||||
Routes that describe how you organize your warehouse should be defined on the warehouse.
|
||||
A Product
|
||||
Product Route Example: Quality Control
|
||||
|
||||
Reception:
|
||||
Supplier → Input
|
||||
Confirmation:
|
||||
Input → Quality Control
|
||||
Storage:
|
||||
Quality Control → Stock
|
||||
|
||||
Product Category
|
||||
Product Category Route Example: cross-dock
|
||||
|
||||
Reception:
|
||||
Supplier → Input
|
||||
Cross-Docks:
|
||||
Input → Output
|
||||
Delivery:
|
||||
Output → Customer
|
||||
Sale Order Line
|
||||
Sale Order Line Example: Drop-shipping
|
||||
|
||||
Order:
|
||||
Supplier → Customer
|
||||
|
||||
Push Rules
|
||||
==========
|
||||
|
||||
Push rules trigger when products enter a specific location. They automatically
|
||||
move the product to a new location. Whether a push rule can be used depends on
|
||||
applicable routes.
|
||||
|
||||
.. rst-class:: alternatives doc-aside
|
||||
|
||||
Quality Control
|
||||
* Product lands in Input
|
||||
* Push 1: Input → Quality Control
|
||||
* Push 2: Quality Control → Stock
|
||||
Warehouse Transit
|
||||
* Product lands in Transit
|
||||
* Push: Transit → Warehouse 2
|
||||
|
||||
Procurement Groups
|
||||
==================
|
||||
|
||||
Routes and rules define inventory moves. For every rule, a document type is
|
||||
provided:
|
||||
|
||||
* Picking
|
||||
* Packing
|
||||
* Delivery Order
|
||||
* Purchase Order
|
||||
* ...
|
||||
|
||||
Moves are grouped within the same document type if their procurement group and
|
||||
locations are the same.
|
||||
|
||||
A sale order creates a procurement group so that pickings and delivery orders
|
||||
of the same order are grouped. But you can define specific groups on
|
||||
reordering rules too. (e.g. to group purchases of specific products together)
|
||||
@@ -0,0 +1,279 @@
|
||||
:code-column:
|
||||
|
||||
====================
|
||||
Inventory Valuations
|
||||
====================
|
||||
|
||||
Costing Method
|
||||
==============
|
||||
|
||||
International accounting standards define several ways to compute product
|
||||
costs:
|
||||
|
||||
.. rst-class:: alternatives doc-aside
|
||||
|
||||
Standard Price
|
||||
.. rst-class:: values-table
|
||||
|
||||
.. list-table::
|
||||
:widths: 28 18 18 18 18
|
||||
:header-rows: 1
|
||||
:stub-columns: 1
|
||||
|
||||
* - Operation
|
||||
- Unit Cost
|
||||
- Qty On Hand
|
||||
- Delta Value
|
||||
- Inventory Value
|
||||
* -
|
||||
- $10
|
||||
- 0
|
||||
-
|
||||
- $0
|
||||
* - Receive 8 Products at $10
|
||||
- $10
|
||||
- 8
|
||||
- +8*$10
|
||||
- $80
|
||||
* - Receive 4 Products at $16
|
||||
- $10
|
||||
- 12
|
||||
- +4*$10
|
||||
- $120
|
||||
* - Deliver 10 Products
|
||||
- $10
|
||||
- 2
|
||||
- | -10*$10
|
||||
|
|
||||
- $20
|
||||
* - Receive 2 Products at $9
|
||||
- $10
|
||||
- 4
|
||||
- +2*$10
|
||||
- $40
|
||||
Average Price
|
||||
.. rst-class:: values-table
|
||||
|
||||
.. list-table::
|
||||
:widths: 28 18 18 18 18
|
||||
:header-rows: 1
|
||||
:stub-columns: 1
|
||||
|
||||
* - Operation
|
||||
- Unit Cost
|
||||
- Qty On Hand
|
||||
- Delta Value
|
||||
- Inventory Value
|
||||
* -
|
||||
- $0
|
||||
- 0
|
||||
-
|
||||
- $0
|
||||
* - Receive 8 Products at $10
|
||||
- $10
|
||||
- 8
|
||||
- +8*$10
|
||||
- $80
|
||||
* - Receive 4 Products at $16
|
||||
- $12
|
||||
- 12
|
||||
- +4*$16
|
||||
- $144
|
||||
* - Deliver 10 Products [#average-removal]_
|
||||
- $12
|
||||
- 2
|
||||
- | -10*$12
|
||||
|
|
||||
- $24
|
||||
* - Receive 2 Products at $6
|
||||
- $9
|
||||
- 4
|
||||
- +2*$6
|
||||
- $36
|
||||
FIFO
|
||||
.. rst-class:: values-table
|
||||
|
||||
.. list-table::
|
||||
:widths: 28 18 18 18 18
|
||||
:header-rows: 1
|
||||
:stub-columns: 1
|
||||
|
||||
* - Operation
|
||||
- Unit Cost
|
||||
- Qty On Hand
|
||||
- Delta Value
|
||||
- Inventory Value
|
||||
* -
|
||||
- $0
|
||||
- 0
|
||||
-
|
||||
- $0
|
||||
* - Receive 8 Products at $10
|
||||
- $10
|
||||
- 8
|
||||
- +8*$10
|
||||
- $80
|
||||
* - Receive 4 Products at $16
|
||||
- $12
|
||||
- 12
|
||||
- +4*$16
|
||||
- $144
|
||||
* - Deliver 10 Products
|
||||
- $16
|
||||
- 2
|
||||
- | -8*$10
|
||||
| -2*$16
|
||||
- $32
|
||||
* - Receive 2 Products at $6
|
||||
- $11
|
||||
- 4
|
||||
- +2*$6
|
||||
- $44
|
||||
LIFO (not accepted in IFRS)
|
||||
.. rst-class:: values-table
|
||||
|
||||
.. list-table::
|
||||
:widths: 28 18 18 18 18
|
||||
:header-rows: 1
|
||||
:stub-columns: 1
|
||||
|
||||
* - Operation
|
||||
- Unit Cost
|
||||
- Qty On Hand
|
||||
- Delta Value
|
||||
- Inventory Value
|
||||
* -
|
||||
- $0
|
||||
- 0
|
||||
-
|
||||
- $0
|
||||
* - Receive 8 Products at $10
|
||||
- $10
|
||||
- 8
|
||||
- +8*$10
|
||||
- $80
|
||||
* - Receive 4 Products at $16
|
||||
- $12
|
||||
- 12
|
||||
- +4*$16
|
||||
- $144
|
||||
* - Deliver 10 Products
|
||||
- $10
|
||||
- 2
|
||||
- | -4*$16
|
||||
| -6*$10
|
||||
- $20
|
||||
* - Receive 2 Products at $6
|
||||
- $8
|
||||
- 4
|
||||
- +2*$6
|
||||
- $32
|
||||
|
||||
The costing method is defined on the product form: standard, average or real
|
||||
price.
|
||||
|
||||
For "real price", the costing is further refined by the removal strategy (on
|
||||
the warehouse location or product category), FIFO by default.
|
||||
|
||||
Periodic Inventory Valuation
|
||||
============================
|
||||
|
||||
In a periodic inventory valuation, goods reception and outgoing shipments have
|
||||
no direct impact in the accounting. At the end of the month or year, the
|
||||
accountant post one journal entry representing the value of the physical
|
||||
inventory.
|
||||
|
||||
.. rst-class:: alternatives doc-aside
|
||||
|
||||
Supplier Invoice
|
||||
.. rst-class:: values-table
|
||||
|
||||
============================= ===== ======
|
||||
\ Debit Credit
|
||||
============================= ===== ======
|
||||
Assets: Inventory 50
|
||||
Assets: Deferred Tax Assets 4.68
|
||||
Liabilities: Accounts Payable 54.68
|
||||
============================= ===== ======
|
||||
|
||||
Explanation:
|
||||
* A temporary account is used to note goods to receive
|
||||
* The purchase order provides prices of goods, the actual invoice may
|
||||
include extra costs such as shipping
|
||||
* The company still needs to pay the vendor (traded an asset against a
|
||||
liability)
|
||||
Configuration:
|
||||
* Inventory: defined on the product or the category of related product,
|
||||
field: Stock Input Account
|
||||
* Deferred Tax Assets: defined on the tax used on the purchase order line
|
||||
* Accounts Payable: defined on the supplier related to the bill
|
||||
Goods Receptions
|
||||
No Journal Entry
|
||||
Customer Invoice
|
||||
.. rst-class:: values-table
|
||||
|
||||
===================================== ===== ======
|
||||
\ Debit Credit
|
||||
===================================== ===== ======
|
||||
Revenue: Goods 100
|
||||
Liabilities: Deferred Tax Liabilities 9
|
||||
Assets: Accounts Receivable 109
|
||||
Assets: Inventory 50
|
||||
Expenses: Cost of Goods Sold 50
|
||||
===================================== ===== ======
|
||||
|
||||
Explanation:
|
||||
* Revenues increase by $100
|
||||
* A tax to pay at the end of the month of $9
|
||||
* The customer owns you $109
|
||||
* The inventory is decreased by $50 (shipping of the goods)
|
||||
* The cost of goods sold decreases the gross profit by $50
|
||||
Configuration:
|
||||
* Revenue: defined on the product, or the product category if not on the
|
||||
product, field Income Account
|
||||
* Deferred Tax Liabilities: defined on the tax used on the invoice line
|
||||
* Accounts Receivable: defined on the customer (property)
|
||||
* Inventory: defined on the category of the related product (property)
|
||||
* Expenses: defined on the product, or the category of product (property)
|
||||
|
||||
The fiscal position used on the invoice may have a rule that replaces the
|
||||
Income Account or the tax defined on the product by another one.
|
||||
Customer Shipping
|
||||
No Journal Entry
|
||||
Manufacturing Orders
|
||||
No Journal Entry
|
||||
|
||||
.. raw:: html
|
||||
|
||||
<hr style="float: none; visibility: hidden; margin: 0;">
|
||||
|
||||
At the end of the month/year, the company do a physical inventory (or just
|
||||
rely on the inventory in Odoo). They multiply the quantity of each product by
|
||||
its cost to know the inventory value of the company.
|
||||
|
||||
.. h:div:: doc-aside
|
||||
|
||||
If the real value of the inventory is $4800 but the *14000 Inventory*
|
||||
account has a balance of $4200, the following journal entry is created
|
||||
manually:
|
||||
|
||||
.. rst-class:: values-table
|
||||
|
||||
========================== ==== ====
|
||||
14000 Inventory $600
|
||||
14700 Inventory Variations $600
|
||||
========================== ==== ====
|
||||
|
||||
Perpetual Inventory Valuation
|
||||
=============================
|
||||
|
||||
In a perpetual inventory valuation, goods reception and outgoing shipments are
|
||||
directly posted in the accounting. The inventory valuation is always
|
||||
up-to-date.
|
||||
|
||||
.. h:div:: valuation-chart doc-aside
|
||||
|
||||
.. placeholder
|
||||
|
||||
.. [#average-removal] products leaving the stock have no impact on the average
|
||||
price.
|
||||
@@ -0,0 +1,9 @@
|
||||
========
|
||||
Settings
|
||||
========
|
||||
|
||||
.. toctree::
|
||||
:titlesonly:
|
||||
:glob:
|
||||
|
||||
settings/*
|
||||
@@ -0,0 +1,9 @@
|
||||
==========
|
||||
Warehouses
|
||||
==========
|
||||
|
||||
.. toctree::
|
||||
:titlesonly:
|
||||
:glob:
|
||||
|
||||
warehouses/*
|
||||
@@ -0,0 +1,3 @@
|
||||
========================================================
|
||||
What is the difference between warehouses and locations?
|
||||
========================================================
|
||||
Reference in New Issue
Block a user