1.创建简单的视图(模型定义py已忽略)
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data>
<record id="quality_order_tree" model="ir.ui.view">
<field name="name">quality_order_tree</field>
<field name="model">quality.order</field>
<field name="arch" type="xml">
<tree string="Quality Order" create="true">
<field name="name"/>
<field name="qua_user" no_open="true"/>
<field name="product_id"/>
<field name="lot_id"/>
<field name="qty"/>
<field name="picking_id"/>
<field name="mrp_id"/>
<field name="produce_time" widget="date"/>
<!--<field name="create_date" string="创建时间"/>-->
</tree>
</field>
</record>
<record id="quality_order_form" model="ir.ui.view">
<field name="name">quality_order_form</field>
<field name="model">quality.order</field>
<field name="arch" type="xml">
<form string="Stock Order" create="true">
<header>
<h3>质检单</h3>
</header>
<sheet>
<div class="oe_title">
<h1>
<field name="name" readonly="True" placeholder=""/>
</h1>
</div>
<group>
<group>
<field name="qua_user"/>
<field name="product_id"/>
<field name="lot_id"/>
<field name="qty"/>
</group>
<group>
<field name="picking_id"/>
<field name="create_date" string="创建时间"/>
<field name="qc_id"/>
<field name="mrp_id"/>
<field name="produce_time" widget="date"/>
</group>
</group>
<notebook>
<page string="基础信息">
<field name="qo_lines">
<form create="false">
<group>
<field name="qp_id"/>
<field name="standard_value"/>
<field name="up_value"/>
<field name="low_value"/>
<field name="real_value" colors="red:real_value<low_value;black:real_value>low_value;"/>
<field name="qo_id" invisible="1"/>
</group>
</form>
<tree string="Stock Check Manage" editable="bottom" create="true">
<field name="qp_id"/>
<field name="standard_value"/>
<field name="up_value"/>
<field name="low_value"/>
<field name="real_value" fonts="bold:message_unread==True" colors="red:real_value<low_value;black:real_value>low_value;"/>
</tree>
</field>
</page>
<page string="其他">
<group>
<!--<field name="name"/>-->
</group>
</page>
</notebook>
</sheet>
</form>
</field>
</record>
<record model="ir.actions.act_window" id="action_quality_order_win"><!--设定window-->
<field name="name">质检单</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">quality.order</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="help" type="html">
<p class="oe_view_nocontent_create">
Click to start a new Call for Bids process.
</p>
<p>
</p>
</field>
</record>
<!--菜单链接对应的model-->
<record model="ir.actions.act_window.view"
id="action_quality_check_md">
<field name="sequence" eval="0"/>
<field name="view_mode">tree</field>
<field name="view_id" ref="quality_order_tree"/>
</record>
<!--菜单名称及上级菜单名称-->
<menuitem
id="quality_order_mtm"
sequence="1"
name="质检单"
parent="quality_check"
action="action_quality_order_win"/>
</data>
</odoo>
2.已有视图(xml),从后台(py)返回已定义的视图
# -*- coding: utf-8 -*-
from odoo import models, fields, api, _
from odoo.tools.safe_eval import safe_eval
from odoo.exceptions import UserError
# 通过产品创建采购申请
class purchase_order_create(models.TransientModel):
_name = 'product.to.purchase'
@api.multi
def create_purchase_requisition(self):
context = dict(self._context or {})
active_ids = context.get('active_ids', []) or []
proxy = self.env['product.product']
order_obj = self.env['purchase.request']
name = self.env['ir.sequence'].get('purchase.request')
request_id = order_obj.create({
'name': name,
'assigned_to': self.env.user.id,
})
for record in proxy.browse(active_ids):
self.purchase_requisition_order_line_create(record, request_id)
domain = [('res_model', '=', 'purchase.request'), ('res_id', '=', request_id.id)]
product_view = self.env.ref(
'purchase_request.view_purchase_request_form')
return {
'name': request_id.name,
'domain': domain,
'res_model': 'purchase.request',
'type': 'ir.actions.act_window',
'view_id': product_view.id,
'views': [(product_view.id, 'form')],
'view_mode': 'kanban,tree,form',
'view_type': 'form',
'res_id': request_id.id, #创建模型的id
# 'context': "{'default_res_model': '%s','default_res_id': %d}" % ('purchase.request', request_id.id)
}
#明细行
@api.multi
def purchase_requisition_order_line_create(self, record, po):
line_obj = self.env['purchase.request.line']
vas = {
# 'supplier_id': record.product_id.display_name,
'product_id': record.id,
'product_qty': 1,
'product_uom_id': record.uom_id.id,
# 'analytic_account_id': record.date_required,
# 'date_required': price_unit,
# 'specifications': '223423',
'request_id': po.id,
}
res_line = line_obj.create(vas)
record.purchase_line_id = res_line.id
通用的动作里加按钮
<act_window id="action_product_to_purchase_view"
multi="True"
key2="client_action_multi" name="创建采购单" <!--动作里的按钮名称-->
res_model="product.to.purchase" <!--目标模型-->
src_model="product.product" <!--本模型-->
view_mode="form" target="new" view_type="form" />