odoo11/odoo12二次开发扩展原有模型重写view视图
扩展原有模型重写视图和动作视图
在项目二次开发过程中,原有的模型无法完全满足业务需求,需要对原有的模型进行扩展,同时,原有的视图样式部分字段不需要展示。举个例子,如下图:
在这个项目中,我们打算沿用odoo产品模块,对product.template模型进行字段扩展,同时改变view视图样式。视图继承并没有太多必要也繁杂,所以,打算对视图进行重写。
以下为视图实现的具体操作
具体操作有以下几个步骤:
- 重新定义action动作展示样式;
- 重写tree、form、kanban等视图;
1、定义视图action动作
<record id="action_sj_product" model="ir.actions.act_window">
<field name="name">物料管理</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">product.template</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="view_ids" eval="[(5, 0, 0),
(0, 0, {'view_mode': 'tree', 'view_id': ref('sj_product_tree_view')}),
(0, 0, {'view_mode': 'form', 'view_id': ref('sj_product_form_view')})]" />
<field name="context">{}</field>
<field name="help" type="html">
<p class="oe_view_nocontent_create">
添加新物料
</p>
</field>
</record>
Warnning!
若view_ids未定义,action动作依然会打开原来定义的视图!!
2、定义菜单挂载视图
<menuitem id="sj_product_manage" name="物料管理" parent="sj_product_menu" action="action_sj_product" sequence="2" />
3、定义tree视图
<record id="sj_product_tree_view" model="ir.ui.view">
<field name="name">sj.product.tree</field>
<field name="model">product.template</field>
<field name="priority">4</field>
<field name="arch" type="xml">
<tree string="物料管理" class="o_sale_order">
<field name="sj_product_number" />
<field name="name" string="物料名称" />
<field name="sj_stock_number" />
<field name="sj_stock_name" />
<field name="sj_kanban_number" />
<field name="sj_work_number" />
<field name="sj_specificate_number" />
<field name="sj_texture" />
<field name="categ_id" />
<field name="uom_id" />
<field name="sj_is_check" />
<field name="create_uid" />
<field name="create_date" />
<field name="active" string="状态" />
</tree>
</field>
</record>
4、定义form视图
<record id="sj_product_form_view" model="ir.ui.view">
<field name="name">sj.product.form</field>
<field name="model">product.template</field>
<field name="arch" type="xml">
<form string="物料明细" class="o_sale_order">
<sheet>
<group>
<group>
<field name="sj_product_number" />
<field name="sj_stock_name" />
<field name="sj_specificate_number" />
<field name="categ_id" />
</group>
<group>
<field name="name" string="物料名称" />
<field name="sj_kanban_number" />
<field name="sj_texture" />
<field name="sj_is_check" />
</group>
<group>
<field name="sj_stock_number" />
<field name="sj_work_number" />
<field name="uom_id" />
<field name="active" />
</group>
</group>
<group>
<field name="description" string="要求" />
</group>
<notebook>
<page string="采购" name="sj_purchase">
<group>
<group name="purchase_info_left">
<field name="sj_safe_inventory" />
</group>
<group name="purchase_info_right">
<field name="sj_purchase_cycle" />
</group>
</group>
<group>
<field name="seller_ids" />
</group>
</page>
<page string="销售" name="sj_sales">
<group>
<group name="sales_info_left">
<field name="weight" string="单重" />
<field name="sj_short_name" />
<field name="list_price" />
</group>
<group name="sales_info_right">
<field name="standard_price" />
<field name="sj_back_mash" />
</group>
</group>
</page>
<page string="仓储" name="sj_inventory">
<group>
<!-- <group name="inventory_info_left">
<field name="sj_warehouse_number"/>
<field name="sj_goods_area_number"/>
</group> -->
<group name="inventory_info_right">
<field name="sj_warehouse_id" />
<field name="sj_goods_area_id" />
</group>
</group>
</page>
<page string="质检" name="sj_check">
</page>
</notebook>
</sheet>
</form>
</field>
</record>