[FIX] stock: fix quant check when archiving location

Quant search domain was missing a '|', this made it so locations with
non-zero quants in it could still be archived. Also added a missing
space in warning message when there are multiple locations because it's
better that way.

Discovered during task: 2336455

closes odoo/odoo#59154

X-original-commit: 340dac3b2928da292c6b74971e77816304b263ab
Signed-off-by: Arnold Moyaux <amoyaux@users.noreply.github.com>
This commit is contained in:
Tiffany Chang (tic)
2020-10-05 17:16:09 +00:00
parent 624f9f1a77
commit 737e9076ba
+2 -2
View File
@@ -109,10 +109,10 @@ class Location(models.Model):
if not self.env.context.get('do_not_check_quant'):
children_location = self.env['stock.location'].with_context(active_test=False).search([('id', 'child_of', self.ids)])
internal_children_locations = children_location.filtered(lambda l: l.usage == 'internal')
children_quants = self.env['stock.quant'].search([('quantity', '!=', 0), ('reserved_quantity', '!=', 0), ('location_id', 'in', internal_children_locations.ids)])
children_quants = self.env['stock.quant'].search(['&', '|', ('quantity', '!=', 0), ('reserved_quantity', '!=', 0), ('location_id', 'in', internal_children_locations.ids)])
if children_quants and values['active'] == False:
raise UserError(_('You still have some product in locations %s') %
(','.join(children_quants.mapped('location_id.name'))))
(', '.join(children_quants.mapped('location_id.name'))))
else:
super(Location, children_location - self).with_context(do_not_check_quant=True).write({
'active': values['active'],