Архивирование списаний

Технические вопросы по UTM 5.0
Ответить
murano
Сообщения: 67
Зарегистрирован: Ср окт 14, 2009 06:53

Решение

Сообщение murano »

Народ, надеюсь что мое новое решение для упрощения процедуры архивирования таблиц списаний поможет многоим, смотрим подробности здесь viewtopic.php?t=8312&highlight=%E0%F0%F ... 0%ED%E8%E9

vikm
Сообщения: 16
Зарегистрирован: Вт окт 21, 2008 11:29

Сообщение vikm »

На тестовом стенде создал архивы по месяцам. При проверке корректности отчетов заметил, что результаты основного отчета за прошлые месяцы не сходятся с рабочей системой (где архивация еще не внедрена). С остальными отчетами все в порядке. В debug.log видна разница в запросах выполняемых при основном отчете и всех прочих отчетах.

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

Код: Выделить всё

?Debug &#58; Oct 21 22&#58;14&#58;22 DBCtx&#58; <141987840> SQL SELECT query&#58; SELECT SUM&#40;discount&#41;,SUM&#40;discount_with_tax&#41;,service_type,account_id FROM UTM5arc.arc_dta_2012_09 WHERE discount_date >= 1346436000 AND discount_date < 1349027999 AND account_id='25' GROUP BY service_type, account_id ORDER BY account_id
?Debug &#58; Oct 21 22&#58;14&#58;45 DBCtx&#58; <141987840> SQL SELECT query&#58; SELECT MIN&#40;id&#41;,account_id FROM UTM5arc.arc_dta_2012_09 WHERE discount_date >= '1346436000' AND discount_date < '1349027999' AND account_id='25' GROUP BY account_id
?Debug &#58; Oct 21 22&#58;14&#58;56 DBCtx&#58; <141987840> SQL SELECT query&#58; SELECT MAX&#40;id&#41;,account_id FROM UTM5arc.arc_dta_2012_09 WHERE discount_date >= '1346436000' AND discount_date < '1349027999' AND account_id='25' GROUP BY account_id
?Debug &#58; Oct 21 22&#58;15&#58;41 DBCtx&#58; <141987840> SQL SELECT query&#58; SELECT SUM&#40;discount&#41;,SUM&#40;discount_with_tax&#41;,service_type,account_id FROM discount_transactions_all WHERE discount_date >= 1349027999 AND discount_date < 1349028000 AND account_id='25' GROUP BY service_type, account_id ORDER BY account_id
?Debug &#58; Oct 21 22&#58;15&#58;41 DBCtx&#58; <141987840> SQL SELECT query&#58; SELECT MIN&#40;id&#41;,account_id FROM discount_transactions_all WHERE discount_date >= '1349027999' AND discount_date < '1349028000' AND account_id='25' GROUP BY account_id
?Debug &#58; Oct 21 22&#58;15&#58;41 DBCtx&#58; <141987840> SQL SELECT query&#58; SELECT MAX&#40;id&#41;,account_id FROM discount_transactions_all WHERE discount_date >= '1349027999' AND discount_date < '1349028000' AND account_id='25' GROUP BY account_id
?Debug &#58; Oct 21 22&#58;15&#58;41 DBCtx&#58; <141987840> SQL SELECT query&#58; SELECT SUM&#40;payment_absolute&#41;,account_id FROM UTM5arc.arc_ptr_2012_09 WHERE payment_enter_date >= '1346436000' AND payment_enter_date < '1349028000' AND account_id='25' AND method <> '7' GROUP BY account_id
?Debug &#58; Oct 21 22&#58;15&#58;41 DBCtx&#58; <141987840> SQL SELECT query&#58; SELECT SUM&#40;payment_absolute&#41;,account_id FROM payment_transactions WHERE payment_enter_date >= '1346436000' AND payment_enter_date < '1349028000' AND account_id='25' AND method <> '7' GROUP BY account_id
Выдержки из debug.log, во время выполнения отчета по услугам за сентябрь:

Код: Выделить всё

?Debug &#58; Oct 22 01&#58;14&#58;13 DBCtx&#58; <142115840> SQL SELECT query&#58; SELECT discount, slink_id, discount_date, discount_period_id,account_id, services_data.service_name, services_data.service_type, charge_type, discount_with_tax FROM UTM5arc.arc_dta_2012_09, services_data WHERE services_data.id=UTM5arc.arc_dta_2012_09.service_id AND discount_date>='1346436000' AND discount_date <='1349027999' AND account_id='25' AND &#40;UTM5arc.arc_dta_2012_09.service_type='2' OR UTM5arc.arc_dta_2012_09.service_type='1' OR charge_type='1' OR charge_type='2'&#41; ORDER BY discount_date DESC
?Debug &#58; Oct 22 01&#58;14&#58;24 DBCtx&#58; <142115840> SQL SELECT query&#58; SELECT discount,slink_id,discount_date,discount_period_id,account_id,charge_type,discount_with_tax FROM UTM5arc.arc_dta_2012_09 WHERE discount_date>='1346436000' AND discount_date <='1349027999' AND account_id='25' AND &#40;charge_type='18' OR charge_type='20'&#41; ORDER BY discount_date DESC
?Debug &#58; Oct 22 01&#58;14&#58;35 DBCtx&#58; <142115840> SQL SELECT query&#58; SELECT discount, slink_id, discount_date, discount_period_id,account_id, services_data.service_name, services_data.service_type, charge_type, discount_with_tax FROM discount_transactions_all, services_data WHERE services_data.id=discount_transactions_all.service_id AND discount_date>='1349027999' AND discount_date <='1349028000' AND account_id='25' AND &#40;discount_transactions_all.service_type='2' OR discount_transactions_all.service_type='1' OR charge_type='1' OR charge_type='2'&#41; ORDER BY discount_date DESC
?Debug &#58; Oct 22 01&#58;14&#58;35 DBCtx&#58; <142115840> SQL SELECT query&#58; SELECT discount,slink_id,discount_date,discount_period_id,account_id,charge_type,discount_with_tax FROM discount_transactions_all WHERE discount_date>='1349027999' AND discount_date <='1349028000' AND account_id='25' AND &#40;charge_type='18' OR charge_type='20'&#41; ORDER BY discount_date DESC
Т.е. в отчете по услугам (и всех прочих отчетах, кроме основного):
discount_date>='1346436000' AND discount_date <='1349027999'
discount_date>='1349027999' AND discount_date <='1349028000'

, а в основном отчете:
discount_date >= '1346436000' AND discount_date < '1349027999'
discount_date >= '1349027999' AND discount_date < '1349028000'

Получается, из осн.отчета пропадают списания за последнюю секунду из всех архивных таблиц, входящих в диапазон запроса. В данном примере списания за 1349027999 секунду находятся в таблице arc_dta_2012_09, а UTM их ищет только в discount_transactions_all. Кто-нибудь сталкивался с подобной проблемой?

Аватара пользователя
Magnum72
Сообщения: 1947
Зарегистрирован: Чт сен 22, 2005 06:54
Контактная информация:

Сообщение Magnum72 »

Я сталкивался, но забил, сам формирую отчеты.

vikm
Сообщения: 16
Зарегистрирован: Вт окт 21, 2008 11:29

Сообщение vikm »

Неприятная фича (

rudf
Сообщения: 150
Зарегистрирован: Чт дек 15, 2011 08:55
Откуда: Москва

Сообщение rudf »

vikm писал(а):Неприятная фича (
В каком-то из 008 апдейтов полечили, теперь в 009 версии выполняется условие <= .

vikm
Сообщения: 16
Зарегистрирован: Вт окт 21, 2008 11:29

Сообщение vikm »

Обновился до 008 u8, проблема с осн.отчетом решилась. Спасибо за информацию.

ukilan
Сообщения: 8
Зарегистрирован: Пн янв 02, 2012 17:08

Сообщение ukilan »

up

Архивирование работает отлично, спасибо.
Вот только есть небольшая проблема, если из админки формировать отчеты - выбирая предыдущий месяц - там пусто.
Если выбрать вручную не с 1-го числа 00:00:00, а на 4 часа раньше - 31 числа 20:00:00 то всё показывает. Причём показывает время списание услуг 1 числа 00:00:10
Разница ровным счетом в часовой пояс.

mysql> SHOW VARIABLES LIKE "%time_zone%";
+------------------+--------+
| Variable_name | Value |
+------------------+--------+
| system_time_zone | MSK |
| time_zone | SYSTEM |
+------------------+--------+

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

JAO
Сообщения: 1153
Зарегистрирован: Вт дек 11, 2007 08:17

Сообщение JAO »

У ядра биллинга какой часовой пояс?

ukilan
Сообщения: 8
Зарегистрирован: Пн янв 02, 2012 17:08

Сообщение ukilan »

Если имеется ввиду часовой пояс машины, на которой стоит ядро - то MSK (это GMT-4) или где-то есть настройка именно ядра утм?

Point
Сообщения: 242
Зарегистрирован: Вт ноя 23, 2010 15:42

Сообщение Point »

ukilan писал(а):Если имеется ввиду часовой пояс машины, на которой стоит ядро - то MSK (это GMT-4) или где-то есть настройка именно ядра утм?
а в честь чего это GMT-4 это Москва?

JAO
Сообщения: 1153
Зарегистрирован: Вт дек 11, 2007 08:17

Сообщение JAO »

Москва с недавних пор GMT+4

ukilan
Сообщения: 8
Зарегистрирован: Пн янв 02, 2012 17:08

Сообщение ukilan »

11) none - I want to specify the time zone using the Posix TZ format.
#? 11
Please enter the desired value of the TZ environment variable.
For example, GST-10 is a zone named GST that is 10 hours ahead (east) of UTC.


Вообщем у меня московский часовой пояс. От гринвича +4 часа
tzdata обновлен, и вроде всё правильно - а вот не всё

Аватара пользователя
Magnum72
Сообщения: 1947
Зарегистрирован: Чт сен 22, 2005 06:54
Контактная информация:

Сообщение Magnum72 »

Еще саму java на рабочей станции надо обновить там есть фикс для нее, тут подробнее: http://habrahabr.ru/post/131573/

JAO
Сообщения: 1153
Зарегистрирован: Вт дек 11, 2007 08:17

Сообщение JAO »

С явой тоже довольно помучились в свое время.

Ответить