Как я делал свой учет финансов под андроид с блэкджеком, СМС и ФНС

Введение


Все началось в далеком 2011-м году, когда я купил свой первый андроид смартфон и открыл для себя удивительный мир андроид маркета. Именно там я нашел великолепное приложение для учета финансов Financisto. Несколько лет я трекал в нем свои расходы и доходы, сильно привык, однако были и слабые стороны:


  • необходимость вводить все транзакции вручную. Притом, что доля безналичных платежей непреклонно росла, а банк на каждый чих шлет вам смс.
  • нет глобального взгляда на бюджет в длительном временном разрезе. То есть хотелось видеть таблицу, предположим, на год, где для каждого месяца было бы видно, сколько планировалось потратить и заработать и сколько вышло по факту, плюс итого по всем строкам и столбцам. Тут ориентиром был YNAB.
  • нет синхронизации между устройствами. Да был Flowzr, но как-то он мне не зашел.

Если вторая проблема решилась экспортом в CSV и всемогущим экселем, то с остальными нужно было что-то делать. Очевидный вариант — сменить программу. Поизучав предложение, пришел к выводу, что все приложения делятся на скудные по функционалу и на дорогие:) Тем временем шел 2015-й год и мне все сильнее хотелось изучить разработку под мобильные девайсы. Что ж, звезды сходятся, принято решение пилить свое приложение!


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




О приложении


Приложение имеет 2 основополагающие сущности: счета и транзакции. Счет, это хранилище средств, транзакция — перемещение средств. Транзакции бывают трех видов:


  • приход — пополнение счета третьими лицами
  • расход — выплата наших средств третьим лицам
  • перевод — перевод средств между своими счетами

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


Итак, первое, что нужно для упрощения жизни, это парсинг смс от банков для автоматического создания транзакций. Затем был сделан импорт/экспорт данных в CSV, причем предмет особой гордости — настраиваемый импорт, позволяющий загружать данные из файлов CSV произвольной структуры. Имеется сканер чеков ФНС РФ и загрузка информации по ним с сервера. Для удобного учета атрибуты транзакций сделаны многоуровневыми. Например, можно создать такое дерево категорий:


├ Расходы
│   ├ Автомобиль`
│   │   ├ Заправка
│   │   └ Обслуживание
│   ├ Еда
│   └ Развлечения
│
└ Доходы

Аналогичная структура возможна и у других атрибутов, таких как Получатели (контрагенты), Проекты и т.д. Для удобной навигации по данным сделана система фильтров, по различным признакам. Реализовано управление долгами и бюджетирование. Кроме того есть вагон и маленькая тележка более мелких функций, которые я перечислять тут не буду.


Библиотеки и тулинг


Из нестандартных используемых библиотек могу выделить ButterKnife и EventBus. Хотя в 2018 году они выглядят анахронизмами, на момент начала разработки они выглядели многообещающе. Сейчас же я не готов осуществить полномасштабный рефакторинг. Экспериментировал с RetroLambda и Rx, но выпилил их как не соответствующие задаче. В итоге сейчас проект это чистая Java 7, хотя велико желание поддаться хайпу и попробовать Kotlin.


Очень полезной оказалась библиотека io.requery:sqlite-android, позволяющая иметь всегда актуальную версию SQLite. В приложении реализованы деревья сущностей (например, вложенные категории) без ограничения по глубине и для выборки таких данных очень эффективно использовать рекурсивные запросы. К сожалению, они появились в достаточно свежих версиях SQLite и не доступны на старых версиях андроида. Requery решает эту задачу.


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


Очень хочется внедрить нормальный DI, но опять же пока нет на это времени.


Несколько слов о тулинге. Если в 2014-2015 еще можно было услышать о том, что разрабатывать нужно в Eclipse, а Genymotion был musthave для разработчика под андроид, то сегодня Гугл всех затмил. Android Studio очень быстра и удобна, впрочем как и встроенный эмулятор.


Так же хотелось бы сказать спасибо kaftanati за его инструмент. Он позволяет вести гугл-таблицу со строковыми ресурсами на разных языках и преобразовывать ее в xml-файлы. Очень упрощает процесс локализации. К слову на данный момент приложение доступно на 2-х языках: EN и RU.


В процессе разработки неплохо освоил Git, оказалась незаменимая вещь.


Производительность


Оптимизации производительности было уделено немало времени. Выделить следующие моменты, оказавшие значительное влияние:


  • Глубина вложенности лэйаутов. Чем меньше тем лучше. Проблема практически исчезла после внедрения constraint layout.
  • Оптимизация БД. Индексы наше все.
  • Профайлинг. TraceView это очень полезный инструмент для понимания того, что происходт в недрах приложения.

В целом сейчас я доволен производительностью. Моя личная база, которая является одновременно тестовой, содержит архив транзакций за 5 лет (>7000 транзакций) и при этом ничуть не тормозит на не самых быстрых телефонах.


Дизайн


Лично у меня с дизайном все плохо. Наверное поэтому первая версия получилась такой вырвиглазной. Однако при этом она более менее соответствовала нормам материального дизайна). Такая версия просуществовала около двух лет, когда наконец я понял, что нужно что-то менять. Так как опыт показывал, что сам я не справлюсь, то был брошен клич среди фрилансеров. Таковой достаточно быстро нашелся и за разумные деньги перерисовал мне все экраны. Результат я получил в psd, но так как я был уже наслышан о таком замечательном инструменте как Zeplin, то сам быстренько все в него экспортировал и переделал дизайн. Нынешний мне нравится гораздо больше, кроме того в процессе переработки сформировались некие внутренние гайлайны, так что теперь создание нового экрана не вызывает затруднений.


Было и стало:



Первая версия материального дизайна состояла, по-сути, из одних гайдайнов, с которыми разработчик оставался один на один. По-этому расплодилось множество библиотек, которые предлагали реализацию UI. Не обошла эта проблема и меня, в желании реализовать как можно ближе к эталону было импортировано много библиотек. Но Гугл исправляется и двигается в сторону единообразия и упрощения в процессе разработки. Современная версия support'а позволяет обойтись практически без сторонних компонентов.


Парсинг смс


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


Итак общая концепция такова: вам приходит смс, например, следующего содержания: "VISA1234 01.01.18 12:00 покупка 106.40р SUPERMARKET Баланс: 6623.34р" (Сбербанк). Очевидно, что тут можно извлечь следующую информацию: номер карты (счет), дата и время, получатель средств, сумма транзакции и остаток средств на карте. Задача пользователя правильно расставить ключевые слова (маркеры): выделить "VISA1234" и поставить маркер счет, на "SUPERMARKET" поставить маркер Получатель и т.д.


Выглядит это примерно так:


Приложение запоминает все маркеры и таким образом обучается. Опыт показывает, что после недели-двух обучения, 90% транзакций создаются автоматически без участия пользователя. Да, нужно затратить некоторые усилия, но независимость от сторонних лиц мне кажется стоит того.


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


Загрузка кассовых чеков ФНС


В прошлом году ФНС РФ преподнесла всем продавцам подарок обязав отправлять все кассовые чеки в электронном виде на свои сервера. Простым людям тоже маленько перепало в виде официального мобильного приложения, в котором можно проверить чек на подлинность и, что самое важно, загрузить его себе в форматах pdf или json. Не раз уже эта тема тут обсуждалась, однако, вкратце: официального апи для получения чека нет. Оно может быть у некоторых из ОФД (операторы фискальных данных, через которых чеки попадают с касс в ФНС), но так, что бы взять и получить любой чек в одном месте — нет. НО, есть официальное мобильное приложение, работающее через http, с обычной http-авторизацией, чем давно воспользовались добрые люди, послушавшие трафик и выложившие его апи на всеобщее обозрение. Там все просто. Можно создать нового пользователя, получив пароль по смс, можно скачать содержимое чека по его данным, и можно скачать все чеки за определенный период, ранее загруженные данным пользователем. Для облегчения задачи на каждом чеке печатается QR-код, содержащий все нужные для получения чека данные.


Далее все просто qrcodereaderview + retrofit и содержимое чека у нас в руках. В связи с возможностью загружать список товаров в чеке, была реализована возможность эти товары прикреплять к транзакции. То есть теперь у вас транзакция может быть не просто суммой, а составной суммой, например, товар1 х кол-во х стоимость + товар2 х кол-во х стоимость + ... Причем каждому товару можно назначить отдельную категорию и проект, что бывает очень полезно при покупках в супермаркетах, когда за один раз берется много разнородного товара.


Автоматизация


Одним из интересных запросов пользователей оказалось желание автоматизировать создание транзакций при помощи интентов, что собственно и было сделано. Можно в любом приложении создать интент с суммой, и атрибутами транзакции и послать его в мое приложение, после чего такая транзакция будет автоматически создана. Сам, честно говоря, такой метод не применяю, но есть люди, которые парсят emailы в таскере, а затем создают на их основе транзакции. Или еще вариант — создание транзакций голосом через Дусю.


К сожалению, пока есть проблемы на 8-ом андроиде, так как там запретили фоновое выполнение интентов. Планирую в ближайших версиях сделать запуск foreground-процесса тем пользователям, которые хотят такой функционал.


Синхронизация


Синхронизация, как много в этом слове… Ведение общей базы было одной из основных задач создания проекта. К сожалению, она до сих пор не реализована. Причина — слишком комплексная задача для пет-прожекта одного человека. Попытка была. И даже была рабочая версия. Сделал я ее на Firebase. На первый взгляд это выглядело не сложно. Есть гигантский json, в котором лежат общие базы. Вся аутентификация делается 10-ю строчками в правилах безопасности в консоли. Апи очень простое и удобное. Алгоритм был примерно следующий:


  1. Пользователь логинится в Realtime Database при помощи учетки Гугла.
  2. Ему заводится нода, в которую выгружается вся его база.
  3. Затем он дает разрешение на модификацию своей базы другим пользователям, так же по gmail'у.
  4. Другие пользователи, при подключении, указывают, что хотят работать с чужой базой и вводят адрес первого пользователя, затем подключаются к его ноде и могут добавлять удалять информацию.

Затем начались проблемы: как сделать разграничение прав доступа?; на больших базах были проблемы с производительностью; синхронизацию предполагалось предлагать в виде подписки, для этого нужна верификация на сервере, то есть опять же нужен бэкэнд. Конечно все эти проблемы были связаны с недостатком моего опыта и отсутствием времени на полномасштабное изучение вопроса, но пулей в голову данному подходу стало заявление Гугла о том, что relatime database, это теперь стремно, делайте ка все на Firestore. В общем пока эта затея поставлена на паузу, продолжаю изучать пути решения. На данный момент мне видятся следующие варианты реализации:


  • Попробовать все-таки Firestore, там ввели коллекции, упростилась работа со сложными структурами данных.
  • Плюнуть на все и сделать свой бэкенд. Пока что неплохим кандидатом выглядит Postgres + Postgrest. Минимум разработки, больше контроля, но опять же есть непонятные моменты.
  • Экзотический вариант — xmpp сервер. Вообще не хранить данные на сервере, а лишь пересылать их между пользователями. Чревато, на мой взгляд, потерей конситентности, но есть и плюсы (хотя как посмотреть) в виде полного отсутствия бэкенда.

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


Продвижение и заработок


Наверное самая слабая сторона моего проекта. К превеликому моему сожалению, разрабатывать мне гораздо интереснее чем продавать. Трафик исключительно органический. Проект представлен на 4PDA, там же сформировалась база лояльных пользователей. Значительно увеличила количество установок публикация, опять же на 4PDA, в рамках программы поддержки разработчиков. Могу сказать, что средства потраченные на нее окупились, но не более.


Изначально программа задумывалась как учебный проект, поэтому о заработке на ней речи не шло. Однако, in-app purchases тоже надо изучить, поэтому была добавлена концепция Pro-функций, то есть платных фич. Фича такая пока одна единственная — это возможность строить графические отчеты. Планировал сделать подписку на синхронизацию, но за неимением фичи, так и нет подписки.


GitHub


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


Заключение


Основная цель, которую я ставил перед собой начиная этот проект, выполнена — я научился андроиду. И, можно сказать, даже преуспел в этом. Для полноценного звания success story, конечно, не хватает коммерческого успеха, но, тем не менее, я рад, что мне удалось развить проект и довести его до ума. Греет мысль и о том, что дело делаю полезное для людей.

Поделиться публикацией
Ой, у вас баннер убежал!

Ну. И что?
Реклама
Комментарии 67
  • –5
    Зачем платная функция pro, если исходники есть открытые?
    • +1
      Однако, in-app purchases тоже надо изучить, поэтому была добавлена концепция Pro-функций, то есть платных фич. Фича такая пока одна единственная — это возможность строить графические отчеты. Планировал сделать подписку на синхронизацию, но за неимением фичи, так и нет подписки.

      • 0
        Зачем тебе деньги, бананы ведь в открытую растут на пальмах?
      • +1
        Можно ли приложение увидеть на f-droid.org?
        • 0
          Честно говоря, никогда с ним дела не имел, сейчас изучаю. Вероятнее всего добавлю.
        • +1
          Так держать! Тоже были мысли написать свою программу учета семейного бюджета т.к. существующие варианты чем-то не устраивали. Но в отличаи от меня Вы это осуществили и за это честь и хвала. А за то, что открыли исходники — вдвойне.
          • 0
            Сам уже 3 недели, как пользуюсь этим приложением. :) А тут и автор встретился!

            Приложение простое, удобное и функциональное. Поначалу удивило отсутствие списка категорий. Пришлось делать свои, но теперь это даже удобнее.

            • 0
              Пользуясь случаем хочу указать на деревянное приложение BudgetWatch f-droid.org/en/packages/protect.budgetwatch. В данном случае деревянное в хорошем смысле.

              До этого много лет использовал на кнопочниках Money Manager 2, а после него все андройдовые бюджетницы кажутся переусложненными или слишком заточенными под стиль жизни автора, или сделанными с мыслью «нарисуем красивые иконки, а остальное приложится»

              Код открытый, экспорт и импорт в CSV есть. Ничего лишнего, но в то же время можно пользоваться. Нормально работает на любом самом дешевом китайфоне.
              • 0
                Просто огромное человеческое спасибо за исходники!
                • +1
                  Длительное время я не мог решиться открыть исходники. Ну знаете, хакнут покупки, будут смеяться над кодом и т.д. Но потом пришло понимание, что открытый исходный код будет благом, поэтому он доступен по ссылке.

                  Действительно, сильно.
                  До этого каждому нужно дойти.
                  Мое почтение.
                  • –2
                    Небольшое предложение по развитию — сделать кроме списка счетов список (желательно дерево) статей затрат/прибылей. И транзакции сделать замкнутыми на счета и статьи. Тогда можно буд ет строить отчет на что от кого потрачены деньги. Новые транзакции которые не удалось автоматически отнести к статье вешать в нераспределено. Ну и далее шаблоны для смс для управления автоматическим разнесением. И будет сказка. Ах да на яблоко еще портировать )
                    • 0
                      Собственно за это и отвечают Категории. Все как вы написали, дерево. И отчет имеется.
                      • –2
                        сорри, значит отвлекся когда читал. Но пункт про портирование на яблоко остается!
                    • 0
                      Пользуюсь вашей программой почти с самого начала. Очень удобная вещь и спасибо что продолжаете развивать.

                      Не останавливайтесь.
                      • 0
                        У меня банк присылает e-mail'ы с информацией о транзакции. Есть идеи, как это можно увязать с вашим приложением?
                        • 0
                          Парсить во внешнем приложении, возможно в Таскере, и слать интенты. Подробнее здесь. Пока есть нюансы с восьмым андроидом, но планирую скоро поправить.
                          • 0
                            В качестве предложения по синхронизации можно реализовать формирование подобных писем в формате, понятном только вашему приложению.
                            А на случай отсутствия доступа к сети(роуминг) семейный бюджет поможет вести синхронизация через NFC или bluetooth.
                        • 0
                          Поддерживаю автора! И считаю неотъемлемой частью бакенд. Сам пользую в качестве бакенда и PC-шной версии полнофункциональную (достаточную для моей семьи) программу Деньги одной из известных фирм. К ней, прям в том же порядке, что и автор стати, написал приложение на андроиде, только начинал не с Дельфи, а с Python Kivy. Приложение ориентировал в первую очередь для оперативного учета первички, просмотра остатков и сравнения с бюджетом по категориям. Почерпнул у автора несколько полезных для себя идей. Огромное спасибо!
                          • 0
                            Мне нравился CoinKeeper, там в упрощенном виде тоже есть парсинг смс, но когда они сменили модель подписки в последний раз и подняли цену, отказался от них. Думал о том, чтобы написать свой менеджер, а тут как раз ваш попался. Спасибо за труд! Проект достойный! Не каждый отважится с нуля в андроиде браться за такой пет-проджект.
                            • 0

                              Тоже начинал с Financisto, но когда понадобилась синхронизация тоже стал искать что получше и нашел BudgetBakers: Wallet, это было лучшее что нашел на тот момент.
                              Сейчас пользуюсь iOS, поэтому важно то, что есть версия под iOS и web (хоть функционал и урезан) с синхронизацией и всё это в бесплатном тарифном плане (а платный не сильно дорогой). Если перейду на андроид, обещаю попробовать ваше приложение.

                              • 0
                                ещё на КПК пытался вести учёт финансов (в CashOrganizer), но каждая попытка заканчивалась через месяц-полтора, т.к. вводить все расходы (а они самая частая категория транзакций) — лениво
                                когда заработал ФЗ-54, подумал, что наверное, было бы удобно сканировать QR-код, и на его основе вводить расходы в программу (кстати, чеки возврата в приход распознаются? буквально на днях я делал несколько возвратов)
                                а недавно увидел Ваш комментарий )) а затем вот и статью с описанием
                                респект! я ещё не пробовал приложение, но плюсанул везде ))
                                за автоматизацию ввода из других приложений (хоть и пожелалка, как я понимаю, была пользовательская) — ещё больший респект! а за OpenSource — так вообще слов нет ))
                                желаю удачи и неостывающего энтузиазма!.. и хороших пулл-реквестов ))
                                • 0
                                  Спасибо. Насчет возврата — пока такой сценарий у меня не разу не возникал, но предполагаю, что не сработает.
                                • –1
                                  Я в свое время встретил для себя идеальное приложение в лице Финансового счетчика+ под Windows Phone. Но к сожалению платформа скончалась и под ios не нашел такого же шикарного приложения. До сих пор вынашиваю идею сделать приложение для себя.
                                  Для разработчиков open source уготовано отдельное место в раю
                                  • 0
                                    Мое использование заканчивается на определении группы расходов.

                                    Часто в одной покупке могут быть и продукты питания и бытовые принадлежности и развлечение и еще что нибудь. Токую оплату сложно куда либо отнести и как то удобно разделить.

                                    Как вы поступаете в данной ситуации?
                                    • +1

                                      Я не пользуюсь данным приложением, пользуюсь ledger (http://ledger-cli.org/) — по-моему, самой гениальной программой для учета финансов.


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


                                      Я очень редко бью чеки по категориям. Чаще всего, все чеки из супермаркетов попадают в категорию: «Расходы: Дом».


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


                                      Если заморачиваться и вводить множество категорий, то пользы от этого — ноль, а сил тратится много.

                                      • 0
                                        Примерно этот же функционал — «в любой момент времени знать, сколько у меня денег в кошельке или на счету. Вторая по важности цель — приблизительно знать, сколько я трачу в месяц» реализован в Сбербанк онлайне. Несколько кривоватао, но обучаемо прямо там же.
                                        • 0

                                          У меня деньги распределены между 4 как минимум банками. Один для счета ИП, три других — так исторически сложилось. В одном были лучше условия по депозитам, другому больше доверяю, в третьем инвестиционный счет, и т.д. Плюс, еще какие-то суммы могут храниться наличными. Плюс акции, облигации, металлические счета.


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


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


                                          Например, можно посчитать стоимость владения мотоциклом. Я вот посчитал за несколько лет, и прослезился. Не так дорого стоит купить технику, сколько обслуживать, страховать и апгрейдить (всякие там багажные системы, ПТФ, и прочие прибамбасы).

                                          • 0
                                            Я это как пример привел. :-)
                                            У меня примерно так же со счетами.
                                            А вот разные проги в банках — реально напрягают иногда.
                                            У всех разный функционал со своими плюсами и минусами.
                                            Хочется эти проги в миксер сунуть! :-))
                                      • 0
                                        Думаю все зависит от того как много и часто вы покупаете, но я делаю все очень просто. Например после покупки в Ашане (обычно не больше 35 долларов за раз), в чеке разные товары (продукты питания, товары для дома или машины), но обычно продуктов больше. Я просто отнимаю не продукты и ввожу их суму в категорию продуктов (в нормальных приложениях есть калькулятор что увеличивает скорость и удобство), потом отдельно ввожу групу товаров в, например, категорию дом/машина.
                                        Главное как по мне, это делать все в тот же день (максимум пару дней), если не внести информацию сразу, накапливается большое количество данных к вводу и конечно же стает лень вводить эти данные.
                                        Ну и главное найти для себя удобное приложение.
                                      • 0
                                        Duti_Fruti Для этого и были реализованы товары. Транзакция одна, в ней много товаров, у каждого своя категория. Они могут быть как загружены из чека, так и добавлены вручную. Если у товара категория не указана, то ему назначается категория транзакции.
                                        • 0
                                          каждую покупку разбивать на товары? Одна покупка может быть огромной, с кучей мелочи.

                                          Я скорее вижу кнопки
                                          «назначить категорию» — на всю покупку (чек).

                                          а потом «разделить категории» — указываем сумму и другую категорию.

                                          С исходной отнимается и прибавляется в другой.

                                          В списке мы видим один и тот же чек с «тегами» разных категорий и суммой куда что ушло.
                                          • 0
                                            В общем-то все именно так и происходит. Предположим вы зашли в магазин и купили следующие товары:

                                            • Молоко — 50 руб
                                            • Мыло — 50 руб

                                            на общую сумму 100 руб. У транзакции есть атрибут «Категория», в которой вы указали значение «Еда». Теперь мы имеем 100 руб. потраченные на еду.

                                            Теперь возможны варианты:

                                            1. Просто разделить транзакцию на 2 (есть такая функция), вырезав из исходной 50 руб и создав новую транзакцию с категорией «Бытовая химия».
                                            2. Создать в исходной транзакции товар «Мыло» и назначить ему категорию «Бытовая химия». Теперь у нас одна транзакция на 100 руб. в которой 50 явно отнесены на бытовую химию, а другие 50 остались едой без уточнения что это.
                                            3. Явно создать 2 товара «Молоко» и «Еда» и назначить им категории. Впрочем молоку категорию можно не назначать, тогда она унаследуется от транзакции и останется едой.

                                            Вариант 3 отлично работает с чеками. Купили 50 товаров, скачали их, установили категорию транзакции охватывающую основную группу товаров, остальным предметно переназначили категории.
                                        • 0
                                          Можно улучшить читаемость важной информации и уместить больше её на экране, не потеряв функционал:
                                          image
                                          • 0
                                            evnuh Включите компактный режим просмотра в настройках.
                                            • 0
                                              Спасибо вам за приложение. Пользуюсь с самого момента, как вы его выложили на 4pda.
                                              • 0
                                                Привет. Насчет синхронизации BD.
                                                Я недавно попробовал Jexia.com. По функциям похож на FireBase но гараздо удобней выборка и разграничение прав. Советую проверить, возможно, найдешь решение для себя.
                                                • 0
                                                  Спасибо за ссылку, интересный сервис, смущает отсутствие цен, когда они выйдут в продакшн.
                                                • 0
                                                  А уведомления из Google Pay как-то берутся?
                                                  Например, Альфа банк при оплате Google Pay со смартфона — смс-ку не присылает.
                                                  В «шторке» стандартное уведомление от Google Pay об оплате.
                                                  При этом если платить так же бесконтактно, но их же картой (той, которая привязана к Google Pay) — смс приходит.
                                                  • 0
                                                    Нет такие уведомления не обрабатываются. Если кто знает как к ним получить доступ, расскажите.
                                                  • 0
                                                    Странно, мне приходит от Альфы СМС, когда я плачу с помощью GooglePay…
                                                  • 0

                                                    Есть ли возможность планировать затраты на конкретные даты, резервировать деньги под эти затраты? Честно говоря, не могу себе этого представить без честной двойной записи, но вдруг?


                                                    Что-то вроде такого: до 7-го надо отдать 7000, в кошельке 3000, на карточке 2400, из них на повседневные расходы не более 1000, зарезервировано на отдать долг только 3500, не распределено по целям 900. Ахтунг! Срочно ищи возможность заработать от 2600 до 3500! Осталось x дней!


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

                                                    • 0
                                                      Такого функционала пока нет. Было бы интересно посмотреть где и как такое реализовано.
                                                      • 0

                                                        Реализовано такое в любом финансовом учёте с системой двойной записи (учёт актива и пассива в балансе + финансовое планирование). А вот для личных финансов — увы и ах, не видел.


                                                        Если сильно упрощённо (давно учился, помню мало), есть активы (средства, имущество) и пассивы (источники и цели расходования можно сюда отнести). То и другое равны (баланс) и детализируется по статьям (счёта учёта). План по конкретной статье можно сравнить с состоянием соответствующего счёта и сделать вывод: хватает или нет, сколько надо ещё

                                                        • 0

                                                          Это основы бух/финучёта и финансового планирования

                                                          • 0
                                                            Подумав, представил, как это может быть без баланса. В личку напишу.
                                                        • 0
                                                          не туда написал
                                                          • 0
                                                            Добрый день.

                                                            Попробуйте сделать интеграцию через dropbox, у них есть своя API для этих целей.
                                                            Такая интеграция уже была с приложении Менеджер расходов от PSVSoftware, но всё перестало работать, после того, как dropbox сменил версию API (и не предусмотрел обратную совместимость), а разработчик больше не поддерживает приложение. Теперь попытка выложить базу расходов на dropbox заканчивается сообщением об ошибке: {«error»: «v1_retired»}
                                                            • 0
                                                              Здравствуйте! Дропбокс у меня есть, туда бэкапятся резервные копии. Но он подразумевает полную закачку файла БД, моя же цель инкрементальная, скажем так синхронизация, желательно в реальном времени.
                                                              • 0
                                                                бегу тестить ваше приложение (надеюсь, что смогу смигрировать со своей неподдерживаемой legacy-системы); спасибо за подробное описание
                                                                • 0

                                                                  Тоже мигрировал с менеджера расходов от psv, на прямую экспорт не сработал, поэтому пришлось немного отредактировать csv файлы (их два, первый доход/расход, второй переводы) экспортированные из менеджера расходов отчёты в экселе, немного подучить питон и сформировать csv файл который приняло приложение

                                                                  • 0
                                                                    у меня архив (4 года) не смог прогрузиться, программа просто зависла;
                                                                    не могли бы вы подсказать, какое редактирование csv-файла вы делали, какие именно колонки и как вы форматировали/редактировали?
                                                              • 0
                                                                Из нестандартных используемых библиотек могу выделить ButterKnife и EventBus. Хотя в 2018 году они выглядят анахронизмами, на момент начала разработки они выглядели многообещающе.


                                                                А что сейчас актуально вместо ButterKnife и особенно EventBus?
                                                                • 0
                                                                  Думаю, что вместо ButterKnife актуален Databinding от Гугла. А EventBus, это прямой аналог глобальных переменных. В общем вместо них нужно использовать правильную архитектуру… Правда я пока такую не нашел)
                                                                  • 0
                                                                    А разве EventBus не аналог RabbitMQ, только внутри приложения? Чтобы уменьшить зависимости между частями приложения?
                                                                    • 0
                                                                      А EventBus, это прямой аналог глобальных переменных.

                                                                      эк Вы хватанули! ))
                                                                      с каких пор паттерн Издатель-Подписчик — аналог, да ещё прямой, глобальных переменных?
                                                                      * я не разработчик Android, но даже по README понятно что для чего
                                                                    • 0
                                                                      Конкретно для Андроид-проектов на Джаве ButterKnife до сих пор актуален, а для Котлина есть Kotlin Android Extensions. Что касается EventBus, то тут, однозначно, Rx.
                                                                    • 0
                                                                      .
                                                                      • 0
                                                                        Ошибся, указав неверного автора инструмента для экспорта таблицы Гугл в Xml, исправил. Правильный автор kaftanati
                                                                        • 0
                                                                          Что меня больше всего удивило — это то, что в статье ни разу не упоминается название программы :) И только при переходе на гитхаб можно начать догадываться о названии.
                                                                          Кстати, может кто подскажет что-то подобное с обработкой СМС, но работающее на четвёртом андроиде?
                                                                          • 0
                                                                            Правила хабра запрещают пиар для не корпоративных пользователей вне хаба «Я пиарюсь».
                                                                          • 0
                                                                            Возник вопрос по настройке «Учетные данные из ФНС».
                                                                            Программа уже их давно установлена, а как в Вашей зарегить? Просит код из какого-то СМС.
                                                                            И предложение.
                                                                            Добавить вход не только по ПИНу, но и по отпечатку. При возможности…
                                                                            • 0
                                                                              Добавить вход не только по ПИНу, но и по отпечатку. При возможности
                                                                              начал заводить issue, но решил проверить вход по PIN (который, кстати, почему-то работает не сразу), и увидел, что вход по отпечатку есть
                                                                              • 0
                                                                                При регистрации в официальном приложении ФНС вам высылают код по смс. Его нужно ввести в Fingen. Если вы его не помните, можете запросить заново (или поищите в смс). Вход по отпечатку есть при блокировке пинкодом. Отпечатки должны быть реализованы через гугловское апи (marshmallow+), а не самодельное вендорское.
                                                                              • 0
                                                                                Для целей учета финансов использую Monefy, в целом доволен их функционалом. Подумал, что можно перейти на ваше приложение, посмотрим. В основном у меня умеренные траты, в основном тратит супруга, на питание и детей, но учет позволяет вспомнить когда и сколько потратил, не часто, но пригождается. У супруги определили что на мобильную связь она тратила около 1000р в месяц, сменили тариф, теперь 200. В общем, как мне кажется, это натолкнуло ее на заботу о семейном бюджете. Желаю вам не оставлять программу и продолжить ее развитие!!!
                                                                                • 0
                                                                                  Тут важен организационный вопрос: если доход общий или единственный, а программа для контроля финансов только у одного члена семьи, зреет некоторое напряжение.

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

                                                                                Самое читаемое