[MERGE]: Merge with latest trunk-addons
[odoo/odoo.git] / addons / stock_location / __openerp__.py
1 # -*- coding: utf-8 -*-
2 ##############################################################################
3 #
4 #    OpenERP, Open Source Management Solution
5 #    Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
6 #
7 #    This program is free software: you can redistribute it and/or modify
8 #    it under the terms of the GNU Affero General Public License as
9 #    published by the Free Software Foundation, either version 3 of the
10 #    License, or (at your option) any later version.
11 #
12 #    This program is distributed in the hope that it will be useful,
13 #    but WITHOUT ANY WARRANTY; without even the implied warranty of
14 #    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15 #    GNU Affero General Public License for more details.
16 #
17 #    You should have received a copy of the GNU Affero General Public License
18 #    along with this program.  If not, see <http://www.gnu.org/licenses/>.
19 #
20 ##############################################################################
21
22
23 {
24     'name': 'Advanced Routes',
25     'version': '1.0',
26     'category': 'Manufacturing',
27     'description': """
28 This module supplements the Warehouse application by effectively implementing Push and Pull inventory flows.
29 ============================================================================================================
30
31 Typically this could be used to:
32     * Manage product manufacturing chains
33     * Manage default locations per product
34     * Define routes within your warehouse according to business needs, such as:
35        - Quality Control
36        - After Sales Services
37        - Supplier Returns
38
39     * Help rental management, by generating automated return moves for rented products
40
41 Once this module is installed, an additional tab appear on the product form, where you can add
42 Push and Pull flow specifications. The demo data of CPU1 product for that push/pull :
43
44 Push flows
45 ----------
46 Push flows are useful when the arrival of certain products in a given location should always
47 be followed by a corresponding move to another location, optionally after a certain delay.
48 The original Warehouse application already supports such Push flow specifications on the
49 Locations themselves, but these cannot be refined per-product.
50
51 A push flow specification indicates which location is chained with which location, and with
52 what parameters. As soon as a given quantity of products is moved in the source location,
53 a chained move is automatically foreseen according to the parameters set on the flow specification
54 (destination location, delay, type of move, journal, etc.) The new move can be automatically
55 processed, or require a manual confirmation, depending on the parameters.
56
57 Pull flows
58 ----------
59 Pull flows are a bit different from Push flows, in the sense that they are not related to
60 the processing of product moves, but rather to the processing of procurement orders.
61 What is being pulled is a need, not directly products.
62 A classical example of Pull flow is when you have an Outlet company, with a parent Company
63 that is responsible for the supplies of the Outlet.
64
65   [ Customer ] <- A - [ Outlet ]  <- B -  [ Holding ] <~ C ~ [ Supplier ]
66
67 When a new procurement order (A, coming from the confirmation of a Sale Order for example) arrives
68 in the Outlet, it is converted into another procurement (B, via a Pull flow of type 'move')
69 requested from the Holding. When procurement order B is processed by the Holding company, and
70 if the product is out of stock, it can be converted into a Purchase Order (C) from the Supplier
71 (Pull flow of type Purchase). The result is that the procurement order, the need, is pushed
72 all the way between the Customer and Supplier.
73
74 Technically, Pull flows allow to process procurement orders differently, not only depending on
75 the product being considered, but also depending on which location holds the "need" for that
76 product (i.e. the destination location of that procurement order).
77
78 Use-Case
79 --------
80
81 You can use the demo data as follow:
82   CPU1: Sell some CPU1 from Shop 1 and run the scheduler
83      - Warehouse: delivery order, Shop 1: reception
84   CPU3:
85      - When receiving the product, it goes to Quality Control location then stored to shelf 2.
86      - When delivering the customer: Pick List -> Packing -> Delivery Order from Gate A
87     """,
88     'author': 'OpenERP SA',
89     'images': ['images/pulled_flow.jpeg','images/pushed_flow.jpeg'],
90     'depends': ['procurement','stock','sale'],
91     'init_xml': [],
92     'update_xml': ['stock_location_view.xml', "security/stock_location_security.xml", 'security/ir.model.access.csv', 'procurement_pull_workflow.xml'],
93     'demo_xml': [
94         'stock_location_demo_cpu1.xml',
95         'stock_location_demo_cpu3.yml',
96     ],
97     'installable': True,
98     'test':[
99             'test/stock_location_pull_flow.yml',
100             'test/stock_location_push_flow.yml',
101     ],
102     'auto_install': False,
103     'certificate': '0046505115101',
104 }
105
106 # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: