Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Nom du fichier – à compléter OpenERP - Community Meeting 2013
OpenERP WMS v8
Josse Colpaert – Developer
Quentin De Paoli –...
Nom du fichier – à compléter OpenERP - Community Meeting 2013
OpenERP WMS Should Manage
This
– Advanced features for effic...
Nom du fichier – à compléter OpenERP - Community Meeting 2013
As well as this...
– Keep it super simple & customizable –
A...
Nom du fichier – à compléter OpenERP - Community Meeting 2013
Introduction1
Routing2
Bins & Lots Management3
Pickings & Pa...
Nom du fichier – à compléter OpenERP - Community Meeting 2013
Context
 Analyze of lacks/missing features
• Collaboration ...
Nom du fichier – à compléter OpenERP - Community Meeting 2013
New features v8
 Support All routes:
• Pick → Pack → Ship
•...
Nom du fichier – à compléter OpenERP - Community Meeting 2013
Technical Objectives
 Scalable
• Support millions of
record...
Nom du fichier – à compléter OpenERP - Community Meeting 2013
Introduction1
Routing2
Bins & Lots Management3
Pickings & Pa...
Nom du fichier – à compléter OpenERP - Community Meeting 2013
Introduction
Example of operations to manage:
 Pick → Pack ...
Nom du fichier – à compléter OpenERP - Community Meeting 2013
Definition of Concepts
Push rule:
 When products arrives in...
Nom du fichier – à compléter OpenERP - Community Meeting 2013
Example: Pick → Pack → Ship
 Refers to the following config...
Nom du fichier – à compléter OpenERP - Community Meeting 2013
 Plastic cups
 Fresh products
Example: Cross-Docking
Nom du fichier – à compléter OpenERP - Community Meeting 2013
Example: Drop-Shipping (1/2)
 Supplier direct delivery (in ...
Nom du fichier – à compléter OpenERP - Community Meeting 2013
Example: Drop-Shipping (2/2)
 In v7.0, a sale order
creates...
Nom du fichier – à compléter OpenERP - Community Meeting 2013
Technical Explanation
When action_confirm on stock.move:
 T...
Nom du fichier – à compléter OpenERP - Community Meeting 2013
Introduction1
Routing2
Bins & Lots Management3
Picking & Pac...
Nom du fichier – à compléter OpenERP - Community Meeting 2013
Introduction
 Bins are sub-locations for which you don't ca...
Nom du fichier – à compléter OpenERP - Community Meeting 2013
Quants
 Concept explained:
• Smallest homogeneous part of s...
Nom du fichier – à compléter Management Presentation
Quants
• 5 PCE Stock (history_ids: ID1, ID
• 1 PCE Stock (history_ids...
Nom du fichier – à compléter Management Presentation
Quants
• Benefits
– Optimization of real stock computation
• Computat...
Nom du fichier – à compléter Management Presentation
Quants
• 20 PCE Customer at 20 €
(history_ids: ID1, ID3)
• 10 PCE Sto...
Nom du fichier – à compléter OpenERP - Community Meeting 2013
Bins Management
 Need to have strategies to find child loca...
Nom du fichier – à compléter OpenERP - Community Meeting 2013
Push/Pull vs Removal/Put Away
Push Pull Removal Put Away
Whe...
Nom du fichier – à compléter OpenERP - Community Meeting 2013
Examples: Reservation (in)
The steps:
When the purchase orde...
Nom du fichier – à compléter OpenERP - Community Meeting 2013
Examples: Reservation (out)
The steps:
When the sales order ...
Nom du fichier – à compléter OpenERP - Community Meeting 2013
Introduction1
Routing2
Bins & Lots Management3
Picking & Pac...
Nom du fichier – à compléter OpenERP - Community Meeting 2013
Introduction
 Operations to manage
• Efficient Picking mana...
Nom du fichier – à compléter OpenERP - Community Meeting 2013
Pickings
 Act differently:
• Stock moves try to add themsel...
Nom du fichier – à compléter OpenERP - Community Meeting 2013
Batch Picking
 Only pull rules
 Grouping strategy stock mo...
Nom du fichier – à compléter OpenERP - Community Meeting 2013
Wave Picking
 Pull rule from pick zone → pack zone
 Minimu...
Nom du fichier – à compléter OpenERP - Community Meeting 2013
Trip assignation
 Nothing new:
• the wave can be assigned t...
Nom du fichier – à compléter OpenERP - Community Meeting 2013
Packing
 Want to know which quants are in which packs
• => ...
Nom du fichier – à compléter OpenERP - Community Meeting 2013
Packing
Nom du fichier – à compléter OpenERP - Community Meeting 2013
Introduction1
Routing2
Bins & Lots Management3
Picking & Pac...
Nom du fichier – à compléter OpenERP - Community Meeting 2013
Costing (1)
 Multi-company
• Cost price, valuation methods ...
Nom du fichier – à compléter OpenERP - Community Meeting 2013
Costing (2)
 Product price gets updated when doing out
• =p...
Nom du fichier – à compléter OpenERP - Community Meeting 2013
Stock Replenishment
 Replenishment is currently handled by ...
Nom du fichier – à compléter OpenERP - Community Meeting 2013
Stock ownership
 Partner on the quants
 Needed for consign...
Nom du fichier – à compléter OpenERP - Community Meeting 2013
Negative stock
 When we need to send when it has not been
r...
Nom du fichier – à compléter OpenERP - Community Meeting 2013
Negative stock
 Suppose have to send 5 pieces from stock
wi...
Nom du fichier – à compléter OpenERP - Community Meeting 2013
Negative stock
 Will split
Stock
-5
Packed
+2, propQ1
Q1 Q2...
Nom du fichier – à compléter OpenERP - Community Meeting 2013
Negative stock
 Will reconcile when reception in stock or
m...
Upcoming SlideShare
Loading in …5
×

The future of OpenERP Warehouse management system: future improvements. Quentin de Paoli & Josse Colpaert, OpenERP

19,409 views

Published on

Published in: Business, Economy & Finance

The future of OpenERP Warehouse management system: future improvements. Quentin de Paoli & Josse Colpaert, OpenERP

  1. 1. Nom du fichier – à compléter OpenERP - Community Meeting 2013 OpenERP WMS v8 Josse Colpaert – Developer Quentin De Paoli – Developer OpenERP WMS v8 Josse Colpaert – Developer Quentin De Paoli – Developer
  2. 2. Nom du fichier – à compléter OpenERP - Community Meeting 2013 OpenERP WMS Should Manage This – Advanced features for efficient routing and bins management – OpenERP WMS Should Manage This – Advanced features for efficient routing and bins management –
  3. 3. Nom du fichier – à compléter OpenERP - Community Meeting 2013 As well as this... – Keep it super simple & customizable – As well as this... – Keep it super simple & customizable –
  4. 4. Nom du fichier – à compléter OpenERP - Community Meeting 2013 Introduction1 Routing2 Bins & Lots Management3 Pickings & Packings4 Miscellaneous5
  5. 5. Nom du fichier – à compléter OpenERP - Community Meeting 2013 Context  Analyze of lacks/missing features • Collaboration with c2c • Deep analyze of the existing compared to other WMS (SAP, Oracle...) • http://bit.ly/12gol33 • POC made  2 conclusions: • Gonna be legendary! • Need a refactoring effort
  6. 6. Nom du fichier – à compléter OpenERP - Community Meeting 2013 New features v8  Support All routes: • Pick → Pack → Ship • Cross-dock • Drop Shipping • Quality Control  Smart Location Mgt • Removal Strategies • Put Away Strategies  Operations • Packing • Barcode scanner • Batch and Waves Picking  Costing • Multi-company • FIFO/LIFO/Avg/FEFO • Price Adjustment • Negative Stocks  Lots management • Reservation • Boxes, Palets, ...  User Interface • Barcode on all reports • Packing User Interface
  7. 7. Nom du fichier – à compléter OpenERP - Community Meeting 2013 Technical Objectives  Scalable • Support millions of records • Computation not related to the # of moves  Easier to extend • New strategies • New routes • Specific lots  Fully Customizable • Generic • Support most logistic flows without developments  Better Modularity • Inventory Management vs Warehouse Management → All of this while remaining super simple. → Less code than in v7.0 for all these features! → All of this while remaining super simple. → Less code than in v7.0 for all these features!
  8. 8. Nom du fichier – à compléter OpenERP - Community Meeting 2013 Introduction1 Routing2 Bins & Lots Management3 Pickings & Packings4 Miscellaneous5
  9. 9. Nom du fichier – à compléter OpenERP - Community Meeting 2013 Introduction Example of operations to manage:  Pick → Pack → Ship  Pack → Ship  Receive → Control → Store  Cross dock (from Reception to Packing, without going through the stock)  Drop Shipping (from supplier to customer)  Manual decisions must prevail
  10. 10. Nom du fichier – à compléter OpenERP - Community Meeting 2013 Definition of Concepts Push rule:  When products arrives in a location, push them to another: • e.g. When receiving 3 computers, move to QC zone. Pull rule:  When you need products in a location, bring them from another location (or produce, purchase, ...) • e.g. A delivery order (output → customer) should pull a packing operation (stock → output) Routes:  A set of push & pull rules to set on a product • e.g. Pick → Pack → Ship, Cross-docking, ... → These simple concepts handle all use cases!
  11. 11. Nom du fichier – à compléter OpenERP - Community Meeting 2013 Example: Pick → Pack → Ship  Refers to the following configuration  Location Structure: • Warehouse • Stock • Picked: where you put goods before being packed (= pack in) • Packed: where you put the packed goods (= pack out)
  12. 12. Nom du fichier – à compléter OpenERP - Community Meeting 2013  Plastic cups  Fresh products Example: Cross-Docking
  13. 13. Nom du fichier – à compléter OpenERP - Community Meeting 2013 Example: Drop-Shipping (1/2)  Supplier direct delivery (in MTO from SO)
  14. 14. Nom du fichier – à compléter OpenERP - Community Meeting 2013 Example: Drop-Shipping (2/2)  In v7.0, a sale order creates: • stock.picking • stock.move • procurement.order on output location  In v8.0, a sale order creates: • procurement.order on customer location → stock.move are created automatically by a pull rule on the “Customers” location → less code, more flexibility (allows from supplier to customer, without taking products from the stock)
  15. 15. Nom du fichier – à compléter OpenERP - Community Meeting 2013 Technical Explanation When action_confirm on stock.move:  Trigger push rules (other moves)  Trigger pull rules (procurements) Modularity:  Push rules defined in stock_location module  Simple pull (stock → Customer): stock module  Advanced pull (by product/location): stock_location module Grouping stock.move into pickings is made with another principle. See later section.
  16. 16. Nom du fichier – à compléter OpenERP - Community Meeting 2013 Introduction1 Routing2 Bins & Lots Management3 Picking & Packing4 Miscellaneous5
  17. 17. Nom du fichier – à compléter OpenERP - Community Meeting 2013 Introduction  Bins are sub-locations for which you don't care about virtual stock  Operations to manage • Bins management o Choose a bin/lot when taking products o Choose a bin when dropping products • Lots management o Upstream/downstream traceability o Implement costing method depending on the real purchase price • Manual decisions must prevail
  18. 18. Nom du fichier – à compléter OpenERP - Community Meeting 2013 Quants  Concept explained: • Smallest homogeneous part of stock • Holds information previously on stock.move (Purchase price, lot, stock ownership, ...) • Implements the lot management  Quants ≠ Stock Moves ≠ Procurements Products Consumable Services Procurement Yes Yes Yes Stock.move Yes Yes Quants Yes
  19. 19. Nom du fichier – à compléter Management Presentation Quants • 5 PCE Stock (history_ids: ID1, ID • 1 PCE Stock (history_ids: ID2, ID • 2 PCE Input (history_ids: ID2) Quants: use case Stock move • ID 1: 5 PCE, Supplier → Input • ID 2: 3 PCE, Supplier → Input • ID 3: 6 PCE, Input → Stock • ID 4: 2 PCE, Input → Output • 5 PCE Input (history_ids: ID1) • 3 PCE Input (history_ids: ID2) • 2 PCE Output (history_ids: ID2, ID4)
  20. 20. Nom du fichier – à compléter Management Presentation Quants • Benefits – Optimization of real stock computation • Computation becomes trivial • Query doesn't grow with time (depends only on the physical products in stock) • Inventory analysis is super simple – Upstream/Downstream traceability (lot management) – Allows to implement FIFO costing (see next slide...)
  21. 21. Nom du fichier – à compléter Management Presentation Quants • 20 PCE Customer at 20 € (history_ids: ID1, ID3) • 10 PCE Stock at 50 € (history_ids: ID2) • 10 PCE Customer at 50 € (history_ids: ID2, ID3) Quants in FIFO 1 location: use case Stock move • ID 1: 20 PCE at 20€, Supplier → Stock • ID 2: 20 PCE at 50€, Supplier → Stock • ID 3: 30 PCE, Stock → Customer at (20 * 20 + 10 *50) / 30 = 30€ – Product price: 30 € • 20 PCE Stock at 20 € (history_ids: ID1) • 20 PCE Stock at 50 € (history_ids: ID2)
  22. 22. Nom du fichier – à compléter OpenERP - Community Meeting 2013 Bins Management  Need to have strategies to find child location from parent location  Removal Strategies: • How do you reserve/select products, defined by location or product categories • e.g. FIFO/LIFO,Nearest Available, ...  Put Away Strategies: • When receiving products, where do I have to put them
  23. 23. Nom du fichier – à compléter OpenERP - Community Meeting 2013 Push/Pull vs Removal/Put Away Push Pull Removal Put Away When Move Confirmation Move Confirmation Move Assignation Move Assignation Goal Route Products Route Products Bin Allocation Bin Allocation Impact Stock.move Stock.move Quants Quants Task Create stock.move. Create Procurement Select Quants Set Quants Destination Apply On Products & Consumables Products & Consumables Products Only Products Only
  24. 24. Nom du fichier – à compléter OpenERP - Community Meeting 2013 Examples: Reservation (in) The steps: When the purchase order is validated, a stock.move is created (in state: confirmed) Confirmed: Supplier → Input This stock.move triggers a push rule (input → Stock) that creates the following move: Waiting: Input → Stock At the product reception, we execute the first move and assign the second move, we get: Done: Supplier → Input (will create quants) Assigned: Input → Stock (*) with quants from first move (*) Put Away strategy: Quants get a destination reservation to go to Bin A
  25. 25. Nom du fichier – à compléter OpenERP - Community Meeting 2013 Examples: Reservation (out) The steps: When the sales order is validated, a stock move is created: (pull rule) Confirmed: Stock → Customer When we assign it, we get: Assigned: Stock → Customer (*) (*) Quants from Removal Strategy (e.g. take FIFO from bin A)
  26. 26. Nom du fichier – à compléter OpenERP - Community Meeting 2013 Introduction1 Routing2 Bins & Lots Management3 Picking & Packings4 Miscellaneous5
  27. 27. Nom du fichier – à compléter OpenERP - Community Meeting 2013 Introduction  Operations to manage • Efficient Picking management o Batch/Wave picking o Trip assignation • Packing management o Hierarchical packing (Box → palet → container → ship) o Could be made at each step o (offline) Dedicated screen • Full support of barcode scanners
  28. 28. Nom du fichier – à compléter OpenERP - Community Meeting 2013 Pickings  Act differently: • Stock moves try to add themselves to an existing picking • If they can't, they create a new one • Procurement.group: new object implementing the grouping strategy of moves into a single picking  Picking.wave: • Offers a way to work on several pickings at a time • Implemented in a new module • Wave assignation can be manual or based on complex algorithm (load constraints, product type...)  Reports always show the barcode (product/box..)
  29. 29. Nom du fichier – à compléter OpenERP - Community Meeting 2013 Batch Picking  Only pull rules  Grouping strategy stock moves: we keep the reference of the initial SO (default)
  30. 30. Nom du fichier – à compléter OpenERP - Community Meeting 2013 Wave Picking  Pull rule from pick zone → pack zone  Minimum stock rule on pick zone
  31. 31. Nom du fichier – à compléter OpenERP - Community Meeting 2013 Trip assignation  Nothing new: • the wave can be assigned thanks to the destination of the pickings • Correspond exactly to a batch picking between output and customer locations
  32. 32. Nom du fichier – à compléter OpenERP - Community Meeting 2013 Packing  Want to know which quants are in which packs • => quant_package on quant instead of stock_tracking on move • Package can have parent to support pack in pack  On the stock move, quant packaging operations are defined
  33. 33. Nom du fichier – à compléter OpenERP - Community Meeting 2013 Packing
  34. 34. Nom du fichier – à compléter OpenERP - Community Meeting 2013 Introduction1 Routing2 Bins & Lots Management3 Picking & Packings4 Miscellaneous5
  35. 35. Nom du fichier – à compléter OpenERP - Community Meeting 2013 Costing (1)  Multi-company • Cost price, valuation methods and cost method become company dependent (property fields)  History • History table on the quants • History table for products
  36. 36. Nom du fichier – à compléter OpenERP - Community Meeting 2013 Costing (2)  Product price gets updated when doing out • =price by default when no price from e.g. purchase • Finished products of production will also use this price  Price adjustments: • Supplier invoice price != purchase price • Reconciliation with e.g. landed costs
  37. 37. Nom du fichier – à compléter OpenERP - Community Meeting 2013 Stock Replenishment  Replenishment is currently handled by minimum stock rules (orderpoint)  Need to be improved • Product categories • Quantity to Order: Fixed / Replenish Until Max • Cycle: Every day (current behaviour) / Week / Month  Like the current features on recurring meeting: day/hour of week, day of month, X weeks, …  Based on: • Minimum Qty • Other for opportunist supply
  38. 38. Nom du fichier – à compléter OpenERP - Community Meeting 2013 Stock ownership  Partner on the quants  Needed for consigned stock: • stock is owned by supplier until it is sent  Or 3PL, ...
  39. 39. Nom du fichier – à compléter OpenERP - Community Meeting 2013 Negative stock  When we need to send when it has not been received yet  Will be handled by negative quants  FIFO/LIFO will value an out move when in move adjusts negative stocks • => will only generate accounting entries then
  40. 40. Nom du fichier – à compléter OpenERP - Community Meeting 2013 Negative stock  Suppose have to send 5 pieces from stock without reception (=> force assign) Stock -5 Picked +5, propQ1 Q1 Q2 History moves: ID1 from stock to pick
  41. 41. Nom du fichier – à compléter OpenERP - Community Meeting 2013 Negative stock  Will split Stock -5 Packed +2, propQ1 Q1 Q2 Packed +3, propQ1 Q3 History moves: ID1 + ID2 of packing History moves: ID1 + ID2 of packing
  42. 42. Nom du fichier – à compléter OpenERP - Community Meeting 2013 Negative stock  Will reconcile when reception in stock or movement from stock Stock -5 Packed +2 Q1 Q2 Packed +3 Q3 History moves: ID1 + ID2 + ID3 of reception History moves: ID1 + ID2 + ID3 of reception

×