odoo创建及返回视图

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&lt;low_value;black:real_value&gt;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&lt;low_value;black:real_value&gt;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" />

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Odoo中新建自定义视图,需要进行以下操作: 1. 在odoo的python代码中增加新视图类型与视图模式。这可以通过在ir_actions_act_window.py和ir_ui_view.py文件中添加相关代码来实现。例如,在ir_actions_act_window.py文件中,我们可以增加以下代码来定义新的视图模式: ``` # -*- coding: utf-8 -*- from odoo import fields, models class ActWindowView(models.Model): _inherit = 'ir.actions.act_window.view' view_mode = fields.Selection(selection_add=[('eview', 'echart views')]) ``` 在ir_ui_view.py文件中,我们可以添加以下代码来定义新的视图类型: ``` # -*- coding: utf-8 -*- from odoo import fields, models class View(models.Model): _inherit = 'ir.ui.view' type = fields.Selection(selection_add=[('eview', 'echart views')]) ``` 这样,Odoo就可以识别我们新定义的视图类型。 2. 定义js相关文件和模板代码。通过编相应的javascript文件和模板代码,我们可以实现对自定义视图的布局和行为的控制。这些文件需要与新定义的视图类型相关联,并与视图模板文件进行交互。具体的实现方法可以根据项目需求和技术要求来确定。 这样,在执行以上操作之后,就可以在Odoo创建自定义视图了。自定义视图可以根据具体需求来设计和实现,包括自定义的布局、交互和样式等方面 。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [Odoo自定义视图教程](https://blog.csdn.net/u012739578/article/details/121670077)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值