diff --git a/sf_bf_connect/controllers/controllers.py b/sf_bf_connect/controllers/controllers.py index 4923a398..4670470a 100644 --- a/sf_bf_connect/controllers/controllers.py +++ b/sf_bf_connect/controllers/controllers.py @@ -23,13 +23,11 @@ class Sf_Bf_Connect(http.Controller): # ret = json.loads(datas) # ret = json.loads(ret['result']) product_id = request.env.ref('sf_dlm.product_template_sf').sudo() - logging.info('product_id:%s' % product_id) self_machining_id = request.env.ref('sf_dlm.product_embryo_sf_self_machining').sudo() outsource_id = request.env.ref('sf_dlm.product_embryo_sf_outsource').sudo() purchase_id = request.env.ref('sf_dlm.product_embryo_sf_purchase').sudo() company_id = request.env.ref('base.main_company').sudo() user_id = request.env.ref('base.user_admin').sudo() - logging.info('user_id:%s' % user_id) bfm_process_order_list = json.loads(kw['bfm_process_order_list']) order_id = request.env['sale.order'].with_user(request.env.ref("base.user_admin")).sale_order_create( company_id, kw['delivery_name'], kw['delivery_telephone'], kw['delivery_address'], diff --git a/sf_bf_connect/models/models.py b/sf_bf_connect/models/models.py index 9c9d59a1..3eeac229 100644 --- a/sf_bf_connect/models/models.py +++ b/sf_bf_connect/models/models.py @@ -25,5 +25,4 @@ class ResPartner(models.Model): return ran_str sf_token = fields.Char(u'Token', default=get_token) - sf_secret_key = fields.Char(u'密钥', default=get_secret) - + sf_secret_key = fields.Char(u'密钥', default=get_secret) \ No newline at end of file diff --git a/sf_dlm/data/product_data.xml b/sf_dlm/data/product_data.xml index aad3714c..f4b9b717 100644 --- a/sf_dlm/data/product_data.xml +++ b/sf_dlm/data/product_data.xml @@ -45,7 +45,6 @@ true serial - @@ -61,7 +60,6 @@ serial - 胚料采购模板 @@ -76,7 +74,6 @@ serial - \ No newline at end of file diff --git a/sf_dlm/data/tt.xml b/sf_dlm/data/tt.xml deleted file mode 100644 index 847e6a80..00000000 --- a/sf_dlm/data/tt.xml +++ /dev/null @@ -1,57 +0,0 @@ - - - - - CNC加工产品模板 - - delivery - product - false - - - - False - - - - 胚料 - 胚料 - - - - 自加工 - - delivery - product - false - - - - False - - - - 外协 - - delivery - product - false - - - - False - - - - 采购 - - delivery - product - false - - - - False - - - \ No newline at end of file diff --git a/sf_dlm/models/__init__.py b/sf_dlm/models/__init__.py index 86d505b8..7d40ff65 100644 --- a/sf_dlm/models/__init__.py +++ b/sf_dlm/models/__init__.py @@ -1,3 +1,5 @@ from. import product_template +from. import product_supplierinfo + diff --git a/sf_dlm/models/product_supplierinfo.py b/sf_dlm/models/product_supplierinfo.py new file mode 100644 index 00000000..ae850401 --- /dev/null +++ b/sf_dlm/models/product_supplierinfo.py @@ -0,0 +1,11 @@ +from odoo import models, fields, api + + +class ResSupplierInfo(models.Model): + _inherit = 'product.supplierinfo' + + def _compute_is_subcontractor(self): + for supplier in self: + boms = supplier.product_id.variant_bom_ids + boms |= supplier.product_tmpl_id.bom_ids.filtered(lambda b: not b.product_id or b.product_id in (supplier.product_id or supplier.product_tmpl_id.product_variant_ids)) + supplier.is_subcontractor = supplier.partner_id in boms.subcontractor_id \ No newline at end of file diff --git a/sf_dlm/models/product_template.py b/sf_dlm/models/product_template.py index 40fcac15..8d271396 100644 --- a/sf_dlm/models/product_template.py +++ b/sf_dlm/models/product_template.py @@ -22,7 +22,8 @@ class ResProductTemplate(models.Model): ('0.03', '±0.03mm'), ('0.02', '±0.02mm'), ('0.01', '±0.01mm')], string='加工精度') - model_type_id = fields.Many2one('sf.model.type', string='模型类型') + product_model_type_id = fields.Many2one('sf.model.type', string='产品模型类型') + embryo_model_type_id = fields.Many2one('sf.model.type', string='胚料模型类型') model_processing_panel = fields.Char('模型加工面板') model_surface_process_id = fields.Many2one('sf.production.process', string='表面工艺') model_process_parameters_id = fields.Many2one('sf.processing.technology', string='工艺参数') @@ -36,6 +37,7 @@ class ResProductTemplate(models.Model): single_manufacturing = fields.Boolean(string="单个制造") upload_model_file = fields.Many2many('ir.attachment', 'upload_model_file_attachment_ref', string='上传模型文件') model_code = fields.Char('模型编码') + is_bfm = fields.Boolean('业务平台是否自动创建', default=False) def _get_volume_uom_id_from_ir_config_parameter(self): product_length_in_feet_param = self.env['ir.config_parameter'].sudo().get_param('product.volume_in_cubic_feet') @@ -73,16 +75,16 @@ class ResProductTemplate(models.Model): model_type = self.env['sf.model.type'].search([], limit=1) attachment = self.attachment_create(item['model_name'], item['model_data']) vals = { - 'name': '%s-%s' % (order_id.name, i), + 'name': '%s-%s-%s' % ('P', order_id.name, i), 'model_long': item['model_long'] + model_type.embryo_tolerance, 'model_width': item['model_width'] + model_type.embryo_tolerance, 'model_height': item['model_height'] + model_type.embryo_tolerance, 'model_volume': (item['model_long'] + model_type.embryo_tolerance) * ( item['model_width'] + model_type.embryo_tolerance) * ( item['model_height'] + model_type.embryo_tolerance), - 'model_type_id': model_type.id, + 'product_model_type_id': model_type.id, 'model_processing_panel': 'R', - 'model_machining_precision': item['model_machining_precision'], + 'model_machining_precision': item['model_machining_precision'], 'model_code': item['barcode'], 'length': item['model_long'], 'width': item['model_width'], @@ -92,7 +94,7 @@ class ResProductTemplate(models.Model): 'model_name': attachment.name, 'upload_model_file': [(6, 0, [attachment.id])], # 'single_manufacturing': True, - 'tracking': 'serial', + # 'tracking': 'serial', 'list_price': item['price'], # 'categ_id': self.env.ref('sf_dlm.product_category_finished_sf').id, 'materials_id': self.env['sf.production.materials'].search( @@ -135,20 +137,22 @@ class ResProductTemplate(models.Model): supplier = self.env['mrp.bom'].get_supplier(materials_type_id) logging.info('no_bom_copy_product_supplier-vals:%s' % supplier) vals = { - 'name': '%s-%s %s %s %s * %s * %s' % ( - order_id.name, i, materials_id.name, materials_type_id.name, - item['model_long'] + model_type.embryo_tolerance, item['model_width'] + model_type.embryo_tolerance, - item['model_height'] + model_type.embryo_tolerance), + 'name': '%s-%s-%s [%s %s-%s * %s * %s]' % ('R', + order_id.name, i, materials_id.name, materials_type_id.name, + item['model_long'] + model_type.embryo_tolerance, + item['model_width'] + model_type.embryo_tolerance, + item['model_height'] + model_type.embryo_tolerance), 'length': item['model_long'] + model_type.embryo_tolerance, 'width': item['model_width'] + model_type.embryo_tolerance, 'height': item['model_height'] + model_type.embryo_tolerance, 'volume': (item['model_long'] + model_type.embryo_tolerance) * ( item['model_width'] + model_type.embryo_tolerance) * ( item['model_height'] + model_type.embryo_tolerance), - # 'model_price': item['price'], + 'embryo_model_type_id': model_type.id, 'list_price': item['price'], 'materials_id': materials_id.id, 'materials_type_id': materials_type_id.id, + 'is_bfm': True, # 'route_ids': self._get_routes(route_type), # 'categ_id': self.env.ref('sf_dlm.product_category_embryo_sf').id, # 'model_surface_process_id': self.env['sf.production.process'].search( @@ -158,14 +162,13 @@ class ResProductTemplate(models.Model): 'active': True } # 外协和采购生成的胚料需要根据材料型号绑定供应商 - if route_type == 'subcontract': - no_bom_copy_product_id.purchase_ok = True - no_bom_copy_product_id.seller_ids = [ - (0, 0, {'partner_id': supplier.partner_id.id, 'delay': 1.0, 'is_subcontractor': True})] - elif route_type == 'purchase': + if route_type == 'subcontract' or route_type == 'purchase': no_bom_copy_product_id.purchase_ok = True no_bom_copy_product_id.seller_ids = [ (0, 0, {'partner_id': supplier.partner_id.id, 'delay': 1.0})] + if route_type == 'subcontract': + partner = self.env['res.partner'].search([('id', '=', supplier.partner_id.id)]) + partner.is_subcontractor = True no_bom_copy_product_id.write(vals) logging.info('no_bom_copy_product_id-vals:%s' % vals) # product_id.product_tmpl_id.active = False @@ -209,7 +212,6 @@ class ResMrpBom(models.Model): 'product_qty': 1, 'product_uom_id': 1 } - logging.info('bom_create_line_has-vals:%s' % vals) return self.env['mrp.bom.line'].create(vals) # 业务平台分配工厂后在智能工厂先创建销售订单再创建该产品后再次进行创建bom @@ -224,7 +226,6 @@ class ResMrpBom(models.Model): if bom_type == 'subcontract' and product_type != False: subcontract = self.get_supplier(product.materials_type_id) bom_id.subcontractor_id = subcontract.partner_id.id - logging.info('bom_create-vals:%s' % bom_id) return bom_id # 胚料BOM组件:选取当前胚料原材料, @@ -240,7 +241,6 @@ class ResMrpBom(models.Model): 'product_qty': bom_line.volume * bom_line.materials_type_id.density * 1000, 'product_uom_id': bom_line.uom_id.id } - logging.info('bom_create_line-vals1:%s' % vals) return self.env['mrp.bom.line'].create(vals) # 查询材料型号默认排第一的供应商 @@ -249,7 +249,6 @@ class ResMrpBom(models.Model): [('materials_model_id', '=', materials_type.id)], limit=1, order='sequence asc') - logging.info('get_supplier-vals:%s' % seller_id) return seller_id # 匹配bom @@ -257,7 +256,7 @@ class ResMrpBom(models.Model): embryo_has = self.env['product.product'].search( [('categ_id.type', '=', '胚料'), ('materials_type_id', '=', product.materials_type_id.id), ('length', '>', product.length), ('width', '>', product.width), - ('height', '>', product.height) + ('height', '>', product.height), ('is_bfm', '=', False) ], limit=1, order='volume desc' diff --git a/sf_dlm/views/product_template_view.xml b/sf_dlm/views/product_template_view.xml index c563f728..d79dc323 100644 --- a/sf_dlm/views/product_template_view.xml +++ b/sf_dlm/views/product_template_view.xml @@ -6,13 +6,14 @@ product.template - - - - + + + + - + + @@ -36,18 +37,31 @@ - - - - - - - - - - - + + + @@ -71,8 +85,6 @@ - - @@ -112,5 +124,19 @@ + + + product.template.search + product.template + + + + + + + + + + \ No newline at end of file diff --git a/sf_machine_connect/views/machine_info_present.xml b/sf_machine_connect/views/machine_info_present.xml index 816921a3..c587b7d2 100644 --- a/sf_machine_connect/views/machine_info_present.xml +++ b/sf_machine_connect/views/machine_info_present.xml @@ -7,7 +7,7 @@ - + diff --git a/sf_manufacturing/models/model_type.py b/sf_manufacturing/models/model_type.py index bdc5fc78..7a15fd2f 100644 --- a/sf_manufacturing/models/model_type.py +++ b/sf_manufacturing/models/model_type.py @@ -6,13 +6,16 @@ class ModelType(models.Model): _description = '模型类型' name = fields.Char('名称') - embryo_tolerance = fields.Boolean('胚料的容余量', default=False) - routing_tmpl_ids = fields.One2many('sf.model.type.routing.sort', 'model_type_id', '工序模板') + embryo_tolerance = fields.Integer('胚料容余') + product_routing_tmpl_ids = fields.One2many('sf.product.model.type.routing.sort', 'product_model_type_id', + '成品工序模板') + embryo_routing_tmpl_ids = fields.One2many('sf.embryo.model.type.routing.sort', 'embryo_model_type_id', + '胚料工序模板') -class ModelTypeRoutingSort(models.Model): - _name = 'sf.model.type.routing.sort' - _description = '工序排序' +class ProductModelTypeRoutingSort(models.Model): + _name = 'sf.product.model.type.routing.sort' + _description = '成品工序排序' sequence = fields.Integer('Sequence') route_workcenter_id = fields.Many2one('mrp.routing.workcenter') @@ -23,11 +26,34 @@ class ModelTypeRoutingSort(models.Model): ('前置三元定位检测', '前置三元定位检测'), ('CNC加工', 'CNC加工'), ('后置三元质量检测', '后置三元质量检测'), - ('解除装夹', '解除装夹'), + ('解除装夹', '解除装夹'), ('切割', '切割') ], string="工序类型", related='route_workcenter_id.routing_type') workcenter_ids = fields.Many2many('mrp.workcenter', required=False, related='route_workcenter_id.workcenter_ids') - model_type_id = fields.Many2one('sf.model.type') + product_model_type_id = fields.Many2one('sf.model.type') _sql_constraints = [ - ('route_model_type_uniq', 'unique (route_workcenter_id,model_type_id)', '工序不能重复!') + ('route_model_type_uniq', 'unique (route_workcenter_id,product_model_type_id)', '成品工序不能重复!') + ] + + +class EmbryoModelTypeRoutingSort(models.Model): + _name = 'sf.embryo.model.type.routing.sort' + _description = '胚料工序排序' + + sequence = fields.Integer('Sequence') + route_workcenter_id = fields.Many2one('mrp.routing.workcenter') + is_repeat = fields.Boolean('重复', related='route_workcenter_id.is_repeat') + routing_type = fields.Selection([ + ('获取CNC加工程序', '获取CNC加工程序'), + ('装夹', '装夹'), + ('前置三元定位检测', '前置三元定位检测'), + ('CNC加工', 'CNC加工'), + ('后置三元质量检测', '后置三元质量检测'), + ('解除装夹', '解除装夹'), ('切割', '切割') + ], string="工序类型", related='route_workcenter_id.routing_type') + workcenter_ids = fields.Many2many('mrp.workcenter', required=False, related='route_workcenter_id.workcenter_ids') + embryo_model_type_id = fields.Many2one('sf.model.type') + + _sql_constraints = [ + ('route_model_type_uniq', 'unique (route_workcenter_id,embryo_model_type_id)', '胚料工序不能重复!') ] diff --git a/sf_manufacturing/models/mrp_production.py b/sf_manufacturing/models/mrp_production.py index 5046e128..d84f633d 100644 --- a/sf_manufacturing/models/mrp_production.py +++ b/sf_manufacturing/models/mrp_production.py @@ -1,11 +1,12 @@ # -*- coding: utf-8 -*- -from odoo import api, fields, models,_ +from odoo import api, fields, models, _ class resProduct(models.Model): _inherit = 'product.template' model_file = fields.Binary('模型文件') + class MrpProduction(models.Model): _inherit = 'mrp.production' _description = "制造订单" @@ -102,25 +103,34 @@ class MrpProduction(models.Model): 'operation_id': operation.id, 'state': 'pending', }] - # 根据加工面板的面数及对应的工序模板生成工单 - i = 0 - processing_panel_len = len(production.product_id.model_processing_panel.split(',')) - for k in (production.product_id.model_processing_panel.split(',')): - routingworkcenter = self.env['sf.model.type.routing.sort'].search( - [('model_type_id', '=', production.product_id.model_type_id.id)], + if production.product_id.categ_id.type == '成品': + # 根据加工面板的面数及对应的工序模板生成工单 + i = 0 + processing_panel_len = len(production.product_id.model_processing_panel.split(',')) + for k in (production.product_id.model_processing_panel.split(',')): + product_routing_workcenter = self.env['sf.product.model.type.routing.sort'].search( + [('product_model_type_id', '=', production.product_id.product_model_type_id.id)], + order='sequence asc' + ) + i += 1 + for route in product_routing_workcenter: + if i == 1 and route.routing_type == '获取CNC加工程序': + workorders_values.append( + self.env['mrp.workorder'].json_workorder_str('', production, route)) + if route.is_repeat == True: + workorders_values.append( + self.env['mrp.workorder'].json_workorder_str(k, production, route)) + if i == processing_panel_len and route.routing_type == '解除装夹': + workorders_values.append( + self.env['mrp.workorder'].json_workorder_str(k, production, route)) + elif production.product_id.categ_id.type == '胚料': + embryo_routing_workcenter = self.env['sf.embryo.model.type.routing.sort'].search( + [('embryo_model_type_id', '=', production.product_id.embryo_model_type_id.id)], order='sequence asc' ) - i += 1 - for route in routingworkcenter: - if i == 1 and route.routing_type == '获取CNC加工程序': - workorders_values.append( - self.env['mrp.workorder'].json_workorder_str('', production, route)) - if route.is_repeat == True: - workorders_values.append( - self.env['mrp.workorder'].json_workorder_str(k, production, route)) - if i == processing_panel_len and route.routing_type == '解除装夹': - workorders_values.append( - self.env['mrp.workorder'].json_workorder_str(k, production, route)) + for route in embryo_routing_workcenter: + workorders_values.append( + self.env['mrp.workorder'].json_workorder_str('', production, route)) production.workorder_ids = workorders_values for workorder in production.workorder_ids: workorder.duration_expected = workorder._get_duration_expected() @@ -181,7 +191,7 @@ class MrpProduction(models.Model): 'operation_id': operation.id, 'state': 'pending', }] - # 根据加工面板的面数及对应的工序模板生成工单 + # 根据加工面板的面数及对应的成品工序模板生成工单 i = 0 production.product_id.model_processing_panel = k processing_panel_len = len(k) diff --git a/sf_manufacturing/models/mrp_routing_workcenter.py b/sf_manufacturing/models/mrp_routing_workcenter.py index 23123d14..60ec21f6 100644 --- a/sf_manufacturing/models/mrp_routing_workcenter.py +++ b/sf_manufacturing/models/mrp_routing_workcenter.py @@ -11,6 +11,7 @@ class ResMrpRoutingWorkcenter(models.Model): ('CNC加工', 'CNC加工'), ('后置三元质量检测', '后置三元质量检测'), ('解除装夹', '解除装夹'), + ('切割', '切割') ], string="工序类型") is_repeat = fields.Boolean('重复', default=False) workcenter_id = fields.Many2one('mrp.workcenter', required=False) @@ -38,26 +39,3 @@ class ResMrpRoutingWorkcenter(models.Model): 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' -# _description = '工序排序' -# -# sequence = fields.Integer('Sequence') -# route_workcenter_id = fields.Many2one('mrp.routing.workcenter') -# is_repeat = fields.Boolean('重复', related='route_workcenter_id.is_repeat') -# routing_type = fields.Selection([ -# ('获取CNC加工程序', '获取CNC加工程序'), -# ('装夹', '装夹'), -# ('前置三元定位检测', '前置三元定位检测'), -# ('CNC加工', 'CNC加工'), -# ('后置三元质量检测', '后置三元质量检测'), -# ('解除装夹', '解除装夹'), -# ], string="工序类型", related='route_workcenter_id.routing_type') -# workcenter_ids = fields.Many2many('mrp.workcenter', required=False, related='route_workcenter_id.workcenter_ids') -# model_type_id = fields.Many2one('sf.model.type') -# -# _sql_constraints = [ -# ('route_model_type_uniq', 'unique (route_workcenter_id,model_type_id)', '工序不能重复!') -# ] diff --git a/sf_manufacturing/models/mrp_workcenter.py b/sf_manufacturing/models/mrp_workcenter.py index e853ab3f..f9f518c1 100644 --- a/sf_manufacturing/models/mrp_workcenter.py +++ b/sf_manufacturing/models/mrp_workcenter.py @@ -13,6 +13,24 @@ class ResWorkcenter(models.Model): 'maintenance.equipment', 'workcenter_id', string="Maintenance Equipment", check_company=True) + @api.onchange('machine_tool_id') + def update_machine_tool_is_binding(self): + machine_tool = self.env["sf.machine_tool"].search([('is_binding', '=', True)]) + if machine_tool: + for item in machine_tool: + workcenter_machine_tool = self.env["mrp.workcenter"].search([('machine_tool_id', '=', item.id)]) + if workcenter_machine_tool: + if self.machine_tool_id.id: + if workcenter_machine_tool.id != self.machine_tool_id.id: + self.machine_tool_id.is_binding = True + else: + self.machine_tool_id.is_binding = True + else: + self.machine_tool_id.is_binding = True + item.is_binding = False + else: + self.machine_tool_id.is_binding = True + def action_work_order(self): if not self.env.context.get('desktop_list_view', False): action = self.env["ir.actions.actions"]._for_xml_id("sf_manufacturing.mrp_workorder_action_tablet") diff --git a/sf_manufacturing/models/mrp_workorder.py b/sf_manufacturing/models/mrp_workorder.py index 3d2e17e2..185b24ed 100644 --- a/sf_manufacturing/models/mrp_workorder.py +++ b/sf_manufacturing/models/mrp_workorder.py @@ -29,6 +29,7 @@ class ResMrpWorkOrder(models.Model): ('CNC加工', 'CNC加工'), ('后置三元质量检测', '后置三元质量检测'), ('解除装夹', '解除装夹'), + ('切割', '切割') ], string="工序类型") @api.onchange('users_ids') @@ -89,7 +90,6 @@ class ResMrpWorkOrder(models.Model): cnc_ids = fields.One2many("sf.cnc.processing", 'workorder_id', string="CNC加工") tray_code = fields.Char(string="托盘") - # 计算配料中心点和与x轴倾斜度方法 def getcenter(self): try: @@ -135,7 +135,6 @@ class ResMrpWorkOrder(models.Model): except: raise UserError("参数计算有误") - def json_workorder_str(self, k, production, route): workorders_values_str = [0, '', { 'product_uom_id': production.product_uom_id.id, @@ -171,7 +170,9 @@ class ResMrpWorkOrder(models.Model): 'target': 'new', 'domain': [('workorder_id', '=', self.id)] } + tray_id = fields.Many2one('sf.tray', string="托盘信息") + # 扫码绑定托盘方法 def gettray(self): @@ -230,7 +231,6 @@ class ResMrpWorkOrder(models.Model): tray.unclamp() self.tray_id = tray - # return { # 'name': _('New Maintenance Request'), # 'view_mode': 'form', @@ -288,7 +288,6 @@ class ResMrpWorkOrder(models.Model): else: return True - # cnc程序获取 def fetchCNC(self): try: @@ -499,7 +498,6 @@ class CNCprocessing(models.Model): download_state = ftp.download_file_tree(remotepath, serverdir) return download_state - # 将nc文件存到attach的datas里 def write_file(self, nc_file_path, cnc): if os.path.exists(nc_file_path): diff --git a/sf_manufacturing/security/ir.model.access.csv b/sf_manufacturing/security/ir.model.access.csv index f2527022..f2bf5270 100644 --- a/sf_manufacturing/security/ir.model.access.csv +++ b/sf_manufacturing/security/ir.model.access.csv @@ -1,7 +1,8 @@ id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink access_sf_cnc_processing,sf_cnc_processing,model_sf_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 +access_sf_product_model_type_routing_sort,sf_product_model_type_routing_sort,model_sf_product_model_type_routing_sort,base.group_user,1,1,1,1 +access_sf_embryo_model_type_routing_sort,sf_embryo_model_type_routing_sort,model_sf_embryo_model_type_routing_sort,base.group_user,1,1,1,1 diff --git a/sf_manufacturing/views/model_type_view.xml b/sf_manufacturing/views/model_type_view.xml index 58fd70be..e44f7311 100644 --- a/sf_manufacturing/views/model_type_view.xml +++ b/sf_manufacturing/views/model_type_view.xml @@ -31,10 +31,21 @@
- + - + + + + + + + + + + + + diff --git a/sf_manufacturing/views/mrp_workcenter_views.xml b/sf_manufacturing/views/mrp_workcenter_views.xml index 0e25f5fa..68810a23 100644 --- a/sf_manufacturing/views/mrp_workcenter_views.xml +++ b/sf_manufacturing/views/mrp_workcenter_views.xml @@ -56,10 +56,10 @@ - 工作中心看板 + Work Centers Overview ir.actions.act_window mrp.workcenter - kanban,form,tree + kanban,form [('users_ids','in',uid)] @@ -107,7 +107,7 @@ - + diff --git a/sf_manufacturing/views/mrp_workorder_view.xml b/sf_manufacturing/views/mrp_workorder_view.xml index e5b01c16..e874bc4e 100644 --- a/sf_manufacturing/views/mrp_workorder_view.xml +++ b/sf_manufacturing/views/mrp_workorder_view.xml @@ -12,7 +12,7 @@ - + @@ -22,7 +22,7 @@ - {'invisible': [("user_permissions","=",False)]} + {'invisible': [("user_permissions","=",False)]} 停工 @@ -52,10 +52,10 @@ Work Orders ir.actions.act_window mrp.workorder - kanban,tree,form + tree,kanban,form + (0, 0, {'view_mode': 'tree', 'view_id': ref('mrp.mrp_production_workorder_tree_editable_view')}), + (0, 0, {'view_mode': 'kanban', 'view_id': ref('mrp.workcenter_line_kanban')}) ]"/> fullscreen [('state', 'not in', ['done', 'cancel'])] {'search_default_workcenter_id': active_id} @@ -94,23 +94,25 @@