Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 15

Тема: Свзяка ПДС + РК7 +РК 6 + fixlen

  1. #1
    Интересующийся
    Регистрация
    10.05.2017
    Адрес
    Иркутск
    Сообщений
    39
    Поблагодарил(а)
    0
    Благодарностей: 1 (сообщений: 1)

    Свзяка ПДС + РК7 +РК 6 + fixlen

    Добрый день. имеется небольшая сеть ресторанов. во всех кроме одного стоит РК6 в последнем РК7 есть ПДС. На РК6 есть fixlen, так как нумерация карт пересекается. Как в РК7 организовать работу ранее выданых карт. Точнее даже так в каком скрипте и что поправить что бы карты работали? До дилера не достучаться и он особо не торопиться шевелиться, а руководство требуют все организовать очень быстро. Заранее благодарю.
    P. S. по поиску ничего подобного не нашел, мануалы от UCS конечно же недоступны.

  2. #2
    Разбирающийся
    Регистрация
    18.10.2012
    Адрес
    Новосибирск, Омск
    Сообщений
    5,362
    Поблагодарил(а)
    188
    Благодарностей: 461 (сообщений: 364)
    Примеры карт приведите.
    Что есть на карте -> какой номер нужно получить в 7ке

    Делается все через MCR алгоритмы.
    А там может быть маской дело ограничится, а может быть скрипт потребуется.
    Ильин Александр, Компания "Соттос"
    г Новосибирск +7 (383) 373-96-98; +7 (909) 533-93-92; nsk@sottos.ru
    г Омск +7 (3812) 377-902; +7 (905) 098-92-06; abc@sottos.ru
    www.sottos.ru | vk.com/sottos | fb.com/sottosru
    Продажа и установка ПО R-Keeper, обучение, техническая поддержка 24/7

  3. #3
    Интересующийся
    Регистрация
    10.05.2017
    Адрес
    Иркутск
    Сообщений
    39
    Поблагодарил(а)
    0
    Благодарностей: 1 (сообщений: 1)
    Цитата Сообщение от sibgaba Посмотреть сообщение
    Примеры карт приведите.
    Что есть на карте -> какой номер нужно получить в 7ке

    Делается все через MCR алгоритмы.
    А там может быть маской дело ограничится, а может быть скрипт потребуется.
    На карте закодировано 778=216580001=NNNNN , это реальный номер первого ресторана, у второго ресторана код другой, через фикслен к номеру карты добавляется еще цифра 30, ну и собственно надо что бы новый ресторан на РК7 смог принимать карты с подобной кодировкой.

  4. #4
    Разбирающийся
    Регистрация
    18.10.2012
    Адрес
    Новосибирск, Омск
    Сообщений
    5,362
    Поблагодарил(а)
    188
    Благодарностей: 461 (сообщений: 364)
    Скрипт надо писать. Маской тут не обойтись будет.
    Будет время - напишу скрипт.
    Возможно кто то раньше успеет...
    Ильин Александр, Компания "Соттос"
    г Новосибирск +7 (383) 373-96-98; +7 (909) 533-93-92; nsk@sottos.ru
    г Омск +7 (3812) 377-902; +7 (905) 098-92-06; abc@sottos.ru
    www.sottos.ru | vk.com/sottos | fb.com/sottosru
    Продажа и установка ПО R-Keeper, обучение, техническая поддержка 24/7

  5. #5
    Интересующийся
    Регистрация
    10.05.2017
    Адрес
    Иркутск
    Сообщений
    39
    Поблагодарил(а)
    0
    Благодарностей: 1 (сообщений: 1)
    Цитата Сообщение от sibgaba Посмотреть сообщение
    Скрипт надо писать. Маской тут не обойтись будет.
    Будет время - напишу скрипт.
    Возможно кто то раньше успеет...
    Буду очень благодарен

  6. #6
    Разбирающийся
    Регистрация
    27.02.2017
    Адрес
    Москва
    Сообщений
    279
    Поблагодарил(а)
    8
    Благодарностей: 101 (сообщений: 66)
    Что значит добавляется? Карта 7777 в первом ресторане, во втором? 7807 или 777730?

  7. #7
    Разбирающийся
    Регистрация
    18.10.2012
    Адрес
    Новосибирск, Омск
    Сообщений
    5,362
    Поблагодарил(а)
    188
    Благодарностей: 461 (сообщений: 364)
    я думаю 307777
    Ильин Александр, Компания "Соттос"
    г Новосибирск +7 (383) 373-96-98; +7 (909) 533-93-92; nsk@sottos.ru
    г Омск +7 (3812) 377-902; +7 (905) 098-92-06; abc@sottos.ru
    www.sottos.ru | vk.com/sottos | fb.com/sottosru
    Продажа и установка ПО R-Keeper, обучение, техническая поддержка 24/7

  8. #8
    ТВОРЕЦ СЧАСТЬЯ Аватар для SH
    Регистрация
    29.11.2006
    Сообщений
    18,069
    Поблагодарил(а)
    481
    Благодарностей: 192 (сообщений: 165)
    Если и не готовое решение, то направление, куда думать.

    Сервис - Обработка сигналов устройств - MCR-алгоритмы
    Персональные дебетовые (ПДС), делаем копию.
    В свойствах внизу - Скрипт, открываем.

    Скрипт принимает на вход строку Parameter, пытается ее преобразовать и возвращает ответ, соответствует ли код в строке коду ресторана.

    function MCR1001280(DeviceSignal: Integer; DeviceIdent: Integer; var Parameter: String): Boolean;
    var RestCode: integer;
    begin
    { 778=КодРесторана=КодКарты }
    if pos('778=', Parameter) = 1 then begin - здесь скрипт определяет, что строка начинается с 778. При неверной кодировке можно задать свое начало строки.
    delete(Parameter, 1, 4); - здесь удаляется все начало, остается только "КодРесторана=КодКарты"
    if pos('=', Parameter) > 1 then begin
    RestCode := StrToIntDef(copy(Parameter, 1, pos('=', Parameter) - 1),-1); - в RestCode копируется код ресторана
    delete(Parameter, 1, pos('=', Parameter)); - удаляется код ресторана, остается только код карты. Важно, чтобы алгоритм дошел до этого пункта.
    if RestCode mod 10000 = 0 then - если код, в конце без кода ресторана (делится на 1000 без остатка), то...
    {без кода ресторана - на всю компанию}
    Result := RestCode div 10000 = IntParam('EnterpriseCode') - ... проверяем на соответствие коду предприятия,
    else
    Result := RestCode = IntParam('RestaurantCode'); - а иначе проверяем на соответствие полному коду.
    end;
    end;
    end;

    Если у нас закодированный код не совпадает, то нам надо добавить условия, по которым будет срабатывание.
    Есть две задачи:
    1. принимать чужой код ресторана
    2. у карт с чужим номером отбрасывать "30" в начале.

    Если просто не совпадает код ресторана, то алгоритм нормально пройдет разбор номера и в Parameter будет номер карты, но споткнется при сравнении с кодом ресторана.
    Поэтому, для первой задачи можно просто добавить условие в строку последней проверки:
    Result := (RestCode = IntParam('RestaurantCode')) OR (RestCode = 123450001); - начальное условие оставил и взял в скобки для удобства, далее добавлено ИЛИ и прямое сравнение с кодом, закодированным на карте. 123450001 - код чужого ресторана.

    Далее, в Parameter у нас остается код карты, но он с лидирующими 30, т.е. формата 301234
    Можно, например, так
    После
    delete(Parameter, 1, pos('=', Parameter));
    Добавить строку
    if RestCode = 123450001 then delete(Parameter, 1, 2);
    - эта операция должна удалить первые два символа.

    Если я нигде не ошибся, то итог будет такой:

    function MCR1001280(DeviceSignal: Integer; DeviceIdent: Integer; var Parameter: String): Boolean;
    var RestCode: integer;
    begin
    { 778=КодРесторана=КодКарты }
    if pos('778=', Parameter) = 1 then begin
    delete(Parameter, 1, 4);
    if pos('=', Parameter) > 1 then begin
    RestCode := StrToIntDef(copy(Parameter, 1, pos('=', Parameter) - 1),-1);
    delete(Parameter, 1, pos('=', Parameter));
    if RestCode = 123450001 then delete(Parameter, 1, 2);
    if RestCode mod 10000 = 0 then
    {без кода ресторана - на всю компанию}
    Result := RestCode div 10000 = IntParam('EnterpriseCode')
    else
    Result := (RestCode = IntParam('RestaurantCode')) OR (RestCode = 123450001);
    end;
    end;
    end;
    Алексей Аркадьев

    Когда заказчик ищет волшебника, то чаще всего он находит сказочника.
    Если у Вас есть вопрос по поддержке - напишите его на форуме, я обязательно отвечу, если знаю ответ.
    Если Вам нужны какие-то файлы, пишите на почту: support@carbis.ru, но вначале посмотрите в разделе для скачивания.
    Для коммерческих вопросов:
    +7 (495) 740-49-91, или на почту: sales@carbis.ru

  9. #9
    Интересующийся
    Регистрация
    10.05.2017
    Адрес
    Иркутск
    Сообщений
    39
    Поблагодарил(а)
    0
    Благодарностей: 1 (сообщений: 1)
    Цитата Сообщение от sibgaba Посмотреть сообщение
    я думаю 307777
    Да именно так фикслен в начале номера карты добавляет 30 и получается номер карты типа 30NNNNN

    - - - Добавлено - - -

    Цитата Сообщение от SH Посмотреть сообщение
    Если и не готовое решение, то направление, куда думать.

    Сервис - Обработка сигналов устройств - MCR-алгоритмы
    Персональные дебетовые (ПДС), делаем копию.
    В свойствах внизу - Скрипт, открываем.

    Скрипт принимает на вход строку Parameter, пытается ее преобразовать и возвращает ответ, соответствует ли код в строке коду ресторана.

    function MCR1001280(DeviceSignal: Integer; DeviceIdent: Integer; var Parameter: String): Boolean;
    var RestCode: integer;
    begin
    { 778=КодРесторана=КодКарты }
    if pos('778=', Parameter) = 1 then begin - здесь скрипт определяет, что строка начинается с 778. При неверной кодировке можно задать свое начало строки.
    delete(Parameter, 1, 4); - здесь удаляется все начало, остается только "КодРесторана=КодКарты"
    if pos('=', Parameter) > 1 then begin
    RestCode := StrToIntDef(copy(Parameter, 1, pos('=', Parameter) - 1),-1); - в RestCode копируется код ресторана
    delete(Parameter, 1, pos('=', Parameter)); - удаляется код ресторана, остается только код карты. Важно, чтобы алгоритм дошел до этого пункта.
    if RestCode mod 10000 = 0 then - если код, в конце без кода ресторана (делится на 1000 без остатка), то...
    {без кода ресторана - на всю компанию}
    Result := RestCode div 10000 = IntParam('EnterpriseCode') - ... проверяем на соответствие коду предприятия,
    else
    Result := RestCode = IntParam('RestaurantCode'); - а иначе проверяем на соответствие полному коду.
    end;
    end;
    end;

    Если у нас закодированный код не совпадает, то нам надо добавить условия, по которым будет срабатывание.
    Есть две задачи:
    1. принимать чужой код ресторана
    2. у карт с чужим номером отбрасывать "30" в начале.

    Если просто не совпадает код ресторана, то алгоритм нормально пройдет разбор номера и в Parameter будет номер карты, но споткнется при сравнении с кодом ресторана.
    Поэтому, для первой задачи можно просто добавить условие в строку последней проверки:
    Result := (RestCode = IntParam('RestaurantCode')) OR (RestCode = 123450001); - начальное условие оставил и взял в скобки для удобства, далее добавлено ИЛИ и прямое сравнение с кодом, закодированным на карте. 123450001 - код чужого ресторана.

    Далее, в Parameter у нас остается код карты, но он с лидирующими 30, т.е. формата 301234
    Можно, например, так
    После
    delete(Parameter, 1, pos('=', Parameter));
    Добавить строку
    if RestCode = 123450001 then delete(Parameter, 1, 2);
    - эта операция должна удалить первые два символа.

    Если я нигде не ошибся, то итог будет такой:

    function MCR1001280(DeviceSignal: Integer; DeviceIdent: Integer; var Parameter: String): Boolean;
    var RestCode: integer;
    begin
    { 778=КодРесторана=КодКарты }
    if pos('778=', Parameter) = 1 then begin
    delete(Parameter, 1, 4);
    if pos('=', Parameter) > 1 then begin
    RestCode := StrToIntDef(copy(Parameter, 1, pos('=', Parameter) - 1),-1);
    delete(Parameter, 1, pos('=', Parameter));
    if RestCode = 123450001 then delete(Parameter, 1, 2);
    if RestCode mod 10000 = 0 then
    {без кода ресторана - на всю компанию}
    Result := RestCode div 10000 = IntParam('EnterpriseCode')
    else
    Result := (RestCode = IntParam('RestaurantCode')) OR (RestCode = 123450001);
    end;
    end;
    end;
    Спасибо большое, сегодня попробую, ход мысли скрипта более менее понятен, есть хотя бы от чего оттолкнуться.

    - - - Добавлено - - -

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

  10. #10
    ТВОРЕЦ СЧАСТЬЯ Аватар для SH
    Регистрация
    29.11.2006
    Сообщений
    18,069
    Поблагодарил(а)
    481
    Благодарностей: 192 (сообщений: 165)
    Цитата Сообщение от Uchenik Посмотреть сообщение
    А еще такой вопрос, есть подозрение что фикслен не очень нужен. если его отключить в первом ресторане, то можно обойтись без скрипта? А например маска или просто префикс?
    Вот вообще вопроса не понял.
    Алексей Аркадьев

    Когда заказчик ищет волшебника, то чаще всего он находит сказочника.
    Если у Вас есть вопрос по поддержке - напишите его на форуме, я обязательно отвечу, если знаю ответ.
    Если Вам нужны какие-то файлы, пишите на почту: support@carbis.ru, но вначале посмотрите в разделе для скачивания.
    Для коммерческих вопросов:
    +7 (495) 740-49-91, или на почту: sales@carbis.ru

Похожие темы

  1. FixLen
    от dimon_trd в разделе R-Keeper 6
    Ответов: 14
    Последнее сообщение: 25.05.2009, 03:39

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •