Devita — интернет-каталог для оптовых клиентов

В 2016 году Бресткий производитель одежды, компания Devita, разрабатывала сайт для оптовых клиентов. Задача  разработать каталог, получать последние размеры и модели со склада производителя, цены и наличие готовой одежды. Информация транслируется клиенту в личный кабинет, где менеджер работает с персональными ценами и условиями. Проект необходимо разработать на системе управления сайтом "1С-Битрикс: Управление сайтом" v8.2 как на программе для работы со складом и системой лояльности клиента.

После первой встречи с Devita решили попробовать реализовать проект по программе поддержки и развития малого и среднего предпринимательства Европейского банка реконструкции и развития (ЕБРР). Программа банка дает возможность молодым предпринимателям получить субсидию для развития бизнеса.

Компания abiatec — консультант Европейского банка и разрабатывает программные продукты для партнеров банка. Отдел бизнес-анализа abiatec проанализировал особенности бизнеса клиента и подготовил техническое задание для Европейского банка. Определили основные этапы разработки програмного продукта:

  • Сайт интернет-каталог как инструмент работы с оптовыми партнерами.
  • Личный кабинет партнера, авторизация клиента и учёт индивидуальных параметров (скидка, цена, наличие на складе, состояние заказа)
  • Интеграция с 1С v8.2 

Разработка уникального дизайна для сайта Devita

Devita активно работает над промоматериалами для своих коллекций, поэтому для разработки дизайна у нас было достаточно отличного материала. Мы старались сделать упор на визуальную составляющую бренда: большие качественные фотографии и графика расскажут о fashion компании гораздо больше, чем текст.

Каталог коллекций Devita реализован на стандартном функционале модуля "Каталог" Bitrix CMS. Bitrix учитывает SKU в пределах позиция товара, уникальный размер и цвет. Авторизованные пользователи сайта видят в режиме реального времени наличие на складе компании уникального SKU и могут добавить в корзину товар. Цены в карточке товара устанавливаются индивидуально для каждого пользователя; данная возможность позволяет клиентам компании получать уникальные торговые предложения в зависимости от настроенной скидки и условий заказа.

Карточка товара показывает актуальные SKU на складе Devita и персональную цену для авторизованного пользователя. Галерея изображений показывает товар с различных ракурсов. Реализована возможность устанавливать акционные маркеры на товар.

Возможности личного кабинета пользователя

Главной особенностью сайта явлется то, что пользователь получает доступ ко всем возможностям сайта только после регистрации и подтверждения его аккаунта администратором Devita. Бизнес-процессы компании не позволяли использовать стандартный функционал Bitrix в полном объеме, и нашим программистам пришлось модифицировать его. 

Модуль "Личный кабинет" даёт возможность видеть историю заказов пользователя, отслеживать состояния заказа: В обработке, Отредактирован, Готов к оплате, Отгружен и.т.д. Пользователь в личном кабинете отслеживает действительный статус заказа, вносит изменения и подтверждает его. Пользователь оплачивает подтвержденный заказ и обменивается бухгалтерскими документами с менеджером через личный кабинет.

Личный кабинет, функционал: статус заказа, корзина и страница управления заказами.

Описание технических возможностей сайта-каталога Devita

Для интеграции сайта использовали систему управления сайтом 1C Bitrix.CMS редакция "Бизнес" для взаимодействия с клиентами интеграция клиентского функционала Bitrix24.CRM

Синхронизация с 1С УТ на базе версии 8.2 данные о номенклатуре передаются в виде XML-файлов по стандартному протоколу Битрикс.
Авторская модификая модулей:

  • Модуль интернет-магазин 
  • Модуль скидки и купоны
  • Модуль личный кабинет и корзина 
  • Модуль обмена данными с 1С: модификация протокола обмена данными. 

Галерея дизайна Devita

export default function transform(file, api) {
  const j = api.jscodeshift
  const root = j(file.source)

  root
    .find(j.ClassDeclaration)
    .find(j.MethodDefinition, { kind: 'constructor' })
    .find(j.AssignmentExpression, {
      left: {
        object: j.ThisExpression,
        property: { name: 'state' }
      }
    })
    .forEach(stateAssignment => {
      const initialState = stateAssignment.node.right
      const asProperty = j.classProperty(j.identifier('state'), initialState, null, false)

      j(stateAssignment)
        .closest(j.ClassBody)
        .get('body')
        .insertAt(0, asProperty)

      j(stateAssignment).remove()
    })

  return root.toSource()
}

Готовы сотрудничать?