sf工单优化及权限
This commit is contained in:
@@ -17,8 +17,8 @@
|
|||||||
'report/tray_report.xml',
|
'report/tray_report.xml',
|
||||||
'views/mrp_maintenance_views.xml',
|
'views/mrp_maintenance_views.xml',
|
||||||
'views/mrp_routing_workcenter_view.xml',
|
'views/mrp_routing_workcenter_view.xml',
|
||||||
'views/mrp_workorder_view.xml',
|
|
||||||
'views/mrp_workcenter_views.xml',
|
'views/mrp_workcenter_views.xml',
|
||||||
|
'views/mrp_workorder_view.xml',
|
||||||
'views/tray_view.xml',
|
'views/tray_view.xml',
|
||||||
'views/model_type_view.xml',
|
'views/model_type_view.xml',
|
||||||
|
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ from . import mrp_routing_workcenter
|
|||||||
from . import mrp_workorder
|
from . import mrp_workorder
|
||||||
from . import model_type
|
from . import model_type
|
||||||
from . import stock
|
from . import stock
|
||||||
|
from . import res_user
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -7,6 +7,8 @@ class ResWorkcenter(models.Model):
|
|||||||
_inherit = "mrp.workcenter"
|
_inherit = "mrp.workcenter"
|
||||||
machine_tool_id = fields.Many2one('sf.machine_tool', '机床')
|
machine_tool_id = fields.Many2one('sf.machine_tool', '机床')
|
||||||
|
|
||||||
|
users_ids = fields.Many2many("res.users", 'users_workcenter')
|
||||||
|
|
||||||
equipment_ids = fields.One2many(
|
equipment_ids = fields.One2many(
|
||||||
'maintenance.equipment', 'workcenter_id', string="Maintenance Equipment",
|
'maintenance.equipment', 'workcenter_id', string="Maintenance Equipment",
|
||||||
check_company=True)
|
check_company=True)
|
||||||
|
|||||||
@@ -19,6 +19,7 @@ class ResMrpWorkOrder(models.Model):
|
|||||||
_order = 'sequence'
|
_order = 'sequence'
|
||||||
|
|
||||||
workcenter_id = fields.Many2one('mrp.workcenter', required=False)
|
workcenter_id = fields.Many2one('mrp.workcenter', required=False)
|
||||||
|
users_ids = fields.Many2many("res.users", 'users_workorder', related="workcenter_id.users_ids")
|
||||||
processing_panel = fields.Char('加工面')
|
processing_panel = fields.Char('加工面')
|
||||||
sequence = fields.Integer(string='工序')
|
sequence = fields.Integer(string='工序')
|
||||||
routing_type = fields.Selection([
|
routing_type = fields.Selection([
|
||||||
@@ -29,6 +30,21 @@ class ResMrpWorkOrder(models.Model):
|
|||||||
('后置三元质量检测', '后置三元质量检测'),
|
('后置三元质量检测', '后置三元质量检测'),
|
||||||
('解除装夹', '解除装夹'),
|
('解除装夹', '解除装夹'),
|
||||||
], string="工序类型")
|
], string="工序类型")
|
||||||
|
|
||||||
|
@api.onchange('users_ids')
|
||||||
|
def get_user_permissions(self):
|
||||||
|
uid = self.env.uid
|
||||||
|
for workorder in self:
|
||||||
|
if workorder.users_ids:
|
||||||
|
for item in workorder.users_ids:
|
||||||
|
if item.id == uid:
|
||||||
|
workorder.user_permissions = True
|
||||||
|
else:
|
||||||
|
workorder.user_permissions = False
|
||||||
|
else:workorder.user_permissions=False
|
||||||
|
|
||||||
|
|
||||||
|
user_permissions = fields.Boolean('用户权限', compute='get_user_permissions')
|
||||||
cnc_worksheet = fields.Binary(
|
cnc_worksheet = fields.Binary(
|
||||||
'工作指令', readonly=True)
|
'工作指令', readonly=True)
|
||||||
material_center_point = fields.Char(string='配料中心点')
|
material_center_point = fields.Char(string='配料中心点')
|
||||||
|
|||||||
7
sf_manufacturing/models/res_user.py
Normal file
7
sf_manufacturing/models/res_user.py
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
from odoo import SUPERUSER_ID, _, api, fields, models, registry
|
||||||
|
|
||||||
|
class Users(models.Model):
|
||||||
|
_inherit = 'res.users'
|
||||||
|
|
||||||
|
workcenter_ids = fields.Many2many("mrp.workcenter", 'users_workcenter')
|
||||||
@@ -31,7 +31,9 @@
|
|||||||
<field name="arch" type="xml">
|
<field name="arch" type="xml">
|
||||||
<!-- Desktop view -->
|
<!-- Desktop view -->
|
||||||
<xpath expr="//div[@name='o_wo']" position="inside">
|
<xpath expr="//div[@name='o_wo']" position="inside">
|
||||||
<button class="btn btn-secondary fa fa-desktop" name="action_work_order" type="object" context="{'search_default_ready': 1, 'search_default_progress': 1, 'search_default_pending': 1, 'desktop_list_view': 1, 'search_default_workcenter_id': active_id}" title="Work orders" aria-label="Work orders"/>
|
<button class="btn btn-secondary fa fa-desktop" name="action_work_order" type="object"
|
||||||
|
context="{'search_default_ready': 1, 'search_default_progress': 1, 'search_default_pending': 1, 'desktop_list_view': 1, 'search_default_workcenter_id': active_id}"
|
||||||
|
title="Work orders" aria-label="Work orders"/>
|
||||||
</xpath>
|
</xpath>
|
||||||
</field>
|
</field>
|
||||||
</record>
|
</record>
|
||||||
@@ -41,20 +43,41 @@
|
|||||||
<field name="help" type="html">
|
<field name="help" type="html">
|
||||||
<p class="o_view_nocontent_workorder">
|
<p class="o_view_nocontent_workorder">
|
||||||
No work orders to do!
|
No work orders to do!
|
||||||
</p><p>
|
</p>
|
||||||
|
<p>
|
||||||
Work orders are operations to do as part of a manufacturing order.
|
Work orders are operations to do as part of a manufacturing order.
|
||||||
Operations are defined in the bill of materials or added in the manufacturing order directly.
|
Operations are defined in the bill of materials or added in the manufacturing order directly.
|
||||||
</p><p>
|
</p>
|
||||||
|
<p>
|
||||||
Use the table work center control panel to register operations in the shop floor directly.
|
Use the table work center control panel to register operations in the shop floor directly.
|
||||||
The tablet provides worksheets for your workers and allow them to scrap products, track time,
|
The tablet provides worksheets for your workers and allow them to scrap products, track time,
|
||||||
launch a maintenance request, perform quality tests, etc.
|
launch a maintenance request, perform quality tests, etc.
|
||||||
</p>
|
</p>
|
||||||
</field>
|
</field>
|
||||||
</record>
|
</record>
|
||||||
|
<record id="mrp_workcenter_kanban_action1" model="ir.actions.act_window">
|
||||||
|
<field name="name">Work Centers Overview</field>
|
||||||
|
<field name="type">ir.actions.act_window</field>
|
||||||
|
<field name="res_model">mrp.workcenter</field>
|
||||||
|
<field name="view_mode">kanban,form</field>
|
||||||
|
<field name="view_id" ref="mrp.mrp_workcenter_kanban"/>
|
||||||
|
<field name="search_view_id" ref="mrp.view_mrp_workcenter_search"/>
|
||||||
|
<field name="domain">[('users_ids','in',uid)]</field>
|
||||||
|
<field name="help" type="html">
|
||||||
|
<p class="o_view_nocontent_smiling_face">
|
||||||
|
Create a new work center
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Manufacturing operations are processed at Work Centers. A Work Center can be composed of
|
||||||
|
workers and/or machines, they are used for costing, scheduling, capacity planning, etc.
|
||||||
|
They can be defined via the configuration menu.
|
||||||
|
</p>
|
||||||
|
</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
<menuitem id="menu_mrp_dashboard"
|
<menuitem id="menu_mrp_dashboard"
|
||||||
name="工作中心概述"
|
name="工作中心概述"
|
||||||
action="mrp.mrp_workcenter_kanban_action"
|
action="mrp_workcenter_kanban_action1"
|
||||||
groups="mrp.group_mrp_routings"
|
groups="mrp.group_mrp_routings"
|
||||||
parent="mrp.menu_mrp_root"
|
parent="mrp.menu_mrp_root"
|
||||||
sequence="5"/>
|
sequence="5"/>
|
||||||
@@ -79,6 +102,9 @@
|
|||||||
</field>
|
</field>
|
||||||
</page>
|
</page>
|
||||||
</xpath>
|
</xpath>
|
||||||
|
<xpath expr="//field[@name='company_id']" position="after">
|
||||||
|
<field name="users_ids" widget="many2many_tags" string="可操作用户"/>
|
||||||
|
</xpath>
|
||||||
|
|
||||||
<xpath expr="//field[@name='alternative_workcenter_ids']" position="after">
|
<xpath expr="//field[@name='alternative_workcenter_ids']" position="after">
|
||||||
<field name="machine_tool_id"/>
|
<field name="machine_tool_id"/>
|
||||||
|
|||||||
@@ -7,10 +7,24 @@
|
|||||||
<field name="arch" type="xml">
|
<field name="arch" type="xml">
|
||||||
<field name="name" position="before">
|
<field name="name" position="before">
|
||||||
<field name="sequence"/>
|
<field name="sequence"/>
|
||||||
|
<field name = 'user_permissions'/>
|
||||||
</field>
|
</field>
|
||||||
<field name="name" position="after">
|
<field name="name" position="after">
|
||||||
<field name="processing_panel"/>
|
<field name="processing_panel"/>
|
||||||
</field>
|
</field>
|
||||||
|
<xpath expr="//button[@name='button_start']" position="attributes">
|
||||||
|
<attribute name="attrs">{'invisible': ['|', '|', '|','|', ('production_state','in', ('draft', 'done', 'cancel')), ('working_state', '=', 'blocked'), ('state', 'in', ('done', 'cancel')), ('is_user_working', '!=', False),("user_permissions","=",False)]}</attribute>
|
||||||
|
</xpath>
|
||||||
|
<!-- <button name="button_start" type="object" string="Start" class="btn-success"-->
|
||||||
|
<!-- attrs="{'invisible': ['|', '|', '|', ('production_state','in', ('draft', 'done', 'cancel')), ('working_state', '=', 'blocked'), ('state', 'in', ('done', 'cancel')), ('is_user_working', '!=', False)]}"/>-->
|
||||||
|
<!-- <button name="button_pending" type="object" string="Pause" class="btn-warning"-->
|
||||||
|
<!-- attrs="{'invisible': ['|', '|', ('production_state', 'in', ('draft', 'done', 'cancel')), ('working_state', '=', 'blocked'), ('is_user_working', '=', False)]}"/>-->
|
||||||
|
<!-- <button name="button_finish" type="object" string="Done" class="btn-success"-->
|
||||||
|
<!-- attrs="{'invisible': ['|', '|', ('production_state', 'in', ('draft', 'done', 'cancel')), ('working_state', '=', 'blocked'), ('is_user_working', '=', False)]}"/>-->
|
||||||
|
<tree position="attributes">
|
||||||
|
<attribute name="multi_edit"></attribute>
|
||||||
|
<attribute name="editable"></attribute>
|
||||||
|
</tree>
|
||||||
</field>
|
</field>
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
@@ -57,10 +71,16 @@
|
|||||||
<field name="model">mrp.workorder</field>
|
<field name="model">mrp.workorder</field>
|
||||||
<field name="inherit_id" ref="mrp.mrp_production_workorder_form_view_inherit"/>
|
<field name="inherit_id" ref="mrp.mrp_production_workorder_form_view_inherit"/>
|
||||||
<field name="arch" type="xml">
|
<field name="arch" type="xml">
|
||||||
|
<xpath expr="field[@name='is_user_working']" position="before">
|
||||||
|
<field name = 'user_permissions' invisible="1"/>
|
||||||
|
</xpath>
|
||||||
|
|
||||||
|
|
||||||
<xpath expr="//page[last()]" position="after">
|
<xpath expr="//page[last()]" position="after">
|
||||||
<page string="获取CNC加工程序" attrs='{"invisible": [("routing_type","!=","获取CNC加工程序")]}'>
|
<page string="获取CNC加工程序" attrs='{"invisible": [("routing_type","!=","获取CNC加工程序")]}' >
|
||||||
|
|
||||||
<div class="col-12 col-lg-6 o_setting_box">
|
<div class="col-12 col-lg-6 o_setting_box">
|
||||||
<button type="object" class="oe_highlight" name="fetchCNC" string="获取CNC程序代码"/>
|
<button type="object" class="oe_highlight" name="fetchCNC" string="获取CNC程序代码" attrs='{"invisible": [("user_permissions","=",False)]}' />
|
||||||
</div>
|
</div>
|
||||||
</page>
|
</page>
|
||||||
|
|
||||||
@@ -185,7 +205,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="col-12 col-lg-6 o_setting_box">
|
<div class="col-12 col-lg-6 o_setting_box">
|
||||||
<button type="object" class="oe_highlight" name="getcenter" string="计算定位"/>
|
<button type="object" class="oe_highlight" name="getcenter" string="计算定位" attrs='{"invisible": [("user_permissions","=",False)]}'/>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<group>
|
<group>
|
||||||
@@ -227,7 +247,7 @@
|
|||||||
</group>
|
</group>
|
||||||
<div class="col-12 col-lg-6 o_setting_box">
|
<div class="col-12 col-lg-6 o_setting_box">
|
||||||
<button type="object" class="oe_highlight" name="recreateManufacturingOrWorkerOrder"
|
<button type="object" class="oe_highlight" name="recreateManufacturingOrWorkerOrder"
|
||||||
string="检测确认"/>
|
string="检测确认" attrs='{"invisible": [("user_permissions","=",False)]}'/>
|
||||||
</div>
|
</div>
|
||||||
</page>
|
</page>
|
||||||
</xpath>
|
</xpath>
|
||||||
@@ -235,11 +255,11 @@
|
|||||||
<page string="解除装夹" attrs='{"invisible": [("routing_type","!=","解除装夹")]}'>
|
<page string="解除装夹" attrs='{"invisible": [("routing_type","!=","解除装夹")]}'>
|
||||||
|
|
||||||
<div class="col-12 col-lg-6 o_setting_box">
|
<div class="col-12 col-lg-6 o_setting_box">
|
||||||
<button type="object" class="oe_highlight" name="unbindtray" string="解除装夹"/>
|
<button type="object" class="oe_highlight" name="unbindtray" string="解除装夹" attrs='{"invisible": [("user_permissions","=",False)]}'/>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-12 col-lg-6 o_setting_box">
|
<div class="col-12 col-lg-6 o_setting_box">
|
||||||
<button type="action" class="oe_highlight" name="sf_manufacturing.label_sf_tray_code1"
|
<button type="action" class="oe_highlight" name="sf_manufacturing.label_sf_tray_code1"
|
||||||
string="打印标签"/>
|
string="打印标签" attrs='{"invisible": [("user_permissions","=",False)]}'/>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</page>
|
</page>
|
||||||
|
|||||||
Reference in New Issue
Block a user