Приветствую.
Хочу продемонстрировать мобильное приложение, написанное с использованием фреймворка Flutter, «Начисление износа основных средств» (линейным методом). Данная статья, думаю, будет полезна новичкам, которые изучают Dart / Flutter, но которые уже «выросли из штанишек» «Hello world» :). А само приложение полезно бухгалтерам для расчета износа.
Но прежде, чем перейдем к разбору приложения, поговорим немного о бухгалтерии :).
Итак начнем. Для некоторых, может быть непонятно, назначение приложения. Потому что в названии программы содержаться много «непонятных» слов, таких как «износ» , «основное средство», а еще и какое-то «начисление» , да и еще какой-то «прямолинейный метод». Давайте сначала мы разберемся с этими словами, что они означают?
Начнем с понятия «основное средство». Что это такое? На любом предприятии, в зависимости, от его рода деятельности, есть станки, есть различные сооружения, есть автомобили, может быть есть земельные участки, может быть есть трактора, корабли, самолеты – при помощи которых данное предприятие, зарабатывает прибыль. Вот это все (станки, автомобили, земля, сооружения) – называется основные средства. Не будем вдаваться в более детальное рассмотрение основных средств (они еще делятся на разные классы для каждого класса есть еще свои нюансы). Главное запомнить следующее – устройства, земля, сооружения – при помощи которых предприятие приносит прибыль вот это и есть основное средство или еще кратко обозначают ОС (основное средство).
Думаю с этим словосочетанием разобрались.
Теперь к нему цепляем слово «износ». Получаем «износ основных средств». Так что такое «износ» ? В процессе эксплуатации ОС (на автомобиле развозят грузы, на станке делают мебель и т.д.) происходит физический износ механизмов, зданий и сооружений (изнашиваются детали, сооружения со временем приходят в негодность и т.д.). В процессе эксплуатации (физического износа) происходит уменьшение стоимости данного ОС. Так вот уменьшение стоимости основного средства (из-за физического износа) – это и есть износ. Таким образом словосочетание «износ основного средства» – разработчику нужно понимать , как уменьшение стоимости некого основного средства Х в процессе его физического износа.
Пример. Некая организация OOO «Скотный двор» купила трактор, за некую сумму S1. В процессе эксплуатации этот трактор стоит уже S2. Причем S1 > S2. Таким образом с бухгалтерской точки зрения данный трактор износился, его стоимость стала меньше от первоначальной стоимости на сумму S3 = S1 - S2.
Думаю с этим словосочетанием тоже разобрались.
Теперь у читателя может возникнуть вопрос, а как бухгалтер считает эту разницу сумм. Была сумма S1, стала S2. Как это происходит, по каким формулам? Сейчас поговорим об этом.
Есть четыре алгоритма расчета данных сумм, а именно:
Линейный
Пропорционально объему работ
По сумме чисел лет полезного использования
Уменьшающегося остатка
Формулы по каждому алгоритму можно найти в сети.
В нашем приложении используется линейный метод. Думаю с этим тоже понятно.
Теперь вернемся к названию приложения. И попытаемся сказать что оно делает немного другими словами. Итак приложение считает разницу в уменьшении стоимости основного средства (трактора, здания , станка и т.д.), по линейному алгоритму.
Разобравшись с тем для чего нужно мобильное приложение. Перейдем к его описанию. Приложение выглядит так:
В левом поле (Первоначальная стоимость) вносим сумму первоначальной стоимости, в правом поле (Срок эксплуатации (лет)) вносим количество лет, на которое рассчитано данное основное средство. Нажимаем на кнопку «Вычислить» и получаем список ежемесячного износа.
На какие интересные моменты можно обратить ваше внимание:
Менеджер управлением состоянием BLoC (библиотека flutter_bloc)
Локализация (русский и румынский языки библиотека easy_localization)
Анимация с прозрачностью (AnimatedOpacity)
Приложение можно скачать по ссылке в google play
Исходный код приложения тут
Благодарю за внимание.
Комментарии (6)
PackRuble
00.00.0000 00:00+1Пусть меня закидают камнями, но я не увидел полезной информации, а только горстку некоторых бухгалтерских изречений и "приложение можно скачать по ссылке...". Расскажите про то, как состоянием управляли, с какими проблемами столкнулись при локализации и какой чистоты чистая архитектура? Именно это новичкам-"выросли из штанишек" было бы интересно узнать.
Belking
00.00.0000 00:00>> горстку некоторых бухгалтерских изречений
Вы оскорбляете бухгалтеров, называя это чем-то бухгалтерским... это статья "оператора ЭВМ".
acvatoris Автор
00.00.0000 00:00-3Благодарю за конструктивный комментарий. При локализации я не сталкивался с проблемами, архитектура настолько чиста, насколько описывает в ее в своей книге Роберт Мартин, а новичкам могу дать совет, не ждать пока кто-то разжует и в ротик положит, а самим изучать исходники и пытаться написать что-нибудь. Хорошо или плохо - это другой вопрос, но самим. Исходники предоставлены, изучайте. Удачи.
acvatoris Автор
00.00.0000 00:00Если у вас есть вопросы по локализации, управлению состоянием я с удовольствием вам на них отвечу.
novi
00.00.0000 00:00+5Попробую объяснить, что (на мой взгляд) не так с этой статьей и как сделать ее лучше.
Основной момент - обманутые ожидания (новичков, которые изучают Dart / Flutter). Здесь для них только список модулей, общее название подхода и ссылка на исходники (readme которых тоже малоинформативен) с посылом «разбирайтесь сами». Все это на фоне достаточно подробно раскрытого бизнес домена, очень вполне себе подробно изложенного и с понятными примерами. Получается резкий контраст с объемом информации «по существу», то есть информации для заявленной аудитории - программистов новичков, которые изучают Dart / Flutter).
Вопросы, ответы на которые интересно узнать заявленной целевой аудитории статьи примерно такие: Как собственно разработать и запрограммировать эту бизнес задачу? Как начать? Какие вопросы нужно задать? Какие шаги? Почему именно так? Из каких вариантов можно выбирать? Какие плюсы и минусы у этих вариантов? Как стоило бы поступить иначе, если бы требования поменялись в тех или иных аспектах? Например, как может быть реализовано добавление альтернативного метода вычисления?
Раскрыть какие-то интересные или сложные (с точки зрения своего опыта) моменты и аргументировать решение с примерами кода. Провести по коду, по структуре репозитория. Статья ведь для программиста новичка на Dart/Flutter так ведь?
И (лично мое мнение) что для такой сравнительно небольшой и очень конкретной задачи, в контексте команды из одного человека, делать «архитектуру настолько чистой, насколько описывает ее в своей книге Роберт Мартин» имеет смысл только в качестве упражнения. В таком случае, полезным может быть анализ насколько сложнее в итоге может оказаться архитектура, структура, код и разработка в целом, ради достижения этой чистоты. Анализ за и против этого подхода, на примере той же задачи по добавлению нового метода подсчета. Интересным может быть также сравнение с вариантом приложения написанным без требования следовать «чистой архитектуре», ограничившись прагматизмом.
Если кратко, то ожидания были, чего-то вроде по изложению и содержанию близкого к серии начинающейся так https://devmuaz.medium.com/flutter-clean-architecture-series-part-1-d2d4c2e75c47
abutorin
Обычно бухгалтер открывать приложение в котором ведётся бухгалтерский учет и там уже все есть и не только линейный способ и учитывающий особенности национальной отчетности. Судя по скриншоту у вас "линейность" применяется с точностью до дня, поэтому в месяцах амортизация разная. В РФ например она считается "помесячно" и от месяца к месяцу не отличается.