# -*- coding: utf-8 -*- from odoo import models, fields, api class HypergraphIndex(models.Model): _name = 'hg.index' name = fields.Char(string='Название') internal_code_id = fields.Many2one(comodel_name='hg.index.code', string='Внутренний код') external_code = fields.Char(string='Внешний код') public = fields.Boolean(string='Публичный') value_ids = fields.One2many(comodel_name='hg.value', inverse_name='index_id', string='Значения') node_id = fields.Many2one(comodel_name='hg.node', string='Вершина графа') current_value = fields.Float(string='Текущее значение', compute='_compute_current_value', store=True) @api.depends('value_ids.date_due') def _compute_current_value(self): today = fields.Date.today() for rec in self: valid_values = rec.value_ids.filtered(lambda v: (v.date_due or today) <= today) if valid_values: last_value = valid_values.sorted(lambda r: r.date_due, reverse=True)[0] rec.current_value = last_value.value_float_actual else: rec.current_value = 0 def calc(self): #метод, который вычисляет значение: или по формуле или по связанным return True