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

Пропажа 7 копеек (CRM)
http://forum.bitel.ru/viewtopic.php?f=22&t=9595
Страница 1 из 1

Автор:  Villian [ 20 авг 2014, 16:53 ]
Заголовок сообщения:  Пропажа 7 копеек

Вложение:
3.png
3.png [ 58.05 КБ | Просмотров: 4320 ]

Вложение:
1.png
1.png [ 27.61 КБ | Просмотров: 4320 ]

Вложение:
2.png
2.png [ 25.98 КБ | Просмотров: 4320 ]

При занесении платежа на супер договор с привязанным суб договором происходит странное округление

Автор:  Villian [ 20 авг 2014, 16:57 ]
Заголовок сообщения:  Re: Пропажа 7 копеек

Код:
payment => <payment contractId="152644" date="2014-08-20T00:00:00+04:00" id="-1" sum="21.0" summa="21.0" typeId="2" userId="0" xmlns=""><comment/></payment>
distribution => 152644:9.13,152645:11.8

в Журнале видно что обрезаны копейки

Автор:  dimOn [ 20 авг 2014, 17:07 ]
Заголовок сообщения:  Re: Пропажа 7 копеек

версии

Автор:  Villian [ 20 авг 2014, 17:08 ]
Заголовок сообщения:  Re: Пропажа 7 копеек

Код:
 Клиент: вер. 6.1.761 / 28.07.2014 12:13:54
    os: Windows 7; java: Java HotSpot(TM) 64-Bit Server VM, v.1.7.0_45
  Сервер: вер. 6.1.937 / 28.07.2014 12:14:05
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.7.0_60

  bill: вер. 6.1.248 / 26.06.2014 12:59:21
  card: вер. 6.1.198 / 18.06.2014 14:18:25
  dba: вер. 6.1.161 / 18.06.2014 14:18:37
  dialup: вер. 6.1.310 / 07.07.2014 13:57:34
  inet: вер. 6.1.566 / 28.07.2014 12:14:38
  ipn: вер. 6.1.226 / 18.06.2014 14:18:38
  mps: вер. 6.1.172 / 07.07.2014 17:44:50
  npay: вер. 6.1.175 / 09.07.2014 18:54:57
  phone: вер. 6.1.239 / 16.07.2014 18:23:39
  reports: вер. 6.1.183 / 21.07.2014 17:11:14
  ru.bitel.bgbilling.plugins.bonus: вер. 6.1.109 / 23.07.2014 18:37:54
  ru.bitel.bgbilling.plugins.cashcheck: вер. 6.1.95 / 17.03.2014 15:29:55
  ru.bitel.bgbilling.plugins.cladr: вер. 6.1.114 / 02.04.2014 17:58:45
  ru.bitel.bgbilling.plugins.crm: вер. 6.1.185 / 08.07.2014 14:50:13
  ru.bitel.bgbilling.plugins.dispatch: вер. 6.1.51 / 08.07.2014 14:50:16
  ru.bitel.bgbilling.plugins.documents: вер. 6.1.138 / 02.06.2014 20:01:21
  ru.bitel.bgbilling.plugins.helpdesk: вер. 6.1.184 / 23.07.2014 18:37:53
  ru.bitel.bgbilling.plugins.organizer: вер. 6.1.65 / 17.03.2014 15:30:02
  trayinfo: вер. 6.1.161 / 17.03.2014 15:30:33
  tv: вер. 6.1.181 / 09.07.2014 18:54:52
  voiceip: вер. 6.1.179 / 07.07.2014 13:57:50

Автор:  dimOn [ 20 авг 2014, 17:14 ]
Заголовок сообщения:  Re: Пропажа 7 копеек

да, ошибка повторяется

Автор:  Ildar [ 20 авг 2014, 18:57 ]
Заголовок сообщения:  Re: Пропажа 7 копеек

Исправлено. Обновление выкладывается.
У последнего договора в списке вырезалась сотая доля.

Автор:  Phricker [ 21 авг 2014, 13:31 ]
Заголовок сообщения:  Re: Пропажа 7 копеек (CRM)

Спасибо.
Пришлось правда перелопатить все занесенные платежи с момента обновления на 6.1 которые делились по субдоговорам ))) Штук 15-20 выплыло с обрезанными копейками

Автор:  Ildar [ 21 авг 2014, 18:38 ]
Заголовок сообщения:  Re: Пропажа 7 копеек (CRM)

Пожалуйста проверти у себя такие платежи. Создайте у себя приведенный ниже скрипт и выполните его. Он выведет все записи из журнала где пропали копейки.
Данный скрипт не анализирует уже поправленные платежи.

Для оптимизации, выставите в переменной "cal" тот месяц с которого вы перешли на 6.1. Например если переход был в мае то:
Calendar cal = TimeUtils.convertStringToCalendar( "01.05.2014" );

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


Код:
import java.math.BigDecimal;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;

import ru.bitel.bgbilling.common.BGException;
import ru.bitel.bgbilling.kernel.script.server.dev.GlobalScriptBase;
import ru.bitel.bgbilling.server.util.ServerUtils;
import ru.bitel.bgbilling.server.util.Setup;
import ru.bitel.common.Utils;
import ru.bitel.common.sql.ConnectionSet;
import bitel.billing.common.TimeUtils;
import bitel.billing.server.contract.ContractRemover;
import bitel.billing.server.contract.bean.ContractParameterManager;

public class CheckDistributionPayment    extends GlobalScriptBase
{
    @Override
    public void execute( Setup setup1, ConnectionSet connectionSet2 )        throws Exception
    {
        Calendar cal = TimeUtils.convertStringToCalendar( "01.01.2014" );
        String tableName = ServerUtils.getMonthTableName( "bgs_query_log", cal.getTime() );
        int count = 0;
        while( ServerUtils.tableExists( connectionSet2.getConnection(), tableName ) )
        {
            String query = "SELECT query FROM " + tableName + " WHERE mid_aid='0_1001' AND query LIKE '%distribution%'";
            PreparedStatement ps = connectionSet2.getConnection().prepareStatement( query );
            ResultSet rs = ps.executeQuery();
            while( rs.next() )
            {
                String qr = rs.getString( "query" ).replaceFirst( "<p", "p" );
                int ind1 = qr.indexOf( "sum=\"" );
                int ind2 = qr.indexOf( "\" summa=" );
                if( ind1 >0 && ind2 > 0)
                {
                    BigDecimal total = Utils.parseBigDecimal( qr.substring( ind1 +5, ind2 ), null );
                    List<String> dList = Utils.toList( qr.substring( qr.indexOf( "distribution => " ) ) );
                    ArrayList<BigDecimal> disSumList = new ArrayList<>();
                    int cid = 0;
                    for( String d : dList )
                    {
                        String[] s = d.split( ":" );
                        if( s.length == 2)
                        {
                            disSumList.add( Utils.parseBigDecimal( s[1], null ) );
                            cid = Utils.parseInt( s[0] );
                        }
                    }
                    BigDecimal allSum = BigDecimal.ZERO;
                    for( BigDecimal s : disSumList )
                    {
                        if( s != null )
                        {
                            allSum = allSum.add( s );
                        }
                    }
                    if ( total.compareTo( allSum ) != 0 )
                    {
//                        print( qr ); // если нужен весь лог журнала, то раскоментить
                        ind1 = qr.indexOf( "date=\"" );
                        String datePay = qr.substring( ind1+6, ind1+16 );
                        print( cid + " - " + total.subtract( allSum.subtract( disSumList.get( disSumList.size()-1 ) ) ) + "  " + datePay );
                        count++;
                    }
                }
            }
            cal.add( Calendar.MONTH, 1 );
            tableName = ServerUtils.getMonthTableName( "bgs_query_log", cal.getTime() );
        }
       print("Всего записей: " + count);
    }

}


Автор:  Ildar [ 21 авг 2014, 18:54 ]
Заголовок сообщения:  Re: Пропажа 7 копеек (CRM)

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

Автор:  Phricker [ 21 авг 2014, 19:24 ]
Заголовок сообщения:  Re: Пропажа 7 копеек (CRM)

Благодарю. Действительно пропустил некоторые.
Мне скрипт по исправлению не нужен, спасибо.

Автор:  Phricker [ 21 авг 2014, 19:29 ]
Заголовок сообщения:  Re: Пропажа 7 копеек (CRM)

тьфу фак :D Что то затупил. Он же по журналу запросов смотрит. Вывел всех тех кого я уже поправил :D

Автор:  Ildar [ 21 авг 2014, 19:36 ]
Заголовок сообщения:  Re: Пропажа 7 копеек (CRM)

:) Ага. Но если нужно, то можно добавить проверку. Дабы отображались только те кто не был правлен.

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