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

Не начисляется абонплата.
http://forum.bitel.ru/viewtopic.php?f=16&t=9382
Страница 1 из 1

Автор:  isDen [ 27 июн 2014, 13:10 ]
Заголовок сообщения:  Не начисляется абонплата.

Добрый день!

Биллинг мне достался в наследство поэтому приходится с работать с тем что имеем.
Версия 4.5.

Есть договор, на нём подвешена услуга Абонплаты. Смотрим в наработке за май месяц 2014 года. абонка отсутствует.
Иду в модуль абон платы, выбираю интересующий договор и делаю перерасчёт за май месяц.

результат работы в логах:

scheduler.log
Код:
INFO   27.06.2014 10:54:21  Running Task: Thread[Thread-267109,1,main]
INFO   27.06.2014 10:54:21  PaymentRecalculator time: 01.05.2014 00
INFO   27.06.2014 10:54:21  [23:00:00; 0] Calculate past month
DEBUG  27.06.2014 10:54:21  [23:00:00; 0] Services: -1,72,73,74,75,76,78,79,80,81,82,83,84,85,86,87,89,90,91,92,93,94,95,96,97,113,240,126,127,128,129,151,152,153,154,155,171,172,173,174,175,184,263,222,223,224,236,264,265,266,267,268,269,272,273,276,277,280,281,283,284,285,286,287,288,290,292,293,294,296,297,298,299,300,301,302,303,304,305,306,308,309,310,315,316,317,318,319,320,321,327,322,323,324,325,326,332,334,335,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,366,367,368,369,370,371,372,376,375,377,378,379,380,381,382,383,384,385,386,387,388,389
INFO   27.06.2014 10:54:21  Memory total: 265 158 656; max: 1 864 171 520; free: 100 653 400
DEBUG  27.06.2014 10:54:21  [23:00:00; 0] Found service taker cid: 103099; sid: 345; date1: 01.01.2013; date2: ; col: 1; eid: 1156274
DEBUG  27.06.2014 10:54:21  [23:00:00; 0] After trimming cid: 103099; sid: 345; date1: 01.05.2014; date2: 31.05.2014
DEBUG  27.06.2014 10:54:21  [23:00:00; 0] Tariff period: 01.06.2010-
DEBUG  27.06.2014 10:54:21  [23:00:00; 0] Calculating item  01.05.2014-31.05.2014
DEBUG  27.06.2014 10:54:21  [23:00:00; 0] Reset request accepted => false relevance => -1 REQ: sid => 345 action => reset RESP: calc_type => 0 calc_mode => month HIST:
DEBUG  27.06.2014 10:54:21  [23:00:00; 0] Request accepted => true relevance => -1 REQ: sid => 345 time => 31.05.2014 00:00:00 action => calculate month_days => 31 period_days => 31 RESP: cost => 12000.0 HIST:
ERROR  27.06.2014 10:54:21  [23:00:00; 0] Duplicate entry '2014-5-103099-345' for key 1
com.mysql.jdbc.exceptions.MySQLIntegrityConstraintViolationException: Duplicate entry '2014-5-103099-345' for key 1
        at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:931)
        at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2870)
        at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1573)
        at com.mysql.jdbc.ServerPreparedStatement.serverExecute(ServerPreparedStatement.java:1160)
        at com.mysql.jdbc.ServerPreparedStatement.executeInternal(ServerPreparedStatement.java:685)
        at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1400)
        at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1314)
        at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1299)
        at org.apache.commons.dbcp.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:233)
        at bitel.billing.server.npay.Calculator.executeTask(Calculator.java:334)
        at bitel.billing.server.task.TaskBase.run(TaskBase.java:45)
INFO   27.06.2014 10:54:21  [23:00:00; 0] time=319 ms.


server.log
Код:
DEBUG  27.06.2014 10:54:21  executing bitel.billing.server.npay.action.ActionRecalculatePay; time => 14 ms.
DEBUG  27.06.2014 10:54:21  executing bitel.billing.server.contract.action.ActionUpdateContractTariffPlan; time => 16 ms.
DEBUG  27.06.2014 10:54:22  executing bitel.billing.server.contract.action.ActionContractTariffPlans; time => 11 ms.
DEBUG  27.06.2014 10:54:24  executing bitel.billing.server.contract.action.ActionContractTariffPlan; time => 14 ms.


scheduler.out ни чего не попало.

видим что sheduler.log есть проблемы (но об этом ниже)
Код:
bitel.billing.server.npay.Calculator.executeTask(Calculator.java:334)


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

Стало интересно что же там такое в
Код:
bitel.billing.server.npay.Calculator.executeTask(Calculator.java:334)


Декомпильнул модуль и вот что в нем увидел:

Код:
query = "DELETE FROM contract_account WHERE yy=? AND mm=? AND sid IN (" + this.serviceList + ")";
      query = query + andCidPart;
     
      ps = this.con.prepareStatement(query);
      ps.setInt(1, this.startMonth.get(1));
      ps.setInt(2, this.startMonth.get(2) + 1);
      ps.executeUpdate();
     
      query = "INSERT INTO contract_account (yy, mm, cid, sid, summa) VALUES (?, ?, ?, ?, ?)";
      ps = this.con.prepareStatement(query);
      ps.setInt(1, this.startMonth.get(1));
      ps.setInt(2, this.startMonth.get(2) + 1);
      for (CostSum costSum : this.costCache.getAmounts())
      {
        ps.setInt(3, costSum.cid);
        ps.setInt(4, costSum.sid);
        ps.setFloat(5, (float)costSum.cost);
        ps.executeUpdate();
        contractForSetBalance.add(Integer.valueOf(costSum.cid));
      }


334 строка это ps.executeUpdate();

видно что из таблицы contract_account сначала вычищаются записи, а потом они туда добавляются снова. Вроде бы всё логично, НО откуда тогда берётся злосчастный «Duplicate entry '2014-5-103099-345' for key 1»?

Вложения:
Свойства.png
Свойства.png [ 6.28 КБ | Просмотров: 5740 ]
Комментарий к файлу: Услуги на договоре
Услуги.png
Услуги.png [ 5.63 КБ | Просмотров: 5740 ]
Комментарий к файлу: Тарифный план
ТП.png
ТП.png [ 4.79 КБ | Просмотров: 5740 ]

Автор:  isDen [ 27 июн 2014, 13:12 ]
Заголовок сообщения:  Re: Не начисляется абонплата.

скрины вдогонку.

Вложения:
Комментарий к файлу: наработка после переобсчёта
Наработка 2.png
Наработка 2.png [ 12.37 КБ | Просмотров: 5739 ]
Комментарий к файлу: Наработка до переобсчёта
Наработка.png
Наработка.png [ 10.78 КБ | Просмотров: 5739 ]

Автор:  stark [ 27 июн 2014, 14:48 ]
Заголовок сообщения:  Re: Не начисляется абонплата.

Обновитесь до 4.6. Там эта функция переписана и скорее всего будет работать.

Автор:  stark [ 27 июн 2014, 15:24 ]
Заголовок сообщения:  Re: Не начисляется абонплата.

а 345 что за услуга ? Это услуга модуля абоплат ? пробовали удалить эту запись перед переобсчетом?

Автор:  isDen [ 27 июн 2014, 16:00 ]
Заголовок сообщения:  Re: Не начисляется абонплата.

stark писал(а):
а 345 что за услуга ? Это услуга модуля абоплат ? пробовали удалить эту запись перед переобсчетом?

345 это как раз услуга «Тарифный план "Горячая линия 2000": абон плата 12000», которая подвешена на договор.
Да пробовал в ручную удалять ее из contract_account, не помогает.

есть ли какие то зависимости от перерасчёта абон плат от настройки модуля?

У меня в настройках модуля есть только одна запись (код модуля совпадает):
Код:
mid=15

сколько не искал так и не смог найти описание всех настроек модуля.

Подскажите, пожалуйста, какие нужно выставить настройки модуля. Или, на крайняк, дайте ссылку с полным описанием свойств.

Автор:  dimOn [ 27 июн 2014, 16:12 ]
Заголовок сообщения:  Re: Не начисляется абонплата.

isDen писал(а):
У меня в настройках модуля есть только одна запись (код модуля совпадает):
Код:
mid=15

не модуля , а задачи уж наверное

Автор:  stark [ 27 июн 2014, 16:44 ]
Заголовок сообщения:  Re: Не начисляется абонплата.

так про настройку модуля или задачи идет речь?..Там для задачи больше и нет никаких настроек

Автор:  isDen [ 27 июн 2014, 17:41 ]
Заголовок сообщения:  Re: Не начисляется абонплата.

может не совсем корректно выразился. Запись mid=15 указана в конфигурации модуля.
Цитата:
так про настройку модуля или задачи идет речь?..Там для задачи больше и нет никаких настроек


речь идёт о том что бы заставить биллинг вновь считать абонплату. Я предположил что это может быть связано с конфигурацией модуля.

Автор:  stark [ 27 июн 2014, 17:52 ]
Заголовок сообщения:  Re: Не начисляется абонплата.

isDen писал(а):
может не совсем корректно выразился. Запись mid=15 указана в конфигурации модуля.
Цитата:
так про настройку модуля или задачи идет речь?..Там для задачи больше и нет никаких настроек


речь идёт о том что бы заставить биллинг вновь считать абонплату. Я предположил что это может быть связано с конфигурацией модуля.


Я не знаю зачем у вас указано mid=15 в конфигурации модуля. Про настройку модуля написано тут:
http://bgbilling.ru/v4.5/doc/ch18s02.html

Автор:  stark [ 27 июн 2014, 18:00 ]
Заголовок сообщения:  Re: Не начисляется абонплата.

и тут:
http://bgbilling.ru/v4.5/doc/ch18s06.html

Автор:  isDen [ 30 июн 2014, 11:47 ]
Заголовок сообщения:  Re: Не начисляется абонплата.

доброй наступившей рабочей недели!
«И вновь продолжается бой...» с абонплатами.
Цитата:
Я не знаю зачем у вас указано mid=15 в конфигурации модуля

Цитата:

вот как раз отсюда я и взял настройку
Код:
mid=15


вот ещё наткнулся на форуме на подобную тему.
Я только не понял при чём тут различные движки (MySQL и InnoDB).
Разработчики поясните в этом ли дело.

Автор:  dimOn [ 30 июн 2014, 12:15 ]
Заголовок сообщения:  Re: Не начисляется абонплата.

Читайте внимательнее: mid=15 указано для настройки задачи, а не модуля

Автор:  dimOn [ 30 июн 2014, 12:17 ]
Заголовок сообщения:  Re: Не начисляется абонплата.

У вас 4.5. так что для вас всё только в MyISAM

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