F
Fand_igor

Внутренний магазин и 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 в рабочий процесс обновления каталога;
  • постепенного перехода от изучения технологии к разработке систем под реальные бизнес-задачи.