PyMASL
Программа для учета посетителей и реализации услуг в детском развлекательном центре
PyMASL это небольшая программа, позволяющая вести учет посетителей детского центра и производить реализацию услуг с использованием торгового оборудования.
Реализованный функционал
- учет сведений о клиентах: внесение, изменение, поиск;
- продажи билетов: формирование заказов, сохранение заказов для оплаты в будущем периоде, “привязка” продажи к сопровождающему, применение различных видов скидок (льготы многодетным и инвалидам, применение скидки с шагом 5%);
- соблюдение правил посещения детского центра при оформлении заказов;
- выполнение операций с торговым оборудованием: ведение денежных операций при помощи ККМ АТОЛ, работа с эквайринговым терминалом Сбербанка, генерация и печать входных билетов;
- ведение статистики продаж и посещений;
- формирование отчетности.
Внедрение проекта началось с 01.06.2022 г. По состоянию на 27.07.2022 г. ПО перешло в стадию предварительной версии. Выявленные ошибки исправлены, статистика и отчеты переработаны. Дальнейшее развитие: рефакторинг, приведение кода в соответствие со стандартом PEP 8, изменение дизайна форм, аннотация типов данных, написание автотестов. Так же в планах внедрение нового функционала исходя из пожеланий заказчика.
Используемые технологии
PyMASL написан на Python и использует ряд проектов с открытым исходным кодом:
- В качестве СУБД используется PostgreSQL.
- БД развернута в Docker контейнере, для этого используется Docker и Docker Compose.
- Для безопасного изменения состояния БД используется инструмент для управления миграциями Alembic.
- Для работы с БД используется ORM инструмент SQLAlchemy.
- Графический интерфейс создан при помощи PySide6, предоставляющего доступ ко всему фреймворку Qt 6.0+. Формы разработаны в Qt Designer.
- Для запуска программы в ОС Windows проект конвертируется в исполняемый exe файл при помощи Auto PY to EXE (графический интерфейс к PyInstaller).
- Для работы с эквайринговые терминалы PAX/Ingenico используется утилита loadparm.exe.
- Для работы с онлайн-кассами АТОЛ FPrint-22ПТК используется драйвер контрольно-кассовой техники v.10 дККТ10.
- Для генерации форм различных документов используется библиотека ReportLab.
- Для формирования pdf документов используется SumatraPDF.
И, конечно же, PyMASL это open source проект, размещенный в публичном репозитории на GitHub.
Интерфейс.
При запуске проекта отображается форма идентификации.
После успешной аутентификации пользователя открывается главная форма приложения.
Она состоит из следующих вкладок: посетители, продажи, доп.услуги, статистика, касса.
Вкладка "клиенты".
На ней отображается список всех клиентов. Доступны следующие фильтры: фамилия и имя (например, фраза "ива алекс" отфильтрует всех клиентов фамилия которых начинается с "ива" и имя начинается с "алекс"), фамилия, номер телефона, статус "инвалид", статус "многодетный". При нажатии на кнопку "добавить" открывается форма для внесения сведений о новом посетителе.
Если требуется изменить имеющиеся данные, то надо дважды нажать на нужную строку, либо выделить ее и нажать кнопку "изменить".
Вкладка "продажи".
На ней отображаются сведения о всех оформленных продажах билетов. Доступны следующие фильтры: текущий день, 3 дня и 7 дней.
При нажатии на кнопку "новая" открывается форма для формирования новой продажи.
Она разделена на несколько частей. Верхняя таблица (далее таблица клиенты) используется для отображения перечня клиентов в соответствии с выбранным вариантом фильтрации (по тем же принципам, как и на вкладке "посетители"). Кнопка "новый" позволяет внести в базу данных нового клиента, а кнопка "+" сразу добавляет его в продажу. Кнопка "изменить" открывает форму со сведениями о посетителе для их корректировки. В таблицу, расположенную в правой части формы продажи, выводится список посетителей, которые были вместе в одной продаже ранее. В таблицу, расположенную в нижней части формы (далее таблица "заказ"), двойным кликом добавляются гости из таблицы "клиенты" для формирования продажи. На форме "продажи" присутствует поле с выбором даты посещения и выпадающий список с выбором продолжительности посещения. Checkbox "продление в день многодетных" позволяет оформить дополнительную продажу для посетителей со статусом многодетный в первое воскресение месяца. Продажу с определенным перечнем гостей можно сформировать заранее.
В зависимости от возраста посетители делятся на следующие группы:
- младше 5 лет получают бесплатный билет;
- от 5 до 14 лет получают детский билет;
- старше 14 лет получают взрослый билет.
Цена билета автоматически рассчитывается в зависимости от возраста и категории посетителя. Реализован следующий механизм расчета:
- многодетным в будние дни предоставляется скидка 50%;
- в первое воскресение месяца многодетным предоставляется бесплатный билет на два часа;
- инвалидам предоставляется бесплатное посещение в любой день с одним сопровождающим. В соответствии с ценовой политикой организации стоимость билета в будний день может отличаться от цены билета в выходной день. Статус дня, в котором оформляется заказ, рассчитывается автоматически. Возможен как учет дополнительных праздничных дней, так и "внеплановых" рабочих дней. Возможно применение скидки с шагом в 5% к каждой позиции в таблице "заказы". Продажа "привязывается" к взрослому посетителю. Если он не хочет посещать развлекательный центр - его можно исключить из продажи.
Вкладка "доп.услуги".
Предполагается реализация дополнительных услуг: дни рождения, дискотеки и т.д.
Примечание: данный функционал находится в стадии разработки.
Вкладка "статистика".
На ней формируются сведения о продажах за выбранный период. Формируются следующие показатели:
- количество проданных билетов в разрезе по времени посещения и категории посетителя;
- финансовые показатели с разбивкой по способу оплаты и рабочему месту.
Для получения сведений нужно выбрать временной диапазон и нажать на кнопку "сформировать". После этого можно сгенерировать отчет кассира и администратора.
Вкладка "касса".
На ней расположены кнопки для работы с банковским терминалом и кассовым аппаратом.
Установка
Примечание:
--раздел находится
в разработке.
Зависимости указаны в requirements.txt. Для работы в ОС Windows проект конвертируется в exe при помощи Auto PY to EXE - GUI к PyInstaller.
Процесс преобразования..
В дополнительные файлы нужно добавить содержимое каталога Files/platforms. состав Для корректног озапуска требуются следующие dll
Docker
Примечание:
--раздел находится
в разработке.
cd pymasl
docker build -t ...
This will create the PyMASL image and pull in the necessary dependencies.
docker run -d -p 8000:8080 --restart=always ...}
Verify the deployment by navigating to your server address in your preferred browser.
127.0.0.1:8000
Лицензия
Примечание:
--раздел находится
в разработке.
Free Software, Hell Yeah!