Семейный бюджет, Google sheets и Python

    Привет, Хабр!

    Сегодня расскажу еще одну историю из своей жизни - в этот раз не про свой “чудо-сервер” в двух частях, а про что-то более приземленное, но так или иначе связанное с технологиями. По моему субъективному мнению подсчет личных финансов крайне полезное занятие и я очень надеюсь, что данная статья замотивирует вас или поможет вам начать “считать деньги” и не влезать в кредиты и т.п.

    Собственно речь пойдет о том, как мы с супругой ведем семейный бюджет, как к этому пришли и о планах на будущее.

    Стоит сразу написать, что я не претендую на роль финансиста, программиста, бухгалтера и т.п., наш способ ведения семейного бюджета не является идеальным, вероятно для вас он будет не применим, но нам так удобно.

    Немного предыстории

    Первые мысли о том, что хорошо бы знать сколько денег на какие расходы уходит и понимать, где можно сократить расходы, а где не получится, появились в 2013 году. Цель была самая что ни наесть обычная, “как у всех”, накопить и приобрести собственное жилье.

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

    1. Возможность заполнять расходы как с ПК, так и со смартфона.

    2. Одновременное редактирование данных текущего месяца без блокировки файла.

    3. Синхронизация данных через интернет (я хотел чтобы данные автоматически синхронизировались между 2мя ПК и 2мя смартфонами).

    4. Возможность резервного копирования на привычный ПК/в Excel.

    Некоторое время я искал именно программу которая будет соответствовать всем этим требованиям, или хотя бы их части, но как в итоге оказалось Google Spreadsheets лучше всего (на мой взгляд) подходил под мои желания.

    В итоге 1 января 2014 года было положено начало учета семейных расходов и доходов:

    Январь 2014 года
    Январь 2014 года

    Таблица выглядит конечно жутко - ни нормального форматирования, ни выделения цветом, да и статьи расхода/дохода (каждый отдельный лист - это статья) не особенно информативны.

    Сумма в 10 320 руб за месяц на еду на двоих сейчас кажется каким-то сюром, а в начале 2014 мы особо ни в чем себе не отказывали - и сыр, и колбаса на столе тогда бывали импортными…

    Кстати самым сложным этапом в подготовке к ведению семейного бюджета было уговорить супругу взять на себя часть этого процесса - помой, убери, приготовь, а теперь еще и чеки записывай, ух, долго мы общались на тему необходимости и полезности этого занятия.

    Сложно было первые 2 месяца - очень не хотелось тратить время на заполнение таблицы, хоть я и старался какие-то единичные покупки (такие как обед на работе, или поход к врачу) записывать сразу с телефона, но вот перебить чек из магазина, раскидав товары по статьям, уже действительно напрягало. 

    Опять же, хоть Google Spreadsheets и поддерживает ввод данных оффлайн (например с телефона пока едешь в метро), но работало в 2014 году это так себе, с вылетами приложения и периодическими исчезновением заполненных строк, в итоге офлайн я старался не заполнять.

    Но примерно через 2 месяца заполнение табличек вошло в привычку и стало даже нравится, особенно проводить ретроспективу расходов и обсуждение моментов для оптимизации.

    К концу года папочка на Google Drive выглядела так:

    Файлы в конце 2014 года
    Файлы в конце 2014 года

    Сейчас сижу и думаю, почему в первый год я не создал сводную таблицу по всем месяцам, хм…

    Но как видно к 2015 году такая мысль меня уже посетила ровно как и то, что название файлов лучше делать по японской модели даты (YYYY.MM):

    Полный 2015 год
    Полный 2015 год

    Из интернетов: Наиболее часто используемый формат даты в Японии - «год, месяц, день (день недели)» , при этом японские символы, означающие «год», «месяц» и «день», вставляются после цифр . Пример: 2008 年 12 月 31 日 (水) для «Среда, 31 декабря 2008 г.».

    В 2015 году внешний вид таблиц особо не изменился, но вот затраты на еду выросли в 2 раза, примерно как курс рубля к “грязной зеленой бумажке”:

    Никакого больше пармезана, теперь кушаем российский сыр по цене дороже итальянского.
    Никакого больше пармезана, теперь кушаем российский сыр по цене дороже итальянского.

    Деньги Деньги дребеденьги

    Переходим к откровенным скриншотам, особо впечатлительным и жадным до чужих денег просьба отползти от экранов:

    Интересно, а за 30 лет можно накопить на квартиру в Москве?!
    Интересно, а за 30 лет можно накопить на квартиру в Москве?!

    С 2014 года наши расходы выросли примерно в 2 раза (в рублевом выражении, в долларах даже немного упали), причин тому несколько.

    У нас подрастал первый ребенок и появлялись новые расходы - начиная с памперсов, заканчивая платной медициной (что хотите пишите, но на наш с супругой взгляд в РФ медицина только платная, по ОМС лучше не ходить, если есть такая возможность).

    В Июне мы приобрели второй автомобиль Hyundai Getz 2008 года, оказалось с ребенком все же лучше иметь 2 авто в семье (здравствуй жизнь в заМКАДье, метро появится только через пару лет, хотя обещали аж в 1985 году). Не раз получалось, что уехав на работу я оставлял супругу с ребенком без возможности комфортно выехать хоть в магазин, хоть к врачу.

    Ну и в Июле мы слетали в Турцию аж за 82 тысячи рублей + 20 тыс рублей брали с собой наличными (естественно переведя в доллары).

    Итого за 2015 год мы отложили баснословные 135 рублей 65 копеек, кто-то скажет, что с жиру бесимся и так далее, но опять же по нашему убеждению наши траты ну никак не выходят за рамки разумного для семьи, где оба родителя имеют высшее образование и один из них работает в области ИТ в очень неплохой компании.

    Опять же многие мои знакомые, которые не считали расход/доход, были очень удивлены, когда я все-таки убедил их заняться этим хотя бы на 2-3 месяца - в самом деле цифры на бумаге просто шокируют, когда не считаешь траты, всё воспринимается совсем иначе.

    Шло время, таблица постепенно видоизменялась и модернизировалась, в отдельную папку были выведены расходы по автомобилям, с разбивкой на статьи:

    Многовато файлов, надо автоматизировать!
    Многовато файлов, надо автоматизировать!

    Файл для учета расходов на автомобиль выглядит примерно так:

    Но самое большое изменение было в итоговом файле, помимо раскрашивания цветом денежного потока и % отложенного на конец месяца, появился лист со сводной таблицей всех статей расхода и дохода из всех файлов, заполнять его конечно не просто, но делается это один раз в год и требует примерно 30 минут моего времени.

    Тут без цифр, уж извините NDA действует 3 года, но зато покажу вам оставшийся % от общего дохода, как бы мы все же стараемся экономить
    Тут без цифр, уж извините NDA действует 3 года, но зато покажу вам оставшийся % от общего дохода, как бы мы все же стараемся экономить
    Разбивка по статьям.
    Разбивка по статьям.

    Собственно лист расходов по статьям. Доходы закрыты “привет NDA”, единственное, на что хочу обратить ваше внимание, что их источников несколько. Наша логика такова, что нужно не налегать всеми силами на экономию, а стараться увеличивать доходы и диверсифицировать их источники.

    В конце статьи будут ссылки на все шаблоны таблиц, а сейчас предлагаю перейти к части про Python и Телеграм.

    Telegram-bot на Python

    Собственно примерно в сентябре 2020 я решил, что надо бы вернуться к python, а то совсем забросил его, а задачки на leetcode и codewars уже надоели, хотелось сделать что-то более осязаемое. И тут пришла в голову мысль - а не сделать ли Телеграм-бота, который будет по сообщению заполнять расход (через гугл-таблицы на телефоне не всегда удобно да и вообще будет весело).

    Опять же небольшой дисклеймер.

    Результат моего труда скорее MVP, код УГ, автор как водится … и так далее по тексту, но делал я его на коленке за 3-4 неполных дня из которых больше времени ушло на изучение документации api google spreadsheets и telegram.

    Началось все с простого изучения интернетов “Ок Google: Как написать ТГ-бота”…

    Довольно быстро я понял, что почти везде делают ТГ-бота, который просматривает обновления в чате постоянным обращением к API (polling) - из плюсов можно начинать разрабатывать сразу у себя на ПК, без плясок с бубном, зарегистрировали бота и сразу “подписываемся из IDE на его окно чата”.

    Но как истинный джедай я решил, что надо сразу делать на webhook’ах, т.к. записывать что-либо через бота я буду довольно редко, а супруга скорее всего вообще не будет им пользоваться, так что постоянно спамить запросы к API нецелесообразно.

    Потратив некоторое время на поиск решения я нашел довольно элегантный путь всего в 3 шага. Я думаю многим знаком сервис ngrok - для чего-то серьезного он вряд ли подойдет, но быстренько сделать себе туннель для локальной разработки можно.

    Денег за рекламу они не платили, так что вот несколько альтернатив:Localtunnel - https://localtunnel.github.io/www

    Teleconsole - https://www.teleconsole.com/Pagekite - https://pagekite.net/ 

    После запуска вы получаете адрес вида: http://1c0306c9372f.ngrok.io и редирект запросов с него на ваш localhost с указанным портом при запуске:

    Консоль с запущенным ngrok
    Консоль с запущенным ngrok

    В итоге при обращении на указанный адрес наши запросы будут попадать к нашему локальному боту (запущенному хоть из IDE PyCharm/VSCode), который в свое время будет общаться с ТГ API по токену.

    Данный URL необходимо зарегистрировать в Telegram API примерно следующим образом:https://api.telegram.org/bot{my_bot_token}/setWebhook?url={url_to_send_updates_to}

    А вообще RTFM.https://core.telegram.org/bots/api#setwebhook

    Для того чтобы бот сидел и слушал входящие запросы я решил использовать Flask.

    Для работы с Telegram API я использую готовую библиотеку telebot (зачем изобретать велосипед если он уже есть и очень даже ничего). 

    Аналогично и с Google SpreadSheets - есть готовая библиотека gspread с очень широким функционалом.

    Для обеспечения минимальной безопасности используется библиотека SSLify и импорт токенов из соседнего файла .env 

    Выглядит это так:

    Начало нашего бота
    Начало нашего бота

    Собственно в самом начале python-файла мы импортируем все необходимые библиотеки.

    Далее функция load_dotenv() производит загрузку переменных из операционной системы (или лежащего рядом файлика .env) - сделано это для обеспечения минимальной безопасности.

    Так как для работы с Google SpreadSheets нам необходим Service account с json-токеном, а для телеграм бота API-ключ, которые по сути обеспечивают полный доступ к нашим файлам (которые мы предварительно расшарили на этот сервисный аккаунт) и к нашему ТГ-боту, то следует скрыть их от посторонних глаз в переменных ОС или файле .env.

    Сначала я хотел добавить в статью описание как получить API token для Telegram и Google API, но статья и так получилась большая, поэтому кусок с инструкциями я решил удалить.

    Основное меню бота

    При вводе команды /Start или /Help бот выведет следующее меню:

    Главное меню. Телеграм
    Главное меню. Телеграм

    Как видим здесь перечислены все команды, которые бот поддерживает на данный момент, генерируется это сообщение следующим кодом:

    Главное меню. Код.
    Главное меню. Код.

    На 167 строке у нас расположился декоратор от библиотеки telebot - здесь происходит считывание команды Start или Help из входящего сообщения к боту.

    Если команда распознана, то происходит запуск функции handle_start_help на 168 строке (да, я не особо заморачивался с названиями).

    172 строка проверяет ID-пользователя (в данный момент я разрешил пользоваться им только себе). В идеале когда-нибудь конечно же стоит прикрутить к боту sql и проверку соответствия учетки ТГ в sql к нужному google service account и маске наименования файлов, правам чтения и записи и т.д. и т.п.

    174 строка собственно отправляет в чат сообщение с текстом (для отправки мы снова обращаемся к библиотеке telebot).

    На 184 строке задано условие, которое отправит вам в чат сообщение о запрете использования бота, если ваш ID отличается от моего.

    Чаще всего я пользуюсь функцией добавления покупки в текущий месяц, для этого использую функцию add_current_month_expense:

    Функция добавление покупки. Шаг первый.
    Функция добавление покупки. Шаг первый.

    Помимо уже известного нам декоратора, ожидающего теперь команду /AddExpenseToCurrentMonth или ее аббревиатуру /AECM и проверки на ID-пользователя, от которого эта команда была получена, теперь еще задействуется функционал Google Spreadsheets и библиотека gspread.

    234 строка - открывает документ текущего месяца. Так как все файлы у меня сейчас называются однотипно по маске “YYYY.MM Family budget“, то легко сформировать название файла с помощью функции datem.today().strftime("%Y.%m")  и добавить текст " Family budget".

    235 строка - создает список из листов документа.

    236 строка - убирает 2 последних элемент (ими являются лист с общим балансом за месяц и лист с другими доходами, такими как продажа вещей на авито и т.п.)

    Строки 238-239 - это цикл, который создает будущее сообщение бота со списком категорий (листов) и присваивает им номера (см скрин ниже).

    240 отправка сообщения от бота пользователю с разбивкой получившихся ранее строк через “\n” - с новой строки.

    241 строка - это вывод сообщения пользователю о необходимости выбора категории затраты и ожидание ответа от пользователя. 

    242 запуск следующей функции с передачей ей полученного сообщения от пользователя и списка листов.

    Шаг второй, выбор категории.
    Шаг второй, выбор категории.

    По какой-то причине я не сделал сразу ввод и парсинг категории и самой покупки в первом же сообщении, но уже как есть.

    На 254 строке мы присваиваем переменной category_num цифру, полученную из текста сообщения пользователя, переводя ее в тип interger и отнимаем единицу т.к. список наш все же начинается с 0.

    Дальше начинается блок try except - в случае некорректного ввода номера категории будет выведено сообщение об ошибке:'ERROR!\nCategory ' + str(message.text) + ' not found!\nTry once more!'

    И повторный запрос ввода категории. Бот будет вас спрашивать пока не дождется правильного ввода (тут тоже надо подумать на предмет либо таймаута, либо количества попыток для возврата к изначальному меню, хотя можно просто ввести команду /start и начать ввод заново).

    Вот так это выглядит в чате Телеграм
    Вот так это выглядит в чате Телеграм

    Если же категория была выбрана корректно то мы попадаем в условие “if”.

    257 строка выводит нам сообщение с номером выбранной нами категории и именем листа, полученного из списка по индексу.

    После чего на 259 строке бот ответит нам с просьбой ввести Название нашей покупки и стоимость в формате “название:цена”.

    Знак “ : ” будет использован как разделитель для дальнейшего парсинга.

    Введя название покупки, ее стоимость и отправив сообщение боту происходит запуск следующей функции add_current_month_expense_input_string, передав в нее сообщение и номер категории.

    Шаг третий, заносим данные в таблицы.
    Шаг третий, заносим данные в таблицы.

    При должном старании и потратив некоторое время подозреваю, что эту функцию можно сократить раза в два, но текущий вариант такой, как на скриншоте.

    281 строка формирует список из 2х элементов определив их с помощью знака “ : ”.

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

    В остальном начинается все также - открываем документ, берем текущую дату, переходим на нужный лист, но далее на 287 строке мы обращаемся к функции next_available_row, которая вернет нам следующую пустую строку на листе, где мы и будем заполнять наше значение.

    Пробежимся быстро по ней:

    31 строка - присваиваем переменной “ i “ общее количество колонок в документе.

    32 строка - создаем пустой список.

    Пока “ i ” больше 0 мы перечитываем все значения полученные из каждой колонки, отфильтровав “None” - что означает, что ячейка пустая, добавляем единицу и присваиваем получившееся число переменной “result”.

    После чего на 35 строке наполняем список “result_list” получившимися значениями result.

    36 строка - счетчик наших колонок, отнимаем 1 т.к. мы обработали 1 колонку, собственно это происходит до момента, пока не будут обработаны все имеющиеся колонки на листе.

    Строка 37 - сортируем получившийся список от наименьшего к наибольшему числу.

    Строка 38 - присваиваем значение последнего элемента списка (наибольшую цифру) переменной “empty_row” 

    На 39 строке мы присваиваем переменной “last_row” - значение предпоследней строки на листе.

    А дальше проверяем, если “last_row” не пустой, то добавляем еще 5 строк или сразу присваиваем значение переменной “empty_row” номер последней строки с данными + 1.

    После чего возвращаем значение переменной “empty_row” в данном случае в функцию add_current_month_expense_input_string. И все это ради того, чтобы узнать где же у нас там пустая строка на листе.

    Строки 288-308 необходимы для предварительного форматирования ячеек в нужный формат, стоит кстати вынести их в отдельную функцию, надо записать себе.

    309 строка - вносим значение первого элемента из списка “input_list” в ячейку “А+номер пустой строки”.

    310 строка - проставляем сегодняшнюю дату в ячейку “B+номер пустой строки”.

    311 строка - вносим значение второго элемента из списка “input_list” в ячейку “C+номер пустой строки”.

    312 строка нужна для считывания строки, которая получилась после ввода данных и отправки пользователю сообщения, в качестве подтверждения результата ввода с содержимым строки.

    Как то так.
    Как то так.

    На этом заканчивается путь ввода покупки для текущего месяца.

    В рамках данной статьи мы не будем рассматривать все функции реализованные в коде на данный момент, я лишь кратко опишу до чего у меня дошли руки.

    "/start or /help" - Отображение списка поддерживаемых команд.

    "/CurrentMonthBalance or /CMB" - Показать баланс за текущий месяц, общий доход, расход и их разницу. 

    "/DefinedMonthBalance or /DMB" - Показать баланс за указанный месяц/год, общий доход, расход и их разницу. 

    "/CurrentMonthExpenseByCategory" - Показать детализацию расходов с разбивкой по категориям за текущий месяц.

    "/ExactMonthExpenseByCategory" - Показать детализацию расходов с разбивкой по категориям за указанный месяц/год.

    "/AddExpenseToCurrentMonth or /AECM" - Добавить покупку в текущий месяц.

    "/AddExpenseToDefinedMonth or /AEDM" - Добавить покупку к указанному месяцу/году.

    "/FormatDefinedFile or /FDF" - отформатировать весь указанный документ по заданному шаблону колонок содержащих цены, даты и т.п. Используется для исправления форматирования после копипастов, чтобы не делать это руками.                                  

    Что еще есть в задумках:

    • Рефакторинг кода для уменьшения повторяющихся действий в функциях.

    • Возможно руки дойдут до переработки в ООП.

    • Функция создания файлов на весь год вперед с перелинковкой на итоговый документ (сейчас ссылки в сводной таблице я делаю руками, массовой заменой конечно, но все же).

    • Прикрутить БД и проводить авторизацию IDшника там, может быть добавить пароль/кодовую фразу для обращения к боту раз в сутки или что-то подобное.

    • Убрать хардкоды форматирования и т.п., заменив на поиск ключевых заголовков.

    На этом я хотел бы закончить и без того длинную статью, очень надеюсь, что вы занимаетесь собственной финансовой грамотностью и избегаете неоправданных кредитов.

    Как и обещал ссылки:

    https://github.com/iliyakarin/TelegramExpensesBot

    https://drive.google.com/drive/folders/1ZL3n6Oyyy5iJSoh88ObUT85HSWSrPYCD?usp=sharing

    Similar posts

    Ads
    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More

    Comments 87

      +2
      Интересно. Тоже хочу автоматизировать запись расходов. Всё по старинке в google sheet. Спасибо, что поделились опытом.
      А не думали прикрутить бота к таблице в google sheet?
        +2
        А что имеете ввиду под прикрутить бота к google sheets?
        Данные из таблиц бот получает, в таблицы вводит.
          +2
          Да, точно увидел в статье про «gspread». Сразу не заметил.
            +2
            Ага, есть там такое.
            Немного допилить и будет создавать сам таблички на весь год по желаемой маске наименования файлов и т.д.
            Надеюсь будет время займусь этим пунктом.
        0
        Сколько я не пытался автоматизировать учет расходов и доходов, в итоге все равно вернулся к блокноту (настоящему, в котором ручкой пишут)
          +2
          Дак главное что бы вам удобно было.
          Основной смысл ведения учёта это понимание структуры своих расходов и доходов.
          Понять где лучше притормозить и поднажать да бы не платить очередному банку 100500% interest rate.
          0
          Если цель именно потрениться в пайтон — то огонь, но если именно удобство ведения семейного бюджета — есть апки куда удобнее данных манипуляций ( Coinkeeper, Дзен мани и тд)
            +1
            Ну, в моем случае оно так исторически сложилось.
            Я не помню в 2013 году какие были приложения на рынке с возможностью синхронизации и одновременного заполнения с нескольких устройств, но Google Spreadsheets в те годы уже это умел, сейчас менять формат не хотелось бы, т.к. тем же Python уже можно делать глубокую аналитику по файлам и т.п.
            Посмотрим что будет дальше, но пока что так.
              +2
              Есть ещё KMyMoney, GnuCash и подобные.
              0

              Кстати, а никто не посоветует софт для оцифровки длинных (которые в сканер не лезут) чеков хотя бы из Ленты и O'Кей?

                0
                По-моему, эти чеки в налоговую онлайн отправляются. Думаю, должен быть способ их оттуда достать уже в нормальном виде для обработки.
                  +1
                  Лично я бы не хотел привязываться к той же налоговой, мне кажется это не совсем стабильный и правильный вариант. Да и условно «завтра» они могут запретить туда доступ.
                  Большой чек можно как мне кажется фоткать в режиме панорамы и распознавать.
                    +1
                    Это вы зря, очень удобно, особенно выписка своих чеков. Можно в формате json или pdf. Опять же не надо разбирать ручками, какой товар вы купили в QR-коде уже всё есть. Опять за руку поймать нечестных торгашей очень легко. Например у нас это филиал светофора.
                      0
                      Раньше тоже вручную вбивал, но последние три года получаю чеки по qr-коду и счастлив. Продолжать жрать кактус, когда есть нормальная еда, под предлогом «а вдруг нормальную еду отберут» как-то чересчур по-спартански.
                      +1
                      Можно, только у вас источников обработки этих чеков будут десятки. Почта, бумажный, только pos чек, только в банке расходная операция и т.д.
                      0
                      FinPix — есть возможность сканить чеки по qr и получать данные из налоговой
                        0

                        Спасибо, гляну. Мне бы, конечно, для десктопа… Ну и больше интересует, на самом деле, не контроль расходов, в больше хочется самому на динамику цен посмотреть.

                          0
                          Тоже пользуюсь. Перепробовал много приложений, пока лучше не нашел.
                        +1
                        Я зашёл посмотреть как вы скрапили чеки и сводили одинаковые товары из разных магазинов, жаль придётся самому(
                        10 лет уже пользуюсь расчётами только картами одного банка (в том числе дорогостоящее лечение и приобретение автомобиля) и могу выгрузить csv оттуда за любой период, но очень не хватает систематизации приобретаемых товаров и услуг.
                          +1
                          В планах подобное есть, но ни как руки не доходят.
                          Опять же пока не определился с подходом, в идеале как я для себя вижу это фоткать чек в ТГ и распознаванием парсить текст и раскидывать по категориям, вроде как даже есть доступные API для этого, но пока что времени не нашел да бы попробовать.
                            +1
                            Есть приложение от налоговой, которое в json отдаёт содержимое чеков и может на почту высылать. Но всё равно собирать и фоткать чеки муторное занятие, и не всегда pos терминалы выдают qr код. А некоторые чеки за каршеринг или доставку на почту приходят, тоже отдельно обрабатывать надо. Вперёд в цифровизацию!
                              +1
                              Да, вероятно надо изучать вопрос глубже.
                              Отпуск что ли взять для этого =)))
                                0

                                Теоретически наверное можно из этого приложения отправлятть json телеграм-боту, который будет уже парсить их.
                                Но пока и API налоговой вполне себе работает.
                                Переписал на C# код из этой статьи https://leftjoin.ru/all/nalog-ru-client/ — пока все ок.

                          +2
                          Веду семейный учет в AbilityCash года с 2007го. Постепенно перешел к тому что 95% оплат идет картой и собирать чеки не так важно. Единственное что собираю чеки где вперемешку товары разных категорий — продукты/бытхимия и т.п. (тот-же Окей).
                          Программа более менее удобная. Из минусов — работа только на ПК. Заставить жену вбивать не смог, да и нет смысла раз в 2-3 дня вбить расходы по данным онлайн банка — не проблема.
                          Поначалу тоже вбивал все продукты детально. Потом понял что уходит слишком много времени я проку ноль. В итоге раздел продукты свелся к Продукты (в подгруппах «продукты и „готовая еда“) и Алкоголь (внутри Вина/Пиво/Крепкие напитки).
                          В программе есть возможность аналитики по „Проектам“, в проекты загнал авто (можно видеть в отчетах расходы на конкретное авто) и клиентов (чтобы видеть сколько и за что мне заплатил клиент).
                          Также можно делать некое планирование — если забить регулярные платежи/поступления — можно смотреть сколько будет на остатке через произвольный период, когда будет погашен кредит или накоплена сумма на счете.
                          Несколько архаичная, но удобная программа.
                            +1

                            У меня одно из основных желаний было иметь синхронизацию и возможность добавлять с мобильного.
                            На самом деле я вполне привык и мне удобен мой вариант, разве что аналитику сквозь годы можно доработать.

                              +1
                              Синхронизация решается размещением на google disk и приложением от него для win. Ввода с мобильника нет, и вероятно, не будет. Но, не так оно и нужно на самом деле. При наличии компа и дома и на работе — можно вбивать где удобно. Зато аналитику можно навертеть любую. Удобно в конце года смотреть «сколько пропил, сколько проел и где можно ужать расходы»
                                0
                                Да, понятно что можно разместить на любом облачном диске, но мы с супругой часто вводим одновременно и т.п.
                                Согласен что при желании найти возможности всегда удастся, но я пока что остановился на своем варианте, и сейчас уже даже скорее есть интерес покрутить самостоятельно на python аналитику и т.п.
                            +1

                            Сам год назад задумался о том, что было бы полезно вести учёт доходов/расходов. Большинство приложений были закрытыми, а Google Sheets не понравились: готовые шаблоны не очень подходили, да и лень было в формулах разбираться (ну и конечно хотелось свой велосипед написать, куда же без этого). В итоге написал своё серверное приложение (Go+PostgreSQL, HTML+CSS+JS) — github.com/ShoshinNikita/budget-manager


                            В целом, устраивает. Разве что из проблем — невозможность использовать на телефоне: интерфейс не получается уместить на маленьком экране. Думаю, правда, попробовать написать полноценное приложение на Flutter, но руки никак не доходят. Идея с Telegram Bot тоже приходила, но понял, что на компьютере мне элементарно проще набирать (+ в интерфейсе реализовано автодополнение — очень много времени экономит)


                            Есть мечта прикрутить распознавание текста или использовать API налоговой. Но и там и там есть проблемы: у каждого магазина свой формат чека, поэтому не получится общего решения, а для API надо регистрироваться. Плюс есть общая проблема — в чеках название товара сокращается до условного "Мол. паст.", самому иногда сложно понять, что это значит

                              +1
                              Круто!
                              В любом случае учет идет, польза уже должна быть от этого!
                                0
                                Вот у меня давно есть учёт, а пользы не замечаю. Какая польза при учёте есть у вас?
                                При систематизации покупок, я хочу их автоматизировать и переложить на сервисы маркетплейсов.
                                Пока иных полезных вещей не могу найти.
                                  +1
                                  Я планирую крупные покупки исходя из остатков прошлых периодов, а так же периодически делаю ретро и изучаю вопрос на предмет мы стали больше тратить из за роста цен, или разошлись по каким то статьям и надо немного ужаться.
                                  Так же в некоторых статьях есть лимит до конца месяца и в процессе хозяйственной деятельности удобно видеть желаемый остаток на траты по данной статье.
                                    0
                                    Я давно (13 лет назад) пришёл к подходу «увеличивать доход на 20-40% ежегодно», ещё дольше (15-17 лет назад) контролирую свои траты на всё (ужиматься это вредно для психики, просто критически подхожу к любой трате, нужно ли оно вообще). Вместо мыслей, что я не могу себе позволить бугати, я думаю что мне не упёрлась бугати (с макарошками или памперсами так не прокатит).

                                    Крупные покупки — более 5 тысяч и менее 500 тысяч совершаю в любой удобный момент.
                                    ОЧЕНЬ крупные траты (более 500 тысяч) планирую минимум за 1-2 года.
                                    Ретро делал раз в 2,4,5 лет, планирую делать далее раз в 5 лет или в случае изменения цены на доллар более 21%.
                                      +1

                                      Я пока что не дошел до возможности ежегодно увеличивать свой доход на 20-40%, я простой инженер, тут есть предел в доходах. ;-)

                                        0
                                        Есть, я как раз нахожусь у предела и голову ломаю как преодолеть свой предел. К сожалению 1-2 года видятся мне как изменение подхода и только потом новые витки роста.
                                          +1

                                          Собственно и я на верхней границе по зарплате в России.
                                          Тут или на США работать надо или менять сферу кардинально. 20-40% в год уже давно видится как нереальная цель.

                                            0

                                            Почему же кардинально, можно в айти предпринимательство уйти. Но да Европа/США выглядят проще и надёжней, но потом то всё равно в предпринимательство, там тоже не бесконечный рост.

                                              +1

                                              Предпринимательство за частую приносит даже меньший доход чем работа по найму.
                                              Опять же риски, больше предпринимателей закрываются в минус с кредитами на бизнес чем становятся успешными. Но это уже всё о другом.

                                    0

                                    Я сейчас веду учёт скорее ради статистики: интересно, сколько конкретно на какие категории потратил. Хотя последнее время пропорции не сильно меняются


                                    Ну и ещё есть желание записывать всё, что происходит: прочитал статью, что-то купил, посмотрел фильм/сериал. Такой своеобразный дневник получается. Правда, не очень очевидно, имеет ли это какой-то смысл. Хотя иногда и бывает любопытно вспомнить, что происходило несколько месяцев назад

                                0
                                с алкоголем это не прокатит, собьешься))) весь этот учет фигня, у меня все в голове, я знаю сколько я трачу и потрачу в следующий месяц (как таблицу умножения), почти до копейки, плюс минус тыща рублей вас не спасут, и смысл чего то вести, когда заняться нечем, сами знаете, понятно если миллионы зарабатывать, может и имеет смысл вести учет, а это ни о чем
                                  +1
                                  Попробуйте не употреблять алкоголь. Алкоголь — это яд, я проверял)
                                    –5
                                    ну этот сайт явно не для алкашей наверно, тут сборище евреев собралось, меня всегда умиляли такие статьи, сьэкономить рубль, а потом разориться в депрессии какой нить, так может не надо себя до этого доводить? а в трезвом уме и здравом смысле просто в голове прикидывать куда как и чо? не? а не сидеть в екселе надр*чив… ть очередной бизнес план по экономии семейного бюджета, один раз живем, не занимайтесь фигней
                                      +1
                                      Я фанат автоматизации, а не экономии на спичках. Думаю с ТС у нас разные цели немного.
                                        +1

                                        Я искренне за вас рад если вы без планирования можете приобрести дом в Москве за 25+- млн рублей. Мне же удобнее в Экселе.

                                          0
                                          25 лямов, да вы батенько богато живёте… В Москве можно вторичку за 9-11 взять неплохую.
                                            +1

                                            Я про дом, а не квартиру.
                                            Да и приличная вторичка в 4 комнаты на 100-120 метров стоит ближе к 20ке, ни каких 9-11 уже не выйдет. 9-11 это обычная двушка в замкадье.

                                              0

                                              Тогда дом не в Москве) но желаемый дом у меня стоит 1-2 миллиона долларов и ещё 100к руб. ежемесячное содержание такого дома. Так что я решил отказаться от дома, если всё равно не соответствуют моим требованиям мои возможности.

                                                +1

                                                За 1-2 млн долларов дом я не хочу, не вижу смысла, мне хватит и 10 соток в 20 км от МКАД и 150-200 метров в 2 этажа без лепнины и итальянских диванов, да и ёршик можно за тысячу рублей приобрести.

                                                  0
                                                  Интересно, что за требования к дому за 2млн$? Если вы проведете декомпозицию дома с участком за 2млн$ и поймете, что конкретно вас возбуждает, то окажется что к этому можно прийти за 200к$, а то и дешевле. Все что сверх, это от лукавого)
                                                    0
                                                    Ну у каждого свои желания и требования, я например по текущим ценам ориентируюсь на 20-25 млн руб в готовом варианте под ключ.
                                                    Но ведь аналогичный дом в другом направлении Мск может и 2 и 10 и 100 млн долларов стоить.
                                                      0

                                                      Может я хочу от лукавого) бассейн, баня, ландшафтный дизайн, домик для гостей, дом для персонала. Мечтать же не запрещено)

                                                        0

                                                        Как показала практика все это лишнее.
                                                        Домик для гостей превращается в склад хлама, ландшафтный дизайн на долгую ппц как дорого, бассейн простаивает куда больше чем используется, сауна использовалась 2-3 раза после чего стала сушкой для полотенец.
                                                        Проще в аквапарк пару раз в год сходить.

                                                          0
                                                          Вот я и отказался от этой идеи) хотя если деньги будут жечь карман, вернусь к ней.
                                          +1

                                          Я предпочитаю занимать голову работой и семьей.
                                          Да и не верю я вам что вы помните и знаете все свои затраты и доходы.
                                          У вас поди ещё и кредиты есть?

                                            0
                                            вы не поверите, ни одного, все что надо я купил, в кредит, не пострадал от переплат, зато теперь и купить не знаю чего, всего хватает
                                              0

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

                                          0

                                          Я начал вести учет расходов в районе нового года с 2017 на 2018. Три месяца писал в google spreadsheets, а в марте поехал в Японию и столкнулся с вопросом "как же мне разные валюты друг с другом сравнивать". И там, в японской гостинице, наваял нечто на лиспе. Показал людям в телеграм чатике, а в ответ услышал "так есть же готовое — hledger". После этого я взял hledger, перенес в него свои записи из гуглтаблицы и… все. Так им и пользуюсь. Для всякого анализа и прочих сводных данных у меня пачка готовых запросов, которые засунуты в емаксовый org-документ (и я могу сделать его экспорт например в pdf).


                                          Пример запроса

                                          image


                                          Конечно, такой подход никак не удается сдружить с "вводить с телефона", да и расходы супруги я не учитываю, только свои. Но меня это все устраивает.


                                          Из автоматизации сделал только разделение на категории продуктов, а чуть позже еще и полуавтоматический анализ почты (почта у меня выкачивается через mbsync, а питоновские скрипты умеют туда залезть).

                                            +1

                                            У нас общие расходы/доходы, так что нужно учитывать вместе. Мы бюджет ни когда не разделяли.
                                            А вот насчёт почты интересная мысль, спасибо.

                                              0

                                              Я пробовал одно время учитывать также и то, что она зарабатывает/тратит, но в итоге мне надоело ее по этому поводу дергать.

                                                +1

                                                Моя сама записывает. :))
                                                Но тут да, в самом начале было сложно.

                                                  0
                                                  Желтый банк позволяет дать другому человеку доступ к счету из приложения. Я вижу основной счет супруги в своем приложении и по названию компании в платеже с 80% вероятностью знаю на что ушел платеж. А если пару дней подождать то и детальный чек подгрузится. Дергаю только если она наличкой платит или перевод человеку делает.
                                              –4
                                              Это уже какой-то мазохизм уровня «программист-анальник». Ладно чеки подбивать по общей сумме, но записывать каждый товар, что был куплен с граммовкой и прочим…

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

                                              P.s. и особо умиляет фраза автора про дом за 25 миллионов. Вот такой онанизм с куринным филе 700 грамм — ему точно поможет спланировать семейные расходы, чтобы осталось 25 лямов. Надо больше зарабатывать, а не экономить на спичках, сжимая сфинктер.
                                                0

                                                Зависть плохое чувство, постарайтесь от него избавиться, жить станет намного легче.

                                                  0
                                                  Просто взгляните на карму и статьи автора.
                                                    0
                                                    Однако.
                                                    Ну тогда все понятно.
                                                0
                                                Тоже используем Spreadsheets для семейного бюджета, но в более компактном виде. На каждый месяц хватает одного листа, в пределах 100 строк. Еду расписываем только в исключительных случаях (обычно это одни и те же суммы). Основная цель — видеть общий тренд, то есть разницу между доходами и запланированными/реальными расходами.
                                                  +1
                                                  Я вот не знаю насколько полезно будет то что мы расписываем продукты и прочие траты, но пока что из полезного можно считать реальный уровень инфляции в рамках нашей «продуктовой корзины».
                                                  В целом любой вариант ведения бюджета как минимум является хорошей привычкой, как я и писал в статье многие знакомые кто не считал свои расходы даже не обращали внимания на какие то мелкие покупки и ежедневные расходы, оказалось можно не слабо сократить не обязательные покупки.
                                                    0
                                                    Трекать расходы однозначно да, но если вводить до номенклатуры, то вряд ли получится каким-то образом померить инфляцию) «Молоко» — оно разное бывает, и без конкретной марки вряд ли получится вспомнить через года-два что именно за молоко))

                                                    Но при этом чеки из супермаркетов имеет смысл делить на продукты/бытовуху/алкоголь и т.д.

                                                    Это я все к тому, что может не стоит так много сил тратить)
                                                  +2

                                                  О, моя любимая тема.
                                                  Тоже сперва пытался вести учет в excel, но спустя пару месяцев стало понятно, что это категорически неудобно. Особенно в разрезе совместного бюджета.
                                                  В итоге написал простенькое приложение на C# Winforms и MSSQL, которое допиливал на протяжение 4х лет.


                                                  В этом году внезапно ударило идеей максимально все автоматизировать. В итоге за месяц накидал приложение под Android на Xamarin, которое умеет читать QR коды и парсить SMS-ки. К приложению написал серверную часть, которая умеет по QR-коду ходить в API налоговой и брать оттуда содержимое чеков.


                                                  После этого всплыла необходимость переписать собственно само старое приложение, чтобы можно было реализовать все задумки, чем теперь и занимаюсь.


                                                  Целевая схема — сделать так чтобы все шаблонные траты типа кофе-такси-обед вносились автоматически.
                                                  А заполнение больших чеков из супермаркета планируется упростить за счет выгрузки из налоговой + запоминать комбинации товар-категория для постоянных покупок.

                                                    +1

                                                    Огонь!
                                                    Прям комплексный подход планирую сделать в итоге примерно то же самое но в своем варианте.

                                                      0

                                                      Всё это умеет Zenmoney :)

                                                        0

                                                        Ну так не интересно.
                                                        У меня было желание сделать по-своему и не отдавать данные о своих расходах на левые сервера.

                                                      0
                                                      Смысла в записи расходов — 0, если это не помогает планировать расходы в будущем.
                                                      Я тоже сделал подобную приблуду, но она на основании истории расходов за последний год (средняя частота, медиана, отклонения и т.п.) строит прогнозную таблицу этих же расходов на год вперёд, и это реально помогает анализировать и планировать бюджет со всеми предполагаемыми тратами и доходами.
                                                        +1

                                                        Мне и просто запись расходов и доходов помогает планировать бюджет, денежный поток в сводной таблице виден как и примерное понимание трат в след месяц.

                                                          0

                                                          А оно вам поможет быстро спланировать бюджет к новому году, с учётом предполагаемых поступлений примерно в конце августа и примерно в ноябре на примерно такую-то сумму и с учётом, что в октябре вы, возможно, поедете в отпуск в Таиланд, или, возможно, в Черегеш, а, возможно, и не поедете? И, возможно, в ноябре поступлений не будет? Нет, при наличии навыка и опыта, наверное, примерно сможете, а я без навыков и опыта сделаю это всё буквально за 30 секунд. Очень, знаете ли, удобно. Всё равно, что ездить на машине с работающей приборной доской гораздо удобнее, чем с одним рулём и лампочкой пустого бензобака (хотя, согласен — для опытного водителя, возможно, это не будет большой проблемой).

                                                            +1
                                                            Я большие покупки, такие как отпуск, планирую исходя из cash flow и текущего остатка за год. Я скорее ориентируюсь на текущие показатели чем на предполагаемый план. Грубо говоря в мае вижу что больше 1 квартала cash flow зеленый и остаток допустим 500к, то можем ориентироваться на отпуск в 70% от остатка.
                                                          0
                                                          хз, мне кажется, что смысл в отслеживании расходов и осмотр в конце месяца, квартала, года — хорошая вещь, которая может ужаснуть и открыть глаза на неоправданно завышенные суммы по какой-либо категории. Самому лень этим заниматься, поэтому это делает девушка на блокноте)
                                                            0

                                                            Возможно, я просто не учел, что для автора и многих присутствующих разброс -+100-200 тыс. р. — это не особо много… тогда да, достаточно философски окинуть табличку взглядом в конце периода, вздохнуть, подумать "да, что-то на смузи мы многовато в этот месяц потратили...", ииии… и всё.
                                                            А с моими доходами и расходами нужны жесткие постоянные контроль и планирование, так что — каждому своё :(

                                                          0
                                                          Так же было желание систематизировать расходы, пробовал и таблички и в файликах и в гугле и различные программы. Всё вел года 2, потом забросил за бесполезность, но кое какие мысли остались. Сразу по негативу, что на мой взгляд неправильного в вашей системе.
                                                          Ввод руками трат — один из лучших способов угробить всё дело. Сидеть и вбивать 100500 позиций из Ашана, ещё и сортируя по группам очень быстро надоест. Пара потерянных или забытых чеков убивает всё дело. Нужен автоматический ввод по SMS из банка (так умеют почти все) или считывание по API банка (у некоторых есть).
                                                          Просто запись доходов и расходов, даже с группами, ничего не даст. Надо дополнительное разделение, например обязательные расходы — не обязательные. Или даже точнее, обязательные ежемесячные (кварплата, телефон, кредит и т.д.), обязательные ежегодные (налоги, ТО машины, дни рождения (?), отпуск) и условно необязательные (еда, бензин, мойка машины, парикмахерская) и совсем не обязательные (развлечения, алкоголь). Только тогда у вас появляется более менее чёткая картина, вот это вот всё равно надо потратить в этом месяце, следующем и т.д., вот это что можно попробовать ужать, а вот это только если деньги остались после первых. То есть появляется реальное планирование с цифрами.
                                                          Неплохо сразу ставить цель ради которой всё это делается. Не абстрактная типа «у меня всё по контролем», а точная, например накопить миллион рублей (на первый взнос?), будет примерно понятно сколько надо времени. Накопления надо делать всегда на «неудобном счёте», чтобы нельзя было без заметных потерь вытащить оттуда деньги.
                                                          В принципе я сумел более менее вести всё это, получается действительно довольно эффективное планирование, но пришел к выводу что затраченные усилия не стоят выгоды. Проще идти эволюционным путём. Начать откладывать каждый месяц по определённой сумме, если это не напрягает — увеличивать сумму. Когда оставшихся денег начинает не хватать, сам начинаешь пересматривать траты и находить новые источники.
                                                            0
                                                            Отчасти согласен с вашей критикой, но за 6 лет нам пока что не надоело вбивать руками, на самом деле на это уходит не так много времени, а из плюсов сразу чувствуешь свои траты. Это как платить карточкой и кешем, есть психологическая разница.
                                                            Разбиение на обязательные и не обязательные у нас специфическое, все что попадает в fun, а это и алкоголь, и кино, и доставка еды это все не обязательные, остальное в голове разделяется на нужно и хотелось бы.
                                                            Цель конечно же есть, так же как и накопления держатся не под матрасом или на депозите, это уже немного из другой оперы, но в кратце ежемесячный остаток перечисляется на брокерский счет, откуда уже диверсифицируется по разным инструментам. Само собой есть НПЗ в быстром доступе на критический случай, равный примерно 6 месяцам средних трат.
                                                            0

                                                            Сразу вопрос. Сервис крутится на компе 24/7? Можно залить куда нибудь. Была у меня идея сделать подобное. Но с heroku не разобрался. Как туда залить не понятно

                                                              0
                                                              Нет, ТГ бот крутится на внешнем хостинге.
                                                              Хоть у меня комп 24/7 не выключается, но как то это не правильно подобные сервисы запускать на ПК, на компе держал его только в те дни когда вел разработку.
                                                              Я не стал примудорствовать и просто взял вебхостинг, с ssl и т.п.
                                                              0

                                                              Мне по моему опыту показалось, что подобный учет и подсчеты бессмыслены. Чтобы управлять личным бюджетом надо планировать его наперед, а не записывать уже сделаные расходы, а информация сколько я выпил йогурта и съел булочек за прошлый месяц совершенно неинтересна. Пришел в итоге к такой методике. С очередной з/п сразу выделяю две суммы денег до следующей — ежемесячные расходы (коммуналка, связь, хозтовары и т.п.) и ежедневные расходы (продукты, транспорт), потом в течении периода до следующей з/п стараюсь, чтобы расходы оставались в пределах этих сумм, совершенно без всякой детализации на йогурты и булочки. Прямо перед следующей з/п весь остаток от предыдущей в свою очередь собирается в кучу и раскладывается в две кубышки — на долговременные расходы (одежда, электронника, бытовая техника и т.п.) и в сбережения. Вот и все. Всех забот при этом — раз в день вечером вбить в Excel пару-тройку чисел из магазинных чеков.

                                                                0

                                                                У меня на самом деле примерно так и есть, с одним небольшим отличием — исходя из прошлых месяцев я сразу ожидаю определенные суммы трат. Соответственно из "столько потрачу, столько отложу на одежду/отпуск/бытовую технику" и "надо вернуть баланс на карточке обратно до 20 тысяч свободных денег" сразу получается сумма, которая пойдет в сбережения.


                                                                И да, раз в день вечером вбить в hledger пару-тройку чисел из чеков. Плюс-минус.

                                                                0

                                                                Всем привет! Тоже встал вопрос ведения семейного бюджета. Были требования: не вколачивать чеки вручную, и чтобы можно было зайти в любое время как с мобильного телефона, так и с компьютера. В результате поиска решения натолкнулся на сервис проверка чека.
                                                                Регистрируешься в личном кабинете, где есть минимальный набор функций: сканирование чека и просмотр помесячно своих расходов.
                                                                Есть персональная страница пользователя (генерируется в профиле ЛК), с помощью которой без рекламы и авторизации можно вбивать чеки. Чеки автоматически попадают в личный кабинет. На мой взгляд удобно.
                                                                При необходимости отсканированные чеки можно выгрузить и разнести в экселе.

                                                                  +1

                                                                  Пользуюсь дребеденьгами. Мобильное приложение (с компа веб), распознавание смс, подтягивание товаров из qr кода, телеграм бот (без лишних операций с id категорий), абонентка в 600р в год, сравнимая с хостингом.
                                                                  Гибкая выгрузка в csv, если не хватает встроенных отчётов.
                                                                  Отдельные учётки для всех членов семьи, синхронизация как надо.


                                                                  Почему вы не рассматриваете готовые решения? Кастомизация, конечно, удобна, но обычно все потребности и так покрыты базовым функционалом

                                                                    0
                                                                    Я рассматривал готовые решения в 2014 году, подозреваю тогда подобного не было.
                                                                    А сейчас уже привык к своему формату, не уверен что хочу менять, к тому же история уже в таблицах, хочу ли я их переносить в отдельный сервис, вопрос.
                                                                      +1

                                                                      Тоже пользуюсь Дребеденьгами, примерно с 2015 года. Для меня важнейшие фичи это:


                                                                      • мультивалютка (регулярно оперирую 4мя валютам)
                                                                      • отдельные учетки для меня и жены
                                                                      • планирование бюджета
                                                                      • распознавание пуш-уведомлений на андроиде

                                                                      И все это на год за цену обеда на двоих в столовке.

                                                                    Only users with full accounts can post comments. Log in, please.