|
|
route_obj = self.env["stock.route"]
routes = route_obj.search(
[("warehouse_ids", "in", self.mapped("warehouse_id").ids)]
)
routes_by_warehouse = {}
for route in routes:
for warehouse in route.warehouse_ids:
routes_by_warehouse.setdefault(warehouse.id, self.env["stock.route"])
routes_by_warehouse[warehouse.id] |= route
for record in self:
routes = route_obj
if record.warehouse_id and routes_by_warehouse.get(record.warehouse_id.id):
routes |= routes_by_warehouse[record.warehouse_id.id]
parents = record.get_parents().ids
valid_routes = []
for route in routes:
if any(p.location_dest_id.id in parents for p in route.rule_ids):
valid_routes.append(route)
filtered_routes = self.env["stock.route"].browse(
[route.id for route in valid_routes]
)
if record.stock_request_ids:
all_routes = record.stock_request_ids.mapped("route_ids")
common_routes = all_routes
for line in record.stock_request_ids:
common_routes &= line.route_ids
final_routes = filtered_routes | common_routes
record.route_ids = [(6, 0, final_routes.ids)]
else:
record.route_ids = [(6, 0, filtered_routes.ids)]
|
|