forum.bitel.ru
http://forum.bitel.ru/

Обновился класс для печати чеков
http://forum.bitel.ru/viewtopic.php?f=19&t=7334
Страница 1 из 1

Автор:  skyb [ 24 окт 2012, 06:26 ]
Заголовок сообщения:  Обновился класс для печати чеков

Собственно вопрос, а почему старые не поддерживать бы? вот у нас один раз настроился чек и все, нам другого ненада.
плюс ненашел описания
Код:
@Override
   public void endCreate( Set<Integer> cids, Check check, Printer printer )
      throws BGException
   {
      GregorianCalendar nowDate = new GregorianCalendar();
      Date dateNow = TimeUtils.convertCalendarToDate(nowDate);
      //check.addString("Ваш текущий баланс: " + bu.getBalance(dateNow, cid));
   }

здесь
Код:
Set<Integer> cids
что значит?
мне необходимо получить,
Код:
check.addString("Ваш текущий баланс: " + bu.getBalance(dateNow, cid));
что подставлять вместо
Код:
cid

плюс нам не нужно
Код:
      //1. Сумма платежа: "120,00р." (делаем одну строку addPayment, чтобы в драйвере общая сумма посчиталась)
      check.addPayment( payment.getSumma(), String.valueOf(payment.getSumma()) + "р.", 0 );

как убрать? при коментировании ругаеццо, не на код, а при печати чека

Автор:  dimOn [ 24 окт 2012, 11:46 ]
Заголовок сообщения:  Re: Обновился класс для печати чеков

Ничего там не обновилось, метод просто добавился в 5.2. Как можно «поддержать» старый то?
Метод просто с cid тоже работает. Плюс в дистрибутиве идёт два примера скрипта. В явадоку добавил, будет скоро, там путь сменился видимо оно и выпало.

Автор:  dimOn [ 24 окт 2012, 11:52 ]
Заголовок сообщения:  Re: Обновился класс для печати чеков

Ну первый cid из сета cids можно получить, например, как-то так:

Код:
int cid = cids.toArray(new Integer[0])[0];


но если в чек напечатается несколько позиций (что было возможно с самого начала существования плагина), то, очевидно, получится не очень потому что баланс выведется только первого какого-то случайного договора.

потому и был изменён (пока добавлен к работающему предыдущему) метод, куда передаются набор всех cid , а не один. раньше было искусственное ограничение такое что в один чек нельзя печатать с разных договоров (так что cid был всегда один в любом случае), но потом было разрешено печатать с договоров зависимых как-либо друг от друга, так что cid может быть несколько разных.

Цитата:
плюс нам не нужно
Код:
//1. Сумма платежа: "120,00р." (делаем одну строку addPayment, чтобы в драйвере общая сумма посчиталась)
check.addPayment( payment.getSumma(), String.valueOf(payment.getSumma()) + "р.", 0 );

как убрать? при коментировании ругаеццо, не на код, а при печати чека
это я, к сожалению, расшифровать не смог. откуда и куда убрать. и почему вопрос ко мне? и почему бы просто не убрать, раз надо убрать?

Автор:  skyb [ 24 окт 2012, 12:00 ]
Заголовок сообщения:  Re: Обновился класс для печати чеков

dimOn писал(а):
Ну первый cid из сета cids можно получить, например, как-то так:

Код:
int cid = cids.toArray(new Integer[0])[0];

но если в чек напечатается несколько позиций (что было возможно с самого начала существования плагина), то, очевидно, получится не очень потому что баланс выведется только первого какого-то случайного договора.

потому и был изменён (пока добавлен к работающему предыдущему) метод, куда передаются набор всех cid , а не один. раньше было искусственное ограничение такое что в один чек нельзя печатать с разных договоров (так что cid был всегда один в любом случае), но потом было разрешено печатать с договоров зависимых как-либо друг от друга, так что cid может быть несколько разных.

пасиба, работает мне и не нада много позиций, ну, покачто.
dimOn писал(а):
Цитата:
плюс нам не нужно
Код:
//1. Сумма платежа: "120,00р." (делаем одну строку addPayment, чтобы в драйвере общая сумма посчиталась)
check.addPayment( payment.getSumma(), String.valueOf(payment.getSumma()) + "р.", 0 );

как убрать? при коментировании ругаеццо, не на код, а при печати чека
это я, к сожалению, расшифровать не смог. откуда и куда убрать. и почему вопрос ко мне? и почему бы просто не убрать, раз надо убрать?

Сейчас если не комментировать эту строчку то печатается каких то ноль рублей, чего не нужно, как сделать так чтобы не печаталось ничего, при комментировании ругается регистратор

Автор:  Phricker [ 24 окт 2012, 13:20 ]
Заголовок сообщения:  Re: Обновился класс для печати чеков

skyb писал(а):
как сделать так чтобы не печаталось ничего

1) Ничего не печатать
2) ...
3) Profit!

Автор:  dimOn [ 24 окт 2012, 13:48 ]
Заголовок сообщения:  Re: Обновился класс для печати чеков

нельзя ничего не печатать, и никогда нельзя было. один addPayment на позицию должен быть оьбязательно, иначе ККМ не даст закрыть чек, очевидноу

Автор:  skyb [ 24 окт 2012, 15:01 ]
Заголовок сообщения:  Re: Обновился класс для печати чеков

а че делать то? как убрать эту строчку???

Автор:  dimOn [ 24 окт 2012, 16:04 ]
Заголовок сообщения:  Re: Обновился класс для печати чеков

я честно говоря снова не понял вопроса :lupa: взять да убрать из кода класса.
только причём тут убрать тем более, если я тока что сказал что она должна быть :umnik:

Автор:  skyb [ 24 окт 2012, 16:06 ]
Заголовок сообщения:  Re: Обновился класс для печати чеков

если я коменчу эту строчку, регистратор ругается...или мб совпало? завтра точно скажу

Автор:  dimOn [ 24 окт 2012, 16:33 ]
Заголовок сообщения:  Re: Обновился класс для печати чеков

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

короч я запутался, весь код скрипта в студию!
не забывайте что завтра в Башкирии выходной, курбан-байрам и все дела, отдыхаем, режем баранов, пляшем в лисих шапках (холодно же), играем на курае

Автор:  skyb [ 24 окт 2012, 16:44 ]
Заголовок сообщения:  Re: Обновился класс для печати чеков

да вы задолбали отдыхать ))))) тоже так хочу

Код:
package ru.skyb.scripts.cashcheck;

import java.sql.Connection;
import java.util.Set;

import bitel.billing.common.SummaToString;
import bitel.billing.common.TimeUtils;

import ru.bitel.bgbilling.common.BGException;
import ru.bitel.bgbilling.kernel.module.common.bean.User;
import ru.bitel.bgbilling.kernel.module.server.bean.UserManager;
import ru.bitel.bgbilling.plugins.cashcheck.common.Payment;
import ru.bitel.bgbilling.plugins.cashcheck.common.Printer;
import ru.bitel.bgbilling.plugins.cashcheck.server.CheckBuilder;
import ru.bitel.bgbilling.plugins.cashcheck.server.bean.Check;
import ru.bitel.bgbilling.server.util.Setup;
import ru.bitel.bgbilling.plugins.cashcheck.server.bean.*;
import bitel.billing.server.contract.bean.*;
import java.util.*;
import java.util.Date;
import bitel.billing.common.TimeUtils;

/**
 * Формат чека для стандартного шаблона ПКО (драйвер fop, шаблон cashcheck_pko.xsl).
 * Скрипт не обрабатывает попытку печати нескольких платежей.
 * @author dimon
 */
public class SimpleCheck
   implements CheckBuilder
{
   private Connection con;
    private ContractParameterManager bgParamMan;
    private BalanceUtils bu;

   @Override
   public void init( Setup setup, Connection con, Connection conSlave )
      throws BGException
   {
      this.con = con;
        bgParamMan = new ContractParameterManager( con );
        bu = new BalanceUtils ( con );
   }

   @Override
   public void addPayment( Payment payment, Check check, Printer printer )
      throws BGException
   {
        int PARAM_ID = 3;       
        String paramVal = bgParamMan.getStringParam( payment.getContractId(), PARAM_ID );

      //1. Сумма платежа: "120,00р." (делаем одну строку addPayment, чтобы в драйвере общая сумма посчиталась)
      check.addPayment( payment.getSumma(), String.valueOf(payment.getSumma()) + "р.", 0 ); //<<<=== эту строчку нада закоментить, она не нужны
      //2. Номер договора
      check.addString( payment.getContractTitle() );
      //3. Фамилия клиента: "ИВАНОВ И.И."
      //check.addString( payment.getContractComment() );
      check.addString( paramVal );

      //4. Дата платежа: 20-04-2009
      //check.addString( TimeUtils.format( payment.getDate(), "dd-MM-yyyy" ) );
      //5. Организация: ООО "ПРОВАЙДЕР"
      check.addString( "Телематические услуги связи" );
      //6. ФИО кассира (пользователя биллинга)
      UserManager um = new UserManager( con );   
      User user = um.get( payment.getUserId() );
      //check.addString( user.getName() );
      //7. Тип платежа: "СПД  №"
      //check.addString( "СПД  №" );
      //8. Сумма прописью: "Сто двадцать рублей 00 коп"
      check.addString( SummaToString.summaToString( String.valueOf(payment.getSumma()), true ) );
   }

   public void endCreate( int cid, Check check, Printer printer )
      throws BGException
   {
      // ничего нету, устаревший метод
   }

   @Override
   public void endCreate( Set<Integer> cids, Check check, Printer printer )
      throws BGException
   {
      GregorianCalendar nowDate = new GregorianCalendar();
      Date dateNow = TimeUtils.convertCalendarToDate(nowDate);
      int cid = cids.toArray(new Integer[0])[0];
      check.addString("Ваш текущий баланс: " + bu.getBalance(dateNow, cid));
   }
}

Автор:  dimOn [ 24 окт 2012, 16:56 ]
Заголовок сообщения:  Re: Обновился класс для печати чеков

Да нельзя блин закаментить addPayment, оно нужно, потму что в этой строчке и есть смысл этого скрипта - сформировать позицию из ровно одной команды продажи + нескольких произвольных строк!

Автор:  dimOn [ 24 окт 2012, 16:57 ]
Заголовок сообщения:  Re: Обновился класс для печати чеков

А, так речь про ПКО? :facepalm: Но тогда можно закаментить, потму что в xml вообще всё равно чего там. Причём тут тогда ККМ ругается? Для ККМ этот скрипт и не предусматривался никогда.

Автор:  skyb [ 24 окт 2012, 17:00 ]
Заголовок сообщения:  Re: Обновился класс для печати чеков

dimOn писал(а):
А, так речь про ПКО? :facepalm: Но тогда можно закаментить, потму что в xml вообще всё равно чего там. Причём тут тогда ККМ ругается? Для ККМ этот скрипт и не предусматривался никогда.

нене, про аддпаймент
Код:
 check.addPayment( payment.getSumma(), String.valueOf(payment.getSumma()) + "р.", 0 ); //<<<=== эту строчку нада закоментить, она не нужны

Автор:  skyb [ 25 окт 2012, 12:00 ]
Заголовок сообщения:  Re: Обновился класс для печати чеков

собственно ошибку пишет если я ее коменчу. чаво делать то?

Автор:  dimOn [ 26 окт 2012, 11:37 ]
Заголовок сообщения:  Re: Обновился класс для печати чеков

Я реально не пойму что же тут может быть непонятного и что ещё можно мне со своей стороны дополнить. Я же всё выше написал неоднократно.
1. Нельзя закаментить addPayment, потому что будет ККМ ругаться. ККМ и ругается, (экстрасенс моде on) по видимому на то что не может закрыть чек. Разумеется, не может, потому что он не получил ни одной команды добавления позиции. Неужели непонятно почему нельзя чтобы не было addPayment и почему ругается? Я же написал несколько раз.
2. Этот скрипт никогда не задумывался для ККМ, а приведён в качестве примера скрипта для формирования xml для печати ПКО. Зачем его модифицировать под ККМ и пытаться при этом (!) убрать формирование платежа для ККМ ума не приложу. Не, ну использовать то можно и для ККМ, просто получится длиннющий и некрасивый чек, какая ему разница какие строки добавлять. Но addPayment убирать не нужно при этом.

Автор:  dimOn [ 26 окт 2012, 11:39 ]
Заголовок сообщения:  Re: Обновился класс для печати чеков

skyb писал(а):
собственно ошибку пишет если я ее коменчу. чаво делать то?

вывод из предыдущего: не каментить :idea:
как оно и было раньше всегда, ничего тут не изменилось, никогда нельзя было без addPayment, потому что это логичное ограничение всех железок которые я встречал.

Страница 1 из 1 Часовой пояс: UTC + 5 часов [ Летнее время ]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/