Страница 6 из 7

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

Добавлено: 13 Июль 2022, 15:46
finsoftrz
Кстати, в кассовой программе сделали запрос печати чека. Для розницы. Если кассир выбирает не печатать, то не печатаются ни чек, ни банковской слип, ни чек егаис. Обоснование то, что сейчас введён мораторий на штрафы при невыдаче чека. Покупателя спрашивают, если говорит, что чек не нужен, то не печатают. Сколько продлится мораторий, неизвестно, а экономия должна быть заметная.

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

Добавлено: 13 Июль 2022, 15:48
finsoftrz
В других магазинах аналогичная практика. Например, в Пятерочке. Правда, кассиров надо строить, некоторые ленятся спрашивать.

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

Добавлено: 13 Июль 2022, 16:09
Игорь Столяров
finsoftrz писал(а): 13 Июль 2022, 15:46 Если кассир выбирает не печатать, то не печатаются ни чек
Электронный чек ! Прям и для Штриха умеете ? Научите ! :shock:

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

Добавлено: 13 Июль 2022, 16:14
finsoftrz
Для атолов, штрихов и пиритов такое можно. Для сп, насколько знаю, такой возможности нет, у них можно только при регистрации ккм задать режим без печати чека. На них не печатают банковские слипы и егаис.

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

Добавлено: 13 Июль 2022, 16:26
Игорь Столяров
finsoftrz писал(а): 13 Июль 2022, 16:14 Для ... штрихов ... такое можно.
Научите пожалуйста ! Лет пять передаём электронные чеки - но для Штриха не умеем. :(
Точнее там нет программного переключения - только по настройке драйвера. :(

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

Добавлено: 13 Июль 2022, 16:26
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


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

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

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

Добавлено: 13 Июль 2022, 19:31
SergioRaguzini
finsoftrz писал(а): 13 Июль 2022, 16:26 Для штриха надо перед открытием чека записать признак в таблицу (после печати он автоматически возвращается в стандартное положение). После открытия чека передать какой-нибудь адрес покупателя. Можно любой.
Спасибо!

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

Добавлено: 15 Июль 2022, 14:35
Игорь Столяров
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
Даже не могу сказать сколько - но очень давно используем этот метод.

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

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

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

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

Заранее Спасибо Вам за содействие ! :)

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

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

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

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

Заранее Спасибо Вам за содействие ! :)
Уверены, что возвращается 0? Посмотрел, у меню только проверка на 0 стоит. Проблем никогда не возникало. Ситуации с недостатком денег точно были, все корректно отрабатывается.

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

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

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

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

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

Однако, есть ситуация, когда вроде бы ReturnCode = 0, но переменная (например некая GLO:Information) в которую возвращается слип:
GLO:Information = ?bc_Ole{'GParam("Cheque")'}
остается пустой и тогда также надо считать что была ошибка и в ФР данные не передавать

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

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

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

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

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