IPB

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

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

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

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

4 страниц V  « < 2 3 4  
Добавить ответ в эту темуОткрыть тему
Примеры создания сценариев с помощью языка Java Script
Lis_Domino
сообщение 13.3.2017, 12:51
Сообщение #61


Участник
**

Группа: Пользователи
Сообщений: 185
Регистрация: 14.9.2010
Пользователь №: 22 355



Цитата(николай1974 @ 18.1.2017, 14:49) *
Контроль акцизок при продаже алкоголя - из учетной программы формируется файл, содержащий акцизные марки на остатке.
При добавлении позиции идет проверка наличия акцизки в файле.
В данном случае работает для документа Продажа, position.ware.type == 1 у нас - это алкоголь.

CODE
frontol.addEventListener("addPosition", "BeforeAddPosition", true);

function BeforeAddPosition(position)
{
doc = frontol.currentDocument;

if (frontol.currentDocument.type.code == 1)
{
if (position.ware.type == 1) {
flag = true;
desc = Open_Text_File('Путь к файлу');
MyResult1 = desc.split(";");
stamp = position.alcoStamp;

for (var index in MyResult1)
{
if (stamp == MyResult1[index])
{flag = false;}
}

if (flag)
{
frontol.actions.showError("Продажа товара запрещена! Отутствует акцизная марка на остатке !");
}
}
}

function Open_Text_File(file_path)
{
var t_file, data_file;
var FSO = new ActiveXObject("Scripting.FileSystemObject")
t_file=FSO.OpenTextFile(file_path, 1, false);
data_file = t_file.ReadAll();
t_file.Close();
return data_file;
}



неработает

Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Lis_Domino
сообщение 13.3.2017, 15:26
Сообщение #62


Участник
**

Группа: Пользователи
Сообщений: 185
Регистрация: 14.9.2010
Пользователь №: 22 355



Цитата(Lis_Domino @ 13.3.2017, 13:51) *
неработает


работает но только в таком виде: МИНУС - перебирает ";" - только по одной строке!

function init()
{
frontol.addEventListener("addPosition", "BeforeAddPosition", true);
}

function BeforeAddPosition(position)
{
doc = frontol.currentDocument;
if (frontol.currentDocument.type.code == 1)
{
if (position.ware.type == 1) {
flag = true;
fileName = "c:\\amarka.txt";
desc = Open_Text_File(fileName);
MyResult1 = desc.split(";");
stamp = position.alcoStamp;

for (var index in MyResult1)
{
if (stamp == MyResult1[index])
{flag = false;}
}

if (flag)
{
frontol.actions.showError("Продажа товара запрещена! Отсутствует акцизная марка на остатке !");
}
}
}
}

function Open_Text_File(file_path)
{
var t_file, data_file;
var FSO = new ActiveXObject("Scripting.FileSystemObject")
t_file=FSO.OpenTextFile(file_path, 1, false);
data_file = t_file.ReadAll();
t_file.Close();
return data_file;
}
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
ботир
сообщение 8.4.2017, 21:14
Сообщение #63


Участник
**

Группа: Пользователи
Сообщений: 112
Регистрация: 21.11.2012
Пользователь №: 64 504



Цитата(POUL @ 21.3.2014, 22:46) *
Во Фронтоле начиная с релиза, по-моему 4.9.7 (могу ошибаться) доступно чтение данных из базы путем SQL запросов без использования внешних провайдеров.
Пример использования:

Код
    QueryCode = "";
    QueryName = "";
    Query = CO.NewDBQuery;
    Query.SQL = "SELECT CODE, NAME FROM SPRT WHERE PARENTID IN (SELECT ID FROM SPRT WHERE ISWARE = 0 AND NAME = "Контрацепция") ORDER BY 1";
    Query.Open();
    if (Query.FieldByName("CODE") != null)
    {
     do
     {
      QueryCode = QueryCode + String (Query.FieldByName("CODE")) + "\n";
      QueryName = QueryName + String (Query.FieldByName("NAME")) + "\n";
      n = Query.RecordCount;
      Query.Next();
     }
     while (n != Query.RecordCount)
     Query.Close();
    }
    if (QueryCode == "" || QueryName == "")
    {
     Query.Close();
     AO.ShowError ("Результат запроса пуст!");
    }
    QueryCode = QueryCode.substring (0, QueryCode.length - 1);
    QueryName = QueryName.substring (0, QueryName.length - 1);

    SelectedSol = Number (AO.SelectString ("Выберите товар:", QueryName, QueryCode));


Повторюсь. Доступно только чтение данных.

Dobriy Vecher Tema ochen staraya no xotelos bi poprosit podskazat kak etot kod pishetsya dlya Frontol 5
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
POUL
сообщение 8.4.2017, 21:39
Сообщение #64


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

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



в 5м фронтоле это недоступно


--------------------
FireBird Service Manager
Пишу скрипты за еду.
ООО "B2C"
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
POUL
сообщение 27.6.2017, 9:36
Сообщение #65


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

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



Проверка дня рождения покупателя перед вводом оплаты при продаже алкоголя:

Код
function init()
{
frontol.addEventListener("addPayment","beforeAddPayment",true);  //Сообщение о проверке даты рождения клиента
}

function beforeAddPayment()
{
flag = false;

for (frontol.currentDocument.position.index = 1;
       frontol.currentDocument.position.index <=
       frontol.currentDocument.position.count;
       frontol.currentDocument.position.index ++)
{
  if (frontol.currentDocument.position.type == 1 || frontol.currentDocument.position.type == 1)
   flag = true;
}

if (flag)
{
  now = new Date ();
  day = String (now.getDate ());
  month = String (now.getMonth () + 1);
  year = String (now.getYear () - 18);

  if (day.length == 1)
   day = "0" + day;

  if (month.length == 1)
   month = "0" + month;

  frontol.actions.showMessage("Вы проверили, что дата рождения покупателя раньше, чем: \n" + day + "." + month + "." + year + "?", Button.YesNo + Icon.Question)
}
}


--------------------
FireBird Service Manager
Пишу скрипты за еду.
ООО "B2C"
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Сергей Егоричев
сообщение 4.7.2017, 11:39
Сообщение #66


Начинающий
*

Группа: Пользователи
Сообщений: 70
Регистрация: 12.5.2017
Пользователь №: 140 474



Внесу свои 5 копеек

Код
//Возвращает дату в виде строки, с которой можно продавать алкоголь +1 день
function getAdultDate() {
var date = new Date();
var day = date.getDate() + 1;    
var month = date.getMonth() + 1;    
var year = date.getFullYear() - 18;    
var arr = [31,28,31,30,31,30,31,31,30,31,30,31]; //массив с количеством дней в каждом месяце                                                                                                                  
if ( year%4 == 0 && year%4 != 0 )  arr[2] = 29;
if ( day > arr[month-1]) { day = 1; month++; if (month==13) {month = 1; year++; }}

if ( day < 10 ) day = "0" + day;
if ( month < 10 ) month = "0" + month;
var dateText = day + "." + month + "." + year;
return dateText;
}
//--------------------------------------------------------------------------------------------------------------------------
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
АТОЛ: Царюков Ро...
сообщение 22.8.2017, 13:29
Сообщение #67


Тех.поддержка
********

Группа: Администраторы
Сообщений: 45 918
Регистрация: 25.9.2008
Из: Москва
Пользователь №: 14 717



FastReport. Печать отчетов на ККМ


--------------------

ответы на 90% вопросов находятся в ДОКУМЕНТАЦИИ
еще 9% ответов ТУТ
P.S.: уважайте труд наших писателей - читайте мануалы
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Сокол Олег
сообщение 17.12.2017, 7:54
Сообщение #68


Прохожий


Группа: Новички
Сообщений: 6
Регистрация: 20.7.2016
Пользователь №: 124 670



Цитата(POUL @ 27.6.2017, 9:36) *
Проверка дня рождения покупателя перед вводом оплаты при продаже алкоголя:

Код
function init()
{
frontol.addEventListener("addPayment","beforeAddPayment",true);  //Сообщение о проверке даты рождения клиента
}

function beforeAddPayment()
{
flag = false;

for (frontol.currentDocument.position.index = 1;
       frontol.currentDocument.position.index <=
       frontol.currentDocument.position.count;
       frontol.currentDocument.position.index ++)
{
  if (frontol.currentDocument.position.type == 1 || frontol.currentDocument.position.type == 1)
   flag = true;
}

if (flag)
{
  now = new Date ();
  day = String (now.getDate ());
  month = String (now.getMonth () + 1);
  year = String (now.getYear () - 18);

  if (day.length == 1)
   day = "0" + day;

  if (month.length == 1)
   month = "0" + month;

  frontol.actions.showMessage("Вы проверили, что дата рождения покупателя раньше, чем: \n" + day + "." + month + "." + year + "?", Button.YesNo + Icon.Question)
}
}


frontol.currentDocument.position.ware.type == 1
Должно быть наверное так, иначе ошибка.

Но вот вопрос: как сделать, чтобы ответы влияли на что-то? То есть, при ответе НЕТ, оплата не применялась? Я как ни делаю, у меня при любом DialogResult вылезает frontol.actions.showError
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
POUL
сообщение 17.12.2017, 12:01
Сообщение #69


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

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



в руководстве интегратора есть пример работы с DialogResult


--------------------
FireBird Service Manager
Пишу скрипты за еду.
ООО "B2C"
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
АТОЛ: Царюков Ро...
сообщение 15.1.2018, 11:53
Сообщение #70


Тех.поддержка
********

Группа: Администраторы
Сообщений: 45 918
Регистрация: 25.9.2008
Из: Москва
Пользователь №: 14 717



Работа с Telegram


--------------------

ответы на 90% вопросов находятся в ДОКУМЕНТАЦИИ
еще 9% ответов ТУТ
P.S.: уважайте труд наших писателей - читайте мануалы
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
POUL
сообщение 5.2.2018, 23:34
Сообщение #71


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

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



Запрет продажи алкоголя для Фронтол5
Работает как для групп товаров, так и для вида номенклатуры
Нузно закомментировать ненужное и раскомментировать нужное

Код
function init()
{
frontol.addEventListener("addPosition", "beforeAddPosition", true);
}

function beforeAddPosition (O)
{
now = new Date ();
hour = now.getHours ();

if (hour >= 23 || hour <8)
{
// По группе товара
/*  flag = false;
  for (O.ware.parent.index = 1;
       O.ware.parent.index <=
       O.ware.parent.count;
       O.ware.parent.index ++)
  {
   if (O.ware.parent.code == 2 || O.ware.parent.code == 23411)    // Перечислить группы
   {
    flag = true;
   }
  }

  if (flag)
*/

// По типу номенклатуры
  if (O.ware.type == 1)
  {
   frontol.actions.showError ("Продажа алкоголя запрещена!!!!");
  }
}
}


--------------------
FireBird Service Manager
Пишу скрипты за еду.
ООО "B2C"
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
POUL
сообщение 20.2.2018, 22:51
Сообщение #72


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

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



Проверка совершеннолетия покупателя алкоголя

2 варианта.

Код
function init()
{
frontol.addEventListener("closeDocument", "checkBirthDayBeforeCloseDocument", true);
}

function checkBirthDayBeforeCloseDocument()
{
flag = false;
for (frontol.currentDocument.position.index = 1;
      frontol.currentDocument.position.index <=
      frontol.currentDocument.position.count;
      frontol.currentDocument.position.index ++)
{
  for (frontol.currentDocument.position.ware.parent.index = 1;
       frontol.currentDocument.position.ware.parent.index <=
       frontol.currentDocument.position.ware.parent.count;
       frontol.currentDocument.position.ware.parent.index ++)
  {
   if (frontol.currentDocument.position.ware.parent.code == 29504 || frontol.currentDocument.position.ware.parent.code == 32086)
   {
    flag = true;
   }
  }
}

if (flag)
{
  do
  {
   inputError = false;
   inputText = frontol.actions.inputString("Введите дату рождения", "ДД.ММ.ГГГГ", 10);
   defaultText = inputText;
   if (inputText == "")
   {
    inputError = true;
    defaultText = "";
    frontol.actions.showMessage("Вы не ввели значение!", Icon.Exclamation);
   }

   if (inputText == null)
   {
    frontol.actions.cancel ();
   }

   else
   {
    inputText = inputText.replace(/\,/, ".");
    if ((isNaN(inputText.substring (0, 2)) || (Number (inputText.substring (0, 2)) > 31)) || (isNaN(inputText.substring (3, 5)) || (Number (inputText.substring (3, 5)) > 12)) || isNaN(inputText.substring (6)) || inputText.length != 10)
    {
     inputError = true;
     frontol.actions.showMessage("Введены некорректные данные!", Icon.Error);
    }
   }
  }
  while (inputError);

  year = Number (inputText.substring (6)) + 18;
  month = Number (inputText.substring (3, 5)) - 1;
  day = inputText.substring (0, 2);

  birthDay = new Date (year, month, day)

  if (birthDay > new Date ())
   frontol.actions.showError ("Покупателю меньше 18 лет!!!");
}
}




Код
function init()
{
frontol.addEventListener("addPayment","beforeAddPayment",true);  //Сообщение о проверке даты рождения клиента
}

function beforeAddPayment()
{
now = new Date ();
day = String (now.getDate ());
month = String (now.getMonth () + 1);
year = String (now.getYear () - 18);

if (day.length == 1)
  day = "0" + day;

if (month.length == 1)
  month = "0" + month;

frontol.actions.showMessage("Вы проверили, что дата рождения покупателя раньше, чем: \n" + day + "." + month + "." + year + "?", Button.YesNo + Icon.Question)
}


--------------------
FireBird Service Manager
Пишу скрипты за еду.
ООО "B2C"
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Анри
сообщение 20.7.2019, 3:47
Сообщение #73


Прохожий


Группа: Пользователи
Сообщений: 33
Регистрация: 17.3.2014
Пользователь №: 111 558



Цитата(mozer @ 7.2.2013, 5:20) *
Скрипт организует скидку 20% на каждую 2-ю позицию из классификатора. Скидка применяется к позициям по возрастанию цены, то есть сначала идет скидка на дешёвый товар.
Необходимые условия:
1. Номенклатура дожна принадлежать только 1 классификатору
2. Создать условие по классификатору, в качестве ставки указать ставку которая вычисляет скидку по данному скрипту. Ставка СУММОВАЯ, НЕ ПРОЦЕНТНАЯ
Условий в пункте 2 может быть сколько угодно, тогда скрипт вычислит скидку по каждому классификатору отдельно.
3. Скрипт с моментом действия НЕТ.
Код
function BeforeAct(AO, RO, E, O)
{
}

function AfterAct(AO, RO, E, O)
{
}

function FuncAct(AO, RO)
{
}

//Функция сравнения для сортировки массива позиций
//Умышлено сортируем по возрастанию цены позиции
function Compare(A,B)
{
    if (A.Price < B.Price)
    {
        return -1;
    }
    if (A.Price > B.Price)
    {
        return 1;
    }
    return 0;
}

//Объект позиция. Содержит свойства:
//Идентификатор товара
//Цена товара без скидок
function MyPosition(ID,Price)
{
    this.ID = ID;
    this.Price = Price;
}
//Функция собирает массив позиций
//принадлежащих к одному класификатору.
//Сортирует массив в порядке возрастания цены.
//позиция попадает в массив столько раз, сколько товара взял покупатель
function collectArray(RO,POS)
{
    arrayPosition = new Array;
    //Соберем массив строк принадлежащих одному класификатору
    POS.Classifier.Index = 1;
    for(RO.Pos.Index = 1; RO.Pos.Index <= RO.Pos.Count; RO.Pos.Index++)
    {
        //Если позиция сторнирована или не принадлежит классификаторам, пропустим ее.
        if ((RO.Pos.Storno == 1)||RO.Pos.Classifier.Count == 0)
        {
            continue;
        }
        //Установливаем на первый классификатор
        RO.Pos.Classifier.Index = 1;
        if (RO.Pos.Classifier.Code == POS.Classifier.Code)
        {

            for (var IndexCount = 1; IndexCount <= RO.Pos.Quantity; IndexCount++)
            {
                MyPos = new MyPosition(RO.Pos.PosID,RO.Pos.Price);
                arrayPosition.push(MyPos);
            }
        }
    }
    //Сортируем массив в порядке возрастания цены
    arrayPosition.sort(Compare);
    //обрабатываем массив,для определения скидок по позициям.
    //Найдем количество позиций со скидкой. Каждый второй товар со скидкой.
    CountDiscounWare = arrayPosition.length / 2;
    arrayDiscounPosition = new Array;
    for(var IndexDiscount = 1; IndexDiscount <= CountDiscounWare; IndexDiscount++)
    {
        arrayDiscounPosition.push(arrayPosition.shift());
    }
    return arrayDiscounPosition;

}

//Основная функция ее подставляем в ставку
function MyAction(AO, RO, POS)
{
    var Discount = 0;
    //Если позиция не относится ни к одному класссификатору, тогда и скидки на нее нет.
    if (POS.Classifier.Count == 0)
    {
        return Discount;
    }
    //Сформируем массив скидок
    var arrayDiscounPosition = collectArray(RO,POS);
    //Обрабатываем полученый массив. В массиве может быть не одна текущая позиция, если количество больше 1
    for (var index = 0; index < arrayDiscounPosition.length; index++)
    {
        if ((arrayDiscounPosition[index].ID == POS.PosID))
        {
            Discount = Discount + arrayDiscounPosition[index].Price*0.2;
        }
    }
    return Discount;
}


Здравствуйте!
Подскажите пожалуйста по работе данного скрипта. Как я понимаю, в условие нужно добавить "классификатор товаров" где выбрать нужный классификатор, а в действие "автоматическая скидка из сценария", куда нужно добавить нижнюю часть скрипта под "//Основная функция ее подставляем в ставку", а куда тогда вставлять остальной сценарий? Подскажите пожалуйста, что делаю не так?
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Анри
сообщение 20.7.2019, 4:46
Сообщение #74


Прохожий


Группа: Пользователи
Сообщений: 33
Регистрация: 17.3.2014
Пользователь №: 111 558



Или может кто подскажет, как сделать продажу 3го товара из определенного списка товаров, бесплатной? т.е есть определенные товары, если 3й товар из нашего списка попадает в чек, то на самый дешевый из них делается скидка 100%. Наверняка кто то уже делал подобное.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
POUL
сообщение 21.7.2019, 20:50
Сообщение #75


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

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



создайте свою тему


--------------------
FireBird Service Manager
Пишу скрипты за еду.
ООО "B2C"
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения

4 страниц V  « < 2 3 4
Добавить ответ в эту темуОткрыть тему
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 



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