IPB

Здравствуйте, гость ( Вход | Регистрация )

> Frontol 4: прекращение поддержки. Восстановление лицензий

С 1 июля 2017 прекращена поддержка программного продукта Frontol 4
С 9 ноября 2019 прекращена поддержка программного продукта Frontol 5
пруф

С 3 августа 2017 восстановление лицензий производится ТОЛЬКО через СервисДеск
Просьба обращаться к партнерам компании для оформления заявок в СД

Примеры создания сценариев с помощью языка Java Script
АТОЛ: Герман Бой...
сообщение 18.6.2007, 14:44
Сообщение #1


ГК «АТОЛ»
********

Группа: Главные администраторы
Сообщений: 4 002
Регистрация: 15.12.2004
Из: Москва
Пользователь №: 3



Пример №1. Использование параметра E (идентификатор события) и получение значений счетчиков в сценарии

// Пример использования идентификатора события в сценарии
function EventToText(E)
{
switch (E) {
case 1: return "Открытие чека";
case 2: return "Добавление позиции";
case 3: return "Редактирование позиции";
case 4: return "Закрытие чека";
case 5: return "Отмена чека";
case 6: return "Ввод оплаты";
case 7: return "Сторно оплаты";
case 8: return "Ввод карты";
case 9: return "Отмена карты";
case 10: return "Ввод клиента";
case 11: return "Отмена клиента";
case 12: return "Ввод ручной скидки";
}
}

// Пример обращения к значениям счетчиков в сценарии
function CountersToText(RO)
{
Text = "Всего счетчиков " + RO.Counter.Count + "\n";
Text += "Ин." +
"\tКод" +
"\tВида"+
"\tЗначение" +
"\t\"Наименование Вида\"\n";
for (RO.Counter.Index = 1; RO.Counter.Index <= RO.Counter.Count; RO.Counter.Index++)
Text += RO.Counter.Index +
"\t" + RO.Counter.Code + // Код счетчика
"\t" + RO.Counter.TypeCode + // Код вида счетчика
"\t" + RO.Counter.Value + // Значение счетчика
"\t\"" + RO.Counter.TypeName + // Наименование вида счетчика
"\"\n";
return Text;
}

// Функция, с предопределенным именем, которая будет вызвана Frontol в начале обработки события
function BeforeAct(AO, RO, E)
{
Text = "До события " + EventToText(E) + "\n" + CountersToText(RO);
AO.ShowMessage(Text); // Вывод сообщения на экран кассира
}

// Функция, с предопределенным именем, которая будет вызвана Frontol в конце обработки события
function AfterAct(AO, RO, E)
{
Text = "После события " + EventToText(E) + "\n" + CountersToText(RO);
AO.ShowMessage(Text);
}



Пример №2. Учет накоплений и скидка на их основе

Создаем сценарий на момент действия Закрытие чека

function BeforeAct(AO, RO, E)
{
}
function AfterAct(AO, RO, E)
{
RO.Counter.AddValueByTypeCode(8, RO.SummWD * 0.0004);

/* 8 - код вида счетчиков в котором будут учитываться накопления.
В этом виде должны быть счетчики, привязанные к клиентам.
RO.SummWD - это сумма чека.
0.004 - например будем накапливать по 0.4% с чека. */
}




Создаем Объект скидки, в котором указываем этот сценарий.

Теперь, в зависимости от величины накоплений, сделаем разные скидки:

Создаем Группу условий, в которой будут Условия с разными ставками.

В Условии задаем на закладке Счетчики диапазон значений и вид счетчика.

При наличии в чеке счетчика требуемого вида со значением удовлетворяющим диапазону будет начислена заданная ставкой скидка. Для этой группы условий тоже необходим Объект скидки (можно использовать тот же самый что и для сценария).


--------------------
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
 
Открыть тему
Ответов
POUL
сообщение 28.10.2021, 14:11
Сообщение #2


Магистр слова
********

Группа: Партнеры
Сообщений: 14 890
Регистрация: 17.2.2007
Из: Москва
Пользователь №: 10 778



В JS нет встроенных функций хеширования, включая MD5, поэтому придется использовать сторонние реализации. Далее приведен пример, функция работает с UTF-8 и кириллическими символами.

Код
var MD5 = function(d) {
    d = unescape(encodeURIComponent(d));
    result = M(V(Y(X(d), 8 * d.length)));
    return result.toLowerCase();
};

function M(d) {
    for (var _, m = "0123456789ABCDEF", f = "", r = 0; r < d.length; r++) _ = d.charCodeAt(r), f += m.charAt(_ >>> 4 & 15) + m.charAt(15 & _);
    return f
}

function X(d) {
    for (var _ = Array(d.length >> 2), m = 0; m < _.length; m++) _[m] = 0;
    for (m = 0; m < 8 * d.length; m += 8) _[m >> 5] |= (255 & d.charCodeAt(m / 8)) << m % 32;
    return _
}

function V(d) {
    for (var _ = "", m = 0; m < 32 * d.length; m += 8) _ += String.fromCharCode(d[m >> 5] >>> m % 32 & 255);
    return _
}

function Y(d, _) {
    d[_ >> 5] |= 128 << _ % 32, d[14 + (_ + 64 >>> 9 << 4)] = _;
    for (var m = 1732584193, f = -271733879, r = -1732584194, i = 271733878, n = 0; n < d.length; n += 16) {
        var h = m,
            t = f,
            g = r,
            e = i;
        f = md5_ii(f = md5_ii(f = md5_ii(f = md5_ii(f = md5_hh(f = md5_hh(f = md5_hh(f = md5_hh(f = md5_gg(f = md5_gg(f = md5_gg(f = md5_gg(f = md5_ff(f = md5_ff(f = md5_ff(f = md5_ff(f, r = md5_ff(r, i = md5_ff(i, m = md5_ff(m, f, r, i, d[n + 0], 7, -680876936), f, r, d[n + 1], 12, -389564586), m, f, d[n + 2], 17, 606105819), i, m, d[n + 3], 22, -1044525330), r = md5_ff(r, i = md5_ff(i, m = md5_ff(m, f, r, i, d[n + 4], 7, -176418897), f, r, d[n + 5], 12, 1200080426), m, f, d[n + 6], 17, -1473231341), i, m, d[n + 7], 22, -45705983), r = md5_ff(r, i = md5_ff(i, m = md5_ff(m, f, r, i, d[n + 8], 7, 1770035416), f, r, d[n + 9], 12, -1958414417), m, f, d[n + 10], 17, -42063), i, m, d[n + 11], 22, -1990404162), r = md5_ff(r, i = md5_ff(i, m = md5_ff(m, f, r, i, d[n + 12], 7, 1804603682), f, r, d[n + 13], 12, -40341101), m, f, d[n + 14], 17, -1502002290), i, m, d[n + 15], 22, 1236535329), r = md5_gg(r, i = md5_gg(i, m = md5_gg(m, f, r, i, d[n + 1], 5, -165796510), f, r, d[n + 6], 9, -1069501632), m, f, d[n + 11], 14, 643717713), i, m, d[n + 0], 20, -373897302), r = md5_gg(r, i = md5_gg(i, m = md5_gg(m, f, r, i, d[n + 5], 5, -701558691), f, r, d[n + 10], 9, 38016083), m, f, d[n + 15], 14, -660478335), i, m, d[n + 4], 20, -405537848), r = md5_gg(r, i = md5_gg(i, m = md5_gg(m, f, r, i, d[n + 9], 5, 568446438), f, r, d[n + 14], 9, -1019803690), m, f, d[n + 3], 14, -187363961), i, m, d[n + 8], 20, 1163531501), r = md5_gg(r, i = md5_gg(i, m = md5_gg(m, f, r, i, d[n + 13], 5, -1444681467), f, r, d[n + 2], 9, -51403784), m, f, d[n + 7], 14, 1735328473), i, m, d[n + 12], 20, -1926607734), r = md5_hh(r, i = md5_hh(i, m = md5_hh(m, f, r, i, d[n + 5], 4, -378558), f, r, d[n + 8], 11, -2022574463), m, f, d[n + 11], 16, 1839030562), i, m, d[n + 14], 23, -35309556), r = md5_hh(r, i = md5_hh(i, m = md5_hh(m, f, r, i, d[n + 1], 4, -1530992060), f, r, d[n + 4], 11, 1272893353), m, f, d[n + 7], 16, -155497632), i, m, d[n + 10], 23, -1094730640), r = md5_hh(r, i = md5_hh(i, m = md5_hh(m, f, r, i, d[n + 13], 4, 681279174), f, r, d[n + 0], 11, -358537222), m, f, d[n + 3], 16, -722521979), i, m, d[n + 6], 23, 76029189), r = md5_hh(r, i = md5_hh(i, m = md5_hh(m, f, r, i, d[n + 9], 4, -640364487), f, r, d[n + 12], 11, -421815835), m, f, d[n + 15], 16, 530742520), i, m, d[n + 2], 23, -995338651), r = md5_ii(r, i = md5_ii(i, m = md5_ii(m, f, r, i, d[n + 0], 6, -198630844), f, r, d[n + 7], 10, 1126891415), m, f, d[n + 14], 15, -1416354905), i, m, d[n + 5], 21, -57434055), r = md5_ii(r, i = md5_ii(i, m = md5_ii(m, f, r, i, d[n + 12], 6, 1700485571), f, r, d[n + 3], 10, -1894986606), m, f, d[n + 10], 15, -1051523), i, m, d[n + 1], 21, -2054922799), r = md5_ii(r, i = md5_ii(i, m = md5_ii(m, f, r, i, d[n + 8], 6, 1873313359), f, r, d[n + 15], 10, -30611744), m, f, d[n + 6], 15, -1560198380), i, m, d[n + 13], 21, 1309151649), r = md5_ii(r, i = md5_ii(i, m = md5_ii(m, f, r, i, d[n + 4], 6, -145523070), f, r, d[n + 11], 10, -1120210379), m, f, d[n + 2], 15, 718787259), i, m, d[n + 9], 21, -343485551), m = safe_add(m, h), f = safe_add(f, t), r = safe_add(r, g), i = safe_add(i, e)
    }
    return Array(m, f, r, i)
}

function md5_cmn(d, _, m, f, r, i) {
    return safe_add(bit_rol(safe_add(safe_add(_, d), safe_add(f, i)), r), m)
}

function md5_ff(d, _, m, f, r, i, n) {
    return md5_cmn(_ & m | ~_ & f, d, _, r, i, n)
}

function md5_gg(d, _, m, f, r, i, n) {
    return md5_cmn(_ & f | m & ~f, d, _, r, i, n)
}

function md5_hh(d, _, m, f, r, i, n) {
    return md5_cmn(_ ^ m ^ f, d, _, r, i, n)
}

function md5_ii(d, _, m, f, r, i, n) {
    return md5_cmn(m ^ (_ | ~f), d, _, r, i, n)
}

function safe_add(d, _) {
    var m = (65535 & d) + (65535 & _);
    return (d >> 16) + (_ >> 16) + (m >> 16) << 16 | 65535 & m
}

function bit_rol(d, _) {
    return d << _ | d >>> 32 - _
}


Пример использования:

var result = MD5('Lorem Ipsum is simply dummy text of the printing');
console.log(result);

var result = MD5('Прародителем текста-рыбы является известный "Lorem Ipsum"');
console.log(result);


--------------------
FireBird Service Manager
Пишу скрипты за еду. Интегрирую в программы лояльности.
ООО "B2C"

Если долго вглядываться в докуметацию, она начнет давать ответы на вопросы
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения

Сообщений в этой теме
- АТОЛ: Герман Бойцов   Примеры создания сценариев с помощью языка Java Script   18.6.2007, 14:44
- - POUL   Позновательно. Предложение выкладывать сюда скрипт...   18.6.2007, 14:55
- - POUL   При введении бонусной карты скрипт подсчитывает ма...   21.6.2007, 16:23
- - POUL   Программировать надо. На Ява-скрbпте Кодfunction...   26.2.2008, 23:39
- - POUL   скрипт проверки наличия введенной карты Кодfuncti...   27.11.2008, 11:06
- - POUL   Скрипты для бонусной программы. Общая идея: Клиен...   1.5.2009, 22:08
- - Владимир Д.   Интересная идея! +1   2.5.2009, 16:27
- - Лаврухин Алексей   Пример решенной задачи с помощью скриптов: http://...   3.12.2009, 16:33
- - Andrey_malin   Думаю будет полезно привести классический пример р...   7.4.2010, 3:15
- - awerta   Может кому понадобиться! Скидка на позицию, ра...   2.12.2010, 17:43
- - АТОЛ: Царюков Роман   желательно делать комментарии в коде.... для чего,...   2.12.2010, 17:46
- - POUL   Вот этот момент совсем не понял: Цитатаif (RO.Pos...   3.12.2010, 0:18
- - 80Serg   Здравствуйте, товарищи. На нашем предприятии возни...   16.9.2011, 1:41
- - POUL   Для начинающих ссылка на адекватный справочник по ...   8.12.2011, 23:15
- - Peter1234   Мой первый скрипт. Надеюсь, кому-то пригодится. Пл...   21.5.2012, 16:05
- - POUL   Глубокоуважаемые коллеги!!! Убедитель...   1.11.2012, 20:14
- - Владимир Шалаев   Существует группа карт "Накопительные карты...   14.11.2012, 10:41
- - POUL   Такие вещи надо писать в AfterAct Потому что если ...   14.11.2012, 13:35
|- - Владимир Шалаев   Цитата(POUL @ 14.11.2012, 14:35) Такие ве...   15.11.2012, 10:25
- - POUL   Ваш Кэп.   15.11.2012, 10:38
- - Лазарев Максим Викторович   Скрипт, блокирующий продажу алкоголя с 22.00 до 10...   25.1.2013, 13:18
|- - Romeo   Цитата(Лазарев Максим Викторович @ 25.1.2013,...   18.8.2014, 14:51
- - mozer   Скрипт организует скидку 20% на каждую 2-ю позицию...   7.2.2013, 4:20
|- - Вованыч   Цитата(mozer @ 7.2.2013, 5:20) Скрипт орг...   11.12.2013, 19:02
||- - АТОЛ: Средних Владимир   Цитата(Вованыч @ 11.12.2013, 20:02) Очень...   12.12.2013, 12:02
||- - Вованыч   Цитата(АТОЛ: Средних Владимир @ 12.12.201...   12.12.2013, 12:40
|- - Анри   Цитата(mozer @ 7.2.2013, 5:20) Скрипт орг...   20.7.2019, 3:47
- - ДмитрийН   Подскажите пожалуйста, а как написать скрипт чтобы...   23.1.2014, 12:23
|- - АТОЛ: Царюков Роман   Цитата(ДмитрийН @ 23.1.2014, 13:23) Подск...   23.1.2014, 12:25
- - POUL   Во Фронтоле начиная с релиза, по-моему 4.9.7 (могу...   21.3.2014, 20:46
|- - ботир   Цитата(POUL @ 21.3.2014, 22:46) Во Фронто...   8.4.2017, 21:14
- - АТОЛ: Царюков Роман   а с чего Вы взяли, что у них есть такие товары? ск...   18.8.2014, 14:56
- - АТОЛ: Царюков Роман   Курс доллара. Пример работы с XML   20.3.2015, 8:50
- - АТОЛ: Царюков Роман   Научим фронтол разговаривать!!!   20.3.2015, 15:15
- - АТОЛ: Царюков Роман   Информеры Яндекс еще один пример с XML   15.5.2015, 17:02
- - Волгоград.Инфософт   Задача: Перед печатью картинки на ФР проверить при...   11.5.2016, 13:15
- - maxdale   есть справочные/обучающие материалы скриптам для F...   19.7.2016, 12:25
|- - АТОЛ: Царюков Роман   Цитата(maxdale @ 19.7.2016, 12:25) есть с...   19.7.2016, 12:35
- - Волгоград.Инфософт   Функция, возвращающая путь к БД Frontol Описание:...   13.9.2016, 12:06
- - АТОЛ: Царюков Роман   в каком каталоге вы ищите файл Frontol.ini ? для к...   13.9.2016, 12:08
|- - Волгоград.Инфософт   Цитата(АТОЛ: Царюков Роман @ 13.9.2016, 1...   13.9.2016, 13:59
- - POUL   del   13.9.2016, 12:14
- - Волгоград.Инфософт   Цитата(АТОЛ: Царюков Роман @ 13.9.2016, 1...   13.9.2016, 14:10
|- - АТОЛ: Царюков Роман   Цитата(Волгоград.Инфософт @ 13.9.2016, 14...   13.9.2016, 15:06
- - Волгоград.Инфософт   Функция GetPathDBFrontol5(cPathVariant) - получени...   15.9.2016, 12:16
- - Волгоград.Инфософт   коллеги, оформил полезные функции для Frontol 5 в ...   20.9.2016, 11:55
- - POUL   если не сложно, выложите пожалуйста в виде програм...   20.9.2016, 12:44
- - Волгоград.Инфософт   коллеги, позволю себе опубликовать тут краткую инс...   20.9.2016, 14:26
|- - zenik   Цитата(Волгоград.Инфософт @ 20.9.2016, 14...   20.9.2016, 15:56
- - Волгоград.Инфософт   добавлена функция формирования строки жирным шрифт...   21.9.2016, 16:07
- - Евдокимов Сергей   Сценарий для 4 Фронтола. Он делает запрограммирова...   26.10.2016, 13:01
- - Волгоград.Инфософт   пополнил библиотеку полезных функций для FronTol5 ...   20.11.2016, 13:42
- - Калашников Алексей   Функция, которая возвращает строку подключения к б...   23.11.2016, 12:19
- - Волгоград.Инфософт   Цитата(Калашников Алексей @ 23.11.2016, 13...   23.11.2016, 18:36
- - Калашников Алексей   В предыдущем варианте функция неверно определяла п...   2.12.2016, 9:47
|- - Волгоград.Инфософт   Цитата(Калашников Алексей @ 2.12.2016, 11...   2.12.2016, 10:15
|- - Калашников Алексей   Цитата(Волгоград.Инфософт @ 2.12.2016, 10...   2.12.2016, 15:46
|- - Калашников Алексей   Пока не придумал ничего лучше, чем пробовать переб...   2.12.2016, 15:58
|- - Волгоград.Инфософт   Цитата(Калашников Алексей @ 2.12.2016, 17...   2.12.2016, 16:34
- - zenik   Брошу свои 5 копеек. Итак, как мы выяснили, ЕГАИС ...   28.12.2016, 15:01
- - николай1974   Контроль акцизок при продаже алкоголя - из учетной...   18.1.2017, 13:49
|- - Lis_Domino   Николай а для 4-го Фронтола можете написать такую ...   10.3.2017, 15:48
- - Lis_Domino   Цитата(николай1974 @ 18.1.2017, 14:49) Ко...   13.3.2017, 12:51
- - Lis_Domino   Цитата(Lis_Domino @ 13.3.2017, 13:51) нер...   13.3.2017, 15:26
- - POUL   в 5м фронтоле это недоступно   8.4.2017, 21:39
- - POUL   Проверка дня рождения покупателя перед вводом опла...   27.6.2017, 9:36
|- - Сокол Олег   Цитата(POUL @ 27.6.2017, 9:36) Проверка д...   17.12.2017, 7:54
- - Сергей Егоричев   Внесу свои 5 копеек Код//Возвращает дату в виде с...   4.7.2017, 11:39
- - АТОЛ: Царюков Роман   FastReport. Печать отчетов на ККМ   22.8.2017, 13:29
- - POUL   в руководстве интегратора есть пример работы с Dia...   17.12.2017, 12:01
- - АТОЛ: Царюков Роман   Работа с Telegram   15.1.2018, 11:53
- - POUL   Запрет продажи алкоголя для Фронтол5 Работает как ...   5.2.2018, 23:34
- - POUL   Проверка совершеннолетия покупателя алкоголя 2 ва...   20.2.2018, 22:51
- - Анри   Или может кто подскажет, как сделать продажу 3го т...   20.7.2019, 4:46
|- - Виктор Франко   Цитата(POUL @ 27.6.2017, 10:36) Проверка ...   5.12.2019, 23:20
- - POUL   создайте свою тему   21.7.2019, 20:50
- - АТОЛ: Средних Владимир   Как работать с JSON во Фронтоле. Из-за ограничения...   7.4.2020, 17:28
- - POUL   видел в некоторых сценариях, как люди как-то иначе...   8.4.2020, 15:51
|- - АТОЛ: Царюков Роман   Цитата(POUL @ 8.4.2020, 15:51) видел в не...   8.4.2020, 16:01
- - POUL   Вся эта конструкция валится на релизе 6.8.3 Если в...   6.10.2020, 12:46
- - АТОЛ: Царюков Роман   http://forum.atol.ru/index.php?showtopic=6...st...   6.10.2020, 12:49
- - POUL   Проблему удалось обойти, используя обработчик JSON...   6.10.2020, 12:50
|- - zenik   Цитата(POUL @ 6.10.2020, 12:50) var respo...   7.6.2021, 15:35
- - POUL   Обработчик Base64: Кодvar Base64={_keyStr:...   6.10.2020, 14:49
- - POUL   во фронтоле вроде это есть   7.6.2021, 16:39
|- - zenik   Цитата(POUL @ 7.6.2021, 16:39) во фронтол...   7.6.2021, 16:43
- - POUL   есть также проверка силами УТМ но проблема в том, ...   7.6.2021, 17:00
|- - zenik   Цитата(POUL @ 7.6.2021, 17:00) есть также...   7.6.2021, 17:16
- - zenik   Код if ( responseText.owner != true ...   8.6.2021, 10:45
- - zenik   Поправка 1: что бы при ошибке было окно "с кн...   8.6.2021, 14:01
- - zenik   ЫшО одна поправка: Кодfunction controlPosition...   10.6.2021, 20:01
- - zenik   Сегодня, после нескольких дней успешной работы скр...   11.6.2021, 18:38
- - gudvin   а можно ли как то реализовать функционал, при счит...   28.6.2021, 21:53
- - АТОЛ: Царюков Роман   У вас в DM сигарет имеется дата? И как бы этот ра...   28.6.2021, 22:00
|- - gudvin   Цитата(АТОЛ: Царюков Роман @ 28.6.2021, 2...   28.6.2021, 22:21
- - АТОЛ: Царюков Роман   В этой теме спокойно можно решения свои готовые вы...   28.6.2021, 22:22
- - zenik   Сценарий запрещающий добавлять оплаты в "нуле...   2.7.2021, 11:57
- - POUL   В JS нет встроенных функций хеширования, включая M...   28.10.2021, 14:11


Добавить ответ в эту темуОткрыть тему
15 чел. читают эту тему (гостей: 15, скрытых пользователей: 0)
Пользователей: 0

 



RSS Текстовая версия Сейчас: 2.12.2022, 0:13
 Яндекс цитирования  Rambler's Top100