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

Как так насчиталось?
http://forum.bitel.ru/viewtopic.php?f=22&t=5653
Страница 1 из 1

Автор:  Феанор [ 29 июн 2011, 13:01 ]
Заголовок сообщения:  Как так насчиталось?

Подскажите как биллинг так насчитал? Разница в 5 копеек с тем что должно быть при расчете руками
994000×29÷30×1,18=1133822,67

ps быстрая проверка приводит к подозрению что период снятия АП (29/30) как то неправильно округлился, в соответствии с тем что отображает биллинг это 0,96666663 хотя на самом деле 0,96666666... как так?

pps а сейчас заметил что в супердоговоре наработка этого договора - 63 копейки. WTF?

предвосхищая будущие вопросы:
1. Клиент: вер. 5.1 сборка 511 от 28.04.2011 19:00:59
os:Linux; java:Sun Microsystems Inc., v.1.6.0_22
Сервер: вер. 5.1 сборка 641 от 16.05.2011 21:23:46
os:SunOS; java:Sun Microsystems Inc., v.1.6.0_24

2.в contract_account 1133822.62500

Вложения:
Снимок-21.png
Снимок-21.png [ 16.76 КБ | Просмотров: 4688 ]
Снимок-20.png
Снимок-20.png [ 23.38 КБ | Просмотров: 4691 ]

Автор:  niceone [ 29 июн 2011, 14:08 ]
Заголовок сообщения:  Re: Как так насчиталось?

Феанор писал(а):
Подскажите как биллинг так насчитал? Разница в 5 копеек с тем что должно быть при расчете руками
994000×29÷30×1,18=1133822,67

ps быстрая проверка приводит к подозрению что период снятия АП (29/30) как то неправильно округлился, в соответствии с тем что отображает биллинг это 0,96666663 хотя на самом деле 0,96666666... как так?

pps а сейчас заметил что в супердоговоре наработка этого договора - 63 копейки. WTF?

предвосхищая будущие вопросы:
1. Клиент: вер. 5.1 сборка 511 от 28.04.2011 19:00:59
os:Linux; java:Sun Microsystems Inc., v.1.6.0_22
Сервер: вер. 5.1 сборка 641 от 16.05.2011 21:23:46
os:SunOS; java:Sun Microsystems Inc., v.1.6.0_24

2.в contract_account 1133822.62500

Неплохо живете :)

Автор:  Феанор [ 29 июн 2011, 14:19 ]
Заголовок сообщения:  Re: Как так насчиталось?

niceone писал(а):
Неплохо живете :)

это тестовый биллинг с тестовыми тарифами =)

Автор:  skyb [ 29 июн 2011, 14:37 ]
Заголовок сообщения:  Re: Как так насчиталось?

Феанор писал(а):
Подскажите как биллинг так насчитал? Разница в 5 копеек с тем что должно быть при расчете руками
994000×29÷30×1,18=1133822,67

Там на сколько я помню погрешность есть....но если чесно не совсем понял проблемы

Автор:  Феанор [ 29 июн 2011, 14:50 ]
Заголовок сообщения:  Re: Как так насчиталось?

skyb писал(а):
Феанор писал(а):
Подскажите как биллинг так насчитал? Разница в 5 копеек с тем что должно быть при расчете руками
994000×29÷30×1,18=1133822,67

Там на сколько я помню погрешность есть....но если чесно не совсем понял проблемы

Проблема в том что я не могу понять откуда эта погрешность взялась, вроде все вычисления в bigdecimal везде, не должно быть такой погрешности. И в том, что захочет абонент проверить свою наработку посчитав на калькуляторе, получит такое и устроит скандал. Биллинг на то ж и биллинг чтобы считать правильно. а тут на целых 5 копеек не правильно.

Автор:  Феанор [ 30 июн 2011, 14:34 ]
Заголовок сообщения:  Re: Как так насчиталось?

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

Автор:  Феанор [ 04 июл 2011, 14:59 ]
Заголовок сообщения:  Re: Как так насчиталось?

up

Автор:  Феанор [ 06 июл 2011, 11:02 ]
Заголовок сообщения:  Re: Как так насчиталось?

up! как внедряться если биллинг свою основную задачу - считать правильно не делает правильно?

Автор:  stark [ 06 июл 2011, 14:29 ]
Заголовок сообщения:  Re: Как так насчиталось?

покажите результат запроса
Код:
show create table contract_account

Автор:  stark [ 06 июл 2011, 14:32 ]
Заголовок сообщения:  Re: Как так насчиталось?

И еще мы выложили обновление по этому поводу, но оно вам, возможно, не поможет, если таблица contract_account неверная - есть подозрение на это.

Автор:  stark [ 06 июл 2011, 14:34 ]
Заголовок сообщения:  Re: Как так насчиталось?

И еще включите режим debug в log4j и тогда в логах при начислении будет что-то типа вот этого
Цитата:
Add cost cache cid: 354037; sid: 79; cost: 227016.77419354838709677419354838706


Покажите какой там cost . Скорее всего правильный .

Автор:  Феанор [ 06 июл 2011, 15:44 ]
Заголовок сообщения:  Re: Как так насчиталось?

stark писал(а):
И еще включите режим debug в log4j и тогда в логах при начислении будет что-то типа вот этого
Цитата:
Add cost cache cid: 354037; sid: 79; cost: 227016.77419354838709677419354838706


Покажите какой там cost . Скорее всего правильный .


Спасибо за наводку куда копать, я что то про дебаг и не подумал, надо было посмотреть шедулер - как он считает, да.
Обновился вчера под конец рабочего дня. Сейчас сделал откат и проверил. И в новой и в старой версии счиалось правильно.
07-06/17:27:43 DEBUG [pool-1-thread-1] Calculator - Add cost cache cid: 9734; sid: 1; cost: 1133822.66666666666666666666666666657
07-06/17:27:43 DEBUG [pool-1-thread-1] Calculator - Add detail amount cache cid: 9734; sid: 1; mid: 5; eid: 0; cost: 1133822.6666666667
А вот похоже проблема была с табличкой все-таки.
Сейчас:
Код:
 contract_account | CREATE TABLE `contract_account` (
  `yy` smallint(5) unsigned NOT NULL DEFAULT '0',
  `mm` tinyint(3) unsigned NOT NULL DEFAULT '0',
  `cid` int(10) unsigned NOT NULL DEFAULT '0',
  `sid` int(10) unsigned NOT NULL DEFAULT '0',
  `summa` decimal(15,5) DEFAULT NULL,
  PRIMARY KEY (`yy`,`mm`,`cid`,`sid`),
  KEY `cid` (`cid`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 |


А было (откатился и проверил):
Код:
| contract_account | CREATE TABLE `contract_account` (
  `yy` smallint(5) unsigned NOT NULL DEFAULT '0',
  `mm` tinyint(3) unsigned NOT NULL DEFAULT '0',
  `cid` int(10) unsigned NOT NULL DEFAULT '0',
  `sid` int(10) unsigned NOT NULL DEFAULT '0',
  `summa` float(15,5) DEFAULT NULL,
  PRIMARY KEY (`yy`,`mm`,`cid`,`sid`),
  KEY `cid` (`cid`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 |


Поле сумма было флоат, а после обновления - децимал. Ошибку убрало.

Автор:  stark [ 06 июл 2011, 16:37 ]
Заголовок сообщения:  Re: Как так насчиталось?

Феанор писал(а):
Поле сумма было флоат, а после обновления - децимал. Ошибку убрало.



Ясно . Это наша ошибка . Вы скорее всего скачали с сайта сервер , поставили и не обновляли сразу . У нас там в dump-е неправильная таблица была , а потом при первом обновлении вызывалось

ALTER TABLE contract_account MODIFY summa DECIMAL(15,5);

Исправили, теперь dump актуальный.

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