Giter VIP home page Giter VIP logo

pymasl's Introduction

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.

Интерфейс.

При запуске проекта отображается форма идентификации.

0

После успешной аутентификации пользователя открывается главная форма приложения.

1 Она состоит из следующих вкладок: посетители, продажи, доп.услуги, статистика, касса.

Вкладка "клиенты".

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

7

Если требуется изменить имеющиеся данные, то надо дважды нажать на нужную строку, либо выделить ее и нажать кнопку "изменить".

Вкладка "продажи".

На ней отображаются сведения о всех оформленных продажах билетов. Доступны следующие фильтры: текущий день, 3 дня и 7 дней.

2

При нажатии на кнопку "новая" открывается форма для формирования новой продажи.

8

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

В зависимости от возраста посетители делятся на следующие группы:

  • младше 5 лет получают бесплатный билет;
  • от 5 до 14 лет получают детский билет;
  • старше 14 лет получают взрослый билет.

Цена билета автоматически рассчитывается в зависимости от возраста и категории посетителя. Реализован следующий механизм расчета:

  • многодетным в будние дни предоставляется скидка 50%;
  • в первое воскресение месяца многодетным предоставляется бесплатный билет на два часа;
  • инвалидам предоставляется бесплатное посещение в любой день с одним сопровождающим. В соответствии с ценовой политикой организации стоимость билета в будний день может отличаться от цены билета в выходной день. Статус дня, в котором оформляется заказ, рассчитывается автоматически. Возможен как учет дополнительных праздничных дней, так и "внеплановых" рабочих дней. Возможно применение скидки с шагом в 5% к каждой позиции в таблице "заказы". Продажа "привязывается" к взрослому посетителю. Если он не хочет посещать развлекательный центр - его можно исключить из продажи.

Вкладка "доп.услуги".

Предполагается реализация дополнительных услуг: дни рождения, дискотеки и т.д.

Примечание: данный функционал находится в стадии разработки.

Вкладка "статистика".

На ней формируются сведения о продажах за выбранный период. Формируются следующие показатели:

  • количество проданных билетов в разрезе по времени посещения и категории посетителя;
  • финансовые показатели с разбивкой по способу оплаты и рабочему месту.

4

Для получения сведений нужно выбрать временной диапазон и нажать на кнопку "сформировать". После этого можно сгенерировать отчет кассира и администратора.

5

6

Вкладка "касса".

На ней расположены кнопки для работы с банковским терминалом и кассовым аппаратом.

9

Установка

Примечание: --раздел находится в разработке.

Зависимости указаны в 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!

pymasl's People

Contributors

marcusstill avatar

Watchers

 avatar

pymasl's Issues

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.