odoo web加载sql视图

1.web端代码

<?xml version="1.0" encoding="utf-8"?>
<odoo>
    <data>
        <record id="stock_inout_detail_list_tree" model="ir.ui.view">
            <field name="name">stock_inout_detail_list_tree</field>
            <field name="model">stock.inout.detail</field>
            <field name="arch" type="xml">
                <tree string="Stock Inout Detail" create="false">
                    <field name="product_id"/>
                    <field name="create_date"/>
                    <field name="picking_type_id"/>
                    <field name="quantity"/>
                    <field name="serial_number"/>
                    <field name="product_uom_id"/>
                    <field name="lot_id"/>
                    <field name="origin"/>
                    <field name="force_date"/>
                </tree>
            </field>
        </record>

        <record model="ir.actions.act_window" id="action_stock_inout_detail"><!--设定window-->
            <field name="name">出入库明细</field>
            <field name="type">ir.actions.act_window</field>
            <field name="res_model">stock.inout.detail</field>
            <field name="view_type">form</field>
            <field name="view_mode">tree</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_stock_inout_detail_list_tree">
            <field name="sequence" eval="0"/>
            <field name="view_mode">tree</field>
            <field name="view_id" ref="stock_inout_detail_list_tree"/>
        </record>

        <!--菜单名称及上级菜单名称-->
        <menuitem
                id="stock_inout_detail"
                sequence="90"
                name="出入库明细"
                parent="stock.menu_warehouse_report"
                action="action_stock_inout_detail"/>
    </data>
</odoo>

2.服务端代码:

# _*_ coding: utf-8 _*_
from odoo import api, fields, models, tools


class StockInoutDetial(models.Model):
    _name = "stock.inout.detail"
    _auto = False
    _order = 'create_date asc'

    move_id = fields.Many2one('stock.move', u'Stock Move', required=True)
    # location_id = fields.Many2one('stock.location', 'Location', required=True)
    product_id = fields.Many2one('product.product', '产品', required=True)
    quantity = fields.Float('数量')
    create_date = fields.Datetime('创建日期')
    serial_number = fields.Char('追踪号', required=True)
    origin = fields.Char(u'源单据', required=True)
    picking_type_id = fields.Many2one('stock.picking.type',
                                      string=u'拣货类型')
    lot_id = fields.Many2one('stock.production.lot', string='追踪号/批次号')
    product_uom_id = fields.Many2one(
        'product.uom', string='单位', related='product_id.uom_id',
        readonly=True)
    force_date = fields.Datetime(u'强制时间')

    @api.model_cr
    def init(self):
        tools.drop_view_if_exists(self._cr, 'stock_inout_detail')
        self._cr.execute("""
                CREATE VIEW stock_inout_detail AS (
                  SELECT sq.id as id,
                    spl.id AS lot_id,
                    sqmr.move_id AS move_id,
                    sm.product_id AS product_id,
                    sm.create_date AS create_date,
                    sm.origin AS origin,
                    sm.picking_type_id AS picking_type_id,
                    sm.force_date,
                    sq.ref AS serial_number,
                    sq.qty AS quantity
                    FROM stock_quant_move_rel sqmr
                    LEFT JOIN stock_move sm ON sm.id=sqmr.move_id
                    LEFT JOIN stock_quant sq ON sq.id=sqmr.quant_id
                    LEFT JOIN stock_production_lot spl ON spl.id=sq.lot_id WHERE origin is not null
                )""")


  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 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、付费专栏及课程。

余额充值