在一个2任意字段odoo12中对所选记录求和



i有以下型号

class WorkStation(models.Model):
_name = 'dlc.workstation'
_description = 'list of work station'

production_ids = fields.One2many(comodel_name="dlc.pdetails", inverse_name="workstation_id", string="Production", required=False, )
sum_production = fields.Integer(string="Production total",  compute='_dlc_production', required=False,)


@api.one
@api.depends('production_ids.total', )
def _dlc_production(self):
self.sum_production = sum(production.total for production in self.production_ids)
"""
@api.depends() should contain all fields that will be used in the calculations.
"""
pass
class ProductionData(models.Model):
_name = 'dlc.pdata'
_rec_name = 'start_date'
_description = 'New Description'

name = fields.Char()
start_date = fields.Date(string="From", required=False, )
end_date = fields.Date(string="To", required=False,)
production_details_ids = fields.One2many(comodel_name="dlc.pdetails", inverse_name="production_data_id", string="Production Details"
class ProductionDetails(models.Model):
_name = 'dlc.pdetails'
_rec_name = 'workstation_id'

workstation_id = fields.Many2one(comodel_name="dlc.workstation", string="DLC", required=False, )
production_data_id = fields.Many2one(comodel_name="dlc.pdata", string="Production", required=False, )
card_type = fields.Selection(string="Card Type",
selection=[('Temporary', 'Temporary'), ('Office Total', 'Office Total'),
('Permanent', 'Permanent')], required=False, )
date = fields.Date(string="Date", required=False, related='production_data_id.start_date')
total = fields.Integer(string="TOTAL", required=False, )

在这个字段中,sumproduction给了我每个工作站的总产量,但现在我想要过去7天的总产量。

只需过滤用于求和的production_ids列表。

from datetime import date

@api.one
@api.depends('production_ids.total', )
def _dlc_production(self):
production_list = self.production_ids.filter(lambda r: r.date and (date.today() - timedelta(days=7)) <= r.date <= date.today())
self.sum_production = sum(production.total for production in production_list)

现在如果你想有整个生产的总和

workstation_list = self.env['dlc.workstation'].search([])
production_list = workstation_list.mapped('production_ids').filter(lambda r: r.date and (date.today() - timedelta(days=7)) <= r.date <= date.today())

相关内容

  • 没有找到相关文章

最新更新