Как я начал управлять остатками на маркетплейсах - Новости о поисковых системах, SEO и интернет-маркетинге
Интернет и медиа

Как я начал управлять остатками на маркетплейсах

Всем привет!

Меня зовут Кирилл и в последние несколько лет я «болею» цифрами, аналитикой и автоматизацией бизнес-процессов.

Как я начал управлять остатками на маркетплейсах

Человек, болеющий Цифроманией:)

Болезнь «Цифромания» началась, когда я трудился РОПом. Ежедневные рутинные операции по составлению управленческих отчетов из разных источников: CRM система и системы бухгалтерского учета, каждый день я делал ctrl+C и ctrl+V в одних и тех же таблицах и приводил форматирование к единому виду. Одни и те же действия, каждый день с понедельника по пятницу — и я «заболел». Заболел автоматизацией процессов.

Сначала были просто автоматические шаблоны – нужно было только добавить новые данные, (например, выгрузки из CRM-системы) и все показатели в таблице автоматически пересчитаются, графики изменятся, и уже можно анализировать актуальные данные.

В дальнейшем из нескольких таких шаблонов я сделал единую систему управленческой отчетности, в которой я объединил показатели как процесса продаж (данные CRM-системы), так и показатели результата продаж (данные бухгалтерской системы учета). Все данные в единой системе автоматически обновлялись, были связаны между собой, была возможность отобразить информацию за выбранный период, а также были настроены различные права доступа для линейных сотрудников (показатели процесса продаж и данные CRM-системы) и для руководителей отделов продаж и собственников компании. Подробнее о работе и наполнении такой системы — https://vk.com/@rezenov-proekt-sistema-otchetnosti-dlya-otdela-prodazh

Как я начал управлять остатками на маркетплейсах

Архитектура ERP-системы на базе Google-таблиц

В первой части я рассказал о том, как у нас появились оцифрованные процессы складского учета. Сотрудники склада принимают готовые изделия на склад (фиксируют приход на основании данных с последнего этапа производства) и осуществляют отгрузку готовых изделий покупателям и на склады в других регионах РФ для пополнения их остатков.

Как я начал управлять остатками на маркетплейсах

Процесс отгрузки продукции с основного склада

Предприятие загружает производство на полную мощность, производя продукцию как для реализации через свои каналы сбыта, так и для оптовых заказчиков. Соответственно, складской учет организован раздельно.

Блок «Система управления остатками на складах и маркетплейсах»

Свою продукцию предприятие реализует через две самые крупные площадки маркетплейсов в РФ. Назовем маркетплейсы как Площадка1 и Площадка2.

Заказчик в одном из обсуждений высказал свою мечту: «Вот бы сделать так, чтобы я всегда мог видеть сводную информацию по заказам моей продукции на Площадках! Ведь тогда я бы смог максимально точно планировать производство, я бы оптимизировал расходы на закуп материалов на производство и рекламу, я бы …» он задумался на несколько секунд. «И вообще! Я хочу видеть, что у меня продается, с каких складов сколько-чего, когда отгружается и вообще. Вообще хочу видеть все!»

Ну что ж. Отказывать заказчику в желании нельзя!

На первый взгляд то, что хочет клиент, помещается в 1 или 2 дашборда: по продажам и по отгрузкам. Разбивка по товарам, регионам продажи, по количеству, по деньгам и тд. Слишком все просто. Взял паузу, на то, чтобы полностью обдумать ТЗ заказчика. Семь раз отмерь – один отрежь! Чем детальнее понимаешь весь процесс от входа до выхода, тем меньше времени в последствии потратишь на доработки и изменения.

Вы удивитесь, но после нескольких встреч с заказчиком и уточнения всех деталей, ТЗ кардинально изменилось. Итак, представьте себе ситуацию:

Вы продавец и торгуете своим товаром на 2х маркетплейсах: Площадка 1 и Площадка 2. На обеих площадках есть какие-то остатки товаров. Когда покупатель создает заказ на одной площадке, количество остатка этого товара на другой площадке должно уменьшиться на единицу, чтобы не получилось так, что товар заказали, а на остатках его нет. В этом случае продавцу будет выставлен штраф за наличие некорректных остатков.

Как я начал управлять остатками на маркетплейсах

2 витрины — один склад. Как может возникнуть штраф за некорректные остатки на маркетплейсах

Здесь у продавца, по сути, 2 выхода. Держать на удаленных складах большие остатки, которые создают дополнительные складские расходы. Или сокращать расходы: оперативно управлять остатками на удаленных складах и синхронизировать информацию о наличии товара между Площадкой 1 и Площадкой 2, чтобы не «попасть» на штрафы.

Хмм… хорошо. Но ведь остатки сами собой не появляются! Кто-то как-то сейчас управляет остатками на Площадках? Значит нужно связать с собой процесс складского учета «отгрузки» с системой, которая будет управлять остатками на Площадках.

Как я начал управлять остатками на маркетплейсах

Как должна работать система управления остатками

Т.е. в итоге нам нужно заставить работать вместе внутреннюю систему учета и внешние системы обеих Площадок.

Первоначально синхронизация остатков работала так: система сравнивала текущие остатки на обеих Площадках, находила минимальный остаток и выравнивала его на каждой Площадке. В такой форме реализации важнейшую операцию ВЫЧИТАНИЕ мы отдаем на сторону Площадки и просто регулярно забираем данные о текущих остатках, которые каждая Площадка определяет сама: ТЕКУЩИЙ ОСТАТОК = НАЧАЛЬНЫЙ ОСТАТОК – КОЛ_ВО ЗАКАЗА.

В тестовом режиме я установил период обновления данных в 10 мин. Все было хорошо, ровно до момента, когда один и тот же артикул заказывали на Площадках одновременно. Остатки задваивались в минус. Возможным решением покажется сокращение периода обновления. Но даже с учетом сокращения риск одновременного заказа остается.

Автоматизация процесса направлена на то, чтобы исключить ошибки, возникающие при ручном выполнении задач, и снизить зависимость от внешних факторов.

Верное решение нашлось с другой стороны продажи. Я начал смотреть с конца, с остатков, а правильно было смотреть на начало – на самое начало процесса Продажа – на этап Заказа.

API обеих площадок позволяет получать данные о новых заказах в автоматическом режиме через специальный запрос. Согласно документации API одной из Площадок данные по новым заказам можно получать не чаще, чем раз в 30 минут. Это условие мы изменить не можем. Поэтому период обновления всей нашей системы будет по умолчанию 30 минут.

Т.е. каждые 30 минут получаем данные о новых заказах за последние 24 часа от обеих Площадок. Далее нам нужно решить несколько важных задач:

  1. Как выделить только новые заказы из всего списка заказов за последние 24 часа?

  2. Как объединить данные по новым заказам от Площадок?

  3. Как сделать автоматический приход продукции на остатки Площадок после операции РАСХОД с склада производства?

  4. Как синхронизировать пункт 3 с пунктом 4?

В решении вопросов выше использовал свою собственную логику и последовательность процесса, формулы FILTER, QUERY, VLOOKUP(ВПР), работу с массивами ARRAYFORMULA и немного скриптов GAS (Google App Script).

Как я начал управлять остатками на маркетплейсах

Мой алгоритм управления текущими остатками

После загрузки данных о заказах за последние 24 часа при первом запуске системы мы получим данные по заказам, которые уже учтены и списаны с остатков Площадок. Через 30 минут API Площадок отдадут нам новые данные о заказах за последние сутки. Это будут как новые заказы, так и частично старые, т.к. начальная дата и время начала отсчета всегда будут смещены на 30 минут вперед.

На этом этапе крайне важно разделять новые заказы от старых. Т.к. операцию ВЫЧИТАНИЕ сейчас будем делать мы, а не Площадка и для корректной работы системы нам каждый раз нужны только новые, уникальные заказы. Здесь и реализовал логику формирования резерва для списания. После каждого запуска, скрипт получает от Площадки список заказов за последние 24 часа:

  1. во вкладку «Все заказы» скрипт сохраняет накопительным итогом новые, т.е. уникальные заказы.

  2. затем во вкладку «Новые заказы» скрипт оставляет только новые заказы, которые были получены, но которых еще нет в вкладке «Все заказы».

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

Блок «Создание резервов»

Информация в вкладке «Новые заказы» перезаписывается после каждого обновления заказов. Это позволяет нам получить динамические данные по количеству товаров в новых заказах. Это и будет нашим резервом для списания.

Как я начал управлять остатками на маркетплейсах

Вкладка для формирования резервов для списания

Данные по резервам формируются с помощью функции IF, работы с массивами ARRAYFORMULA и используют следующую логику:

Если нет новых заказов: вернуть 0. Есть новые заказы: кол-во SKU в заказах Площадка1 + Кол-во SKU в заказах Площадка2 = РЕЗЕРВ

Здесь у нас уже есть данные начальных остатков и появилось понимание сколько продукции у нас заказали на каждой Площадке, и в общем количестве товаров, заказанных за последние 30 минут. На основе этих данных мы получаем новый остаток.

Как я начал управлять остатками на маркетплейсах

Логика списания резервов из остатков

Из-за того, что данные в вкладке «Новые заказы» каждый раз после обновления перезаписываются, нам нужно сохранять информацию по новым остаткам, которые к следующему обновлению станут уже начальными остатками, и уже из этих новых остатков будут минусоваться новые заказы.

Здесь нам помогает простейший скрипт, который просто сохранят данные по новым остаткам в временную вкладку temp без форматирования, красоты — только данные.

Как я начал управлять остатками на маркетплейсах

Временная вкладка temp для сохранения текущего остатка

Итого у меня получилось реализовать следующие этапы в работе системы:

Как я начал управлять остатками на маркетплейсах

Алгоритм управления остатками. Я использовал формулы и скрипты Google-таблиц

Этот цикл повторяется каждые 30 минут. Работа над модулем «Выравнивание остатков на Площадках» завершена. Можно переходить к следующей задаче – как к этому циклу Выравнивания остатков прикрутить приход продукции с основного склада?

Блок «Из расхода с производства в приход на Площадку»

Что такое Приход продукции с основного склада в нашем созданном цикле? Это просто изменение значения Резерва. В текущей логике Резерв формируется как

кол-во SKU в заказах Площадка1 + Кол-во SKU в заказах Площадка2 = РЕЗЕРВ

А что, если один раз в сутки чуть изменить формирование Резерва и добавить к нему цифры прихода с основного склада? Тогда получится следующая логика

Как я начал управлять остатками на маркетплейсах

Алгоритм добавления прихода продукции на остатки маркетплейса

Если интегрировать эту логику в наш цикл Выравнивания остатков на Площадках, получится, что один раз в сутки нужно «подменить» временные данные по новым остаткам на остатки с Приходом.

При следующем обновлении система будет уже использовать данные остатков с Приходом как Новые остатки. Для реализации такой логики работы я ввел два новых показателя: «Резерв с учетом прихода» и «Новые остатки с учетом прихода» и добавил простой скрипт копирования этих данных в временную вкладку temp, где каждый раз перезаписываются данные о новых остатках.

Раз в день – новые остатки с учетом Прихода. Каждые 30 минут – новые остатки за минусом Резерва.

Финальным этапом реализации всей системы было решение задачи объединения ERP системы с системой управления остатками на складах и маркетплейсах, а именно – как передать данные от процесса расхода с склада производства на остатки Площадок?

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

Как я начал управлять остатками на маркетплейсах

Данные по отгрузке продукции с основного склада

С помощью функции FILTER фильтруются данные только по тем складам, которые записаны в системе управления остатками. У каждой отгрузки есть параметр «Дата отгрузки»

С помощью функции TODAY()-1 я сделал задержку в 1 день для добавления прихода.

Сотрудник склада в течении дня может проводить несколько операций «расход с основного склада». Все данные расходов с вчерашней датой я буду учитывать как приход сегодняшней датой, поэтому СЕГОДНЯ минус ОДИН день.

Как я начал управлять остатками на маркетплейсах

Соединения операции расход с основного склада и операции приход на складе маркетплейса

Итогом разработки и внедрения получилась автоматизированная система, которая регулярно выравнивает остатки на Площадках, когда продавец торгует с одного склада.

Система выравнивания остатков последовательно интегрирована в общую ERP-систему и завершает полный производственный цикл изделия: от плана до выпуска, складской учет и отгрузку конечному потребителю через систему складов.

Осталось только создать дашборды на основе данных о новых заказах. Здесь полет фантазии безграничен. Есть много параметров заказа: дата, время, артикул, регион продажи, финансовые данные и тд.

От начального желания заказчика «Хочу Дашборд, хочу все видеть», создание «Системы Управления остатками на складах и маркетплейсах» и объединение ее с системой ERP позволило заказчику здесь и сейчас исключить риски возникновения расходов из-за штрафов за некорректные остатки. Экономия здесь и сейчас.

Здесь и сейчас:

  1. Оцифрован и автоматизирован производственный цикл от планирования до выпуска готового изделия.

  2. Внедрен этап дополнительного контроля качества готовых изделий через оцифровку процесса «Прием изделий» в процессах складского учета.

  3. Организовано управление процессом отгрузки изделий с склада производства на удаленные склады.

  4. Внедрена система автоматического выравнивания остатков на складах маркетплейсов.

  5. Оцифрован весь жизненный цикл изделия от плана до отгрузки конечному потребителю через систему складов.

Ссылки на канал в ТЛГ не будет, его нет:)

Донаты не знаю как подключать, но от заказов работ на автоматизацию бизнес-процессов не откажусь.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Кнопка «Наверх»