Clarion и терминал карт СБЕРА

Сканеры, кассы, ККТ и т.д.
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4559
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 6 раз
Поблагодарили: 34 раза

Clarion и терминал карт СБЕРА

Сообщение finsoftrz »

Кстати, в кассовой программе сделали запрос печати чека. Для розницы. Если кассир выбирает не печатать, то не печатаются ни чек, ни банковской слип, ни чек егаис. Обоснование то, что сейчас введён мораторий на штрафы при невыдаче чека. Покупателя спрашивают, если говорит, что чек не нужен, то не печатают. Сколько продлится мораторий, неизвестно, а экономия должна быть заметная.
C6/C11, ШВС, tps/btrieve.
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4559
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 6 раз
Поблагодарили: 34 раза

Clarion и терминал карт СБЕРА

Сообщение finsoftrz »

В других магазинах аналогичная практика. Например, в Пятерочке. Правда, кассиров надо строить, некоторые ленятся спрашивать.
C6/C11, ШВС, tps/btrieve.
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7327
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

Clarion и терминал карт СБЕРА

Сообщение Игорь Столяров »

finsoftrz писал(а): 13 Июль 2022, 15:46 Если кассир выбирает не печатать, то не печатаются ни чек
Электронный чек ! Прям и для Штриха умеете ? Научите ! :shock:
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4559
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 6 раз
Поблагодарили: 34 раза

Clarion и терминал карт СБЕРА

Сообщение finsoftrz »

Для атолов, штрихов и пиритов такое можно. Для сп, насколько знаю, такой возможности нет, у них можно только при регистрации ккм задать режим без печати чека. На них не печатают банковские слипы и егаис.
C6/C11, ШВС, tps/btrieve.
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7327
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

Clarion и терминал карт СБЕРА

Сообщение Игорь Столяров »

finsoftrz писал(а): 13 Июль 2022, 16:14 Для ... штрихов ... такое можно.
Научите пожалуйста ! Лет пять передаём электронные чеки - но для Штриха не умеем. :(
Точнее там нет программного переключения - только по настройке драйвера. :(
Последний раз редактировалось Игорь Столяров 13 Июль 2022, 16:27, всего редактировалось 1 раз.
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4559
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 6 раз
Поблагодарили: 34 раза

Clarion и терминал карт СБЕРА

Сообщение finsoftrz »

Это лучше бы в другую тему разместить.

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

Как-то так выглядит.

Код: Выделить всё

         if SELF.FlagPrintNo=1  !не печатать следующий чек
            if SELF.TablesWrite(1,17,1,7,0).
         .

         SELF.Contr{'password'} = SELF.Pswd
         SELF.Contr{'CheckType'} = 0
         SELF.Contr{'OpenCheck()'}

         if SELF.FlagPrintNo=1  !не печатается чек, передаем эл.адрес/телефон покупателя
            SELF.Contr{'password'} = SELF.Pswd
            SELF.Contr{'TagType'}  = 7
            SELF.Contr{'TagNumber'}  = 1008
            SELF.Contr{'TagValueStr'}=SELF.KlientContact
            SELF.Contr{'FNSendTag()'}
         .
Запись в таблицу.

Код: Выделить всё

         !===================================================================================
! Записать таблицу
!
FsKKM.TablesWrite FUNCTION (STRING pVal, BYTE pTable, BYTE pRow, BYTE pCol, BYTE pReg)
      CODE

   if SELF.Active=0
      return(0)
   end

   if SELF.DriverType=0  !штрих
      SELF.Contr{'password'}     = SELF.PswdAdmin
      SELF.Contr{'TableNumber'}  = pTable
      SELF.Contr{'RowNumber'}    = pRow
      SELF.Contr{'FieldNumber'}  = pCol
      if pReg=0
         SELF.Contr{'ValueOfFieldString'}=pVal
      else
         SELF.Contr{'ValueOfFieldInteger'}=pVal
      end
      SELF.Contr{'WriteTable()'}
   else                  !атол
      SELF.Contr{'Table'}  = pTable
      SELF.Contr{'Row'}    = pRow
      SELF.Contr{'Field'}  = pCol
      if pReg=0   !строка
         SELF.Contr{'FieldType'}  = 1
      else        !число
         SELF.Contr{'FieldType'}  = 0
      end
      SELF.Contr{'Caption'}=pVal
      SELF.Contr{'SetSettings()'}
   end

   if SELF.Contr{'RESULTCODE'}=0
      return(1)
   else
      return(0)
   end

C6/C11, ШВС, tps/btrieve.
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7327
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

Clarion и терминал карт СБЕРА

Сообщение Игорь Столяров »

finsoftrz писал(а): 13 Июль 2022, 16:26 после печати он автоматически возвращается в стандартное положение
Ага ! Вот как они вывернулись ... Спасибо. Попробуем. :)
finsoftrz писал(а): 13 Июль 2022, 16:26 Это лучше бы в другую тему разместить
Та пусь будет - кому надо найдут поиском. ;)
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
SergioRaguzini
Старожил
Сообщения: 234
Зарегистрирован: 08 Декабрь 2009, 19:16
Откуда: Краснодарский край
Благодарил (а): 6 раз

Clarion и терминал карт СБЕРА

Сообщение SergioRaguzini »

finsoftrz писал(а): 13 Июль 2022, 16:26 Для штриха надо перед открытием чека записать признак в таблицу (после печати он автоматически возвращается в стандартное положение). После открытия чека передать какой-нибудь адрес покупателя. Можно любой.
Спасибо!
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7327
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

Clarion и терминал карт СБЕРА

Сообщение Игорь Столяров »

finsoftrz писал(а): 13 Июль 2022, 16:26 SELF.Contr{'TagNumber'} = 1008
Как я понимаю - начиная с версии драйвера 4.12 (когда появилось понятие электронного чека),
есть специальный метод для передачи "телефона или e-mail покупателя для отправки чека":

Код: Выделить всё

  If MyFRS.ClientEMail <> ''  ! Телефон / E-mail для передачи чека через ОФД
     MyFRS.Object{'Password'}      = Clip(MyFRS.FRPass)
     MyFRS.Object{'CustomerEmail'} = MyFRS.ClientEMail
     MyFRS.Object{'FNSendCustomerEmail'}
  end
Даже не могу сказать сколько - но очень давно используем этот метод.
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7327
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

Clarion и терминал карт СБЕРА

Сообщение Игорь Столяров »

SergioRaguzini писал(а): 17 Март 2022, 20:50 3) Вызвать функцию NFun(4000).
4) Проанализировать код результата. Если он равен нулю, операция успешно выполнена.
Привет всем !

Указанная выше схема прекрасно у нас работает долгие годы ... но есть один момент.
Если недостаточно грошей на карте для оплаты заявленной в Amount() суммы - код ошибки тоже 0. :(

Наверно нужно анализировать текст ответа из банка в Cheque() ? Но меня нет доступа к рабочему терминалу. :(
Если кто-нибудь занимался этим вопросом - подскажите пожалуйста, как мона поймать ситуацию с недостатком
денежных средств на карте при оплате через эквайринг Сбера с OLE драйвером.

Заранее Спасибо Вам за содействие ! :)
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4559
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 6 раз
Поблагодарили: 34 раза

Clarion и терминал карт СБЕРА

Сообщение finsoftrz »

Игорь Столяров писал(а): 16 Август 2023, 9:29
SergioRaguzini писал(а): 17 Март 2022, 20:50 3) Вызвать функцию NFun(4000).
4) Проанализировать код результата. Если он равен нулю, операция успешно выполнена.
Привет всем !

Указанная выше схема прекрасно у нас работает долгие годы ... но есть один момент.
Если недостаточно грошей на карте для оплаты заявленной в Amount() суммы - код ошибки тоже 0. :(

Наверно нужно анализировать текст ответа из банка в Cheque() ? Но меня нет доступа к рабочему терминалу. :(
Если кто-нибудь занимался этим вопросом - подскажите пожалуйста, как мона поймать ситуацию с недостатком
денежных средств на карте при оплате через эквайринг Сбера с OLE драйвером.

Заранее Спасибо Вам за содействие ! :)
Уверены, что возвращается 0? Посмотрел, у меню только проверка на 0 стоит. Проблем никогда не возникало. Ситуации с недостатком денег точно были, все корректно отрабатывается.
C6/C11, ШВС, tps/btrieve.
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7327
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

Clarion и терминал карт СБЕРА

Сообщение Игорь Столяров »

finsoftrz писал(а): 16 Август 2023, 13:02 Уверены, что возвращается 0?
Нет. Возможно проблема в другом.
Ситуацию описывает клиент, а я не могу её повторить из-за отсутствия действующего эквайринга Сбера.
Спасибо Вам за подтверждение правильности схемы работы с драйвером эквайринга. Будем разбираться.
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
SergioRaguzini
Старожил
Сообщения: 234
Зарегистрирован: 08 Декабрь 2009, 19:16
Откуда: Краснодарский край
Благодарил (а): 6 раз

Clarion и терминал карт СБЕРА

Сообщение SergioRaguzini »

Игорь Столяров писал(а): 16 Август 2023, 9:29 Наверно нужно анализировать текст ответа из банка в Cheque() ?
Именно так!

Привет Всем!
Не важно, по какой причине (денег нет, истек срок действия карты, отказ от ввода pin-кода и т.д.) не прошел платеж Сбера, если <> 0, то выполнять операцию продажи в ФР нельзя, а вот коды ошибок для каждой проблемы разные.

Однако, есть ситуация, когда вроде бы ReturnCode = 0, но переменная (например некая GLO:Information) в которую возвращается слип:
GLO:Information = ?bc_Ole{'GParam("Cheque")'}
остается пустой и тогда также надо считать что была ошибка и в ФР данные не передавать
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7327
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

Clarion и терминал карт СБЕРА

Сообщение Игорь Столяров »

SergioRaguzini писал(а): 16 Август 2023, 20:16 Однако, есть ситуация, когда вроде бы ReturnCode = 0, остается пустой и тогда также надо считать что была ошибка
Пардон, но я должен это спросить.
Если какие-либо подтверждения написанному, кроме "вроде бы" и "также нужно считать" ?
По документации: транзакция по проводке платежа завершена при возврате кода ошибки = 0.
После этого много чего можно запросить, кроме слип-чека. И если есть проблема с получением
ответа и слип-чека (связь и т.д.) - это ведь не отменяет списание средств с карты ...
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
SergioRaguzini
Старожил
Сообщения: 234
Зарегистрирован: 08 Декабрь 2009, 19:16
Откуда: Краснодарский край
Благодарил (а): 6 раз

Clarion и терминал карт СБЕРА

Сообщение SergioRaguzini »

Игорь Столяров писал(а): 16 Август 2023, 20:33 По документации: транзакция по проводке платежа завершена при возврате кода ошибки = 0.
Да, действительно, если нет денег на карте, то код ошибки будет = 0 (хотя не факт что это всегда так - у сбера тоже в версиях библиотек иногда глюки бывают). Но одно точно - если платеж прошел (а нас интересует именно этот момент), то всегда будет слип (?bc_Ole{'GParam("Cheque")'} <> '') , мы в своей практике исходили именно из этого результата и никогда ошибок обработки не было

p.s. Извиняюсь, что сразу не ответил - был в отъезде, не смотрел форум
Ответить