# Copyright (c) 2019 Open Source Integrators
# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html).

from odoo import api, fields, models


class StockRequestOrder(models.Model):
    _inherit = 'stock.request.order'

    direction = fields.Selection([('outbound', 'Outbound'),
                                  ('inbound', 'Inbound')],
                                 string='Direction',
                                 states={'draft': [('readonly', False)]},
                                 readonly=True)

    @api.onchange('direction')
    def _onchange_location_id(self):
        if self.direction == 'outbound':
            # Stock Location set to Partner Locations/Customers
            self.location_id = \
                self.company_id.partner_id.property_stock_customer.id
        else:
            # Otherwise the Stock Location of the Warehouse
            self.location_id = \
                self.warehouse_id.lot_stock_id.id

    @api.onchange('warehouse_id')
    def _onchange_warehouse_id(self):
        if self.direction:
            self.direction = False
        for stock_request in self.stock_request_ids:
            if stock_request.route_id:
                stock_request.route_id = False

    def change_childs(self):
        super().change_childs()
        if not self._context.get('no_change_childs', False):
            for line in self.stock_request_ids:
                line.direction = self.direction

# Copyright (c) 2019 Open Source Integrators
# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html).

from odoo import api, fields, models


class StockRequestOrder(models.Model):
    _inherit = 'stock.request.order'

    direction = fields.Selection([('outbound', 'Outbound'),
                                  ('inbound', 'Inbound')],
                                 string='Direction',
                                 states={'draft': [('readonly', False)]},
                                 readonly=True)

    @api.onchange('warehouse_id', 'direction')
    def _onchange_location_id(self):
        if self.direction == 'outbound':
            # Stock Location set to Partner Locations/Customers
            self.location_id = \
                self.company_id.partner_id.property_stock_customer.id
        else:
            # Otherwise the Stock Location of the Warehouse
            self.location_id = \
                self.warehouse_id.lot_stock_id.id
        for stock_request in self.stock_request_ids:
            if stock_request.route_id:
                stock_request.route_id = False

    def change_childs(self):
        super().change_childs()
        if not self._context.get('no_change_childs', False):
            for line in self.stock_request_ids:
                line.direction = self.direction

Add warehouse_id to existing onchange.