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