Odoo Mindscape. Understand Odoo faster. Explore modules, fields, dependencies and version differences in one place instead of digging through the source code.

Module: Stock Request

Entity: stock.request.order

Compute Method: _compute_route_ids

Inputs Method Outputs
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)]

Back to entity