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>