diff --git a/sf_base/models/process.py b/sf_base/models/process.py
index c5d22873..38fc6bc0 100644
--- a/sf_base/models/process.py
+++ b/sf_base/models/process.py
@@ -23,6 +23,22 @@ class ResMrpRoutingWorkcenter(models.Model):
company_id = fields.Many2one('res.company', compute="get_company_id", related=False)
+ # 工单对应的工作中心,根据工序中的工作中心去匹配,
+ # 如果只配置了一个工作中心,则默认采用该工作中心;
+ # 如果有多个工作中心,
+ # 则根据该工作中心的工单个数进行分配(优先分配给工单个数最少的);
+ def get_workcenter(self, workcenter_ids):
+ if workcenter_ids:
+ if len(workcenter_ids) == 1:
+ return workcenter_ids[0]
+ elif len(workcenter_ids) >= 2:
+ # workcenter_ids_str = ','.join([str(s) for s in workcenter_ids])
+ self.env.cr.execute("""
+ SELECT workcenter_id FROM mrp_workorder where workcenter_id
+ in %s group by workcenter_id
+ order by count(*),workcenter_id asc limit 1 """, [tuple(workcenter_ids)])
+ return self.env.cr.dictfetchall()[0].get('workcenter_id')
+
class ModelTypeRoutingSort(models.Model):
_name = 'sf.model.type.routing.sort'
diff --git a/sf_base/security/ir.model.access.csv b/sf_base/security/ir.model.access.csv
index ec0a074a..ad1cc554 100644
--- a/sf_base/security/ir.model.access.csv
+++ b/sf_base/security/ir.model.access.csv
@@ -13,12 +13,10 @@ access_mrs_production_materials,mrs_production_materials,model_mrs_production_ma
access_mrs_materials_model,mrs_materials_model,model_mrs_materials_model,base.group_user,1,1,1,1
access_mrs_processing_technology,mrs_processing_technology,model_mrs_processing_technology,base.group_user,1,1,1,1
access_sf_tray,sf_tray,model_sf_tray,base.group_user,1,1,1,1
-<<<<<<< HEAD
access_cnc_processing,cnc_processing,model_cnc_processing,base.group_user,1,1,1,1
-=======
access_sf_model_type,sf_model_type,model_sf_model_type,base.group_user,1,1,1,1
access_sf_model_type_routing_sort,sf_model_type_routing_sort,model_sf_model_type_routing_sort,base.group_user,1,1,1,1
->>>>>>> 8e337dda97a98a9a8d0a892a2c39bc076640f6ac
+
diff --git a/sf_base/views/mrp_routing_workcenter_view.xml b/sf_base/views/mrp_routing_workcenter_view.xml
index be0d32c8..a8d2fcc5 100644
--- a/sf_base/views/mrp_routing_workcenter_view.xml
+++ b/sf_base/views/mrp_routing_workcenter_view.xml
@@ -17,27 +17,49 @@
#-----------------工单-------------------
-
- mrp.workorder.form.inherit.sf
+
+ mrp.production.workorder.form.inherit.sf
mrp.workorder
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ #-----------------制造订单里的工单-------------------
+
+ mrp.production.workorder.tree.editable.inherit.sf
+ mrp.workorder
+
-
- #-----------------制造订单-------------------
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/sf_base/views/mrs_common_view.xml b/sf_base/views/mrs_common_view.xml
index f57d48a2..c5ab6744 100644
--- a/sf_base/views/mrs_common_view.xml
+++ b/sf_base/views/mrs_common_view.xml
@@ -277,7 +277,7 @@
#------------------托盘------------------
-
+
托盘
ir.actions.act_window
sf.tray
@@ -293,27 +293,10 @@
sf.tray.search
sf.tray
-<<<<<<< HEAD
-
-
-
-
-
-
-
-
-
-
-
-=======
-
-
->>>>>>> 8e337dda97a98a9a8d0a892a2c39bc076640f6ac
-
@@ -333,7 +316,9 @@
sf.tray.form
sf.tray
-
+
-
\ No newline at end of file
diff --git a/sf_manufacturing_orders/models/mrp_workorder.py b/sf_manufacturing_orders/models/mrp_workorder.py
index 164b1347..7997d82d 100644
--- a/sf_manufacturing_orders/models/mrp_workorder.py
+++ b/sf_manufacturing_orders/models/mrp_workorder.py
@@ -11,3 +11,5 @@ class ResMrpWorkOrder(models.Model):
workcenter_id = fields.Many2one('mrp.workcenter', required=False)
processing_panel = fields.Char('加工面')
+
+
diff --git a/sf_manufacturing_orders/models/sf_production.py b/sf_manufacturing_orders/models/sf_production.py
index 0d82dcdd..c55cac6e 100644
--- a/sf_manufacturing_orders/models/sf_production.py
+++ b/sf_manufacturing_orders/models/sf_production.py
@@ -31,10 +31,6 @@ class MrpProduction(models.Model):
# 重载根据工序生成工单的程序:如果产品BOM中没有工序时,
# 根据产品对应的模板类型中工序,去生成工单;
- # 工单对应的工作中心,根据工序中的工作中心去匹配,
- # 如果只配置了一个工作中心,则默认采用该工作中心;
- # 如果有多个工作中心,
- # 则根据该工作中心的工单个数进行分配(优先分配给工单个数最少的);
# CNC加工工序的选取规则:
# 如果自动报价有带过来预分配的机床,
# 则根据设备找到工作中心;否则采用前面描述的工作中心分配机制;
@@ -68,17 +64,17 @@ class MrpProduction(models.Model):
'operation_id': operation.id,
'state': 'pending',
}]
- # 根据加工面板的面数及对应的工序模板生成工序
+ # 根据加工面板的面数及对应的工序模板生成工单
for k in (production.product_id.processing_panel.split(',')):
for route in production.product_id.model_type_id.routing_tmpl_ids:
- if route.route_workcenter_id:
+ if route:
workorders_values_str = [0, '', {
'product_uom_id': production.product_uom_id.id,
'qty_producing': 0,
'operation_id': False,
'name': route.route_workcenter_id.name,
'processing_panel': k,
- 'workcenter_id': False,
+ 'workcenter_id': self.env['mrp.routing.workcenter'].get_workcenter(route.workcenter_ids.ids),
'date_planned_start': False,
'date_planned_finished': False,
'duration_expected': 60,
diff --git a/sf_route_workcenter/models/workcenter.py b/sf_route_workcenter/models/workcenter.py
index 4340b465..a9ab568d 100644
--- a/sf_route_workcenter/models/workcenter.py
+++ b/sf_route_workcenter/models/workcenter.py
@@ -9,8 +9,8 @@ import qrcode
from io import BytesIO
from odoo import api, fields, models
import barcode
-from barcode.writer import ImageWriter
-from pystrich.code128 import Code128Encoder
+# from barcode.writer import ImageWriter
+# from pystrich.code128 import Code128Encoder
from odoo.exceptions import UserError
_logger = logging.getLogger(__name__)