Данное приложение - модель системы ведения учета на небольшом складе. Раньше, когда занимался языком Java, я уже делал что-то подобное (Warehouse), но с использованием Swing и JDBC. Теперь я решил повторить работу, но на другом уровне с использованием других технологий - Python и JS. И бэк- и фронт- часть написаны с нуля и самостоятельно.
Бэкенд работает на Django (использована версия 3.1) и Django Rest Framework (3.11.1) и разбит на два приложения: main и api. Первое предназначено для хранения моделей и размещения контроллеров, отдающих пользователю запрашиваемые страницы. Приложение api реализует функции api, выполнющие отельные запрашиваемые операции (такие, например, как построение отчетов, проведение документов, импорт данных).
Кроме того, я создал несколько django-команд, которые использовал для непосредственного тестирования работы интерфейса. Это команды:
- clear_base (полная очистка БД)
- load_test_products (загрузка тестового справочника товаров из xls-файла)
- load_test_contractors (загрузка тестовго справочника контрагентов)
- load_test_documents (создание тестовых документов)
- load_storage_items (загрузка начальных остатков)
- create_test_base (команда, объединяющая функциональность всех вышеперечисленных)
Также юнит-тестами покрыта критическая функциональность api: проведение и отмена проведения документов и формирование отчетов.
Для фронт-части я использовал jQuery, который изучал параллельно с работой над проектом и, чтобы обучение шло более эффективно, я старался делать основной упор при формировании страниц именно на jQuery. То есть вместе со страницей загружаются скрипты, которые затем запрашивают данные для страницы (например, список документов) и формируют на основе этих данных контент страницы.
Страница входа. При входе в приложение формируется токен, который сохраняется в local storage и затем используется для обращения ко всем функциям api
После входа пользователь попадает на главную страницу с меню выбора действий. Если пользователь зарегистрирован в системе как superuser для него доступен ряд дополнительных действий, к которым не могут обращаться другие пользователи:
- Администрирование (вход на стандартную страницу администрирования Django)
- Удаление помеченных объектов
- Импорт справочника товаров
- Управление остатками
Обычный пользователь не видит этих пунктов меню и может только просматривать остатки на складе, не имея возможность изменять их вручную:
В справочнике доступен поиск товаров по наименованию и номеру товара. Также можно создавать товары, редактировать их, помечать на удаление, сортировать выводимые элементы по различным признакам (порядок сортировки изменяется щелчком по заголовкам столбцов).
Функциональность данного справочника аналогичная функциональности справочника товаров.
На этой странице пользователь может просматривать список документов (доступна фильтрация и сортировка списка по различным критериям) или отдельные документы, а также создавать приходные и расходные документы.
При создании расходного документа товары выбираются из имеющихся на складе.
Сводный отчет по базе данных:
Отчет по движениям товаров:
Для этого отчета доступны фильтры по дате и номеру/наименованию товара:
Если щелкнуть на строчке отчета, то можно получить сводную информацию по операциям с контрагентами по данному товару:
Отчет по операциям с контрагентами похож по структуре на отчет по операциям с товарами:
Также, если щелкнуть на строчку отчета можно получить информацию об операциях данного контрагента в разрезе товаров:
Также можно скачать список товаров и контрагентов в формате xls:
При выборе этого пункта происходит удаление всех помеченных объектов, для которых эта операция выполнима (нельзя удалить, например, проведенные документы, а также товары и контрагентов, на которые есть ссылки в документах).
В меню "Сервис" доступна возможность импорта справочника товаров из файла xlsx. Импортированные товары будут добавлены к уже имеющимся в справочнике.
С помощью данного раздела приложения можно решать две задачи:
- Просматривать текущие остатки (доступна возможность поиска по номеру и наименованию)
- Редактировать и добавлять остатки (если пользователь помечен как superuser)
Здесь отображаются операции, совершаемые пользователями приложения в порядке убывания даты их выполнения (самая последняя операция всегда вверху списка)
В тестовой базе данных, размещенной в данном репозитории созданы два пользователя:
- admin (пароль admin)
- ironman (пароль tk796799)
Приложение тестировалось на Windows 10 x64