# -*- 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
