Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into feature/制造代码优化

This commit is contained in:
mgw
2024-03-04 09:45:55 +08:00
31 changed files with 878 additions and 583 deletions

View File

@@ -9,67 +9,68 @@ var Dialog = require('web.Dialog');
// var {patch} = require("web.utils") 这句话也行 // var {patch} = require("web.utils") 这句话也行
patch(FormStatusIndicator.prototype, 'jikimo_frontend.FormStatusIndicator', { patch(FormStatusIndicator.prototype, 'jikimo_frontend.FormStatusIndicator', {
// 你可以重写或者添加一些方法和属性 // 你可以重写或者添加一些方法和属性
async _onDiscardChanges() { async _onDiscardChanges() {
// var self = this; // var self = this;
Dialog.confirm(this, _t("Are you sure you want to discard changes?"), { Dialog.confirm(this, _t("Are you sure you want to discard changes?"), {
title: _t("Discard Changes"), title: _t("Discard Changes"),
// confirm_callback: function () { // confirm_callback: function () {
// self.model.discardChanges(self.handle); // self.model.discardChanges(self.handle);
// }, // },
}); });
}, },
async discard() { async discard() {
// if (window.confirm("Are you sure you want to discard changes?")) { // if (window.confirm("Are you sure you want to discard changes?")) {
// await this.props.discard(); // await this.props.discard();
// } // }
// const result = await this._confirmDiscardChange(); // const result = await this._confirmDiscardChange();
await this._confirmDiscardChange(); await this._confirmDiscardChange();
await this.props.discard(); await this.props.discard();
}, },
_confirmDiscardChange(){ _confirmDiscardChange() {
var self = this; var self = this;
var def = new Promise(function (resolve, reject) { var def = new Promise(function (resolve, reject) {
var message = _t("请确认是否要舍弃之前的更改?"); var message = _t("请确认是否要舍弃之前的更改?");
var dialog = Dialog.confirm(self, message, { var dialog = Dialog.confirm(self, message, {
title: _t("Warning"), title: _t("Warning"),
confirm_callback: resolve.bind(self, true), confirm_callback: resolve.bind(self, true),
cancel_callback: reject, cancel_callback: reject,
}); });
dialog.on('closed', self, reject); dialog.on('closed', self, reject);
}); });
return def; return def;
}, },
} }
); );
$(function (){ $(function () {
document.addEventListener('click', function () { document.addEventListener('click', function () {
const dom = $('.o_form_status_indicator_buttons ') const dom = $('.o_form_status_indicator_buttons ')
if(dom) { if (dom) {
const dom1 = dom.children().eq(0) const dom1 = dom.children().eq(0)
const dom2 = dom.children().eq(1) const dom2 = dom.children().eq(1)
if(!dom1.text()) { if (!dom1.text()) {
dom1.append('保存') dom1.append('保存')
dom2.append('取消') dom2.append('取消')
} }
} }
}) })
function customRequired() {
function customRequired() {
let timer = null let timer = null
let timer_count = 0 let timer_count = 0
clearInterval(timer) clearInterval(timer)
timer = setInterval(() => { timer = setInterval(() => {
timer_count ++ timer_count++
const dom = $('.custom_required') const dom = $('.custom_required')
let tableDom = $('.table_custom_required') let tableDom = $('.table_custom_required')
if(tableDom.length) { if (tableDom.length) {
tableDom = tableDom.eq(0).parents('tr').children('.table_custom_required') tableDom = tableDom.eq(0).parents('tr').children('.table_custom_required')
tableDom.each(function (){ tableDom.each(function () {
const i = $(this).index() const i = $(this).index()
const requiredDom = $(this).parents('table').find('thead').find('th').eq(i).find('span').eq(0) const requiredDom = $(this).parents('table').find('thead').find('th').eq(i).find('span').eq(0)
const t = requiredDom.text().replace('*', '') const t = requiredDom.text().replace('*', '')
@@ -77,29 +78,75 @@ $(function (){
}) })
clearInterval(timer) clearInterval(timer)
} }
if(dom.length) { if (dom.length) {
dom.each(function (){ dom.each(function () {
const requiredDom = $(this).parent().prev().find('label') const requiredDom = $(this).parent().prev().find('label')
let t = requiredDom.html() let t = requiredDom.html()
if(t.indexOf('c*') < 0) { if (t.indexOf('c*') < 0) {
t = '<i class="c*" style="color: red;margin-left: -4px">*</i>' + t t = '<i class="c*" style="color: red;margin-left: -4px">*</i>' + t
} }
requiredDom.html(t) requiredDom.html(t)
}) })
clearInterval(timer) clearInterval(timer)
} }
if(timer_count == 20) { if (timer_count == 20) {
clearInterval(timer) clearInterval(timer)
} }
},500) }, 500)
} }
function setRequired(dom = {label: [], table: []}) {
let domTimer = null
let timer_count = 0
clearInterval(domTimer)
domTimer = setInterval(() => {
timer_count++
const lint = $('.o_form_view_container')
if (lint.length) {
clearInterval(domTimer)
const {label, table} = dom
if (label.length) {
$(dom.label.join(',')).each(function () {
let t = $(this).html()
if (t.indexOf('c*') < 0) {
t = '<i class="c*" style="color: red;margin-left: -6px;margin-right: 2px">*</i>' + t
}
$(this).html(t)
})
}
if (table.length) {
table.forEach(_ => {
const th = $(`th[data-name=${_}]`)
const t = th.find('span').eq(0).text().replace('*','')
th.find('span').eq(0).html('<i style="color: red">*</i>' + t)
})
}
}
if (timer_count == 20) {
clearInterval(domTimer)
}
}, 500)
}
var currentUrl = location.href var currentUrl = location.href
const customRequiredDom = {
label: ['label[for=production_line_id]','label[for=date_approve]','label[for=partner_id]', 'label[for=validity_date]', '.o_horizontal[role=radiogroup]', 'label[for=vat]', 'label[for=phone]', 'label[for=mobile]', 'label[for=email]', 'label[for=category_id]','label[for=date_order]','label[for=picking_type_id]'],
table: ['product_template_id', 'product_uom_qty', 'price_unit','product_id','product_qty']
}
const listenerUrl = setInterval(() => { const listenerUrl = setInterval(() => {
const isChange = currentUrl != location.href const isChange = currentUrl != location.href
if(isChange) { if (isChange) {
currentUrl = location.href currentUrl = location.href
customRequired() customRequired()
setRequired(customRequiredDom)
}
if($('label[for=production_line_id]')) {
setRequired({table: [], label: ['label[for=production_line_id]']})
} }
}, 500) }, 500)
customRequired() customRequired()
setRequired(customRequiredDom)
}) })

View File

@@ -263,6 +263,8 @@ class QualityCheck(models.Model):
picture = fields.Binary('Picture', attachment=True) picture = fields.Binary('Picture', attachment=True)
additional_note = fields.Text( additional_note = fields.Text(
'Additional Note', help="Additional remarks concerning this check.") 'Additional Note', help="Additional remarks concerning this check.")
report_result = fields.Char('检测结果', readonly=True)
report_pdf = fields.Binary('检测报告', readonly=True)
def _compute_alert_count(self): def _compute_alert_count(self):
alert_data = self.env['quality.alert'].read_group([('check_id', 'in', self.ids)], ['check_id'], ['check_id']) alert_data = self.env['quality.alert'].read_group([('check_id', 'in', self.ids)], ['check_id'], ['check_id'])
@@ -408,3 +410,5 @@ class QualityAlert(models.Model):
domain = [('team_ids', '=', False)] domain = [('team_ids', '=', False)]
stage_ids = stages._search(domain, order=order, access_rights_uid=SUPERUSER_ID) stage_ids = stages._search(domain, order=order, access_rights_uid=SUPERUSER_ID)
return stages.browse(stage_ids) return stages.browse(stage_ids)

View File

@@ -9,11 +9,9 @@ access_quality_point_user,quality.point,quality.model_quality_point,quality.grou
access_quality_point_test_type_user,quality.point.test_type,quality.model_quality_point_test_type,quality.group_quality_user,1,0,0,0 access_quality_point_test_type_user,quality.point.test_type,quality.model_quality_point_test_type,quality.group_quality_user,1,0,0,0
access_quality_check_stock_user,quality.check,quality.model_quality_check,stock.group_stock_user,1,1,1,0 access_quality_check_stock_user,quality.check,quality.model_quality_check,stock.group_stock_user,1,1,1,0
access_stock_lot_user,stock.lot,stock.model_stock_lot,quality.group_quality_user,1,0,0,0 access_stock_lot_user,stock.lot,stock.model_stock_lot,quality.group_quality_user,1,0,0,0
access_stock_lot_group_quality_manager,stock_lot_group_quality_manager,stock.model_stock_lot,quality.group_quality_manager,1,0,0,0
access_stock_pack_user,stock.move.line,stock.model_stock_move_line,quality.group_quality_user,1,0,0,0 access_stock_pack_user,stock.move.line,stock.model_stock_move_line,quality.group_quality_user,1,0,0,0
access_stock_picking_group_quality_user,stock_picking_group_quality_user,stock.model_stock_picking,quality.group_quality_user,1,0,0,0 access_stock_picking_group_quality_user,stock_picking_group_quality_user,stock.model_stock_picking,quality.group_quality_user,1,0,0,0
access_stock_picking_group_quality_manager,stock_picking_group_quality_manager,stock.model_stock_picking,quality.group_quality_manager,1,0,0,0
access_quality_alert_team_manager,quality.alert.team,quality.model_quality_alert_team,quality.group_quality_manager,1,1,1,1 access_quality_alert_team_manager,quality.alert.team,quality.model_quality_alert_team,quality.group_quality_manager,1,1,1,1
access_quality_check_manager,quality.check,quality.model_quality_check,quality.group_quality_manager,1,1,1,1 access_quality_check_manager,quality.check,quality.model_quality_check,quality.group_quality_manager,1,1,1,1
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
9 access_quality_point_test_type_user quality.point.test_type quality.model_quality_point_test_type quality.group_quality_user 1 0 0 0
10 access_quality_check_stock_user quality.check quality.model_quality_check stock.group_stock_user 1 1 1 0
11 access_stock_lot_user stock.lot stock.model_stock_lot quality.group_quality_user 1 0 0 0
access_stock_lot_group_quality_manager stock_lot_group_quality_manager stock.model_stock_lot quality.group_quality_manager 1 0 0 0
12 access_stock_pack_user stock.move.line stock.model_stock_move_line quality.group_quality_user 1 0 0 0
13 access_stock_picking_group_quality_user stock_picking_group_quality_user stock.model_stock_picking quality.group_quality_user 1 0 0 0
14 access_stock_picking_group_quality_manager access_quality_alert_team_manager stock_picking_group_quality_manager quality.alert.team stock.model_stock_picking quality.model_quality_alert_team quality.group_quality_manager 1 0 1 0 1 0 1
access_quality_alert_team_manager quality.alert.team quality.model_quality_alert_team quality.group_quality_manager 1 1 1 1
15 access_quality_check_manager quality.check quality.model_quality_check quality.group_quality_manager 1 1 1 1
16 access_quality_alert_manager quality.alert quality.model_quality_alert quality.group_quality_manager 1 1 1 1
17 access_quality_reason_manager quality.reason quality.model_quality_reason quality.group_quality_manager 1 1 1 1

View File

@@ -32,7 +32,9 @@
<field name="tag_ids"/> <field name="tag_ids"/>
</div> </div>
<div> <div>
<strong><field name="product_tmpl_id"/></strong> <strong>
<field name="product_tmpl_id"/>
</strong>
</div> </div>
<div> <div>
<field name="display_name"/> <field name="display_name"/>
@@ -65,20 +67,28 @@
<field name="company_id" invisible="1"/> <field name="company_id" invisible="1"/>
<field name="product_id" invisible="1"/> <field name="product_id" invisible="1"/>
<div class="oe_button_box"> <div class="oe_button_box">
<button name="action_see_check" type="object" attrs="{'invisible': [('check_id', '=', False)]}" class="oe_stat_button" icon="fa-check-square-o"> <button name="action_see_check" type="object" attrs="{'invisible': [('check_id', '=', False)]}"
class="oe_stat_button" icon="fa-check-square-o">
<div class="o_field_widget o_stat_info"> <div class="o_field_widget o_stat_info">
<span class="o_stat_value"><field name="check_id" readonly="1"/></span> <span class="o_stat_value">
<field name="check_id" readonly="1"/>
</span>
<span class="o_stat_text">Quality Check</span> <span class="o_stat_text">Quality Check</span>
</div> </div>
</button> </button>
</div> </div>
<div class="oe_title"><h1><field name="name" readonly="1"/></h1></div> <div class="oe_title">
<h1>
<field name="name" readonly="1"/>
</h1>
</div>
<group> <group>
<group> <group>
<field name="title"/> <field name="title"/>
<field name="product_tmpl_id"/> <field name="product_tmpl_id"/>
<field name="product_id" groups="product.group_product_variant"/> <field name="product_id" groups="product.group_product_variant"/>
<field name="lot_id" context="{'default_product_id': product_id}" groups="stock.group_production_lot"/> <field name="lot_id" context="{'default_product_id': product_id}"
groups="stock.group_production_lot"/>
<field name="picking_id"/> <field name="picking_id"/>
</group> </group>
<group> <group>
@@ -144,25 +154,25 @@
</record> </record>
<record id="quality_alert_view_pivot" model="ir.ui.view"> <record id="quality_alert_view_pivot" model="ir.ui.view">
<field name="name">quality.alert.view.pivot</field> <field name="name">quality.alert.view.pivot</field>
<field name="model">quality.alert</field> <field name="model">quality.alert</field>
<field name="arch" type="xml"> <field name="arch" type="xml">
<pivot string="Quality Alert Analysis" sample="1"> <pivot string="Quality Alert Analysis" sample="1">
<field name="stage_id" type="col"/> <field name="stage_id" type="col"/>
<field name="team_id" type="row"/> <field name="team_id" type="row"/>
</pivot> </pivot>
</field> </field>
</record> </record>
<record id="quality_alert_view_graph" model="ir.ui.view"> <record id="quality_alert_view_graph" model="ir.ui.view">
<field name="name">quality.alert.view.graph</field> <field name="name">quality.alert.view.graph</field>
<field name="model">quality.alert</field> <field name="model">quality.alert</field>
<field name="arch" type="xml"> <field name="arch" type="xml">
<graph string="Quality Alert Analysis" sample="1"> <graph string="Quality Alert Analysis" sample="1">
<field name="reason_id"/> <field name="reason_id"/>
<field name="stage_id"/> <field name="stage_id"/>
</graph> </graph>
</field> </field>
</record> </record>
<record id="quality_alert_view_calendar" model="ir.ui.view"> <record id="quality_alert_view_calendar" model="ir.ui.view">
@@ -186,7 +196,8 @@
<field name="view_mode">kanban,tree,form,pivot,graph,calendar</field> <field name="view_mode">kanban,tree,form,pivot,graph,calendar</field>
<field name="domain">[('team_id', '=', active_id)]</field> <field name="domain">[('team_id', '=', active_id)]</field>
<field name="context">{'default_team_id': active_id, <field name="context">{'default_team_id': active_id,
'search_default_team_id': [active_id]}</field> 'search_default_team_id': [active_id]}
</field>
</record> </record>
<record id="quality_alert_action_check" model="ir.actions.act_window"> <record id="quality_alert_action_check" model="ir.actions.act_window">
@@ -195,7 +206,7 @@
<field name="view_mode">kanban,tree,form,pivot,graph,calendar</field> <field name="view_mode">kanban,tree,form,pivot,graph,calendar</field>
<field name="help" type="html"> <field name="help" type="html">
<p class="o_view_nocontent_smiling_face"> <p class="o_view_nocontent_smiling_face">
Create a new quality alert Create a new quality alert
</p> </p>
</field> </field>
</record> </record>
@@ -212,24 +223,35 @@
</record> </record>
<!-- QUALITY.CHECK --> <!-- QUALITY.CHECK -->
<record id="quality_check_view_form" model="ir.ui.view"> <record id="quality_check_view_form" model="ir.ui.view">
<field name="name">quality.check.view.form</field> <field name="name">quality.check.view.form</field>
<field name="model">quality.check</field> <field name="model">quality.check</field>
<field name="arch" type="xml"> <field name="arch" type="xml">
<form> <form>
<header> <header>
<button name="do_pass" type="object" class="btn-primary" attrs="{'invisible': [('quality_state', '!=', 'none')]}" string="Pass" data-hotkey="q"/> <button name="do_pass" type="object" class="btn-primary"
<button name="do_pass" type="object" attrs="{'invisible': [('quality_state', '!=', 'fail')]}" groups="quality.group_quality_manager" string="Pass" data-hotkey="q"/> attrs="{'invisible': [('quality_state', '!=', 'none')]}" string="Pass" data-hotkey="q"/>
<button name="do_fail" type="object" class="btn-primary" attrs="{'invisible': [('quality_state', '!=', 'none')]}" string="Fail" data-hotkey="w"/> <button name="do_pass" type="object" attrs="{'invisible': [('quality_state', '!=', 'fail')]}"
<button name="do_fail" type="object" attrs="{'invisible': [('quality_state', '!=', 'pass')]}" groups="quality.group_quality_manager" string="Fail" data-hotkey="w"/> groups="quality.group_quality_manager" string="Pass" data-hotkey="q"/>
<button name="do_measure" type="object" attrs="{'invisible': ['|', ('test_type', '!=', 'measure'), ('quality_state', '!=', 'none')]}" string="Measure" data-hotkey="v"/> <button name="do_fail" type="object" class="btn-primary"
<button name="do_alert" type="object" attrs="{'invisible': ['|', ('alert_ids', '!=', []), ('quality_state', '!=', 'pass')]}" string="Create Alert" data-hotkey="g"/> attrs="{'invisible': [('quality_state', '!=', 'none')]}" string="Fail" data-hotkey="w"/>
<button name="do_alert" type="object" class="btn-primary" attrs="{'invisible': ['|', ('alert_ids', '!=', []), ('quality_state', '!=', 'fail')]}" string="Create Alert" data-hotkey="g"/> <button name="do_fail" type="object" attrs="{'invisible': [('quality_state', '!=', 'pass')]}"
groups="quality.group_quality_manager" string="Fail" data-hotkey="w"/>
<button name="do_measure" type="object"
attrs="{'invisible': ['|', ('test_type', '!=', 'measure'), ('quality_state', '!=', 'none')]}"
string="Measure" data-hotkey="v"/>
<button name="do_alert" type="object"
attrs="{'invisible': ['|', ('alert_ids', '!=', []), ('quality_state', '!=', 'pass')]}"
string="Create Alert" data-hotkey="g"/>
<button name="do_alert" type="object" class="btn-primary"
attrs="{'invisible': ['|', ('alert_ids', '!=', []), ('quality_state', '!=', 'fail')]}"
string="Create Alert" data-hotkey="g"/>
<field name="quality_state" widget="statusbar"/> <field name="quality_state" widget="statusbar"/>
</header> </header>
<sheet> <sheet>
<div class="oe_button_box" name="button_box"> <div class="oe_button_box" name="button_box">
<button name="action_see_alerts" icon="fa-bell" type="object" class="oe_stat_button" attrs="{'invisible': [('alert_count', '=', 0)]}"> <button name="action_see_alerts" icon="fa-bell" type="object" class="oe_stat_button"
attrs="{'invisible': [('alert_count', '=', 0)]}">
<field name="alert_count" string="Alerts" widget="statinfo"/> <field name="alert_count" string="Alerts" widget="statinfo"/>
</button> </button>
</div> </div>
@@ -242,21 +264,27 @@
<field name="move_line_id" invisible="1"/> <field name="move_line_id" invisible="1"/>
<field name="product_tracking" invisible="1"/> <field name="product_tracking" invisible="1"/>
<field name="is_lot_tested_fractionally" invisible="1"/> <field name="is_lot_tested_fractionally" invisible="1"/>
<field name="lot_name" attrs="{'invisible': ['|', ('product_tracking', '=', 'none'), '|', ('show_lot_text', '=', False), '|', ('measure_on', '!=', 'move_line'), ('move_line_id', '=', False)]}"/> <field name="lot_name"
<field name="lot_id" attrs="{'invisible': ['|', ('product_tracking', '=', 'none'), '|', ('show_lot_text', '=', True), ('measure_on', '!=', 'move_line')]}"/> attrs="{'invisible': ['|', ('product_tracking', '=', 'none'), '|', ('show_lot_text', '=', False), '|', ('measure_on', '!=', 'move_line'), ('move_line_id', '=', False)]}"/>
<field name="lot_id"
attrs="{'invisible': ['|', ('product_tracking', '=', 'none'), '|', ('show_lot_text', '=', True), ('measure_on', '!=', 'move_line')]}"/>
<label for="qty_line" attrs="{'invisible': [('move_line_id', '=', False)]}"/> <label for="qty_line" attrs="{'invisible': [('move_line_id', '=', False)]}"/>
<div class="o_row" attrs="{'invisible': [('move_line_id', '=', False)]}"> <div class="o_row" attrs="{'invisible': [('move_line_id', '=', False)]}">
<field name="qty_line"/> <field name="qty_line"/>
<field name="uom_id"/> <field name="uom_id"/>
</div> </div>
<label for="qty_to_test" attrs="{'invisible': ['|', ('move_line_id', '=', False), '|', ('measure_on', '!=', 'move_line'), ('is_lot_tested_fractionally', '=', False)]}"/> <label for="qty_to_test"
<div class="o_row" attrs="{'invisible': ['|', ('move_line_id', '=', False), '|', ('measure_on', '!=', 'move_line'), ('is_lot_tested_fractionally', '=', False)]}"> attrs="{'invisible': ['|', ('move_line_id', '=', False), '|', ('measure_on', '!=', 'move_line'), ('is_lot_tested_fractionally', '=', False)]}"/>
<field name="qty_to_test"/> <div class="o_row"
attrs="{'invisible': ['|', ('move_line_id', '=', False), '|', ('measure_on', '!=', 'move_line'), ('is_lot_tested_fractionally', '=', False)]}">
<field name="qty_to_test"/>
<field name="uom_id"/> <field name="uom_id"/>
</div> </div>
<label for="qty_tested" attrs="{'invisible': ['|', ('measure_on', '!=', 'move_line'), ('is_lot_tested_fractionally', '=', False)]}"/> <label for="qty_tested"
<div class="o_row" attrs="{'invisible': ['|', ('measure_on', '!=', 'move_line'), ('is_lot_tested_fractionally', '=', False)]}"> attrs="{'invisible': ['|', ('measure_on', '!=', 'move_line'), ('is_lot_tested_fractionally', '=', False)]}"/>
<field name="qty_tested" attrs="{'readonly': [('quality_state', '!=', 'none')]}"/> <div class="o_row"
attrs="{'invisible': ['|', ('measure_on', '!=', 'move_line'), ('is_lot_tested_fractionally', '=', False)]}">
<field name="qty_tested" attrs="{'readonly': [('quality_state', '!=', 'none')]}"/>
<field name="uom_id"/> <field name="uom_id"/>
</div> </div>
<field name="test_type" invisible="1"/> <field name="test_type" invisible="1"/>
@@ -264,26 +292,32 @@
<field name="alert_ids" invisible="1"/> <field name="alert_ids" invisible="1"/>
</group> </group>
<group> <group>
<field name="picking_id" attrs="{'invisible': [('quality_state', 'in', ('pass', 'fail')), ('picking_id', '=', False)]}"/> <field name="picking_id"
attrs="{'invisible': [('quality_state', 'in', ('pass', 'fail')), ('picking_id', '=', False)]}"/>
<field name="point_id"/> <field name="point_id"/>
<field string="Type" name="test_type_id" options="{'no_open': True, 'no_create': True}" attrs="{'readonly': [('point_id', '!=', False)]}"/> <field string="Type" name="test_type_id" options="{'no_open': True, 'no_create': True}"
attrs="{'readonly': [('point_id', '!=', False)]}"/>
<field name="control_date" invisible="1"/> <field name="control_date" invisible="1"/>
<field name="team_id"/> <field name="team_id"/>
<field name="company_id" groups="base.group_multi_company"/> <field name="company_id" groups="base.group_multi_company"/>
<field name="user_id" string="Control Person" invisible="1"/> <field name="user_id" string="Control Person" invisible="1"/>
<field name="partner_id" string="Partner" attrs="{'invisible': [('partner_id', '=', False)]}"/> <field name="partner_id" string="Partner"
attrs="{'invisible': [('partner_id', '=', False)]}"/>
</group> </group>
</group> </group>
<group attrs="{'invisible': [('test_type', '!=', 'picture')]}"> <group attrs="{'invisible': [('test_type', '!=', 'picture')]}">
<field name="picture" widget="image"/> <field name="picture" widget="image"/>
</group> </group>
<notebook> <notebook>
<page string="Notes" name="notes"> <page string="Notes" name="notes">
<group> <group>
<field string="Instructions" name="note"/> <field name="report_result"/>
<field string="Notes" name="additional_note"/> <field name="report_pdf" widget="pdf_viewer"/>
</group> <field string="Instructions" name="note"/>
</page> <field string="Notes" name="additional_note"/>
</group>
</page>
</notebook> </notebook>
</sheet> </sheet>
<div class="oe_chatter"> <div class="oe_chatter">
@@ -311,18 +345,30 @@
<div t-attf-class="oe_kanban_card oe_kanban_global_click"> <div t-attf-class="oe_kanban_card oe_kanban_global_click">
<div class="row"> <div class="row">
<div class="col-6"> <div class="col-6">
<strong><span><t t-esc="record.name.value"/></span></strong> <strong>
<span>
<t t-esc="record.name.value"/>
</span>
</strong>
</div> </div>
<div class="col-6"> <div class="col-6">
<strong><span t-attf-class="float-end text-end badge #{['none'].indexOf(record.quality_state.raw_value) > -1 ? 'text-bg-secondary' : ['fail'].indexOf(record.quality_state.raw_value) > -1 ? 'text-bg-danger' : ['done'].indexOf(record.quality_state.raw_value) > -1 ? 'text-bg-primary' : 'text-bg-success'}"><t t-esc="record.quality_state.value"/></span></strong> <strong>
<span t-attf-class="float-end text-end badge #{['none'].indexOf(record.quality_state.raw_value) > -1 ? 'text-bg-secondary' : ['fail'].indexOf(record.quality_state.raw_value) > -1 ? 'text-bg-danger' : ['done'].indexOf(record.quality_state.raw_value) > -1 ? 'text-bg-primary' : 'text-bg-success'}">
<t t-esc="record.quality_state.value"/>
</span>
</strong>
</div> </div>
</div> </div>
<div class="row text-muted"> <div class="row text-muted">
<div class="col-8"> <div class="col-8">
<span><t t-esc="record.product_id.value"/></span> <span>
<t t-esc="record.product_id.value"/>
</span>
</div> </div>
<div class="col-4"> <div class="col-4">
<span><t t-esc="record.lot_id.value"/></span> <span>
<t t-esc="record.lot_id.value"/>
</span>
</div> </div>
</div> </div>
<div class="oe_kanban_bottom_right float-end"> <div class="oe_kanban_bottom_right float-end">
@@ -350,7 +396,8 @@
<field name="user_id" string="Checked By" optional="show" widget='many2one_avatar_user'/> <field name="user_id" string="Checked By" optional="show" widget='many2one_avatar_user'/>
<field name="point_id" optional="hide"/> <field name="point_id" optional="hide"/>
<field name="team_id" optional="show"/> <field name="team_id" optional="show"/>
<field name="quality_state" optional="show" widget='badge' decoration-success="quality_state == 'pass'" decoration-info="quality_state == 'none'" decoration-danger="quality_state == 'fail'"/> <field name="quality_state" optional="show" widget='badge' decoration-success="quality_state == 'pass'"
decoration-info="quality_state == 'none'" decoration-danger="quality_state == 'fail'"/>
<field name="company_id" groups="base.main_company"/> <field name="company_id" groups="base.main_company"/>
</tree> </tree>
</field> </field>
@@ -368,14 +415,14 @@
</record> </record>
<record id="quality_check_view_pivot" model="ir.ui.view"> <record id="quality_check_view_pivot" model="ir.ui.view">
<field name="name">quality.check.view.pivot</field> <field name="name">quality.check.view.pivot</field>
<field name="model">quality.check</field> <field name="model">quality.check</field>
<field name="arch" type="xml"> <field name="arch" type="xml">
<pivot string="Quality Check Analysis" sample="1"> <pivot string="Quality Check Analysis" sample="1">
<field name="control_date" type="col" interval="day"/> <field name="control_date" type="col" interval="day"/>
<field name="product_id" type="row"/> <field name="product_id" type="row"/>
</pivot> </pivot>
</field> </field>
</record> </record>
<record id="quality_check_view_search" model="ir.ui.view"> <record id="quality_check_view_search" model="ir.ui.view">
@@ -383,7 +430,8 @@
<field name="model">quality.check</field> <field name="model">quality.check</field>
<field name="arch" type="xml"> <field name="arch" type="xml">
<search> <search>
<field name="product_id" string="Product" filter_domain="['|', ('product_id', 'ilike', self), ('lot_id', 'ilike', self)]"/> <field name="product_id" string="Product"
filter_domain="['|', ('product_id', 'ilike', self), ('lot_id', 'ilike', self)]"/>
<field name="picking_id"/> <field name="picking_id"/>
<field name="lot_id"/> <field name="lot_id"/>
<field name="team_id"/> <field name="team_id"/>
@@ -426,10 +474,11 @@
</field> </field>
<field name="help" type="html"> <field name="help" type="html">
<p class="o_view_nocontent_smiling_face"> <p class="o_view_nocontent_smiling_face">
No quality check found No quality check found
</p><p> </p>
Define Quality Control Points in order to automatically generate <p>
quality checks at the right logistic operation: transfers, manufacturing orders. Define Quality Control Points in order to automatically generate
quality checks at the right logistic operation: transfers, manufacturing orders.
</p> </p>
</field> </field>
</record> </record>
@@ -458,10 +507,11 @@
<field name="view_mode">tree,kanban,form,pivot,graph</field> <field name="view_mode">tree,kanban,form,pivot,graph</field>
<field name="help" type="html"> <field name="help" type="html">
<p class="o_view_nocontent_smiling_face"> <p class="o_view_nocontent_smiling_face">
No quality check found No quality check found
</p><p> </p>
Define Quality Control Points in order to automatically generate <p>
quality checks at the right logistic operation: transfers, manufacturing orders. Define Quality Control Points in order to automatically generate
quality checks at the right logistic operation: transfers, manufacturing orders.
</p> </p>
</field> </field>
</record> </record>
@@ -485,17 +535,25 @@
<field name="inherit_id" ref="stock.product_template_form_view_procurement_button"/> <field name="inherit_id" ref="stock.product_template_form_view_procurement_button"/>
<field name="arch" type="xml"> <field name="arch" type="xml">
<xpath expr="//button[@name='action_view_related_putaway_rules']" position="after"> <xpath expr="//button[@name='action_view_related_putaway_rules']" position="after">
<button name="action_see_quality_control_points" type="object" class="oe_stat_button" icon="fa-list" attrs="{'invisible':[('type', 'not in', ['product', 'consu'])]}" groups="quality.group_quality_user"> <button name="action_see_quality_control_points" type="object" class="oe_stat_button" icon="fa-list"
attrs="{'invisible':[('type', 'not in', ['product', 'consu'])]}"
groups="quality.group_quality_user">
<field string="Quality Points" name="quality_control_point_qty" widget="statinfo"/> <field string="Quality Points" name="quality_control_point_qty" widget="statinfo"/>
</button> </button>
<button name="action_see_quality_checks" type="object" class="oe_stat_button" icon="fa-check" attrs="{'invisible':['|', ('type', 'not in', ['product', 'consu']), ('quality_pass_qty', '=', 0),('quality_fail_qty', '=', 0)]}" groups="quality.group_quality_user"> <button name="action_see_quality_checks" type="object" class="oe_stat_button" icon="fa-check"
attrs="{'invisible':['|', ('type', 'not in', ['product', 'consu']), ('quality_pass_qty', '=', 0),('quality_fail_qty', '=', 0)]}"
groups="quality.group_quality_user">
<div class="o_field_widget o_stat_info mr4"> <div class="o_field_widget o_stat_info mr4">
<span class="o_stat_text">Pass:</span> <span class="o_stat_text">Pass:</span>
<span class="o_stat_text">Fail:</span> <span class="o_stat_text">Fail:</span>
</div> </div>
<div class="o_field_widget o_stat_info"> <div class="o_field_widget o_stat_info">
<span class="o_stat_value"><field name="quality_pass_qty"/></span> <span class="o_stat_value">
<span class="o_stat_value"><field name="quality_fail_qty"/></span> <field name="quality_pass_qty"/>
</span>
<span class="o_stat_value">
<field name="quality_fail_qty"/>
</span>
</div> </div>
</button> </button>
</xpath> </xpath>
@@ -509,17 +567,25 @@
<field name="inherit_id" ref="stock.product_form_view_procurement_button"/> <field name="inherit_id" ref="stock.product_form_view_procurement_button"/>
<field name="arch" type="xml"> <field name="arch" type="xml">
<xpath expr="//button[@name='action_view_related_putaway_rules']" position="after"> <xpath expr="//button[@name='action_view_related_putaway_rules']" position="after">
<button name="action_see_quality_control_points" type="object" icon="fa-list" class="oe_stat_button" attrs="{'invisible':[('type', 'not in', ['product', 'consu'])]}" groups="quality.group_quality_user"> <button name="action_see_quality_control_points" type="object" icon="fa-list" class="oe_stat_button"
attrs="{'invisible':[('type', 'not in', ['product', 'consu'])]}"
groups="quality.group_quality_user">
<field string="Quality Points" name="quality_control_point_qty" widget="statinfo"/> <field string="Quality Points" name="quality_control_point_qty" widget="statinfo"/>
</button> </button>
<button name="action_see_quality_checks" type="object" class="oe_stat_button" icon="fa-check" groups="quality.group_quality_user" attrs="{'invisible':[ ('quality_pass_qty', '=', 0),('quality_fail_qty', '=', 0)]}" > <button name="action_see_quality_checks" type="object" class="oe_stat_button" icon="fa-check"
groups="quality.group_quality_user"
attrs="{'invisible':[ ('quality_pass_qty', '=', 0),('quality_fail_qty', '=', 0)]}">
<div class="o_field_widget o_stat_info mr4"> <div class="o_field_widget o_stat_info mr4">
<span class="o_stat_text">Pass:</span> <span class="o_stat_text">Pass:</span>
<span class="o_stat_text">Fail:</span> <span class="o_stat_text">Fail:</span>
</div> </div>
<div class="o_field_widget o_stat_info"> <div class="o_field_widget o_stat_info">
<span class="o_stat_value"><field name="quality_pass_qty"/></span> <span class="o_stat_value">
<span class="o_stat_value"><field name="quality_fail_qty"/></span> <field name="quality_pass_qty"/>
</span>
<span class="o_stat_value">
<field name="quality_fail_qty"/>
</span>
</div> </div>
</button> </button>
</xpath> </xpath>
@@ -533,8 +599,8 @@
<field name="arch" type="xml"> <field name="arch" type="xml">
<xpath expr="//div[@name='button_box']" position="inside"> <xpath expr="//div[@name='button_box']" position="inside">
<button name="%(quality_check_action_production_lot)d" type="action" <button name="%(quality_check_action_production_lot)d" type="action"
attrs="{'invisible': [('quality_check_qty', '=', 0)]}" attrs="{'invisible': [('quality_check_qty', '=', 0)]}"
icon="fa-check" class="oe_stat_button" groups="quality.group_quality_user"> icon="fa-check" class="oe_stat_button" groups="quality.group_quality_user">
<field string="Quality Checks" name="quality_check_qty" widget="statinfo"/> <field string="Quality Checks" name="quality_check_qty" widget="statinfo"/>
</button> </button>
</xpath> </xpath>
@@ -557,24 +623,36 @@
<templates> <templates>
<t t-name="kanban-box"> <t t-name="kanban-box">
<div t-attf-class="#{kanban_color(record.color.raw_value)}"> <div t-attf-class="#{kanban_color(record.color.raw_value)}">
<span class="oe_kanban_color_help" t-attf-title="In #{kanban_getcolorname(record.color.raw_value)}" role="img" t-attf-aria-label="In #{kanban_getcolorname(record.color.raw_value)}"/> <span class="oe_kanban_color_help"
t-attf-title="In #{kanban_getcolorname(record.color.raw_value)}" role="img"
t-attf-aria-label="In #{kanban_getcolorname(record.color.raw_value)}"/>
<div t-attf-class="o_kanban_card_header"> <div t-attf-class="o_kanban_card_header">
<div class="o_kanban_card_header_title"> <div class="o_kanban_card_header_title">
<div class="o_primary"><field name="name"/></div> <div class="o_primary">
<field name="name"/>
</div>
<div t-if="record.alias_name.value and record.alias_domain.value"> <div t-if="record.alias_name.value and record.alias_domain.value">
<small><i class="fa fa-envelope-o" role="img" aria-label="Domain alias" title="Domain alias"></i>&amp;nbsp; <field name="alias_id"/></small> <small><i class="fa fa-envelope-o" role="img" aria-label="Domain alias"
title="Domain alias"></i>&amp;nbsp;
<field name="alias_id"/>
</small>
</div> </div>
</div> </div>
</div> </div>
<div class="container o_kanban_card_content"> <div class="container o_kanban_card_content">
<div class="row"> <div class="row">
<div class="col-6 o_kanban_primary_left"> <div class="col-6 o_kanban_primary_left">
<button class="btn btn-primary" name="%(quality_alert_action_team)d" type="action"> <button class="btn btn-primary" name="%(quality_alert_action_team)d"
<span><field name="alert_count"/> Quality Alerts</span> type="action">
<span>
<field name="alert_count"/>
Quality Alerts
</span>
</button> </button>
</div> </div>
<div class="col-6 o_kanban_primary_right"> <div class="col-6 o_kanban_primary_right">
<a class="oe_kanban_stock_picking_type_list" name="%(quality_check_action_team)d" type="action"> <a class="oe_kanban_stock_picking_type_list"
name="%(quality_check_action_team)d" type="action">
<field name="check_count"/> <field name="check_count"/>
Checks In Progress Checks In Progress
</a> </a>
@@ -585,11 +663,14 @@
<div t-if="widget.editable" role="menuitem"> <div t-if="widget.editable" role="menuitem">
<a class="dropdown-item ps-0" type="edit">Configuration</a> <a class="dropdown-item ps-0" type="edit">Configuration</a>
</div> </div>
<div t-if="widget.editable" role="menuitem" aria-haspopup="true" class="o_no_padding_kanban_colorpicker"> <div t-if="widget.editable" role="menuitem" aria-haspopup="true"
class="o_no_padding_kanban_colorpicker">
<ul class="oe_kanban_colorpicker" data-field="color" role="popup"/> <ul class="oe_kanban_colorpicker" data-field="color" role="popup"/>
</div> </div>
</div> </div>
<a class="o_kanban_manage_toggle_button o_left" href="#"><i class="fa fa-ellipsis-v" role="img" aria-label="Manage" title="Manage"/></a> <a class="o_kanban_manage_toggle_button o_left" href="#">
<i class="fa fa-ellipsis-v" role="img" aria-label="Manage" title="Manage"/>
</a>
</div> </div>
</t> </t>
</templates> </templates>
@@ -615,13 +696,14 @@
<label for="alias_name" string="Email Alias"/> <label for="alias_name" string="Email Alias"/>
<div name="alias_def"> <div name="alias_def">
<field name="alias_id" class="oe_read_only oe_inline" <field name="alias_id" class="oe_read_only oe_inline"
string="Email Alias" required="0"/> string="Email Alias" required="0"/>
<div class="oe_edit_only oe_inline" name="edit_alias" style="display: inline;" > <div class="oe_edit_only oe_inline" name="edit_alias" style="display: inline;">
<field name="alias_name" class="oe_inline"/>@<field name="alias_domain" class="oe_inline" readonly="1"/> <field name="alias_name" class="oe_inline"/>@
<field name="alias_domain" class="oe_inline" readonly="1"/>
</div> </div>
</div> </div>
<field name="alias_contact" class="oe_inline" groups="base.group_no_one" <field name="alias_contact" class="oe_inline" groups="base.group_no_one"
string="Accept Emails From"/> string="Accept Emails From"/>
</group> </group>
<group> <group>
<field name="company_id" groups="base.group_multi_company"/> <field name="company_id" groups="base.group_multi_company"/>
@@ -658,7 +740,9 @@
<div t-attf-class="oe_kanban_content oe_kanban_global_click"> <div t-attf-class="oe_kanban_content oe_kanban_global_click">
<div class="row"> <div class="row">
<div class="col-12"> <div class="col-12">
<strong><field name="name"/></strong> <strong>
<field name="name"/>
</strong>
</div> </div>
</div> </div>
</div> </div>
@@ -672,14 +756,15 @@
<field name="name">Quality Overview</field> <field name="name">Quality Overview</field>
<field name="res_model">quality.alert.team</field> <field name="res_model">quality.alert.team</field>
<field name="view_mode">kanban,form</field> <field name="view_mode">kanban,form</field>
<field name="view_id" ref="quality_alert_team_dashboard_view_kanban" /> <field name="view_id" ref="quality_alert_team_dashboard_view_kanban"/>
<field name="help" type="html"> <field name="help" type="html">
<p class="o_view_nocontent_empty_folder"> <p class="o_view_nocontent_empty_folder">
</p><p>
Quality Teams group the different quality alerts/checks
according to the roles (teams) that need them.
</p> </p>
</field> <p>
Quality Teams group the different quality alerts/checks
according to the roles (teams) that need them.
</p>
</field>
</record> </record>
<record id="quality_alert_team_action_config" model="ir.actions.act_window"> <record id="quality_alert_team_action_config" model="ir.actions.act_window">
@@ -716,9 +801,9 @@
<field name="res_model">quality.tag</field> <field name="res_model">quality.tag</field>
<field name="view_mode">tree,form</field> <field name="view_mode">tree,form</field>
<field name="help" type="html"> <field name="help" type="html">
<p class="o_view_nocontent_smiling_face"> <p class="o_view_nocontent_smiling_face">
Add a new tag Add a new tag
</p> </p>
</field> </field>
</record> </record>
@@ -747,7 +832,9 @@
<t t-name="kanban-box"> <t t-name="kanban-box">
<div t-attf-class="oe_kanban_global_click"> <div t-attf-class="oe_kanban_global_click">
<div> <div>
<strong><field name="name"/></strong> <strong>
<field name="name"/>
</strong>
</div> </div>
</div> </div>
</t> </t>
@@ -763,8 +850,9 @@
<field name="help" type="html"> <field name="help" type="html">
<p class="o_view_nocontent_smiling_face"> <p class="o_view_nocontent_smiling_face">
Create a new quality alert stage Create a new quality alert stage
</p><p> </p>
Quality Alert stages define the different steps a quality alert should go through. <p>
Quality Alert stages define the different steps a quality alert should go through.
</p> </p>
</field> </field>
</record> </record>
@@ -816,9 +904,19 @@
<templates> <templates>
<t t-name="kanban-box"> <t t-name="kanban-box">
<div t-attf-class="oe_kanban_card oe_kanban_global_click"> <div t-attf-class="oe_kanban_card oe_kanban_global_click">
<div><strong><t t-esc="record.name.value"/></strong></div> <div>
<div><strong>Products :</strong> <t t-esc="record.product_ids.value"/></div> <strong>
<div><strong>Operations :</strong> <t t-esc="record.picking_type_ids.value"/></div> <t t-esc="record.name.value"/>
</strong>
</div>
<div>
<strong>Products :</strong>
<t t-esc="record.product_ids.value"/>
</div>
<div>
<strong>Operations :</strong>
<t t-esc="record.picking_type_ids.value"/>
</div>
</div> </div>
</t> </t>
</templates> </templates>
@@ -836,39 +934,54 @@
<field string="Quality Checks" name="check_count" widget="statinfo"/> <field string="Quality Checks" name="check_count" widget="statinfo"/>
</button> </button>
<button name="action_see_spc_control" type="object" class="oe_stat_button" <button name="action_see_spc_control" type="object" class="oe_stat_button"
attrs="{'invisible': ['|', ('check_count', '=', 0), ('test_type', '!=', 'measure')]}"> attrs="{'invisible': ['|', ('check_count', '=', 0), ('test_type', '!=', 'measure')]}">
<span class="fa fa-2x" data-icon="&#x2211;" style="padding-left: 10px;" role="img" aria-label="Statistics" title="Statistics"/> <span class="fa fa-2x" data-icon="&#x2211;" style="padding-left: 10px;" role="img"
aria-label="Statistics" title="Statistics"/>
<div class="o_field_widget o_stat_info mr4"> <div class="o_field_widget o_stat_info mr4">
<span class="o_stat_text">AVG:</span> <span class="o_stat_text">AVG:</span>
<span class="o_stat_text">STD:</span> <span class="o_stat_text">STD:</span>
</div> </div>
<div class="o_field_widget o_stat_info"> <div class="o_field_widget o_stat_info">
<span class="o_stat_value"><field name="average"/></span> <span class="o_stat_value">
<span class="o_stat_value"><field name="standard_deviation"/></span> <field name="average"/>
</span>
<span class="o_stat_value">
<field name="standard_deviation"/>
</span>
</div> </div>
</button> </button>
</xpath> </xpath>
<xpath expr="//page[@name='instructions']" position="after"> <xpath expr="//page[@name='instructions']" position="after">
<page string="Message If Failure" name="message_if_failure" <page string="Message If Failure" name="message_if_failure"
attrs="{'invisible': [('test_type', 'in', ['picture', 'instructions', 'register_consumed_materials', 'print_label'])]}"> attrs="{'invisible': [('test_type', 'in', ['picture', 'instructions', 'register_consumed_materials', 'print_label'])]}">
<field name="failure_message"/> <field name="failure_message"/>
</page> </page>
</xpath> </xpath>
<xpath expr="//field[@name='test_type']" position="before"> <xpath expr="//field[@name='test_type']" position="before">
<field name="measure_on"/> <field name="measure_on"/>
<field name="measure_frequency_type" string="Control Frequency"/> <field name="measure_frequency_type" string="Control Frequency"/>
<label for="measure_frequency_value" string="" attrs="{'invisible': [('measure_frequency_type', '=', 'all')]}"/> <label for="measure_frequency_value" string=""
attrs="{'invisible': [('measure_frequency_type', '=', 'all')]}"/>
<div class="o_row" attrs="{'invisible': [('measure_frequency_type', '=', 'all')]}"> <div class="o_row" attrs="{'invisible': [('measure_frequency_type', '=', 'all')]}">
<span attrs="{'invisible': [('measure_frequency_type', '=', 'all')]}">Every </span> <span attrs="{'invisible': [('measure_frequency_type', '=', 'all')]}">Every</span>
<field name="measure_frequency_value" nolabel="1" attrs="{'invisible': [('measure_frequency_type', '!=', 'random')]}"/> <field name="measure_frequency_value" nolabel="1"
<label for="measure_frequency_value" string="% of Operations" attrs="{'invisible': ['|', ('measure_on', '=', 'move_line'), ('measure_frequency_type', '!=', 'random')]}"/> attrs="{'invisible': [('measure_frequency_type', '!=', 'random')]}"/>
<label for="measure_frequency_value" string="% of Transfers" attrs="{'invisible': ['|', ('measure_on', '!=', 'move_line'), ('measure_frequency_type', '!=', 'random')]}"/> <label for="measure_frequency_value" string="% of Operations"
<field name="measure_frequency_unit_value" string="Frequency" nolabel="1" attrs="{'invisible': [('measure_frequency_type', '!=', 'periodical')]}"/> attrs="{'invisible': ['|', ('measure_on', '=', 'move_line'), ('measure_frequency_type', '!=', 'random')]}"/>
<field name="measure_frequency_unit" attrs="{'invisible': [('measure_frequency_type', '!=', 'periodical')], 'required': [('measure_frequency_type', '=', 'periodical')]}"/> <label for="measure_frequency_value" string="% of Transfers"
attrs="{'invisible': ['|', ('measure_on', '!=', 'move_line'), ('measure_frequency_type', '!=', 'random')]}"/>
<field name="measure_frequency_unit_value" string="Frequency" nolabel="1"
attrs="{'invisible': [('measure_frequency_type', '!=', 'periodical')]}"/>
<field name="measure_frequency_unit"
attrs="{'invisible': [('measure_frequency_type', '!=', 'periodical')], 'required': [('measure_frequency_type', '=', 'periodical')]}"/>
</div> </div>
<field name="is_lot_tested_fractionally" attrs="{'invisible': [('measure_on', '!=', 'move_line')]}" string="Partial Transfer Test"/> <field name="is_lot_tested_fractionally" attrs="{'invisible': [('measure_on', '!=', 'move_line')]}"
<label for="testing_percentage_within_lot" attrs="{'invisible': ['|', ('measure_on', '!=', 'move_line'), ('is_lot_tested_fractionally', '!=', True)]}" string="Percentage"/> string="Partial Transfer Test"/>
<div class="o_row" attrs="{'invisible': ['|', ('measure_on', '!=', 'move_line'), ('is_lot_tested_fractionally', '!=', True)]}"> <label for="testing_percentage_within_lot"
attrs="{'invisible': ['|', ('measure_on', '!=', 'move_line'), ('is_lot_tested_fractionally', '!=', True)]}"
string="Percentage"/>
<div class="o_row"
attrs="{'invisible': ['|', ('measure_on', '!=', 'move_line'), ('is_lot_tested_fractionally', '!=', True)]}">
<field name="testing_percentage_within_lot" nolabel="1"/> <field name="testing_percentage_within_lot" nolabel="1"/>
<label for="testing_percentage_within_lot" string="%"/> <label for="testing_percentage_within_lot" string="%"/>
</div> </div>
@@ -877,12 +990,15 @@
<label for="norm" attrs="{'invisible': [('test_type', '!=', 'measure')]}"/> <label for="norm" attrs="{'invisible': [('test_type', '!=', 'measure')]}"/>
<div class="o_row" attrs="{'invisible': [('test_type', '!=', 'measure')]}"> <div class="o_row" attrs="{'invisible': [('test_type', '!=', 'measure')]}">
<field name="norm" attrs="{'required': [('test_type', '=', 'measure')]}"/> <field name="norm" attrs="{'required': [('test_type', '=', 'measure')]}"/>
<field name="norm_unit" string="Unit of Measure" attrs="{'required': [('test_type', '=', 'measure')]}"/> <field name="norm_unit" string="Unit of Measure"
attrs="{'required': [('test_type', '=', 'measure')]}"/>
</div> </div>
<label for="tolerance_min" string="Tolerance" attrs="{'invisible': [('test_type', '!=', 'measure')]}"/> <label for="tolerance_min" string="Tolerance" attrs="{'invisible': [('test_type', '!=', 'measure')]}"/>
<div attrs="{'invisible': [('test_type', '!=', 'measure')]}" class="o_row"> <div attrs="{'invisible': [('test_type', '!=', 'measure')]}" class="o_row">
<span>from </span> <field name="tolerance_min"/> <span>from</span>
<span>to </span> <field name="tolerance_max"/> <field name="tolerance_min"/>
<span>to</span>
<field name="tolerance_max"/>
</div> </div>
</xpath> </xpath>
</field> </field>
@@ -895,95 +1011,96 @@
<field name="search_view_id" ref="quality_point_view_search"/> <field name="search_view_id" ref="quality_point_view_search"/>
<field name="help" type="html"> <field name="help" type="html">
<p class="o_view_nocontent_smiling_face"> <p class="o_view_nocontent_smiling_face">
No quality control point found No quality control point found
</p><p> </p>
Quality control points define the quality checks which should be <p>
performed at each operation, for your different products. Quality control points define the quality checks which should be
performed at each operation, for your different products.
</p> </p>
</field> </field>
</record> </record>
<!-- Menu structure--> <!-- Menu structure-->
<menuitem <menuitem
id="menu_quality_root" id="menu_quality_root"
name="Quality" name="Quality"
web_icon="quality_control,static/description/icon.svg" web_icon="quality_control,static/description/icon.svg"
sequence="150" sequence="150"
groups="quality.group_quality_user"/> groups="quality.group_quality_user"/>
<menuitem <menuitem
id="menu_quality_dashboard" id="menu_quality_dashboard"
name="Overview" name="Overview"
action="quality_alert_team_action" action="quality_alert_team_action"
parent="menu_quality_root" parent="menu_quality_root"
sequence="5"/> sequence="5"/>
<menuitem <menuitem
id="menu_quality_control" id="menu_quality_control"
name="Quality Control" name="Quality Control"
parent="menu_quality_root" parent="menu_quality_root"
sequence="15"/> sequence="15"/>
<menuitem <menuitem
id="menu_quality_control_points" id="menu_quality_control_points"
name="Control Points" name="Control Points"
parent="menu_quality_control" parent="menu_quality_control"
action="quality_point_action" action="quality_point_action"
groups="quality.group_quality_manager" groups="quality.group_quality_manager"
sequence="17"/> sequence="17"/>
<menuitem <menuitem
id="menu_quality_checks" id="menu_quality_checks"
name="Quality Checks" name="Quality Checks"
action="quality_check_action_main" action="quality_check_action_main"
parent="menu_quality_control" parent="menu_quality_control"
sequence="18"/> sequence="18"/>
<menuitem <menuitem
id="menu_quality_alert" id="menu_quality_alert"
name="Quality Alerts" name="Quality Alerts"
action="quality_alert_action_check" action="quality_alert_action_check"
parent="menu_quality_control" parent="menu_quality_control"
sequence="20"/> sequence="20"/>
<menuitem <menuitem
id="menu_quality_configuration" id="menu_quality_configuration"
name="Configuration" name="Configuration"
groups="quality.group_quality_manager" groups="quality.group_quality_manager"
parent="menu_quality_root" parent="menu_quality_root"
sequence="25"/> sequence="25"/>
<menuitem <menuitem
id="menu_quality_config_alert_team" id="menu_quality_config_alert_team"
name="Quality Teams" name="Quality Teams"
action="quality_alert_team_action_config" action="quality_alert_team_action_config"
parent="menu_quality_configuration" parent="menu_quality_configuration"
sequence="5"/> sequence="5"/>
<menuitem <menuitem
id="menu_quality_config_alert_stage" id="menu_quality_config_alert_stage"
name="Quality Alert Stages" name="Quality Alert Stages"
action="quality_alert_stage_action" action="quality_alert_stage_action"
parent="menu_quality_configuration" parent="menu_quality_configuration"
groups="base.group_no_one" groups="base.group_no_one"
sequence="15"/> sequence="15"/>
<menuitem <menuitem
id="menu_config_quality_tags" id="menu_config_quality_tags"
name="Quality Tags" name="Quality Tags"
groups="base.group_no_one" groups="base.group_no_one"
action="quality_tag_action" action="quality_tag_action"
parent="menu_quality_configuration" parent="menu_quality_configuration"
sequence="25"/> sequence="25"/>
<menuitem <menuitem
id="menu_quality_reporting" id="menu_quality_reporting"
name="Reporting" name="Reporting"
groups="quality.group_quality_manager" groups="quality.group_quality_manager"
parent="menu_quality_root" parent="menu_quality_root"
sequence="20"/> sequence="20"/>
<menuitem <menuitem
id="menu_quality_alert_report" id="menu_quality_alert_report"
action="quality_alert_action_report" action="quality_alert_action_report"
parent="menu_quality_reporting" parent="menu_quality_reporting"
sequence="6"/> sequence="6"/>
<menuitem <menuitem
id="menu_quality_check_report" id="menu_quality_check_report"
action="quality_check_action_report" action="quality_check_action_report"
parent="menu_quality_reporting" parent="menu_quality_reporting"
sequence="5"/> sequence="5"/>
</odoo> </odoo>

View File

@@ -1,5 +1,5 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
import time import time, datetime
import hashlib import hashlib
from odoo import models from odoo import models

View File

@@ -189,9 +189,9 @@ class MaintenanceStandardImage(models.Model):
('压紧方式', '压紧方式'), ('刀片形状', '刀片形状'), ('冷却方式', '冷却方式')], ('压紧方式', '压紧方式'), ('刀片形状', '刀片形状'), ('冷却方式', '冷却方式')],
string='特征') string='特征')
equipment_id = fields.Many2many('maintenance.equipment', 'image_id', string='设备') equipment_id = fields.Many2many('maintenance.equipment', 'image_id', string='设备')
equipment_lq_id = fields.Many2many('maintenance.equipment', 'image_lq_id', string='设备') equipment_lq_id = fields.Many2many('maintenance.equipment', 'image_lq_id', string='设备能力特征')
jg_equipment_id = fields.Many2many('sf.machine_tool.type', 'jg_image_id', string='机床型号') jg_equipment_id = fields.Many2many('sf.machine_tool.type', 'jg_image_id', string='机床型号')
lq_equipment_id = fields.Many2many('sf.machine_tool.type', 'lq_image_id', string='机床型号') lq_equipment_id = fields.Many2many('sf.machine_tool.type', 'lq_image_id', string='机床型号能力特征')
def _get_ids(self, name_arr): def _get_ids(self, name_arr):
ability_feature_ids = [] ability_feature_ids = []
@@ -254,6 +254,8 @@ class ToolGroups(models.Model):
equipment_ids = fields.Many2many('maintenance.equipment', 'ref_maintenance_equipment', string='机台号') equipment_ids = fields.Many2many('maintenance.equipment', 'ref_maintenance_equipment', string='机台号')
remark = fields.Char('备注', size=50) remark = fields.Char('备注', size=50)
active = fields.Boolean(string='已归档', default=True)
# ==========机床刀具组接口========== # ==========机床刀具组接口==========
# def _register_tool_groups(self, obj): # def _register_tool_groups(self, obj):
# # create_url = '/AutoDeviceApi/MachineToolGroup' # # create_url = '/AutoDeviceApi/MachineToolGroup'

View File

@@ -37,7 +37,6 @@ access_sf_cutting_tool_type_admin,sf_cutting_tool_type_admin,model_sf_cutting_to
access_sf_cutting_tool_type_group_purchase_director,sf_cutting_tool_type_group_purchase_director,model_sf_cutting_tool_type,sf_base.group_purchase_director,1,1,0,0 access_sf_cutting_tool_type_group_purchase_director,sf_cutting_tool_type_group_purchase_director,model_sf_cutting_tool_type,sf_base.group_purchase_director,1,1,0,0
access_sf_cutting_tool_type_group_sale_director,sf_cutting_tool_type_group_sale_director,model_sf_cutting_tool_type,sf_base.group_sale_director,1,1,0,0 access_sf_cutting_tool_type_group_sale_director,sf_cutting_tool_type_group_sale_director,model_sf_cutting_tool_type,sf_base.group_sale_director,1,1,0,0
access_sf_cutting_tool_type_group_plan_director,sf_cutting_tool_type_group_plan_director,model_sf_cutting_tool_type,sf_base.group_plan_director,1,1,0,0 access_sf_cutting_tool_type_group_plan_director,sf_cutting_tool_type_group_plan_director,model_sf_cutting_tool_type,sf_base.group_plan_director,1,1,0,0
access_sf_functional_cutting_tool,sf_functional_cutting_tool,model_sf_functional_cutting_tool,base.group_user,1,1,1,0 access_sf_functional_cutting_tool,sf_functional_cutting_tool,model_sf_functional_cutting_tool,base.group_user,1,1,1,0
access_sf_functional_cutting_tool_admin,sf_functional_cutting_tool_admin,model_sf_functional_cutting_tool,base.group_system,1,1,1,0 access_sf_functional_cutting_tool_admin,sf_functional_cutting_tool_admin,model_sf_functional_cutting_tool,base.group_system,1,1,1,0
access_sf_functional_cutting_tool_model,sf_functional_cutting_tool_model,model_sf_functional_cutting_tool_model,base.group_user,1,1,1,0 access_sf_functional_cutting_tool_model,sf_functional_cutting_tool_model,model_sf_functional_cutting_tool_model,base.group_user,1,1,1,0
@@ -60,6 +59,12 @@ access_sf_international_standards,sf_international_standards,model_sf_internatio
access_sf_international_standards_admin,sf_international_standards_admin,model_sf_international_standards,base.group_system,1,1,1,0 access_sf_international_standards_admin,sf_international_standards_admin,model_sf_international_standards,base.group_system,1,1,1,0
access_material_apply,material_apply,model_material_apply,base.group_user,1,1,1,0 access_material_apply,material_apply,model_material_apply,base.group_user,1,1,1,0
access_material_apply_admin,material_apply_admin,model_material_apply,base.group_system,1,1,1,0 access_material_apply_admin,material_apply_admin,model_material_apply,base.group_system,1,1,1,0
access_material_apply_group_purchase_director,material_apply_group_purchase_director,model_material_apply,sf_base.group_purchase_director,1,0,0,0
access_material_apply_group_sale_director,material_apply_group_sale_director,model_material_apply,sf_base.group_sale_director,1,0,0,0
access_material_apply_group_plan_director,material_apply_group_plan_director,model_material_apply,sf_base.group_plan_director,1,0,0,0
access_material_apply_group_purchase_director,material_apply_group_purchase_director,model_material_apply,sf_base.group_purchase_director,1,0,0,0
access_material_apply_group_sale_salemanager,material_apply_group_sale_salemanager,model_material_apply,sf_base.group_sale_salemanager,1,0,0,0
access_sf_cutting_tool_standard_library,sf_cutting_tool_standard_library,model_sf_cutting_tool_standard_library,base.group_user,1,1,1,0 access_sf_cutting_tool_standard_library,sf_cutting_tool_standard_library,model_sf_cutting_tool_standard_library,base.group_user,1,1,1,0
access_sf_cutting_tool_standard_library_admin,sf_cutting_tool_standard_library_admin,model_sf_cutting_tool_standard_library,base.group_system,1,1,1,0 access_sf_cutting_tool_standard_library_admin,sf_cutting_tool_standard_library_admin,model_sf_cutting_tool_standard_library,base.group_system,1,1,1,0
access_sf_tool_materials_basic_parameters,sf_tool_materials_basic_parameters,model_sf_tool_materials_basic_parameters,base.group_user,1,1,1,0 access_sf_tool_materials_basic_parameters,sf_tool_materials_basic_parameters,model_sf_tool_materials_basic_parameters,base.group_user,1,1,1,0
@@ -72,6 +77,7 @@ access_sf_cutting_speed_group_plan_director,sf_cutting_speed_group_plan_director
access_sf_feed_per_tooth_group_purchase_director,sf_feed_per_tooth_group_purchase_director,model_sf_feed_per_tooth,sf_base.group_purchase_director,1,1,0,0 access_sf_feed_per_tooth_group_purchase_director,sf_feed_per_tooth_group_purchase_director,model_sf_feed_per_tooth,sf_base.group_purchase_director,1,1,0,0
access_sf_feed_per_tooth_group_sale_director,sf_feed_per_tooth_group_sale_director,model_sf_feed_per_tooth,sf_base.group_sale_director,1,1,0,0 access_sf_feed_per_tooth_group_sale_director,sf_feed_per_tooth_group_sale_director,model_sf_feed_per_tooth,sf_base.group_sale_director,1,1,0,0
access_sf_feed_per_tooth_group_plan_director,sf_feed_per_tooth_group_plan_director,model_sf_feed_per_tooth,sf_base.group_plan_director,1,1,0,0 access_sf_feed_per_tooth_group_plan_director,sf_feed_per_tooth_group_plan_director,model_sf_feed_per_tooth,sf_base.group_plan_director,1,1,0,0
access_sf_feed_per_tooth_group_sale_salemanager,sf_feed_per_tooth_group_sale_salemanager,model_sf_feed_per_tooth,sf_base.group_sale_salemanager,1,0,0,0
access_sf_feed_per_tooth,sf_feed_per_tooth,model_sf_feed_per_tooth,base.group_user,1,1,1,0 access_sf_feed_per_tooth,sf_feed_per_tooth,model_sf_feed_per_tooth,base.group_user,1,1,1,0
access_sf_feed_per_tooth_admin,sf_feed_per_tooth_admin,model_sf_feed_per_tooth,base.group_system,1,1,1,0 access_sf_feed_per_tooth_admin,sf_feed_per_tooth_admin,model_sf_feed_per_tooth,base.group_system,1,1,1,0
access_sf_ramping_angle,sf_ramping_angle,model_sf_ramping_angle,base.group_user,1,1,1,1 access_sf_ramping_angle,sf_ramping_angle,model_sf_ramping_angle,base.group_user,1,1,1,1
@@ -116,47 +122,35 @@ access_sf_functional_fixture,sf_functional_fixture,model_sf_functional_fixture,s
access_sf_sync_common,sf_sync_common,model_sf_sync_common,sf_base.group_sf_mrp_user,1,0,0,0 access_sf_sync_common,sf_sync_common,model_sf_sync_common,sf_base.group_sf_mrp_user,1,0,0,0
access_sf_international_standards,sf_international_standards,model_sf_international_standards,sf_base.group_sf_mrp_user,1,0,0,0 access_sf_international_standards,sf_international_standards,model_sf_international_standards,sf_base.group_sf_mrp_user,1,0,0,0
access_material_apply,material_apply,model_material_apply,sf_base.group_sf_mrp_user,1,0,0,0 access_material_apply,material_apply,model_material_apply,sf_base.group_sf_mrp_user,1,0,0,0
access_sf_cutting_tool_standard_library_group_sf_mrp_user,sf_cutting_tool_standard_library_group_sf_mrp_user,model_sf_cutting_tool_standard_library,sf_base.group_sf_mrp_user,1,0,0,0 access_sf_cutting_tool_standard_library_group_sf_mrp_user,sf_cutting_tool_standard_library_group_sf_mrp_user,model_sf_cutting_tool_standard_library,sf_base.group_sf_mrp_user,1,0,0,0
access_sf_cutting_tool_standard_library_group_purchase_director,sf_cutting_tool_standard_library_group_purchase_director,model_sf_cutting_tool_standard_library,sf_base.group_purchase_director,1,0,1,0 access_sf_cutting_tool_standard_library_group_purchase_director,sf_cutting_tool_standard_library_group_purchase_director,model_sf_cutting_tool_standard_library,sf_base.group_purchase_director,1,0,1,0
access_sf_cutting_tool_standard_library_group_plan_director,sf_cutting_tool_standard_library_group_plan_director,model_sf_cutting_tool_standard_library,sf_base.group_plan_director,1,0,1,0 access_sf_cutting_tool_standard_library_group_plan_director,sf_cutting_tool_standard_library_group_plan_director,model_sf_cutting_tool_standard_library,sf_base.group_plan_director,1,0,1,0
access_sf_cutting_tool_standard_library_group_sale_director,sf_cutting_tool_standard_library_group_sale_director,model_sf_cutting_tool_standard_library,sf_base.group_sale_director,1,0,1,0 access_sf_cutting_tool_standard_library_group_sale_director,sf_cutting_tool_standard_library_group_sale_director,model_sf_cutting_tool_standard_library,sf_base.group_sale_director,1,0,1,0
access_sf_tool_groups,sf_tool_groups,model_sf_tool_groups,sf_base.group_sf_mrp_user,1,0,0,0 access_sf_tool_groups,sf_tool_groups,model_sf_tool_groups,sf_base.group_sf_mrp_user,1,0,0,0
access_sf_tool_materials_basic_parameters_group_sale_director,sf_tool_materials_basic_parameters_group_sale_director,model_sf_tool_materials_basic_parameters,sf_base.group_sale_director,1,0,1,0 access_sf_tool_materials_basic_parameters_group_sale_director,sf_tool_materials_basic_parameters_group_sale_director,model_sf_tool_materials_basic_parameters,sf_base.group_sale_director,1,0,1,0
access_sf_tool_materials_basic_parameters_group_plan_director,sf_tool_materials_basic_parameters_group_plan_director,model_sf_tool_materials_basic_parameters,sf_base.group_plan_director,1,0,1,0 access_sf_tool_materials_basic_parameters_group_plan_director,sf_tool_materials_basic_parameters_group_plan_director,model_sf_tool_materials_basic_parameters,sf_base.group_plan_director,1,0,1,0
access_sf_tool_materials_basic_parameters_group_purchase_director,sf_tool_materials_basic_parameters_group_purchase_director,model_sf_tool_materials_basic_parameters,sf_base.group_purchase_director,1,0,1,0 access_sf_tool_materials_basic_parameters_group_purchase_director,sf_tool_materials_basic_parameters_group_purchase_director,model_sf_tool_materials_basic_parameters,sf_base.group_purchase_director,1,0,1,0
access_sf_cutting_speed,sf_cutting_speed,model_sf_cutting_speed,sf_base.group_sf_mrp_user,1,0,0,0 access_sf_cutting_speed,sf_cutting_speed,model_sf_cutting_speed,sf_base.group_sf_mrp_user,1,0,0,0
access_sf_cutting_speed_group_purchase,sf_cutting_speed_group_purchase,model_sf_cutting_speed,sf_base.group_purchase,1,0,0,0 access_sf_cutting_speed_group_purchase,sf_cutting_speed_group_purchase,model_sf_cutting_speed,sf_base.group_purchase,1,0,0,0
access_sf_cutting_speed_group_sale_salemanager,sf_cutting_speed_group_sale_salemanager,model_sf_cutting_speed,sf_base.group_sale_salemanager,1,0,0,0 access_sf_cutting_speed_group_sale_salemanager,sf_cutting_speed_group_sale_salemanager,model_sf_cutting_speed,sf_base.group_sale_salemanager,1,0,0,0
access_sf_feed_per_tooth,sf_feed_per_tooth,model_sf_feed_per_tooth,sf_base.group_sf_mrp_user,1,0,0,0 access_sf_feed_per_tooth,sf_feed_per_tooth,model_sf_feed_per_tooth,sf_base.group_sf_mrp_user,1,0,0,0
access_sf_feed_per_tooth_group_purchase,sf_feed_per_tooth_group_purchase,model_sf_feed_per_tooth,sf_base.group_purchase,1,0,0,0 access_sf_feed_per_tooth_group_purchase,sf_feed_per_tooth_group_purchase,model_sf_feed_per_tooth,sf_base.group_purchase,1,0,0,0
access_sf_ramping_angle,sf_ramping_angle,model_sf_ramping_angle,sf_base.group_sf_mrp_user,1,0,0,0 access_sf_ramping_angle,sf_ramping_angle,model_sf_ramping_angle,sf_base.group_sf_mrp_user,1,0,0,0
access_sf_ramping_angle_group_purchase,sf_ramping_angle_group_purchase,model_sf_ramping_angle,sf_base.group_purchase,1,0,0,0 access_sf_ramping_angle_group_purchase,sf_ramping_angle_group_purchase,model_sf_ramping_angle,sf_base.group_purchase,1,0,0,0
access_sf_cutting_width_depth,sf_cutting_width_depth,model_sf_cutting_width_depth,sf_base.group_sf_mrp_user,1,0,0,0 access_sf_cutting_width_depth,sf_cutting_width_depth,model_sf_cutting_width_depth,sf_base.group_sf_mrp_user,1,0,0,0
access_sf_cutting_width_depth_group_purchase,sf_cutting_width_depth_group_purchase,model_sf_cutting_width_depth,sf_base.group_purchase,1,0,0,0 access_sf_cutting_width_depth_group_purchase,sf_cutting_width_depth_group_purchase,model_sf_cutting_width_depth,sf_base.group_purchase,1,0,0,0
access_maintenance_equipment_image,maintenance_equipment_image,model_maintenance_equipment_image,base.group_user,1,1,1,1 access_maintenance_equipment_image,maintenance_equipment_image,model_maintenance_equipment_image,base.group_user,1,1,1,1
access_purchase_order_group_purchase,access_purchase_order_group_purchase,purchase.model_purchase_order,sf_base.group_purchase,1,1,1,0 access_purchase_order_group_purchase,access_purchase_order_group_purchase,purchase.model_purchase_order,sf_base.group_purchase,1,1,1,0
access_purchase_order_group_purchase_director,access_purchase_order_group_purchase_director,purchase.model_purchase_order,sf_base.group_purchase_director,1,1,1,0 access_purchase_order_group_purchase_director,access_purchase_order_group_purchase_director,purchase.model_purchase_order,sf_base.group_purchase_director,1,1,1,0
access_purchase_order_line_group_purchase,access_purchase_order_line_group_purchase,purchase.model_purchase_order_line,sf_base.group_purchase,1,1,1,0 access_purchase_order_line_group_purchase,access_purchase_order_line_group_purchase,purchase.model_purchase_order_line,sf_base.group_purchase,1,1,1,0
access_purchase_order_line_group_purchase_director,access_purchase_order_line_group_purchase_director,purchase.model_purchase_order_line,sf_base.group_purchase_director,1,1,1,0 access_purchase_order_line_group_purchase_director,access_purchase_order_line_group_purchase_director,purchase.model_purchase_order_line,sf_base.group_purchase_director,1,1,1,0
access_spindle_taper_type,spindle_taper_type,model_spindle_taper_type,base.group_user,1,1,1,1 access_spindle_taper_type,spindle_taper_type,model_spindle_taper_type,base.group_user,1,1,1,1
access_sf_tool_groups_group_plan_dispatch,sf_tool_groups,model_sf_tool_groups,sf_base.group_plan_dispatch,1,0,0,0 access_sf_tool_groups_group_plan_dispatch,sf_tool_groups,model_sf_tool_groups,sf_base.group_plan_dispatch,1,0,0,0
access_sf_tool_groups_group_sf_tool_user,sf_tool_groups,model_sf_tool_groups,sf_base.group_sf_tool_user,1,1,1,1 access_sf_tool_groups_group_sf_tool_user,sf_tool_groups,model_sf_tool_groups,sf_base.group_sf_tool_user,1,1,1,1
access_purchase_order,purchase.order,purchase.model_purchase_order,sf_base.group_plan_dispatch,1,0,0,0 access_purchase_order,purchase.order,purchase.model_purchase_order,sf_base.group_plan_dispatch,1,0,0,0
access_res_partner,res.partner,base.model_res_partner,sf_base.group_plan_dispatch,1,0,0,0 access_res_partner,res.partner,base.model_res_partner,sf_base.group_plan_dispatch,1,0,0,0
access_purchase_order_line,purchase.order.line,purchase.model_purchase_order_line,sf_base.group_plan_dispatch,1,0,0,0 access_purchase_order_line,purchase.order.line,purchase.model_purchase_order_line,sf_base.group_plan_dispatch,1,0,0,0
access_account_move_line,account.move.line,account.model_account_move_line,sf_base.group_plan_dispatch,1,0,0,0 access_account_move_line,account.move.line,account.model_account_move_line,sf_base.group_plan_dispatch,1,0,0,0
access_sf_machine_tool,sf_machine_tool,model_sf_machine_tool,sf_base.group_sf_mrp_user,1,1,0,0 access_sf_machine_tool,sf_machine_tool,model_sf_machine_tool,sf_base.group_sf_mrp_user,1,1,0,0
access_sf_machine_tool_type,sf_machine_tool_type,model_sf_machine_tool_type,sf_base.group_sf_mrp_user,1,1,0,0 access_sf_machine_tool_type,sf_machine_tool_type,model_sf_machine_tool_type,sf_base.group_sf_mrp_user,1,1,0,0
access_sf_machine_brand,sf_machine_brand,model_sf_machine_brand,sf_base.group_sf_mrp_user,1,1,0,0 access_sf_machine_brand,sf_machine_brand,model_sf_machine_brand,sf_base.group_sf_mrp_user,1,1,0,0
@@ -179,10 +173,18 @@ access_sf_fixture_material,sf_fixture_material,model_sf_fixture_material,sf_base
access_sf_fixture_materials_basic_parameters,sf_fixture_materials_basic_parameters,model_sf_fixture_materials_basic_parameters,sf_base.group_sf_mrp_user,1,1,0,0 access_sf_fixture_materials_basic_parameters,sf_fixture_materials_basic_parameters,model_sf_fixture_materials_basic_parameters,sf_base.group_sf_mrp_user,1,1,0,0
access_mrp_production_group_sale_salemanager,mrp_production_group_sale_salemanager,mrp.model_mrp_production,sf_base.group_sale_salemanager,1,0,0,0 access_mrp_production_group_sale_salemanager,mrp_production_group_sale_salemanager,mrp.model_mrp_production,sf_base.group_sale_salemanager,1,0,0,0
access_mrp_production_group_sale_director,mrp_production_group_sale_director,mrp.model_mrp_production,sf_base.group_sale_director,1,0,0,0 access_mrp_production_group_sale_director,mrp_production_group_sale_director,mrp.model_mrp_production,sf_base.group_sale_director,1,0,0,0
access_material_apply_group_plan_dispatch,material_apply,model_material_apply,sf_base.group_plan_dispatch,1,0,0,0 access_material_apply_group_plan_dispatch,material_apply,model_material_apply,sf_base.group_plan_dispatch,1,0,0,0
access_sf_machine_brand_tags_group_plan_dispatch,sf_machine_brand_tags,model_sf_machine_brand_tags,sf_base.group_plan_dispatch,1,0,0,0 access_sf_machine_brand_tags_group_plan_dispatch,sf_machine_brand_tags,model_sf_machine_brand_tags,sf_base.group_plan_dispatch,1,0,0,0
access_ir_actions_act_window_group_plan_dispatch,ir.actions.act_window,base.model_ir_actions_act_window,sf_base.group_plan_dispatch,1,0,0,0 access_ir_actions_act_window_group_plan_dispatch,ir.actions.act_window,base.model_ir_actions_act_window,sf_base.group_plan_dispatch,1,0,0,0
access_ir_actions_act_window_view_group_plan_dispatch,ir.actions.act_window.view,base.model_ir_actions_act_window_view,sf_base.group_plan_dispatch,1,0,0,0 access_ir_actions_act_window_view_group_plan_dispatch,ir.actions.act_window.view,base.model_ir_actions_act_window_view,sf_base.group_plan_dispatch,1,0,0,0
access_sf_supplier_sort_group_plan_dispatch,sf.supplier.sort,model_sf_supplier_sort,sf_base.group_plan_dispatch,1,0,0,0 access_sf_supplier_sort_group_plan_dispatch,sf.supplier.sort,model_sf_supplier_sort,sf_base.group_plan_dispatch,1,0,0,0
access_sf_international_standards_group_sale_salemanager,sf_international_standards_group_sale_salemanager,model_sf_international_standards,sf_base.group_sale_salemanager,1,0,0,0
access_sf_international_standards_group_sale_director,sf_international_standards_group_sale_director,model_sf_international_standards,sf_base.group_sale_director,1,0,0,0
access_sf_international_standards_group_plan_director,sf_international_standards_group_plan_director,model_sf_international_standards,sf_base.group_plan_director,1,0,0,0
access_sf_international_standards_group_purchase,sf_international_standards_group_purchase,model_sf_international_standards,sf_base.group_purchase,1,0,0,0
access_sf_international_standards_group_purchase_director,sf_international_standards_group_purchase_director,model_sf_international_standards,sf_base.group_purchase_director,1,0,0,0
access_sf_machine_brand_tags_group_sale_salemanager,sf_machine_brand_tags_group_sale_salemanager,model_sf_machine_brand_tags,sf_base.group_sale_salemanager,1,0,0,0
access_sf_machine_brand_tags_group_sale_director,sf_machine_brand_tags_group_sale_director,model_sf_machine_brand_tags,sf_base.group_sale_director,1,0,0,0
access_sf_machine_brand_tags_group_plan_director,sf_machine_brand_tags_group_plan_director,model_sf_machine_brand_tags,sf_base.group_plan_director,1,0,0,0
access_sf_machine_brand_tags_group_purchase,sf_machine_brand_tags_group_purchase,model_sf_machine_brand_tags,sf_base.group_purchase,1,0,0,0
access_sf_machine_brand_tags_group_purchase_director,sf_machine_brand_tags_group_purchase_director,model_sf_machine_brand_tags,sf_base.group_purchase_director,1,0,0,0
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
37 access_sf_cutting_tool_type_group_purchase_director sf_cutting_tool_type_group_purchase_director model_sf_cutting_tool_type sf_base.group_purchase_director 1 1 0 0
38 access_sf_cutting_tool_type_group_sale_director sf_cutting_tool_type_group_sale_director model_sf_cutting_tool_type sf_base.group_sale_director 1 1 0 0
39 access_sf_cutting_tool_type_group_plan_director sf_cutting_tool_type_group_plan_director model_sf_cutting_tool_type sf_base.group_plan_director 1 1 0 0
access_sf_functional_cutting_tool sf_functional_cutting_tool model_sf_functional_cutting_tool base.group_user 1 1 1 0
40 access_sf_functional_cutting_tool_admin access_sf_functional_cutting_tool sf_functional_cutting_tool_admin sf_functional_cutting_tool model_sf_functional_cutting_tool base.group_system base.group_user 1 1 1 0
41 access_sf_functional_cutting_tool_model access_sf_functional_cutting_tool_admin sf_functional_cutting_tool_model sf_functional_cutting_tool_admin model_sf_functional_cutting_tool_model model_sf_functional_cutting_tool base.group_user base.group_system 1 1 1 0
42 access_sf_functional_cutting_tool_model_admin access_sf_functional_cutting_tool_model sf_functional_cutting_tool_model_admin sf_functional_cutting_tool_model model_sf_functional_cutting_tool_model base.group_system base.group_user 1 1 1 0
59 access_material_apply access_sf_international_standards_admin material_apply sf_international_standards_admin model_material_apply model_sf_international_standards base.group_user base.group_system 1 1 1 0
60 access_material_apply_admin access_material_apply material_apply_admin material_apply model_material_apply base.group_system base.group_user 1 1 1 0
61 access_sf_cutting_tool_standard_library access_material_apply_admin sf_cutting_tool_standard_library material_apply_admin model_sf_cutting_tool_standard_library model_material_apply base.group_user base.group_system 1 1 1 0
62 access_material_apply_group_purchase_director material_apply_group_purchase_director model_material_apply sf_base.group_purchase_director 1 0 0 0
63 access_material_apply_group_sale_director material_apply_group_sale_director model_material_apply sf_base.group_sale_director 1 0 0 0
64 access_material_apply_group_plan_director material_apply_group_plan_director model_material_apply sf_base.group_plan_director 1 0 0 0
65 access_material_apply_group_purchase_director material_apply_group_purchase_director model_material_apply sf_base.group_purchase_director 1 0 0 0
66 access_material_apply_group_sale_salemanager material_apply_group_sale_salemanager model_material_apply sf_base.group_sale_salemanager 1 0 0 0
67 access_sf_cutting_tool_standard_library sf_cutting_tool_standard_library model_sf_cutting_tool_standard_library base.group_user 1 1 1 0
68 access_sf_cutting_tool_standard_library_admin sf_cutting_tool_standard_library_admin model_sf_cutting_tool_standard_library base.group_system 1 1 1 0
69 access_sf_tool_materials_basic_parameters sf_tool_materials_basic_parameters model_sf_tool_materials_basic_parameters base.group_user 1 1 1 0
70 access_sf_tool_materials_basic_parameters_admin sf_tool_materials_basic_parameters_admin model_sf_tool_materials_basic_parameters base.group_system 1 1 1 0
77 access_sf_feed_per_tooth_group_sale_director sf_feed_per_tooth_group_sale_director model_sf_feed_per_tooth sf_base.group_sale_director 1 1 0 0
78 access_sf_feed_per_tooth_group_plan_director sf_feed_per_tooth_group_plan_director model_sf_feed_per_tooth sf_base.group_plan_director 1 1 0 0
79 access_sf_feed_per_tooth access_sf_feed_per_tooth_group_sale_salemanager sf_feed_per_tooth sf_feed_per_tooth_group_sale_salemanager model_sf_feed_per_tooth base.group_user sf_base.group_sale_salemanager 1 1 0 1 0 0
80 access_sf_feed_per_tooth sf_feed_per_tooth model_sf_feed_per_tooth base.group_user 1 1 1 0
81 access_sf_feed_per_tooth_admin sf_feed_per_tooth_admin model_sf_feed_per_tooth base.group_system 1 1 1 0
82 access_sf_ramping_angle sf_ramping_angle model_sf_ramping_angle base.group_user 1 1 1 1
83 access_sf_ramping_angle_admin sf_ramping_angle_admin model_sf_ramping_angle base.group_system 1 1 1 1
122 access_sf_international_standards sf_international_standards model_sf_international_standards sf_base.group_sf_mrp_user 1 0 0 0
123 access_material_apply material_apply model_material_apply sf_base.group_sf_mrp_user 1 0 0 0
124 access_sf_cutting_tool_standard_library_group_sf_mrp_user sf_cutting_tool_standard_library_group_sf_mrp_user model_sf_cutting_tool_standard_library sf_base.group_sf_mrp_user 1 0 0 0
access_sf_cutting_tool_standard_library_group_purchase_director sf_cutting_tool_standard_library_group_purchase_director model_sf_cutting_tool_standard_library sf_base.group_purchase_director 1 0 1 0
125 access_sf_cutting_tool_standard_library_group_plan_director access_sf_cutting_tool_standard_library_group_purchase_director sf_cutting_tool_standard_library_group_plan_director sf_cutting_tool_standard_library_group_purchase_director model_sf_cutting_tool_standard_library sf_base.group_plan_director sf_base.group_purchase_director 1 0 1 0
126 access_sf_cutting_tool_standard_library_group_sale_director access_sf_cutting_tool_standard_library_group_plan_director sf_cutting_tool_standard_library_group_sale_director sf_cutting_tool_standard_library_group_plan_director model_sf_cutting_tool_standard_library sf_base.group_sale_director sf_base.group_plan_director 1 0 1 0
127 access_sf_tool_groups access_sf_cutting_tool_standard_library_group_sale_director sf_tool_groups sf_cutting_tool_standard_library_group_sale_director model_sf_tool_groups model_sf_cutting_tool_standard_library sf_base.group_sf_mrp_user sf_base.group_sale_director 1 0 0 1 0
128 access_sf_tool_materials_basic_parameters_group_sale_director access_sf_tool_groups sf_tool_materials_basic_parameters_group_sale_director sf_tool_groups model_sf_tool_materials_basic_parameters model_sf_tool_groups sf_base.group_sale_director sf_base.group_sf_mrp_user 1 0 1 0 0
access_sf_tool_materials_basic_parameters_group_plan_director sf_tool_materials_basic_parameters_group_plan_director model_sf_tool_materials_basic_parameters sf_base.group_plan_director 1 0 1 0
129 access_sf_tool_materials_basic_parameters_group_purchase_director access_sf_tool_materials_basic_parameters_group_sale_director sf_tool_materials_basic_parameters_group_purchase_director sf_tool_materials_basic_parameters_group_sale_director model_sf_tool_materials_basic_parameters sf_base.group_purchase_director sf_base.group_sale_director 1 0 1 0
130 access_sf_cutting_speed access_sf_tool_materials_basic_parameters_group_plan_director sf_cutting_speed sf_tool_materials_basic_parameters_group_plan_director model_sf_cutting_speed model_sf_tool_materials_basic_parameters sf_base.group_sf_mrp_user sf_base.group_plan_director 1 0 0 1 0
131 access_sf_cutting_speed_group_purchase access_sf_tool_materials_basic_parameters_group_purchase_director sf_cutting_speed_group_purchase sf_tool_materials_basic_parameters_group_purchase_director model_sf_cutting_speed model_sf_tool_materials_basic_parameters sf_base.group_purchase sf_base.group_purchase_director 1 0 0 1 0
132 access_sf_cutting_speed_group_sale_salemanager access_sf_cutting_speed sf_cutting_speed_group_sale_salemanager sf_cutting_speed model_sf_cutting_speed sf_base.group_sale_salemanager sf_base.group_sf_mrp_user 1 0 0 0
access_sf_feed_per_tooth sf_feed_per_tooth model_sf_feed_per_tooth sf_base.group_sf_mrp_user 1 0 0 0
133 access_sf_feed_per_tooth_group_purchase access_sf_cutting_speed_group_purchase sf_feed_per_tooth_group_purchase sf_cutting_speed_group_purchase model_sf_feed_per_tooth model_sf_cutting_speed sf_base.group_purchase 1 0 0 0
134 access_sf_ramping_angle access_sf_cutting_speed_group_sale_salemanager sf_ramping_angle sf_cutting_speed_group_sale_salemanager model_sf_ramping_angle model_sf_cutting_speed sf_base.group_sf_mrp_user sf_base.group_sale_salemanager 1 0 0 0
135 access_sf_ramping_angle_group_purchase access_sf_feed_per_tooth sf_ramping_angle_group_purchase sf_feed_per_tooth model_sf_ramping_angle model_sf_feed_per_tooth sf_base.group_purchase sf_base.group_sf_mrp_user 1 0 0 0
access_sf_cutting_width_depth sf_cutting_width_depth model_sf_cutting_width_depth sf_base.group_sf_mrp_user 1 0 0 0
access_sf_cutting_width_depth_group_purchase sf_cutting_width_depth_group_purchase model_sf_cutting_width_depth sf_base.group_purchase 1 0 0 0
136 access_maintenance_equipment_image access_sf_feed_per_tooth_group_purchase maintenance_equipment_image sf_feed_per_tooth_group_purchase model_maintenance_equipment_image model_sf_feed_per_tooth base.group_user sf_base.group_purchase 1 1 0 1 0 1 0
137 access_purchase_order_group_purchase access_sf_ramping_angle access_purchase_order_group_purchase sf_ramping_angle purchase.model_purchase_order model_sf_ramping_angle sf_base.group_purchase sf_base.group_sf_mrp_user 1 1 0 1 0 0
138 access_purchase_order_group_purchase_director access_sf_ramping_angle_group_purchase access_purchase_order_group_purchase_director sf_ramping_angle_group_purchase purchase.model_purchase_order model_sf_ramping_angle sf_base.group_purchase_director sf_base.group_purchase 1 1 0 1 0 0
139 access_purchase_order_line_group_purchase access_sf_cutting_width_depth access_purchase_order_line_group_purchase sf_cutting_width_depth purchase.model_purchase_order_line model_sf_cutting_width_depth sf_base.group_purchase sf_base.group_sf_mrp_user 1 1 0 1 0 0
140 access_purchase_order_line_group_purchase_director access_sf_cutting_width_depth_group_purchase access_purchase_order_line_group_purchase_director sf_cutting_width_depth_group_purchase purchase.model_purchase_order_line model_sf_cutting_width_depth sf_base.group_purchase_director sf_base.group_purchase 1 1 0 1 0 0
141 access_spindle_taper_type access_maintenance_equipment_image spindle_taper_type maintenance_equipment_image model_spindle_taper_type model_maintenance_equipment_image base.group_user 1 1 1 1
access_sf_tool_groups_group_plan_dispatch sf_tool_groups model_sf_tool_groups sf_base.group_plan_dispatch 1 0 0 0
142 access_sf_tool_groups_group_sf_tool_user access_purchase_order_group_purchase sf_tool_groups access_purchase_order_group_purchase model_sf_tool_groups purchase.model_purchase_order sf_base.group_sf_tool_user sf_base.group_purchase 1 1 1 1 0
143 access_purchase_order access_purchase_order_group_purchase_director purchase.order access_purchase_order_group_purchase_director purchase.model_purchase_order sf_base.group_plan_dispatch sf_base.group_purchase_director 1 0 1 0 1 0
144 access_res_partner access_purchase_order_line_group_purchase res.partner access_purchase_order_line_group_purchase base.model_res_partner purchase.model_purchase_order_line sf_base.group_plan_dispatch sf_base.group_purchase 1 0 1 0 1 0
145 access_purchase_order_line access_purchase_order_line_group_purchase_director purchase.order.line access_purchase_order_line_group_purchase_director purchase.model_purchase_order_line sf_base.group_plan_dispatch sf_base.group_purchase_director 1 0 1 0 1 0
146 access_account_move_line access_spindle_taper_type account.move.line spindle_taper_type account.model_account_move_line model_spindle_taper_type sf_base.group_plan_dispatch base.group_user 1 0 1 0 1 0 1
147 access_sf_machine_tool access_sf_tool_groups_group_plan_dispatch sf_machine_tool sf_tool_groups model_sf_machine_tool model_sf_tool_groups sf_base.group_sf_mrp_user sf_base.group_plan_dispatch 1 1 0 0 0
access_sf_machine_tool_type sf_machine_tool_type model_sf_machine_tool_type sf_base.group_sf_mrp_user 1 1 0 0
148 access_sf_machine_brand access_sf_tool_groups_group_sf_tool_user sf_machine_brand sf_tool_groups model_sf_machine_brand model_sf_tool_groups sf_base.group_sf_mrp_user sf_base.group_sf_tool_user 1 1 0 1 0 1
149 access_sf_machine_brand_tags access_purchase_order sf_machine_brand_tags purchase.order model_sf_machine_brand_tags purchase.model_purchase_order sf_base.group_sf_mrp_user sf_base.group_plan_dispatch 1 1 0 0 0
access_sf_machine_control_system sf_machine_control_system model_sf_machine_control_system sf_base.group_sf_mrp_user 1 1 0 0
access_sf_processing_order sf_processing_order model_sf_processing_order sf_base.group_sf_mrp_user 1 1 0 0
access_sf_production_process sf_production_process model_sf_production_process sf_base.group_sf_mrp_user 1 1 0 0
150 access_sf_production_materials access_res_partner sf_production_materials res.partner model_sf_production_materials base.model_res_partner sf_base.group_sf_mrp_user sf_base.group_plan_dispatch 1 1 0 0 0
151 access_sf_materials_model access_purchase_order_line sf_materials_model purchase.order.line model_sf_materials_model purchase.model_purchase_order_line sf_base.group_sf_mrp_user sf_base.group_plan_dispatch 1 1 0 0 0
152 access_sf_processing_technology access_account_move_line sf_processing_technology account.move.line model_sf_processing_technology account.model_account_move_line sf_base.group_sf_mrp_user sf_base.group_plan_dispatch 1 1 0 0 0
153 access_sf_supplier_sort access_sf_machine_tool sf_supplier_sort sf_machine_tool model_sf_supplier_sort model_sf_machine_tool sf_base.group_sf_mrp_user 1 1 0 0
access_sf_production_process_parameter sf_production_process_parameter model_sf_production_process_parameter sf_base.group_sf_mrp_user 1 1 0 0
access_sf_production_process_category sf_production_process_category model_sf_production_process_category sf_base.group_sf_mrp_user 1 1 0 0
154 access_sf_machine_tool_category access_sf_machine_tool_type sf_machine_tool_category sf_machine_tool_type model_sf_machine_tool_category model_sf_machine_tool_type sf_base.group_sf_mrp_user 1 1 0 0
155 access_sf_cutting_tool_material access_sf_machine_brand sf_cutting_tool_material sf_machine_brand model_sf_cutting_tool_material model_sf_machine_brand sf_base.group_sf_mrp_user 1 1 0 0
156 access_sf_cutting_tool_type access_sf_machine_brand_tags sf_cutting_tool_type sf_machine_brand_tags model_sf_cutting_tool_type model_sf_machine_brand_tags sf_base.group_sf_mrp_user 1 1 0 0
173 access_mrp_production_group_sale_salemanager mrp_production_group_sale_salemanager mrp.model_mrp_production sf_base.group_sale_salemanager 1 0 0 0
174 access_mrp_production_group_sale_director mrp_production_group_sale_director mrp.model_mrp_production sf_base.group_sale_director 1 0 0 0
175 access_material_apply_group_plan_dispatch material_apply model_material_apply sf_base.group_plan_dispatch 1 0 0 0
176 access_sf_machine_brand_tags_group_plan_dispatch sf_machine_brand_tags model_sf_machine_brand_tags sf_base.group_plan_dispatch 1 0 0 0
177 access_ir_actions_act_window_group_plan_dispatch ir.actions.act_window base.model_ir_actions_act_window sf_base.group_plan_dispatch 1 0 0 0
178 access_ir_actions_act_window_view_group_plan_dispatch ir.actions.act_window.view base.model_ir_actions_act_window_view sf_base.group_plan_dispatch 1 0 0 0
179 access_sf_supplier_sort_group_plan_dispatch sf.supplier.sort model_sf_supplier_sort sf_base.group_plan_dispatch 1 0 0 0
180 access_sf_international_standards_group_sale_salemanager sf_international_standards_group_sale_salemanager model_sf_international_standards sf_base.group_sale_salemanager 1 0 0 0
181 access_sf_international_standards_group_sale_director sf_international_standards_group_sale_director model_sf_international_standards sf_base.group_sale_director 1 0 0 0
182 access_sf_international_standards_group_plan_director sf_international_standards_group_plan_director model_sf_international_standards sf_base.group_plan_director 1 0 0 0
183 access_sf_international_standards_group_purchase sf_international_standards_group_purchase model_sf_international_standards sf_base.group_purchase 1 0 0 0
184 access_sf_international_standards_group_purchase_director sf_international_standards_group_purchase_director model_sf_international_standards sf_base.group_purchase_director 1 0 0 0
185 access_sf_machine_brand_tags_group_sale_salemanager sf_machine_brand_tags_group_sale_salemanager model_sf_machine_brand_tags sf_base.group_sale_salemanager 1 0 0 0
186 access_sf_machine_brand_tags_group_sale_director sf_machine_brand_tags_group_sale_director model_sf_machine_brand_tags sf_base.group_sale_director 1 0 0 0
187 access_sf_machine_brand_tags_group_plan_director sf_machine_brand_tags_group_plan_director model_sf_machine_brand_tags sf_base.group_plan_director 1 0 0 0
188 access_sf_machine_brand_tags_group_purchase sf_machine_brand_tags_group_purchase model_sf_machine_brand_tags sf_base.group_purchase 1 0 0 0
189 access_sf_machine_brand_tags_group_purchase_director sf_machine_brand_tags_group_purchase_director model_sf_machine_brand_tags sf_base.group_purchase_director 1 0 0 0
190

View File

@@ -505,11 +505,23 @@
</field> </field>
</record> </record>
<record id="sf_tool_groups_search" model="ir.ui.view">
<field name="name">刀具组搜索</field>
<field name="model">sf.tool.groups</field>
<field name="arch" type="xml">
<search>
<field name="name"/>
<field name="equipment_ids"/>
<filter string="已归档" name="inactive" domain="[('active', '=', False)]"/>
</search>
</field>
</record>
<record id="sf_tool_groups_view_act" model="ir.actions.act_window"> <record id="sf_tool_groups_view_act" model="ir.actions.act_window">
<field name="name">刀具组</field> <field name="name">刀具组</field>
<field name="type">ir.actions.act_window</field> <field name="type">ir.actions.act_window</field>
<field name="res_model">sf.tool.groups</field> <field name="res_model">sf.tool.groups</field>
<field name="view_mode">tree</field> <field name="view_mode">tree,search</field>
</record> </record>
<!-- ================================================刀具基础参数================================================ --> <!-- ================================================刀具基础参数================================================ -->

View File

@@ -16,7 +16,7 @@ class Sf_Bf_Connect(http.Controller):
:return: :return:
""" """
res = {'status': 1, 'factory_order_no': ''} res = {'status': 1, 'factory_order_no': ''}
logging.info('get_bfm_process_order_list:%s' % kw) logging.info('get_bfm_process_order_list:%s' % kw['order_number'])
try: try:
product_id = request.env.ref('sf_dlm.product_template_sf').sudo() product_id = request.env.ref('sf_dlm.product_template_sf').sudo()
self_machining_id = request.env.ref('sf_dlm.product_embryo_sf_self_machining').sudo() self_machining_id = request.env.ref('sf_dlm.product_embryo_sf_self_machining').sudo()
@@ -157,4 +157,3 @@ class jdElcp(http.Controller):
if aa: if aa:
aa.schedule_status = 'received' aa.schedule_status = 'received'
return json.dumps({'statusCode': 200, 'statusMessage': '修改成功'}, ensure_ascii=False) return json.dumps({'statusCode': 200, 'statusMessage': '修改成功'}, ensure_ascii=False)

View File

@@ -35,14 +35,14 @@
<field name="type">功能刀具</field> <field name="type">功能刀具</field>
</record> </record>
<!-- <record id="res_partner_bfm" model="res.partner">--> <record id="res_partner_bfm" model="res.partner">
<!-- <field name="name">业务平台</field>--> <field name="name">业务平台</field>
<!-- &lt;!&ndash; <field name="company_id" ref="base.main_company"/>&ndash;&gt;--> <!-- <field name="company_id" ref="base.main_company"/>-->
<!-- </record>--> </record>
<!-- <record id="res_users_bfm" model="res.users">--> <!-- <record id="res_users_bfm" model="res.users">-->
<!-- <field name="name">业务平台</field>--> <!-- <field name="name">业务平台</field>-->
<!-- <field name="partner_id" ref="res_partner_bfm"/>--> <!--&lt;!&ndash; <field name="partner_id" ref="res_partner_bfm"/>&ndash;&gt;-->
<!-- </record>--> <!-- </record>-->
<record id="product_functional_tool_sf" model="product.product"> <record id="product_functional_tool_sf" model="product.product">

View File

@@ -17,31 +17,33 @@
attrs="{'invisible': ['|','|', ('categ_type', '!=', '成品'),('categ_type', '=', False),('model_file', '=', False)]}"/> attrs="{'invisible': ['|','|', ('categ_type', '!=', '成品'),('categ_type', '=', False),('model_file', '=', False)]}"/>
<field name='cutting_tool_type' invisible="1"/> <field name='cutting_tool_type' invisible="1"/>
<field name="fixture_material_type" invisible="1"/> <field name="fixture_material_type" invisible="1"/>
<field name="embryo_model_type_id" string="模型类型" <field name="embryo_model_type_id" string="模型类型" options="{'no_create': True}"
attrs="{'invisible': ['|',('categ_type', '!=', '坯料'),('categ_type', '=', False)],'readonly': [('id', '!=', False)]}"/> attrs="{'invisible': ['|',('categ_type', '!=', '坯料'),('categ_type', '=', False)],'readonly': [('id', '!=', False)]}"/>
<field name="materials_id" string="材料" placeholder="请选择" <field name="materials_id" string="材料" placeholder="请选择" options="{'no_create': True}"
attrs="{'invisible': [('categ_type', 'not in', ['成品','坯料', '原材料'])],'readonly': [('id', '!=', False)]}"/> attrs="{'invisible': [('categ_type', 'not in', ['成品','坯料', '原材料'])],'readonly': [('id', '!=', False)]}"/>
<field name="materials_type_id" string="型号" placeholder="请选择" <field name="materials_type_id" string="型号" placeholder="请选择" options="{'no_create': True}"
domain="[('materials_id', '=', materials_id)]" domain="[('materials_id', '=', materials_id)]"
attrs="{'invisible': [('categ_type', 'not in', ['成品','坯料', '原材料'])],'readonly': [('id', '!=', False)]}"/> attrs="{'invisible': [('categ_type', 'not in', ['成品','坯料', '原材料'])],'readonly': [('id', '!=', False)]}"/>
<field name="server_product_process_parameters_id" string="表面工艺参数" <field name="server_product_process_parameters_id" string="表面工艺参数"
options="{'no_create': True}" options="{'no_create': True}"
attrs="{'invisible': ['|',('categ_type', '!=', '表面工艺'),('categ_type', '=', False)]}"/> attrs="{'invisible': ['|',('categ_type', '!=', '表面工艺'),('categ_type', '=', False)]}"/>
<field name="cutting_tool_material_id" <field name="cutting_tool_material_id" class="custom_required"
attrs="{'invisible': [('categ_type', '!=', '刀具')],'readonly': [('id', '!=', False)]}" options="{'no_create': True}"
attrs="{'invisible': [('categ_type', '!=', '刀具')],'required': [('categ_type', '=', '刀具')],'readonly': [('id', '!=', False)]}"
placeholder="请选择"/> placeholder="请选择"/>
<field name="cutting_tool_model_id" placeholder="请选择" <field name="cutting_tool_model_id" placeholder="请选择" class="custom_required"
attrs="{'invisible': [('categ_type', '!=', '刀具')],'readonly': [('id', '!=', False)]}" options="{'no_create': True}"
domain="[('cutting_tool_material_id','=',cutting_tool_material_id)]"/> attrs="{'invisible': [('categ_type', '!=', '刀具')],'required': [('categ_type', '=', '刀具')],'readonly': [('id', '!=', False)]}"/>
<field name="specification_id" placeholder="请选择" <field name="specification_id" placeholder="请选择" class="custom_required"
attrs="{'invisible': [('categ_type', '!=', '刀具')],'readonly': [('id', '!=', False)]}" attrs="{'invisible': [('categ_type', '!=', '刀具')],'required': [('categ_type', '=', '刀具')],'readonly': [('id', '!=', False)]}"
domain="[('standard_library_id','=',cutting_tool_model_id)]"/> domain="[('standard_library_id','=',cutting_tool_model_id)]"/>
<field name="fixture_material_id" attrs="{'invisible': [('categ_type', '!=', '夹具')]}" <field name="fixture_material_id" attrs="{'invisible': [('categ_type', '!=', '夹具')]}"
placeholder="请选择"/> placeholder="请选择" options="{'no_create': True}"/>
<field name="fixture_model_id" string="型号" placeholder="请选择" <field name="fixture_model_id" string="型号" placeholder="请选择" options="{'no_create': True}"
attrs="{'invisible': [('categ_type', '!=', '夹具')],'required': [('categ_type', '=', '夹具')]}" attrs="{'invisible': [('categ_type', '!=', '夹具')],'required': [('categ_type', '=', '夹具')]}"
domain="[('fixture_material_id','=',fixture_material_id)]"/> domain="[('fixture_material_id','=',fixture_material_id)]"/>
<field name="specification_fixture_id" string="规格" placeholder="请选择" <field name="specification_fixture_id" string="规格" placeholder="请选择"
options="{'no_create': True}"
attrs="{'invisible': [('categ_type', '!=', '夹具')]}" attrs="{'invisible': [('categ_type', '!=', '夹具')]}"
domain="[('fixture_model_id','=',fixture_model_id)]"/> domain="[('fixture_model_id','=',fixture_model_id)]"/>
</field> </field>
@@ -352,7 +354,7 @@
attrs="{'invisible': [('cutting_tool_type', 'not in', ('刀杆','刀盘'))],'readonly': [('id', '!=', False)]}"/> attrs="{'invisible': [('cutting_tool_type', 'not in', ('刀杆','刀盘'))],'readonly': [('id', '!=', False)]}"/>
<field name="cutting_tool_locating_slot_code" <field name="cutting_tool_locating_slot_code"
attrs="{'invisible': [('cutting_tool_type', 'not in', ('刀杆','刀盘'))],'readonly': [('id', '!=', False)]}"/> attrs="{'invisible': [('cutting_tool_type', 'not in', ('刀杆','刀盘'))],'readonly': [('id', '!=', False)]}"/>
<field name="cutting_tool_blade_id" <field name="cutting_tool_blade_id" options="{'no_create': True}"
attrs="{'invisible': [('cutting_tool_type', 'not in', ('刀杆','刀盘'))],'readonly': [('id', '!=', False)]}"/> attrs="{'invisible': [('cutting_tool_type', 'not in', ('刀杆','刀盘'))],'readonly': [('id', '!=', False)]}"/>
<field name="cutting_tool_tool_shim" <field name="cutting_tool_tool_shim"
attrs="{'invisible': [('cutting_tool_type', '!=', '刀杆')],'readonly': [('id', '!=', False)]}"/> attrs="{'invisible': [('cutting_tool_type', '!=', '刀杆')],'readonly': [('id', '!=', False)]}"/>

View File

@@ -51,7 +51,7 @@ class SfEquipmentSaintenanceStandards(models.Model):
domain="[('category_id', '=', maintenance_equipment_category_id)]" domain="[('category_id', '=', maintenance_equipment_category_id)]"
) )
maintenance_standards_ids = fields.One2many('maintenance.standards', 'equipment_maintenance_standards_id', maintenance_standards_ids = fields.One2many('maintenance.standards', 'equipment_maintenance_standards_id',
string='维保项目', widget='one2many_list') string='维保项目')
eq_maintenance_ids = fields.One2many('maintenance.equipment', 'eq_maintenance_id', string='保养设备') eq_maintenance_ids = fields.One2many('maintenance.equipment', 'eq_maintenance_id', string='保养设备')
overhaul_ids = fields.One2many('maintenance.equipment', 'overhaul_id', string='检修设备') overhaul_ids = fields.One2many('maintenance.equipment', 'overhaul_id', string='检修设备')

View File

@@ -13,7 +13,7 @@ class SfMaintenanceEquipmentCategory(models.Model):
_description = '设备类别' _description = '设备类别'
equipment_type = fields.Selection([('机床', '机床'), ('机器人', '机器人'), ('AGV小车', 'AGV小车'), equipment_type = fields.Selection([('机床', '机床'), ('机器人', '机器人'), ('AGV小车', 'AGV小车'),
('检测设备', '检测设备')], string='类型', default='机床') ('检测设备', '检测设备'), ('其他', '其他')], string='类型', default='机床')
equipment_type_code = fields.Char('简写') equipment_type_code = fields.Char('简写')
@@ -104,18 +104,18 @@ class SfMaintenanceEquipment(models.Model):
tool_diameter_max = fields.Char('刀具刀径max(mm)') tool_diameter_max = fields.Char('刀具刀径max(mm)')
tool_diameter_min = fields.Char('刀具刀径min(mm)') tool_diameter_min = fields.Char('刀具刀径min(mm)')
def get_no(self): # def get_no(self):
partner = self.env['maintenance.equipment'].sudo().search( # partner = self.env['maintenance.equipment'].sudo().search(
[('MTcode', '!=', '')], # [('MTcode', '!=', '')],
limit=1, # limit=1,
order="id desc") # order="id desc")
if not partner: # if not partner:
num = "%04d" % 1 # num = "%04d" % 1
#
else: # else:
m = int(partner.MTcode) + 1 # m = int(partner.MTcode) + 1
num = "%04d" % m # num = "%04d" % m
return num # return num
equipment_maintenance_standards_ids = fields.Many2many('equipment.maintenance.standards', equipment_maintenance_standards_ids = fields.Many2many('equipment.maintenance.standards',
@@ -145,7 +145,7 @@ class SfMaintenanceEquipment(models.Model):
else: else:
record.equipment_maintenance_standards_ids = False record.equipment_maintenance_standards_ids = False
MTcode = fields.Char("机台编码", default=get_no) MTcode = fields.Char("机台编码")
created_user = fields.Many2one('res.users', string='创建人', default=lambda self: self.env.user) created_user = fields.Many2one('res.users', string='创建人', default=lambda self: self.env.user)
equipment_type = fields.Selection([('机床', '机床'), ('机器人', '机器人'), ('AGV小车', 'AGV小车'), equipment_type = fields.Selection([('机床', '机床'), ('机器人', '机器人'), ('AGV小车', 'AGV小车'),
('检测设备', '检测设备')], compute='_compute_category_id') ('检测设备', '检测设备')], compute='_compute_category_id')
@@ -178,7 +178,7 @@ class SfMaintenanceEquipment(models.Model):
type_id = fields.Many2one('sf.machine_tool.type', '型号') type_id = fields.Many2one('sf.machine_tool.type', '型号')
state = fields.Selection( state = fields.Selection(
[("正常", "正常"), ("故障停机", "故障停机"), ("计划维保", "计划维保"),("空闲", "空闲"),("封存(报废)", "封存(报废)")], [("正常", "正常"), ("故障停机", "故障停机"), ("计划维保", "计划维保"), ("空闲", "空闲"), ("封存(报废)", "封存(报废)")],
default='正常', string="机床状态") default='正常', string="机床状态")
run_time = fields.Char('总运行时长') run_time = fields.Char('总运行时长')
# 0606新增字段 # 0606新增字段
@@ -230,7 +230,15 @@ class SfMaintenanceEquipment(models.Model):
equipment = super(SfMaintenanceEquipment, self).create(vals) equipment = super(SfMaintenanceEquipment, self).create(vals)
if equipment.category_id: if equipment.category_id:
equipment.name = equipment.MTcode + '#' + equipment.category_id.name equipment.name = "%s%s" % (equipment.MTcode, equipment.category_id.name)
if equipment.category_id.equipment_type == '机床':
equipment_id = self.env['maintenance.equipment.oee'].search([('equipment_id', '=', equipment.id)])
if not equipment_id:
self.env['maintenance.equipment.oee'].sudo().create({
'equipment_id': equipment.id,
'name': equipment.name,
})
# 在创建设备之后执行一些自定义逻辑 # 在创建设备之后执行一些自定义逻辑
# ... # ...
@@ -376,8 +384,8 @@ class SfMaintenanceEquipment(models.Model):
AGV_turning_radius = fields.Char('最小转弯半径') AGV_turning_radius = fields.Char('最小转弯半径')
AGV_gradeability_max = fields.Integer('最大爬坡度') AGV_gradeability_max = fields.Integer('最大爬坡度')
AGV_parking_accuracy = fields.Char('停车精度') AGV_parking_accuracy = fields.Char('停车精度')
AGV_load_weight_max = fields.Char('最大负载重量') AGV_load_weight_max = fields.Char('AGV最大负载重量')
AGV_weight = fields.Char('本体总重量') AGV_weight = fields.Char('AGV本体总重量')
AGV_job_duration = fields.Char('连续作业时长') AGV_job_duration = fields.Char('连续作业时长')
AGV_transfer_mode = fields.Char('移载方式') AGV_transfer_mode = fields.Char('移载方式')
AGV_drive_motor_power = fields.Char('驱动电机功率') AGV_drive_motor_power = fields.Char('驱动电机功率')
@@ -387,11 +395,11 @@ class SfMaintenanceEquipment(models.Model):
AGV_veer_motor_speed_ratio = fields.Char('转向电机速比') AGV_veer_motor_speed_ratio = fields.Char('转向电机速比')
AGV_move_motor_power = fields.Char('前移电机功率') AGV_move_motor_power = fields.Char('前移电机功率')
AGV_move_motor_speed_ratio = fields.Char('前移电机速比') AGV_move_motor_speed_ratio = fields.Char('前移电机速比')
AGV_drive_mode = fields.Char('驱动方式') AGV_drive_mode = fields.Char('AGV驱动方式')
AGV_navigation_mode = fields.Char('导航方式') AGV_navigation_mode = fields.Char('导航方式')
AGV_communication_mode = fields.Char('通讯方式') AGV_communication_mode = fields.Char('通讯方式')
AGV_direction_travel = fields.Char('行走方向') AGV_direction_travel = fields.Char('行走方向')
AGV_power_requirements = fields.Char('电源要求') AGV_power_requirements = fields.Char('AGV电源要求')
AGV_charge_mode = fields.Selection([('手动', '手动'), ('自动', '自动')], string='充电方式') AGV_charge_mode = fields.Selection([('手动', '手动'), ('自动', '自动')], string='充电方式')
AGV_security = fields.Char('安全防护') AGV_security = fields.Char('安全防护')
AGV_operating_temperature = fields.Char('环境温度') AGV_operating_temperature = fields.Char('环境温度')
@@ -408,8 +416,8 @@ class SfMaintenanceEquipment(models.Model):
detect_measurement_mode = fields.Selection([('光栅尺', '光栅尺'), ('容栅', '容栅'), ('磁栅', '磁栅'), detect_measurement_mode = fields.Selection([('光栅尺', '光栅尺'), ('容栅', '容栅'), ('磁栅', '磁栅'),
('激光干涉仪', '激光干涉仪')], string='测量方式') ('激光干涉仪', '激光干涉仪')], string='测量方式')
detect_resolution = fields.Char('分辨率') detect_resolution = fields.Char('分辨率')
detect_load_weight_max = fields.Char('最大负载重量') detect_load_weight_max = fields.Char('检测设备最大负载重量')
detect_weight = fields.Char('本体总重量') detect_weight = fields.Char('检测设备本体总重量')
detect_measurement_length = fields.Char('深孔测量长度(max)') detect_measurement_length = fields.Char('深孔测量长度(max)')
detect_control_mode = fields.Char('控制方式') detect_control_mode = fields.Char('控制方式')
detect_balance_mode_for_Z = fields.Char('Z轴平衡方式') detect_balance_mode_for_Z = fields.Char('Z轴平衡方式')
@@ -429,11 +437,11 @@ class SfMaintenanceEquipment(models.Model):
robot_gripping_of_workpieces_W = fields.Char('可抓取工件(宽)') robot_gripping_of_workpieces_W = fields.Char('可抓取工件(宽)')
robot_gripping_of_workpieces_H = fields.Char('可抓取工件(高)') robot_gripping_of_workpieces_H = fields.Char('可抓取工件(高)')
robot_radius_of_the_boom = fields.Char('展臂半径') robot_radius_of_the_boom = fields.Char('展臂半径')
robot_load_weight_max = fields.Char('最大负载重量') robot_load_weight_max = fields.Char('机械臂最大负载重量')
robot_weight = fields.Char('本体总重量') robot_weight = fields.Char('机械臂本体总重量')
robot_repeatable_positioning_accuracy = fields.Char('重复定位精度') robot_repeatable_positioning_accuracy = fields.Char('重复定位精度')
robot_axis_num = fields.Selection([('2轴', '2轴'), ('3轴', '3轴'), ('4轴', '4轴'), ('5轴', '5轴'), ('6轴', '6轴'), robot_axis_num = fields.Selection([('2轴', '2轴'), ('3轴', '3轴'), ('4轴', '4轴'), ('5轴', '5轴'), ('6轴', '6轴'),
('7轴', '7轴'), ('8轴', '8轴')], string='轴数') ('7轴', '7轴'), ('8轴', '8轴')], string='机械臂轴数')
axis_ids = fields.One2many('sf.robot.axis.num', 'equipment_id', string='动作范围') axis_ids = fields.One2many('sf.robot.axis.num', 'equipment_id', string='动作范围')
robot_track_dimensions_L = fields.Char('轨道尺寸(长)') robot_track_dimensions_L = fields.Char('轨道尺寸(长)')
robot_track_dimensions_W = fields.Char('轨道尺寸(宽)') robot_track_dimensions_W = fields.Char('轨道尺寸(宽)')
@@ -567,7 +575,6 @@ class SfMaintenanceEquipment(models.Model):
'T_tool_time': item.T_tool_time, 'T_tool_time': item.T_tool_time,
'C_tool_time': item.C_tool_time, 'C_tool_time': item.C_tool_time,
'jiancheng': item.category_id.equipment_type_code, 'jiancheng': item.category_id.equipment_type_code,
'function_type': item.function_type,
} }
machine_tool_list.append(val) machine_tool_list.append(val)
# kw = machine_tool_list # kw = machine_tool_list

View File

@@ -1,24 +1,22 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_equipment_maintenance_standards,equipment_maintenance_standards,model_equipment_maintenance_standards,sf_group_equipment_user,1,1,1,0 access_equipment_maintenance_standards,equipment_maintenance_standards,model_equipment_maintenance_standards,sf_maintenance.sf_group_equipment_user,1,1,1,0
access_sf_maintenance_logs,sf_maintenance_logs,model_sf_maintenance_logs,sf_group_equipment_user,1,0,0,0 access_sf_maintenance_logs_sf_group_equipment_user,sf_maintenance_logs,model_sf_maintenance_logs,sf_maintenance.sf_group_equipment_user,1,0,0,0
access_sf_maintenance_logs,sf_maintenance_logs,model_sf_maintenance_logs,sf_group_equipment_manager,1,1,1,0 access_sf_maintenance_logs_sf_group_equipment_manager,sf_maintenance_logs,model_sf_maintenance_logs,sf_maintenance.sf_group_equipment_manager,1,1,1,0
access_maintenance_equipment,maintenance_equipment,model_maintenance_equipment,sf_group_equipment_user,1,0,0,0 access_maintenance_equipment_sf_group_equipment_user,maintenance_equipment,model_maintenance_equipment,sf_maintenance.sf_group_equipment_user,1,0,0,0
access_maintenance_equipment,maintenance_equipment,model_maintenance_equipment,sf_group_equipment_manager,1,1,1,0 access_maintenance_equipment,maintenance_equipment,model_maintenance_equipment,sf_maintenance.sf_group_equipment_manager,1,1,1,0
access_maintenance_equipment_oee,maintenance_equipment_oee,model_maintenance_equipment_oee,sf_group_equipment_user,1,0,0,0 access_maintenance_equipment_oee_sf_group_equipment_user,maintenance_equipment_oee,model_maintenance_equipment_oee,sf_maintenance.sf_group_equipment_user,1,0,0,0
access_maintenance_equipment_oee,maintenance_equipment_oee,model_maintenance_equipment_oee,sf_group_equipment_manager,1,1,1,0 access_maintenance_equipment_oee,maintenance_equipment_oee,model_maintenance_equipment_oee,sf_maintenance.sf_group_equipment_manager,1,1,1,0
access_maintenance_equipment_oee,maintenance_equipment_oee,model_maintenance_equipment_oee,base.group_user,1,1,1,1 access_maintenance_equipment_oee_logs_sf_group_equipment_user,maintenance_equipment_oee_logs,model_maintenance_equipment_oee_logs,sf_maintenance.sf_group_equipment_user,1,0,0,0
access_maintenance_equipment_oee_logs,maintenance_equipment_oee_logs,model_maintenance_equipment_oee_logs,sf_group_equipment_user,1,0,0,0 access_maintenance_equipment_oee_logs,maintenance_equipment_oee_logs,model_maintenance_equipment_oee_logs,sf_maintenance.sf_group_equipment_manager,1,1,1,0
access_maintenance_equipment_oee_logs,maintenance_equipment_oee_logs,model_maintenance_equipment_oee_logs,sf_group_equipment_manager,1,1,1,0 access_maintenance_standards_sf_group_equipment_user,maintenance_standards,model_maintenance_standards,sf_maintenance.sf_group_equipment_user,1,0,0,0
access_maintenance_equipment_oee_logs,maintenance_equipment_oee_logs,model_maintenance_equipment_oee_logs,base.group_user,1,1,1,1 access_maintenance_standards,maintenance_standards,model_maintenance_standards,sf_maintenance.sf_group_equipment_manager,1,1,1,0
access_maintenance_standards,maintenance_standards,model_maintenance_standards,sf_group_equipment_user,1,0,0,0 access_maintenance_standard_image_sf_group_equipment_user,maintenance_standard_image,model_maintenance_standard_image,sf_maintenance.sf_group_equipment_user,1,0,0,0
access_maintenance_standards,maintenance_standards,model_maintenance_standards,sf_group_equipment_manager,1,1,1,0 access_maintenance_standard_image,maintenance_standard_image,model_maintenance_standard_image,sf_maintenance.sf_group_equipment_manager,1,1,1,0
access_maintenance_standard_image,maintenance_standard_image,model_maintenance_standard_image,sf_group_equipment_user,1,0,0,0 access_sf_robot_axis_num_sf_group_equipment_user,sf_robot_axis_num,model_sf_robot_axis_num,sf_maintenance.sf_group_equipment_user,1,0,0,0
access_maintenance_standard_image,maintenance_standard_image,model_maintenance_standard_image,sf_group_equipment_manager,1,1,1,0 access_sf_robot_axis_num,sf_robot_axis_num,model_sf_robot_axis_num,sf_maintenance.sf_group_equipment_manager,1,1,1,0
access_sf_robot_axis_num,sf_robot_axis_num,model_sf_robot_axis_num,sf_group_equipment_user,1,0,0,0 access_maintenance_equipment_agv_log_sf_group_equipment_user,maintenance_equipment_agv_log,model_maintenance_equipment_agv_log,sf_maintenance.sf_group_equipment_user,1,0,0,0
access_sf_robot_axis_num,sf_robot_axis_num,model_sf_robot_axis_num,sf_group_equipment_manager,1,1,1,0 access_maintenance_equipment_agv_log,maintenance_equipment_agv_log,model_maintenance_equipment_agv_log,sf_maintenance.sf_group_equipment_manager,1,1,1,0
access_maintenance_equipment_agv_log,maintenance_equipment_agv_log,model_maintenance_equipment_agv_log,sf_group_equipment_user,1,0,0,0
access_maintenance_equipment_agv_log,maintenance_equipment_agv_log,model_maintenance_equipment_agv_log,sf_group_equipment_manager,1,1,1,0
access_maintenance_equipment_agv_log,maintenance_equipment_agv_log,model_maintenance_equipment_agv_log,base.group_user,1,1,1,1
access_maintenance_system_user,equipment.request system user,maintenance.model_maintenance_request,base.group_user,1,0,0,0 access_maintenance_system_user,equipment.request system user,maintenance.model_maintenance_request,base.group_user,1,0,0,0
@@ -30,4 +28,43 @@ access_maintenance_standard_image_group_plan_dispatch,maintenance_standard_image
access_equipment_maintenance_standards_group_plan_dispatch,equipment_maintenance_standards,model_equipment_maintenance_standards,sf_base.group_plan_dispatch,1,0,0,0 access_equipment_maintenance_standards_group_plan_dispatch,equipment_maintenance_standards,model_equipment_maintenance_standards,sf_base.group_plan_dispatch,1,0,0,0
access_maintenance_standards_group_plan_dispatch,maintenance_standards,model_maintenance_standards,sf_base.group_plan_dispatch,1,0,0,0 access_maintenance_standards_group_plan_dispatch,maintenance_standards,model_maintenance_standards,sf_base.group_plan_dispatch,1,0,0,0
access_sf_robot_axis_num_group_plan_dispatch,sf.robot.axis.num,model_sf_robot_axis_num,sf_base.group_plan_dispatch,1,0,0,0 access_sf_robot_axis_num_group_plan_dispatch,sf.robot.axis.num,model_sf_robot_axis_num,sf_base.group_plan_dispatch,1,0,0,0
access_sf_machine_tool_sf_group_equipment_user,sf_machine_tool,sf_base.model_sf_machine_tool,sf_maintenance.sf_group_equipment_user,1,0,0,0
access_sf_machine_tool_admin_sf_group_equipment_user,sf_machine_tool_admin,sf_base.model_sf_machine_tool,sf_maintenance.sf_group_equipment_user,1,0,0,0
access_sf_machine_tool_type_sf_group_equipment_user,sf_machine_tool_type,sf_base.model_sf_machine_tool_type,sf_maintenance.sf_group_equipment_user,1,0,0,0
access_sf_machine_tool_type_admin_sf_group_equipment_user,sf_machine_tool_type_admin,sf_base.model_sf_machine_tool_type,sf_maintenance.sf_group_equipment_user,1,0,0,0
access_sf_machine_brand_sf_group_equipment_user,sf_machine_brand,sf_base.model_sf_machine_brand,sf_maintenance.sf_group_equipment_user,1,0,0,0
access_sf_machine_brand_admin_sf_group_equipment_user,sf_machine_brand_admin,sf_base.model_sf_machine_brand,sf_maintenance.sf_group_equipment_user,1,0,0,0
access_sf_machine_brand_tags_sf_group_equipment_user,sf_machine_brand_tags,sf_base.model_sf_machine_brand_tags,sf_maintenance.sf_group_equipment_user,1,0,0,0
access_sf_machine_brand_tags_admin_sf_group_equipment_user,sf_machine_brand_tags_admin,sf_base.model_sf_machine_brand_tags,sf_maintenance.sf_group_equipment_user,1,0,0,0
access_sf_machine_control_system_sf_group_equipment_user,sf_machine_control_system,sf_base.model_sf_machine_control_system,sf_maintenance.sf_group_equipment_user,1,0,0,0
access_sf_machine_control_system_admin_sf_group_equipment_user,sf_machine_control_system_admin,sf_base.model_sf_machine_control_system,sf_maintenance.sf_group_equipment_user,1,0,0,0
access_sf_processing_order_sf_group_equipment_user,sf_processing_order,sf_base.model_sf_processing_order,sf_maintenance.sf_group_equipment_user,1,0,0,0
access_sf_processing_order_admin_sf_group_equipment_user,sf_processing_order_admin,sf_base.model_sf_processing_order,sf_maintenance.sf_group_equipment_user,1,0,0,0
access_sf_production_process_sf_group_equipment_user,sf_production_process,sf_base.model_sf_production_process,sf_maintenance.sf_group_equipment_user,1,0,0,0
access_sf_production_process_admin_sf_group_equipment_user,sf_production_process_admin,sf_base.model_sf_production_process,sf_maintenance.sf_group_equipment_user,1,0,0,0
access_sf_production_materials_sf_group_equipment_user,sf_production_materials,sf_base.model_sf_production_materials,sf_maintenance.sf_group_equipment_user,1,0,0,0
access_sf_production_materials_admin_sf_group_equipment_user,sf_production_materials_admin,sf_base.model_sf_production_materials,sf_maintenance.sf_group_equipment_user,1,0,0,0
access_sf_materials_model_sf_group_equipment_user,sf_materials_model,sf_base.model_sf_materials_model,sf_maintenance.sf_group_equipment_user,1,0,0,0
access_sf_materials_model_admin_sf_group_equipment_user,sf_materials_model_admin,sf_base.model_sf_materials_model,sf_maintenance.sf_group_equipment_user,1,0,0,0
access_sf_processing_technology_sf_group_equipment_user,sf_processing_technology,sf_base.model_sf_processing_technology,sf_maintenance.sf_group_equipment_user,1,0,0,0
access_sf_processing_technology_admin_sf_group_equipment_user,sf_processing_technology_admin,sf_base.model_sf_processing_technology,sf_maintenance.sf_group_equipment_user,1,0,0,0
access_sf_supplier_sort_sf_group_equipment_user,sf_supplier_sort,sf_base.model_sf_supplier_sort,sf_maintenance.sf_group_equipment_user,1,0,0,0
access_sf_supplier_sort_admin_sf_group_equipment_user,sf_supplier_sort_admin,sf_base.model_sf_supplier_sort,sf_maintenance.sf_group_equipment_user,1,0,0,0
access_sf_production_process_parameter_sf_group_equipment_user,sf_production_process_parameter,sf_base.model_sf_production_process_parameter,sf_maintenance.sf_group_equipment_user,1,0,0,0
access_sf_production_process_parameter_group_plan_director_sf_group_equipment_user,sf_production_process_parameter_group_plan_director,sf_base.model_sf_production_process_parameter,sf_maintenance.sf_group_equipment_user,1,0,0,0
access_sf_production_process_parameter_group_purchase_director_sf_group_equipment_user,sf_production_process_parameter_group_purchase_director,sf_base.model_sf_production_process_parameter,sf_maintenance.sf_group_equipment_user,1,0,0,0
access_sf_production_process_parameter_group_sale_director_sf_group_equipment_user,sf_production_process_parameter_group_sale_director,sf_base.model_sf_production_process_parameter,sf_maintenance.sf_group_equipment_user,1,0,0,0
access_sf_production_process_parameter_admin_sf_group_equipment_user,sf_production_process_parameter_admin,sf_base.model_sf_production_process_parameter,sf_maintenance.sf_group_equipment_user,1,0,0,0
access_sf_production_process_category_sf_group_equipment_user,sf_production_process_category,sf_base.model_sf_production_process_category,sf_maintenance.sf_group_equipment_user,1,0,0,0
access_sf_production_process_category_admin_sf_group_equipment_user,sf_production_process_category_admin,sf_base.model_sf_production_process_category,sf_maintenance.sf_group_equipment_user,1,0,0,0
access_sf_machine_tool_category_sf_group_equipment_user,sf_machine_tool_category,sf_base.model_sf_machine_tool_category,sf_maintenance.sf_group_equipment_user,1,0,0,0
access_sf_machine_tool_category_admin_sf_group_equipment_user,sf_machine_tool_category_admin,sf_base.model_sf_machine_tool_category,sf_maintenance.sf_group_equipment_user,1,0,0,0
access_sf_cutting_tool_material_sf_group_equipment_user,sf_cutting_tool_material,sf_base.model_sf_cutting_tool_material,sf_maintenance.sf_group_equipment_user,1,0,0,0
access_sf_cutting_tool_material_admin_sf_group_equipment_user,sf_cutting_tool_material_admin,sf_base.model_sf_cutting_tool_material,sf_maintenance.sf_group_equipment_user,1,0,0,0
access_sf_cutting_tool_type_sf_group_equipment_user,sf_cutting_tool_type,sf_base.model_sf_cutting_tool_type,sf_maintenance.sf_group_equipment_user,1,0,0,0
access_sf_cutting_tool_type_admin_sf_group_equipment_user,sf_cutting_tool_type_admin,sf_base.model_sf_cutting_tool_type,sf_maintenance.sf_group_equipment_user,1,0,0,0
access_sf_cutting_tool_type_group_purchase_director_sf_group_equipment_user,sf_cutting_tool_type_group_purchase_director,sf_base.model_sf_cutting_tool_type,sf_maintenance.sf_group_equipment_user,1,0,0,0
access_sf_cutting_tool_type_group_sale_director_sf_group_equipment_user,sf_cutting_tool_type_group_sale_director,sf_base.model_sf_cutting_tool_type,sf_maintenance.sf_group_equipment_user,1,0,0,0
access_sf_cutting_tool_type_group_plan_director_sf_group_equipment_user,sf_cutting_tool_type_group_plan_director,sf_base.model_sf_cutting_tool_type,sf_maintenance.sf_group_equipment_user,1,0,0,0
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 access_equipment_maintenance_standards equipment_maintenance_standards model_equipment_maintenance_standards sf_group_equipment_user sf_maintenance.sf_group_equipment_user 1 1 1 0
3 access_sf_maintenance_logs access_sf_maintenance_logs_sf_group_equipment_user sf_maintenance_logs model_sf_maintenance_logs sf_group_equipment_user sf_maintenance.sf_group_equipment_user 1 0 0 0
4 access_sf_maintenance_logs access_sf_maintenance_logs_sf_group_equipment_manager sf_maintenance_logs model_sf_maintenance_logs sf_group_equipment_manager sf_maintenance.sf_group_equipment_manager 1 1 1 0
5 access_maintenance_equipment access_maintenance_equipment_sf_group_equipment_user maintenance_equipment model_maintenance_equipment sf_group_equipment_user sf_maintenance.sf_group_equipment_user 1 0 0 0
6 access_maintenance_equipment maintenance_equipment model_maintenance_equipment sf_group_equipment_manager sf_maintenance.sf_group_equipment_manager 1 1 1 0
7 access_maintenance_equipment_oee access_maintenance_equipment_oee_sf_group_equipment_user maintenance_equipment_oee model_maintenance_equipment_oee sf_group_equipment_user sf_maintenance.sf_group_equipment_user 1 0 0 0
8 access_maintenance_equipment_oee maintenance_equipment_oee model_maintenance_equipment_oee sf_group_equipment_manager sf_maintenance.sf_group_equipment_manager 1 1 1 0
9 access_maintenance_equipment_oee access_maintenance_equipment_oee_logs_sf_group_equipment_user maintenance_equipment_oee maintenance_equipment_oee_logs model_maintenance_equipment_oee model_maintenance_equipment_oee_logs base.group_user sf_maintenance.sf_group_equipment_user 1 1 0 1 0 1 0
10 access_maintenance_equipment_oee_logs maintenance_equipment_oee_logs model_maintenance_equipment_oee_logs sf_group_equipment_user sf_maintenance.sf_group_equipment_manager 1 0 1 0 1 0
11 access_maintenance_equipment_oee_logs access_maintenance_standards_sf_group_equipment_user maintenance_equipment_oee_logs maintenance_standards model_maintenance_equipment_oee_logs model_maintenance_standards sf_group_equipment_manager sf_maintenance.sf_group_equipment_user 1 1 0 1 0 0
12 access_maintenance_equipment_oee_logs access_maintenance_standards maintenance_equipment_oee_logs maintenance_standards model_maintenance_equipment_oee_logs model_maintenance_standards base.group_user sf_maintenance.sf_group_equipment_manager 1 1 1 1 0
13 access_maintenance_standards access_maintenance_standard_image_sf_group_equipment_user maintenance_standards maintenance_standard_image model_maintenance_standards model_maintenance_standard_image sf_group_equipment_user sf_maintenance.sf_group_equipment_user 1 0 0 0
14 access_maintenance_standards access_maintenance_standard_image maintenance_standards maintenance_standard_image model_maintenance_standards model_maintenance_standard_image sf_group_equipment_manager sf_maintenance.sf_group_equipment_manager 1 1 1 0
15 access_maintenance_standard_image access_sf_robot_axis_num_sf_group_equipment_user maintenance_standard_image sf_robot_axis_num model_maintenance_standard_image model_sf_robot_axis_num sf_group_equipment_user sf_maintenance.sf_group_equipment_user 1 0 0 0
16 access_maintenance_standard_image access_sf_robot_axis_num maintenance_standard_image sf_robot_axis_num model_maintenance_standard_image model_sf_robot_axis_num sf_group_equipment_manager sf_maintenance.sf_group_equipment_manager 1 1 1 0
17 access_sf_robot_axis_num access_maintenance_equipment_agv_log_sf_group_equipment_user sf_robot_axis_num maintenance_equipment_agv_log model_sf_robot_axis_num model_maintenance_equipment_agv_log sf_group_equipment_user sf_maintenance.sf_group_equipment_user 1 0 0 0
18 access_sf_robot_axis_num access_maintenance_equipment_agv_log sf_robot_axis_num maintenance_equipment_agv_log model_sf_robot_axis_num model_maintenance_equipment_agv_log sf_group_equipment_manager sf_maintenance.sf_group_equipment_manager 1 1 1 0
19 access_maintenance_equipment_agv_log access_maintenance_system_user maintenance_equipment_agv_log equipment.request system user model_maintenance_equipment_agv_log maintenance.model_maintenance_request sf_group_equipment_user base.group_user 1 0 0 0
access_maintenance_equipment_agv_log maintenance_equipment_agv_log model_maintenance_equipment_agv_log sf_group_equipment_manager 1 1 1 0
access_maintenance_equipment_agv_log maintenance_equipment_agv_log model_maintenance_equipment_agv_log base.group_user 1 1 1 1
20 access_maintenance_system_user access_maintenance_equipment_group_plan_dispatch equipment.request system user maintenance.equipment maintenance.model_maintenance_request maintenance.model_maintenance_equipment base.group_user sf_base.group_plan_dispatch 1 0 0 0
21 access_maintenance_equipment_group_plan_dispatch access_maintenance_equipment_oee_group_plan_dispatch maintenance.equipment maintenance_equipment_oee maintenance.model_maintenance_equipment model_maintenance_equipment_oee sf_base.group_plan_dispatch 1 0 0 0
22 access_maintenance_equipment_oee_group_plan_dispatch access_sf_maintenance_logs_group_plan_dispatch maintenance_equipment_oee sf_maintenance_logs model_maintenance_equipment_oee model_sf_maintenance_logs sf_base.group_plan_dispatch 1 0 0 0
28 access_sf_machine_tool_admin_sf_group_equipment_user sf_machine_tool_admin sf_base.model_sf_machine_tool sf_maintenance.sf_group_equipment_user 1 0 0 0
29 access_sf_machine_tool_type_sf_group_equipment_user sf_machine_tool_type sf_base.model_sf_machine_tool_type sf_maintenance.sf_group_equipment_user 1 0 0 0
30 access_sf_machine_tool_type_admin_sf_group_equipment_user sf_machine_tool_type_admin sf_base.model_sf_machine_tool_type sf_maintenance.sf_group_equipment_user 1 0 0 0
31 access_sf_machine_brand_sf_group_equipment_user sf_machine_brand sf_base.model_sf_machine_brand sf_maintenance.sf_group_equipment_user 1 0 0 0
32 access_sf_machine_brand_admin_sf_group_equipment_user sf_machine_brand_admin sf_base.model_sf_machine_brand sf_maintenance.sf_group_equipment_user 1 0 0 0
33 access_sf_machine_brand_tags_sf_group_equipment_user sf_machine_brand_tags sf_base.model_sf_machine_brand_tags sf_maintenance.sf_group_equipment_user 1 0 0 0
34 access_sf_machine_brand_tags_admin_sf_group_equipment_user sf_machine_brand_tags_admin sf_base.model_sf_machine_brand_tags sf_maintenance.sf_group_equipment_user 1 0 0 0
35 access_sf_machine_control_system_sf_group_equipment_user sf_machine_control_system sf_base.model_sf_machine_control_system sf_maintenance.sf_group_equipment_user 1 0 0 0
36 access_sf_machine_control_system_admin_sf_group_equipment_user sf_machine_control_system_admin sf_base.model_sf_machine_control_system sf_maintenance.sf_group_equipment_user 1 0 0 0
37 access_sf_processing_order_sf_group_equipment_user sf_processing_order sf_base.model_sf_processing_order sf_maintenance.sf_group_equipment_user 1 0 0 0
38 access_sf_processing_order_admin_sf_group_equipment_user sf_processing_order_admin sf_base.model_sf_processing_order sf_maintenance.sf_group_equipment_user 1 0 0 0
39 access_sf_production_process_sf_group_equipment_user sf_production_process sf_base.model_sf_production_process sf_maintenance.sf_group_equipment_user 1 0 0 0
40 access_sf_production_process_admin_sf_group_equipment_user sf_production_process_admin sf_base.model_sf_production_process sf_maintenance.sf_group_equipment_user 1 0 0 0
41 access_sf_production_materials_sf_group_equipment_user sf_production_materials sf_base.model_sf_production_materials sf_maintenance.sf_group_equipment_user 1 0 0 0
42 access_sf_production_materials_admin_sf_group_equipment_user sf_production_materials_admin sf_base.model_sf_production_materials sf_maintenance.sf_group_equipment_user 1 0 0 0
43 access_sf_materials_model_sf_group_equipment_user sf_materials_model sf_base.model_sf_materials_model sf_maintenance.sf_group_equipment_user 1 0 0 0
44 access_sf_materials_model_admin_sf_group_equipment_user sf_materials_model_admin sf_base.model_sf_materials_model sf_maintenance.sf_group_equipment_user 1 0 0 0
45 access_sf_processing_technology_sf_group_equipment_user sf_processing_technology sf_base.model_sf_processing_technology sf_maintenance.sf_group_equipment_user 1 0 0 0
46 access_sf_processing_technology_admin_sf_group_equipment_user sf_processing_technology_admin sf_base.model_sf_processing_technology sf_maintenance.sf_group_equipment_user 1 0 0 0
47 access_sf_supplier_sort_sf_group_equipment_user sf_supplier_sort sf_base.model_sf_supplier_sort sf_maintenance.sf_group_equipment_user 1 0 0 0
48 access_sf_supplier_sort_admin_sf_group_equipment_user sf_supplier_sort_admin sf_base.model_sf_supplier_sort sf_maintenance.sf_group_equipment_user 1 0 0 0
49 access_sf_production_process_parameter_sf_group_equipment_user sf_production_process_parameter sf_base.model_sf_production_process_parameter sf_maintenance.sf_group_equipment_user 1 0 0 0
50 access_sf_production_process_parameter_group_plan_director_sf_group_equipment_user sf_production_process_parameter_group_plan_director sf_base.model_sf_production_process_parameter sf_maintenance.sf_group_equipment_user 1 0 0 0
51 access_sf_production_process_parameter_group_purchase_director_sf_group_equipment_user sf_production_process_parameter_group_purchase_director sf_base.model_sf_production_process_parameter sf_maintenance.sf_group_equipment_user 1 0 0 0
52 access_sf_production_process_parameter_group_sale_director_sf_group_equipment_user sf_production_process_parameter_group_sale_director sf_base.model_sf_production_process_parameter sf_maintenance.sf_group_equipment_user 1 0 0 0
53 access_sf_production_process_parameter_admin_sf_group_equipment_user sf_production_process_parameter_admin sf_base.model_sf_production_process_parameter sf_maintenance.sf_group_equipment_user 1 0 0 0
54 access_sf_production_process_category_sf_group_equipment_user sf_production_process_category sf_base.model_sf_production_process_category sf_maintenance.sf_group_equipment_user 1 0 0 0
55 access_sf_production_process_category_admin_sf_group_equipment_user sf_production_process_category_admin sf_base.model_sf_production_process_category sf_maintenance.sf_group_equipment_user 1 0 0 0
56 access_sf_machine_tool_category_sf_group_equipment_user sf_machine_tool_category sf_base.model_sf_machine_tool_category sf_maintenance.sf_group_equipment_user 1 0 0 0
57 access_sf_machine_tool_category_admin_sf_group_equipment_user sf_machine_tool_category_admin sf_base.model_sf_machine_tool_category sf_maintenance.sf_group_equipment_user 1 0 0 0
58 access_sf_cutting_tool_material_sf_group_equipment_user sf_cutting_tool_material sf_base.model_sf_cutting_tool_material sf_maintenance.sf_group_equipment_user 1 0 0 0
59 access_sf_cutting_tool_material_admin_sf_group_equipment_user sf_cutting_tool_material_admin sf_base.model_sf_cutting_tool_material sf_maintenance.sf_group_equipment_user 1 0 0 0
60 access_sf_cutting_tool_type_sf_group_equipment_user sf_cutting_tool_type sf_base.model_sf_cutting_tool_type sf_maintenance.sf_group_equipment_user 1 0 0 0
61 access_sf_cutting_tool_type_admin_sf_group_equipment_user sf_cutting_tool_type_admin sf_base.model_sf_cutting_tool_type sf_maintenance.sf_group_equipment_user 1 0 0 0
62 access_sf_cutting_tool_type_group_purchase_director_sf_group_equipment_user sf_cutting_tool_type_group_purchase_director sf_base.model_sf_cutting_tool_type sf_maintenance.sf_group_equipment_user 1 0 0 0
63 access_sf_cutting_tool_type_group_sale_director_sf_group_equipment_user sf_cutting_tool_type_group_sale_director sf_base.model_sf_cutting_tool_type sf_maintenance.sf_group_equipment_user 1 0 0 0
64 access_sf_cutting_tool_type_group_plan_director_sf_group_equipment_user sf_cutting_tool_type_group_plan_director sf_base.model_sf_cutting_tool_type sf_maintenance.sf_group_equipment_user 1 0 0 0
65
66
67
68
69
70

View File

@@ -12,14 +12,14 @@
<group> <group>
<field name="code" readonly="1" force_save="1"/> <field name="code" readonly="1" force_save="1"/>
<field name="name" readonly="1" force_save="1"/> <field name="name" readonly="1" force_save="1"/>
<field name="maintenance_equipment_category_id" required="1"/> <field name="maintenance_equipment_category_id" required="1" class="custom_required"/>
<field name="eq_maintenance_ids" invisible='1'/> <field name="eq_maintenance_ids" invisible='1'/>
<field name="overhaul_ids" invisible='1'/> <field name="overhaul_ids" invisible='1'/>
</group> </group>
<group> <group>
<field name="maintenance_type" required="1"/> <field name="maintenance_type" required="1" class="custom_required"/>
<field name="created_user_id"/> <field name="created_user_id"/>
<field name="remark"/> <field name="remark"/>
</group> </group>
@@ -33,10 +33,10 @@
<field name="maintenance_standards_ids"> <field name="maintenance_standards_ids">
<tree editable="bottom"> <tree editable="bottom">
<field name="name"/> <field name="name" class="table_custom_required"/>
<field name="fault_type"/> <field name="fault_type" class="table_custom_required"/>
<field name="maintenance_standards"/> <field name="maintenance_standards" class="table_custom_required"/>
<field name="Period"/> <field name="Period" class="table_custom_required"/>
</tree> </tree>
</field> </field>
</page> </page>

View File

@@ -82,11 +82,11 @@
<page string="维保标准" attrs="{'invisible': [('equipment_maintenance_id', '=', False)]}" context="{'default_standard_id': 'id'}"> <page string="维保标准" attrs="{'invisible': [('equipment_maintenance_id', '=', False)]}" context="{'default_standard_id': 'id'}">
<field name="maintenance_standards" widget="one2many_list"> <field name="maintenance_standards" widget="one2many_list">
<tree multi_edit="" editable=""> <tree multi_edit="" editable="">
<field name="name" /> <field name="name" class="table_custom_required"/>
<field name="maintenance_standards"/> <field name="maintenance_standards" class="table_custom_required"/>
<field name="images" force_save="1" required="1"> <field name="images" force_save="1" required="1" class="table_custom_required">
</field> </field>
<field name="remark"/> <field name="remark" class="table_custom_required"/>
</tree> </tree>
</field> </field>
</page> </page>

View File

@@ -36,8 +36,7 @@
type="action" type="action"
class="oe_stat_button" class="oe_stat_button"
context="{'search_default_equipment_id': [active_id]}" context="{'search_default_equipment_id': [active_id]}"
icon="fa-exchange" icon="fa-exchange">
attrs="{'invisible': [('state_zc', '!=', '已注册')]}">
<field string="设备oee" name="equipment_oee_ids" widget="statinfo"/> <field string="设备oee" name="equipment_oee_ids" widget="statinfo"/>
</button> </button>
@@ -61,9 +60,9 @@
<field name="function_type"/> <field name="function_type"/>
<field name="code" readonly="1"/> <field name="code" readonly="1"/>
<field name="equipment_type" invisible="1"/> <field name="equipment_type" invisible="1"/>
<field name="brand_id" force_save="1"/> <field name="brand_id" force_save="1" class="custom_required"/>
<field name="type_id" attrs="{'required': [('equipment_type', '=', '机床')]}" <field name="type_id" attrs="{'required': [('equipment_type', '=', '机床')]}"
domain="[('brand_id', '=', brand_id)]"/> domain="[('brand_id', '=', brand_id)]" class="custom_required"/>
<field name="machine_tool_category" readonly="1" attrs="{'invisible': [('type_id', '=', False)]}" <field name="machine_tool_category" readonly="1" attrs="{'invisible': [('type_id', '=', False)]}"
force_save="1"/> force_save="1"/>
<field name="run_time" force_save="1"/> <field name="run_time" force_save="1"/>
@@ -74,8 +73,8 @@
<group> <group>
<group string="基础参数"> <group string="基础参数">
<field name="control_system_id" attrs="{'required': [('equipment_type', '=', '机床')]}" <field name="control_system_id" attrs="{'required': [('equipment_type', '=', '机床')]}"
options="{'no_create': True}"/> options="{'no_create': True}" class="custom_required"/>
<label for="workbench_L" string="工作台尺寸(mm)"/> <label for="workbench_L" string="工作台尺寸(mm)" class="custom_required"/>
<div class="test_model"> <div class="test_model">
<label for="workbench_L" string="长"/> <label for="workbench_L" string="长"/>
<field name="workbench_L" class="o_address_zip" <field name="workbench_L" class="o_address_zip"
@@ -130,7 +129,7 @@
<!-- <field name="guide_rail" required="1"/>--> <!-- <field name="guide_rail" required="1"/>-->
<field name="number_of_axles" attrs="{'required': [('equipment_type', '=', '机床')]}" <field name="number_of_axles" attrs="{'required': [('equipment_type', '=', '机床')]}"
widget="radio" widget="radio"
options="{'horizontal': true}"/> options="{'horizontal': true}" class="custom_required"/>
<label for="x_axis" string="加工行程(mm)" <label for="x_axis" string="加工行程(mm)"
attrs="{'invisible': [('number_of_axles', '=', False)]}"/> attrs="{'invisible': [('number_of_axles', '=', False)]}"/>
<div class="test_model" <div class="test_model"
@@ -174,7 +173,7 @@
<!-- <field name="knife_type" required="1"/>--> <!-- <field name="knife_type" required="1"/>-->
<field name="number_of_knife_library" <field name="number_of_knife_library"
attrs="{'required': [('equipment_type', '=', '机床')]}" attrs="{'required': [('equipment_type', '=', '机床')]}"
options="{'format': false}"/> class="custom_required"/>
<!-- <field name="tool_speed" required="1"/>--> <!-- <field name="tool_speed" required="1"/>-->
<field name="tool_full_diameter_max"/> <field name="tool_full_diameter_max"/>
<field name="tool_perimeter_diameter_max"/> <field name="tool_perimeter_diameter_max"/>
@@ -194,7 +193,7 @@
<field name="C_tool_time"/> <field name="C_tool_time"/>
</group> </group>
<group string="主轴"> <group string="主轴">
<field name="taper_type_id" attrs="{'required': [('equipment_type', '=', '机床')]}"/> <field name="taper_type_id" attrs="{'required': [('equipment_type', '=', '机床')]}" class="custom_required"/>
<label for="distance_min" string="主轴端面-工作台距离(mm)"/> <label for="distance_min" string="主轴端面-工作台距离(mm)"/>
<div class="test_model"> <div class="test_model">
<label for="distance_min" string="最小(min)"/> <label for="distance_min" string="最小(min)"/>

View File

@@ -72,14 +72,16 @@ class Manufacturing_Connect(http.Controller):
date_planned_start = '' date_planned_start = ''
date_planned_finished = '' date_planned_finished = ''
if item.date_planned_start is not False: if item.date_planned_start is not False:
logging.info('date_planned_start:%s' % item.date_planned_start)
planned_start = item.date_planned_start.strftime("%Y-%m-%d %H:%M:%S") planned_start = item.date_planned_start.strftime("%Y-%m-%d %H:%M:%S")
date_planned_start = request.env['sf.sync.common'].sudo().get_add_time(planned_start) date_planned_start = request.env['sf.sync.common'].sudo().get_add_time(planned_start)
if item.date_planned_finished is not False: if item.date_planned_finished is not False:
logging.info('date_planned_finished:%s' % item.date_planned_finished)
planned_finished = item.date_planned_finished.strftime("%Y-%m-%d %H:%M:%S") planned_finished = item.date_planned_finished.strftime("%Y-%m-%d %H:%M:%S")
date_planned_finished = request.env['sf.sync.common'].sudo().get_add_time(planned_finished) date_planned_finished = request.env['sf.sync.common'].sudo().get_add_time(planned_finished)
res['Datas'].append({ res['Datas'].append({
'BillId': item.production_id.name, 'BillId': item.production_id.name,
'RfidCode': item.RfidCode, 'RfidCode': item.rfid_code,
'CraftName': item.name, 'CraftName': item.name,
'Quantity': 1, 'Quantity': 1,
'WortkStart': date_planned_start, 'WortkStart': date_planned_start,
@@ -87,7 +89,7 @@ class Manufacturing_Connect(http.Controller):
'MaterialId': item.product_id.default_code, 'MaterialId': item.product_id.default_code,
'MaterialName': item.product_id.name, 'MaterialName': item.product_id.name,
# 'Spec':item.mat, # 'Spec':item.mat,
'Material': item.materials_type_id.name 'Material': item.product_id.materials_type_id.name
}) })
except Exception as e: except Exception as e:
res = {'Succeed': False, 'ErrorCode': 202, 'Error': e} res = {'Succeed': False, 'ErrorCode': 202, 'Error': e}
@@ -228,7 +230,7 @@ class Manufacturing_Connect(http.Controller):
""" """
logging.info('PartQualityInspect:%s' % kw) logging.info('PartQualityInspect:%s' % kw)
try: try:
res = {'Succeed': True, 'Datas': []} res = {'Succeed': True}
datas = request.httprequest.data datas = request.httprequest.data
ret = json.loads(datas) ret = json.loads(datas)
production_id = ret['BillId'] production_id = ret['BillId']
@@ -236,17 +238,40 @@ class Manufacturing_Connect(http.Controller):
workorder = request.env['mrp.workorder'].sudo().search( workorder = request.env['mrp.workorder'].sudo().search(
[('production_id', '=', production_id), ('routing_type', '=', routing_type)], limit=1) [('production_id', '=', production_id), ('routing_type', '=', routing_type)], limit=1)
if workorder: if workorder:
workorder.test_result = ret['Quality']
logging.info('制造订单:%s' % workorder.production_id.name)
if 'ReportPaht' in ret: if 'ReportPaht' in ret:
download_state = request.env['mrp.workorder'].with_user( download_state = request.env['mrp.workorder'].with_user(
request.env.ref("base.user_admin")).download_reportfile_tmp(workorder, request.env.ref("base.user_admin")).download_reportfile_tmp(workorder,
ret['ReportPaht']) ret['ReportPaht'])
if download_state is not False: if download_state == 1:
request.env['mrp.workorder'].with_user( detection_ret = request.env['mrp.workorder'].with_user(
request.env.ref("base.user_admin")).get_detection_file(workorder, ret['ReportPaht']) request.env.ref("base.user_admin")).get_detection_file(workorder, ret['ReportPaht'])
if detection_ret is True:
stock_picking_type = request.env['stock.picking.type'].sudo().search(
[('sequence_code', '=', 'SFP')])
if stock_picking_type:
stock_picking = request.env['stock.picking'].sudo().search(
[('product_id', '=', workorder.product_id.id),
('origin', '=', workorder.production_id.origin),
('picking_type_id', '=', stock_picking_type.id)])
if stock_picking:
quality_check = request.env['quality.check'].sudo().search(
[('product_id', '=', workorder.product_id.id),
('picking_id', '=', stock_picking.id)])
if quality_check:
logging.info('质检单:%s' % quality_check.name)
quality_check.write({'report_pdf': workorder.detection_report,
'report_result': workorder.test_result})
elif download_state == 2:
res = {'Succeed': False, 'ErrorCode': 205,
'Error': 'ReportPaht中的工件号与制造订单%s不匹配请检查ReportPaht是否正确' % workorder.production_id.name}
else: else:
res = {'Succeed': False, 'ErrorCode': 204, 'Error': '检测报告文件从FTP拉取失败'} res = {'Succeed': False, 'ErrorCode': 204, 'Error': '检测报告文件从FTP拉取失败'}
else: else:
res = {'Succeed': False, 'ErrorCode': 203, 'Error': '未传ReportPaht字段'} res = {'Succeed': False, 'ErrorCode': 203, 'Error': '未传ReportPaht字段'}
else:
res = {'Succeed': False, 'ErrorCode': 206, 'Error': '未查询到工单'}
except Exception as e: except Exception as e:
res = {'Succeed': False, 'ErrorCode': 202, 'Error': e} res = {'Succeed': False, 'ErrorCode': 202, 'Error': e}
logging.info('PartQualityInspect error:%s' % e) logging.info('PartQualityInspect error:%s' % e)

View File

@@ -22,10 +22,19 @@ class ResMrpRoutingWorkcenter(models.Model):
bom_id = fields.Many2one('mrp.bom', required=False) bom_id = fields.Many2one('mrp.bom', required=False)
surface_technics_id = fields.Many2one('sf.production.process', string="表面工艺") surface_technics_id = fields.Many2one('sf.production.process', string="表面工艺")
def generate_code(self): def get_no(self):
return self.env['ir.sequence'].next_by_code('mrp.routing.workcenter') international_standards = self.search(
[('code', '!=', ''), ('active', 'in', [True, False])],
limit=1,
order="id desc")
if not international_standards:
num = "%03d" % 1
else:
m = int(international_standards.code) + 1
num = "%03d" % m
return num
code = fields.Char('编码', default=generate_code) code = fields.Char('编码', default=get_no)
# 获得当前登陆者公司 # 获得当前登陆者公司
def get_company_id(self): def get_company_id(self):

View File

@@ -95,8 +95,7 @@ class ResMrpWorkOrder(models.Model):
Y10_axis = fields.Float(default=0) Y10_axis = fields.Float(default=0)
Z10_axis = fields.Float(default=0) Z10_axis = fields.Float(default=0)
X_deviation_angle = fields.Integer(string="X轴偏差度", default=0) X_deviation_angle = fields.Integer(string="X轴偏差度", default=0)
test_results = fields.Selection([("合格", "合格"), ("返工", "返工"), ("报废", "报废")], default='合格', test_result = fields.Char("检测结果")
string="检测结果")
cnc_ids = fields.One2many("sf.cnc.processing", 'workorder_id', string="CNC加工程序") cnc_ids = fields.One2many("sf.cnc.processing", 'workorder_id', string="CNC加工程序")
cmm_ids = fields.One2many("sf.cmm.program", 'workorder_id', string="CMM程序") cmm_ids = fields.One2many("sf.cmm.program", 'workorder_id', string="CMM程序")
tray_code = fields.Char(string="托盘编码") tray_code = fields.Char(string="托盘编码")
@@ -143,15 +142,17 @@ class ResMrpWorkOrder(models.Model):
def get_plan_workorder(self, production_line): def get_plan_workorder(self, production_line):
tomorrow = (date.today() + timedelta(days=+1)).strftime("%Y-%m-%d") tomorrow = (date.today() + timedelta(days=+1)).strftime("%Y-%m-%d")
tomorrow_start = tomorrow + ' 00:00:00'
tomorrow_end = tomorrow + ' 23:59:59'
logging.info('tomorrow:%s' % tomorrow)
sql = """ sql = """
SELECT * SELECT *
FROM mrp_workorder FROM mrp_workorder
WHERE date_planned_start = %s::timestamp WHERE
AND date_planned_start < (%s::timestamp + interval '1 day') to_char(date_planned_start::timestamp + '8 hour','YYYY-MM-DD HH:mm:SS')>= %s
AND date_planned_finished >= %s::timestamp AND to_char(date_planned_finished::timestamp + '8 hour','YYYY-MM-DD HH:mm:SS')<= %s
AND date_planned_finished < (%s::timestamp + interval '1 day')
""" """
params = [tomorrow, tomorrow, tomorrow, tomorrow] params = [tomorrow_start, tomorrow_end]
if production_line: if production_line:
sql += "AND production_line_id = %s" sql += "AND production_line_id = %s"
params.append(production_line) params.append(production_line)
@@ -432,7 +433,7 @@ class ResMrpWorkOrder(models.Model):
""" """
重新生成制造订单或者重新生成工单 重新生成制造订单或者重新生成工单
""" """
if self.test_results == '报废': if self.test_result == '报废':
values = self.env['mrp.production'].create_production1_values(self.production_id) values = self.env['mrp.production'].create_production1_values(self.production_id)
productions = self.env['mrp.production'].with_user(SUPERUSER_ID).sudo().with_company( productions = self.env['mrp.production'].with_user(SUPERUSER_ID).sudo().with_company(
self.production_id.company_id).create( self.production_id.company_id).create(
@@ -464,7 +465,7 @@ class ResMrpWorkOrder(models.Model):
'mail.message_origin_link', 'mail.message_origin_link',
values={'self': production, 'origin': origin_production}, values={'self': production, 'origin': origin_production},
subtype_id=self.env.ref('mail.mt_note').id) subtype_id=self.env.ref('mail.mt_note').id)
if self.test_results == '返工': if self.test_result == '返工':
productions = self.production_id productions = self.production_id
# self.env['stock.move'].sudo().create(productions._get_moves_raw_values()) # self.env['stock.move'].sudo().create(productions._get_moves_raw_values())
# self.env['stock.move'].sudo().create(productions._get_moves_finished_values()) # self.env['stock.move'].sudo().create(productions._get_moves_finished_values())
@@ -631,39 +632,46 @@ class ResMrpWorkOrder(models.Model):
# 将FTP的检测报告文件下载到临时目录 # 将FTP的检测报告文件下载到临时目录
def download_reportfile_tmp(self, workorder, reportpath): def download_reportfile_tmp(self, workorder, reportpath):
logging.info('reportpath:%s' % reportpath)
production_no_ftp = reportpath.split('/')
production_no = workorder.production_id.name.replace('/', '_') production_no = workorder.production_id.name.replace('/', '_')
remotepath = os.path.join('/', production_no, 'detection') # ftp地址
serverdir = os.path.join('/tmp', production_no, 'detection') remotepath = os.path.join('/', production_no_ftp[1], 'detection')
ftp_resconfig = self.env['res.config.settings'].get_values() logging.info('ftp地址:%s' % remotepath)
ftp = FtpController(str(ftp_resconfig['ftp_host']), int(ftp_resconfig['ftp_port']), if reportpath.find(production_no) != -1:
ftp_resconfig['ftp_user'], # 服务器内临时地址
ftp_resconfig['ftp_password']) serverdir = os.path.join('/tmp', production_no_ftp[1], 'detection')
download_state = ftp.download_reportfile_tree(remotepath, serverdir, reportpath) ftp_resconfig = self.env['res.config.settings'].get_values()
logging.info('download_state:%s' % download_state) ftp = FtpController(str(ftp_resconfig['ftp_host']), int(ftp_resconfig['ftp_port']),
ftp_resconfig['ftp_user'],
ftp_resconfig['ftp_password'])
download_state = ftp.download_reportfile_tree(remotepath, serverdir, reportpath)
logging.info('download_state:%s' % download_state)
else:
download_state = 2
return download_state return download_state
# 根据中控系统提供的检测文件地址去ftp里对应的制造订单里获取 # 根据中控系统提供的检测文件地址去ftp里对应的制造订单里获取
def get_detection_file(self, workorder, reportPath): def get_detection_file(self, workorder, reportPath):
logging.info('workorder:%s' % workorder.name) if reportPath.startswith('/'):
logging.info('制造订单:%s' % workorder.production_id.name) reportPath = reportPath[1:]
logging.info('reportPath:%s' % reportPath) serverdir = os.path.join('/tmp', reportPath)
serverdir = os.path.join('/tmp', reportPath).replace('//', '/') logging.info('get_detection_file-serverdir:%s' % serverdir)
logging.info('serverdir:%s' % serverdir) serverdir_prefix = os.path.dirname(serverdir)
for root, dirs, files in os.walk(serverdir): for root, dirs, files in os.walk(serverdir_prefix):
for f in files: for filename in files:
logging.info('f:%s' % f) if filename == os.path.basename(reportPath):
if os.path.splitext(f)[1] == ".pdf": report_file_path = os.path.join(root, filename)
full_path = os.path.join(serverdir, root, f) logging.info('get_detection_file-report_file_path:%s' % report_file_path)
logging.info('检测文件路径:%s' % full_path) workorder.detection_report = base64.b64encode(open(report_file_path, 'rb').read())
if full_path is not False: return True
workorder.detection_report = base64.b64encode(
open(full_path, 'rb').read())
class CNCprocessing(models.Model): class CNCprocessing(models.Model):
_name = 'sf.cnc.processing' _name = 'sf.cnc.processing'
_description = "CNC加工" _description = "CNC加工"
_rec_name = 'program_name' _rec_name = 'program_name'
_order = 'sequence_number,id'
cnc_id = fields.Many2one('ir.attachment') cnc_id = fields.Many2one('ir.attachment')
sequence_number = fields.Char('序号') sequence_number = fields.Char('序号')
@@ -686,15 +694,11 @@ class CNCprocessing(models.Model):
# mrs下发编程单创建CNC加工 # mrs下发编程单创建CNC加工
def cnc_processing_create(self, cnc_workorder, ret, program_path, program_path_tmp): def cnc_processing_create(self, cnc_workorder, ret, program_path, program_path_tmp):
logging.info('ret:%s' % ret)
logging.info('program_path_tmp:%s' % program_path_tmp)
logging.info('program_path:%s' % program_path)
for obj in ret['programming_list']: for obj in ret['programming_list']:
workorder = self.env['mrp.workorder'].search([('production_id.name', '=', ret['production_order_no']), workorder = self.env['mrp.workorder'].search([('production_id.name', '=', ret['production_order_no']),
('processing_panel', '=', obj['processing_panel']), ('processing_panel', '=', obj['processing_panel']),
('routing_type', '=', 'CNC加工')]) ('routing_type', '=', 'CNC加工')])
logging.info('workorder:%s' % workorder.id) logging.info('workorder:%s' % workorder.id)
logging.info('obj:%s' % obj)
if obj['program_name'] in program_path: if obj['program_name'] in program_path:
logging.info('obj:%s' % obj['program_name']) logging.info('obj:%s' % obj['program_name'])
cnc_processing = self.env['sf.cnc.processing'].create({ cnc_processing = self.env['sf.cnc.processing'].create({
@@ -722,15 +726,11 @@ class CNCprocessing(models.Model):
# 根据程序名和加工面匹配到ftp里对应的Nc程序名 # 根据程序名和加工面匹配到ftp里对应的Nc程序名
def get_cnc_processing_file(self, serverdir, cnc_processing, program_path): def get_cnc_processing_file(self, serverdir, cnc_processing, program_path):
# logging.info('program_path_tmp:%s' % program_path_tmp)
# serverdir = os.path.join('/tmp', folder_name, 'return', processing_panel)
logging.info('serverdir:%s' % serverdir) logging.info('serverdir:%s' % serverdir)
for root, dirs, files in os.walk(serverdir): for root, dirs, files in os.walk(serverdir):
for f in files: for f in files:
logging.info('f:%s' % f)
if os.path.splitext(f)[1] == ".pdf": if os.path.splitext(f)[1] == ".pdf":
full_path = os.path.join(serverdir, root, f) full_path = os.path.join(serverdir, root, f)
logging.info('pdf:%s' % full_path)
if full_path is not False: if full_path is not False:
if not cnc_processing.workorder_id.cnc_worksheet: if not cnc_processing.workorder_id.cnc_worksheet:
cnc_processing.workorder_id.cnc_worksheet = base64.b64encode( cnc_processing.workorder_id.cnc_worksheet = base64.b64encode(
@@ -739,9 +739,6 @@ class CNCprocessing(models.Model):
if f in program_path: if f in program_path:
# if cnc_processing.program_name == f.split('.')[0]: # if cnc_processing.program_name == f.split('.')[0]:
cnc_file_path = os.path.join(serverdir, root, f) cnc_file_path = os.path.join(serverdir, root, f)
logging.info('cnc_file_path:%s' % cnc_file_path)
logging.info('program_path:%s' % program_path)
logging.info('f:%s' % f)
self.write_file(cnc_file_path, cnc_processing) self.write_file(cnc_file_path, cnc_processing)
# 创建附件(nc文件) # 创建附件(nc文件)

View File

@@ -859,7 +859,7 @@ class SfMaintenanceEquipmentAndProductTemplate(models.Model):
for i in range(1, number + 1): for i in range(1, number + 1):
self.env['maintenance.equipment.tool'].create({ self.env['maintenance.equipment.tool'].create({
'equipment_id': res.id, 'equipment_id': res.id,
'code': 'T' + str(i) 'code': "T%02d" % i
}) })
vals.append(res) vals.append(res)
return vals[0] return vals[0]

View File

@@ -14,6 +14,7 @@ from odoo.addons.stock.models.stock_rule import ProcurementException
from odoo.addons.sf_base.commons.common import Common from odoo.addons.sf_base.commons.common import Common
from odoo.exceptions import UserError from odoo.exceptions import UserError
from io import BytesIO from io import BytesIO
from odoo.exceptions import ValidationError
class StockRule(models.Model): class StockRule(models.Model):
@@ -250,6 +251,22 @@ class ProductionLot(models.Model):
)) ))
return lot_names return lot_names
def get_tool_generate_lot_names1(self, company, product):
"""
采购时生成刀具物料序列号
"""
now = datetime.now().strftime("%Y%m%d")
last_serial = self.env['stock.lot'].search(
[('company_id', '=', company.id), ('product_id', '=', product.id), ('name', 'like', now)],
limit=1, order='id DESC')
if product.cutting_tool_model_id:
if not last_serial:
return "%s-%s%03d" % (product.cutting_tool_model_id.code[:-12], now, 1)
else:
return "%s-%s%03d" % (product.cutting_tool_model_id.code[:-12], now, int(last_serial.name[-3:]) + 1)
else:
raise ValidationError('该刀具物料产品的型号字段为空,请补充完整!!!')
@api.model @api.model
def _get_next_serial(self, company, product): def _get_next_serial(self, company, product):
"""Return the next serial number to be attributed to the product.""" """Return the next serial number to be attributed to the product."""
@@ -258,12 +275,13 @@ class ProductionLot(models.Model):
[('company_id', '=', company.id), ('product_id', '=', product.id)], [('company_id', '=', company.id), ('product_id', '=', product.id)],
limit=1, order='id DESC') limit=1, order='id DESC')
if last_serial: if last_serial:
return self.env['stock.lot'].generate_lot_names1(product.name, last_serial.name, 2)[ if product.categ_id.name == '刀具':
1] return self.env['stock.lot'].get_tool_generate_lot_names1(company, product)
now = datetime.now().strftime("%Y-%m-%d") else:
# formatted_date = now.strftime("%Y-%m-%d") return self.env['stock.lot'].generate_lot_names1(product.name, last_serial.name, 2)[1]
now = datetime.now().strftime("%Y%m%d")
if product.cutting_tool_model_id: if product.cutting_tool_model_id:
return "%s-%s-%03d" % (product.cutting_tool_model_id.code, now, 1) return "%s-%s%03d" % (product.cutting_tool_model_id.code[:-12], now, 1)
return "%s-%03d" % (product.name, 1) return "%s-%03d" % (product.name, 1)
qr_code_image = fields.Binary(string='二维码', compute='_generate_qr_code') qr_code_image = fields.Binary(string='二维码', compute='_generate_qr_code')

View File

@@ -1,31 +1,32 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink 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,sf_base.group_sf_mrp_user,1,0,0,0 access_sf_cnc_processing_group_sf_mrp_user,sf_cnc_processing,model_sf_cnc_processing,sf_base.group_sf_mrp_user,1,0,0,0
access_sf_cnc_processing_manager,sf_cnc_processing,model_sf_cnc_processing,sf_base.group_sf_mrp_manager,1,1,1,0 access_sf_cnc_processing_manager,sf_cnc_processing,model_sf_cnc_processing,sf_base.group_sf_mrp_manager,1,1,1,0
access_sf_cmm_program_group_sf_mrp_user,sf_cmm_program_group_sf_mrp_user,model_sf_cmm_program,sf_base.group_sf_mrp_user,1,0,0,0 access_sf_cmm_program_group_sf_mrp_user_group_sf_mrp_user,sf_cmm_program_group_sf_mrp_user,model_sf_cmm_program,sf_base.group_sf_mrp_user,1,0,0,0
access_sf_cmm_program_group_sf_mrp_manager,sf_cmm_program_group_sf_mrp_manager,model_sf_cmm_program,sf_base.group_sf_mrp_manager,1,0,0,0 access_sf_cmm_program_group_sf_mrp_manager,sf_cmm_program_group_sf_mrp_manager,model_sf_cmm_program,sf_base.group_sf_mrp_manager,1,0,0,0
access_sf_model_type,sf_model_type,model_sf_model_type,sf_base.group_sf_mrp_user,1,0,0,0 access_sf_model_type_group_sf_mrp_user,sf_model_type,model_sf_model_type,sf_base.group_sf_mrp_user,1,0,0,0
access_sf_model_type_admin,sf_model_type_admin,model_sf_model_type,base.group_system,1,1,1,0
access_sf_model_type_manager,sf_model_type,model_sf_model_type,sf_base.group_sf_mrp_manager,1,1,1,0 access_sf_model_type_manager,sf_model_type,model_sf_model_type,sf_base.group_sf_mrp_manager,1,1,1,0
access_sf_model_type_group_sale_director,sf_model_type_group_sale_director,model_sf_model_type,sf_base.group_sale_director,1,0,0,0 access_sf_model_type_group_sale_director,sf_model_type_group_sale_director,model_sf_model_type,sf_base.group_sale_director,1,0,0,0
access_sf_model_type_group_purchase_director,sf_model_type_group_purchase_director,model_sf_model_type,sf_base.group_purchase_director,1,0,0,0 access_sf_model_type_group_purchase_director,sf_model_type_group_purchase_director,model_sf_model_type,sf_base.group_purchase_director,1,0,0,0
access_sf_model_type_group_plan_director,sf_model_type_group_plan_director,model_sf_model_type,sf_base.group_plan_director,1,0,0,0 access_sf_model_type_group_plan_director,sf_model_type_group_plan_director,model_sf_model_type,sf_base.group_plan_director,1,0,0,0
access_sf_product_model_type_routing_sort,sf_product_model_type_routing_sort,model_sf_product_model_type_routing_sort,sf_base.group_sf_mrp_user,1,0,0,0 access_sf_product_model_type_routing_sort_group_sf_mrp_user,sf_product_model_type_routing_sort,model_sf_product_model_type_routing_sort,sf_base.group_sf_mrp_user,1,0,0,0
access_sf_product_model_type_routing_sort_manager,sf_product_model_type_routing_sort,model_sf_product_model_type_routing_sort,sf_base.group_sf_mrp_manager,1,1,1,0 access_sf_product_model_type_routing_sort_manager,sf_product_model_type_routing_sort,model_sf_product_model_type_routing_sort,sf_base.group_sf_mrp_manager,1,1,1,0
access_sf_embryo_model_type_routing_sort,sf_embryo_model_type_routing_sort,model_sf_embryo_model_type_routing_sort,sf_base.group_sf_mrp_user,1,0,0,0 access_sf_embryo_model_type_routing_sort_group_sf_mrp_user,sf_embryo_model_type_routing_sort,model_sf_embryo_model_type_routing_sort,sf_base.group_sf_mrp_user,1,0,0,0
access_sf_embryo_model_type_routing_sort_manager,sf_embryo_model_type_routing_sort,model_sf_embryo_model_type_routing_sort,sf_base.group_sf_mrp_manager,1,1,1,0 access_sf_embryo_model_type_routing_sort_manager,sf_embryo_model_type_routing_sort,model_sf_embryo_model_type_routing_sort,sf_base.group_sf_mrp_manager,1,1,1,0
access_sf_surface_technics_model_type_routing_sort,sf_surface_technics_model_type_routing_sort,model_sf_surface_technics_model_type_routing_sort,sf_base.group_sf_mrp_user,1,0,0,0 access_sf_surface_technics_model_type_routing_sort,sf_surface_technics_model_type_routing_sort,model_sf_surface_technics_model_type_routing_sort,sf_base.group_sf_mrp_user,1,0,0,0
access_sf_surface_technics_model_type_routing_sort_manager,sf_surface_technics_model_type_routing_sort,model_sf_surface_technics_model_type_routing_sort,sf_base.group_sf_mrp_manager,1,1,1,0 access_sf_surface_technics_model_type_routing_sort_manager,sf_surface_technics_model_type_routing_sort,model_sf_surface_technics_model_type_routing_sort,sf_base.group_sf_mrp_manager,1,1,1,0
access_sf_production_line,sf.production.line,model_sf_production_line,sf_base.group_sf_mrp_user,1,1,1,0 access_sf_production_line_group_sf_mrp_user,sf.production.line,model_sf_production_line,sf_base.group_sf_mrp_user,1,1,1,0
access_sf_production_line_manager,sf.production.line,model_sf_production_line,sf_base.group_sf_mrp_manager,1,1,1,0 access_sf_production_line_manager,sf.production.line,model_sf_production_line,sf_base.group_sf_mrp_manager,1,1,1,0
access_maintenance_equipment_tool,maintenance_equipment_tool,model_maintenance_equipment_tool,sf_base.group_sf_mrp_user,1,0,0,0 access_maintenance_equipment_tool_group_sf_mrp_user,maintenance_equipment_tool,model_maintenance_equipment_tool,sf_base.group_sf_mrp_user,1,0,0,0
access_maintenance_equipment_tool_manager,maintenance_equipment_tool,model_maintenance_equipment_tool,sf_base.group_sf_mrp_manager,1,1,1,0 access_maintenance_equipment_tool_manager,maintenance_equipment_tool,model_maintenance_equipment_tool,sf_base.group_sf_mrp_manager,1,1,1,0
access_maintenance_equipment_tool_equipment_manager,maintenance_equipment_tool,model_maintenance_equipment_tool,sf_maintenance.sf_group_equipment_user,1,1,1,0 access_maintenance_equipment_tool_equipment_manager,maintenance_equipment_tool,model_maintenance_equipment_tool,sf_maintenance.sf_group_equipment_user,1,1,1,0
access_mrp_production,mrp_production,model_mrp_production,sf_base.group_sf_mrp_user,1,0,0,0 access_mrp_production_group_sf_mrp_user,mrp_production,model_mrp_production,sf_base.group_sf_mrp_user,1,0,0,0
access_mrp_production_manager,mrp_production,model_mrp_production,sf_base.group_sf_mrp_manager,1,1,1,0 access_mrp_production_manager,mrp_production,model_mrp_production,sf_base.group_sf_mrp_manager,1,1,1,0
access_mrp_workorder,mrp_workorder,model_mrp_workorder,sf_base.group_sf_mrp_user,1,0,0,0 access_mrp_workorder_group_sf_mrp_user,mrp_workorder,model_mrp_workorder,sf_base.group_sf_mrp_user,1,0,0,0
access_mrp_workorder_manager,mrp_workorder,model_mrp_workorder,sf_base.group_sf_mrp_manager,1,1,1,0 access_mrp_workorder_manager,mrp_workorder,model_mrp_workorder,sf_base.group_sf_mrp_manager,1,1,1,0
access_mrp_workcenter,mrp_workcenter,model_mrp_workcenter,sf_base.group_sf_mrp_user,1,0,0,0 access_mrp_workcenter_group_sf_mrp_user,mrp_workcenter,model_mrp_workcenter,sf_base.group_sf_mrp_user,1,0,0,0
access_mrp_workcenter_manager,mrp_workcenter,model_mrp_workcenter,sf_base.group_sf_mrp_manager,1,1,1,0 access_mrp_workcenter_manager,mrp_workcenter,model_mrp_workcenter,sf_base.group_sf_mrp_manager,1,1,1,0
access_mrp_workcenter_productivity,mrp_workcenter_productivity,model_mrp_workcenter_productivity,sf_base.group_sf_mrp_user,1,0,0,0 access_mrp_workcenter_productivity_group_sf_mrp_user,mrp_workcenter_productivity,model_mrp_workcenter_productivity,sf_base.group_sf_mrp_user,1,0,0,0
access_mrp_workcenter_productivity_manager,mrp_workcenter_productivity,model_mrp_workcenter_productivity,sf_base.group_sf_mrp_manager,1,1,1,0 access_mrp_workcenter_productivity_manager,mrp_workcenter_productivity,model_mrp_workcenter_productivity,sf_base.group_sf_mrp_manager,1,1,1,0
access_sf_workpiece_delivery_group_sf_order_user,sf_workpiece_delivery_group_sf_order_user,model_sf_workpiece_delivery,sf_base.group_sf_order_user,1,1,0,0 access_sf_workpiece_delivery_group_sf_order_user,sf_workpiece_delivery_group_sf_order_user,model_sf_workpiece_delivery,sf_base.group_sf_order_user,1,1,0,0
access_sf_workpiece_delivery_group_sf_equipment_user,sf_workpiece_delivery_group_sf_equipment_user,model_sf_workpiece_delivery,sf_base.group_sf_equipment_user,1,1,0,0 access_sf_workpiece_delivery_group_sf_equipment_user,sf_workpiece_delivery_group_sf_equipment_user,model_sf_workpiece_delivery,sf_base.group_sf_equipment_user,1,1,0,0
@@ -33,73 +34,72 @@ access_sf_workpiece_delivery_group_sf_equipment_user,sf_workpiece_delivery_group
access_sf_workpiece_delivery_manager,sf_workpiece_delivery,model_sf_workpiece_delivery,sf_base.group_sf_mrp_manager,1,1,0,0 access_sf_workpiece_delivery_manager,sf_workpiece_delivery,model_sf_workpiece_delivery,sf_base.group_sf_mrp_manager,1,1,0,0
access_sf_workpiece_delivery_admin,sf_workpiece_delivery_admin,model_sf_workpiece_delivery,base.group_system,1,1,1,0 access_sf_workpiece_delivery_admin,sf_workpiece_delivery_admin,model_sf_workpiece_delivery,base.group_system,1,1,1,0
access_sf_workpiece_delivery_wizard_group_sf_order_user,sf_workpiece_delivery_wizard_group_sf_order_user,model_sf_workpiece_delivery_wizard,sf_base.group_sf_order_user,1,1,1,0 access_sf_workpiece_delivery_wizard_group_sf_order_user,sf_workpiece_delivery_wizard_group_sf_order_user,model_sf_workpiece_delivery_wizard,sf_base.group_sf_order_user,1,1,1,0
access_mrp_workcenter_productivity_loss_manager,mrp.workcenter.productivity.loss,mrp.model_mrp_workcenter_productivity_loss,sf_base.group_sf_mrp_user,1,1,1,0 access_mrp_workcenter_productivity_loss_manager_group_sf_mrp_user,mrp.workcenter.productivity.loss,mrp.model_mrp_workcenter_productivity_loss,sf_base.group_sf_mrp_user,1,1,1,0
access_mrp_workcenter_productivity_loss,mrp.workcenter.productivity.loss,mrp.model_mrp_workcenter_productivity_loss,sf_base.group_sf_mrp_user,1,0,0,0 access_mrp_workcenter_productivity_loss_group_sf_mrp_user,mrp.workcenter.productivity.loss,mrp.model_mrp_workcenter_productivity_loss,sf_base.group_sf_mrp_user,1,0,0,0
access_mrp_workcenter_productivity_loss_type,mrp.workcenter.productivity.loss.type,mrp.model_mrp_workcenter_productivity_loss_type,sf_base.group_sf_mrp_user,1,0,0,0 access_mrp_workcenter_productivity_loss_type_group_sf_mrp_user,mrp.workcenter.productivity.loss.type,mrp.model_mrp_workcenter_productivity_loss_type,sf_base.group_sf_mrp_user,1,0,0,0
access_mrp_workcenter_productivity,mrp.workcenter.productivity,mrp.model_mrp_workcenter_productivity,sf_base.group_sf_mrp_user,1,1,1,0 access_mrp_workcenter_productivity_group_sf_mrp_user,mrp.workcenter.productivity,mrp.model_mrp_workcenter_productivity,sf_base.group_sf_mrp_user,1,1,1,0
access_mrp_workcenter,mrp.workcenter,mrp.model_mrp_workcenter,sf_base.group_sf_mrp_user,1,0,0,0 access_mrp_workcenter_group_sf_mrp_user,mrp.workcenter,mrp.model_mrp_workcenter,sf_base.group_sf_mrp_user,1,0,0,0
access_mrp_routing_workcenter,mrp.routing.workcenter,mrp.model_mrp_routing_workcenter,sf_base.group_sf_mrp_user,1,0,0,0 access_mrp_routing_workcenter_group_sf_mrp_user,mrp.routing.workcenter,mrp.model_mrp_routing_workcenter,sf_base.group_sf_mrp_user,1,0,0,0
access_mrp_bom,mrp.bom,mrp.model_mrp_bom,sf_base.group_sf_mrp_user,1,0,0,0 access_mrp_bom_group_sf_mrp_user,mrp.bom,mrp.model_mrp_bom,sf_base.group_sf_mrp_user,1,0,0,0
access_mrp_bom_line,mrp.bom.line,mrp.model_mrp_bom_line,sf_base.group_sf_mrp_user,1,0,0,0 access_mrp_bom_line_group_sf_mrp_user,mrp.bom.line,mrp.model_mrp_bom_line,sf_base.group_sf_mrp_user,1,0,0,0
access_mrp_bom_byproduct_user,mrp.bom.byproduct,mrp.model_mrp_bom_byproduct,sf_base.group_sf_mrp_user,1,0,0,0 access_mrp_bom_byproduct_user_group_sf_mrp_user,mrp.bom.byproduct,mrp.model_mrp_bom_byproduct,sf_base.group_sf_mrp_user,1,0,0,0
access_mrp_production,mrp.production user,mrp.model_mrp_production,sf_base.group_sf_mrp_user,1,1,1,0 access_mrp_production_group_sf_mrp_user,mrp.production user,mrp.model_mrp_production,sf_base.group_sf_mrp_user,1,1,1,0
access_mrp_workcenter_manager,mrp.workcenter.manager,mrp.model_mrp_workcenter,sf_base.group_sf_mrp_user,1,1,1,0 access_mrp_workcenter_manager_group_sf_mrp_user,mrp.workcenter.manager,mrp.model_mrp_workcenter,sf_base.group_sf_mrp_user,1,1,1,0
access_mrp_routing_workcenter_manager,mrp.routing.workcenter.manager,mrp.model_mrp_routing_workcenter,sf_base.group_sf_mrp_user,1,1,1,0 access_mrp_routing_workcenter_manager_group_sf_mrp_user,mrp.routing.workcenter.manager,mrp.model_mrp_routing_workcenter,sf_base.group_sf_mrp_user,1,1,1,0
access_mrp_bom_manager,mrp.bom.manager,mrp.model_mrp_bom,sf_base.group_sf_mrp_user,1,1,1,0 access_mrp_bom_manager_group_sf_mrp_user,mrp.bom.manager,mrp.model_mrp_bom,sf_base.group_sf_mrp_user,1,1,1,0
access_mrp_bom_line_manager,mrp.bom.line.manager,mrp.model_mrp_bom_line,sf_base.group_sf_mrp_user,1,1,1,0 access_mrp_bom_line_manager_group_sf_mrp_user,mrp.bom.line.manager,mrp.model_mrp_bom_line,sf_base.group_sf_mrp_user,1,1,1,0
access_mrp_bom_line_group_plan_director,mrp_bom_line_group_plan_director,mrp.model_mrp_bom_line,sf_base.group_plan_director,1,1,1,0 access_mrp_bom_line_group_plan_director,mrp_bom_line_group_plan_director,mrp.model_mrp_bom_line,sf_base.group_plan_director,1,1,1,0
access_mrp_bom_line_group_sale_director,mrp_bom_line_group_sale_director,mrp.model_mrp_bom_line,sf_base.group_sale_director,1,1,1,0 access_mrp_bom_line_group_sale_director,mrp_bom_line_group_sale_director,mrp.model_mrp_bom_line,sf_base.group_sale_director,1,1,1,0
access_mrp_bom_line_group_purchase_director,mrp_bom_line_group_purchase_director,mrp.model_mrp_bom_line,sf_base.group_purchase_director,1,1,1,0 access_mrp_bom_line_group_purchase_director,mrp_bom_line_group_purchase_director,mrp.model_mrp_bom_line,sf_base.group_purchase_director,1,1,1,0
access_mrp_bom_byproduct_manager,mrp.bom.byproduct manager,mrp.model_mrp_bom_byproduct,sf_base.group_sf_mrp_user,1,1,1,0 access_mrp_bom_byproduct_manager_group_sf_mrp_user,mrp.bom.byproduct manager,mrp.model_mrp_bom_byproduct,sf_base.group_sf_mrp_user,1,1,1,0
access_mrp_production_stock_worker,mrp.production stock_worker,mrp.model_mrp_production,stock.group_stock_user,1,0,0,0 access_mrp_production_stock_worker,mrp.production stock_worker,mrp.model_mrp_production,stock.group_stock_user,1,0,0,0
access_product_product_user,product.product user,product.model_product_product,sf_base.group_sf_mrp_user,1,0,0,0 access_product_product_user_group_sf_mrp_user,product.product user,product.model_product_product,sf_base.group_sf_mrp_user,1,0,0,0
access_product_template_user,product.template user,product.model_product_template,sf_base.group_sf_mrp_user,1,0,0,0 access_product_template_user_group_sf_mrp_user,product.template user,product.model_product_template,sf_base.group_sf_mrp_user,1,0,0,0
access_uom_uom_user,uom.uom user,uom.model_uom_uom,sf_base.group_sf_mrp_user,1,0,0,0 access_uom_uom_user,uom.uom user_group_sf_mrp_user,uom.model_uom_uom,sf_base.group_sf_mrp_user,1,0,0,0
access_product_supplierinfo_user,product.supplierinfo user,product.model_product_supplierinfo,sf_base.group_sf_mrp_user,1,0,0,0 access_product_supplierinfo_user_group_sf_mrp_user,product.supplierinfo user,product.model_product_supplierinfo,sf_base.group_sf_mrp_user,1,0,0,0
access_res_partner,res.partner,base.model_res_partner,sf_base.group_sf_mrp_user,1,0,0,0 access_res_partner_group_sf_mrp_user,res.partner,base.model_res_partner,sf_base.group_sf_mrp_user,1,0,0,0
access_mrp_workorder_mrp_user,mrp.workorder.user,mrp.model_mrp_workorder,sf_base.group_sf_mrp_user,1,1,1,0 access_mrp_workorder_mrp_user_group_sf_mrp_user,mrp.workorder.user,mrp.model_mrp_workorder,sf_base.group_sf_mrp_user,1,1,1,0
access_mrp_workorder_mrp_manager,mrp.workorder,mrp.model_mrp_workorder,sf_base.group_sf_mrp_user,1,1,1,0 access_mrp_workorder_mrp_manager_group_sf_mrp_user,mrp.workorder,mrp.model_mrp_workorder,sf_base.group_sf_mrp_user,1,1,1,0
access_resource_calendar_leaves_user,mrp.resource.calendar.leaves.user,resource.model_resource_calendar_leaves,sf_base.group_sf_mrp_user,1,1,1,0 access_resource_calendar_leaves_user_group_sf_mrp_user,mrp.resource.calendar.leaves.user,resource.model_resource_calendar_leaves,sf_base.group_sf_mrp_user,1,1,1,0
access_resource_calendar_leaves_manager,mrp.resource.calendar.leaves.manager,resource.model_resource_calendar_leaves,sf_base.group_sf_mrp_user,1,0,0,0 access_resource_calendar_leaves_manager_group_sf_mrp_user,mrp.resource.calendar.leaves.manager,resource.model_resource_calendar_leaves,sf_base.group_sf_mrp_user,1,0,0,0
access_resource_calendar_attendance_mrp_user,mrp.resource.calendar.attendance.mrp.user,resource.model_resource_calendar_attendance,sf_base.group_sf_mrp_user,1,1,1,0 access_resource_calendar_attendance_mrp_user_group_sf_mrp_user,mrp.resource.calendar.attendance.mrp.user,resource.model_resource_calendar_attendance,sf_base.group_sf_mrp_user,1,1,1,0
access_resource_calendar_attendance_manager,mrp.resource.calendar.attendance.manager,resource.model_resource_calendar_attendance,sf_base.group_sf_mrp_user,1,1,1,0 access_resource_calendar_attendance_manager_group_sf_mrp_user,mrp.resource.calendar.attendance.manager,resource.model_resource_calendar_attendance,sf_base.group_sf_mrp_user,1,1,1,0
access_uom_category,uom.category,uom.model_uom_category,sf_base.group_sf_mrp_user,1,0,0,0 access_uom_category_group_sf_mrp_user,uom.category,uom.model_uom_category,sf_base.group_sf_mrp_user,1,0,0,0
access_resource_resource,resource.resource,resource.model_resource_resource,sf_base.group_sf_mrp_user,1,0,0,0 access_resource_resource_group_sf_mrp_user,resource.resource,resource.model_resource_resource,sf_base.group_sf_mrp_user,1,0,0,0
access_resource_resource_manager,resource.resource.manager,resource.model_resource_resource,sf_base.group_sf_mrp_user,1,1,1,0 access_resource_resource_manager_group_sf_mrp_user,resource.resource.manager,resource.model_resource_resource,sf_base.group_sf_mrp_user,1,1,1,0
access_product_supplierinfo_manager,product.supplierinfo user,product.model_product_supplierinfo,sf_base.group_sf_mrp_user,1,0,0,0 access_product_supplierinfo_manager_group_sf_mrp_user,product.supplierinfo user,product.model_product_supplierinfo,sf_base.group_sf_mrp_user,1,0,0,0
access_mrp_production_manager,mrp.production manager,mrp.model_mrp_production,sf_base.group_sf_mrp_user,1,0,0,0 access_mrp_production_manager_group_sf_mrp_user,mrp.production manager,mrp.model_mrp_production,sf_base.group_sf_mrp_user,1,0,0,0
access_mrp_bom_stockuser,mrp.bom,mrp.model_mrp_bom,stock.group_stock_user,1,0,0,0 access_mrp_bom_stockuser,mrp.bom,mrp.model_mrp_bom,stock.group_stock_user,1,0,0,0
access_mrp_bom_line_stockuser,mrp.bom.line,mrp.model_mrp_bom_line,stock.group_stock_user,1,0,0,0 access_mrp_bom_line_stockuser,mrp.bom.line,mrp.model_mrp_bom_line,stock.group_stock_user,1,0,0,0
access_uom_category_mrp_manager,uom.category mrp_manager,uom.model_uom_category,sf_base.group_sf_mrp_user,1,1,1,0 access_uom_category_mrp_manager_group_sf_mrp_user,uom.category mrp_manager,uom.model_uom_category,sf_base.group_sf_mrp_user,1,1,1,0
access_uom_uom_mrp_manager,uom.uom mrp_manager,uom.model_uom_uom,sf_base.group_sf_mrp_user,1,1,1,0 access_uom_uom_mrp_manager_group_sf_mrp_user,uom.uom mrp_manager,uom.model_uom_uom,sf_base.group_sf_mrp_user,1,1,1,0
access_product_category_mrp_manager,product.category mrp_manager,product.model_product_category,sf_base.group_sf_mrp_user,1,1,1,0 access_product_category_mrp_manager_group_sf_mrp_user,product.category mrp_manager,product.model_product_category,sf_base.group_sf_mrp_user,1,1,1,0
access_product_template_mrp_manager,product.template mrp_manager,product.model_product_template,sf_base.group_sf_mrp_user,1,1,1,0 access_product_template_mrp_manager_group_sf_mrp_user,product.template mrp_manager,product.model_product_template,sf_base.group_sf_mrp_user,1,1,1,0
access_product_product_mrp_manager,product.product mrp_manager,product.model_product_product,sf_base.group_sf_mrp_user,1,1,1,0 access_product_product_mrp_manager_group_sf_mrp_user,product.product mrp_manager,product.model_product_product,sf_base.group_sf_mrp_user,1,1,1,0
access_product_packaging_mrp_manager,product.packaging mrp_manager,product.model_product_packaging,sf_base.group_sf_mrp_user,1,1,1,0 access_product_packaging_mrp_manager_group_sf_mrp_user,product.packaging mrp_manager,product.model_product_packaging,sf_base.group_sf_mrp_user,1,1,1,0
access_product_pricelist_mrp_manager,product.pricelist mrp_manager,product.model_product_pricelist,sf_base.group_sf_mrp_user,1,1,1,0 access_product_pricelist_mrp_manager_group_sf_mrp_user,product.pricelist mrp_manager,product.model_product_pricelist,sf_base.group_sf_mrp_user,1,1,1,0
access_product_group_res_partner_mrp_manager,res_partner sf_base.group_sf_mrp_manager,base.model_res_partner,sf_base.group_sf_mrp_user,1,1,1,0 access_product_group_res_partner_mrp_manager_group_sf_mrp_user,res_partner sf_base.group_sf_mrp_manager,base.model_res_partner,sf_base.group_sf_mrp_user,1,1,1,0
access_product_pricelist_item_mrp_manager,product.pricelist.item mrp_manager,product.model_product_pricelist_item,sf_base.group_sf_mrp_user,1,1,1,0 access_product_pricelist_item_mrp_manager_group_sf_mrp_user,product.pricelist.item mrp_manager,product.model_product_pricelist_item,sf_base.group_sf_mrp_user,1,1,1,0
access_product_tag_mrp_manager,product.tag.mrp.manager,product.model_product_tag,sf_base.group_sf_mrp_manager,1,1,1,0 access_product_tag_mrp_manager,product.tag.mrp.manager,product.model_product_tag,sf_base.group_sf_mrp_manager,1,1,1,0
access_resource_calendar_manufacturinguser,resource.calendar manufacturing.user,resource.model_resource_calendar,sf_base.group_sf_mrp_user,1,0,0,0 access_resource_calendar_manufacturinguser_group_sf_mrp_user,resource.calendar manufacturing.user,resource.model_resource_calendar,sf_base.group_sf_mrp_user,1,0,0,0
access_mrp_unbuild,mrp.unbuild,mrp.model_mrp_unbuild,sf_base.group_sf_mrp_user,1,1,1,0 access_mrp_unbuild_group_sf_mrp_user,mrp.unbuild,mrp.model_mrp_unbuild,sf_base.group_sf_mrp_user,1,1,1,0
access_mrp_unbuild_manager,mrp.unbuild manager,mrp.model_mrp_unbuild,sf_base.group_sf_mrp_manager,1,1,1,0 access_mrp_unbuild_manager,mrp.unbuild manager,mrp.model_mrp_unbuild,sf_base.group_sf_mrp_manager,1,1,1,0
access_mrp_document_mrp_manager,mrp.document group_user,mrp.model_mrp_document,sf_base.group_sf_mrp_manager,1,1,1,0 access_mrp_document_mrp_manager,mrp.document group_user,mrp.model_mrp_document,sf_base.group_sf_mrp_manager,1,1,1,0
access_mrp_document_mrp_user,mrp.document group_user,mrp.model_mrp_document,sf_base.group_sf_mrp_user,1,1,1,0 access_mrp_document_mrp_user_group_sf_mrp_user,mrp.document group_user,mrp.model_mrp_document,sf_base.group_sf_mrp_user,1,1,1,0
access_change_production_qty,access.change.production.qty,mrp.model_change_production_qty,sf_base.group_sf_mrp_user,1,1,1,0 access_change_production_qty_group_sf_mrp_user,access.change.production.qty,mrp.model_change_production_qty,sf_base.group_sf_mrp_user,1,1,1,0
access_stock_warn_insufficient_qty_unbuild,access.stock.warn.insufficient.qty.unbuild,mrp.model_stock_warn_insufficient_qty_unbuild,sf_base.group_sf_mrp_user,1,1,1,0 access_stock_warn_insufficient_qty_unbuild_group_sf_mrp_user,access.stock.warn.insufficient.qty.unbuild,mrp.model_stock_warn_insufficient_qty_unbuild,sf_base.group_sf_mrp_user,1,1,1,0
access_mrp_production_backorder,access.mrp.production.backorder,mrp.model_mrp_production_backorder,sf_base.group_sf_mrp_user,1,1,1,0 access_mrp_production_backorder_group_sf_mrp_user,access.mrp.production.backorder,mrp.model_mrp_production_backorder,sf_base.group_sf_mrp_user,1,1,1,0
access_mrp_production_backorder_line,access.mrp.production.backorder.line,mrp.model_mrp_production_backorder_line,sf_base.group_sf_mrp_user,1,1,1,0 access_mrp_production_backorder_line_group_sf_mrp_user,access.mrp.production.backorder.line,mrp.model_mrp_production_backorder_line,sf_base.group_sf_mrp_user,1,1,1,0
access_mrp_consumption_warning,access.mrp.consumption.warning,mrp.model_mrp_consumption_warning,sf_base.group_sf_mrp_user,1,1,1,0 access_mrp_consumption_warning_group_sf_mrp_user,access.mrp.consumption.warning,mrp.model_mrp_consumption_warning,sf_base.group_sf_mrp_user,1,1,1,0
access_mrp_consumption_warning_line,access.mrp.consumption.warning.line,mrp.model_mrp_consumption_warning_line,sf_base.group_sf_mrp_user,1,1,1,0 access_mrp_consumption_warning_line_group_sf_mrp_user,access.mrp.consumption.warning.line,mrp.model_mrp_consumption_warning_line,sf_base.group_sf_mrp_user,1,1,1,0
access_mrp_immediate_production,access.mrp.immediate.production,mrp.model_mrp_immediate_production,sf_base.group_sf_mrp_user,1,1,1,0 access_mrp_immediate_production_group_sf_mrp_user,access.mrp.immediate.production,mrp.model_mrp_immediate_production,sf_base.group_sf_mrp_user,1,1,1,0
access_mrp_immediate_production_line,access.mrp.immediate.production.line,mrp.model_mrp_immediate_production_line,sf_base.group_sf_mrp_user,1,1,1,0 access_mrp_immediate_production_line_group_sf_mrp_user,access.mrp.immediate.production.line,mrp.model_mrp_immediate_production_line,sf_base.group_sf_mrp_user,1,1,1,0
access_mrp_workcenter_tag_group_user,access.mrp.workcenter.tag,mrp.model_mrp_workcenter_tag,sf_base.group_sf_mrp_user,1,0,0,0 access_mrp_workcenter_tag_manager_group_sf_mrp_user,access.mrp.workcenter.tag,mrp.model_mrp_workcenter_tag,sf_base.group_sf_mrp_user,1,1,1,0
access_mrp_workcenter_tag_manager,access.mrp.workcenter.tag,mrp.model_mrp_workcenter_tag,sf_base.group_sf_mrp_user,1,1,1,0 access_mrp_production_split_multi_group_sf_mrp_user,access.mrp.production.split.multi,mrp.model_mrp_production_split_multi,sf_base.group_sf_mrp_user,1,1,1,0
access_mrp_production_split_multi,access.mrp.production.split.multi,mrp.model_mrp_production_split_multi,sf_base.group_sf_mrp_user,1,1,1,0 access_mrp_production_split_group_sf_mrp_user,access.mrp.production.split,mrp.model_mrp_production_split,sf_base.group_sf_mrp_user,1,1,1,0
access_mrp_production_split,access.mrp.production.split,mrp.model_mrp_production_split,sf_base.group_sf_mrp_user,1,1,1,0 access_mrp_production_split_line_group_sf_mrp_user,access.mrp.production.split.line,mrp.model_mrp_production_split_line,sf_base.group_sf_mrp_user,1,1,1,0
access_mrp_production_split_line,access.mrp.production.split.line,mrp.model_mrp_production_split_line,sf_base.group_sf_mrp_user,1,1,1,0 access_mrp_workcenter_capacity_manager_group_sf_mrp_user,mrp.workcenter.capacity.manager,mrp.model_mrp_workcenter_capacity,sf_base.group_sf_mrp_user,1,1,1,0
access_mrp_workcenter_capacity_manager,mrp.workcenter.capacity.manager,mrp.model_mrp_workcenter_capacity,sf_base.group_sf_mrp_user,1,1,1,0
access_mrp_production_group_plan_dispatch,mrp_production,model_mrp_production,sf_base.group_plan_dispatch,1,0,0,0 access_mrp_production_group_plan_dispatch,mrp_production,model_mrp_production,sf_base.group_plan_dispatch,1,0,0,0
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 access_sf_cnc_processing access_sf_cnc_processing_group_sf_mrp_user sf_cnc_processing model_sf_cnc_processing sf_base.group_sf_mrp_user 1 0 0 0
3 access_sf_cnc_processing_manager sf_cnc_processing model_sf_cnc_processing sf_base.group_sf_mrp_manager 1 1 1 0
4 access_sf_cmm_program_group_sf_mrp_user access_sf_cmm_program_group_sf_mrp_user_group_sf_mrp_user sf_cmm_program_group_sf_mrp_user model_sf_cmm_program sf_base.group_sf_mrp_user 1 0 0 0
5 access_sf_cmm_program_group_sf_mrp_manager sf_cmm_program_group_sf_mrp_manager model_sf_cmm_program sf_base.group_sf_mrp_manager 1 0 0 0
6 access_sf_model_type access_sf_model_type_group_sf_mrp_user sf_model_type model_sf_model_type sf_base.group_sf_mrp_user 1 0 0 0
7 access_sf_model_type_admin sf_model_type_admin model_sf_model_type base.group_system 1 1 1 0
8 access_sf_model_type_manager sf_model_type model_sf_model_type sf_base.group_sf_mrp_manager 1 1 1 0
9 access_sf_model_type_group_sale_director sf_model_type_group_sale_director model_sf_model_type sf_base.group_sale_director 1 0 0 0
10 access_sf_model_type_group_purchase_director sf_model_type_group_purchase_director model_sf_model_type sf_base.group_purchase_director 1 0 0 0
11 access_sf_model_type_group_plan_director sf_model_type_group_plan_director model_sf_model_type sf_base.group_plan_director 1 0 0 0
12 access_sf_product_model_type_routing_sort access_sf_product_model_type_routing_sort_group_sf_mrp_user sf_product_model_type_routing_sort model_sf_product_model_type_routing_sort sf_base.group_sf_mrp_user 1 0 0 0
13 access_sf_product_model_type_routing_sort_manager sf_product_model_type_routing_sort model_sf_product_model_type_routing_sort sf_base.group_sf_mrp_manager 1 1 1 0
14 access_sf_embryo_model_type_routing_sort access_sf_embryo_model_type_routing_sort_group_sf_mrp_user sf_embryo_model_type_routing_sort model_sf_embryo_model_type_routing_sort sf_base.group_sf_mrp_user 1 0 0 0
15 access_sf_embryo_model_type_routing_sort_manager sf_embryo_model_type_routing_sort model_sf_embryo_model_type_routing_sort sf_base.group_sf_mrp_manager 1 1 1 0
16 access_sf_surface_technics_model_type_routing_sort sf_surface_technics_model_type_routing_sort model_sf_surface_technics_model_type_routing_sort sf_base.group_sf_mrp_user 1 0 0 0
17 access_sf_surface_technics_model_type_routing_sort_manager sf_surface_technics_model_type_routing_sort model_sf_surface_technics_model_type_routing_sort sf_base.group_sf_mrp_manager 1 1 1 0
18 access_sf_production_line access_sf_production_line_group_sf_mrp_user sf.production.line model_sf_production_line sf_base.group_sf_mrp_user 1 1 1 0
19 access_sf_production_line_manager sf.production.line model_sf_production_line sf_base.group_sf_mrp_manager 1 1 1 0
20 access_maintenance_equipment_tool access_maintenance_equipment_tool_group_sf_mrp_user maintenance_equipment_tool model_maintenance_equipment_tool sf_base.group_sf_mrp_user 1 0 0 0
21 access_maintenance_equipment_tool_manager maintenance_equipment_tool model_maintenance_equipment_tool sf_base.group_sf_mrp_manager 1 1 1 0
22 access_maintenance_equipment_tool_equipment_manager maintenance_equipment_tool model_maintenance_equipment_tool sf_maintenance.sf_group_equipment_user 1 1 1 0
23 access_mrp_production access_mrp_production_group_sf_mrp_user mrp_production model_mrp_production sf_base.group_sf_mrp_user 1 0 0 0
24 access_mrp_production_manager mrp_production model_mrp_production sf_base.group_sf_mrp_manager 1 1 1 0
25 access_mrp_workorder access_mrp_workorder_group_sf_mrp_user mrp_workorder model_mrp_workorder sf_base.group_sf_mrp_user 1 0 0 0
26 access_mrp_workorder_manager mrp_workorder model_mrp_workorder sf_base.group_sf_mrp_manager 1 1 1 0
27 access_mrp_workcenter access_mrp_workcenter_group_sf_mrp_user mrp_workcenter model_mrp_workcenter sf_base.group_sf_mrp_user 1 0 0 0
28 access_mrp_workcenter_manager mrp_workcenter model_mrp_workcenter sf_base.group_sf_mrp_manager 1 1 1 0
29 access_mrp_workcenter_productivity access_mrp_workcenter_productivity_group_sf_mrp_user mrp_workcenter_productivity model_mrp_workcenter_productivity sf_base.group_sf_mrp_user 1 0 0 0
30 access_mrp_workcenter_productivity_manager mrp_workcenter_productivity model_mrp_workcenter_productivity sf_base.group_sf_mrp_manager 1 1 1 0
31 access_sf_workpiece_delivery_group_sf_order_user sf_workpiece_delivery_group_sf_order_user model_sf_workpiece_delivery sf_base.group_sf_order_user 1 1 0 0
32 access_sf_workpiece_delivery_group_sf_equipment_user sf_workpiece_delivery_group_sf_equipment_user model_sf_workpiece_delivery sf_base.group_sf_equipment_user 1 1 0 0
34 access_sf_workpiece_delivery_admin sf_workpiece_delivery_admin model_sf_workpiece_delivery base.group_system 1 1 1 0
35 access_sf_workpiece_delivery_wizard_group_sf_order_user sf_workpiece_delivery_wizard_group_sf_order_user model_sf_workpiece_delivery_wizard sf_base.group_sf_order_user 1 1 1 0
36 access_mrp_workcenter_productivity_loss_manager access_mrp_workcenter_productivity_loss_manager_group_sf_mrp_user mrp.workcenter.productivity.loss mrp.model_mrp_workcenter_productivity_loss sf_base.group_sf_mrp_user 1 1 1 0
37 access_mrp_workcenter_productivity_loss access_mrp_workcenter_productivity_loss_group_sf_mrp_user mrp.workcenter.productivity.loss mrp.model_mrp_workcenter_productivity_loss sf_base.group_sf_mrp_user 1 0 0 0
38 access_mrp_workcenter_productivity_loss_type access_mrp_workcenter_productivity_loss_type_group_sf_mrp_user mrp.workcenter.productivity.loss.type mrp.model_mrp_workcenter_productivity_loss_type sf_base.group_sf_mrp_user 1 0 0 0
39 access_mrp_workcenter_productivity access_mrp_workcenter_productivity_group_sf_mrp_user mrp.workcenter.productivity mrp.model_mrp_workcenter_productivity sf_base.group_sf_mrp_user 1 1 1 0
40 access_mrp_workcenter access_mrp_workcenter_group_sf_mrp_user mrp.workcenter mrp.model_mrp_workcenter sf_base.group_sf_mrp_user 1 0 0 0
41 access_mrp_routing_workcenter access_mrp_routing_workcenter_group_sf_mrp_user mrp.routing.workcenter mrp.model_mrp_routing_workcenter sf_base.group_sf_mrp_user 1 0 0 0
42 access_mrp_bom access_mrp_bom_group_sf_mrp_user mrp.bom mrp.model_mrp_bom sf_base.group_sf_mrp_user 1 0 0 0
43 access_mrp_bom_line access_mrp_bom_line_group_sf_mrp_user mrp.bom.line mrp.model_mrp_bom_line sf_base.group_sf_mrp_user 1 0 0 0
44 access_mrp_bom_byproduct_user access_mrp_bom_byproduct_user_group_sf_mrp_user mrp.bom.byproduct mrp.model_mrp_bom_byproduct sf_base.group_sf_mrp_user 1 0 0 0
45 access_mrp_production access_mrp_production_group_sf_mrp_user mrp.production user mrp.model_mrp_production sf_base.group_sf_mrp_user 1 1 1 0
46 access_mrp_workcenter_manager access_mrp_workcenter_manager_group_sf_mrp_user mrp.workcenter.manager mrp.model_mrp_workcenter sf_base.group_sf_mrp_user 1 1 1 0
47 access_mrp_routing_workcenter_manager access_mrp_routing_workcenter_manager_group_sf_mrp_user mrp.routing.workcenter.manager mrp.model_mrp_routing_workcenter sf_base.group_sf_mrp_user 1 1 1 0
48 access_mrp_bom_manager access_mrp_bom_manager_group_sf_mrp_user mrp.bom.manager mrp.model_mrp_bom sf_base.group_sf_mrp_user 1 1 1 0
49 access_mrp_bom_line_manager access_mrp_bom_line_manager_group_sf_mrp_user mrp.bom.line.manager mrp.model_mrp_bom_line sf_base.group_sf_mrp_user 1 1 1 0
50 access_mrp_bom_line_group_plan_director mrp_bom_line_group_plan_director mrp.model_mrp_bom_line sf_base.group_plan_director 1 1 1 0
51 access_mrp_bom_line_group_sale_director mrp_bom_line_group_sale_director mrp.model_mrp_bom_line sf_base.group_sale_director 1 1 1 0
52 access_mrp_bom_line_group_purchase_director mrp_bom_line_group_purchase_director mrp.model_mrp_bom_line sf_base.group_purchase_director 1 1 1 0
53 access_mrp_bom_byproduct_manager access_mrp_bom_byproduct_manager_group_sf_mrp_user mrp.bom.byproduct manager mrp.model_mrp_bom_byproduct sf_base.group_sf_mrp_user 1 1 1 0
54 access_mrp_production_stock_worker mrp.production stock_worker mrp.model_mrp_production stock.group_stock_user 1 0 0 0
55 access_product_product_user access_product_product_user_group_sf_mrp_user product.product user product.model_product_product sf_base.group_sf_mrp_user 1 0 0 0
56 access_product_template_user access_product_template_user_group_sf_mrp_user product.template user product.model_product_template sf_base.group_sf_mrp_user 1 0 0 0
57 access_uom_uom_user uom.uom user uom.uom user_group_sf_mrp_user uom.model_uom_uom sf_base.group_sf_mrp_user 1 0 0 0
58 access_product_supplierinfo_user access_product_supplierinfo_user_group_sf_mrp_user product.supplierinfo user product.model_product_supplierinfo sf_base.group_sf_mrp_user 1 0 0 0
59 access_res_partner access_res_partner_group_sf_mrp_user res.partner base.model_res_partner sf_base.group_sf_mrp_user 1 0 0 0
60 access_mrp_workorder_mrp_user access_mrp_workorder_mrp_user_group_sf_mrp_user mrp.workorder.user mrp.model_mrp_workorder sf_base.group_sf_mrp_user 1 1 1 0
61 access_mrp_workorder_mrp_manager access_mrp_workorder_mrp_manager_group_sf_mrp_user mrp.workorder mrp.model_mrp_workorder sf_base.group_sf_mrp_user 1 1 1 0
62 access_resource_calendar_leaves_user access_resource_calendar_leaves_user_group_sf_mrp_user mrp.resource.calendar.leaves.user resource.model_resource_calendar_leaves sf_base.group_sf_mrp_user 1 1 1 0
63 access_resource_calendar_leaves_manager access_resource_calendar_leaves_manager_group_sf_mrp_user mrp.resource.calendar.leaves.manager resource.model_resource_calendar_leaves sf_base.group_sf_mrp_user 1 0 0 0
64 access_resource_calendar_attendance_mrp_user access_resource_calendar_attendance_mrp_user_group_sf_mrp_user mrp.resource.calendar.attendance.mrp.user resource.model_resource_calendar_attendance sf_base.group_sf_mrp_user 1 1 1 0
65 access_resource_calendar_attendance_manager access_resource_calendar_attendance_manager_group_sf_mrp_user mrp.resource.calendar.attendance.manager resource.model_resource_calendar_attendance sf_base.group_sf_mrp_user 1 1 1 0
66 access_uom_category access_uom_category_group_sf_mrp_user uom.category uom.model_uom_category sf_base.group_sf_mrp_user 1 0 0 0
67 access_resource_resource access_resource_resource_group_sf_mrp_user resource.resource resource.model_resource_resource sf_base.group_sf_mrp_user 1 0 0 0
68 access_resource_resource_manager access_resource_resource_manager_group_sf_mrp_user resource.resource.manager resource.model_resource_resource sf_base.group_sf_mrp_user 1 1 1 0
69 access_product_supplierinfo_manager access_product_supplierinfo_manager_group_sf_mrp_user product.supplierinfo user product.model_product_supplierinfo sf_base.group_sf_mrp_user 1 0 0 0
70 access_mrp_production_manager access_mrp_production_manager_group_sf_mrp_user mrp.production manager mrp.model_mrp_production sf_base.group_sf_mrp_user 1 0 0 0
71 access_mrp_bom_stockuser mrp.bom mrp.model_mrp_bom stock.group_stock_user 1 0 0 0
72 access_mrp_bom_line_stockuser mrp.bom.line mrp.model_mrp_bom_line stock.group_stock_user 1 0 0 0
73 access_uom_category_mrp_manager access_uom_category_mrp_manager_group_sf_mrp_user uom.category mrp_manager uom.model_uom_category sf_base.group_sf_mrp_user 1 1 1 0
74 access_uom_uom_mrp_manager access_uom_uom_mrp_manager_group_sf_mrp_user uom.uom mrp_manager uom.model_uom_uom sf_base.group_sf_mrp_user 1 1 1 0
75 access_product_category_mrp_manager access_product_category_mrp_manager_group_sf_mrp_user product.category mrp_manager product.model_product_category sf_base.group_sf_mrp_user 1 1 1 0
76 access_product_template_mrp_manager access_product_template_mrp_manager_group_sf_mrp_user product.template mrp_manager product.model_product_template sf_base.group_sf_mrp_user 1 1 1 0
77 access_product_product_mrp_manager access_product_product_mrp_manager_group_sf_mrp_user product.product mrp_manager product.model_product_product sf_base.group_sf_mrp_user 1 1 1 0
78 access_product_packaging_mrp_manager access_product_packaging_mrp_manager_group_sf_mrp_user product.packaging mrp_manager product.model_product_packaging sf_base.group_sf_mrp_user 1 1 1 0
79 access_product_pricelist_mrp_manager access_product_pricelist_mrp_manager_group_sf_mrp_user product.pricelist mrp_manager product.model_product_pricelist sf_base.group_sf_mrp_user 1 1 1 0
80 access_product_group_res_partner_mrp_manager access_product_group_res_partner_mrp_manager_group_sf_mrp_user res_partner sf_base.group_sf_mrp_manager base.model_res_partner sf_base.group_sf_mrp_user 1 1 1 0
81 access_product_pricelist_item_mrp_manager access_product_pricelist_item_mrp_manager_group_sf_mrp_user product.pricelist.item mrp_manager product.model_product_pricelist_item sf_base.group_sf_mrp_user 1 1 1 0
82 access_product_tag_mrp_manager product.tag.mrp.manager product.model_product_tag sf_base.group_sf_mrp_manager 1 1 1 0
83 access_resource_calendar_manufacturinguser access_resource_calendar_manufacturinguser_group_sf_mrp_user resource.calendar manufacturing.user resource.model_resource_calendar sf_base.group_sf_mrp_user 1 0 0 0
84 access_mrp_unbuild access_mrp_unbuild_group_sf_mrp_user mrp.unbuild mrp.model_mrp_unbuild sf_base.group_sf_mrp_user 1 1 1 0
85 access_mrp_unbuild_manager mrp.unbuild manager mrp.model_mrp_unbuild sf_base.group_sf_mrp_manager 1 1 1 0
86 access_mrp_document_mrp_manager mrp.document group_user mrp.model_mrp_document sf_base.group_sf_mrp_manager 1 1 1 0
87 access_mrp_document_mrp_user access_mrp_document_mrp_user_group_sf_mrp_user mrp.document group_user mrp.model_mrp_document sf_base.group_sf_mrp_user 1 1 1 0
88 access_change_production_qty access_change_production_qty_group_sf_mrp_user access.change.production.qty mrp.model_change_production_qty sf_base.group_sf_mrp_user 1 1 1 0
89 access_stock_warn_insufficient_qty_unbuild access_stock_warn_insufficient_qty_unbuild_group_sf_mrp_user access.stock.warn.insufficient.qty.unbuild mrp.model_stock_warn_insufficient_qty_unbuild sf_base.group_sf_mrp_user 1 1 1 0
90 access_mrp_production_backorder access_mrp_production_backorder_group_sf_mrp_user access.mrp.production.backorder mrp.model_mrp_production_backorder sf_base.group_sf_mrp_user 1 1 1 0
91 access_mrp_production_backorder_line access_mrp_production_backorder_line_group_sf_mrp_user access.mrp.production.backorder.line mrp.model_mrp_production_backorder_line sf_base.group_sf_mrp_user 1 1 1 0
92 access_mrp_consumption_warning access_mrp_consumption_warning_group_sf_mrp_user access.mrp.consumption.warning mrp.model_mrp_consumption_warning sf_base.group_sf_mrp_user 1 1 1 0
93 access_mrp_consumption_warning_line access_mrp_consumption_warning_line_group_sf_mrp_user access.mrp.consumption.warning.line mrp.model_mrp_consumption_warning_line sf_base.group_sf_mrp_user 1 1 1 0
94 access_mrp_immediate_production access_mrp_immediate_production_group_sf_mrp_user access.mrp.immediate.production mrp.model_mrp_immediate_production sf_base.group_sf_mrp_user 1 1 1 0
95 access_mrp_immediate_production_line access_mrp_immediate_production_line_group_sf_mrp_user access.mrp.immediate.production.line mrp.model_mrp_immediate_production_line sf_base.group_sf_mrp_user 1 1 1 0
96 access_mrp_workcenter_tag_group_user access_mrp_workcenter_tag_manager_group_sf_mrp_user access.mrp.workcenter.tag mrp.model_mrp_workcenter_tag sf_base.group_sf_mrp_user 1 0 1 0 1 0
97 access_mrp_workcenter_tag_manager access_mrp_production_split_multi_group_sf_mrp_user access.mrp.workcenter.tag access.mrp.production.split.multi mrp.model_mrp_workcenter_tag mrp.model_mrp_production_split_multi sf_base.group_sf_mrp_user 1 1 1 0
98 access_mrp_production_split_multi access_mrp_production_split_group_sf_mrp_user access.mrp.production.split.multi access.mrp.production.split mrp.model_mrp_production_split_multi mrp.model_mrp_production_split sf_base.group_sf_mrp_user 1 1 1 0
99 access_mrp_production_split access_mrp_production_split_line_group_sf_mrp_user access.mrp.production.split access.mrp.production.split.line mrp.model_mrp_production_split mrp.model_mrp_production_split_line sf_base.group_sf_mrp_user 1 1 1 0
100 access_mrp_production_split_line access_mrp_workcenter_capacity_manager_group_sf_mrp_user access.mrp.production.split.line mrp.workcenter.capacity.manager mrp.model_mrp_production_split_line mrp.model_mrp_workcenter_capacity sf_base.group_sf_mrp_user 1 1 1 0
101 access_mrp_workcenter_capacity_manager access_mrp_production_group_plan_dispatch mrp.workcenter.capacity.manager mrp_production mrp.model_mrp_workcenter_capacity model_mrp_production sf_base.group_sf_mrp_user sf_base.group_plan_dispatch 1 1 0 1 0 0
102 access_mrp_production_group_plan_dispatch access_mrp_workorder mrp_production mrp_workorder model_mrp_production model_mrp_workorder sf_base.group_plan_dispatch 1 0 1 0 1 0
access_mrp_workorder mrp_workorder model_mrp_workorder sf_base.group_plan_dispatch 1 1 1 0
103 access_sf_production_line_group_plan_dispatch sf.production.line model_sf_production_line sf_base.group_plan_dispatch 1 0 0 0
104 access_sf_production_line_group_plan_director sf.production.line model_sf_production_line sf_base.group_plan_director 1 1 1 0
105 access_sf_production_line sf.production.line model_sf_production_line sf_maintenance.sf_group_equipment_user 1 1 1 0

View File

@@ -143,10 +143,10 @@
</group> </group>
</page> </page>
</xpath> </xpath>
<xpath expr="//label[1]" position="before"> <xpath expr="//label[1]" position="before">
<field name='routing_type'/> <field name='routing_type'/>
</xpath> </xpath>
<xpath expr="//label[1]" position="attributes"> <xpath expr="//label[1]" position="attributes">
<attribute name="string">计划加工时间</attribute> <attribute name="string">计划加工时间</attribute>
</xpath> </xpath>
<!-- 隐藏物料清单--> <!-- 隐藏物料清单-->
@@ -434,9 +434,10 @@
<field name="results" invisible="1"/> <field name="results" invisible="1"/>
<page string="后置三元检测" attrs='{"invisible": [("routing_type","!=","CNC加工")]}'> <page string="后置三元检测" attrs='{"invisible": [("routing_type","!=","CNC加工")]}'>
<group> <group>
<field name="test_results" widget="selection" attrs='{"invisible":[("results","!=",False)]}'/> <field name="test_result" readonly="1" attrs='{"invisible":[("results","!=",False)]}'/>
<field name="results" readonly="1" attrs='{"invisible":[("results","!=","合格")]}'/> <field name="results" readonly="1" attrs='{"invisible":[("results","!=","合格")]}'/>
<field name="detection_report" attrs='{"invisible":[("results","!=",False)]}' widget="pdf_viewer"/> <field name="detection_report" attrs='{"invisible":[("results","!=",False)]}'
widget="pdf_viewer"/>
</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"
@@ -447,7 +448,7 @@
</xpath> </xpath>
<xpath expr="//page[1]" position="before"> <xpath expr="//page[1]" position="before">
<page string="CNC程序" attrs='{"invisible": [("routing_type","!=","CNC加工")]}'> <page string="CNC程序" attrs='{"invisible": [("routing_type","!=","CNC加工")]}'>
<field name="cnc_ids" widget="one2many" string="工作程序"> <field name="cnc_ids" widget="one2many" string="工作程序" default_order="sequence_number,id">
<tree decoration-success="button_state" decoration-bf="button_state"> <tree decoration-success="button_state" decoration-bf="button_state">
<field name="sequence_number"/> <field name="sequence_number"/>
<field name="program_name"/> <field name="program_name"/>

View File

@@ -41,29 +41,26 @@ class FtpController():
# 下载目录下的检测文件 # 下载目录下的检测文件
def download_reportfile_tree(self, target_dir, serverdir, reportpath): def download_reportfile_tree(self, target_dir, serverdir, reportpath):
if not os.path.exists(serverdir):
os.makedirs(serverdir)
try: try:
logging.info("进入FTP目录 ") logging.info("进入FTP目录-检测文件")
logging.info('FTP目录1:%s' % target_dir)
logging.info('serverdir:%s' % serverdir) logging.info('serverdir:%s' % serverdir)
logging.info('reportpath:%s' % reportpath)
target_dir1 = target_dir.split('/') target_dir1 = target_dir.split('/')
logging.info('target_dir1:%s' % target_dir1[1]) logging.info('目录1:%s' % target_dir1[1])
target_dir = os.path.join('/', target_dir1[1]) self.ftp.cwd(target_dir1[1]) # 切换工作路径
logging.info('target_dir:%s' % target_dir) logging.info('目录2:%s' % target_dir1[2])
self.ftp.cwd(target_dir) # 切换工作路径 self.ftp.cwd(target_dir1[2]) # 切换工作路径
logging.info('FTP目录111111:%s' % target_dir[2])
self.ftp.cwd(target_dir[2]) # 切换工作路径
logging.info('FTP目录:%s' % target_dir)
remotenames = self.ftp.nlst() remotenames = self.ftp.nlst()
logging.info('FTP目录检测报告文件:%s' % remotenames) logging.info('FTP目录检测报告文件:%s' % remotenames)
for file in remotenames: for filename in remotenames:
server = os.path.join(serverdir, file) if os.path.basename(filename) == os.path.basename(reportpath):
logging.info('server' % server) server = os.path.join(serverdir, filename)
if file.find(reportpath) != -1: logging.info('server%s' % server)
self.download_file(server, file) self.download_file(server, filename)
return 1 return 1
except: except Exception:
return False return 0
# 下载指定目录下的指定文件 # 下载指定目录下的指定文件
def download_file(self, serverfile, remotefile): def download_file(self, serverfile, remotefile):

View File

@@ -78,7 +78,6 @@ class ReSaleOrder(models.Model):
return customer return customer
else: else:
partner = self.env['res.partner'].create({'name': '业务平台'}) partner = self.env['res.partner'].create({'name': '业务平台'})
self.env['res.users'].create({'name': '业务平台', 'partner_id': partner.id})
return partner return partner
# 业务平台分配工厂时在创建完产品后再创建销售明细信息 # 业务平台分配工厂时在创建完产品后再创建销售明细信息

View File

@@ -42,6 +42,8 @@ class FunctionalCuttingToolEntity(models.Model):
current_location = fields.Char('位置', compute='_compute_current_location_id') current_location = fields.Char('位置', compute='_compute_current_location_id')
image = fields.Binary('图片', readonly=True) image = fields.Binary('图片', readonly=True)
active = fields.Boolean(string='已归档', default=True)
@api.depends('barcode_id') @api.depends('barcode_id')
def _compute_current_location_id(self): def _compute_current_location_id(self):
for record in self: for record in self:
@@ -241,6 +243,8 @@ class FunctionalToolWarning(models.Model):
dispose_time = fields.Char('处理时间') dispose_time = fields.Char('处理时间')
dispose_func = fields.Char('处理方法/措施', readonly=False) dispose_func = fields.Char('处理方法/措施', readonly=False)
active = fields.Boolean(string='已归档', default=True)
@api.model @api.model
def _read_group_machine_table_name_ids(self, categories, domain, order): def _read_group_machine_table_name_ids(self, categories, domain, order):
machine_table_name_ids = categories._search([], order=order, access_rights_uid=SUPERUSER_ID) machine_table_name_ids = categories._search([], order=order, access_rights_uid=SUPERUSER_ID)
@@ -340,6 +344,8 @@ class RealTimeDistributionOfFunctionalTools(models.Model):
sf_functional_tool_assembly_ids = fields.Many2many('sf.functional.tool.assembly', 'sf_functional_tool_assembly_ref', sf_functional_tool_assembly_ids = fields.Many2many('sf.functional.tool.assembly', 'sf_functional_tool_assembly_ref',
'功能刀具组装单', readonly=True) '功能刀具组装单', readonly=True)
active = fields.Boolean(string='已归档', default=True)
@api.depends('tool_groups_id', 'diameter', 'knife_tip_r_angle') @api.depends('tool_groups_id', 'diameter', 'knife_tip_r_angle')
def _compute_name(self): def _compute_name(self):
for obj in self: for obj in self:
@@ -511,6 +517,8 @@ class MachineTableToolChangingApply(models.Model):
sf_functional_tool_assembly_id = fields.Many2one('sf.functional.tool.assembly', '功能刀具组装单', readonly=True) sf_functional_tool_assembly_id = fields.Many2one('sf.functional.tool.assembly', '功能刀具组装单', readonly=True)
active = fields.Boolean(string='已归档', default=True)
@api.depends('alarm_value', 'used_value') @api.depends('alarm_value', 'used_value')
def _compute_functional_tool_status(self): def _compute_functional_tool_status(self):
for record in self: for record in self:
@@ -677,6 +685,8 @@ class CAMWorkOrderProgramKnifePlan(models.Model):
sf_functional_tool_assembly_id = fields.Many2one('sf.functional.tool.assembly', '功能刀具组装', readonly=True) sf_functional_tool_assembly_id = fields.Many2one('sf.functional.tool.assembly', '功能刀具组装', readonly=True)
active = fields.Boolean(string='已归档', default=True)
@api.depends('diameter', 'tool_included_angle', 'tool_groups_id') @api.depends('diameter', 'tool_included_angle', 'tool_groups_id')
def _compute_functional_tool_name(self): def _compute_functional_tool_name(self):
for obj in self: for obj in self:
@@ -928,6 +938,8 @@ class FunctionalToolAssembly(models.Model):
sf_cam_work_order_program_knife_plan_id = fields.Many2one('sf.cam.work.order.program.knife.plan', sf_cam_work_order_program_knife_plan_id = fields.Many2one('sf.cam.work.order.program.knife.plan',
'CAM工单程序用刀计划', readonly=True, ) 'CAM工单程序用刀计划', readonly=True, )
active = fields.Boolean(string='已归档', default=True)
def _get_code(self, loading_task_source): def _get_code(self, loading_task_source):
""" """
自动生成组装单编码 自动生成组装单编码

View File

@@ -328,6 +328,8 @@ class ToolMaterial(models.Model):
barcode_ids = fields.One2many('stock.lot', 'tool_material_search_id', string='序列号', readonly=True) barcode_ids = fields.One2many('stock.lot', 'tool_material_search_id', string='序列号', readonly=True)
active = fields.Boolean(string='已归档', default=True)
@api.depends('barcode_ids') @api.depends('barcode_ids')
def _compute_number(self): def _compute_number(self):
for record in self: for record in self:

View File

@@ -200,6 +200,7 @@
<field name="current_location_id" invisible="True"/> <field name="current_location_id" invisible="True"/>
<field name="sf_cutting_tool_type_id" invisible="True"/> <field name="sf_cutting_tool_type_id" invisible="True"/>
<filter string="已归档" name="inactive" domain="[('active', '=', False)]"/>
<searchpanel> <searchpanel>
<field name="sf_cutting_tool_type_id" icon="fa-building" enable_counters="1"/> <field name="sf_cutting_tool_type_id" icon="fa-building" enable_counters="1"/>
<field name="current_location_id" icon="fa-building" enable_counters="1"/> <field name="current_location_id" icon="fa-building" enable_counters="1"/>
@@ -269,6 +270,7 @@
<field name="dispose_time"/> <field name="dispose_time"/>
<field name="dispose_func"/> <field name="dispose_func"/>
<field name="production_line_id" invisible="True"/> <field name="production_line_id" invisible="True"/>
<filter string="已归档" name="inactive" domain="[('active', '=', False)]"/>
<searchpanel> <searchpanel>
<field name="production_line_id" icon="fa-building" enable_counters="1"/> <field name="production_line_id" icon="fa-building" enable_counters="1"/>
<field name="maintenance_equipment_id" icon="fa-building" enable_counters="1"/> <field name="maintenance_equipment_id" icon="fa-building" enable_counters="1"/>
@@ -417,6 +419,7 @@
<field name="max_stock_num"/> <field name="max_stock_num"/>
<field name="batch_replenishment_num"/> <field name="batch_replenishment_num"/>
<field name="unit"/> <field name="unit"/>
<filter string="已归档" name="inactive" domain="[('active', '=', False)]"/>
<searchpanel> <searchpanel>
<field name="sf_cutting_tool_type_id" enable_counters="1" icon="fa-building"/> <field name="sf_cutting_tool_type_id" enable_counters="1" icon="fa-building"/>
</searchpanel> </searchpanel>
@@ -749,6 +752,7 @@
<field name="used_value"/> <field name="used_value"/>
<field name="functional_tool_status"/> <field name="functional_tool_status"/>
<field name="applicant" optional="hide"/> <field name="applicant" optional="hide"/>
<filter string="已归档" name="inactive" domain="[('active', '=', False)]"/>
<searchpanel> <searchpanel>
<field name="production_line_id" enable_counters="1" icon="fa-building"/> <field name="production_line_id" enable_counters="1" icon="fa-building"/>
<field name="maintenance_equipment_id" enable_counters="1" icon="fa-building"/> <field name="maintenance_equipment_id" enable_counters="1" icon="fa-building"/>
@@ -772,7 +776,7 @@
<field name="name">CAM工单程序用刀计划</field> <field name="name">CAM工单程序用刀计划</field>
<field name="model">sf.cam.work.order.program.knife.plan</field> <field name="model">sf.cam.work.order.program.knife.plan</field>
<field name="arch" type="xml"> <field name="arch" type="xml">
<tree> <tree create="0">
<field name="name" string="工单编码"/> <field name="name" string="工单编码"/>
<field name="cam_procedure_code"/> <field name="cam_procedure_code"/>
<field name="filename"/> <field name="filename"/>
@@ -806,7 +810,7 @@
<field name="name">CAM工单程序用刀计划</field> <field name="name">CAM工单程序用刀计划</field>
<field name="model">sf.cam.work.order.program.knife.plan</field> <field name="model">sf.cam.work.order.program.knife.plan</field>
<field name="arch" type="xml"> <field name="arch" type="xml">
<form> <form create="0">
<header> <header>
<button string="申请装刀" name="apply_for_tooling" type="object" class="btn-primary" <button string="申请装刀" name="apply_for_tooling" type="object" class="btn-primary"
attrs="{'invisible': [('plan_execute_status', '!=', '0')]}" confirm="是否确认申请装刀"/> attrs="{'invisible': [('plan_execute_status', '!=', '0')]}" confirm="是否确认申请装刀"/>
@@ -894,6 +898,7 @@
<field name="need_knife_time"/> <field name="need_knife_time"/>
<field name="applicant_time"/> <field name="applicant_time"/>
<field name="plan_execute_status"/> <field name="plan_execute_status"/>
<filter string="已归档" name="inactive" domain="[('active', '=', False)]"/>
<searchpanel> <searchpanel>
<field name="production_line_id" string="生产线" enable_counters="1" icon="fa-filter"/> <field name="production_line_id" string="生产线" enable_counters="1" icon="fa-filter"/>
<field name="functional_tool_type_id" string="功能刀具类型" enable_counters="1" <field name="functional_tool_type_id" string="功能刀具类型" enable_counters="1"
@@ -1238,6 +1243,8 @@
<field name="functional_tool_type_id"/> <field name="functional_tool_type_id"/>
<filter name="no_assemble_status" string="未组装" domain="[('assemble_status', '=', '0')]"/> <filter name="no_assemble_status" string="未组装" domain="[('assemble_status', '=', '0')]"/>
<filter name="yes_assemble_status" string="已组装" domain="[('assemble_status', '=', '1')]"/> <filter name="yes_assemble_status" string="已组装" domain="[('assemble_status', '=', '1')]"/>
<separator/>
<filter string="已归档" name="inactive" domain="[('active', '=', False)]"/>
<searchpanel> <searchpanel>
<field name="functional_tool_type_id" enable_counters="1" icon="fa-filter"/> <field name="functional_tool_type_id" enable_counters="1" icon="fa-filter"/>
<!-- <field name="assemble_status" enable_counters="1" icon="fa-filter"/>--> <!-- <field name="assemble_status" enable_counters="1" icon="fa-filter"/>-->

View File

@@ -5,7 +5,7 @@
<field name="name">sf.tool.material.search.tree</field> <field name="name">sf.tool.material.search.tree</field>
<field name="model">sf.tool.material.search</field> <field name="model">sf.tool.material.search</field>
<field name="arch" type="xml"> <field name="arch" type="xml">
<tree string="刀具物料查询"> <tree string="刀具物料查询" create="0">
<field name="name"/> <field name="name"/>
<field name="cutting_tool_material_id"/> <field name="cutting_tool_material_id"/>
<field name="cutting_tool_standard_library_id"/> <field name="cutting_tool_standard_library_id"/>
@@ -21,7 +21,7 @@
<field name="name">sf.tool.material.search.form</field> <field name="name">sf.tool.material.search.form</field>
<field name="model">sf.tool.material.search</field> <field name="model">sf.tool.material.search</field>
<field name="arch" type="xml"> <field name="arch" type="xml">
<form string="刀具物料查询"> <form string="刀具物料查询" create="0">
<sheet> <sheet>
<div class="oe_title"> <div class="oe_title">
<h1> <h1>
@@ -78,6 +78,7 @@
<field name="name" string="名称搜索" filter_domain="[('name','ilike',self)]"/> <field name="name" string="名称搜索" filter_domain="[('name','ilike',self)]"/>
<field name="cutting_tool_standard_library_id" string="刀具型号搜索"/> <field name="cutting_tool_standard_library_id" string="刀具型号搜索"/>
<field name="specification_id" string="规格搜索"/> <field name="specification_id" string="规格搜索"/>
<filter string="已归档" name="inactive" domain="[('active', '=', False)]"/>
<searchpanel> <searchpanel>
<field name="cutting_tool_material_id" icon="fa-building" enable_counters="1"/> <field name="cutting_tool_material_id" icon="fa-building" enable_counters="1"/>
</searchpanel> </searchpanel>

View File

@@ -1,103 +1,104 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_sf_shelf_location_group_sf_stock_user,sf.shelf.location,model_sf_shelf_location,sf_warehouse.group_sf_stock_user,1,0,0,0 access_sf_shelf_location_group_sf_stock_user_group_sf_stock_user,sf.shelf.location,model_sf_shelf_location,sf_warehouse.group_sf_stock_user,1,0,0,0
access_sf_shelf_location_group_sf_stock_manager,sf.shelf.location,model_sf_shelf_location,sf_warehouse.group_sf_stock_manager,1,1,1,0 access_sf_shelf_location_group_sf_stock_manager,sf.shelf.location,model_sf_shelf_location,sf_warehouse.group_sf_stock_manager,1,1,1,0
access_sf_shelf_group_sf_stock_user,sf.shelf.group.sf.stock.user,model_sf_shelf,sf_warehouse.group_sf_stock_user,1,0,0,0 access_sf_shelf_group_sf_stock_user_group_sf_stock_user,sf.shelf.group.sf.stock.user,model_sf_shelf,sf_warehouse.group_sf_stock_user,1,0,0,0
access_sf_shelf_group_sf_stock_manager,sf.shelf.group.sf.stock.manager,model_sf_shelf,sf_warehouse.group_sf_stock_manager,1,1,1,0 access_sf_shelf_group_sf_stock_manager,sf.shelf.group.sf.stock.manager,model_sf_shelf,sf_warehouse.group_sf_stock_manager,1,1,1,0
access_procurement_group,procurement.group,stock.model_procurement_group,base.group_user,1,1,1,0 access_procurement_group,procurement.group,stock.model_procurement_group,base.group_user,1,1,1,0
access_stock_warehouse_manager,stock.warehouse.manager,stock.model_stock_warehouse,sf_warehouse.group_sf_stock_user,1,1,1,0 access_stock_warehouse_manager_group_sf_stock_user,stock.warehouse.manager,stock.model_stock_warehouse,sf_warehouse.group_sf_stock_user,1,1,1,0
access_stock_warehouse_user,stock.warehouse.user,stock.model_stock_warehouse,base.group_user,1,0,0,0 access_stock_warehouse_user,stock.warehouse.user,stock.model_stock_warehouse,base.group_user,1,0,0,0
access_stock_location_partner_manager,stock.location.partner.manager,stock.model_stock_location,base.group_partner_manager,1,0,0,0 access_stock_location_partner_manager,stock.location.partner.manager,stock.model_stock_location,base.group_partner_manager,1,0,0,0
access_stock_location_manager,stock.location.manager,stock.model_stock_location,sf_warehouse.group_sf_stock_user,1,1,1,0 access_stock_location_manager_group_sf_stock_user,stock.location.manager,stock.model_stock_location,sf_warehouse.group_sf_stock_user,1,1,1,0
access_stock_location_user,stock.location.user,stock.model_stock_location,base.group_user,1,0,0,0 access_stock_location_user,stock.location.user,stock.model_stock_location,base.group_user,1,0,0,0
access_stock_picking_user,stock.picking user,stock.model_stock_picking,sf_warehouse.group_sf_stock_user,1,1,1,0 access_stock_picking_user_group_sf_stock_user,stock.picking user,stock.model_stock_picking,sf_warehouse.group_sf_stock_user,1,1,1,0
access_stock_picking_manager,stock.picking manager,stock.model_stock_picking,sf_warehouse.group_sf_stock_user,1,1,1,0 access_stock_picking_manager_group_sf_stock_user,stock.picking manager,stock.model_stock_picking,sf_warehouse.group_sf_stock_user,1,1,1,0
access_stock_picking_type_all,stock.picking.type all users,stock.model_stock_picking_type,base.group_user,1,0,0,0 access_stock_picking_type_all,stock.picking.type all users,stock.model_stock_picking_type,base.group_user,1,0,0,0
access_stock_picking_type_user,stock.picking.type user,stock.model_stock_picking_type,sf_warehouse.group_sf_stock_user,1,0,0,0 access_stock_picking_type_user_group_sf_stock_user,stock.picking.type user,stock.model_stock_picking_type,sf_warehouse.group_sf_stock_user,1,0,0,0
access_stock_picking_type_manager,stock.picking.type manager,stock.model_stock_picking_type,sf_warehouse.group_sf_stock_user,1,1,1,0 access_stock_picking_type_manager_group_sf_stock_user,stock.picking.type manager,stock.model_stock_picking_type,sf_warehouse.group_sf_stock_user,1,1,1,0
access_stock_lot_user,stock.lot user,stock.model_stock_lot,sf_warehouse.group_sf_stock_user,1,1,1,0 access_stock_lot_user_group_sf_stock_user,stock.lot user,stock.model_stock_lot,sf_warehouse.group_sf_stock_user,1,1,1,0
access_stock_move_manager,stock.move manager,stock.model_stock_move,sf_warehouse.group_sf_stock_user,1,1,1,0 access_stock_move_manager_group_sf_stock_user,stock.move manager,stock.model_stock_move,sf_warehouse.group_sf_stock_user,1,1,1,0
access_stock_move_user,stock.move user,stock.model_stock_move,sf_warehouse.group_sf_stock_user,1,1,1,0 access_stock_move_user_group_sf_stock_user,stock.move user,stock.model_stock_move,sf_warehouse.group_sf_stock_user,1,1,1,0
access_product_product_stock_user,product_product_stock_user,product.model_product_product,sf_warehouse.group_sf_stock_user,1,0,0,0 access_product_product_stock_user_group_sf_stock_user,product_product_stock_user,product.model_product_product,sf_warehouse.group_sf_stock_user,1,0,0,0
access_product_template_stock_user,product.template stock user,product.model_product_template,sf_warehouse.group_sf_stock_user,1,0,0,0 access_product_template_stock_user_group_sf_stock_user,product.template stock user,product.model_product_template,sf_warehouse.group_sf_stock_user,1,0,0,0
access_uom_category_stock_manager,uom.category stock_manager,uom.model_uom_category,sf_warehouse.group_sf_stock_user,1,1,1,0 access_uom_category_stock_manager_group_sf_stock_user,uom.category stock_manager,uom.model_uom_category,sf_warehouse.group_sf_stock_user,1,1,1,0
access_uom_uom_stock_manager,uom.uom stock_manager,uom.model_uom_uom,sf_warehouse.group_sf_stock_user,1,1,1,0 access_uom_uom_stock_manager_group_sf_stock_user,uom.uom stock_manager,uom.model_uom_uom,sf_warehouse.group_sf_stock_user,1,1,1,0
access_product_category_stock_manager,product.category stock_manager,product.model_product_category,sf_warehouse.group_sf_stock_user,1,1,1,0 access_product_category_stock_manager_group_sf_stock_user,product.category stock_manager,product.model_product_category,sf_warehouse.group_sf_stock_user,1,1,1,0
access_product_template_stock_manager,product.template stock_manager,product.model_product_template,sf_warehouse.group_sf_stock_user,1,1,1,0 access_product_template_stock_manager_group_sf_stock_user,product.template stock_manager,product.model_product_template,sf_warehouse.group_sf_stock_user,1,1,1,0
access_product_product_stock_manager,product.product stock_manager,product.model_product_product,sf_warehouse.group_sf_stock_user,1,1,1,0 access_product_product_stock_manager_group_sf_stock_user,product.product stock_manager,product.model_product_product,sf_warehouse.group_sf_stock_user,1,1,1,0
access_product_packaging_stock_manager,product.packaging stock_manager,product.model_product_packaging,sf_warehouse.group_sf_stock_user,1,1,1,0 access_product_packaging_stock_manager_group_sf_stock_user,product.packaging stock_manager,product.model_product_packaging,sf_warehouse.group_sf_stock_user,1,1,1,0
access_product_supplierinfo_stock_manager,product.supplierinfo stock_manager,product.model_product_supplierinfo,sf_warehouse.group_sf_stock_user,1,1,1,0 access_product_supplierinfo_stock_manager_group_sf_stock_user,product.supplierinfo stock_manager,product.model_product_supplierinfo,sf_warehouse.group_sf_stock_user,1,1,1,0
access_product_pricelist_stock_manager,product.pricelist stock_manager,product.model_product_pricelist,sf_warehouse.group_sf_stock_user,1,1,1,0 access_product_pricelist_stock_manager_group_sf_stock_user,product.pricelist stock_manager,product.model_product_pricelist,sf_warehouse.group_sf_stock_user,1,1,1,0
access_product_group_res_partner_stock_manager,res_partner group_stock_manager,base.model_res_partner,sf_warehouse.group_sf_stock_user,1,1,1,0 access_product_group_res_partner_stock_manager_group_sf_stock_user,res_partner group_stock_manager,base.model_res_partner,sf_warehouse.group_sf_stock_user,1,1,1,0
access_product_pricelist_item_stock_manager,product.pricelist.item stock_manager,product.model_product_pricelist_item,sf_warehouse.group_sf_stock_user,1,1,1,0 access_product_pricelist_item_stock_manager_group_sf_stock_user,product.pricelist.item stock_manager,product.model_product_pricelist_item,sf_warehouse.group_sf_stock_user,1,1,1,0
access_product_tag_stock_manager,product.tag.stock.manager,product.model_product_tag,sf_warehouse.group_sf_stock_user,1,1,1,0 access_product_tag_stock_manager_group_sf_stock_user,product.tag.stock.manager,product.model_product_tag,sf_warehouse.group_sf_stock_user,1,1,1,0
access_stock_warehouse_orderpoint,stock.warehouse.orderpoint,stock.model_stock_warehouse_orderpoint,sf_warehouse.group_sf_stock_user,1,0,0,0 access_stock_warehouse_orderpoint_group_sf_stock_user,stock.warehouse.orderpoint,stock.model_stock_warehouse_orderpoint,sf_warehouse.group_sf_stock_user,1,0,0,0
access_stock_warehouse_orderpoint_system,stock.warehouse.orderpoint system,stock.model_stock_warehouse_orderpoint,sf_warehouse.group_sf_stock_user,1,1,1,0 access_stock_warehouse_orderpoint_system_group_sf_stock_user,stock.warehouse.orderpoint system,stock.model_stock_warehouse_orderpoint,sf_warehouse.group_sf_stock_user,1,1,1,0
access_stock_quant_user,stock.quant user,stock.model_stock_quant,sf_warehouse.group_sf_stock_user,1,1,1,0 access_stock_quant_user_group_sf_stock_user,stock.quant user,stock.model_stock_quant,sf_warehouse.group_sf_stock_user,1,1,1,0
access_stock_quant_all,stock.quant all users,stock.model_stock_quant,base.group_user,1,0,0,0 access_stock_quant_all,stock.quant all users,stock.model_stock_quant,base.group_user,1,0,0,0
access_stock_quant_package_all,stock.quant.package all users,stock.model_stock_quant_package,base.group_user,1,0,0,0 access_stock_quant_package_all,stock.quant.package all users,stock.model_stock_quant_package,base.group_user,1,0,0,0
access_stock_quant_package_stock_manager,stock.quant.package stock manager,stock.model_stock_quant_package,sf_warehouse.group_sf_stock_user,1,1,1,0 access_stock_quant_package_stock_manager_group_sf_stock_user,stock.quant.package stock manager,stock.model_stock_quant_package,sf_warehouse.group_sf_stock_user,1,1,1,0
access_stock_quant_package_stock_user,stock.quant.package stock user,stock.model_stock_quant_package,sf_warehouse.group_sf_stock_user,1,1,1,0 access_stock_quant_package_stock_user_group_sf_stock_user,stock.quant.package stock user,stock.model_stock_quant_package,sf_warehouse.group_sf_stock_user,1,1,1,0
access_stock_package_level_all,stock.package_level all users,stock.model_stock_package_level,base.group_user,1,0,0,0 access_stock_package_level_all,stock.package_level all users,stock.model_stock_package_level,base.group_user,1,0,0,0
access_stock_package_level_stock_manager,stock.package_level stock manager,stock.model_stock_package_level,sf_warehouse.group_sf_stock_user,1,1,1,0 access_stock_package_level_stock_manager_group_sf_stock_user,stock.package_level stock manager,stock.model_stock_package_level,sf_warehouse.group_sf_stock_user,1,1,1,0
access_stock_package_level_stock_user,stock.package_level stock user,stock.model_stock_package_level,sf_warehouse.group_sf_stock_user,1,1,1,0 access_stock_package_level_stock_user_group_sf_stock_user,stock.package_level stock user,stock.model_stock_package_level,sf_warehouse.group_sf_stock_user,1,1,1,0
access_stock_rule_user,stock_rule user,stock.model_stock_rule,sf_warehouse.group_sf_stock_user,1,0,0,0 access_stock_rule_user_group_sf_stock_user,stock_rule user,stock.model_stock_rule,sf_warehouse.group_sf_stock_user,1,0,0,0
access_stock_rule_stock_manager,stock_rule stock manager,stock.model_stock_rule,sf_warehouse.group_sf_stock_user,1,1,1,0 access_stock_rule_stock_manager_group_sf_stock_user,stock_rule stock manager,stock.model_stock_rule,sf_warehouse.group_sf_stock_user,1,1,1,0
access_stock_location_route_stock_manager,stock.route,stock.model_stock_route,sf_warehouse.group_sf_stock_user,1,1,1,0 access_stock_location_route_stock_manager_group_sf_stock_user,stock.route,stock.model_stock_route,sf_warehouse.group_sf_stock_user,1,1,1,0
access_stock_location_route,stock.route,stock.model_stock_route,base.group_user,1,0,0,0 access_stock_location_route,stock.route,stock.model_stock_route,base.group_user,1,0,0,0
access_stock_rule_internal,stock.rule.flow internal,stock.model_stock_rule,base.group_user,1,0,0,0 access_stock_rule_internal,stock.rule.flow internal,stock.model_stock_rule,base.group_user,1,0,0,0
access_stock_move_line_manager,stock.move.line manager,stock.model_stock_move_line,sf_warehouse.group_sf_stock_user,1,1,1,0 access_stock_move_line_manager_group_sf_stock_user,stock.move.line manager,stock.model_stock_move_line,sf_warehouse.group_sf_stock_user,1,1,1,0
access_stock_move_line_user,stock.move.line user,stock.model_stock_move_line,sf_warehouse.group_sf_stock_user,1,1,1,0 access_stock_move_line_user_group_sf_stock_user,stock.move.line user,stock.model_stock_move_line,sf_warehouse.group_sf_stock_user,1,1,1,0
access_stock_move_line_all,stock.move.line all users,stock.model_stock_move_line,base.group_user,1,1,1,0 access_stock_move_line_all,stock.move.line all users,stock.model_stock_move_line,base.group_user,1,1,1,0
access_stock_putaway_all,stock.putaway.rule all users,stock.model_stock_putaway_rule,base.group_user,1,0,0,0 access_stock_putaway_all,stock.putaway.rule all users,stock.model_stock_putaway_rule,base.group_user,1,0,0,0
access_stock_putaway_manager,stock.putaway.rule all managers,stock.model_stock_putaway_rule,sf_warehouse.group_sf_stock_user,1,1,1,0 access_stock_putaway_manager_group_sf_stock_user,stock.putaway.rule all managers,stock.model_stock_putaway_rule,sf_warehouse.group_sf_stock_user,1,1,1,0
access_stock_removal_all,product.removal all users,stock.model_product_removal,base.group_user,1,0,0,0 access_stock_removal_all,product.removal all users,stock.model_product_removal,base.group_user,1,0,0,0
access_barcode_nomenclature_stock_user,barcode.nomenclature.stock.user,barcodes.model_barcode_nomenclature,sf_warehouse.group_sf_stock_user,1,0,0,0 access_barcode_nomenclature_stock_user_group_sf_stock_user,barcode.nomenclature.stock.user,barcodes.model_barcode_nomenclature,sf_warehouse.group_sf_stock_user,1,0,0,0
access_barcode_nomenclature_stock_manager,barcode.nomenclature.stock.manager,barcodes.model_barcode_nomenclature,sf_warehouse.group_sf_stock_user,1,1,1,0 access_barcode_nomenclature_stock_manager_group_sf_stock_user,barcode.nomenclature.stock.manager,barcodes.model_barcode_nomenclature,sf_warehouse.group_sf_stock_user,1,1,1,0
access_barcode_rule_stock_user,barcode.rule.stock.user,barcodes.model_barcode_rule,sf_warehouse.group_sf_stock_user,1,0,0,0 access_barcode_rule_stock_user_group_sf_stock_user,barcode.rule.stock.user,barcodes.model_barcode_rule,sf_warehouse.group_sf_stock_user,1,0,0,0
access_barcode_rule_stock_manager,barcode.rule.stock.manager,barcodes.model_barcode_rule,sf_warehouse.group_sf_stock_user,1,1,1,0 access_barcode_rule_stock_manager_group_sf_stock_user,barcode.rule.stock.manager,barcodes.model_barcode_rule,sf_warehouse.group_sf_stock_user,1,1,1,0
access_stock_scrap_user,stock.scrap.user,stock.model_stock_scrap,sf_warehouse.group_sf_stock_user,1,1,1,0 access_stock_scrap_user_group_sf_stock_user,stock.scrap.user,stock.model_stock_scrap,sf_warehouse.group_sf_stock_user,1,1,1,0
access_stock_scrap_manager,stock.scrap.manager,stock.model_stock_scrap,sf_warehouse.group_sf_stock_user,1,1,1,0 access_stock_scrap_manager_group_sf_stock_user,stock.scrap.manager,stock.model_stock_scrap,sf_warehouse.group_sf_stock_user,1,1,1,0
access_product_attribute_manager,product.attribute manager,product.model_product_attribute,sf_warehouse.group_sf_stock_user,1,1,1,0 access_product_attribute_manager_group_sf_stock_user,product.attribute manager,product.model_product_attribute,sf_warehouse.group_sf_stock_user,1,1,1,0
access_product_attribute_value_manager,product.attribute manager value,product.model_product_attribute_value,sf_warehouse.group_sf_stock_user,1,1,1,0 access_product_attribute_value_manager_group_sf_stock_user,product.attribute manager value,product.model_product_attribute_value,sf_warehouse.group_sf_stock_user,1,1,1,0
access_product_product_attribute_manager,product.product.attribute manager value,product.model_product_template_attribute_value,sf_warehouse.group_sf_stock_user,1,1,1,0 access_product_product_attribute_manager_group_sf_stock_user,product.product.attribute manager value,product.model_product_template_attribute_value,sf_warehouse.group_sf_stock_user,1,1,1,0
access_product_template_attribute_exclusion_manager,product.attribute manager filter line,product.model_product_template_attribute_exclusion,sf_warehouse.group_sf_stock_user,1,1,1,0 access_product_template_attribute_exclusion_manager_group_sf_stock_user,product.attribute manager filter line,product.model_product_template_attribute_exclusion,sf_warehouse.group_sf_stock_user,1,1,1,0
access_product_template_attribute_line_manager,product.attribute manager line,product.model_product_template_attribute_line,sf_warehouse.group_sf_stock_user,1,1,1,0 access_product_template_attribute_line_manager_group_sf_stock_user,product.attribute manager line,product.model_product_template_attribute_line,sf_warehouse.group_sf_stock_user,1,1,1,0
access_report_stock_quantity,access_report_stock_quantity,stock.model_report_stock_quantity,base.group_user,1,0,0,0 access_report_stock_quantity,access_report_stock_quantity,stock.model_report_stock_quantity,base.group_user,1,0,0,0
access_stock_traceability_report,access.stock.traceability.report,stock.model_stock_traceability_report,sf_warehouse.group_sf_stock_user,1,1,1,0 access_stock_traceability_report_group_sf_stock_user,access.stock.traceability.report,stock.model_stock_traceability_report,sf_warehouse.group_sf_stock_user,1,1,1,0
access_stock_assign_serial,access.stock.assign.serial,stock.model_stock_assign_serial,sf_warehouse.group_sf_stock_user,1,1,1,0 access_stock_assign_serial_group_sf_stock_user,access.stock.assign.serial,stock.model_stock_assign_serial,sf_warehouse.group_sf_stock_user,1,1,1,0
access_stock_return_picking_line,access.stock.return.picking.line,stock.model_stock_return_picking_line,sf_warehouse.group_sf_stock_user,1,1,1,0 access_stock_return_picking_line_group_sf_stock_user,access.stock.return.picking.line,stock.model_stock_return_picking_line,sf_warehouse.group_sf_stock_user,1,1,1,0
access_stock_return_picking,access.stock.return.picking,stock.model_stock_return_picking,sf_warehouse.group_sf_stock_user,1,1,1,0 access_stock_return_picking_group_sf_stock_user,access.stock.return.picking,stock.model_stock_return_picking,sf_warehouse.group_sf_stock_user,1,1,1,0
access_stock_change_product_qty,access.stock.change.product.qty,stock.model_stock_change_product_qty,sf_warehouse.group_sf_stock_user,1,1,1,0 access_stock_change_product_qty_group_sf_stock_user,access.stock.change.product.qty,stock.model_stock_change_product_qty,sf_warehouse.group_sf_stock_user,1,1,1,0
access_stock_scheduler_compute,access.stock.scheduler.compute,stock.model_stock_scheduler_compute,sf_warehouse.group_sf_stock_user,1,1,1,0 access_stock_scheduler_compute_group_sf_stock_user,access.stock.scheduler.compute,stock.model_stock_scheduler_compute,sf_warehouse.group_sf_stock_user,1,1,1,0
access_stock_immediate_transfer_line,access.stock.immediate.transfer.line,stock.model_stock_immediate_transfer_line,sf_warehouse.group_sf_stock_user,1,1,1,0 access_stock_immediate_transfer_line_group_sf_stock_user,access.stock.immediate.transfer.line,stock.model_stock_immediate_transfer_line,sf_warehouse.group_sf_stock_user,1,1,1,0
access_stock_immediate_transfer,access.stock.immediate.transfer,stock.model_stock_immediate_transfer,sf_warehouse.group_sf_stock_user,1,1,1,0 access_stock_immediate_transfer_group_sf_stock_user,access.stock.immediate.transfer,stock.model_stock_immediate_transfer,sf_warehouse.group_sf_stock_user,1,1,1,0
access_stock_backorder_confirmation_line,access.stock.backorder.confirmation.line,stock.model_stock_backorder_confirmation_line,sf_warehouse.group_sf_stock_user,1,1,1,0 access_stock_backorder_confirmation_line_group_sf_stock_user,access.stock.backorder.confirmation.line,stock.model_stock_backorder_confirmation_line,sf_warehouse.group_sf_stock_user,1,1,1,0
access_stock_backorder_confirmation,access.stock.backorder.confirmation,stock.model_stock_backorder_confirmation,sf_warehouse.group_sf_stock_user,1,1,1,0 access_stock_backorder_confirmation_group_sf_stock_user,access.stock.backorder.confirmation,stock.model_stock_backorder_confirmation,sf_warehouse.group_sf_stock_user,1,1,1,0
access_stock_quantity_history,access.stock.quantity.history,stock.model_stock_quantity_history,sf_warehouse.group_sf_stock_user,1,1,1,0 access_stock_quantity_history_group_sf_stock_user,access.stock.quantity.history,stock.model_stock_quantity_history,sf_warehouse.group_sf_stock_user,1,1,1,0
access_stock_rules_report,access.stock.rules.report,stock.model_stock_rules_report,sf_warehouse.group_sf_stock_user,1,1,1,0 access_stock_rules_report_group_sf_stock_user,access.stock.rules.report,stock.model_stock_rules_report,sf_warehouse.group_sf_stock_user,1,1,1,0
access_stock_warn_insufficient_qty_scrap,access.stock.warn.insufficient.qty.scrap,stock.model_stock_warn_insufficient_qty_scrap,sf_warehouse.group_sf_stock_user,1,1,1,0 access_stock_warn_insufficient_qty_scrap_group_sf_stock_user,access.stock.warn.insufficient.qty.scrap,stock.model_stock_warn_insufficient_qty_scrap,sf_warehouse.group_sf_stock_user,1,1,1,0
access_product_replenish,access.product.replenish,stock.model_product_replenish,sf_warehouse.group_sf_stock_user,1,1,1,0 access_product_replenish_group_sf_stock_user,access.product.replenish,stock.model_product_replenish,sf_warehouse.group_sf_stock_user,1,1,1,0
access_stock_track_confirmation,access.stock.track.confirmation,stock.model_stock_track_confirmation,sf_warehouse.group_sf_stock_user,1,1,1,0 access_stock_track_confirmation_group_sf_stock_user,access.stock.track.confirmation,stock.model_stock_track_confirmation,sf_warehouse.group_sf_stock_user,1,1,1,0
access_stock_track_line,access.stock.track.line,stock.model_stock_track_line,sf_warehouse.group_sf_stock_user,1,1,1,0 access_stock_track_line_group_sf_stock_user,access.stock.track.line,stock.model_stock_track_line,sf_warehouse.group_sf_stock_user,1,1,1,0
access_stock_package_destination,access.stock.package.destination,stock.model_stock_package_destination,sf_warehouse.group_sf_stock_user,1,1,1,0 access_stock_package_destination_group_sf_stock_user,access.stock.package.destination,stock.model_stock_package_destination,sf_warehouse.group_sf_stock_user,1,1,1,0
access_stock_orderpoint_snooze,access_stock_orderpoint_snooze,stock.model_stock_orderpoint_snooze,sf_warehouse.group_sf_stock_user,1,1,1,0 access_stock_orderpoint_snooze_group_sf_stock_user,access_stock_orderpoint_snooze,stock.model_stock_orderpoint_snooze,sf_warehouse.group_sf_stock_user,1,1,1,0
access_stock_package_type_user,access_stock_package_type_user,stock.model_stock_package_type,sf_warehouse.group_sf_stock_user,1,0,0,0 access_stock_package_type_user_group_sf_stock_user,access_stock_package_type_user,stock.model_stock_package_type,sf_warehouse.group_sf_stock_user,1,0,0,0
access_stock_package_type_manager,access_stock_package_type_manager,stock.model_stock_package_type,sf_warehouse.group_sf_stock_user,1,1,1,0 access_stock_package_type_manager_group_sf_stock_user,access_stock_package_type_manager,stock.model_stock_package_type,sf_warehouse.group_sf_stock_user,1,1,1,0
access_stock_storage_category_user,stock.storage.category.user,stock.model_stock_storage_category,base.group_user,1,0,0,0 access_stock_storage_category_user_group_sf_stock_user,stock.storage.category.user,stock.model_stock_storage_category,base.group_user,1,0,0,0
access_stock_storage_category_manager,stock.storage.category.manager,stock.model_stock_storage_category,sf_warehouse.group_sf_stock_user,1,1,1,0 access_stock_storage_category_manager_group_sf_stock_user,stock.storage.category.manager,stock.model_stock_storage_category,sf_warehouse.group_sf_stock_user,1,1,1,0
access_stock_storage_category_capacity_user,stock.storage.category.capacity.user,stock.model_stock_storage_category_capacity,base.group_user,1,0,0,0 access_stock_storage_category_capacity_user,stock.storage.category.capacity.user,stock.model_stock_storage_category_capacity,base.group_user,1,0,0,0
access_stock_storage_category_capacity_manager,stock.storage.category.capacity.manager,stock.model_stock_storage_category_capacity,sf_warehouse.group_sf_stock_user,1,1,1,0 access_stock_storage_category_capacity_manager_group_sf_stock_user,stock.storage.category.capacity.manager,stock.model_stock_storage_category_capacity,sf_warehouse.group_sf_stock_user,1,1,1,0
access_stock_inventory_conflict,stock.inventory.conflict,stock.model_stock_inventory_conflict,sf_warehouse.group_sf_stock_user,1,1,1,0 access_stock_inventory_conflict_group_sf_stock_user,stock.inventory.conflict,stock.model_stock_inventory_conflict,sf_warehouse.group_sf_stock_user,1,1,1,0
access_stock_inventory_warning,stock.inventory.warning,stock.model_stock_inventory_warning,sf_warehouse.group_sf_stock_user,1,1,1,0 access_stock_inventory_warning_group_sf_stock_user,stock.inventory.warning,stock.model_stock_inventory_warning,sf_warehouse.group_sf_stock_user,1,1,1,0
access_stock_inventory_adjustment_name,stock.inventory.adjustment.name,stock.model_stock_inventory_adjustment_name,sf_warehouse.group_sf_stock_user,1,1,1,0 access_stock_inventory_adjustment_name_group_sf_stock_user,stock.inventory.adjustment.name,stock.model_stock_inventory_adjustment_name,sf_warehouse.group_sf_stock_user,1,1,1,0
access_stock_request_count,stock.request.count,stock.model_stock_request_count,sf_warehouse.group_sf_stock_user,1,1,1,0 access_stock_request_count_group_sf_stock_user,stock.request.count,stock.model_stock_request_count,sf_warehouse.group_sf_stock_user,1,1,1,0
access_stock_replenishment_info,stock.replenishment.info,stock.model_stock_replenishment_info,sf_warehouse.group_sf_stock_user,1,1,1,0 access_stock_replenishment_info_group_sf_stock_user,stock.replenishment.info,stock.model_stock_replenishment_info,sf_warehouse.group_sf_stock_user,1,1,1,0
access_stock_picking_label_type_user,picking.label.type.user,stock.model_picking_label_type,sf_warehouse.group_sf_stock_user,1,1,1,0 access_stock_picking_label_type_user_group_sf_stock_user,picking.label.type.user,stock.model_picking_label_type,sf_warehouse.group_sf_stock_user,1,1,1,0
access_stock_lot_label_layout_user,lot.label.layout.user,stock.model_lot_label_layout,sf_warehouse.group_sf_stock_user,1,1,1,0 access_stock_lot_label_layout_user_group_sf_stock_user,lot.label.layout.user,stock.model_lot_label_layout,sf_warehouse.group_sf_stock_user,1,1,1,0
access_stock_replenish_option,stock.replenishment.option,stock.model_stock_replenishment_option,sf_warehouse.group_sf_stock_user,1,1,1,0 access_stock_replenish_option_group_sf_stock_user,stock.replenishment.option,stock.model_stock_replenishment_option,sf_warehouse.group_sf_stock_user,1,1,1,0
access_mrp_production,mrp.production,mrp.model_mrp_production,sf_warehouse.group_sf_stock_user,1,1,1,0 access_mrp_production_group_sf_stock_user,mrp.production,mrp.model_mrp_production,sf_warehouse.group_sf_stock_user,1,1,1,0
access_sf_shelf_location_group_plan_dispatch,sf.shelf.location,model_sf_shelf_location,sf_base.group_plan_dispatch,1,0,0,0 access_sf_shelf_location_group_plan_dispatch,sf.shelf.location,model_sf_shelf_location,sf_base.group_plan_dispatch,1,0,0,0
access_stock_move,stock.move,stock.model_stock_move,sf_base.group_plan_dispatch,1,1,1,0 access_stock_move,stock.move,stock.model_stock_move,sf_base.group_plan_dispatch,1,1,1,0
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 access_sf_shelf_location_group_sf_stock_user access_sf_shelf_location_group_sf_stock_user_group_sf_stock_user sf.shelf.location model_sf_shelf_location sf_warehouse.group_sf_stock_user 1 0 0 0
3 access_sf_shelf_location_group_sf_stock_manager sf.shelf.location model_sf_shelf_location sf_warehouse.group_sf_stock_manager 1 1 1 0
4 access_sf_shelf_group_sf_stock_user access_sf_shelf_group_sf_stock_user_group_sf_stock_user sf.shelf.group.sf.stock.user model_sf_shelf sf_warehouse.group_sf_stock_user 1 0 0 0
5 access_sf_shelf_group_sf_stock_manager sf.shelf.group.sf.stock.manager model_sf_shelf sf_warehouse.group_sf_stock_manager 1 1 1 0
6 access_procurement_group procurement.group stock.model_procurement_group base.group_user 1 1 1 0
7 access_stock_warehouse_manager access_stock_warehouse_manager_group_sf_stock_user stock.warehouse.manager stock.model_stock_warehouse sf_warehouse.group_sf_stock_user 1 1 1 0
8 access_stock_warehouse_user stock.warehouse.user stock.model_stock_warehouse base.group_user 1 0 0 0
9 access_stock_location_partner_manager stock.location.partner.manager stock.model_stock_location base.group_partner_manager 1 0 0 0
10 access_stock_location_manager access_stock_location_manager_group_sf_stock_user stock.location.manager stock.model_stock_location sf_warehouse.group_sf_stock_user 1 1 1 0
11 access_stock_location_user stock.location.user stock.model_stock_location base.group_user 1 0 0 0
12 access_stock_picking_user access_stock_picking_user_group_sf_stock_user stock.picking user stock.model_stock_picking sf_warehouse.group_sf_stock_user 1 1 1 0
13 access_stock_picking_manager access_stock_picking_manager_group_sf_stock_user stock.picking manager stock.model_stock_picking sf_warehouse.group_sf_stock_user 1 1 1 0
14 access_stock_picking_type_all stock.picking.type all users stock.model_stock_picking_type base.group_user 1 0 0 0
15 access_stock_picking_type_user access_stock_picking_type_user_group_sf_stock_user stock.picking.type user stock.model_stock_picking_type sf_warehouse.group_sf_stock_user 1 0 0 0
16 access_stock_picking_type_manager access_stock_picking_type_manager_group_sf_stock_user stock.picking.type manager stock.model_stock_picking_type sf_warehouse.group_sf_stock_user 1 1 1 0
17 access_stock_lot_user access_stock_lot_user_group_sf_stock_user stock.lot user stock.model_stock_lot sf_warehouse.group_sf_stock_user 1 1 1 0
18 access_stock_move_manager access_stock_move_manager_group_sf_stock_user stock.move manager stock.model_stock_move sf_warehouse.group_sf_stock_user 1 1 1 0
19 access_stock_move_user access_stock_move_user_group_sf_stock_user stock.move user stock.model_stock_move sf_warehouse.group_sf_stock_user 1 1 1 0
20 access_product_product_stock_user access_product_product_stock_user_group_sf_stock_user product_product_stock_user product.model_product_product sf_warehouse.group_sf_stock_user 1 0 0 0
21 access_product_template_stock_user access_product_template_stock_user_group_sf_stock_user product.template stock user product.model_product_template sf_warehouse.group_sf_stock_user 1 0 0 0
22 access_uom_category_stock_manager access_uom_category_stock_manager_group_sf_stock_user uom.category stock_manager uom.model_uom_category sf_warehouse.group_sf_stock_user 1 1 1 0
23 access_uom_uom_stock_manager access_uom_uom_stock_manager_group_sf_stock_user uom.uom stock_manager uom.model_uom_uom sf_warehouse.group_sf_stock_user 1 1 1 0
24 access_product_category_stock_manager access_product_category_stock_manager_group_sf_stock_user product.category stock_manager product.model_product_category sf_warehouse.group_sf_stock_user 1 1 1 0
25 access_product_template_stock_manager access_product_template_stock_manager_group_sf_stock_user product.template stock_manager product.model_product_template sf_warehouse.group_sf_stock_user 1 1 1 0
26 access_product_product_stock_manager access_product_product_stock_manager_group_sf_stock_user product.product stock_manager product.model_product_product sf_warehouse.group_sf_stock_user 1 1 1 0
27 access_product_packaging_stock_manager access_product_packaging_stock_manager_group_sf_stock_user product.packaging stock_manager product.model_product_packaging sf_warehouse.group_sf_stock_user 1 1 1 0
28 access_product_supplierinfo_stock_manager access_product_supplierinfo_stock_manager_group_sf_stock_user product.supplierinfo stock_manager product.model_product_supplierinfo sf_warehouse.group_sf_stock_user 1 1 1 0
29 access_product_pricelist_stock_manager access_product_pricelist_stock_manager_group_sf_stock_user product.pricelist stock_manager product.model_product_pricelist sf_warehouse.group_sf_stock_user 1 1 1 0
30 access_product_group_res_partner_stock_manager access_product_group_res_partner_stock_manager_group_sf_stock_user res_partner group_stock_manager base.model_res_partner sf_warehouse.group_sf_stock_user 1 1 1 0
31 access_product_pricelist_item_stock_manager access_product_pricelist_item_stock_manager_group_sf_stock_user product.pricelist.item stock_manager product.model_product_pricelist_item sf_warehouse.group_sf_stock_user 1 1 1 0
32 access_product_tag_stock_manager access_product_tag_stock_manager_group_sf_stock_user product.tag.stock.manager product.model_product_tag sf_warehouse.group_sf_stock_user 1 1 1 0
33 access_stock_warehouse_orderpoint access_stock_warehouse_orderpoint_group_sf_stock_user stock.warehouse.orderpoint stock.model_stock_warehouse_orderpoint sf_warehouse.group_sf_stock_user 1 0 0 0
34 access_stock_warehouse_orderpoint_system access_stock_warehouse_orderpoint_system_group_sf_stock_user stock.warehouse.orderpoint system stock.model_stock_warehouse_orderpoint sf_warehouse.group_sf_stock_user 1 1 1 0
35 access_stock_quant_user access_stock_quant_user_group_sf_stock_user stock.quant user stock.model_stock_quant sf_warehouse.group_sf_stock_user 1 1 1 0
36 access_stock_quant_all stock.quant all users stock.model_stock_quant base.group_user 1 0 0 0
37 access_stock_quant_package_all stock.quant.package all users stock.model_stock_quant_package base.group_user 1 0 0 0
38 access_stock_quant_package_stock_manager_group_sf_stock_user stock.quant.package stock manager stock.model_stock_quant_package sf_warehouse.group_sf_stock_user 1 1 1 0
39 access_stock_quant_package_stock_manager access_stock_quant_package_stock_user_group_sf_stock_user stock.quant.package stock manager stock.quant.package stock user stock.model_stock_quant_package sf_warehouse.group_sf_stock_user 1 1 1 0
40 access_stock_quant_package_stock_user access_stock_package_level_all stock.quant.package stock user stock.package_level all users stock.model_stock_quant_package stock.model_stock_package_level sf_warehouse.group_sf_stock_user base.group_user 1 1 0 1 0 0
41 access_stock_package_level_all access_stock_package_level_stock_manager_group_sf_stock_user stock.package_level all users stock.package_level stock manager stock.model_stock_package_level base.group_user sf_warehouse.group_sf_stock_user 1 0 1 0 1 0
42 access_stock_package_level_stock_manager access_stock_package_level_stock_user_group_sf_stock_user stock.package_level stock manager stock.package_level stock user stock.model_stock_package_level sf_warehouse.group_sf_stock_user 1 1 1 0
43 access_stock_package_level_stock_user access_stock_rule_user_group_sf_stock_user stock.package_level stock user stock_rule user stock.model_stock_package_level stock.model_stock_rule sf_warehouse.group_sf_stock_user 1 1 0 1 0 0
44 access_stock_rule_user access_stock_rule_stock_manager_group_sf_stock_user stock_rule user stock_rule stock manager stock.model_stock_rule sf_warehouse.group_sf_stock_user 1 0 1 0 1 0
45 access_stock_rule_stock_manager access_stock_location_route_stock_manager_group_sf_stock_user stock_rule stock manager stock.route stock.model_stock_rule stock.model_stock_route sf_warehouse.group_sf_stock_user 1 1 1 0
46 access_stock_location_route_stock_manager access_stock_location_route stock.route stock.model_stock_route sf_warehouse.group_sf_stock_user base.group_user 1 1 0 1 0 0
47 access_stock_location_route access_stock_rule_internal stock.route stock.rule.flow internal stock.model_stock_route stock.model_stock_rule base.group_user 1 0 0 0
48 access_stock_rule_internal access_stock_move_line_manager_group_sf_stock_user stock.rule.flow internal stock.move.line manager stock.model_stock_rule stock.model_stock_move_line base.group_user sf_warehouse.group_sf_stock_user 1 0 1 0 1 0
49 access_stock_move_line_manager access_stock_move_line_user_group_sf_stock_user stock.move.line manager stock.move.line user stock.model_stock_move_line sf_warehouse.group_sf_stock_user 1 1 1 0
50 access_stock_move_line_user access_stock_move_line_all stock.move.line user stock.move.line all users stock.model_stock_move_line sf_warehouse.group_sf_stock_user base.group_user 1 1 1 0
51 access_stock_move_line_all access_stock_putaway_all stock.move.line all users stock.putaway.rule all users stock.model_stock_move_line stock.model_stock_putaway_rule base.group_user 1 1 0 1 0 0
52 access_stock_putaway_all access_stock_putaway_manager_group_sf_stock_user stock.putaway.rule all users stock.putaway.rule all managers stock.model_stock_putaway_rule base.group_user sf_warehouse.group_sf_stock_user 1 0 1 0 1 0
53 access_stock_putaway_manager access_stock_removal_all stock.putaway.rule all managers product.removal all users stock.model_stock_putaway_rule stock.model_product_removal sf_warehouse.group_sf_stock_user base.group_user 1 1 0 1 0 0
54 access_stock_removal_all access_barcode_nomenclature_stock_user_group_sf_stock_user product.removal all users barcode.nomenclature.stock.user stock.model_product_removal barcodes.model_barcode_nomenclature base.group_user sf_warehouse.group_sf_stock_user 1 0 0 0
55 access_barcode_nomenclature_stock_user access_barcode_nomenclature_stock_manager_group_sf_stock_user barcode.nomenclature.stock.user barcode.nomenclature.stock.manager barcodes.model_barcode_nomenclature sf_warehouse.group_sf_stock_user 1 0 1 0 1 0
56 access_barcode_nomenclature_stock_manager access_barcode_rule_stock_user_group_sf_stock_user barcode.nomenclature.stock.manager barcode.rule.stock.user barcodes.model_barcode_nomenclature barcodes.model_barcode_rule sf_warehouse.group_sf_stock_user 1 1 0 1 0 0
57 access_barcode_rule_stock_user access_barcode_rule_stock_manager_group_sf_stock_user barcode.rule.stock.user barcode.rule.stock.manager barcodes.model_barcode_rule sf_warehouse.group_sf_stock_user 1 0 1 0 1 0
58 access_barcode_rule_stock_manager access_stock_scrap_user_group_sf_stock_user barcode.rule.stock.manager stock.scrap.user barcodes.model_barcode_rule stock.model_stock_scrap sf_warehouse.group_sf_stock_user 1 1 1 0
59 access_stock_scrap_user access_stock_scrap_manager_group_sf_stock_user stock.scrap.user stock.scrap.manager stock.model_stock_scrap sf_warehouse.group_sf_stock_user 1 1 1 0
60 access_stock_scrap_manager access_product_attribute_manager_group_sf_stock_user stock.scrap.manager product.attribute manager stock.model_stock_scrap product.model_product_attribute sf_warehouse.group_sf_stock_user 1 1 1 0
61 access_product_attribute_manager access_product_attribute_value_manager_group_sf_stock_user product.attribute manager product.attribute manager value product.model_product_attribute product.model_product_attribute_value sf_warehouse.group_sf_stock_user 1 1 1 0
62 access_product_attribute_value_manager access_product_product_attribute_manager_group_sf_stock_user product.attribute manager value product.product.attribute manager value product.model_product_attribute_value product.model_product_template_attribute_value sf_warehouse.group_sf_stock_user 1 1 1 0
63 access_product_product_attribute_manager access_product_template_attribute_exclusion_manager_group_sf_stock_user product.product.attribute manager value product.attribute manager filter line product.model_product_template_attribute_value product.model_product_template_attribute_exclusion sf_warehouse.group_sf_stock_user 1 1 1 0
64 access_product_template_attribute_exclusion_manager access_product_template_attribute_line_manager_group_sf_stock_user product.attribute manager filter line product.attribute manager line product.model_product_template_attribute_exclusion product.model_product_template_attribute_line sf_warehouse.group_sf_stock_user 1 1 1 0
65 access_product_template_attribute_line_manager access_report_stock_quantity product.attribute manager line access_report_stock_quantity product.model_product_template_attribute_line stock.model_report_stock_quantity sf_warehouse.group_sf_stock_user base.group_user 1 1 0 1 0 0
66 access_report_stock_quantity access_stock_traceability_report_group_sf_stock_user access_report_stock_quantity access.stock.traceability.report stock.model_report_stock_quantity stock.model_stock_traceability_report base.group_user sf_warehouse.group_sf_stock_user 1 0 1 0 1 0
67 access_stock_traceability_report access_stock_assign_serial_group_sf_stock_user access.stock.traceability.report access.stock.assign.serial stock.model_stock_traceability_report stock.model_stock_assign_serial sf_warehouse.group_sf_stock_user 1 1 1 0
68 access_stock_assign_serial access_stock_return_picking_line_group_sf_stock_user access.stock.assign.serial access.stock.return.picking.line stock.model_stock_assign_serial stock.model_stock_return_picking_line sf_warehouse.group_sf_stock_user 1 1 1 0
69 access_stock_return_picking_line access_stock_return_picking_group_sf_stock_user access.stock.return.picking.line access.stock.return.picking stock.model_stock_return_picking_line stock.model_stock_return_picking sf_warehouse.group_sf_stock_user 1 1 1 0
70 access_stock_return_picking access_stock_change_product_qty_group_sf_stock_user access.stock.return.picking access.stock.change.product.qty stock.model_stock_return_picking stock.model_stock_change_product_qty sf_warehouse.group_sf_stock_user 1 1 1 0
71 access_stock_change_product_qty access_stock_scheduler_compute_group_sf_stock_user access.stock.change.product.qty access.stock.scheduler.compute stock.model_stock_change_product_qty stock.model_stock_scheduler_compute sf_warehouse.group_sf_stock_user 1 1 1 0
72 access_stock_scheduler_compute access_stock_immediate_transfer_line_group_sf_stock_user access.stock.scheduler.compute access.stock.immediate.transfer.line stock.model_stock_scheduler_compute stock.model_stock_immediate_transfer_line sf_warehouse.group_sf_stock_user 1 1 1 0
73 access_stock_immediate_transfer_line access_stock_immediate_transfer_group_sf_stock_user access.stock.immediate.transfer.line access.stock.immediate.transfer stock.model_stock_immediate_transfer_line stock.model_stock_immediate_transfer sf_warehouse.group_sf_stock_user 1 1 1 0
74 access_stock_immediate_transfer access_stock_backorder_confirmation_line_group_sf_stock_user access.stock.immediate.transfer access.stock.backorder.confirmation.line stock.model_stock_immediate_transfer stock.model_stock_backorder_confirmation_line sf_warehouse.group_sf_stock_user 1 1 1 0
75 access_stock_backorder_confirmation_line access_stock_backorder_confirmation_group_sf_stock_user access.stock.backorder.confirmation.line access.stock.backorder.confirmation stock.model_stock_backorder_confirmation_line stock.model_stock_backorder_confirmation sf_warehouse.group_sf_stock_user 1 1 1 0
76 access_stock_backorder_confirmation access_stock_quantity_history_group_sf_stock_user access.stock.backorder.confirmation access.stock.quantity.history stock.model_stock_backorder_confirmation stock.model_stock_quantity_history sf_warehouse.group_sf_stock_user 1 1 1 0
77 access_stock_quantity_history access_stock_rules_report_group_sf_stock_user access.stock.quantity.history access.stock.rules.report stock.model_stock_quantity_history stock.model_stock_rules_report sf_warehouse.group_sf_stock_user 1 1 1 0
78 access_stock_rules_report access_stock_warn_insufficient_qty_scrap_group_sf_stock_user access.stock.rules.report access.stock.warn.insufficient.qty.scrap stock.model_stock_rules_report stock.model_stock_warn_insufficient_qty_scrap sf_warehouse.group_sf_stock_user 1 1 1 0
79 access_stock_warn_insufficient_qty_scrap access_product_replenish_group_sf_stock_user access.stock.warn.insufficient.qty.scrap access.product.replenish stock.model_stock_warn_insufficient_qty_scrap stock.model_product_replenish sf_warehouse.group_sf_stock_user 1 1 1 0
80 access_product_replenish access_stock_track_confirmation_group_sf_stock_user access.product.replenish access.stock.track.confirmation stock.model_product_replenish stock.model_stock_track_confirmation sf_warehouse.group_sf_stock_user 1 1 1 0
81 access_stock_track_confirmation access_stock_track_line_group_sf_stock_user access.stock.track.confirmation access.stock.track.line stock.model_stock_track_confirmation stock.model_stock_track_line sf_warehouse.group_sf_stock_user 1 1 1 0
82 access_stock_track_line access_stock_package_destination_group_sf_stock_user access.stock.track.line access.stock.package.destination stock.model_stock_track_line stock.model_stock_package_destination sf_warehouse.group_sf_stock_user 1 1 1 0
83 access_stock_package_destination access_stock_orderpoint_snooze_group_sf_stock_user access.stock.package.destination access_stock_orderpoint_snooze stock.model_stock_package_destination stock.model_stock_orderpoint_snooze sf_warehouse.group_sf_stock_user 1 1 1 0
84 access_stock_orderpoint_snooze access_stock_package_type_user_group_sf_stock_user access_stock_orderpoint_snooze access_stock_package_type_user stock.model_stock_orderpoint_snooze stock.model_stock_package_type sf_warehouse.group_sf_stock_user 1 1 0 1 0 0
85 access_stock_package_type_user access_stock_package_type_manager_group_sf_stock_user access_stock_package_type_user access_stock_package_type_manager stock.model_stock_package_type sf_warehouse.group_sf_stock_user 1 0 1 0 1 0
86 access_stock_package_type_manager access_stock_storage_category_user_group_sf_stock_user access_stock_package_type_manager stock.storage.category.user stock.model_stock_package_type stock.model_stock_storage_category sf_warehouse.group_sf_stock_user base.group_user 1 1 0 1 0 0
87 access_stock_storage_category_user access_stock_storage_category_manager_group_sf_stock_user stock.storage.category.user stock.storage.category.manager stock.model_stock_storage_category base.group_user sf_warehouse.group_sf_stock_user 1 0 1 0 1 0
88 access_stock_storage_category_manager access_stock_storage_category_capacity_user stock.storage.category.manager stock.storage.category.capacity.user stock.model_stock_storage_category stock.model_stock_storage_category_capacity sf_warehouse.group_sf_stock_user base.group_user 1 1 0 1 0 0
89 access_stock_storage_category_capacity_user access_stock_storage_category_capacity_manager_group_sf_stock_user stock.storage.category.capacity.user stock.storage.category.capacity.manager stock.model_stock_storage_category_capacity base.group_user sf_warehouse.group_sf_stock_user 1 0 1 0 1 0
90 access_stock_storage_category_capacity_manager access_stock_inventory_conflict_group_sf_stock_user stock.storage.category.capacity.manager stock.inventory.conflict stock.model_stock_storage_category_capacity stock.model_stock_inventory_conflict sf_warehouse.group_sf_stock_user 1 1 1 0
91 access_stock_inventory_conflict access_stock_inventory_warning_group_sf_stock_user stock.inventory.conflict stock.inventory.warning stock.model_stock_inventory_conflict stock.model_stock_inventory_warning sf_warehouse.group_sf_stock_user 1 1 1 0
92 access_stock_inventory_warning access_stock_inventory_adjustment_name_group_sf_stock_user stock.inventory.warning stock.inventory.adjustment.name stock.model_stock_inventory_warning stock.model_stock_inventory_adjustment_name sf_warehouse.group_sf_stock_user 1 1 1 0
93 access_stock_inventory_adjustment_name access_stock_request_count_group_sf_stock_user stock.inventory.adjustment.name stock.request.count stock.model_stock_inventory_adjustment_name stock.model_stock_request_count sf_warehouse.group_sf_stock_user 1 1 1 0
94 access_stock_request_count access_stock_replenishment_info_group_sf_stock_user stock.request.count stock.replenishment.info stock.model_stock_request_count stock.model_stock_replenishment_info sf_warehouse.group_sf_stock_user 1 1 1 0
95 access_stock_replenishment_info access_stock_picking_label_type_user_group_sf_stock_user stock.replenishment.info picking.label.type.user stock.model_stock_replenishment_info stock.model_picking_label_type sf_warehouse.group_sf_stock_user 1 1 1 0
96 access_stock_picking_label_type_user access_stock_lot_label_layout_user_group_sf_stock_user picking.label.type.user lot.label.layout.user stock.model_picking_label_type stock.model_lot_label_layout sf_warehouse.group_sf_stock_user 1 1 1 0
97 access_stock_lot_label_layout_user access_stock_replenish_option_group_sf_stock_user lot.label.layout.user stock.replenishment.option stock.model_lot_label_layout stock.model_stock_replenishment_option sf_warehouse.group_sf_stock_user 1 1 1 0
98 access_stock_replenish_option access_mrp_production_group_sf_stock_user stock.replenishment.option mrp.production stock.model_stock_replenishment_option mrp.model_mrp_production sf_warehouse.group_sf_stock_user 1 1 1 0
99 access_mrp_production access_sf_shelf_location_group_plan_dispatch mrp.production sf.shelf.location mrp.model_mrp_production model_sf_shelf_location sf_warehouse.group_sf_stock_user sf_base.group_plan_dispatch 1 1 0 1 0 0
100 access_sf_shelf_location_group_plan_dispatch access_stock_move sf.shelf.location stock.move model_sf_shelf_location stock.model_stock_move sf_base.group_plan_dispatch 1 0 1 0 1 0
101 access_stock_move access_stock_picking stock.move stock.picking stock.model_stock_move stock.model_stock_picking sf_base.group_plan_dispatch 1 1 0 1 0 0
102 access_stock_picking access_stock_lot_group_plan_dispatch stock.picking stock.lot stock.model_stock_picking stock.model_stock_lot sf_base.group_plan_dispatch 1 0 0 0
103 access_stock_lot_group_plan_dispatch access_stock_lot_group_plan_director stock.lot stock.model_stock_lot sf_base.group_plan_dispatch sf_base.group_plan_director 1 0 1 0 1 0
104 access_stock_lot_group_plan_director access_stock_warehouse_orderpoint stock.lot stock.warehouse.orderpoint stock.model_stock_lot stock.model_stock_warehouse_orderpoint sf_base.group_plan_director sf_base.group_plan_dispatch 1 1 1 0 0