compare_requests : AttributeError: 'NoneType' object has no attribute 'id'
How to reproduce :
- I have a stock min reorder for a product A.
- I launch the wizard "Create purchase request".
- I have a purchase request for the product A.
- I use the action "Create Purchase" for this purchase request.
- I go to this purchase order (state draft) and I remove the warehouse on this PO.
- I launch again the wizard "Create pruchase request"
The bug is here because there are no warehouse on the purchase order referenced by the purchase request.
Traceback (most recent call last):
File "/trytond/protocols/jsonrpc.py", line 162, in _marshaled_dispatch
response['result'] = dispatch_method(method, params)
File "/trytond/protocols/jsonrpc.py", line 191, in _dispatch
res = dispatch(*args)
File "/trytond/protocols/dispatcher.py", line 158, in dispatch
result = rpc.result(meth(*c_args, **c_kwargs))
File "/trytond/wizard/wizard.py", line 252, in execute
return wizard._execute(state_name)
File "/trytond/wizard/wizard.py", line 278, in _execute
do_result = do(action)
File "/trytond/modules/stock_supply/purchase_request.py", line 552, in do_create_
PurchaseRequest.generate_requests(**self._requests_parameters)
File "/trytond/modules/stock_supply_forecast/purchase_request.py", line 25, in generate_requests
super(PurchaseRequest, cls).generate_requests()
File "/trytond/modules/stock_supply/purchase_request.py", line 271, in generate_requests
new_requests = cls.compare_requests(new_requests)
File "/trytond/modules/stock_supply/purchase_request.py", line 304, in compare_requests
request.warehouse.id != pline.purchase.warehouse.id:
AttributeError: 'NoneType' object has no attribute 'id'
Error in :
def compare_requests(cls,new_requests):
...
if request.product.id != pline.product.id or \
request.warehouse.id != pline.purchase.warehouse.id:
continue
...
pline.purchase.warehouse is not a instance of warehouse because is None.
how to fix this bug?
- create a method to compare with "try/except" on AttributeError.
- use "Isinstance of" before compare
- other ?