<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="uk">
	<id>https:///index.php?action=history&amp;feed=atom&amp;title=%D0%A3%D1%81%D0%BB%D1%83%D0%B3%D0%B8_%D0%BF%D0%BE_%D1%84%D0%BE%D1%80%D0%BC%D1%83%D0%BB%D0%B5</id>
	<title>Услуги по формуле - Історія редагувань</title>
	<link rel="self" type="application/atom+xml" href="https:///index.php?action=history&amp;feed=atom&amp;title=%D0%A3%D1%81%D0%BB%D1%83%D0%B3%D0%B8_%D0%BF%D0%BE_%D1%84%D0%BE%D1%80%D0%BC%D1%83%D0%BB%D0%B5"/>
	<link rel="alternate" type="text/html" href=""/>
	<updated>2026-05-05T13:37:25Z</updated>
	<subtitle>Історія редагувань цієї сторінки в вікі</subtitle>
	<generator>MediaWiki 1.40.0</generator>
	<entry>
		<id></id>
		<title>Sv: /* Сложные формулы */</title>
		<link rel="alternate" type="text/html" href=""/>
		<updated>2023-05-04T15:27:19Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Сложные формулы&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Нова сторінка&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Модуль «Услуги по формуле» это тип услуг, в котором стомость нефиксированная и вычисляется по формуле, в которой могут быть задействованы дополнительные поля учетной записи абонента.&lt;br /&gt;
&lt;br /&gt;
К примеру (абстрактный пример только для демонстрации возможностей):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
расстояние до абонента в метрах * 10 грн/метр + (количество роутеров - количество в резерве) * 15 грн/роутер&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Допустим, эти данные сохраняются в таких полях:&lt;br /&gt;
* расстояние до абонента в метрах: _distance&lt;br /&gt;
* количество роутеров: _routers&lt;br /&gt;
* количество роутеров в резерве: _reserve_routers&lt;br /&gt;
 &lt;br /&gt;
Таким образом, в услуге данная формула будет записана так:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
_distance * 10 + (_routers - _reserve_routers) * 15&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Также в услуге есть возможность указать шаблон комментария к платежу-списанию за услугу, например:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
До вас _distance метров * 10 грн/метр + у вас (_routers - _reserve_routers) роутеров * 15 грн/роутер&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Тогда комментарий у платежа будет:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
До вас 150 метров * 10 грн/метр + у вас (7 - 2) роутеров * 15 грн/роутер&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В этом комментарии смущает &amp;quot;7 - 2&amp;quot;, почему бы не написать сразу 5? Для этого в шаблоне необходимо использовать EVAL[..]:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
До вас _distance метров * 10 грн/метр + у вас EVAL[(_routers - _reserve_routers)] роутеров * 15 грн/роутер&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
И результат будет таким:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
До вас 150 метров * 10 грн/метр + у вас 5 роутеров * 15 грн/роутер&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==sql после подключения услуги==&lt;br /&gt;
Имеется возможность после успешного подключения услуги выполнить любой sql. Естественно, данный sql должен быть каким-то образом связан с данным абонентом. Поэтому в шаблон sql необходимо добавить &amp;lt;nowiki&amp;gt;[[WHERE]]&amp;lt;/nowiki&amp;gt;. Например:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
UPDATE data0 d SET _cars_last = _cars, _cars='0' [[WHERE]]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Этот шаблон будет преобразован к такому sql:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
UPDATE data0 d SET _cars_last = _cars, _cars='0' WHERE d.uid = 123&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Сложные формулы==&lt;br /&gt;
&lt;br /&gt;
Если любое поле из _cars_a, _cars_b ненулевое, то результат = {_cars_a}*150 + {_cars_b}*75. Иначе = {_cars_a_last}*150 + {_cars_b_last}*75&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{_cars_a} || {_cars_b} ? {_cars_a}*150 + {_cars_b}*75 : {_cars_a_last}*150 + {_cars_b_last}*75&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В этом случае комметарий к платежу:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
EVAL[({_cars_a} || {_cars_b} ? {_cars_a} : {_cars_a_last})] автомобилей * 130 грн/авто + &lt;br /&gt;
EVAL[({_cars_a} || {_cars_b} ? {_cars_b} : {_cars_b_last})] автомобилей * 75 грн/авто&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
И sql:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
UPDATE data0 d SET&lt;br /&gt;
_cars_a_last = _cars_a, _cars_b_last = _cars_b, _cars_a='0', _cars_b = '0'&lt;br /&gt;
[[WHERE]] AND (_cars_a &amp;gt; 0 OR _cars_b &amp;gt; 0)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sv</name></author>
	</entry>
</feed>