BiTel

Форум BiTel
bgbilling.ru     docs.bitel.ru     wiki.bitel.ru     dbinfo.bitel.ru     bgcrm.ru     billing.bitel.ru     bitel.ru    
Текущее время: 28 мар 2024, 18:34

Часовой пояс: UTC + 5 часов [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 10 ] 
Автор Сообщение
 Заголовок сообщения: Безналичный платеж. Штрих-фр-к
СообщениеДобавлено: 26 фев 2015, 10:33 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 16 сен 2010, 11:53
Сообщения: 501
Карма: 15
Чек печатается с помощью скрипта поведения

check.setPaymentType(2);
check.addPayment( summa.floatValue(), "Оплата услуг ", 0 );


смена типа платежа от 1 до 4 ничего не дает (в чеке в любом случае бьется как наличные)
обновление до BGCashcheckServer_6.0_350 тоже не помогло
используем ru.bitel.frk.driver.shtrih2.Driver

Сервер: вер. 6.0 сборка 1830 от 09.02.2015 18:40:58
ru.bitel.bgbilling.plugins.cashcheck вер. 6.0 сборка 124 от 21.08.2014 15:20:46 //свежее на сайте для 6.0 не выложено


хочется печатать чеки с надписью "плат.карта" вместо "наличные"

_________________
Клиент: вер. 7.0.806 / 29.04.2016 13:18:28 os: Windows 7; java: Java HotSpot(TM) Client VM, v.1.8.0_66
Сервер: вер. 7.0.1035 / 29.04.2016 13:17:38 os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_92


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Безналичный платеж. Штрих-фр-к
СообщениеДобавлено: 26 фев 2015, 11:41 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 27 мар 2012, 11:59
Сообщения: 2676
Карма: 72
вроде же дин кодом выводится нужный вид чеков


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Безналичный платеж. Штрих-фр-к
СообщениеДобавлено: 26 фев 2015, 14:01 
Не в сети
Аватара пользователя

Зарегистрирован: 30 май 2008, 15:51
Сообщения: 6055
Карма: 244
как я сказал уже, тип платежа задаётся однозначно через setPaymentType.
полноценно сделано было в августе 2014 как раз. сервер печати должен быть не старее этой же даты.
вы обновлялись BGCashcheckServer_6.0_350 НЕ до варианта _old, надеюсь ?

_________________
I'm clever. I've got a computer.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Безналичный платеж. Штрих-фр-к
СообщениеДобавлено: 26 фев 2015, 14:03 
Не в сети
Аватара пользователя

Зарегистрирован: 30 май 2008, 15:51
Сообщения: 6055
Карма: 244
zavndw писал(а):
вроде же дин кодом выводится нужный вид чеков

там не только надпись имеет значение, там разные типы сумм считаются разными счётчиками. и безнал надо отдельно по-правильному указывать, иначе нал в кассе не сойдётся как минимум, как максимум будут проблемы с учётными органами.

_________________
I'm clever. I've got a computer.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Безналичный платеж. Штрих-фр-к
СообщениеДобавлено: 26 фев 2015, 14:04 
Не в сети
Аватара пользователя

Зарегистрирован: 30 май 2008, 15:51
Сообщения: 6055
Карма: 244
Цитата:
смена типа платежа от 1 до 4 ничего не дает (в чеке в любом случае бьется как наличные)
тип ведь ещё внутри железки настраивается отдельно. может оно передаётся, но там настроено всё как наличное? это проверяли?

_________________
I'm clever. I've got a computer.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Безналичный платеж. Штрих-фр-к
СообщениеДобавлено: 26 фев 2015, 14:17 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 16 сен 2010, 11:53
Сообщения: 501
Карма: 15
dimOn писал(а):
как я сказал уже, тип платежа задаётся однозначно через setPaymentType.
полноценно сделано было в августе 2014 как раз. сервер печати должен быть не старее этой же даты.
вы обновлялись BGCashcheckServer_6.0_350 НЕ до варианта _old, надеюсь ?


не old

вы можете глянуть есть ли в том билде этот функционал? или только в 6.1 уже?

_________________
Клиент: вер. 7.0.806 / 29.04.2016 13:18:28 os: Windows 7; java: Java HotSpot(TM) Client VM, v.1.8.0_66
Сервер: вер. 7.0.1035 / 29.04.2016 13:17:38 os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_92


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Безналичный платеж. Штрих-фр-к
СообщениеДобавлено: 26 фев 2015, 15:08 
Не в сети
Аватара пользователя

Зарегистрирован: 30 май 2008, 15:51
Сообщения: 6055
Карма: 244
я проверял, там точно есть, это было сделано 2014-08-18 для версий начиная с 5.2

кстати, учтите, что setPaymentType задаётся для чека, а не для позиции в чеке. т.е. если два раза зададите - используется второе указание, ну это понятно.
скрипт весь вообще покажите. если у вас не динкод, а скрипт поведения - то оба (на позицию и на завершение формирования)

_________________
I'm clever. I've got a computer.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Безналичный платеж. Штрих-фр-к
СообщениеДобавлено: 26 фев 2015, 15:16 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 16 сен 2010, 11:53
Сообщения: 501
Карма: 15
Код:
import bitel.billing.server.util.*;
import ru.bitel.bgbilling.kernel.contract.balance.server.event.PaymentEvent;
import bitel.billing.server.contract.bean.Payment;
import bitel.billing.server.contract.bean.*;
import ru.bitel.bgbilling.plugins.cashcheck.server.bean.*;
import ru.bitel.bgbilling.plugins.cashcheck.common.Printer;
import ru.bitel.bgbilling.kernel.plugin.server.*;
import ru.bitel.bgbilling.common.BGMessageException;
import bitel.billing.common.BGException;
import ru.bitel.bgbilling.kernel.plugin.server.BGPluginServer;
import ru.bitel.billing.server.script.bean.ScriptMachineManager;
import org.w3c.dom.*;
import javax.servlet.http.HttpSession;
import java.math.BigDecimal;
import ru.bitel.frk.client.CmdProtocolClient;
import java.util.Arrays;
import java.util.List;
import java.sql.Connection;
import ru.bitel.billing.server.admin.bean.AddressUtils;
 
/*
Скрипт печати чека при добавлении платежа.
Вешается на событие PaymentEvent ("приход платежа").
 
В данной версии отслеживается тип платежа и реакция происходит на какой-то из них.
В зависимости от типа платежа печатается на определённый регистратор и определённого вида чек.
Используется настройка регистратора из конфига плагина CashCheck.
Также печатается только для определённых групп юзеров биллинга.
 
Внимание:
1) очередь печати чеков игнорируется.
2) настройки маппинга платежей на принтеры из конфига плагина игнорируются.
Это означает, что ОЧЕНЬ ЖЕЛАТЕЛЬНО, чтобы на тот тип платежей, которые здесь печатаются автоматом
в конфиге плагина НЕ БЫЛО маппинга на принтер. Иначе все эти платежи помимо распечатки тут попадут
также и в очередь, будут мешаться и смогут быть повторно распечатаны. Также при добавлении прихода
в клиенте биллинга нельзя ставить галочку "печатать чек", иначе печать чека будет инициирована ДВАЖДЫ.
Отсутствие маппинга спасёт и в этом случае - напечатать чек по галочке (как и из очереди) станет невозможно.
 
Скрипт написан для версии 5.0
*/
 
/**
 * Здесь список всех юзеров, для которых сработает автопечать при приходе платежа.
 */
final static int[] USERS ={1,21};
 
/**
 * Здесь выборка принтера по типу платежа. Берутся настройки из конфига плагина.
 */
 
// параметры регистратора: номер (из конфига плагина) и пароль, заполняются в методе
int FR_ID;
String FR_PASS;
 
private boolean changePrinter( int paymentTypeId )
{
   switch( paymentTypeId )
   {
      case 13:
         FR_ID = 1;
         FR_PASS = "03";
         return true;
      default:
         return false;
   }
}
 
/**
 * формируем объект-чек.
 * Добавляются сколько-то строк и одна только addPayment, ведь платёж у нас тут всегда один
 * и позиция, стало быть, тоже всегда одна
 */
private Check makeCheck( Payment payment, int paymentTypeId, Connection con )
{
   switch( paymentTypeId )
   {      
      case 13:
         BigDecimal summa = payment.getSumma();
         int cid = payment.getContractID();
         Check check = new Check();
         check.addString( " " );
         int paycode = (1000000000 + cid);
         //check.addString( "Телематические услуги связи(Интернет)" );
         //check.addString( "Договор №: " + payment.getContractTitle() );
         // догогор вытаскиваем
         Contract contract = new ContractManager( con ).getContractById( cid );
         if( contract != null )
         {
            check.addString( "Договор №: " + contract.getTitle() );
            check.addString( "Код для оплаты в терминалах: " + paycode );
         }
         else
         {
            check.addString( "Договор неизвестный (ошибка)" );
         }
         // параметр вытаскиваем
         int PARAM_ID = 3;
         //ContractParameterManager bgParamMan = new ContractParameterManager( con );
         //String paramVal = bgParamMan.getStringParam( cid, PARAM_ID );
         //check.addString( "ФИО/Организация: ");
         //check.addString( paramVal );
         //check.addString( " " );
         check.addString(
         "Ваш текущий баланс: " +
         (new BalanceUtils( con )).getBalance( new Date(), cid ).toPlainString()
         );
         check.setPaymentType(2);
         check.addPayment( summa.floatValue(), "Оплата услуг ТК Фиалка через POS-терминал", 0 );
         return check;
 
 
      default:
         return null;
   }
}
 
public void onEvent( event, setup, con, conSlave )
{
   PaymentEvent paymentEvent = (PaymentEvent)event;
   Payment payment = paymentEvent.getPayment();
   Arrays.sort( USERS );
   if(   Arrays.binarySearch( USERS, payment.getUserID() ) >=0 )
   {
      print( "CashCheck Autoprint: user id="+payment.getUserID()+", payment should be automatically printed!" );
      int paymentTypeId = payment.getPaymentTypeID();
      if(   changePrinter( paymentTypeId ) )
      {
         print( "CashCheck Autoprint: paymentTypeId="+paymentTypeId+", payment should be automatically printed!" );
         // Получаем плагин, принтер менеджер и сам принтер пытаемся получить
         BGPluginServer plugin = BGPluginManagerServer.getManager().getPlugin( "ru.bitel.bgbilling.plugins.cashcheck" );
         Element rootNode = null;
         HttpSession session = null;
         PrinterManager printerManager = new PrinterManager( plugin, rootNode );
         Map printers = printerManager.getPrinterMap();
         Printer printer = printers.get( FR_ID );
         if ( printer == null )
         {
            error( "CashCheck Autoprint: ККМ не настроен" );
            return;
         }
         // код похож на тот, что в экшене печати чека, но в отличие от него тут мы
         // ничего не чекаем в очереди. надо озаботиться, чтобы в очередь не попадало.
          Check check = makeCheck( payment, paymentTypeId, con );
         if( check != null )
         {
            String clientsumma = check.getPaymentsum().toPlainString();
            // запрос к серверу печати
            CmdProtocolClient client = new CmdProtocolClient( printer.getAddress(), printer.getPort() );
            try
            {
               client.connect();
               boolean result = client.send( "check", new Object[]{FR_PASS, clientsumma, check.getPlines()} );
               if( result == false )
               {
                  error( "CashCheck Autoprint: Ошибка! ККМ сказала: " + client.getReply() );
                  return;
               }
               print( "CashCheck Autoprint: check was printed!" );
            }
            catch( ConnectException e )
            {
               error( "CashCheck Autoprint: Ошибка обмена с сервером печати ККМ: " + e.getMessage() );
            }
            finally
            {
               try{client.disconnect();}catch( ConnectException e ){}
            }
         }
         else
         {
            print( "CashCheck Autoprint: makeCheck: paymentTypeId="+paymentTypeId+", payment NOT printed!" );
         }
      }
      else
      {
         print( "CashCheck Autoprint: changePrinter: paymentTypeId="+paymentTypeId+", payment NOT printed!" );
      }
   }
   else
   {
      print( "CashCheck Autoprint: user id="+payment.getUserID()+", payment NOT printed!" );
   }
}


висит на событии приход платежа

_________________
Клиент: вер. 7.0.806 / 29.04.2016 13:18:28 os: Windows 7; java: Java HotSpot(TM) Client VM, v.1.8.0_66
Сервер: вер. 7.0.1035 / 29.04.2016 13:17:38 os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_92


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Безналичный платеж. Штрих-фр-к
СообщениеДобавлено: 26 фев 2015, 15:31 
Не в сети
Аватара пользователя

Зарегистрирован: 30 май 2008, 15:51
Сообщения: 6055
Карма: 244
так, стопп. а на формирование чека нет вообще скриптов, получается? просто авто на платёж формируется чек сразу?

ну в таком случае всё верно, с этого и надо было начинать, что у вас ручками формируются запросы.
тип платежа передаётся вместе с суммой:
Код:
boolean result = client.send( "check", new Object[]{FR_PASS, clientsumma, check.getPlines()} );

->
Код:
boolean result = client.send( "check", new Object[]{FR_PASS, clientsumma + (check.getPaymentType() != -1 ? (";" + check.getPaymentType()) : ""), check.getPlines()} );

_________________
I'm clever. I've got a computer.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Безналичный платеж. Штрих-фр-к
СообщениеДобавлено: 26 фев 2015, 15:52 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 16 сен 2010, 11:53
Сообщения: 501
Карма: 15
проблема решена

_________________
Клиент: вер. 7.0.806 / 29.04.2016 13:18:28 os: Windows 7; java: Java HotSpot(TM) Client VM, v.1.8.0_66
Сервер: вер. 7.0.1035 / 29.04.2016 13:17:38 os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_92


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 10 ] 

Часовой пояс: UTC + 5 часов [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


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

Найти:
Перейти:  
cron
POWERED_BY
Русская поддержка phpBB
[ Time : 0.097s | 38 Queries | GZIP : On ]