killer-function. революционно-долгожданный способ ввода расходов/транзакций.
Учёт домашних финансов с использованием существующих решений - как тетрис. Как бы ты хорошо не играл, ты всё равно проиграешь.
Как бы ты исправно и регулярно не вбивал транзакции в систему, наступит момент, когда ты не заведёшь какой-либо расход или "расслабишься" на пару дней. И всё. Актуальное состояние и состояние системы разбегутся.
Существующие решения не позволяют безболезненно _возобновить_ учёт. Чем дольше "расслаблялся" - тем сложнее возобновить. Скажем, через неделю, когда ты уже не помнишь конкретно что и куда ушло.
(Я несколько раз бросал учёт расходов в homemoney и в других программах именно по этой причине.)
А, например, через месяц уже проще обнулить всё, ввести новые начальные состояния счетов и начать заново. Но потеряв при этом всю статистику для бюджетирования и планирования. То есть потеряв то, ради чего всё это дело затевалось.
Выход: максимально упростить "возобновление" ведения учёта.
Применительно к счёту "наличные" это делается так:
1) смотришь в кошелёк, вбиваешь актуальное состояние счёта,
2) получаешь в системе проводку с видом затрат "неучтённое" на разницу между предыдущим актуальным состоянием и текущим.
3) разбиваешь проводку "неучтённое", отщипывая от неё то, что получается вспомнить, восстановить по сохранённым чекам и постепенно, при удачном стечении обстоятельств сводишь её в ноль.
Такой подход даёт сразу несколько ощутимых выгод:
a) всегда актуальное состояние счетов,
b) возможность в любой момент автоматически разбить проводку "неучтённое" и ввести то, что вспомнилось,
с) внутренне спокойствие и комфорт от того, что ничего не забыл.
Получается, что сценарий ввода расходов одинаковый независимо от того сколько времени ты не актуализировал состояние: день или неделю. Естественно приятнее и проще будет его актуализировать ежедневно.
От месяца к месяцу процент расходов по статье "неучтённое" - будет уменьшаться, что будет показателем улучшения качества ведения учёта и улучшения памяти.
Теперь подробнее о самом use case. Для его внедрения нужно предусмотреть 2 новых типа операций:
1) "Актуализировать состояние счёта":
a) вводим новое значение,
b) программа вычисляет разницу между старым и новым значением и формирует проводку "неучтённое" (на счёт "неучтённое"?).
2) "Разделить транзакцию":
a) выбираем транзакцию для разделения,
b) вводим сумму, которую "вспомнили" или восстановили по чекам,
c) программа уменьшает выбранную в пункте (a) транзакцию на указанную сумму и формирует новую транзакцию на указанную сумму.
При этом есть возможность не возвращаясь к пункту (a) сразу ввести следующую "восстановленную" сумму.



