Logistics mailing list archives

logistics@odoo-community.org

Avatar

Re: Warehouse product location strategy

by
Camptocamp France SAS, Alexandre Fayolle
- 16/11/2015 15:52:31
I think you can

1. define your 100 locations to have the Stock location of your
warehouse as parent location

2. define a reorder rule (stock.warehouse.orderpoint) for each product
only on the location where the product is to be stored.

If you do this, the normal route will try to find the product in the
Stock location of the WH + any sub location, and the automatic purchases
will deliver the products to the appropriate location. I think this will
work without any additional module.

Take the above with a pinch of cautiousness as I have not tested the
suggested set up. Please report back if it does not work.

stock_product_location is not an OCA addon AFAIK, and I don't believe it
has been ported to v8, hence the error you're experiencing.

Alexandre

On 16/11/2015 14:53, Jean-Marc Dupont wrote:
> Hello everyone,
> 
> I need an advice from Odoo logistics experts :
> 
> How do you parameterize Odoo warehouse to manage default product
> location on warehouse stock, when receiving products and thus when
> delivering those products
> 
> Let's say we have 100 location in the warehouse stock
> We would like to define default product location, category by category
> (and sometimes by product)
> 
> Do we have to create 100 routes and affect them to product categories or
> products (by the way, the widget used in product form for routes will
> display 100 check boxes !!!) ?
> Is there other lighter solutions ?
> 
> Thank you in advance for your answers
> 
> PS : I tried to install the stock_product_location but I got an
> installation error :
> 
> Traceback (most recent call last):
>   File "/home/it-6it/aoe-dev_80/base/openerp/http.py", line 537, in _handle_exception
>     return super(JsonRequest, self)._handle_exception(exception)
>   File "/home/it-6it/aoe-dev_80/base/openerp/http.py", line 574, in dispatch
>     result = self._call_function(**self.params)
>   File "/home/it-6it/aoe-dev_80/base/openerp/http.py", line 310, in _call_function
>     return checked_call(self.db, *args, **kwargs)
>   File "/home/it-6it/aoe-dev_80/base/openerp/service/model.py", line 113, in wrapper
>     return f(dbname, *args, **kwargs)
>   File "/home/it-6it/aoe-dev_80/base/openerp/http.py", line 307, in checked_call
>     return self.endpoint(*a, **kw)
>   File "/home/it-6it/aoe-dev_80/base/openerp/http.py", line 803, in __call__
>     return self.method(*args, **kw)
>   File "/home/it-6it/aoe-dev_80/base/openerp/http.py", line 403, in response_wrap
>     response = f(*args, **kw)
>   File "/home/it-6it/aoe-dev_80/base/addons/web/controllers/main.py", line 952, in call_button
>     action = self._call_kw(model, method, args, {})
>   File "/home/it-6it/aoe-dev_80/base/addons/web/controllers/main.py", line 940, in _call_kw
>     return checked_call(request.db, *args, **kwargs)
>   File "/home/it-6it/aoe-dev_80/base/openerp/service/model.py", line 113, in wrapper
>     return f(dbname, *args, **kwargs)
>   File "/home/it-6it/aoe-dev_80/base/addons/web/controllers/main.py", line 939, in checked_call
>     return getattr(request.registry.get(model), method)(request.cr , request.uid, *args, **kwargs)
>   File "/home/it-6it/aoe-dev_80/base/openerp/api.py", line 241, in wrapper
>     return old_api(self, *args, **kwargs)
>   File "/home/it-6it/aoe-dev_80/base/openerp/addons/base/module/module.py", line 446, in button_immediate_install
>     return self._button_immediate_function(cr, uid, ids, self.button_install, context=context)
>   File "/home/it-6it/aoe-dev_80/base/openerp/api.py", line 241, in wrapper
>     return old_api(self, *args, **kwargs)
>   File "/home/it-6it/aoe-dev_80/base/openerp/addons/base/module/module.py", line 494, in _button_immediate_function
>     registry = openerp.modules.registry.RegistryManager.new(cr.dbname, update_module=True)
>   File "/home/it-6it/aoe-dev_80/base/openerp/modules/registry.py", line 370, in new
>     openerp.modules.load_modules(registry._db, force_demo, status, update_module)
>   File "/home/it-6it/aoe-dev_80/base/openerp/modules/loading.py", line 355, in load_modules
>     loaded_modules, update_module)
>   File "/home/it-6it/aoe-dev_80/base/openerp/modules/loading.py", line 255, in load_marked_modules
>     loaded, processed = load_module_graph(cr, graph, progressdict, report=report, skip_modules=loaded_modules, perform_checks=perform_checks)
>   File "/home/it-6it/aoe-dev_80/base/openerp/modules/loading.py", line 176, in load_module_graph
>     _load_data(cr, module_name, idref, mode, kind='data')
>   File "/home/it-6it/aoe-dev_80/base/openerp/modules/loading.py", line 118, in _load_data
>     tools.convert_file(cr, module_name, filename, idref, mode, noupdate, kind, report)
>   File "/home/it-6it/aoe-dev_80/base/openerp/tools/convert.py", line 901, in convert_file
>     convert_xml_import(cr, module, fp, idref, mode, noupdate, report)
>   File "/home/it-6it/aoe-dev_80/base/openerp/tools/convert.py", line 987, in convert_xml_import
>     obj.parse(doc.getroot(), mode=mode)
>   File "/home/it-6it/aoe-dev_80/base/openerp/tools/convert.py", line 853, in parse
>     self._tags[rec.tag](self.cr , rec, n, mode=mode)
>   File "/home/it-6it/aoe-dev_80/base/openerp/tools/convert.py", line 755, in _tag_record
>     f_val = self.id_get(cr, f_ref)
>   File "/home/it-6it/aoe-dev_80/base/openerp/tools/convert.py", line 832, in id_get
>     res = self.model_id_get(cr, id_str, raise_if_not_found)
>   File "/home/it-6it/aoe-dev_80/base/openerp/tools/convert.py", line 843, in model_id_get
>     raise_if_not_found=raise_if_not_found)
>   File "/home/it-6it/aoe-dev_80/base/openerp/api.py", line 241, in wrapper
>     return old_api(self, *args, **kwargs)
>   File "/home/it-6it/aoe-dev_80/base/openerp/addons/base/ir/ir_model.py", line 936, in xmlid_to_res_model_res_id
>     return self.xmlid_lookup(cr, uid, xmlid)[1:3]
>   File "/home/it-6it/aoe-dev_80/base/openerp/api.py", line 241, in wrapper
>     return old_api(self, *args, **kwargs)
>   File "", line 2, in xmlid_lookup
>   File "/home/it-6it/aoe-dev_80/base/openerp/tools/cache.py", line 74, in lookup
>     value = d[key] = self.method(*args, **kwargs)
>   File "/home/it-6it/aoe-dev_80/base/openerp/addons/base/ir/ir_model.py", line 926, in xmlid_lookup
>     raise ValueError('External ID not found in the system: %s' % (xmlid))
> ParseError: "External ID not found in the system: stock.view_normal_procurement_locations_form" while parsing /home/it-6it/aoe-dev_80/base/addons/stock_product_location/product_view.xml:5, near
> 
>       view.product.normal.stock.loc.form
>       product.product
>       
>       form
>       
>         
>           
>         
>       
>     
> 
> 
> 
> *
> *
> 
> *Jean-Marc DUPONT *
> 
> *Agence Web, e-Commerce et Systèmes d'entreprise *
> 
> 68, rue du Refuge - 84200 Carpentras
> 
> T. 06.24.91.02.03  -  04 84 25 17 94
> 
> Éditeur de la marque *Provenc.io *
> 
> 1° marque e-Commerce 100% Provence
> 
> 
> 
> 
> _______________________________________________
> Mailing-List: http://odoo-community.org/groups/logistics-21
> Post to: mailto:logistics@odoo-community.org
> Unsubscribe: http://odoo-community.org/groups?unsubscribe
> 


-- 
Alexandre Fayolle
Chef de Projet
Tel : +33 4 58 48 20 30

Camptocamp France SAS
Savoie Technolac, BP 352
73377 Le Bourget du Lac Cedex
http://www.camptocamp.com

Reference