Внутренний магазин и CRM салона для мебельного производства
Краткое описание
Один из моих ранних прикладных веб-проектов для того же заказчика. Это была внутренняя система для салона мебельного производства: каталог товарных позиций, поставщики, внутренняя корзина, оформление продаж, история операций, отчёты и импорт данных из Excel. Проект стал для меня одной из первых полноценных рабочих систем, в которой я прошёл путь от базового освоения веб-разработки до реализации внутреннего инструмента под реальные бизнес-задачи.
Для чего был нужен проект
Проект решал задачу внутреннего учёта товарных позиций в салоне и сопровождения продаж. Система позволяла сотрудникам работать в едином веб-интерфейсе вместо ручного ведения данных по товарам, поставщикам и операциям.
Система позволяла:
- вести внутреннюю базу товарных позиций;
- хранить и редактировать информацию по поставщикам;
- собирать позиции в корзину перед оформлением продажи;
- фиксировать продажу с расчётом сумм, скидок и типа оплаты;
- печатать документы по операциям;
- смотреть историю продаж и базовую аналитику;
- обновлять каталог через загрузку Excel-файлов.
Что было реализовано
- Вход в систему по логину и паролю с сессионной авторизацией.
- Внутренний интерфейс с разделами каталога товаров, поставщиков, истории продаж и отчётов.
- Разграничение возможностей и состава отображаемых данных по ролям пользователей, включая администратора, директора и обычных сотрудников.
- Каталог товарных позиций с поиском, постраничной навигацией и действиями по редактированию.
- Хранение артикула, названия, поставщика, количества, закупочной цены, доставки, коэффициента наценки, рекомендованной цены и служебной информации по товару.
- Inline-редактирование части полей прямо в таблице без полного перехода в отдельную форму.
- Автоматический пересчёт цены реализации при изменении коэффициента.
- Отдельная база поставщиков с контактной и справочной информацией.
- Внутренняя корзина пользователя с добавлением, изменением количества, удалением отдельных позиций и полной очисткой набора.
- Проверка остатков перед оформлением продажи.
- Оформление продажи с созданием чека, сохранением состава продажи по позициям, расчётом количества товаров, сумм, скидок и итоговой стоимости.
- Поддержка комментариев, даты операции и разных типов оплаты в процессе оформления.
- Возврат продажи с восстановлением остатков по товару и фиксацией истории операции.
- История продаж с поиском, фильтрацией и просмотром оформленных чеков.
- Отчёты по продажам с расчётом закупочной стоимости, доставки, суммы реализации и прибыли.
- Статистика продаж товаров по позициям, поставщикам, количеству и сотрудникам.
- Генерация печатного PDF-документа по продаже через
FPDF.
Работа с Excel
В проекте был отдельный контур загрузки и обработки Excel-файлов, который решал не просто задачу прикрепления документа, а обновление внутреннего каталога.
- Поддержал загрузку файлов
.xlsи.odsчерез веб-интерфейс. - Реализовал клиентский сценарий загрузки через
SWFUploadс прогрессом, статусом и ограничениями на тип и размер файла. - Добавил серверную проверку структуры входного файла и разбор данных по шаблону.
- Поддержал несколько вариантов Excel-шаблона для импорта.
- Извлекал из файла артикул, название, поставщика, количество, закупочную стоимость, стоимость доставки, коэффициент, рекомендованную цену и комментарии.
- Проверял обязательные поля и находил повторяющиеся артикулы в загружаемых данных.
- Автоматически создавал новых поставщиков, если они отсутствовали в системе.
- Сравнивал импортируемые позиции с уже существующими данными каталога.
- Для существующих позиций обновлял остатки, цены, коэффициенты и цену реализации.
- Для новых позиций добавлял товары в базу.
- Вёл историю изменений по товарам, чтобы фиксировать, кто и когда обновлял данные через импорт.
- Поддержал откат части обновлений при ошибках во время пакетной обработки.
Как был устроен пользовательский сценарий
- Сотрудник входил во внутреннюю систему.
- Работал с каталогом товаров и поставщиков через интерфейс салона.
- Добавлял нужные позиции в корзину.
- Оформлял продажу с указанием скидки, комментария, даты и типа оплаты.
- Получал сформированный чек и мог вывести его на печать в PDF.
- Позже мог найти операцию в истории и посмотреть сводные отчёты.
- При необходимости каталог обновлялся через загрузку Excel-файла.
Технологии
- PHP 5.6
- JavaScript
- jQuery
- AJAX
- MySQL
- FPDF
- SWFUpload
- HTML / CSS
Моя роль
Моя роль была сквозной: от освоения и практического применения базовой веб-разработки до реализации рабочего внутреннего инструмента для сотрудников салона. В проекте я занимался серверной логикой, интерфейсом, сценариями продаж, загрузкой и обработкой Excel, печатной формой чеков и общим развитием системы под реальные рабочие процессы заказчика.
Практическая ценность проекта
Этот кейс важен как ранний продуктовый опыт. Он показывает, что уже на начальном этапе я работал не с учебными примерами, а с прикладной бизнес-задачей и доводил её до рабочего инструмента.
Проект показывает опыт:
- разработки внутренних систем для сотрудников;
- построения каталога, справочников и операционных сценариев в одном интерфейсе;
- реализации корзины и логики оформления продажи;
- расчёта сумм, скидок, типов оплаты и прибыли;
- генерации печатных документов;
- построения истории операций и базовой отчётности;
- интеграции импорта из Excel в рабочий процесс обновления каталога;
- постепенного перехода от изучения технологии к разработке систем под реальные бизнес-задачи.