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
                )""")


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值