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)
pocket_accounting_transactions // Операции
pocket_accounting_rules // Правила обработки
pocket_accounting_accounts // План счетов
pocket_accounting_contractors // Контрагенты
pocket_accounting_journal // Журнал проводок
pocket_accounting_settings // Настройки системы
Назначение: Обзор состояния системы
- Статистика по операциям (всего, обработано, ожидает)
- Список последних операций
- Активные правила учета
- Быстрая навигация по разделам
Назначение: Управление хозяйственными операциями
- Добавление операций:
- Дата операции
- Тип операции (платеж, аванс, расход, налог и т.д.)
- Контрагент
- Сумма
- Описание
- Статусы операций:
pending— ожидает обработкиprocessed— обработана (созданы проводки)
- Автоматическое применение правил:
- Ручное применение правила к операции
- Массовое применение ко всем ожидающим
- Фильтрация по статусу
- Импорт/экспорт данных (CSV, JSON)
Назначение: Настройка автоматической обработки операций
{
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
- Поддержка версионирования правил
- Приоритет правил (чем меньше число, тем выше приоритет)
- Активные/неактивные правила
- Тестирование правил
Назначение: Просмотр всех созданных проводок
- Таблица проводок с детализацией
- Фильтрация по датам и счетам
- Сводка по дебету и кредиту
- Возможность удаления проводок
- Экспорт журнала в JSON
Назначение: Формирование бухгалтерских отчетов
-
Оборотно-сальдовая ведомость:
- Остатки на начало периода
- Обороты за период (дебет/кредит)
- Остатки на конец периода
- Поддержка иерархии счетов
-
Анализ счета:
- Детализация движений по выбранному счету
- Поквартальные остатки
- Фильтрация по периоду
-
Главная книга (в разработке)
-
Налоговые отчеты (в разработке)
- Период (дата начала/окончания)
- Уровень детализации (сводный/детальный)
- Выбор конкретного счета
Назначение: Управление структурой счетов бухгалтерского учета
{
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) счета
- Валидация кодов счетов
Назначение: Справочник контрагентов
- Основная информация (название, ИНН, адрес)
- Типы контрагентов (покупатель, поставщик, банк, другое)
- Контактная информация (телефон, email)
- Фильтрация и поиск
Назначение: Настройка системы
- Организационные данные (название, ИНН)
- Система налогообложения (УСН, ОСНО, Патент и др.)
- Валюта учета (RUB, USD, EUR)
- Настройки интерфейса (автосохранение, уведомления)
- Управление данными (экспорт/импорт, очистка)
Каждая проводка состоит из:
- Дебета (куда приходят средства)
- Кредита (откуда уходят средства)
- Суммы (одинаковая для дебета и кредита)
-
Активные (А):
- Увеличение → Дебет
- Уменьшение → Кредит
- Пример: 51 "Расчетные счета"
-
Пассивные (П):
- Увеличение → Кредит
- Уменьшение → Дебет
- Пример: 80 "Уставный капитал"
-
Активно-пассивные (АП):
- Могут иметь и дебетовое, и кредитовое сальдо
- Пример: 62 "Расчеты с покупателями"
1. Пользователь добавляет операцию (статус: pending)
2. Система ищет подходящее правило:
- Проверяет условия правила против данных операции
- Учитывает приоритет правил
3. При нахождении правила:
- Создаются проводки согласно действиям правила
- Операция переводится в статус processed
- Проводки записываются в журнал
4. При отсутствии правила:
- Операция остается в статусе pending
- Проверка существования счетов
- Проверка, что счета являются конечными (detailLevel: 'detail')
- Проверка положительной суммы
- Проверка типов счетов (активный/пассивный)
- Для активных счетов: Остаток = Начальный дебет + Оборот по дебету - Оборот по кредиту
- Для пассивных счетов: Остаток = Начальный кредит + Оборот по кредиту - Оборот по дебету
- Для родительских счетов: Агрегация данных всех дочерних счетов
// Определение родительского кода
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;
}- Для каждого счета:
- Рассчитывается начальный остаток (на дату начала периода)
- Суммируются обороты за период
- Рассчитывается конечный остаток с учетом типа счета
- Для родительских счетов данные агрегируются из дочерних
- Проверяется баланс (итоги по дебету и кредиту должны совпадать)
- Локальное хранение: Все данные хранятся в браузере пользователя
- Отсутствие серверной части: Нет риска утечки данных через сеть
- Экспорт/импорт: Резервное копирование через JSON-файлы
- Валидация: Проверка целостности данных на уровне приложения
- Объем данных: Ограничен LocalStorage (обычно 5-10 МБ)
- Многопользовательский доступ: Отсутствует (одно устройство - один пользователь)
- Сетевые возможности: Нет синхронизации между устройствами
- Производительность: Обработка больших объемов данных может быть медленной
При первом запуске загружаются:
- Примеры счетов (с иерархической структурой)
- Примеры правил (для основных операций)
- Тестовые операции и проводки
- Демо-контрагенты
- Изучение принципа двойной записи
- Понимание структуры плана счетов
- Автоматизация бухгалтерских процессов
- Генерация бухгалтерских отчетов
-
Дополнительные отчеты:
- Баланс
- Отчет о прибылях и убытках
- Декларации по налогам
-
Расширение правил:
- Сложные условия (AND/OR логика)
- Вычисления в действиях (формулы)
- Работа с валютами
-
Интеграции:
- Импорт банковских выписок
- Экспорт в 1С
- Печать первичных документов
-
Бизнес-логика:
- Учет товаров и материалов
- Расчет заработной платы
- Амортизация основных средств
- Chrome 90+
- Firefox 88+
- Safari 14+
- Edge 90+
- Минимум 512 МБ оперативной памяти
- 50 МБ свободного места
- Поддержка JavaScript ES6
- Образовательные цели
- Учет в малом бизнесе (с консультацией бухгалтера)
- Прототипирование бухгалтерских систем
ВАЖНО: Данное приложение не является профессиональной
бухгалтерской системой. Для ведения реального учета
необходимо проконсультироваться с профессиональным
бухгалтером и убедиться в соответствии приложения
требованиям законодательства вашей страны.
Pocket Accounting представляет собой полнофункциональное бухгалтерское приложение, реализующее концепцию "дерева выражений" для автоматизации проводок. Оно сочетает в себе образовательную ценность (демонстрация принципов бухгалтерского учета) и практическую пользу (ведение учета для малого бизнеса).
Приложение активно использует современные веб-технологии и демонстрирует хорошие практики разработки одностраничных приложений с локальным хранением данных.