0
Answered

Indexation of tariffs

Иван 4 years ago in Dashboard and Widgets updated by Support Manager 2 months ago 6

Electricity tariffs change every six months. How to change the current tariff is clear, but in this case the statistics for previous periods will be recalculated?! How do you leave history untouched? Otherwise, the true expenses for past periods will not be correct!

Answer

Answer
Answered

To calculate a new tariff without losing data for the previous period, you need to make a complex expression.

- In the widget settings, in the Arithmetic operation select f(x)

- click on the Edit icon and set the conditions:


d.TIME < new Date(2022,0,1) ? d.Ch1*0.05 :
d.TIME < new Date(2023,0,1) ? d.Ch1*0.06 :
d.Ch1*0.07;

where

new Date(2023,0,1) is January 1, 2023

Image 1547

before January 1, 2022 at the rate of 0.05

before January 1, 2023 at the rate of 0.06

everything will continue at the rate of 0.07


Replace the values with your tariff accordingly.


With each tariff change, you can add a new line of conditions in the same format new Date(Year, Month, Day).

Note that the month starts at 0. (0 - January, 1 - February, ... , 11 - December.)

In discussion

Добрый день.

Действительно, если тариф изменить, то история будет посчитана по новому тарифу, т.к. все вычисления делаются на лету и базе не сохраняются, но решение есть. В меню "Арифметическая операция" использовать f(x) и добавлять по фрагменту простого кода при изменении тарифов.

Сразу посмотрим на примере:

- Есть тариф по объему, название в списке данных устройства [TV29]
Название данных отображается в колонке Данные в списке виртуальных значений.

- Допустим:

с 1 сентября 2019 года тарифы выросли на 10%

с 1 января 2020 года тарифы выросли еще на 15%

- Чтобы не плодить каждый раз новый тариф будем просто умножать на коэффициенты *1.1 и *1.15

- В настройках виджета в меню Арифметическая операция выбираем f(x) и нажимаем иконку Изменить

- При создании собственных функций можно использовать любые данные с устройства в том числе время [d.TIME] и наш тариф [TV29]. Весь список доступных для расчетов данных обычно отображен слева от окна редактирования кода.

Для определения времени, когда надо использовать соответствующий тариф, надо добавить проверку на дату.

Для вычисления нужной даты используем функцию:

new Date(ГГГГ, ММ, ДД)
ГГГГ - год,
ММ - месяц от 0 до 11 (обратите внимание на порядковый номер месяца, январь - 0, февраль - 1 и тд)
ДД - день от 1 до 31

Итоговая функция по нашим условиям примет вид:

d.TIME < new Date(2019,8,1) ? d.TV29 :
d.TIME < new Date(2020,0,1) ? d.TV29*1.1 :
d.TV29 * 1.1 * 1.15;

В первой строке используется тариф до 01.09.2019, т.е. просто d.TV29

Во второй строке тариф до 01.01.2020, на 10% дороже, тариф умножен на коэффициент 1.1

В третьей строке текущий тариф, еще на 15% дороже.

Image 671

В будущем, например, если с 01.07.2020 цены вырастут еще на 5% , то надо вставить соответствующую строку с условием и подкорректировать текущий тариф в последней строке кода:

d.TIME < new Date(2019,8,1) ? d.TV29 :
d.TIME < new Date(2020,0,1) ? d.TV29*1.1 : d.TIME < new Date(2020,6,1) ? d.TV29*1.1*1.15: d.TV29 * 1.1 * 1.15 * 1.05;

Готово, теперь на графиках и в таблицах будут актуальные затраты в соответствии с периодом.

А, що у даному прикладі значить "наш тариф [TV29]" ? 

Де ми прописуємо наш базовий тариф на нашому пристрої, щоб потім ми його індексували?

Це назва вашого створеного тарифу для арифметичних операцій.

В меню Віртуальні, стовпчик ДАНІ

спасибо! Что за язык используется? (например, что значит ?  : и тд)

Синтаксис JavaScript, обозначает следующее:

УСЛОВИЕ ? ДЕЙСТВИЕ_ЕСЛИ_ДА : ДЕЙСТВИЕ_ЕСЛИ_НЕТ;

В нашем случае на месте ДЕЙСТВИЕ_ЕСЛИ_НЕТ вложено новое условие, затем еще одно условие и т.д.

Answer
Answered

To calculate a new tariff without losing data for the previous period, you need to make a complex expression.

- In the widget settings, in the Arithmetic operation select f(x)

- click on the Edit icon and set the conditions:


d.TIME < new Date(2022,0,1) ? d.Ch1*0.05 :
d.TIME < new Date(2023,0,1) ? d.Ch1*0.06 :
d.Ch1*0.07;

where

new Date(2023,0,1) is January 1, 2023

Image 1547

before January 1, 2022 at the rate of 0.05

before January 1, 2023 at the rate of 0.06

everything will continue at the rate of 0.07


Replace the values with your tariff accordingly.


With each tariff change, you can add a new line of conditions in the same format new Date(Year, Month, Day).

Note that the month starts at 0. (0 - January, 1 - February, ... , 11 - December.)