修改采购入库路线多规则条件选取

This commit is contained in:
qihao.gong@jikimo.com
2023-08-09 09:58:51 +08:00
parent 432920b100
commit 386b5eb11c

View File

@@ -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