BiTel

Форум BiTel
bgbilling.ru     docs.bitel.ru     wiki.bitel.ru     dbinfo.bitel.ru     bgcrm.ru     billing.bitel.ru     bitel.ru    
Текущее время: 24 июн 2025, 15:53

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




Начать новую тему Ответить на тему  [ Сообщений: 47 ]  На страницу 1, 2  След.
Автор Сообщение
СообщениеДобавлено: 13 май 2014, 16:13 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 03 авг 2009, 18:42
Сообщения: 7166
Откуда: Благовещенск
Карма: 241
почему нет возможности выставлять счета по тем услугам которые навешаны на договор на следующий месяц?
мне побольше вариантов, я интуитивно понимаю, но нада ещё и народу объяснить

_________________
Код:
  Клиент: вер. 6.2.714 / 25.05.2015 17:27:15
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
  Сервер: вер. 6.2.881 / 22.05.2015 17:56:55
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
Помощь по администрированию bgbilling в jabber конференции или Группа в telegram
Стиль программирования - пьяный мастерстер
Разработка мобильных приложений


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 13 май 2014, 16:21 
Не в сети
Разработчик

Зарегистрирован: 08 ноя 2007, 01:05
Сообщения: 8343
Откуда: Уфа
Карма: 238
Потому что нет наработки по этим услугам за следующий месяц .


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 13 май 2014, 16:27 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 03 авг 2009, 18:42
Сообщения: 7166
Откуда: Благовещенск
Карма: 241
промазал где тему размещать, переместите в бухгалтерию плиз

_________________
Код:
  Клиент: вер. 6.2.714 / 25.05.2015 17:27:15
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
  Сервер: вер. 6.2.881 / 22.05.2015 17:56:55
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
Помощь по администрированию bgbilling в jabber конференции или Группа в telegram
Стиль программирования - пьяный мастерстер
Разработка мобильных приложений


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 13 май 2014, 16:39 
Не в сети
Аватара пользователя

Зарегистрирован: 27 янв 2010, 16:12
Сообщения: 941
Откуда: Уфа
Карма: 124
Некоторым клиентам мы делали выставление счетов в будущем при использовании npay и режим "начисление без начисления" у калькулятора абонплат.

_________________
С уважением, Гареев Артур. Вежливый разработчик ООО "Бител".


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 13 май 2014, 17:16 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 03 авг 2009, 18:42
Сообщения: 7166
Откуда: Благовещенск
Карма: 241
а есть код то?

_________________
Код:
  Клиент: вер. 6.2.714 / 25.05.2015 17:27:15
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
  Сервер: вер. 6.2.881 / 22.05.2015 17:56:55
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
Помощь по администрированию bgbilling в jabber конференции или Группа в telegram
Стиль программирования - пьяный мастерстер
Разработка мобильных приложений


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 13 май 2014, 23:03 
Не в сети
Аватара пользователя

Зарегистрирован: 27 янв 2010, 16:12
Сообщения: 941
Откуда: Уфа
Карма: 124
Конечно есть. По хорошему, конечно, надо будет на вики выложить. Завтра займусь.

_________________
С уважением, Гареев Артур. Вежливый разработчик ООО "Бител".


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 14 май 2014, 02:10 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 03 авг 2009, 18:42
Сообщения: 7166
Откуда: Благовещенск
Карма: 241
Artur писал(а):
Конечно есть. По хорошему, конечно, надо будет на вики выложить. Завтра займусь.

Круто, с меня как всегда ;-)

_________________
Код:
  Клиент: вер. 6.2.714 / 25.05.2015 17:27:15
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
  Сервер: вер. 6.2.881 / 22.05.2015 17:56:55
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
Помощь по администрированию bgbilling в jabber конференции или Группа в telegram
Стиль программирования - пьяный мастерстер
Разработка мобильных приложений


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 15 май 2014, 03:34 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 03 авг 2009, 18:42
Сообщения: 7166
Откуда: Благовещенск
Карма: 241
Апну чтоль

_________________
Код:
  Клиент: вер. 6.2.714 / 25.05.2015 17:27:15
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
  Сервер: вер. 6.2.881 / 22.05.2015 17:56:55
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
Помощь по администрированию bgbilling в jabber конференции или Группа в telegram
Стиль программирования - пьяный мастерстер
Разработка мобильных приложений


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 16 май 2014, 13:55 
Не в сети
Аватара пользователя

Зарегистрирован: 27 янв 2010, 16:12
Сообщения: 941
Откуда: Уфа
Карма: 124
Наслаждайтесь =)
http://wiki.bitel.ru/index.php/%D0%A1%D ... 1%82%D1%83

_________________
С уважением, Гареев Артур. Вежливый разработчик ООО "Бител".


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 20 май 2014, 04:34 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 03 авг 2009, 18:42
Сообщения: 7166
Откуда: Благовещенск
Карма: 241
Возникла пара вопросов
Код:
calculator.initTask( setup1, 0, "mid=" + npayMid ); //здесь можно прописывать только конкретные услуги через service.set=<наборы через запятую>

не понял где и куда прописывать, услуг будет не одна
Код:
//предполагается, что на догоовре одна абонка. в итоге получим лишь одну позицию
      row.setAttribute( "summ", Utils.formatBigDecimalSumm( billSumm ) );

а что делать если не одна?

_________________
Код:
  Клиент: вер. 6.2.714 / 25.05.2015 17:27:15
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
  Сервер: вер. 6.2.881 / 22.05.2015 17:56:55
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
Помощь по администрированию bgbilling в jabber конференции или Группа в telegram
Стиль программирования - пьяный мастерстер
Разработка мобильных приложений


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 20 май 2014, 11:08 
Не в сети
Аватара пользователя

Зарегистрирован: 27 янв 2010, 16:12
Сообщения: 941
Откуда: Уфа
Карма: 124
skyb писал(а):
Возникла пара вопросов
Код:
calculator.initTask( setup1, 0, "mid=" + npayMid ); //здесь можно прописывать только конкретные услуги через service.set=<наборы через запятую>

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


3й параметр метода initTask - это строка, в которую нужно прописывать параметры задачи. Сейчас там описан код модуля npay. Вот туда и нужно прописывать набор обсчитываемых услуг (не забудьте разделять параметры символом переноса строки)

_________________
С уважением, Гареев Артур. Вежливый разработчик ООО "Бител".


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 20 май 2014, 11:17 
Не в сети
Аватара пользователя

Зарегистрирован: 27 янв 2010, 16:12
Сообщения: 941
Откуда: Уфа
Карма: 124
skyb писал(а):
Возникла пара вопросов
Код:
//предполагается, что на догоовре одна абонка. в итоге получим лишь одну позицию
      row.setAttribute( "summ", Utils.formatBigDecimalSumm( billSumm ) );

а что делать если не одна?


А вы хотите каждую услугу как отдельную позицию делать?
Можно у калькулятора взять список наработок, разбитый по услугам, и бегать уже по этому списку, создавая для каждой услуги свою позицию.
Для примера:
Код:
for( CostSum costSum : calculator.getCostCache().getAmounts() )
{
...
}

_________________
С уважением, Гареев Артур. Вежливый разработчик ООО "Бител".


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 20 май 2014, 11:20 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 03 авг 2009, 18:42
Сообщения: 7166
Откуда: Благовещенск
Карма: 241
ещёб примерчик ))

Код:
calculator.initTask( setup1, 0, "mid=" + npayMid+"\n"+service.set=5,7,9 );

Причем service.set=<наборы через запятую> это id услуги абонплаты, или то что в настройках абонплат сгрупированные абонки?

_________________
Код:
  Клиент: вер. 6.2.714 / 25.05.2015 17:27:15
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
  Сервер: вер. 6.2.881 / 22.05.2015 17:56:55
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
Помощь по администрированию bgbilling в jabber конференции или Группа в telegram
Стиль программирования - пьяный мастерстер
Разработка мобильных приложений


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 20 май 2014, 11:45 
Не в сети
Аватара пользователя

Зарегистрирован: 27 янв 2010, 16:12
Сообщения: 941
Откуда: Уфа
Карма: 124
skyb писал(а):
Код:
calculator.initTask( setup1, 0, "mid=" + npayMid+"\n"+service.set=5,7,9 );

Причем service.set=<наборы через запятую> это id услуги абонплаты, или то что в настройках абонплат сгрупированные абонки?


Это коды НАБОРОВ услуг, которые указываются в конфиге модуля. И чтобы не возникало потом вопросов, почему не работает, не забудьте передвинуть кавычки после символа переноса строки.

_________________
С уважением, Гареев Артур. Вежливый разработчик ООО "Бител".


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 03 июн 2014, 06:35 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 03 авг 2009, 18:42
Сообщения: 7166
Откуда: Благовещенск
Карма: 241
Artur писал(а):
skyb писал(а):
Возникла пара вопросов
Код:
//предполагается, что на догоовре одна абонка. в итоге получим лишь одну позицию
      row.setAttribute( "summ", Utils.formatBigDecimalSumm( billSumm ) );

а что делать если не одна?


А вы хотите каждую услугу как отдельную позицию делать?
Можно у калькулятора взять список наработок, разбитый по услугам, и бегать уже по этому списку, создавая для каждой услуги свою позицию.
Для примера:
Код:
for( CostSum costSum : calculator.getCostCache().getAmounts() )
{
...
}

id так получать
Код:
      for( CostSum costSum : calculator.getCostCache().getAmounts() )
      {
         log ("CostSum " +costSum.sid);
      }

сумму тоже понятно,
Код:
         log ("CostSum " +costSum.cost.abs());

а вот куда подставлять так и не доразабрался. Подскажите

_________________
Код:
  Клиент: вер. 6.2.714 / 25.05.2015 17:27:15
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
  Сервер: вер. 6.2.881 / 22.05.2015 17:56:55
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
Помощь по администрированию bgbilling в jabber конференции или Группа в telegram
Стиль программирования - пьяный мастерстер
Разработка мобильных приложений


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 03 июн 2014, 09:47 
Не в сети
Аватара пользователя

Зарегистрирован: 27 янв 2010, 16:12
Сообщения: 941
Откуда: Уфа
Карма: 124
В коде на вики в методе fillBillData() происходит заполнение списка позиций каждого сгенерированного счета. Если вы хотите, чтобы в каждый счет попала полная детализация начислений со всеми услугами, то вам нужно в этот метод передать информацию об этих начислениях - тот же лист CostSum'ов, например. А уже внутри fillBillData() бегать по циклу, который я приводил выше и создавать позиции.

_________________
С уважением, Гареев Артур. Вежливый разработчик ООО "Бител".


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 03 июн 2014, 10:04 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 03 авг 2009, 18:42
Сообщения: 7166
Откуда: Благовещенск
Карма: 241
Artur писал(а):
В коде на вики в методе fillBillData() происходит заполнение списка позиций каждого сгенерированного счета. Если вы хотите, чтобы в каждый счет попала полная детализация начислений со всеми услугами, то вам нужно в этот метод передать информацию об этих начислениях - тот же лист CostSum'ов, например. А уже внутри fillBillData() бегать по циклу, который я приводил выше и создавать позиции.

Чтобы передать в метод, необходимо присвоить переменную, я присвоил, но чувствую что то не то
Код:
Collection<CostSum> costSum = calculator.getCostCache().getAmounts();

Дальше я так понял чтоб пробежаться циклом в методе необходимо ещё передать
Код:
calculator
? и перебор уже делать так
Код:
for( CostSum costSum : calculator.getCostCache().getAmounts() )
{
row.setAttribute( "summ", Utils.formatBigDecimalSumm( costSum.cost.abs() ) );
}

?

_________________
Код:
  Клиент: вер. 6.2.714 / 25.05.2015 17:27:15
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
  Сервер: вер. 6.2.881 / 22.05.2015 17:56:55
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
Помощь по администрированию bgbilling в jabber конференции или Группа в telegram
Стиль программирования - пьяный мастерстер
Разработка мобильных приложений


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 03 июн 2014, 13:48 
Не в сети
Аватара пользователя

Зарегистрирован: 27 янв 2010, 16:12
Сообщения: 941
Откуда: Уфа
Карма: 124
Передайте туда вот это
skyb писал(а):
Код:
Collection<CostSum> costSumList = calculator.getCostCache().getAmounts();


И тогда использовать вот так:
skyb писал(а):
Код:
for( CostSum costSum : costSumList )
{
row.setAttribute( "summ", Utils.formatBigDecimalSumm( costSum.cost.abs() ) );
}


_________________
С уважением, Гареев Артур. Вежливый разработчик ООО "Бител".


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 03 июн 2014, 15:53 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 03 авг 2009, 18:42
Сообщения: 7166
Откуда: Благовещенск
Карма: 241
рядом )))))
услуги то отдает, но почему то полную сумму а не с разбивкой по услугам (скрин) это полная сумма, а должно быть 15000 и 236
щас так

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


import bitel.billing.common.TimeUtils;
import ru.bitel.bgbilling.kernel.script.server.dev.GlobalScriptBase;
import ru.bitel.bgbilling.server.util.ModuleSetup;
import ru.bitel.bgbilling.server.util.Setup;
import ru.bitel.common.sql.ConnectionSet;
import ru.bitel.common.Utils;
import ru.bitel.common.XMLUtils;
import ru.bitel.bgbilling.modules.npay.server.Calculator;
import bitel.billing.server.bill.bean.*;
import bitel.billing.server.contract.bean.*;
 
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import java.math.*;
import java.sql.*;
import java.util.*;
import java.util.Date;
 
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
 
import org.apache.log4j.Logger;
 
public class BillGen
   extends GlobalScriptBase
{
   private static final Logger logger = Logger.getLogger( BillGen.class );
 
   @Override
   public void execute( Setup setup1, ConnectionSet connectionSet2 )
      throws Exception
   {
      log( "Инициализация" );
      //переменные
      int npayMid = 8;  //код модуля Npay
      String groups = "1"; //коды групп договоров через запятую
      Connection con = connectionSet2.getConnection(); //соединение с БД
      int billMid = 9; // код модуля Бухгалтерии
      int accountId = 1; // код счета банка
      String docType = "1"; // ID типа выставляемого документа
      int userId = 0; // ID пользователя, от имени которого выставляется счет
      //получаем список договоров, для которых будем выставлять счета
      log( "Получение списка договоров" );
      StringBuilder cids = new StringBuilder();
      StringBuilder query = new StringBuilder( "SELECT id FROM contract" );
      long groupMask = Utils.enumToMask( groups );
      if( groupMask > 0 )
      {
         query.append( " WHERE gr&?>0" );
      }
      PreparedStatement ps = con.prepareStatement( query.toString() );
      if( groupMask > 0 )
      {
         ps.setLong( 1, groupMask );
      }
      ResultSet rs = ps.executeQuery();
      while( rs.next() )
      {
         cids.append( rs.getInt( "id" ) + "," );
      }
      rs.close();
      ps.close();
      cids.deleteCharAt( cids.lastIndexOf( "," ) );
      log( "Получено " + cids.toString().split( "," ).length + " договоров, которым необходимо выставить авансовые счета" );
      //запускаем калькулятор по всем договорам, полученным выше
      log( "Запуск предначисления наработки для выбранных договоров" );
      Calendar dt = new GregorianCalendar();
      dt.add( Calendar.MONTH, 1 ); //нам нужно, чтобы считался будущий месяц
      dt.set( Calendar.DAY_OF_MONTH, dt.getActualMaximum( Calendar.DAY_OF_MONTH ) ); //выставляем последнее число будущего месяца
 
      Calculator calculator = new Calculator();
      calculator.setExecutingTime( dt );
      calculator.setPreCalc();
      calculator.initTask( setup1, 0, "mid=" + npayMid ); //здесь можно прописывать только конкретные услуги через service.set=<наборы через запятую>
      calculator.setCids( cids.toString() );
      calculator.startTask();
      //после обсчета получаем список наработок с разбивкой по договорам
      Map<Integer, BigDecimal> planAccountMap = new HashMap<Integer, BigDecimal>();
      if( !calculator.isCalcErrors() )
      {
         planAccountMap = calculator.getCostCache().getContractAccounts();
      }
      Collection<CostSum> costSumList = calculator.getCostCache().getAmounts();
      log( "Подсчет наработки закончен. Формирование документов" );
      //for( CostSum costSum : calculator.getCostCache().getAmounts() )
      //{
      //   log ("CostSum " +costSum.cost.abs());
      //}
      //ок, теперь нужно формировать документы
      dt.add( Calendar.MONTH, -1 );
      int mm = dt.get(Calendar.MONTH);
      int yy = dt.get(Calendar.YEAR);
      log("Дата формирования счетов: " + TimeUtils.format( new Date(), TimeUtils.DATE_FORMAT_PATTERN_DDMMYYYY_HHMMSS ) );
      log("Старт генерации документов за год=" + yy + "; месяц=" + mm + "; группы договоров=" + groups);
 
      BalanceUtils bu = new BalanceUtils( con );    
      ModuleSetup moduleSetup = setup1.getModuleSetup( billMid );
      TemplateBillManager man = new TemplateBillManager( moduleSetup, con, billMid, false );
      List<TemplateBill> templateBillList = man.getTemplatePayBillList( moduleSetup, yy, mm, groups, null, docType, null, false );
      log("Число сгенерированных документов = " + templateBillList.size());
      DocumentBuilderFactory dFactory = DocumentBuilderFactory.newInstance();
      DocumentBuilder docBuilder = dFactory.newDocumentBuilder();
      Document doc = docBuilder.newDocument();
      Element bills = doc.createElement("bills");
      for( TemplateBill templateBill : templateBillList )
      {
         Element row = XMLUtils.createElement(bills, "bill");
         row.setAttribute( "rest", Utils.formatBigDecimalSumm( bu.getBalance( dt.getTime(), templateBill.getContractId() ) ) );
         row.setAttribute( "account_id",String.valueOf(accountId ));
         //Получаем наработку за будущий месяц по договору, если она есть
         BigDecimal summ = Utils.maskNull( planAccountMap.get( templateBill.getContractId() ) );
         fillBillData( row, templateBill, summ, costSumList );
      }
      doc.appendChild(bills);
      ByteArrayOutputStream sos = new ByteArrayOutputStream();
      XMLUtils.serialize(bills, sos, "UTF-8");
      String xml = sos.toString();
      log("Полученная сгенерированная xml со счетами: " + xml );
      InputStream is = new ByteArrayInputStream( xml.getBytes( "cp1251" ) );
      BillManager pbm = new BillManager( setup1, con, billMid, moduleSetup );
      pbm.addBillDocs( userId, is, yy, mm, dt.getTime(), false );
   }
 
   private void fillBillData( Element row, TemplateBill templateBill, BigDecimal billSumm, Collection<CostSum> costSumList )
   {
      row.setAttribute( "id", String.valueOf( templateBill.getContractDocTypeId() ) );
      row.setAttribute( "type", String.valueOf( templateBill.getDocTypeId() ) );
      row.setAttribute( "cid", String.valueOf( templateBill.getContractId() ) );
 
      row.setAttribute( "contract", templateBill.getContractTitle() );
      row.setAttribute( "contract_comment", templateBill.getContractComment() );
 
      for( PositionValue value : templateBill.getPositionList() )
      {
         value.setSumma( billSumm );
         value.setSumScaled( billSumm );
         value.setSumUnscaled( billSumm );
         Element posEl = XMLUtils.createElement( row, "pos" );
         value.toElement( posEl );
 
         Position pos = value.getPosition();
         posEl.setAttribute( "insum", Utils.booleanToStringInt( pos.isInSum() ) );
         posEl.setAttribute( "awlz", Utils.booleanToStringInt( pos.isAddWhenLessZero() ) );
      }
      //предполагается, что на догоовре одна абонка. в итоге получим лишь одну позицию
      for( CostSum costSum : costSumList )
      {
      row.setAttribute( "summ", Utils.formatBigDecimalSumm( costSum.cost.abs() ) );
      }
   }
 
   /**
    * Вывод сообщений и в лог-файл и в клиентский лог.
    * @param msg текст сообщения.
    */
   private void log( String msg )
   {
      print( msg );
      logger.info( msg );
   }
}


Вложения:
Выделение_016.png
Выделение_016.png [ 4.35 КБ | Просмотров: 13193 ]

_________________
Код:
  Клиент: вер. 6.2.714 / 25.05.2015 17:27:15
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
  Сервер: вер. 6.2.881 / 22.05.2015 17:56:55
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
Помощь по администрированию bgbilling в jabber конференции или Группа в telegram
Стиль программирования - пьяный мастерстер
Разработка мобильных приложений
Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 03 июн 2014, 16:02 
Не в сети
Аватара пользователя

Зарегистрирован: 27 янв 2010, 16:12
Сообщения: 941
Откуда: Уфа
Карма: 124
Не так немного. внутри fillBillData() нужно бегать по списку costSumList и внутри этого цикла самостоятельно создавть позиции. И вот тогда уже доставать нужные данные. Следовательно, в шаблоне счета позиции настраивать не нужно.

_________________
С уважением, Гареев Артур. Вежливый разработчик ООО "Бител".


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 03 июн 2014, 16:05 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 03 авг 2009, 18:42
Сообщения: 7166
Откуда: Благовещенск
Карма: 241
а какие обязательные позиции?

_________________
Код:
  Клиент: вер. 6.2.714 / 25.05.2015 17:27:15
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
  Сервер: вер. 6.2.881 / 22.05.2015 17:56:55
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
Помощь по администрированию bgbilling в jabber конференции или Группа в telegram
Стиль программирования - пьяный мастерстер
Разработка мобильных приложений


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 03 июн 2014, 19:24 
Не в сети
Аватара пользователя

Зарегистрирован: 27 янв 2010, 16:12
Сообщения: 941
Откуда: Уфа
Карма: 124
skyb писал(а):
а какие обязательные позиции?


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

_________________
С уважением, Гареев Артур. Вежливый разработчик ООО "Бител".


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 03 июн 2014, 19:28 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 03 авг 2009, 18:42
Сообщения: 7166
Откуда: Благовещенск
Карма: 241
да не, я просто думал есть какие то обязательные строки, без которых нельзя

_________________
Код:
  Клиент: вер. 6.2.714 / 25.05.2015 17:27:15
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
  Сервер: вер. 6.2.881 / 22.05.2015 17:56:55
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
Помощь по администрированию bgbilling в jabber конференции или Группа в telegram
Стиль программирования - пьяный мастерстер
Разработка мобильных приложений


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 03 июн 2014, 19:28 
Не в сети
Аватара пользователя

Зарегистрирован: 27 янв 2010, 16:12
Сообщения: 941
Откуда: Уфа
Карма: 124
skyb писал(а):
да не, я просто думал есть какие то обязательные строки, без которых нельзя


Строки там формируются только исходя из конфигурации модуля.

_________________
С уважением, Гареев Артур. Вежливый разработчик ООО "Бител".


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 09 июн 2014, 10:28 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 03 авг 2009, 18:42
Сообщения: 7166
Откуда: Благовещенск
Карма: 241
Не могу победить. Я правильно понимаю что мне необходимо каждую услугу в коде описать? А обойтись описание в модуле бухгалтерии возможно?
и помогите с кодом, а то у меня получается позиции х на их количество

Код:
private void fillBillData( Element row, TemplateBill templateBill, BigDecimal billSumm, Collection<CostSum> costSumList )
   {

      row.setAttribute( "id", String.valueOf( templateBill.getContractDocTypeId() ) );
      row.setAttribute( "type", String.valueOf( templateBill.getDocTypeId() ) );
      row.setAttribute( "cid", String.valueOf( templateBill.getContractId() ) );
 
      row.setAttribute( "contract", templateBill.getContractTitle() );
      row.setAttribute( "contract_comment", templateBill.getContractComment() );
      for( CostSum costSum : costSumList )
         {
      for( PositionValue value : templateBill.getPositionList() )
      {

               value.setSumma( costSum.cost.abs() );
               value.setSumScaled( costSum.cost.abs() );
               value.setSumUnscaled( costSum.cost.abs() );
               Element posEl = XMLUtils.createElement( row, "pos" );
               value.toElement( posEl );
 
               Position pos = value.getPosition();
               posEl.setAttribute( "insum", Utils.booleanToStringInt( pos.isInSum() ) );
               posEl.setAttribute( "awlz", Utils.booleanToStringInt( pos.isAddWhenLessZero() ) );




            row.setAttribute( "summ", Utils.formatBigDecimalSumm( costSum.cost.abs() ) );
            print(" costSum.cost.toString " + costSum.cost.toString());
         }
      }

как не переставляй циклы, всеравно не то. Почему так происходит понятно, а как починить - нет

_________________
Код:
  Клиент: вер. 6.2.714 / 25.05.2015 17:27:15
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
  Сервер: вер. 6.2.881 / 22.05.2015 17:56:55
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
Помощь по администрированию bgbilling в jabber конференции или Группа в telegram
Стиль программирования - пьяный мастерстер
Разработка мобильных приложений


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 09 июн 2014, 15:40 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 03 авг 2009, 18:42
Сообщения: 7166
Откуда: Благовещенск
Карма: 241
хелп ми

_________________
Код:
  Клиент: вер. 6.2.714 / 25.05.2015 17:27:15
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
  Сервер: вер. 6.2.881 / 22.05.2015 17:56:55
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
Помощь по администрированию bgbilling в jabber конференции или Группа в telegram
Стиль программирования - пьяный мастерстер
Разработка мобильных приложений


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 09 июн 2014, 16:24 
Не в сети
Аватара пользователя

Зарегистрирован: 27 янв 2010, 16:12
Сообщения: 941
Откуда: Уфа
Карма: 124
Зачем вы используете внутренний цикл по позициям из шаблона?

_________________
С уважением, Гареев Артур. Вежливый разработчик ООО "Бител".


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 09 июн 2014, 16:53 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 03 авг 2009, 18:42
Сообщения: 7166
Откуда: Благовещенск
Карма: 241
Artur писал(а):
Зачем вы используете внутренний цикл по позициям из шаблона?

Артур, еслиб я знал как правильно) Заводить позиции ещё и в коде тяжело, описывать каждую услугу. Или не избежать этого?

_________________
Код:
  Клиент: вер. 6.2.714 / 25.05.2015 17:27:15
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
  Сервер: вер. 6.2.881 / 22.05.2015 17:56:55
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
Помощь по администрированию bgbilling в jabber конференции или Группа в telegram
Стиль программирования - пьяный мастерстер
Разработка мобильных приложений


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 09 июн 2014, 17:40 
Не в сети
Аватара пользователя

Зарегистрирован: 27 янв 2010, 16:12
Сообщения: 941
Откуда: Уфа
Карма: 124
Правильно делать цикл по costSumList, в нем на каждую услугу программно создавать PositionVAlue, заполнять его нужными данными и добавлять в отдельный лист PositionValue, который нужно определить ранее. После этого цикла по costSumList нужно в templateBill добавить сформированный лист PositionValue.

_________________
С уважением, Гареев Артур. Вежливый разработчик ООО "Бител".


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 09 июн 2014, 17:51 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 03 авг 2009, 18:42
Сообщения: 7166
Откуда: Благовещенск
Карма: 241
Artur, а вот бы в коде увидеть такое волшебство ))))

_________________
Код:
  Клиент: вер. 6.2.714 / 25.05.2015 17:27:15
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
  Сервер: вер. 6.2.881 / 22.05.2015 17:56:55
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
Помощь по администрированию bgbilling в jabber конференции или Группа в telegram
Стиль программирования - пьяный мастерстер
Разработка мобильных приложений


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 47 ]  На страницу 1, 2  След.

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


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

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


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

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