Index: trytond/trytond/modules/stock_supply/purchase_request.py =================================================================== --- a/trytond/trytond/modules/stock_supply/purchase_request.py +++ b/trytond/trytond/modules/stock_supply/purchase_request.py @@ -141,10 +141,16 @@ return res @classmethod - def generate_requests(cls, products=None): + def generate_requests(cls, products=None, warehouses=None): """ For each product compute the purchase request that must be - create today to meet product outputs. + created today to meet product outputs. + + If products is specified it will compute the purchase requests + for the selected products. + + If warehouses is specified it will compute the purchase request + necessary for the selected warehouses. """ pool = Pool() OrderPoint = pool.get('stock.order_point') @@ -153,10 +159,11 @@ User = pool.get('res.user') company = User(Transaction().user).company - # fetch warehouses: - warehouses = Location.search([ - ('type', '=', 'warehouse'), - ]) + if warehouses is None: + # fetch warehouses: + warehouses = Location.search([ + ('type', '=', 'warehouse'), + ]) warehouse_ids = [w.id for w in warehouses] # fetch order points order_points = OrderPoint.search([ @@ -483,6 +490,10 @@ 'late_supplier_moves': 'There are some late supplier moves.', }) + @property + def _requests_parameters(self): + return {} + def do_create_(self, action): pool = Pool() PurchaseRequest = pool.get('purchase.request') @@ -497,7 +508,7 @@ ], order=[]): self.raise_user_warning('%s@%s' % (self.__name__, today), 'late_supplier_moves') - PurchaseRequest.generate_requests() + PurchaseRequest.generate_requests(**self._requests_parameters) return action, {} def transition_create_(self): Index: trytond/trytond/modules/stock_supply_production/production.py =================================================================== --- a/trytond/trytond/modules/stock_supply_production/production.py +++ b/trytond/trytond/modules/stock_supply_production/production.py @@ -27,12 +27,15 @@ __name__ = 'production' @classmethod - def generate_requests(cls, clean=True): + def generate_requests(cls, clean=True, warehouses=None): """ For each product compute the production request that must be created today to meet product outputs. If clean is set, it will remove all previous requests. + + If warehouses is specified it will compute the production requests + only for the selected warehouses. """ pool = Pool() OrderPoint = pool.get('stock.order_point') @@ -48,10 +51,11 @@ ]) cls.delete(reqs) - # fetch warehouse - warehouses = Location.search([ - ('type', '=', 'warehouse'), - ]) + if warehouses is None: + # fetch warehouse + warehouses = Location.search([ + ('type', '=', 'warehouse'), + ]) warehouse_ids = [w.id for w in warehouses] # fetch order points order_points = OrderPoint.search([ @@ -99,7 +103,7 @@ req.set_moves() requests.append(req) if requests: - cls.generate_requests(clean=False) + cls.generate_requests(False, warehouses) return requests @classmethod @@ -206,10 +210,14 @@ ]) create_ = StateAction('stock_supply_production.act_production_request') + @property + def _requests_parameters(self): + return {} + def do_create_(self, action): pool = Pool() Production = pool.get('production') - Production.generate_requests() + Production.generate_requests(**self._requests_parameters) return action, {} def transition_create_(self):