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

@@ -30,7 +30,7 @@ patch(FormStatusIndicator.prototype, 'jikimo_frontend.FormStatusIndicator', {
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("请确认是否要舍弃之前的更改?");
@@ -44,32 +44,33 @@ patch(FormStatusIndicator.prototype, 'jikimo_frontend.FormStatusIndicator', {
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>
@@ -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">
@@ -218,18 +229,29 @@
<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,20 +264,26 @@
<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)]}"/>
<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="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)]}"/>
<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="qty_tested" attrs="{'readonly': [('quality_state', '!=', 'none')]}"/>
<field name="uom_id"/> <field name="uom_id"/>
</div> </div>
@@ -264,14 +292,17 @@
<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')]}">
@@ -280,8 +311,11 @@
<notebook> <notebook>
<page string="Notes" name="notes"> <page string="Notes" name="notes">
<group> <group>
<field name="report_result"/>
<field name="report_pdf" widget="pdf_viewer"/>
<field string="Instructions" name="note"/> <field string="Instructions" name="note"/>
<field string="Notes" name="additional_note"/> <field string="Notes" name="additional_note"/>
</group> </group>
</page> </page>
</notebook> </notebook>
@@ -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>
@@ -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"/>
@@ -427,7 +475,8 @@
<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>
<p>
Define Quality Control Points in order to automatically generate Define Quality Control Points in order to automatically generate
quality checks at the right logistic operation: transfers, manufacturing orders. quality checks at the right logistic operation: transfers, manufacturing orders.
</p> </p>
@@ -459,7 +508,8 @@
<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>
<p>
Define Quality Control Points in order to automatically generate Define Quality Control Points in order to automatically generate
quality checks at the right logistic operation: transfers, manufacturing orders. quality checks at the right logistic operation: transfers, manufacturing orders.
</p> </p>
@@ -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>
@@ -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>
@@ -616,8 +697,9 @@
<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"
@@ -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,10 +756,11 @@
<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> </p>
<p>
Quality Teams group the different quality alerts/checks Quality Teams group the different quality alerts/checks
according to the roles (teams) that need them. according to the roles (teams) that need them.
</p> </p>
@@ -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,7 +850,8 @@
<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>
<p>
Quality Alert stages define the different steps a quality alert should go through. Quality Alert stages define the different steps a quality alert should go through.
</p> </p>
</field> </field>
@@ -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>
@@ -837,14 +935,19 @@
</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>
@@ -857,18 +960,28 @@
<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>
@@ -896,7 +1012,8 @@
<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>
<p>
Quality control points define the quality checks which should be Quality control points define the quality checks which should be
performed at each operation, for your different products. performed at each operation, for your different products.
</p> </p>

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
@@ -31,3 +29,42 @@ access_equipment_maintenance_standards_group_plan_dispatch,equipment_maintenance
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
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')
logging.info('ftp地址:%s' % remotepath)
if reportpath.find(production_no) != -1:
# 服务器内临时地址
serverdir = os.path.join('/tmp', production_no_ftp[1], 'detection')
ftp_resconfig = self.env['res.config.settings'].get_values() ftp_resconfig = self.env['res.config.settings'].get_values()
ftp = FtpController(str(ftp_resconfig['ftp_host']), int(ftp_resconfig['ftp_port']), ftp = FtpController(str(ftp_resconfig['ftp_host']), int(ftp_resconfig['ftp_port']),
ftp_resconfig['ftp_user'], ftp_resconfig['ftp_user'],
ftp_resconfig['ftp_password']) ftp_resconfig['ftp_password'])
download_state = ftp.download_reportfile_tree(remotepath, serverdir, reportpath) download_state = ftp.download_reportfile_tree(remotepath, serverdir, reportpath)
logging.info('download_state:%s' % download_state) 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

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