PDA

Просмотр полной версии : Распределённая система PDS с использованием FIX_LEN



Anat
04.10.2013, 10:43
Добрый день,
Столкнулся с такой проблемой
Задача:
Есть рестораны с кодами:
1. 151530001, 151530002, 151530003
2. 106980001- xxxxx.0010 (десять ресторанов одной корпорации)
3. 118070001
4. 500000002
5. 255840001- xxxxx.0005 (пять ресторанов одной корпорации)

Необходимо, что бы карты клиентов считывались во всех данных точках. Карты давно розданы,
Была использована схема с FIX_LEN (http://support.ucs.ru/ru/node/60 [^ (http://support.ucs.ru/ru/node/60)])

FIX_LEN 4 версии, (лежит в EXTENS)

Поэтому на кассах
[FIXLEN(1)]
Mask = 778=151530001=NNNN
AddCode = 100000


[FIXLEN(2)]
Mask = 778=151530002=NNNN
AddCode = 110000

[FIXLEN(3)]
Mask = 778=106980006=NNNN
AddCode = 180000


[FIXLEN(4)]
Mask = 778=500000002=NNNN
AddCode = 190000


[FIXLEN(5)]
Mask = 778=118070001=NNNN
AddCode = 200000

и т.д....
Касса имеет версию 6.97.8

В Person cadrs карту с номер, например 55, с завели как префиксом 1055, не работает ("Нет такой карты"), как 100055 ("Нет такой карты"), не работает, если просто 55 то работает.

okis
04.10.2013, 18:24
Что закодировано на карте? Код ресторана, в котором проверяете карту? Что лежит в EXTENS? Откуда такой формат [FIXLEN(1)]?

SH
04.10.2013, 18:41
Так в чем проблема? Не работает?

Anat
04.10.2013, 20:14
Что закодировано на карте? Код ресторана, в котором проверяете карту? Что лежит в EXTENS? Откуда такой формат [FIXLEN(1)]?
1 - код карты формата 778=106980006=0055
2 - соответственно код ресторана 106980006.
3 - в EXTENS лежит FIX_LEN 4.0 (/r-keeper/Tools/FIX_LEN/ver400.zip)
4 - от сюда http://support.ucs.ru/ru/node/60

Тема на трекере, http://tracker.ucs.ru/view.php?id=28001 у кого доступ есть

okis
04.10.2013, 20:22
1 - код карты формата 778=106980006=0055
2 - соответственно код ресторана 106980006.


Настроено у Вас вроде как правильно (если в цифрах ничего не напутали). Обработка карты до фикслена не доходит, так как формат карты уже изначально соответствует встроенному формату "ПЕРСОНАЛЬНЫХ ДИСКОНТНЫХ КАРТ" (т.е. карта не нуждается в перекодировке). Для того чтобы проверить работу фикслена Вам нужно тестировать карту другого ресторана (с кодом не равным 106980006) или эту карту в другом ресторане.

Anat
04.10.2013, 20:34
Так в чем проблема? Не работает?
Проблема в том, что при добавлении префикса командой AddCode, Person cadrs не видит карту, и тут не понятно где ошиблись,
На кассе в EXTENS лежит FIX_LEN.dll,
в RKEEPER6.INI код:

[FIX_LEN(1)]
Mask = 778=151530001=NNNN
AddCode = 100000
и т.д. с кодами всех необходимых точек, (у каждого свой префикс)
В Person cadrs забита карта 100055, со скидкой
В результате не работает,
по идеи, префикс у всех разный, номера карт могут повторятся, но из-за префикса уникальность гарантирована, все карты забьются в одну базу, и будут работать на всех точках.

VampireKB
04.10.2013, 20:38
По-идее страдаете фигнёй..причем жуткой...

Самое верное решение:
1)Выпустить новые карты с уникальным кодом ресторана(например девять девяток)
2)Настроить FIX_LEN под него
3)Обменить старые карты на новые
Благодаря этому, вы сможете работать как с общими, так и с возможными локальными картами.А с Вашим огородом, примерно через месяца 3-4, пойдут косяки несовместимые с жизнью ПДС впинципе.. Такие,например, как пересекающиеся номера карт)

Andy
04.10.2013, 20:59
1)Выпустить новые карты с уникальным кодом ресторана(например девять девяток)
.................... Такие,например, как пересекающиеся номера карт)
для тебя топикстартер специально написал - рестораны разных корпораций (возможно разные учередители и владельцы)
карт выдано наверное целую кучу, и упорядочить это все теми методами что ты предлагаешь административно нереально (из личного опыта - много подводных камней: начиная от дизайна карт общий/разный до оплаты тиража и возможностью разбежаться в разные стороны без чистки или разъединения баз )
вот и дали автоматизаторам или местным системщикам задание - малой кровью (т.е. техническими настройками) решить данную проблему

по теме:
предлагаю топикстартеру подключать кабаки в fix len порционно - а не все скопом как у Вас

SH
04.10.2013, 23:55
предлагаю топикстартеру подключать кабаки в fix len порционно - а не все скопом как у Вас
Поддерживаю.
Причем желательно заиметь стенд и тестировать на нем.

sibgaba
07.10.2013, 21:59
Задачка интересная, но в такой постановке не разрешимая...

Для примера возьмем карту № 123 из ресторана 118070001. Согласно вашим настройкам, вы заводите ее в Pcards как 200123. Через Syncard этот номер расползается по всем ресторанам.

В любом ресторане, после обработки fix len-ом в локальный CardServ уйдет запрос с номером карты 200123, она найдется и скидка будет дана.

Как только с этой картой вы придете в родной ресторан (у которого код 118070001) до fix len-a дело не дойдет и в CardServ полетит родной номер 123. А там такой карты нет :(

Пока нет мыслей как заставить это работать...

Anat
10.10.2013, 09:07
Процесс идет, серьезно помогла утилитка testfixlen.
Система работает.
Маску добавляет.
В Person cadrs карты с префиксом проходят, скидку делает, все хорошо, кроме одного, "но".
Протестировали testfixlen все маски, пишут TRUE, Однако, при использовании на кассе, некоторые карты не работают, т.е. не дают скидку, ридер просто пикает, хотя опять же тестом testfixlen показывает True, код/синтаксис рабочей, и код/синтаксис не рабочей карты в RKEEPER6.INI идентичен, ни чего особенного нет.
Есть ли какое-то ограничение на количество масок при работе с FIX_LEN?

Anat
14.10.2013, 07:46
Все.
Карты считываются,
Оказывается жесткая зависимость, если на карте закодировано двузначное число, например 778=106980008=89 и забиваем её в
базу 200089 то она не считывается по маске: Mask = 778=106980008=NNNN AddCode = 200000
Если меняем маску на Mask = 778=106980008=NN
AddCode = 2000 и в PDS забиваем 2089 карта считывается
Вот.
Придется делать маски на все случаи жизни, NN NNN NNNN и.т. у каждого свой префикс, в результате дикий код.

Вопросов больше нет.

PaViS
14.10.2013, 16:10
Придется делать маски на все случаи жизни, NN NNN NNNN и.т. А может лучше воспользоваться параметрами MaxLen и MinLen?
Если напишете много FixLen'ов - касса будет очень долго их обрабатывать.

mnekin
16.10.2013, 23:36
PaViS,
+1
У меня так работали скидочные карты от сети супермаркета, там вообще с кодировкой однозначно fixlen c MaxLen и MinLen, иначе касса бы захлебнулась.
80 тыс. карт в базе. Подгоняли их базу (номера и имена владельцев) и перекачивали в cardserv.

EMAIL.ANDREY
10.06.2014, 10:04
Возникла проблемма с картами ПДС, а чём причина не могу понять.
Имеем карты с записаным кодом ;2000xxx (карты работают)
Новые карты с записаным кодом ;3000xxx (не работают)
В чём может быть причина?

SH
10.06.2014, 10:58
Причину следует искать в том, почему у Вас вообще работают карты

;2000xxx
- видимо, для них прописан fix_len. Следовательно, надо посмотреть, как именно прописано, и прописать по аналогии для новых (или написать универсальную маску).

EMAIL.ANDREY
10.06.2014, 11:29
на кассе прописано fix3_mask=N00NNNN

SH
10.06.2014, 12:41
Как именно не работают карты?

EMAIL.ANDREY
10.06.2014, 13:49
В PCard записывал номер карты 3000350 и 350 касса пишет нет такой карты.

SH
10.06.2014, 18:36
testfixlen'ом проверяйте, что получается в результате перекодировки.

mnekin
10.06.2014, 21:22
В PCard записывал номер карты 3000350 и 350 касса пишет нет такой карты.

Согласно вашему fixlen карта 3000350 будет считываться как 30350, значит в PCARDS заводим карту 30350.

сверяем
N00NNNN
3000350

EMAIL.ANDREY
11.06.2014, 10:58
Спасибо за помощь сработало.