Сайт по тематике стрельбища, спортивной и оборонной стрельбы. Предоставляет возможность заказать услуги по стрельбе такие как тренировки, аренда стрелецкого пространства и тд.
Нужно сделать мини CRM на laravel. Система должна вести учет пользователей, модерацию предоставляемых услуг, давать возможность принимать(с сайта) и создавать вручную заявки, что будут связывать клиента и услугу, предоставлять возможность добавления расходов и их модерацию. Система так же должна вести простую отчетность по доходам и расходам.
Сроки выполнения и бюджет на усмотрение исполнителя. Исполнитель будет выбран согласно предоставленных сроков(в виде таблицы с разбитием часов рабочего времени на каждую часть работы), запрошенного бюджета.
С полным ТЗ можно ознакомится ниже:
Авторизация 1
Расходы 1
События 2
Клиенты 3
Заявки 5
Галереи 6
Отчетность 7
Дополнение 8
В системе есть две роли: администратор и супер-администратор.
1.1. Администратор может создавать и управлять заявками, добавлять статьи расхода, создавать события, управлять информацией по клиентам.
1.2. Супер-администратор имеет все те же права, что и администратор. Супер-администратор имеет доступ к странице с админами в виде списка. Может добавлять новых, удалять, изменять и просматривать логин и пароль администраторов.
Вход в систему осуществляется по логину и паролю.
Все расходы добавляются администратором вручную. Страница с расходами содержит список из 10 созданных ранее расходов, дальше за пагинацией.
Должна присутствовать кнопка “Створити нову витрату”. Для уже созданных расходов кнопка “Редагувати витрату”(редактировать можно любые поля, в том числе и дату).
При нажатии кнопки “Створити нову витрату” мы получаем модальное окно для создания нового расхода с полями для заполнения:
“Продукт”
“Пояснення”
“Сума”
“Дата створення”
Должна быть возможность для администратора, создавать и удалять виды расходов(Продукт) - кнопка “Продукти” открывает модальное окно со списком всех продуктов, с кнопками “Видалити продукт” и “Додати продукт”
При создании нового расхода, администратор должен выбрать из списка продуктов нужный, либо создать новый.
В ранее созданных расходах должны быть видны следующие поля:
“id”
“Продукт”
“Пояснення”
“Сума”
“Дата створення”
“Хто створив”
“Дата зміни”
“Хто змінив”
На странице событий есть разделение на две основных части: “Минулі” и “Майбутні”. Для “Минулі” показываем 10 штук., дальше за пагинацией. Тот же механизм и для будущих событий. Для добавления нового события кнопка “Нова подія”.
Каждое событие это блок с “Назва події” “Тип” “Дата події”, при клике на блок попадаем на подстраницу с возможностью редактировать каждое поле.
Все события создаются вручную администратором.
События имеют такие поля:
“id”
“Тип”
“Дата події”
“Початок події”
“Кінець події”
“Максимальна кількість учасників”
“Учасники” (клієнти)
“Назва події”
“Опис”
“Мета тайтл”
“Мета опис”
“slug”
“Адміністратори”
“Фото”
“Початок реєстрації”
“Кінець реєстрації”
“Місце проведення”
“Рівень стрільців”
“Кількість пострілів”
“Галерея Id”
“Заявка Id”
“Ціна”
Обязательных полей к заполнению нету, но должен быть чекбокс “Відображти на сайті” и кнопка “Зберегти”.
“Початок події” не может быть позже “Кінець події”.
“Початок реєстрації” не может быть позже “Кінець реєстрації”. “Учасники” (клієнти) при нажатии показывает список id клиентов, при нажатии на id переводит на страницу с полями клиента(смотреть "Клиенты"). “Галерея Id” - выпадающий список с id галерей.
Тип события создается администратором. Должна быть кнопка “Типи подій” которая открывает подстраницу со всеми типами событий, и кнопкой “Створити новий тип події”, при нажатии на которую появляется модальное окно с полями для заполнения)
При создании нового события администратор должен иметь возможность выбора типа события из заранее созданных(уже существующие типы событий - смотреть "Дополнение").
Тип события имеет такие поля:
“id”
“Назва”
“Опис”
“Тривалість”
Время проведения события, определяет разница между “Початок події” и “Кінець події”. При заполнении “Початок події” поле “Кінець події” должно заполнятся автоматически( “Початок події” + “Тривалість” =
“Кінець події” )
При создании события, время проведения этого события должно попадать в "Галереи", как занятое время галереи. Участники прикрепляются к событию, после создания и подтверждения заявки привязанной к этому событию(смотреть "Заявки")
Страница клиентов выглядит списком из 15 клиентов, дальше за пагинацией. Должен присутствовать поиск, и фильтр по всем полям Кнопка “Додати нового клієнта”, которая открывает модальное окно с информационными полями и кнопками “Зберегти” и “Отменить”. Кнопка “Члени ГО” открывает модальное окно с перечнем типов, и возможностью изменить их поля.
Клиенты делятся на 3 основных группы:
Обычный клиент
Клиент Член ГО1
Клиент Член ГО “ПРЕМИУМ”(ГО1- Громадська організація)
Обычный клиент создается автоматически при создании заявки(смотреть "Заявки"). Клиент имеет следующие поля:
“Номер телефона”
“Електронна пошта”
“Ім’я та Прізвище”
“Дата народження”
“Член ГО?”
“Номера дозволів на зброю”
“Типи зброї”
“Заявки прив'язані до клієнта” “Баланс”
“Номер телефона” - в нашем случае это id клиента. Номер телефона должен быть без пробелов, без кода страны в формате хххххххххх. У каждого клиента должен быть баланс, как отдельная сущность с полями: “id”
“Сума”
Администратор должен иметь возможность поменять баланс в любое время.
Если клиент Член ГО, тогда должна быть возможность выбора: просто “Член ГО” или “Член ГО ПРЕМИУМ”.
Для члена ГО есть отдельная сущность с полями:
“Тип члена”
“Дата вступу”
Тип члена Го имеет такие поля:
“id”
“Членскій збір” “Знижка”
Администратор должен иметь возможность изменять информационные поля для Члена ГО и для типа Члена ГО.
“Членскій збір” - сумма которая автоматически снимается с баланса клиента каждый месяц начиная от “Дата вступу”. Если баланс клиента меньше чем сумма “Членскій збір” нужно выделить данного клиента отдельным цветом, и поставить вверх списка.
“Знижка” - процент который автоматически отнимается от суммы заявки(смотреть "Заявки")
Член ГО получает на месяц два бесплатных “тренування без інструктора”(смотреть "Дополнение"). Для клиентов, которые члены ГО, добавляется поле с количеством бесплатных тренировок. Это количество регулируется автоматически(при создании заявки с типом события “тренування без інструктора” “количество бесплатных тренировок” = “количество бесплатных тренировок” -1.
Для каждого Члена ГО при создании заявки для такого типа события, сумму заявки(смотреть "Заявки") указывать 0 с пометкой о бесплатной тренировке.
Член ГО ПРЕМИУМ получает неограниченное количество “тренування без інструктора”(смотреть "Дополнение"). При создании заявки для такого клиента всегда указывать сумму заявки(смотреть "Заявки") - 0.
Страница заявок разбивается на группы соответственно статусам.
В каждой группе показываем 10 заявок по дате, дальше за пагинацией.
Каждая заявка представляет из себя блок с “Подія” “Номер телефону” “Ім’я та Прізвище” “Дата створення” “Сума заявки”, при нажатии на блок попадаем на подстраницу с возможностью редактировать все поля. При нажатие на “Номер телефону” попадаем на страницу с полями клиента.
Должна быть кнопка “Відхилені заявки”, которая перекидывает на подстраницу со 10 отклоненными заявками, дальше за пагинацией. При нажатие на отклоненную заявку попадаем на подраздел с возможностью редактировать все поля, и кнопками “Прийняти”(меняет статус заявки на “Принято”) и “Відмінити”.
Также нужен поиск по заявкам соответственно полям заявки.
Заявки могут создаваться как вручную администратором, так и автоматически с сайта.
При создании заявки вручную, у администратора должна быть кнопка “Створити нову заявку”, которая открывает подраздел с возможностью редактировать все поля, принять заявку(кнопка “Прийняти”), и отклонить ее(кнопка “Відхілити”, при нажатии выпадает модальное окно с вопросом “Ви впевнені, що хочете відхилити заявку?” с кнопками “Так” и “Ні”, статус заявки меняется на “Відхилено”).
Поля заявки:
“Номер телефону”
“Ім’я та Прізвище”
“Електронна пошта”
“Подія”
“Статус”
“Дата створення”
“Дата зміни”
“Хто створив”
“Тип оплати”
“Тип зброї”
“Сума заявки”
“Внесена сума”
Обязательные поля к заполнению:
“Номер телефону”
“Ім’я та Прізвище”
“Електронна пошта”
“Сума заявки”
“Внесена сума”
В модальном окне редактирования заявки поле “Номер телефону” выступает как id клиента привязанного к этой заявке. Возле поля для ввода телефона должна быть кнопка “знайти клієнта” результат нажатия это либо сообщение о том, что клиент не найден, либо заполнение информационных полей связанных с клиентом(“Ім’я та Прізвище” “Електронна пошта”). Если же клиент с таким id не найден, тогда после принятия заявки автоматически создается новый клиент с информацией соответствующей в заявке(“Номер телефону” “Ім’я та
Прізвище” “Електронна пошта”), а заявка приобретает статус
“Прийнята”
Внизу модального окна редактирования заявки, должен быть чекбокс «Відпарвити заявку на пошту клієнта».
После принятия заявки, на почту клиента должно прийти письмо, с информацией с заявки. Шаблон письма должен быть редактируемым.
Если заявка создается на ранее созданное внутри системы событие, тогда сумма заявки указывается согласно полю “Ціна” в "События". Если же, это событие которое нужно создать, тогда администратор указывает свое значение, и после привязки к события, это значения автоматически не меняется, его может изменить только администратор.
Когда заявка создается автоматически она попадает в раздел заявок в категорию “Нові заявки” со статусом “Нова заявка”. Администратор при ее открытие видит все точно тоже самое, что и при создании заявки вручную, только информационные поля уже заполнены клиентом вручную(на стадии подачи заявки на сайте). Система должна автоматически проверить есть ли клиент с таким id уже в системе или нужно создать нового.
Страница со списком галерей, и свободным временем каждой из них.
В системе должна быть возможность фиксировать галереи1. (галереи1 - пространство для стрельбы)
Сущность галереи имеет такие поля:
“id”
“Заявки”
“Вільний час”
“Вільний час” - это промежуток времени, что должен рассчитываться автоматически, согласно занятому времени галереи, а также времени работы всего стрельбища(время работы стрельбища - смотреть "Заявки").
“Заявки” - при нажатии открывается модальное окно с блоками заявок в которых поле “Галерея Id” совпадает с “id” галереи, что мы просматриваем. Блок заявки совпадает с блоками заявок на странице заявок. При нажатие на этот блок попадаем на страницу с полями заявки.
Нужно также сделать возможность совокупного свободного времени всех галерей. Когда клиент на сайте заказывает событие, ранее не созданное в системе, нужно предоставить ему возможность выбора времени. Время которое он может выбрать должно строится на совокупности свободного времени галерей.
Администратор должен иметь возможность вручную добавлять галереи.
Страница с графиками разделена на две части:
Круговые диаграммы с выделением расходов по продуктам.
Пример:
График дохода\расхода и профита
Пример:
<!--[if !supportLineBreakNewLine]-->
Должен быть выбор вывода диаграмм и графиков за месяц, квартал, год.
Расходная часть строится на основании всех созданных расходов.
Доходная часть строится на основании сумм всех выполненных заявок.
Уже существующие типы событий:
Тренування без інструктора - 2 год - 250 грн
Тренування з інструктором - 2 год - 400 грн
Індивідуальне тренування з інструктором ПРЕМІУМ - 2 год - 600 грн
Оренда галереї на день - 9:00 - 15:00 - 3000 грн
Пристрілка зброї - 0 год - 150 грн
Розважальна стрільба - 1,5 год - 1000 грн
Надання в цілому стрільбища в оренду для змагань - 8:00 - 20:00
Майстер клас - 4 год - 1100 грн
Статусы заявок:
“Нова заявка” - выставляется автоматически при получении. заявки через сайт.
“Прийнята заявка” - выставляется автоматически после принятия. заявки администратором.
“Відміна не в термін” - выставляется вручную администратором.
“Відміна в термін” - выставляется вручную администратором.
“Відмінено організаторами” - выставляется вручную. администратором.
“Не з’явився” - выставляется вручную администратором.
“Відхилено” - выставляется автоматически после отклонения. “Виконано” - выставляется вручную администратором.
Время работы стрельбища: 8:00-20:00