465 lines
33 KiB
XML
465 lines
33 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
|
<odoo>
|
|
<data>
|
|
<record id="custom_mrp_production_tree_view" model="ir.ui.view">
|
|
<field name="name">custom.mrp.production.tree</field>
|
|
<field name="model">mrp.production</field>
|
|
<field name="inherit_id" ref="mrp.mrp_production_tree_view"/>
|
|
<field name="arch" type="xml">
|
|
<xpath expr="//field[@name='product_id']" position="replace"/>
|
|
<xpath expr="//field[@name='product_qty']" position="replace"/>
|
|
<xpath expr="//field[@name='product_uom_id']" position="replace"/>
|
|
<xpath expr="//field[@name='reservation_state']" position="replace"/>
|
|
<xpath expr="//field[@name='date_deadline']" position="replace"/>
|
|
<xpath expr="//field[@name='name']" position="after">
|
|
<field name="product_id" readonly="1" optional="show"/>
|
|
</xpath>
|
|
<xpath expr="//field[@name='product_id']" position="after">
|
|
<field name="product_qty" sum="Total Qty" string="数量" readonly="1" optional="show"/>
|
|
</xpath>
|
|
<xpath expr="//field[@name='product_qty']" position="after">
|
|
<field name="product_uom_id" string="计量单位" options="{'no_open':True,'no_create':True}"
|
|
groups="uom.group_uom" optional="show"/>
|
|
</xpath>
|
|
<xpath expr="//field[@name='date_planned_start']" position="replace">
|
|
<field name="date_planned_start" optional="show"/>
|
|
<field name="date_planned_finished" string="计划结束时间"/>
|
|
<!-- <field name="date_deadline" widget="remaining_days" attrs="{'invisible': [('state', 'in', ['done', 'cancel'])]}" optional="show"/> -->
|
|
</xpath>
|
|
<xpath expr="//field[@name='production_real_duration']" position="after">
|
|
<field name="reservation_state" optional="hide" decoration-danger="reservation_state == 'confirmed'"
|
|
decoration-success="reservation_state == 'assigned'"/>
|
|
</xpath>
|
|
<!-- <xpath expr="//field[@name='state']" position="before"> -->
|
|
<!-- <field name="schedule_state" optional="show"/> -->
|
|
<!-- </xpath> -->
|
|
<xpath expr="//field[@name='activity_ids']" position="replace">
|
|
<field name="activity_ids" string="下一个活动" widget="list_activity" optional="hide"/>
|
|
</xpath>
|
|
<xpath expr="//field[@name='origin']" position="replace">
|
|
<field name="origin" optional="hide"/>
|
|
</xpath>
|
|
<xpath expr="//field[@name='components_availability']" position="replace">
|
|
<field name="components_availability" options='{"lazy": true}'
|
|
attrs="{'invisible': [('state', 'not in', ['confirmed', 'progress'])]}"
|
|
optional="hide"
|
|
decoration-success="reservation_state == 'assigned' or components_availability_state == 'available'"
|
|
decoration-warning="reservation_state != 'assigned' and components_availability_state in ('expected', 'available')"
|
|
decoration-danger="reservation_state != 'assigned' and components_availability_state == 'late'"/>
|
|
</xpath>
|
|
<!-- <xpath expr="//field[@name='state']" position="after"> -->
|
|
<!-- <button name="action_view_production_schedule" string="生产排程" type="object" attrs="{'invisible': [('state', 'in', ['draft', 'cancel','已排程','progress','done','to_close'])]}"/> -->
|
|
<!-- <button name="cancel_plan" string="取消排程" type="object" attrs="{'invisible': [('state', 'in', ['draft', 'cancel','progress','done','to_close','confirmed'])]}"/> -->
|
|
<!-- </xpath> -->
|
|
</field>
|
|
</record>
|
|
|
|
<!-- 增加权限相关的按钮 -->
|
|
<!-- 制造订单的操作按钮只让制造用户可见 -->
|
|
<record id="custom_mrp_production_form_view" model="ir.ui.view">
|
|
<field name="name">custom.mrp.production.form</field>
|
|
<field name="model">mrp.production</field>
|
|
<field name="inherit_id" ref="mrp.mrp_production_form_view"/>
|
|
<field name="arch" type="xml">
|
|
<xpath expr="//field[@name='state']" position="attributes">
|
|
<!-- <attribute name="statusbar_visible">draft,confirmed,progress,pending_processing,completed,done -->
|
|
<!-- </attribute> -->
|
|
<attribute name="statusbar_visible">progress,pending_cam,pending_processing,pending_era_cam,completed,done
|
|
</attribute>
|
|
</xpath>
|
|
<xpath expr="//sheet//group//group[2]//label" position="before">
|
|
<!-- <field name="process_state"/> -->
|
|
<field name="state"/>
|
|
|
|
</xpath>
|
|
<xpath expr="//sheet//group//group//div[3]" position="after">
|
|
<field name="programming_no" readonly="1"/>
|
|
<field name="work_state" invisible="1"/>
|
|
<field name="schedule_state" invisible='1'/>
|
|
<field name="programming_state" readonly="1"/>
|
|
<field name="production_line_id" readonly="1"/>
|
|
</xpath>
|
|
<xpath expr="//field[@name='user_id']" position="before">
|
|
<field name="plan_start_processing_time" readonly="1"/>
|
|
</xpath>
|
|
<xpath expr="//field[@name='user_id']" position="after">
|
|
<field name="production_line_state" readonly="1"/>
|
|
<field name="part_number"/>
|
|
<field name="part_drawing"/>
|
|
</xpath>
|
|
<xpath expr="//header//button[@name='action_cancel']" position="replace">
|
|
<button name="action_cancel" type="object" string="取消" data-hotkey="z"
|
|
attrs="{'invisible': ['|', '|', ('id', '=', False), ('state', 'in', ('done', 'cancel')), ('confirm_cancel', '=', True)]}"
|
|
groups="sf_base.group_sf_mrp_user"/>
|
|
</xpath>
|
|
<xpath expr="(//header//button[@name='button_mark_done'])[1]" position="replace">
|
|
<button name="button_mark_done"
|
|
attrs="{'invisible': ['|', '|', ('state', 'in', ('draft', 'cancel', 'done', 'to_close')), ('qty_producing', '=', 0), ('move_raw_ids', '!=', [])]}"
|
|
string="验证" type="object" class="oe_highlight"
|
|
confirm="There are no components to consume. Are you still sure you want to continue?"
|
|
data-hotkey="g" groups="sf_base.group_sf_mrp_user"/>
|
|
</xpath>
|
|
<xpath expr="(//header//button[@name='button_mark_done'])[2]" position="replace">
|
|
<button name="button_mark_done"
|
|
attrs="{'invisible': ['|', '|', ('state', 'in', ('draft', 'cancel', 'done', 'to_close')), ('qty_producing', '=', 0), ('move_raw_ids', '=', [])]}"
|
|
string="验证" type="object" class="oe_highlight" data-hotkey="g"
|
|
groups="sf_base.group_sf_mrp_user"/>
|
|
</xpath>
|
|
<xpath expr="(//header//button[@name='button_mark_done'])[3]" position="replace">
|
|
<button name="button_mark_done" attrs="{'invisible': [
|
|
'|',
|
|
('move_raw_ids', '=', []),
|
|
'&',
|
|
'|',
|
|
('state', 'not in', ('confirmed', 'progress')),
|
|
('qty_producing', '!=', 0),
|
|
('state', '!=', 'to_close')]}" string="标记完成" type="object" class="oe_highlight"
|
|
data-hotkey="g" groups="sf_base.group_sf_mrp_user"/>
|
|
</xpath>
|
|
<xpath expr="(//header//button[@name='button_mark_done'])[4]" position="replace">
|
|
<button name="button_mark_done" attrs="{'invisible': [
|
|
'|',
|
|
('move_raw_ids', '!=', []),
|
|
'&',
|
|
'|',
|
|
('state', 'not in', ('confirmed', 'progress')),
|
|
('qty_producing', '!=', 0),
|
|
('state', '!=', 'to_close')]}" string="标记完成" type="object" class="oe_highlight"
|
|
data-hotkey="g"
|
|
confirm="There are no components to consume. Are you still sure you want to continue?"
|
|
groups="sf_base.group_sf_mrp_user"/>
|
|
</xpath>
|
|
<xpath expr="//header//button[@name='button_unplan']" position="replace">
|
|
<button name="button_unplan" type="object" string="取消安排"
|
|
attrs="{'invisible': ['|', ('is_planned', '=', False), ('state', '=', 'cancel')]}"
|
|
data-hotkey="x" groups="sf_base.group_sf_mrp_user"/>
|
|
</xpath>
|
|
<xpath expr="//header//button[@name='button_scrap']" position="replace">
|
|
<button name="button_scrap" type="object" string="报废"
|
|
attrs="{'invisible': [('state', 'in', ('cancel', 'draft'))]}" data-hotkey="y"
|
|
groups="sf_base.group_sf_mrp_user"/>
|
|
</xpath>
|
|
|
|
|
|
<xpath expr="//header//button[@name='action_confirm']" position="replace">
|
|
<button name="action_confirm" attrs="{'invisible': [('state', '!=', 'draft')]}" string="确认"
|
|
type="object" class="oe_highlight" data-hotkey="v" groups="sf_base.group_sf_mrp_user"/>
|
|
</xpath>
|
|
|
|
<xpath expr="//header//button[@name='button_plan']" position="replace">
|
|
<button name="button_plan"
|
|
attrs="{'invisible': ['|', '|', ('state', 'not in', ('confirmed', 'progress', 'to_close')), ('workorder_ids', '=', []), ('is_planned', '=', True)]}"
|
|
type="object" string="Plan" class="oe_highlight" data-hotkey="x"
|
|
groups="sf_base.group_sf_mrp_user"/>
|
|
</xpath>
|
|
|
|
<xpath expr="//header//button[@name='action_assign']" position="replace">
|
|
<button name="action_assign"
|
|
attrs="{'invisible': ['|', ('state', 'in', ('draft', 'done', 'cancel')), ('reserve_visible', '=', False)]}"
|
|
string="Check availability" type="object" data-hotkey="q"
|
|
groups="sf_base.group_sf_mrp_user"/>
|
|
</xpath>
|
|
|
|
<xpath expr="//header//button[@name='do_unreserve']" position="replace">
|
|
<button name="do_unreserve" type="object" string="Unreserve"
|
|
attrs="{'invisible': [('unreserve_visible', '=', False)]}" data-hotkey="w"
|
|
groups="sf_base.group_sf_mrp_user"/>
|
|
</xpath>
|
|
|
|
<xpath expr="//header//button[@name='action_toggle_is_locked']" position="replace">
|
|
<button name="action_toggle_is_locked"
|
|
attrs="{'invisible': ['|', ('show_lock', '=', False), ('is_locked', '=', False)]}"
|
|
string="Unlock" groups="sf_base.group_sf_mrp_user" type="object"
|
|
help="Unlock the manufacturing order to adjust what has been consumed or produced."
|
|
data-hotkey="l"/>
|
|
</xpath>
|
|
|
|
<xpath expr="//header//button[@name='action_toggle_is_locked']" position="replace">
|
|
<button name="action_toggle_is_locked"
|
|
attrs="{'invisible': ['|', ('show_lock', '=', False), ('is_locked', '=', True)]}"
|
|
string="Lock" groups="sf_base.group_sf_mrp_user" type="object"
|
|
help="Lock the manufacturing order to prevent changes to what has been consumed or produced."
|
|
data-hotkey="l"/>
|
|
</xpath>
|
|
|
|
<xpath expr="//header//button[@name='action_serial_mass_produce_wizard']" position="replace">
|
|
<button name="action_serial_mass_produce_wizard"
|
|
attrs="{'invisible': [('show_serial_mass_produce', '=', False)]}" string="Mass Produce"
|
|
type="object" groups="sf_base.group_sf_mrp_user"/>
|
|
</xpath>
|
|
|
|
<xpath expr="//header//button[@name='action_cancel']" position="replace">
|
|
<button name="action_cancel" type="object" string="Cancel" data-hotkey="z"
|
|
attrs="{'invisible': ['|', '|', ('id', '=', False), ('state', 'in', ('done', 'cancel')), ('confirm_cancel', '=', False)]}"
|
|
confirm="Some product moves have already been confirmed, this manufacturing order can't be completely cancelled. Are you still sure you want to process ?"
|
|
groups="sf_base.group_sf_mrp_user"/>
|
|
</xpath>
|
|
|
|
<xpath expr="//header//button[@name='button_unbuild']" position="replace">
|
|
<button name="button_unbuild" type="object" string="拆单"
|
|
attrs="{'invisible': [('state', '!=', 'done')]}" data-hotkey="shift+v"
|
|
groups="sf_base.group_sf_mrp_user"/>
|
|
</xpath>
|
|
<xpath expr="//header//button[@name='button_plan']" position="replace">
|
|
<!-- <button name="button_plan" attrs="{'invisible': ['|', '|', ('state', 'not in', ('confirmed', 'progress', 'to_close')), ('workorder_ids', '=', []), ('is_planned', '=', True)]}" type="object" string="Plan" class="oe_highlight" data-hotkey="x" groups="sf_base.group_sf_mrp_user"/> -->
|
|
</xpath>
|
|
|
|
<xpath expr="//header//button[@name='action_assign']" position="replace">
|
|
<button name="action_assign"
|
|
attrs="{'invisible': ['|', ('state', 'in', ('draft', 'done', 'cancel')), ('reserve_visible', '=', False)]}"
|
|
string="检查可用量" type="object" data-hotkey="q" groups="sf_base.group_sf_mrp_user"/>
|
|
</xpath>
|
|
|
|
<xpath expr="//header//button[@name='do_unreserve']" position="replace">
|
|
<button name="do_unreserve" type="object" string="取消保留"
|
|
attrs="{'invisible': [('unreserve_visible', '=', False)]}" data-hotkey="w"
|
|
groups="sf_base.group_sf_mrp_user"/>
|
|
</xpath>
|
|
|
|
<xpath expr="//header//button[@name='action_toggle_is_locked']" position="replace">
|
|
<button name="action_toggle_is_locked"
|
|
attrs="{'invisible': ['|', ('show_lock', '=', False), ('is_locked', '=', False)]}"
|
|
string="取消阻塞" groups="sf_base.group_sf_mrp_user" type="object"
|
|
help="Unlock the manufacturing order to adjust what has been consumed or produced."
|
|
data-hotkey="l"/>
|
|
</xpath>
|
|
|
|
<xpath expr="//header//button[@name='action_toggle_is_locked']" position="replace">
|
|
<button name="action_toggle_is_locked"
|
|
attrs="{'invisible': ['|', ('show_lock', '=', False), ('is_locked', '=', True)]}"
|
|
string="阻塞" groups="sf_base.group_sf_mrp_user" type="object"
|
|
help="Lock the manufacturing order to prevent changes to what has been consumed or produced."
|
|
data-hotkey="l"/>
|
|
</xpath>
|
|
|
|
<xpath expr="//header//button[@name='action_serial_mass_produce_wizard']" position="replace">
|
|
<button name="action_serial_mass_produce_wizard"
|
|
attrs="{'invisible': [('show_serial_mass_produce', '=', False)]}" string="批量生产"
|
|
type="object" groups="sf_base.group_sf_mrp_user"/>
|
|
</xpath>
|
|
|
|
<xpath expr="//header//button[@name='action_cancel']" position="replace">
|
|
<button name="action_cancel" type="object" string="取消" data-hotkey="z"
|
|
attrs="{'invisible': ['|', '|', ('id', '=', False), ('state', 'in', ('done', 'cancel')), ('confirm_cancel', '=', False)]}"
|
|
confirm="Some product moves have already been confirmed, this manufacturing order can't be completely cancelled. Are you still sure you want to process ?"
|
|
groups="sf_base.group_sf_mrp_user"/>
|
|
</xpath>
|
|
<xpath expr="//header//button[@name='button_unbuild']" position="replace">
|
|
<button name="button_unbuild" type="object" string="拆单"
|
|
attrs="{'invisible': [('state', '!=', 'done')]}" data-hotkey="shift+v"
|
|
groups="sf_base.group_sf_mrp_user"/>
|
|
</xpath>
|
|
|
|
<xpath expr="//sheet//notebook//page[@name='operations']" position="attributes">
|
|
<attribute name="attrs">{'invisible': [('schedule_state', '=', '未排')]}</attribute>
|
|
</xpath>
|
|
</field>
|
|
</record>
|
|
|
|
<!-- 工单的操作按钮只让制造用户可见 -->
|
|
<record id="sf_mrp_production_workorder_tree_editable_view" model="ir.ui.view">
|
|
<field name="name">sf.mrp.production.workorder.tree.editable</field>
|
|
<field name="model">mrp.workorder</field>
|
|
<field name="inherit_id" ref="mrp.mrp_production_workorder_tree_editable_view"/>
|
|
<field name="arch" type="xml">
|
|
<xpath expr="//tree//button[@name='button_start']" position="replace">
|
|
<field name="routing_type" invisible="True"/>
|
|
<button name="button_start" type="object" string="开始" class="btn-success"
|
|
attrs="{'invisible': ['|', '|', '|','|', ('production_state','in', ('draft', 'done', 'cancel')), ('working_state', '=', 'blocked'), ('state', 'in', ('done', 'cancel')), ('is_user_working', '!=', False), ('routing_type', '=', 'CNC加工')]}"
|
|
groups="sf_base.group_sf_mrp_user"/>
|
|
</xpath>
|
|
<xpath expr="//tree//button[@name='button_pending']" position="replace">
|
|
<button name="button_pending" type="object" string="Pause" class="btn-warning"
|
|
attrs="{'invisible': ['|', '|', '|', ('production_state', 'in', ('draft', 'done', 'cancel')), ('working_state', '=', 'blocked'), ('is_user_working', '=', False), ('routing_type', '=', 'CNC加工')]}"
|
|
groups="sf_base.group_sf_mrp_user"/>
|
|
</xpath>
|
|
<xpath expr="//tree//button[@name='button_finish']" position="replace">
|
|
<button name="button_finish" type="object" string="Done" class="btn-success"
|
|
attrs="{'invisible': ['|', '|', '|', ('production_state', 'in', ('draft', 'done', 'cancel')), ('working_state', '=', 'blocked'), ('is_user_working', '=', False), ('routing_type', '=', 'CNC加工')]}"
|
|
groups="sf_base.group_sf_mrp_user"/>
|
|
</xpath>
|
|
<xpath expr="//tree//button[@name='%(mrp.act_mrp_block_workcenter_wo)d']" position="replace">
|
|
<button name="%(mrp.act_mrp_block_workcenter_wo)d" type="action" string="Block"
|
|
context="{'default_workcenter_id': workcenter_id}" class="btn-danger"
|
|
attrs="{'invisible': ['|', '|', ('production_state', 'in', ('draft', 'done', 'cancel')), ('working_state', '=', 'blocked'), ('routing_type', '=', 'CNC加工')]}"
|
|
groups="sf_base.group_sf_mrp_user"/>
|
|
</xpath>
|
|
<xpath expr="//tree//button[@name='button_unblock']" position="replace">
|
|
<button name="button_unblock" type="object" string="Unblock"
|
|
context="{'default_workcenter_id': workcenter_id}" class="btn-danger"
|
|
attrs="{'invisible': ['|', '|', ('production_state', 'in', ('draft', 'done', 'cancel')), ('working_state', '!=', 'blocked'), ('routing_type', '=', 'CNC加工')]}"
|
|
groups="sf_base.group_sf_mrp_user"/>
|
|
</xpath>
|
|
<xpath expr="//tree//button[@name='action_open_wizard']" position="replace">
|
|
<button name="action_open_wizard" type="object" icon="fa-external-link" class="oe_edit_only"
|
|
title="Open Work Order"
|
|
context="{'default_workcenter_id': workcenter_id}" groups="sf_base.group_sf_mrp_user"/>
|
|
<!-- ======= -->
|
|
<!-- <button name="button_start" type="object" string="开始" class="btn-success" -->
|
|
<!-- attrs="{'invisible': ['|', '|', '|', ('production_state','in', ('draft', 'done', 'cancel')), ('working_state', '=', 'blocked'), ('state', 'in', ('done', 'cancel')), ('is_user_working', '!=', False)]}" -->
|
|
<!-- groups="sf_base.group_sf_mrp_user"/> -->
|
|
</xpath>
|
|
<xpath expr="//tree//button[@name='button_pending']" position="replace">
|
|
<button name="button_pending" type="object" string="暂停" class="btn-warning"
|
|
attrs="{'invisible': ['|', '|','|', ('production_state', 'in', ('draft', 'done', 'cancel')), ('working_state', '=', 'blocked'), ('is_user_working', '=', False), ('routing_type', '=', 'CNC加工')]}"
|
|
groups="sf_base.group_sf_mrp_user"/>
|
|
</xpath>
|
|
<xpath expr="//tree//button[@name='button_finish']" position="replace">
|
|
<button name="button_finish" type="object" string="完成" class="btn-success"
|
|
attrs="{'invisible': ['|', '|','|', ('production_state', 'in', ('draft', 'done', 'cancel')), ('working_state', '=', 'blocked'), ('is_user_working', '=', False), ('routing_type', '=', 'CNC加工')]}"
|
|
groups="sf_base.group_sf_mrp_user"/>
|
|
</xpath>
|
|
<xpath expr="//tree//button[@name='%(mrp.act_mrp_block_workcenter_wo)d']" position="replace">
|
|
<button name="%(mrp.act_mrp_block_workcenter_wo)d" type="action" string="阻塞"
|
|
context="{'default_workcenter_id': workcenter_id}" class="btn-danger"
|
|
attrs="{'invisible': ['|','|', ('production_state', 'in', ('draft', 'done', 'cancel')), ('working_state', '=', 'blocked'), ('routing_type', '=', 'CNC加工')]}"
|
|
groups="sf_base.group_sf_mrp_user"/>
|
|
</xpath>
|
|
<xpath expr="//tree//button[@name='button_unblock']" position="replace">
|
|
<button name="button_unblock" type="object" string="取消阻塞"
|
|
context="{'default_workcenter_id': workcenter_id}" class="btn-danger"
|
|
attrs="{'invisible': ['|','|', ('production_state', 'in', ('draft', 'done', 'cancel')), ('working_state', '!=', 'blocked'), ('routing_type', '=', 'CNC加工')]}"
|
|
groups="sf_base.group_sf_mrp_user"/>
|
|
</xpath>
|
|
<xpath expr="//tree//button[@name='action_open_wizard']" position="replace">
|
|
<button name="action_open_wizard" type="object" icon="fa-external-link" class="oe_edit_only"
|
|
title="未完成工单"
|
|
context="{'default_workcenter_id': workcenter_id}" groups="sf_base.group_sf_mrp_user"/>
|
|
</xpath>
|
|
</field>
|
|
</record>
|
|
|
|
<!-- 制造订单列表视图header内的按钮只让制造用户可见 -->
|
|
<record id="sf_mrp_production_tree_view" model="ir.ui.view">
|
|
<field name="name">sf.mrp.production.tree</field>
|
|
<field name="model">mrp.production</field>
|
|
<field name="inherit_id" ref="mrp.mrp_production_tree_view"/>
|
|
<field name="arch" type="xml">
|
|
<xpath expr="//header//button[@name='button_plan']" position="replace">
|
|
<!-- <button name="button_plan" type="object" string="安排" groups="sf_base.group_sf_mrp_user"/> -->
|
|
</xpath>
|
|
<xpath expr="//header//button[@name='do_unreserve']" position="replace">
|
|
<button name="do_unreserve" type="object" string="取消保留" groups="sf_base.group_sf_mrp_user"/>
|
|
</xpath>
|
|
<xpath expr="//header//button[@name='action_cancel']" position="replace">
|
|
<button name="action_cancel" type="object" string="取消" groups="sf_base.group_sf_mrp_user"/>
|
|
</xpath>
|
|
|
|
</field>
|
|
</record>
|
|
|
|
|
|
<!-- <record id="custom_mrp_production_form_view" model="ir.ui.view"> -->
|
|
<!-- <field name="name">custom.mrp.production.form</field> -->
|
|
<!-- <field name="model">mrp.production</field> -->
|
|
<!-- <field name="inherit_id" ref="mrp.mrp_production_form_view"/> -->
|
|
<!-- <field name="arch" type="xml"> -->
|
|
<!-- <xpath expr="//header//field[@name='state']" position="replace"> -->
|
|
<!-- <field name="state" widget="statusbar" statusbar_visible="draft,confirmed,已排程,progress,done"/> -->
|
|
<!-- </xpath> -->
|
|
<!-- <xpath expr="//header" position="inside"> -->
|
|
<!-- <button name="action_view_production_schedule" string="生产排程" type="object" attrs="{'invisible': [('state', 'in', ['draft', 'cancel','已排程','progress','done','to_close'])]}"/> -->
|
|
<!-- <button name="cancel_plan" string="取消排程" type="object" attrs="{'invisible': [('state', 'in', ['draft', 'cancel','progress','done','to_close','confirmed'])]}"/> -->
|
|
<!-- </xpath> -->
|
|
<!-- <xpath expr="//sheet//group//group//field[@name='product_id']" position="after"> -->
|
|
<!-- <field name="production_line_id"/> -->
|
|
<!-- <field name="date_planned_finished" string="计划结束时间"/> -->
|
|
<!-- </xpath> -->
|
|
<!-- <xpath expr="//sheet//group//group//field[@name='date_planned_start']" position="after"> -->
|
|
<!-- <field name="date_planned_finished"/> -->
|
|
<!-- </xpath> -->
|
|
<!-- </field> -->
|
|
<!-- </record> -->
|
|
|
|
<record id="custom_view_mrp_production_filter" model="ir.ui.view">
|
|
<field name="name">custom.mrp.production.select</field>
|
|
<field name="model">mrp.production</field>
|
|
<field name="inherit_id" ref="mrp.view_mrp_production_filter"/>
|
|
<field name="arch" type="xml">
|
|
<xpath expr="//search" position="inside">
|
|
<searchpanel class="account_root">
|
|
<field name="state" icon="fa-filter"/>
|
|
</searchpanel>
|
|
</xpath>
|
|
<filter name='todo' position="replace"/>
|
|
</field>
|
|
</record>
|
|
|
|
<!-- <xpath expr="//filter[@name='filter_draft']" position="after"> -->
|
|
<!-- <filter string="已完成" name="filter_done" domain="[('state', '=', 'done')]"/> -->
|
|
<!-- </xpath> -->
|
|
<!-- <xpath expr="//filter[@name='filter_draft']" position="after"> -->
|
|
<!-- <filter string="已取消" name="filter_cancel" domain="[('state', '=', 'cancel')]"/> -->
|
|
<!-- </xpath> -->
|
|
<!-- <xpath expr="//filter[@name='filter_draft']" position="after"> -->
|
|
<!-- <filter string="进行中" name="filter_progress" domain="[('state', '=', 'progress')]"/> -->
|
|
<!-- </xpath> -->
|
|
<!-- <xpath expr="//filter[@name='filter_draft']" position="after"> -->
|
|
<!-- <filter string="已确认" name="filter_confirmed" domain="[('state', '=', 'confirmed')]"/> -->
|
|
<!-- </xpath> -->
|
|
<!-- <xpath expr="//filter[@name='filter_draft']" position="after"> -->
|
|
<!-- <filter string="草稿" name="filter_draft" domain="[('state', '=', 'draft')]"/> -->
|
|
<!-- </xpath> -->
|
|
|
|
|
|
<!-- 产品模板修改>>>增加“规格”字段specification_id -->
|
|
<record id="custom_product_template_kanban_view" model="ir.ui.view">
|
|
<field name="name">custom.Product.template.product.kanban</field>
|
|
<field name="model">product.template</field>
|
|
<field name="inherit_id" ref="product.product_template_kanban_view"/>
|
|
<field name="arch" type="xml">
|
|
<xpath expr="//kanban" position="replace">
|
|
<kanban sample="1" class="o_kanban_product_template">
|
|
<field name="id"/>
|
|
<field name="product_variant_count"/>
|
|
<field name="currency_id"/>
|
|
<field name="activity_state"/>
|
|
<progressbar field="activity_state"
|
|
colors='{"planned": "success", "today": "warning", "overdue": "danger"}'/>
|
|
<templates>
|
|
<t t-name="kanban-box">
|
|
<div class="oe_kanban_card oe_kanban_global_click">
|
|
<div class="o_kanban_image me-1">
|
|
<img t-att-src="kanban_image('product.template', 'image_128', record.id.raw_value)"
|
|
alt="Product" class="o_image_64_contain"/>
|
|
</div>
|
|
<div class="oe_kanban_details">
|
|
<div class="o_kanban_record_top mb-0">
|
|
<div class="o_kanban_record_headings">
|
|
<strong class="o_kanban_record_title">
|
|
<field name="name"/>
|
|
</strong>
|
|
</div>
|
|
<field name="priority" widget="priority"/>
|
|
</div>
|
|
|
|
<div name="product_specification_id" class="mt-1">
|
|
规格:
|
|
<field name="specification_id"/>
|
|
<field name="specification_fixture_id"/>
|
|
</div>
|
|
<t t-if="record.default_code.value">[<field name="default_code"/>]
|
|
</t>
|
|
<div t-if="record.product_variant_count.value > 1"
|
|
groups="product.group_product_variant">
|
|
<strong>
|
|
<t t-esc="record.product_variant_count.value"/>
|
|
Variants
|
|
</strong>
|
|
</div>
|
|
<div name="product_lst_price" class="mt-1">
|
|
价格:
|
|
<field name="list_price" widget="monetary"
|
|
options="{'currency_field': 'currency_id', 'field_digits': True}"></field>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</t>
|
|
</templates>
|
|
</kanban>
|
|
</xpath>
|
|
</field>
|
|
</record>
|
|
|
|
</data>
|
|
</odoo> |