|  | 
from odoo import tools
from odoo import models, fields
class ReportLotStatus(models.Model):
    _name = 'report.lot.status'
    _description = '批次余额表'
    _auto = False
    code = fields.Char('编码')
    goods = fields.Char('商品')
    uom = fields.Char('单位')
    uos = fields.Char('辅助单位')
    lot = fields.Char('批号')
    attribute_id = fields.Many2one('attribute', '属性')
    status = fields.Char('状态')
    warehouse = fields.Char('仓库')
    date = fields.Date('日期')
    qty = fields.Float('数量', digits='Quantity')
    uos_qty = fields.Float('辅助数量', digits='Quantity')
    cost = fields.Float('单价', digits='Amount')
    amount = fields.Float('金额', digits='Amount')
    def init(self):
        cr = self._cr
        tools.drop_view_if_exists(cr, 'report_lot_status')
        cr.execute(
            """
            create or replace view report_lot_status as (
                SELECT MIN(line.id) as id,
                        goods.code as code,
                        goods.name as goods,
                        goods.cost as cost,
                        goods.cost * sum(line.qty_remaining) as amount,
                        uom.name as uom,
                        uos.name as uos,
                        line.lot as lot,
                        line.attribute_id as attribute_id,
                        '在库' as status,
                        wh.name as warehouse,
                        max(line.date) as date,
                        sum(line.qty_remaining) as qty,
                        sum(line.uos_qty_remaining) as uos_qty
                FROM wh_move_line line
                    LEFT JOIN goods goods ON line.goods_id = goods.id
                        LEFT JOIN uom uom ON goods.uom_id = uom.id
                        LEFT JOIN uom uos ON goods.uos_id = uos.id
                    LEFT JOIN warehouse wh ON line.warehouse_dest_id = wh.id
                WHERE line.lot IS NOT NULL
                  AND line.qty_remaining > 0
                  AND wh.type = 'stock'
                  AND line.state = 'done'
                GROUP BY goods.code, goods, uom, uos, lot, attribute_id, warehouse, goods.cost
                ORDER BY goods, lot, warehouse
            )
        """)
 |