36 lines
1.3 KiB
Python
36 lines
1.3 KiB
Python
# -*- coding: utf-8 -*-
|
|
from odoo import models, fields
|
|
from odoo.tools.safe_eval import safe_eval
|
|
|
|
class HypergraphValue(models.Model): #значения. Решил объединить временные ряды
|
|
_name = 'hg.value'
|
|
name = fields.Char('Имя')
|
|
|
|
value_float_actual = fields.Float(string='Факт')
|
|
value_float_plan = fields.Float(string='План')
|
|
date_due = fields.Date(string='Дата', required=True)
|
|
index_id = fields.Many2one(comodel_name='hg.index', string='Индекс')
|
|
type = fields.Selection(
|
|
[
|
|
('alone', 'Простой'),
|
|
('formula', 'Формула')
|
|
],
|
|
string='Тип',
|
|
default='alone',
|
|
required=True
|
|
)
|
|
formula = fields.Char(string='Формула')
|
|
|
|
def calc(self):
|
|
#метод, который вычисляет значение: или по формуле или по связанным
|
|
for rec in self:
|
|
if rec.type == 'formula':
|
|
localdict = {
|
|
'node_value': rec,
|
|
'node_index': rec.index_id,
|
|
'datatime': fields.Date.today(),
|
|
}
|
|
result = safe_eval(rec.formula or '0', localdict, mode="eval")
|
|
rec.value_float_actual = result
|
|
return True
|