32 lines
1.4 KiB
Python
32 lines
1.4 KiB
Python
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
|
|
|
from odoo import api, fields, models
|
|
|
|
|
|
class ProductReplenishMixin(models.AbstractModel):
|
|
_name = 'stock.replenish.mixin'
|
|
_description = 'Product Replenish Mixin'
|
|
|
|
route_id = fields.Many2one(
|
|
'stock.route', string="Preferred Route",
|
|
help="Apply specific route for the replenishment instead of product's default routes.",
|
|
check_company=True)
|
|
allowed_route_ids = fields.Many2many('stock.route', compute='_compute_allowed_route_ids')
|
|
|
|
# INHERITS in 'Drop Shipping', 'Dropship and Subcontracting Management' and 'Dropship and Subcontracting Management'
|
|
@api.depends('product_id', 'product_tmpl_id')
|
|
def _compute_allowed_route_ids(self):
|
|
domain = self._get_allowed_route_domain()
|
|
route_ids = self.env['stock.route'].search(domain)
|
|
self.allowed_route_ids = route_ids
|
|
|
|
# TODO: remove dynamic domain
|
|
# OVERWRITE in 'Drop Shipping', 'Dropship and Subcontracting Management' and 'Dropship and Subcontracting Management' to hide it
|
|
def _get_allowed_route_domain(self):
|
|
stock_location_inter_company_id = self.env.ref('stock.stock_location_inter_company').id
|
|
return [
|
|
('product_selectable', '=', True),
|
|
('rule_ids.location_src_id', '!=', stock_location_inter_company_id),
|
|
('rule_ids.location_dest_id', '!=', stock_location_inter_company_id)
|
|
]
|