Check categories are not mixed amoung warehouses.

This commit refs #21470
This commit is contained in:
Sergio Morillo 2021-12-29 16:16:22 +01:00
parent 2133a3ca94
commit 9a7f2e9227
2 changed files with 41 additions and 1 deletions

View File

@ -122,3 +122,13 @@ class Location(metaclass=PoolMeta):
return super().view_attributes() + [
('//page[@id="categories"]', 'states', {
'invisible': ~Eval('type').in_(['warehouse', 'storage'])})]
@classmethod
def copy(cls, records, default=None):
if default is None:
default = {}
else:
default = default.copy()
default.setdefault('categories', None)
default.setdefault('wh_categories', None)
return super().copy(records, default=default)

View File

@ -71,7 +71,7 @@ class StockProductCategoryLocationTestCase(ModuleTestCase):
child_cat, = Category.create([{'name': 'CAT2', 'parent': new_cat.id}])
cat_loc_rec = {
'category': new_cat.id,
'warehouse': storage.parent.id,
'warehouse': storage.warehouse.id,
'location': storage.id
}
CatLoc.create([cat_loc_rec])
@ -86,6 +86,36 @@ class StockProductCategoryLocationTestCase(ModuleTestCase):
self.assertEqual(child_cat.get_default_location(), storage_new)
@with_transaction()
def test_warehouse_isolation(self):
"""Add the category default location for a warehouse"""
pool = Pool()
Location = pool.get('stock.location')
Category = pool.get('product.category')
CatLoc = pool.get('stock.product.category.location')
storage, = Location.search([('code', '=', 'STO')])
storage_new, = Location.create([{
'code': 'STO2',
'name': 'Storage 2',
'type': 'storage',
'parent': storage.id
}])
new_cat, = Category.create([{'name': 'CAT1'}])
cat_loc_rec = {
'category': new_cat.id,
'warehouse': storage.warehouse.id,
'location': storage.id
}
CatLoc.create([cat_loc_rec])
self.assertEqual(new_cat.get_default_location(), storage)
# create new warehouse
new_wh, = Location.copy([storage.warehouse])
self.assertEqual(new_cat.get_default_location(warehouse=new_wh), None)
def suite():
suite = trytond.tests.test_tryton.suite()