Skip to content

pwrmind/PocketAccounting

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

👛 PocketAccounting

Pocket Accounting — это веб-приложение для бухгалтерского учета, работающее полностью в браузере. Приложение позволяет автоматизировать процесс создания бухгалтерских проводок на основе правил "ЕСЛИ-ТО", вести учет операций, управлять планом счетов и генерировать отчеты.

Ключевые особенности:

  • Локальное хранение данных (в LocalStorage браузера)
  • Автоматизация проводок через систему правил
  • Иерархическая структура счетов с поддержкой субсчетов
  • Полный цикл учета от операций до отчетов
  • Не требует сервера — работает полностью на клиенте

Архитектура приложения

Технологический стек:

  • Frontend: HTML5, CSS3, JavaScript (ES6+)
  • UI Framework: Bootstrap 5.3
  • Reactive Framework: Alpine.js 3.13
  • Иконки: Font Awesome 6.4, Bootstrap Icons
  • Шрифты: Inter, Roboto Mono (Google Fonts)

Структура данных в LocalStorage:

pocket_accounting_transactions    // Операции
pocket_accounting_rules           // Правила обработки
pocket_accounting_accounts        // План счетов
pocket_accounting_contractors     // Контрагенты
pocket_accounting_journal         // Журнал проводок
pocket_accounting_settings        // Настройки системы

Модули приложения

1. Панель управления (Dashboard)

Назначение: Обзор состояния системы

  • Статистика по операциям (всего, обработано, ожидает)
  • Список последних операций
  • Активные правила учета
  • Быстрая навигация по разделам

2. Операции (Transactions)

Назначение: Управление хозяйственными операциями

  • Добавление операций:
    • Дата операции
    • Тип операции (платеж, аванс, расход, налог и т.д.)
    • Контрагент
    • Сумма
    • Описание
  • Статусы операций:
    • pending — ожидает обработки
    • processed — обработана (созданы проводки)
  • Автоматическое применение правил:
    • Ручное применение правила к операции
    • Массовое применение ко всем ожидающим
  • Фильтрация по статусу
  • Импорт/экспорт данных (CSV, JSON)

3. Правила учета (Rules)

Назначение: Настройка автоматической обработки операций

Структура правила:

{
  id: "rule_1",
  name: "Оплата от покупателя",
  description: "Обычная оплата за товары/услуги",
  conditions: [
    { field: "operationType", operator: "==", value: "payment" }
  ],
  actions: [
    { debit: "51.01", credit: "62.01", amount: "full" }
  ],
  priority: 1,
  version: "1.0",
  active: true
}

Условия (ЕСЛИ):

  • Поля: operationType, contractorId, amount, description
  • Операторы: ==, !=, >, <, >=, <=, contains, startsWith, endsWith
  • Значения: произвольные строки или числа

Действия (ТО):

  • Дебет: счет дебета (выбирается из плана счетов)
  • Кредит: счет кредита
  • Сумма: full (100%), half (50%), quarter (25%), custom

Особенности:

  • Поддержка версионирования правил
  • Приоритет правил (чем меньше число, тем выше приоритет)
  • Активные/неактивные правила
  • Тестирование правил

4. Журнал проводок (Journal)

Назначение: Просмотр всех созданных проводок

  • Таблица проводок с детализацией
  • Фильтрация по датам и счетам
  • Сводка по дебету и кредиту
  • Возможность удаления проводок
  • Экспорт журнала в JSON

5. Отчеты (Reports)

Назначение: Формирование бухгалтерских отчетов

Доступные отчеты:

  1. Оборотно-сальдовая ведомость:

    • Остатки на начало периода
    • Обороты за период (дебет/кредит)
    • Остатки на конец периода
    • Поддержка иерархии счетов
  2. Анализ счета:

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

  4. Налоговые отчеты (в разработке)

Параметры отчетов:

  • Период (дата начала/окончания)
  • Уровень детализации (сводный/детальный)
  • Выбор конкретного счета

6. План счетов (Accounts)

Назначение: Управление структурой счетов бухгалтерского учета

Структура счета:

{
  code: "62.01",                    // Код счета
  name: "Расчеты с покупателями",    // Наименование
  type: "active",                   // Тип: active/passive/active-passive
  parent: "62",                     // Родительский счет
  level: 1,                         // Уровень вложенности
  expanded: false,                  // Развернут в дереве
  detailLevel: "detail",            // detail/summary
  description: "Описание счета"     // Дополнительное описание
}

Особенности:

  • Иерархическая структура (дочерние счета через точку: 62.01)
  • Автоматическое определение уровня вложенности
  • Разделение на конечные (detail) и сводные (summary) счета
  • Валидация кодов счетов

7. Контрагенты (Contractors)

Назначение: Справочник контрагентов

  • Основная информация (название, ИНН, адрес)
  • Типы контрагентов (покупатель, поставщик, банк, другое)
  • Контактная информация (телефон, email)
  • Фильтрация и поиск

8. Настройки (Settings)

Назначение: Настройка системы

  • Организационные данные (название, ИНН)
  • Система налогообложения (УСН, ОСНО, Патент и др.)
  • Валюта учета (RUB, USD, EUR)
  • Настройки интерфейса (автосохранение, уведомления)
  • Управление данными (экспорт/импорт, очистка)

Бухгалтерская логика

Принцип двойной записи:

Каждая проводка состоит из:

  • Дебета (куда приходят средства)
  • Кредита (откуда уходят средства)
  • Суммы (одинаковая для дебета и кредита)

Типы счетов:

  1. Активные (А):

    • Увеличение → Дебет
    • Уменьшение → Кредит
    • Пример: 51 "Расчетные счета"
  2. Пассивные (П):

    • Увеличение → Кредит
    • Уменьшение → Дебет
    • Пример: 80 "Уставный капитал"
  3. Активно-пассивные (АП):

    • Могут иметь и дебетовое, и кредитовое сальдо
    • Пример: 62 "Расчеты с покупателями"

Процесс обработки операции:

1. Пользователь добавляет операцию (статус: pending)
2. Система ищет подходящее правило:
   - Проверяет условия правила против данных операции
   - Учитывает приоритет правил
3. При нахождении правила:
   - Создаются проводки согласно действиям правила
   - Операция переводится в статус processed
   - Проводки записываются в журнал
4. При отсутствии правила:
   - Операция остается в статусе pending

Валидация проводок:

  1. Проверка существования счетов
  2. Проверка, что счета являются конечными (detailLevel: 'detail')
  3. Проверка положительной суммы
  4. Проверка типов счетов (активный/пассивный)

Расчет остатков:

  • Для активных счетов: Остаток = Начальный дебет + Оборот по дебету - Оборот по кредиту
  • Для пассивных счетов: Остаток = Начальный кредит + Оборот по кредиту - Оборот по дебету
  • Для родительских счетов: Агрегация данных всех дочерних счетов

Алгоритмы и структуры данных

Иерархия счетов:

// Определение родительского кода
function getParentCode(accountCode) {
  const parts = accountCode.split('.');
  if (parts.length > 1) {
    return parts.slice(0, -1).join('.');
  }
  return null;
}

// Сортировка кодов счетов
function compareAccountCodes(a, b) {
  const partsA = a.split('.').map(part => part.padStart(10, '0'));
  const partsB = b.split('.').map(part => part.padStart(10, '0'));
  // ... сравнение по частям
}

Применение правил:

function findMatchingRule(transaction) {
  // Сортировка по приоритету
  const sortedRules = rules.sort((a, b) => a.priority - b.priority);
  
  for (const rule of sortedRules) {
    if (checkConditions(rule.conditions, transaction)) {
      return rule;
    }
  }
  return null;
}

Расчет оборотно-сальдовой ведомости:

  1. Для каждого счета:
    • Рассчитывается начальный остаток (на дату начала периода)
    • Суммируются обороты за период
    • Рассчитывается конечный остаток с учетом типа счета
  2. Для родительских счетов данные агрегируются из дочерних
  3. Проверяется баланс (итоги по дебету и кредиту должны совпадать)

Безопасность и ограничения

Особенности реализации:

  1. Локальное хранение: Все данные хранятся в браузере пользователя
  2. Отсутствие серверной части: Нет риска утечки данных через сеть
  3. Экспорт/импорт: Резервное копирование через JSON-файлы
  4. Валидация: Проверка целостности данных на уровне приложения

Ограничения:

  1. Объем данных: Ограничен LocalStorage (обычно 5-10 МБ)
  2. Многопользовательский доступ: Отсутствует (одно устройство - один пользователь)
  3. Сетевые возможности: Нет синхронизации между устройствами
  4. Производительность: Обработка больших объемов данных может быть медленной

Использование в образовательных целях

Демонстрационные данные:

При первом запуске загружаются:

  • Примеры счетов (с иерархической структурой)
  • Примеры правил (для основных операций)
  • Тестовые операции и проводки
  • Демо-контрагенты

Учебные сценарии:

  1. Изучение принципа двойной записи
  2. Понимание структуры плана счетов
  3. Автоматизация бухгалтерских процессов
  4. Генерация бухгалтерских отчетов

Расширение функциональности

Возможные улучшения:

  1. Дополнительные отчеты:

    • Баланс
    • Отчет о прибылях и убытках
    • Декларации по налогам
  2. Расширение правил:

    • Сложные условия (AND/OR логика)
    • Вычисления в действиях (формулы)
    • Работа с валютами
  3. Интеграции:

    • Импорт банковских выписок
    • Экспорт в 1С
    • Печать первичных документов
  4. Бизнес-логика:

    • Учет товаров и материалов
    • Расчет заработной платы
    • Амортизация основных средств

Технические требования

Браузеры:

  • Chrome 90+
  • Firefox 88+
  • Safari 14+
  • Edge 90+

Требования к устройству:

  • Минимум 512 МБ оперативной памяти
  • 50 МБ свободного места
  • Поддержка JavaScript ES6

Лицензия и использование

Предназначение:

  • Образовательные цели
  • Учет в малом бизнесе (с консультацией бухгалтера)
  • Прототипирование бухгалтерских систем

Ограничения ответственности:

ВАЖНО: Данное приложение не является профессиональной
бухгалтерской системой. Для ведения реального учета
необходимо проконсультироваться с профессиональным
бухгалтером и убедиться в соответствии приложения
требованиям законодательства вашей страны.

Заключение

Pocket Accounting представляет собой полнофункциональное бухгалтерское приложение, реализующее концепцию "дерева выражений" для автоматизации проводок. Оно сочетает в себе образовательную ценность (демонстрация принципов бухгалтерского учета) и практическую пользу (ведение учета для малого бизнеса).

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

About

👛 PocketAccounting это веб-приложение для бухгалтерского учета, работающее полностью в браузере

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages