diff --git a/sf_warehouse/models/model.py b/sf_warehouse/models/model.py index bb0323e6..ea707463 100644 --- a/sf_warehouse/models/model.py +++ b/sf_warehouse/models/model.py @@ -1,6 +1,8 @@ # -*- coding: utf-8 -*- -from odoo import fields, models, api -from odoo.exceptions import ValidationError, UserError +import logging +from odoo import SUPERUSER_ID, _, api, fields, models +from odoo.osv import expression + class SfLocation(models.Model): @@ -204,3 +206,35 @@ class SfLocation(models.Model): # # 这里是你生成barcode的代码 # area_type_barcode = self.location_id.barcode # return area_type_barcode + self.channel + self.direction + '-' + self.barcode + '-' + str(i + 1) + '-' + str(j + 1) + + +class SfProcurementGroup(models.Model): + _inherit = 'procurement.group' + + @api.model + def _search_rule(self, route_ids, packaging_id, product_id, warehouse_id, domain): + """ + 修改路线多规则条件选取 + """ + if warehouse_id: + domain = expression.AND([['|', ('warehouse_id', '=', warehouse_id.id), ('warehouse_id', '=', False)], domain]) + Rule = self.env['stock.rule'] + res = self.env['stock.rule'] + if route_ids: + res = Rule.search(expression.AND([[('route_id', 'in', route_ids.ids)], domain]), order='route_sequence, sequence', limit=1) + if not res and packaging_id: + packaging_routes = packaging_id.route_ids + if packaging_routes: + res = Rule.search(expression.AND([[('route_id', 'in', packaging_routes.ids)], domain]), order='route_sequence, sequence', limit=1) + if not res: + product_routes = product_id.route_ids | product_id.categ_id.total_route_ids + if product_routes: + res = Rule.search(expression.AND([[('route_id', 'in', product_routes.ids)], domain]), order='route_sequence, sequence', limit=1) + if not res and warehouse_id: + warehouse_routes = warehouse_id.route_ids + if warehouse_routes: + res_list = Rule.search(expression.AND([[('route_id', 'in', warehouse_routes.ids)], domain]), order='route_sequence, sequence') + for res1 in res_list: + if product_id.categ_id in res1.location_dest_id.product_type: + res = res1 + return res \ No newline at end of file