2015-07-08 18:24:24 +07:00
|
|
|
:code-column:
|
2015-03-17 20:58:55 +07:00
|
|
|
|
2017-10-20 17:42:45 +07:00
|
|
|
====================================
|
|
|
|
Introduction to Inventory Management
|
|
|
|
====================================
|
2015-03-23 23:33:58 +07:00
|
|
|
|
2015-04-16 19:18:43 +07:00
|
|
|
A double-entry inventory has no stock input, output (disparition of products)
|
|
|
|
or transformation. Instead, all operations are stock moves between locations
|
|
|
|
(possibly virtual).
|
2015-03-23 23:33:58 +07:00
|
|
|
|
2015-07-08 18:24:24 +07:00
|
|
|
.. h:div:: doc-aside chart-of-locations
|
2015-04-15 22:09:18 +07:00
|
|
|
|
|
|
|
.. placeholder
|
2015-03-23 23:33:58 +07:00
|
|
|
|
|
|
|
Operations
|
|
|
|
==========
|
|
|
|
|
2015-04-16 22:36:55 +07:00
|
|
|
Stock moves represent the transit of goods and materials between locations.
|
2015-03-23 23:33:58 +07:00
|
|
|
|
2015-07-08 18:24:24 +07:00
|
|
|
.. rst-class:: alternatives doc-aside
|
2015-04-16 16:57:02 +07:00
|
|
|
|
2015-04-21 15:17:31 +07:00
|
|
|
Production Order
|
2015-04-16 16:57:02 +07:00
|
|
|
Consume:
|
2015-04-16 22:36:55 +07:00
|
|
|
| 2 Wheels: Stock → Production
|
|
|
|
| 1 Bike Frame: Stock → Production
|
2015-04-16 16:57:02 +07:00
|
|
|
Produce:
|
2015-04-16 22:36:55 +07:00
|
|
|
1 Bicycle: Production → Stock
|
2015-04-16 16:57:02 +07:00
|
|
|
Configuration:
|
2015-04-16 22:36:55 +07:00
|
|
|
| Stock: the location the Manufacturing Order is initiated from
|
|
|
|
| Production: on the product form, field "Production Location"
|
2015-04-16 16:57:02 +07:00
|
|
|
|
|
|
|
Drop-shipping
|
2015-04-16 22:36:55 +07:00
|
|
|
1 Bicycle: Supplier → Customer
|
2015-04-21 22:24:42 +07:00
|
|
|
|
|
|
|
Configurarion:
|
|
|
|
| Supplier: on the product form
|
|
|
|
| Customer: on the sale order itself
|
2015-04-16 22:36:55 +07:00
|
|
|
Client Delivery
|
|
|
|
Pick
|
|
|
|
1 Bicycle: Stock → Packing Zone
|
|
|
|
Pack
|
|
|
|
1 Bicycle: Packing Zone → Output
|
|
|
|
Shipping
|
|
|
|
1 Bicycle: Output → Customer
|
2015-04-21 22:24:42 +07:00
|
|
|
Configuration:
|
|
|
|
| on the pick+pack+ship route for the warehouse
|
2015-04-16 22:36:55 +07:00
|
|
|
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
|
2015-04-22 15:49:24 +07:00
|
|
|
|
2015-04-21 22:24:42 +07:00
|
|
|
Configuration:
|
|
|
|
Scrap: Scrap Location when creating the scrapping
|
2015-04-16 16:57:02 +07:00
|
|
|
Inventory
|
2015-04-16 22:36:55 +07:00
|
|
|
Missing products in inventory
|
|
|
|
1 Bicycle: Warehouse → Inventory Loss
|
|
|
|
Extra products in inventory
|
|
|
|
1 Bicycle: Inventory Loss → Warehouse
|
2015-04-21 22:24:42 +07:00
|
|
|
Configuration:
|
|
|
|
Inventory Loss: "Inventory Location" field on the product
|
2015-04-16 16:57:02 +07:00
|
|
|
Reception
|
2015-04-16 22:36:55 +07:00
|
|
|
| 1 Bicycle: Supplier → Input
|
|
|
|
| 1 Bicycle: Input → Stock
|
2015-04-22 15:49:24 +07:00
|
|
|
|
2015-04-21 22:24:42 +07:00
|
|
|
Configuration:
|
|
|
|
| Supplier: purchase order supplier
|
|
|
|
| Input: "destination" field on the purchase order
|
2015-03-23 23:33:58 +07:00
|
|
|
|
|
|
|
Analysis
|
|
|
|
========
|
|
|
|
|
2015-04-16 19:18:43 +07:00
|
|
|
Inventory analysis can use products count or products value (= number of
|
|
|
|
products * product cost).
|
2015-03-23 23:33:58 +07:00
|
|
|
|
|
|
|
For each inventory location, multiple data points can be analysed:
|
|
|
|
|
2015-04-16 18:19:26 +07:00
|
|
|
.. 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>
|
2015-04-21 15:19:48 +07:00
|
|
|
<li data-highlight=".analysis-received">value of products received from suppliers over a period (negative)</li>
|
2015-04-16 18:19:26 +07:00
|
|
|
<li data-highlight=".analysis-transit">value of products in transit between locations</li>
|
|
|
|
</ul>
|
|
|
|
|
2015-07-08 18:24:24 +07:00
|
|
|
.. h:div:: doc-aside analysis-table
|
2015-04-16 18:19:26 +07:00
|
|
|
|
|
|
|
.. 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>
|
2015-04-21 15:19:48 +07:00
|
|
|
<tr class="analysis-received">
|
2015-04-16 18:19:26 +07:00
|
|
|
<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">
|
2015-04-20 16:14:49 +07:00
|
|
|
<th> Scrapped</th> <td class="text-right">$550</td>
|
2015-04-16 18:19:26 +07:00
|
|
|
</tr>
|
|
|
|
<tr class="analysis-creation">
|
|
|
|
<th> Manufacturing</th> <td class="text-right">- $1,000</td>
|
|
|
|
</tr>
|
|
|
|
</tbody>
|
|
|
|
</table>
|
2015-03-23 23:33:58 +07:00
|
|
|
|
2015-04-16 16:57:02 +07:00
|
|
|
Procurements & Procurement Rules
|
|
|
|
================================
|
2015-03-23 23:33:58 +07:00
|
|
|
|
|
|
|
A procurement is a request for a specific quantity of products to a specific
|
|
|
|
location. They can be created manually or automatically triggered by:
|
|
|
|
|
2015-07-08 18:24:24 +07:00
|
|
|
.. rst-class:: alternatives doc-aside
|
2015-04-16 16:57:02 +07:00
|
|
|
|
2015-04-16 19:18:43 +07:00
|
|
|
New sale orders
|
2015-04-16 16:57:02 +07:00
|
|
|
Effect
|
|
|
|
A procurement is created at the customer location for every product
|
|
|
|
ordered by the customer (you have to deliver the customer)
|
|
|
|
Configuration
|
2015-10-20 20:11:49 +07:00
|
|
|
Procurement Location: on the customer, field "Customer Location" (property)
|
2015-04-16 19:18:43 +07:00
|
|
|
Minimum Stock Rules
|
2015-04-16 16:57:02 +07:00
|
|
|
Effect
|
2015-04-16 22:36:55 +07:00
|
|
|
A procurement is created at the rule's location.
|
2015-04-16 16:57:02 +07:00
|
|
|
Configuration
|
2015-04-16 22:36:55 +07:00
|
|
|
Procurement location: on the rule, field "Location"
|
|
|
|
Procurement rules
|
2015-04-16 16:57:02 +07:00
|
|
|
Effect
|
2015-04-16 22:36:55 +07:00
|
|
|
A new procurement is created on the rule's source location
|
2015-04-16 16:57:02 +07:00
|
|
|
|
2015-04-16 19:18:43 +07:00
|
|
|
*Procurement rules* describe how procurements on specific locations should be
|
|
|
|
fulfilled e.g.:
|
2015-03-23 23:33:58 +07:00
|
|
|
|
|
|
|
* where the product should come from (source location)
|
|
|
|
* whether the procurement is :abbr:`MTO (Made To Order)` or :abbr:`MTS (Made
|
|
|
|
To Stock)`
|
|
|
|
|
2015-07-08 18:24:24 +07:00
|
|
|
.. h:div:: doc-aside
|
2015-03-23 23:33:58 +07:00
|
|
|
|
|
|
|
.. todo:: needs schema thing from FP
|
|
|
|
|
|
|
|
Routes
|
|
|
|
======
|
|
|
|
|
2015-04-16 16:57:02 +07:00
|
|
|
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):
|
|
|
|
|
2015-07-08 18:24:24 +07:00
|
|
|
.. rst-class:: alternatives doc-aside
|
2015-04-16 16:57:02 +07:00
|
|
|
|
|
|
|
Warehouses
|
2015-04-16 22:36:55 +07:00
|
|
|
Warehouse Route Example: Pick → Pack → Ship
|
|
|
|
|
2015-04-16 16:57:02 +07:00
|
|
|
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
|
2015-04-16 22:36:55 +07:00
|
|
|
Product Route Example: Quality Control
|
|
|
|
|
|
|
|
Reception:
|
|
|
|
Supplier → Input
|
|
|
|
Confirmation:
|
|
|
|
Input → Quality Control
|
|
|
|
Storage:
|
|
|
|
Quality Control → Stock
|
|
|
|
|
2015-04-16 16:57:02 +07:00
|
|
|
Product Category
|
2015-04-16 22:36:55 +07:00
|
|
|
Product Category Route Example: cross-dock
|
|
|
|
|
|
|
|
Reception:
|
|
|
|
Supplier → Input
|
|
|
|
Cross-Docks:
|
|
|
|
Input → Output
|
|
|
|
Delivery:
|
|
|
|
Output → Customer
|
2015-04-16 16:57:02 +07:00
|
|
|
Sale Order Line
|
|
|
|
Sale Order Line Example: Drop-shipping
|
2015-04-16 22:36:55 +07:00
|
|
|
|
|
|
|
Order:
|
2015-04-16 16:57:02 +07:00
|
|
|
Supplier → Customer
|
2015-03-23 23:33:58 +07:00
|
|
|
|
|
|
|
Push Rules
|
|
|
|
==========
|
|
|
|
|
2015-04-16 19:18:43 +07:00
|
|
|
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.
|
2015-03-23 23:33:58 +07:00
|
|
|
|
2015-07-08 18:24:24 +07:00
|
|
|
.. rst-class:: alternatives doc-aside
|
2015-04-16 16:57:02 +07:00
|
|
|
|
|
|
|
Quality Control
|
2015-04-16 22:36:55 +07:00
|
|
|
* Product lands in Input
|
|
|
|
* Push 1: Input → Quality Control
|
|
|
|
* Push 2: Quality Control → Stock
|
|
|
|
Warehouse Transit
|
|
|
|
* Product lands in Transit
|
|
|
|
* Push: Transit → Warehouse 2
|
2015-03-23 23:33:58 +07:00
|
|
|
|
|
|
|
Procurement Groups
|
|
|
|
==================
|
2015-04-16 16:57:02 +07:00
|
|
|
|
2015-04-16 19:18:43 +07:00
|
|
|
Routes and rules define inventory moves. For every rule, a document type is
|
|
|
|
provided:
|
2015-04-16 16:57:02 +07:00
|
|
|
|
|
|
|
* 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)
|