IPB

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

 
Добавить ответ в эту темуОткрыть тему
отображение имени клиента из Fdu во фронтол 6
ЕвгенийC
сообщение 27.7.2020, 20:29
Сообщение #1


Прохожий


Группа: Новички
Сообщений: 4
Регистрация: 12.3.2020
Пользователь №: 297 832



Всем привет!

Поискал в этой ветке но ничего к сожалению не нашел

Стандандартная функия Фронтол для интерфейса отображает только имена из локальной базы Фронтол.
А при вводе карты клиента из FDU нет ни имени ни даже номера корты и совершенно непонятно чья карта введена.

Подскажите пожалуйста как настроить отображение имени клиента (номер карты) из FDU во Фронтол 6?

Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
АТОЛ: Средних Вл...
сообщение 27.7.2020, 21:21
Сообщение #2


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

Группа: Специалисты
Сообщений: 4 935
Регистрация: 15.8.2012
Пользователь №: 57 857



А зачем вам это?
разве клиент идентифицируется не одной только картой?
Захотел он передать карту родственнику - и уже этого родственника должны обслужить как любимого клиента просто потму что он предъявил карту.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
ЕвгенийC
сообщение 28.7.2020, 8:41
Сообщение #3


Прохожий


Группа: Новички
Сообщений: 4
Регистрация: 12.3.2020
Пользователь №: 297 832



Цитата(АТОЛ: Средних Владимир @ 27.7.2020, 22:21) *
А зачем вам это?
разве клиент идентифицируется не одной только картой?
Захотел он передать карту родственнику – и уже этого родственника должны обслужить как любимого клиента просто потму что он предъявил карту.


Ответ который я не ожидал услышать от Атола smile.gif

У наших клиентов все накопления и скидки привязаны к номеру телефона с проверкой по смс. Даже если они захотят передать свои виртуальные карты другому лицу это никак не оправдывает факт отсутствия отображения номера карты или владельца при открытом чеке и введенной карте. Это очень необходимо кассирам особенно если это новичек.

К тому же теперь после перехода на FDU в отчетах о продаже за день в колонке клиента стоит пустота и невозможно понять какой клиент что купил.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
АТОЛ: Средних Вл...
сообщение 28.7.2020, 13:20
Сообщение #4


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

Группа: Специалисты
Сообщений: 4 935
Регистрация: 15.8.2012
Пользователь №: 57 857



Понимаете, сейчас с платежными системами у Фронтола НЕТ интеграции по клиентской базе.

Единственное что у нас есть - для бонусной системы "Ритм" подгружается клиентская карта с таким же номером что и бонусная
а через это подгружается в чек и клиент.
Но на ваши плечи ляжет синхронизация данных в БД Фронтола с данными ДисконтЮнита

Если вас такое решение устроит - пишите запрос в SD с пожеланием.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
ЕвгенийC
сообщение 28.7.2020, 16:02
Сообщение #5


Прохожий


Группа: Новички
Сообщений: 4
Регистрация: 12.3.2020
Пользователь №: 297 832



Правильно ли я понимаю, что сейчас во Фронтоле нет возможности в поле отображения имени клиента вписать вместо текущий документ/клиент/имя клиента внешнюю обработку(скрипт), который бы делал запрос к базе FDU и возвращал бы Имя клиента или все что будет нужно клиенту?

Я прикрепил файлик, где постарался изобразить как бы это могло выглядеть.

Прикрепленный файл  __________________774__________________.png ( 501.76 килобайт ) Кол-во скачиваний: 9
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
zenik
сообщение 28.7.2020, 16:08
Сообщение #6


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

Группа: Пользователи
Сообщений: 3 128
Регистрация: 30.10.2007
Пользователь №: 12 033



Цитата(ЕвгенийC @ 28.7.2020, 16:02) *
Правильно ли я понимаю, что сейчас во Фронтоле нет возможности в поле отображения имени клиента вписать вместо текущий документ/клиент/имя клиента внешнюю обработку(скрипт), который бы делал запрос к базе FDU и возвращал бы Имя клиента или все что будет нужно клиенту?

Я прикрепил файлик, где постарался изобразить как бы это могло выглядеть.

Прикрепленный файл  __________________774__________________.png ( 501.76 килобайт ) Кол-во скачиваний: 9

брр... передернуло аж.
Представляю как будет все жутко висеть и тормозить blink.gif

Для этого есть вывод пользовательской переменной. А ее можно заполнить из скрипта. пользуйтесь.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
АТОЛ: Царюков Ро...
сообщение 28.7.2020, 20:30
Сообщение #7


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

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



сделайте самостоятельно json-запрос через сценарии
по введенной карте получите нужную инфу о владельце


второй вариант:
парсите лог драйвера платежной системы
там уже все будет

Прикрепленный файл  2020_07_28_0058.png ( 90.83 килобайт ) Кол-во скачиваний: 7


а дальше, как указано выше - пользовательские переменные


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

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


Прохожий


Группа: Новички
Сообщений: 4
Регистрация: 12.3.2020
Пользователь №: 297 832



Спасибо за наводку!

Отпишусь тут что получилось как сделаем.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Штинов Антон
сообщение 6.8.2020, 17:53
Сообщение #9


Прохожий


Группа: Новички
Сообщений: 2
Регистрация: 6.10.2017
Пользователь №: 151 279



Цитата(ЕвгенийC @ 28.7.2020, 21:12) *
Спасибо за наводку!

Отпишусь тут что получилось как сделаем.



Код
function init()
{
    frontol.addEventListener("addCard", "afterAddCard", false);
}

function afterAddCard()
{
    if(frontol.currentDocument.cardValues != "")
    {
        var cards = frontol.currentDocument.cardValues.substring(1, 20);
        var clientinfo = GetInfoByCard(cards);

        if(clientinfo != null) {
            frontol.currentDocument.userValues.set("customClientName", clientinfo.name);
        }
    }
}

function GetInfoByCard(Card)
{
    xmlhttp = new ActiveXObject("MsXml2.ServerXMLHTTP");
    xmlhttp.setOption(2, 13056); // для обхода ошибки самоподписного сертификата
    try
    {
        xmlhttp.open("GET", GetHttpAdress()+"/client/"+Card, false)
    }
    catch (E)
    {
         frontol.actions.showMessage("Не удалось получить карту (1): " + E.description);
        return null;
    }
    xmlhttp.setRequestHeader("Accept", "application/json")
    xmlhttp.setRequestHeader("Authorization", GetApiKey())
    try
    {
        xmlhttp.send(null)
    }
    catch (E)
    {
        frontol.actions.showMessage("Не удалось получить карту (2): " + E.description);
        return null;
    }
    if(xmlhttp.status == 404) {
        return null;
    }
    if(xmlhttp.status != 200)
    {
        frontol.actions.showMessage("Не удалось получить карту: " + xmlhttp.status + xmlhttp.responseText);
        return null;
    }

    return JSON.parse(xmlhttp.responseText);
}

function GetHttpAdress()
{
    return "https://192.168.0.0";
}

function GetApiKey()
{
    var oShell = new ActiveXObject("WScript.Shell");
    var userDir = oShell.ExpandEnvironmentStrings("%userprofile%");
    var fso = new ActiveXObject("Scripting.FileSystemObject");
    var tokenFile = userDir + "\\AppData\\Roaming\\ATOL\\DRIVERS\\PayCardToken.ini";
    var ts = fso.OpenTextFile(tokenFile, 1, false);
    ts.SkipLine();
    line = ts.ReadLine();
    ts.Close();

    token = line.substring(6, line.length);

    return "Bearer " + token;
}

// для работы с json
"object"!=typeof JSON&&(JSON={}),function(){"use strict";function f(e){return 10>e?"0"+e:e}function this_value(){return this.valueOf()}function quote(e){return rx_escapable.lastIndex=0,rx_escapable.test(e)?'"'+e.replace(rx_escapable,function(e){var t=meta[e];return"string"==typeof t?t:"\\u"+("0000"+e.charCodeAt(0).toString(16)).slice(-4)})+'"':'"'+e+'"'}function str(e,t){var r,n,u,f,o,a=gap,p=t[e];switch(p&&"object"==typeof p&&"function"==typeof p.toJSON&&(p=p.toJSON(e)),"function"==typeof rep&&(p=rep.call(t,e,p)),typeof p){case"string":return quote(p);case"number":return isFinite(p)?String(p):"null";case"boolean":case"null":return String(p);case"object":if(!p)return"null";if(gap+=indent,o=[],"[object Array]"===Object.prototype.toString.apply(p)){for(f=p.length,r=0;f>r;r+=1)o[r]=str(r,p)||"null";return u=0===o.length?"[]":gap?"[\n"+gap+o.join(",\n"+gap)+"\n"+a+"]":"["+o.join(",")+"]",gap=a,u}if(rep&&"object"==typeof rep)for(f=rep.length,r=0;f>r;r+=1)"string"==typeof rep[r]&&(n=rep[r],u=str(n,p),u&&o.push(quote(n)+(gap?": ":":")+u));else for(n in p)Object.prototype.hasOwnProperty.call(p,n)&&(u=str(n,p),u&&o.push(quote(n)+(gap?": ":":")+u));return u=0===o.length?"{}":gap?"{\n"+gap+o.join(",\n"+gap)+"\n"+a+"}":"{"+o.join(",")+"}",gap=a,u}}var rx_one=/^[\],:{}\s]*$/,rx_two=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,rx_three=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,rx_four=/(?:^|:|,)(?:\s*\[)+/g,rx_escapable=/[\\\"\u0000-\u001f\u007f-\u009f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,rx_dangerous=/[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,gap,indent,meta,rep;"function"!=typeof JSON.stringify&&(meta={"\b":"\\b","    ":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"},JSON.stringify=function(e,t,r){var n;if(gap="",indent="","number"==typeof r)for(n=0;r>n;n+=1)indent+=" ";else"string"==typeof r&&(indent=r);if(rep=t,t&&"function"!=typeof t&&("object"!=typeof t||"number"!=typeof t.length))throw new Error("JSON.stringify");return str("",{"":e})}),"function"!=typeof JSON.parse&&(JSON.parse=function(text,reviver){function walk(e,t){var r,n,u=e[t];if(u&&"object"==typeof u)for(r in u)Object.prototype.hasOwnProperty.call(u,r)&&(n=walk(u,r),void 0!==n?u[r]=n:delete u[r]);return reviver.call(e,t,u)}var j;if(text=String(text),rx_dangerous.lastIndex=0,rx_dangerous.test(text)&&(text=text.replace(rx_dangerous,function(e){return"\\u"+("0000"+e.charCodeAt(0).toString(16)).slice(-4)})),rx_one.test(text.replace(rx_two,"@").replace(rx_three,"]").replace(rx_four,"")))return j=eval("("+text+")"),"function"==typeof reviver?walk({"":j},""):j;throw new SyntaxError("JSON.parse")})}();
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
АТОЛ: Царюков Ро...
сообщение 6.8.2020, 17:58
Сообщение #10


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

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



работает?


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

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

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

 



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