список сообщений создать тему

Выбор даты при расчете бюджета

Версия:

Тип: Ошибка
Статус: Завершено
Важность: Если время будет
Включил и отключил бюджетную дату. Операций не вносил (насколько помню).
Теперьпри отключенной бюджетной дате операции имеют какие-то странные значения для этого поля и значения операций не попадают в отчет и на вкладку бюджет.
Если бюджетный период отключен, в отчет попадают операции по обычной дате.
 
С бюджетом другая ситуация, он, вроде как, продолжает ориентироваться на даты бюджетного периода.
Может переделать этот механизм, чтобы при отключении признака использования бюджетного периода сам бюджет смотрел на реальную дату операции?
Либо гарантировать, что при отключенном признаке бюджетный период совпадает с датой операции.
Может переделать этот механизм, чтобы при отключении признака использования бюджетного периода сам бюджет смотрел на реальную дату операции?
Мне кажется, это будет лучше всего.
не уверен, что выбрал правильное место, но отдельную ветку не хотел делать. По-моему, здесь есть вопрос к "логике дат". И, на мое усмотрение, логики может быть две:
 
- ПОЛНАЯ = должно быть три поля дат: "дата операции", "дата начала БП" и "дата конца БП"
(то есть, все три даты могут быть разными)
 
- УНИВЕРСАЛЬНАЯ = должно быть два поля дат: "дата начала БП" (она же дата операции) и "дата конца БП"
 
Лично я сторонник УНИВЕРСАЛЬНОЙ логики. Понимаю, что такой подход ущемляет операции типа: "плачу в августе помесячную абонплату наперед - за декабрь". Но за то, это даст возможность избавиться от одного поля данных. Что, в принципе, дает повод задуматься о необходимости включать в настройках "бюджетный период" вручную. Такую настройку можно будет убрать. Просто сделать условие "включенным" для всех операций: дата начала всегда есть (она же дата операции), а присутствие данных в необязательном(!) поле "дата конца БП" означает, что учет ведется с использованием бюджетного периода (со всей вытекающей цепочкой потенциальных событий).
Еще два вида логики... Нет уж, давайте пока остановимся на том, что сейчас есть. Чем больше будет сущностей (режимов работы) в программе, тем она сложнее. И так, в общем-то, не простая, так что давайте пока остановимся и исправим существующие ошибки.
Есть ли какие-то новости по задаче?
Операции с несовпадающими бюджетной и реальной датами остаются и мешают.
Что-то я не вижу этой ошибки. Можете прислать мне какой-нибудь тестовый файл, в котором ошибка проявляется?
Отправил часть базы на почту.
 
Еще есть предложение - можно ли сделать sql-скрипт для приведения бюджетного периода в соответствие с датой проводки? Можно было бы все быстро исправить через sql-клиента.
Спасибо, данные получил, но пока не успел просмотреть. Постараюсь сегодня.
 
Насчет скрипта не знаю. Наверное можно просто открыть файл данных в SQLiteBrowser (если не установлен пароль на файл) и сделать там вот такие запросы:
 
SELECT count(*) FROM Transactions
WHERE BudgetPeriodEnd < BudgetDate + 86400
для того, чтобы посмотреть, сколько операций имеют неверную длину бюджетного периода. Там такое правило: BudgetDate всегда указывает на начало бюджетного периода, а BudgetPeriodEnd - на начало следующего дня, за датой окончания бюджетного периода. То есть, если программа показывает, что бюджетный период: 15.10.2015-15.10.2015, то в данных это будет храниться как 15.10.2015-16.10.2015. Ну и 86400, это количество секунд в дне, раз все даты хранятся с точностью до 1 секунды.
 
UPDATE Transactions
SET BudgetPeriodEnd = BudgetDate + 86400
WHERE BudgetPeriodEnd < BudgetDate + 86400
это чтобы проставить минимально возможный бюджетный период для операций с неверным бюджетным периодом.
 
Выполнить эти команды можно во вкладке "Execute SQL" программы SQLiteBrowser. Повторюсь, что файл данных может быть открыт в SQLiteBrowser только если он не зашифрован, то есть, если на файл не установлен пароль.
Ну вот, ошибка найдена и исправлена. Ждем новую, 252-ю сборку.