diff --git a/sf_dlm/models/product_template.py b/sf_dlm/models/product_template.py
index 14071dc6..b626eb69 100644
--- a/sf_dlm/models/product_template.py
+++ b/sf_dlm/models/product_template.py
@@ -9,7 +9,7 @@ class ResProductTemplate(models.Model):
model_long = fields.Float('模型长[mm]', digits=(16, 3))
model_width = fields.Float('模型宽[mm]', digits=(16, 3))
model_height = fields.Float('模型高[mm]', digits=(16, 3))
- model_volume = fields.Float('模型体积[mm³]', digits=(16, 3))
+ model_volume = fields.Float('模型体积[mm]', compute='_compute_model_volume', store=True)
model_machining_precision = fields.Selection([
('±0.10mm', '±0.10mm'),
('±0.05mm', '±0.05mm'),
@@ -22,9 +22,9 @@ class ResProductTemplate(models.Model):
model_process_parameters_id = fields.Many2one('sf.processing.technology', string='工艺参数')
model_price = fields.Float('模型单价', digits=(16, 3))
model_remark = fields.Char('模型备注说明')
- long = fields.Float('长[mm]', digits=(16, 3), onchange='add_product_size')
- width = fields.Float('宽[mm]', digits=(16, 3), onchange='add_product_size')
- height = fields.Float('高[mm]', digits=(16, 3), onchange='add_product_size')
+ long = fields.Float('长[mm]', digits=(16, 3))
+ width = fields.Float('宽[mm]', digits=(16, 3))
+ height = fields.Float('高[mm]', digits=(16, 3))
materials_id = fields.Many2one('sf.production.materials', string='材料')
materials_type_id = fields.Many2one('sf.materials.model', string='材料型号')
volume = fields.Float(compute='_compute_volume', store=True)
@@ -34,6 +34,10 @@ class ResProductTemplate(models.Model):
def _compute_volume(self):
self.volume = self.long * self.width * self.height
+ @api.depends('model_long', 'model_width', 'model_height')
+ def _compute_model_volume(self):
+ self.model_volume = self.model_long * self.model_width * self.model_height
+
# 业务平台分配工厂后在智能工厂先创建销售订单再创建该产品
def product_create(self, product_id, item, order_id, order_number, i):
copy_product_id = product_id.with_user(self.env.ref("base.user_admin")).copy()
@@ -70,17 +74,20 @@ class ResProductTemplate(models.Model):
if not self.model_type_id:
return
model_type = self.env['sf.model.type'].search(
- [('id', '=', self.model_type_id.id)])
- print(self.model_long)
- print(self.model_width)
- print(self.model_height)
- for item in self:
- print(item.model_long)
- print(item.model_width)
- print(item.model_height)
- item.model_long = item.model_long + model_type.embryo_tolerance
- item.model_width = item.model_width + model_type.embryo_tolerance
- item.model_height = item.model_width + model_type.embryo_tolerance
+ [('id', '=', self.model_type_id.id), ('embryo_tolerance', '=', True)])
+ if model_type:
+ self.model_long = self.model_long + 1
+ self.model_width = self.model_width + 1
+ self.model_height = self.model_width + 1
+ # for item in self:
+ # print(item.model_long)
+ # print(item.model_width)
+ # print(item.model_height)
+ # item.model_long = item.model_long + 1
+ # item.model_width = item.model_width + 1
+ # item.model_height = item.model_width + 1
+ else:
+ return
class ResMrpBom(models.Model):
diff --git a/sf_dlm/views/product_template_view.xml b/sf_dlm/views/product_template_view.xml
index 04507aaa..d8975017 100644
--- a/sf_dlm/views/product_template_view.xml
+++ b/sf_dlm/views/product_template_view.xml
@@ -35,8 +35,8 @@
-
-
+
+
>>>>>> b2d1e9ce8c5d8965ed09c3fbd6de543708223487
class ResMrpWorkOrder(models.Model):
@@ -97,6 +102,7 @@ class ResMrpWorkOrder(models.Model):
print("(%.2f,%.2f)" % (x, y))
self.material_center_point = ("(%.2f,%.2f,%.2f)" % (x, y, z))
self.X_deviation_angle = jdz
+ return self.material_center_point
def json_workorder_str(self, k, production, route):
workorders_values_str = [0, '', {
@@ -139,9 +145,9 @@ class ResMrpWorkOrder(models.Model):
values = self.env['sf.tray'].search([("code", "=", self.tray_code)])
if values:
if values.state == "占用":
- raise ValidationError('该托盘已占用')
+ raise UserError('该托盘已占用')
if values.state == "报损":
- raise ValidationError('该托盘已损坏')
+ raise UserError('该托盘已损坏')
else:
values.update({
'workorder_id': self,
@@ -149,7 +155,26 @@ class ResMrpWorkOrder(models.Model):
'state': '占用',
})
else:
- raise ValidationError('该托盘编码已失效')
+ raise UserError('该托盘编码已失效')
+ else:
+ return ""
+
+ def gettray_auto(self, barcode):
+ if barcode != False:
+ values = self.env['sf.tray'].search([("code", "=", barcode)])
+ if values:
+ if values.state == "占用":
+ raise UserError('该托盘已占用')
+ if values.state == "报损":
+ raise UserError('该托盘已损坏')
+ else:
+ values.update({
+ 'workorder_id': self,
+ 'production_id': self.production_id,
+ 'state': '占用',
+ })
+ else:
+ raise UserError('该托盘编码已失效')
else:
return ""
@@ -206,7 +231,8 @@ class ResMrpWorkOrder(models.Model):
# cnc程序获取
def fetchCNC(self):
- cnc = self.env['mrp.workorder'].search([('routing_type', '=', 'CNC加工')], limit=1)
+ cnc = self.env['mrp.workorder'].search(
+ [('routing_type', '=', 'CNC加工'), ('production_id', '=', self.production_id.id)], limit=1)
res = {'model_code': cnc.product_id.barcode, 'production_no': self.production_id.name,
'machine_tool_code': cnc.workcenter_id.machine_tool_id.code,
'material_code': cnc.env['sf.production.materials'].search(
@@ -302,36 +328,52 @@ class CNCprocessing(models.Model):
_description = "CNC加工"
cnc_id = fields.Many2one('ir.attachment')
- FNo = fields.Char(string="序号")
- FPGName = fields.Char(string="程序名")
- FKnifeName = fields.Char(string="刀具名称")
- FDNo = fields.Char(string="刀号")
- FWorkType = fields.Char(string="加工类型")
- FXY = fields.Char(string="余量_X/Y")
- FZ = fields.Char(string="余量_Z")
- FJGSD = fields.Char(string="加工深度(Z)")
- FSCCD = fields.Char(string="刀具伸出长度")
- FDJSpec = fields.Char(string="刀柄型号")
- FJGDate = fields.Datetime(string="预计加工时间")
- FComment = fields.Char(string="备注")
+ sequence_number = fields.Char('序号')
+ program_name = fields.Char('程序名')
+ cutting_tool_name = fields.Char('刀具名称')
+ cutting_tool_no = fields.Char('刀号')
+ processing_type = fields.Char('加工类型')
+ margin_x_y = fields.Char('余量_X/Y')
+ margin_z = fields.Char('余量_Z')
+ depth_of_processing_z = fields.Char('加工深度(Z)')
+ cutting_tool_extension_length = fields.Char('刀具伸出长度')
+ cutting_tool_handle_type = fields.Char('刀柄型号')
+ estimated_processing_time = fields.Char('预计加工时间')
+ remark = fields.Text('备注')
workorder_id = fields.Many2one('mrp.workorder', string="工单")
# mrs下发编程单创建CNC加工
def CNCprocessing_create(self, obj):
- workorder = self.env['mrp.workorder'].search([('production_id', '=', obj['manufacturing_order_no']),
+ workorder = self.env['mrp.workorder'].search([('production_id.name', '=', obj['manufacturing_order_no']),
('processing_panel', '=', obj['processing_panel']),
('routing_type', '=', 'CNC加工')])
self.env['sf.cnc.processing'].create({
'workorder_id': workorder.id,
- 'FNo': obj['sequence_number'],
- 'FPGName': obj['program_name'],
- 'FKnifeName': obj['cutting_tool_name'],
- 'FDNo': obj['cutting_tool_no'],
- 'FWorkType': obj['processing_type'],
- 'FXY': obj['margin_x_y'],
- 'FZ': obj['margin_z'],
- 'FJGSD': obj['depth_of_processing_z'],
- 'FSCCD': obj['cutting_tool_extension_length'],
- 'FDJSpec': obj['cutting_tool_handle_type'],
+ 'sequence_number': obj['sequence_number'],
+ 'program_name': obj['program_name'],
+ 'cutting_tool_name': obj['cutting_tool_name'],
+ 'cutting_tool_no': obj['cutting_tool_no'],
+ 'processing_type': obj['processing_type'],
+ 'margin_x_y': obj['margin_x_y'],
+ 'margin_z': obj['margin_z'],
+ 'depth_of_processing_z': obj['depth_of_processing_z'],
+ 'cutting_tool_extension_length': obj['cutting_tool_extension_length'],
+ 'cutting_tool_handle_type': obj['cutting_tool_handle_type'],
+ 'remark': obj['remark']
# 'FJGDate': obj['']
})
+
+class SfWorkOrderBarcodes(models.Model):
+ """
+ 智能工厂工单处扫码绑定托盘
+ """
+ _name = "mrp.workorder"
+ _inherit = ["mrp.workorder", "barcodes.barcode_events_mixin"]
+
+ def on_barcode_scanned(self, barcode):
+
+ tray_code = self.env['sf.tray'].search([('code', '=', barcode)])
+ self.tray_code = tray_code.code
+
+ workorder = self.env['mrp.workorder'].browse(self.ids)
+ workorder.gettray_auto(barcode)
\ No newline at end of file
diff --git a/sf_manufacturing/views/mrp_workorder_view.xml b/sf_manufacturing/views/mrp_workorder_view.xml
index b5d711d7..973f507b 100644
--- a/sf_manufacturing/views/mrp_workorder_view.xml
+++ b/sf_manufacturing/views/mrp_workorder_view.xml
@@ -41,16 +41,16 @@
-
- mrp.production.workorder.form.inherit.sf
- mrp.workorder
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
mrp.production.workorder.tray.form.inherit.sf
@@ -213,18 +213,18 @@
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+