|  | 
from datetime import date, timedelta
from odoo import models, fields, api
class ReportStockReceiptDeliveryWizard(models.TransientModel):
    _name = 'report.stock.receipt.delivery.wizard'
    _description = '商品收发汇总表向导'
    @api.model
    def _default_date_start(self):
        return date.today().replace(day=1).strftime('%Y-%m-%d')
    @api.model
    def _default_date_end(self):
        now = date.today()
        next_month = now.month == 12 and now.replace(year=now.year + 1,
                                                     month=1, day=1) or now.replace(month=now.month + 1, day=1)
        return (next_month - timedelta(days=1)).strftime('%Y-%m-%d')
    date_start = fields.Date('开始日期', default=_default_date_start,
                             help='查看本次报表的开始日期')
    date_end = fields.Date('结束日期', default=_default_date_end,
                           help='查看本次报表的结束日期')
    warehouse_id = fields.Many2one('warehouse', '仓库',
                                   help='本次报表查看的仓库')
    goods_id = fields.Many2one('goods', '商品',
                               help='本次报表查看的商品')
    company_id = fields.Many2one(
        'res.company',
        string='公司',
        change_default=True,
        default=lambda self: self.env.company)
    @api.onchange('date_start', 'date_end')
    def onchange_date(self):
        if self.date_start and self.date_end and self.date_end < self.date_start:
            return {'warning': {
                'title': '错误',
                'message': '结束日期不可以小于开始日期'
            }, 'value': {'date_end': self.date_start}}
        return {}
    def open_report(self):
        delivery = self.env['report.stock.receipt.delivery']
        result = delivery.collect_data_by_sql(self)
        return {
            'type': 'ir.actions.act_window',
            'res_model': 'report.stock.receipt.delivery',
            'view_mode': 'list',
            'target': 'main',
            'name': '商品收发汇总表 %s 至  %s ' % (self.date_start, self.date_end),
            'context': {'date_end': self.date_end,
                        'date_start': self.date_start},
            'domain': [('id', 'in', delivery.create(result).ids)],
            'limit': 65535,
        }
 |