wms路线规则动态选取
This commit is contained in:
@@ -4,7 +4,6 @@ from odoo import SUPERUSER_ID, _, api, fields, models
|
|||||||
from odoo.osv import expression
|
from odoo.osv import expression
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class SfLocation(models.Model):
|
class SfLocation(models.Model):
|
||||||
_inherit = 'stock.location'
|
_inherit = 'stock.location'
|
||||||
|
|
||||||
@@ -201,7 +200,6 @@ class SfLocation(models.Model):
|
|||||||
j_str = str(j + 1).zfill(3) # 确保是两位数,如果不足两位,左侧补0
|
j_str = str(j + 1).zfill(3) # 确保是两位数,如果不足两位,左侧补0
|
||||||
return area_type_barcode + self.channel + self.direction + '-' + self.barcode + '-' + i_str + '-' + j_str
|
return area_type_barcode + self.channel + self.direction + '-' + self.barcode + '-' + i_str + '-' + j_str
|
||||||
|
|
||||||
|
|
||||||
# def generate_barcode(self, i, j):
|
# def generate_barcode(self, i, j):
|
||||||
# # 这里是你生成barcode的代码
|
# # 这里是你生成barcode的代码
|
||||||
# area_type_barcode = self.location_id.barcode
|
# area_type_barcode = self.location_id.barcode
|
||||||
@@ -217,26 +215,51 @@ class SfProcurementGroup(models.Model):
|
|||||||
修改路线多规则条件选取
|
修改路线多规则条件选取
|
||||||
"""
|
"""
|
||||||
if warehouse_id:
|
if warehouse_id:
|
||||||
domain = expression.AND([['|', ('warehouse_id', '=', warehouse_id.id), ('warehouse_id', '=', False)], domain])
|
domain = expression.AND(
|
||||||
|
[['|', ('warehouse_id', '=', warehouse_id.id), ('warehouse_id', '=', False)], domain])
|
||||||
Rule = self.env['stock.rule']
|
Rule = self.env['stock.rule']
|
||||||
res = self.env['stock.rule']
|
res = self.env['stock.rule']
|
||||||
if route_ids:
|
if route_ids:
|
||||||
res = Rule.search(expression.AND([[('route_id', 'in', route_ids.ids)], domain]), order='route_sequence, sequence', limit=1)
|
res_list = Rule.search(expression.AND([[('route_id', 'in', route_ids.ids)], domain]),
|
||||||
|
order='route_sequence, sequence')
|
||||||
|
for res1 in res_list:
|
||||||
|
if product_id.categ_id in res1.location_dest_id.product_type or product_id.categ_id in res1.location_src_id.product_type:
|
||||||
|
res = res1
|
||||||
|
if not res:
|
||||||
|
res = Rule.search(expression.AND([[('route_id', 'in', route_ids.ids)], domain]),
|
||||||
|
order='route_sequence, sequence', limit=1)
|
||||||
|
|
||||||
if not res and packaging_id:
|
if not res and packaging_id:
|
||||||
packaging_routes = packaging_id.route_ids
|
packaging_routes = packaging_id.route_ids
|
||||||
if packaging_routes:
|
if packaging_routes:
|
||||||
res = Rule.search(expression.AND([[('route_id', 'in', packaging_routes.ids)], domain]), order='route_sequence, sequence', limit=1)
|
res_list = Rule.search(expression.AND([[('route_id', 'in', packaging_routes.ids)], domain]),
|
||||||
if not res:
|
order='route_sequence, sequence')
|
||||||
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:
|
for res1 in res_list:
|
||||||
if product_id.categ_id in res1.location_dest_id.product_type or product_id.categ_id in res1.location_src_id.product_type:
|
if product_id.categ_id in res1.location_dest_id.product_type or product_id.categ_id in res1.location_src_id.product_type:
|
||||||
res = res1
|
res = res1
|
||||||
|
if not res:
|
||||||
|
res = Rule.search(expression.AND([[('route_id', 'in', packaging_routes.ids)], domain]),
|
||||||
|
order='route_sequence, sequence', limit=1)
|
||||||
if not res:
|
if not res:
|
||||||
res = Rule.search(expression.AND([[('route_id', 'in', warehouse_routes.ids)], domain]), order='route_sequence, sequence', limit=1)
|
product_routes = product_id.route_ids | product_id.categ_id.total_route_ids
|
||||||
return res
|
if product_routes:
|
||||||
|
res_list = Rule.search(expression.AND([[('route_id', 'in', product_routes.ids)], domain]),
|
||||||
|
order='route_sequence, sequence')
|
||||||
|
for res1 in res_list:
|
||||||
|
if product_id.categ_id in res1.location_dest_id.product_type or product_id.categ_id in res1.location_src_id.product_type:
|
||||||
|
res = res1
|
||||||
|
if not res:
|
||||||
|
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 or product_id.categ_id in res1.location_src_id.product_type:
|
||||||
|
res = res1
|
||||||
|
if not res:
|
||||||
|
res = Rule.search(expression.AND([[('route_id', 'in', warehouse_routes.ids)], domain]),
|
||||||
|
order='route_sequence, sequence', limit=1)
|
||||||
|
return res
|
||||||
|
|||||||
Reference in New Issue
Block a user