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

Изменение реквизитов на договоре
http://forum.bitel.ru/viewtopic.php?f=14&t=10620
Страница 1 из 1

Автор:  vkulakov [ 17 июн 2015, 15:21 ]
Заголовок сообщения:  Изменение реквизитов на договоре

Добавил на несколько договоров реквизиты в модуле Bill, потом попытался изменить дату закрытия одного из реквизитов на одном из договоров и... Все реквизиты со всех договоров перескочили на один договор, на котором я пытался изменить реквизит, и стали абсолютно одинаковыми! С остальных договоров реквизиты, соответственно, исчезли.

Раз уж мы начали смотреть код, то в классе AttributeManager нашёл такой код:
Код:
query = new StringBuilder((id <= 0) ? "INSERT INTO" : "UPDATE")
    .append(" bill_attribute_").append(this.mid)
    .append(" SET cid=?, name=?, value=?, start=?, end=?");
if (id <= 0)
{
    query.append(" WHERE id=").append(id);
}


Видно, что условие WHERE добавляются когда id <= 0, т. е. когда нужно вставлять новую запись, не обновлять существующую. Соответственно, добавление новых параметров тоже не работате.

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

Автор:  stark [ 17 июн 2015, 19:31 ]
Заголовок сообщения:  Re: Изменение реквизитов на договоре

vkulakov писал(а):
Вот это точно поломалось после последнего обновления.


Мне всегда нравится эта фраза. в 80 % случаев это не так. Тут класс с 2012 года не трогали. Он либо всегда не работал или что-то не так, но обновление скорее всего никак не влияет


Сходу не нашел ошибки в коде, надо проверять. В оригинале такой код:
Код:
                                if (id <= 0)
            {
               ps = con.prepareStatement( "INSERT INTO bill_attribute_" + mid
                     + " (cid, name, value, start, end) " + " VALUES (?, ?, ?, ?, ?)" );
            }
            else
            {
               ps = con.prepareStatement( "UPDATE bill_attribute_" + mid
                     + " SET cid=?, name=?, value=?, start=?, end=?" + " WHERE id=?" );
               ps.setInt( 6, id );
            }

            ps.setInt( 1, cid );
            ps.setString( 2, name );
            ps.setString( 3, value );
            ps.setDate( 4, TimeUtils.convertCalendarToSqlDate( start ) );
            ps.setDate( 5, TimeUtils.convertCalendarToSqlDate( end ) );

            ps.executeUpdate();

            ps.close();

Автор:  stark [ 17 июн 2015, 19:36 ]
Заголовок сообщения:  Re: Изменение реквизитов на договоре

stark писал(а):
vkulakov писал(а):
Вот это точно поломалось после последнего обновления.


Мне всегда нравится эта фраза. в 80 % случаев это не так. Тут класс с 2012 года не трогали. Он либо всегда не работал или что-то не так, но обновление скорее всего никак не влияет



Хм, прошу прощения. Тут действительно сломали недавно.У меня старый код был.

Автор:  stark [ 17 июн 2015, 19:44 ]
Заголовок сообщения:  Re: Изменение реквизитов на договоре

Исправлено,обновление выкладывается.

Автор:  Phricker [ 17 июн 2015, 19:45 ]
Заголовок сообщения:  Re: Изменение реквизитов на договоре

stark писал(а):
Хм, прошу прощения. Тут действительно сломали недавно.У меня старый код был.

Изображение

Автор:  vkulakov [ 17 июн 2015, 21:46 ]
Заголовок сообщения:  Re: Изменение реквизитов на договоре

Может ещё в соседней ветке посмотрите проблему с y и m в запросе счетов?

А ещё интересно, зачем надо было лезть в класс, который не менялся с 2012 года и что-то там ломать???

Автор:  stark [ 18 июн 2015, 14:22 ]
Заголовок сообщения:  Re: Изменение реквизитов на договоре

vkulakov писал(а):
Может ещё в соседней ветке посмотрите проблему с y и m в запросе счетов?

А ещё интересно, зачем надо было лезть в класс, который не менялся с 2012 года и что-то там ломать???

Так по вашей же просьбе туда функционал добавили. Зачем вам сортировка понадобилась?
А с y m не считаю ошибкой . Можем исправить 6.2 .

Автор:  vkulakov [ 18 июн 2015, 14:53 ]
Заголовок сообщения:  Re: Изменение реквизитов на договоре

Ещё интересно, изменения, которые делаются в 6.0 попадают в остальные версии? В 6.1 и в 6.2? Например, в 6.0 добавили сортировку, в 6.1 она тоже будет? С upload_status тоже интересно.

Не получится ли так, что после обновления на 6.2 у нас всё поломается?

Автор:  stark [ 18 июн 2015, 15:02 ]
Заголовок сообщения:  Re: Изменение реквизитов на договоре

vkulakov писал(а):
Ещё интересно, изменения, которые делаются в 6.0 попадают в остальные версии? В 6.1 и в 6.2? Например, в 6.0 добавили сортировку, в 6.1 она тоже будет? С upload_status тоже интересно.

Не получится ли так, что после обновления на 6.2 у нас всё поломается?



Изменения для 6.0 всегда попадают в более старшие версии. Если этого вдруг не происходит, то это косяк . Часто изменения делаются в ветке разработки(Master) и потом последовательно спускаются до нужной версии.

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

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