Как работать с несколькими поставщиками в интернет-магазине
Как сопоставлять товары и остатки разных поставщиков, выбирать источник заказа и согласовывать разделённую доставку. Учебный пример и проверка резервов.

Для работы с несколькими поставщиками нужны единый справочник товаров, отдельные предложения каждого источника и понятное правило выбора поставки. Не смешивайте артикулы, цены и остатки в одну строку без указания происхождения. Покупателю вы обещаете конкретный товар и срок, поэтому заменить поставщика можно только после проверки этих условий.
Начать можно с таблицы и ручного подтверждения. Автоматизация полезна, когда те же правила уже определены: что считается одним товаром, как переводятся единицы, сколько данных достаточно для обещания наличия и кто разбирает исключения. Иначе обмен просто быстрее распространит ошибку по каталогу.
Один товар и несколько источников
Разделяйте товар магазина и предложение поставщика. Внутренний артикул обозначает конкретную модель, вариант и единицу продажи. В предложении храните поставщика, его код, закупочную цену, доступное количество и условия отгрузки. Одинаковая строка названия не доказывает совпадение: могут различаться цвет, комплектация, объём или количество в упаковке.
Если два источника предлагают один и тот же вариант, карточка может опираться на общий товарный справочник, а источник исполнения выбирается отдельно. Если различия существенны для покупки, их нужно представить как другой вариант или товар. Не склеивайте позиции автоматически, когда нет надёжного соответствия идентификаторов и характеристик.
Тот же принцип относится к остаткам. Два прайса могут описывать независимые склады, а могут повторять один общий запас через посредников. Складывать количества можно лишь после выяснения, что это разные доступные единицы и магазин умеет получить их на обещанных условиях.
Какие данные собрать по поставщику
| Поле | Для чего нужно | Что проверить до загрузки |
|---|---|---|
| Внутренний артикул и код источника | Связать предложение с нужным товаром | Совпадают вариант и комплектация, код не подменён похожим названием |
| Единица и кратность отгрузки | Перевести цену и количество | Штука, упаковка и комплект не приняты за одно и то же |
| Цена и её условия | Сравнить закупку | Валюта, база налогов, минимальный заказ и дополнительные расходы сопоставимы |
| Остаток и момент получения | Определить возможность обещания | Понятно, что означает число и какие резервы оно уже учитывает |
| Подтверждение и срок | Спланировать исполнение | Условия касаются нужного товара и адреса, а не среднего срока поставщика |
| Формат и версия обмена | Повторить загрузку и разобрать сбой | Сохранены исходник, время и результат проверки строк |
Назначьте источник отдельно для каждого изменяемого поля. Например, цена и наличие приходят из прайса, фотографии подтверждены производителем, а описание редактирует магазин. Нельзя перезаписывать редакторское описание очередной загрузкой только потому, что в файле есть столбец с таким названием.
До подключения нового источника полезно получить ответы на вопросы поставщику: состав данных, подтверждение наличия, упаковка, сроки и действия при расхождении. Отбор самого контрагента разобран отдельно в поиске поставщика для магазина.
Учебное сопоставление двух предложений
Возьмём вымышленную синюю кружку объёмом 350 мл. Магазин продаёт её поштучно. Условия ниже заданы для упражнения, а не описывают действующие цены или службы. У поставщика А отгрузка по одной штуке; у Б — только закрытыми упаковками по две одинаковые кружки, без разделения при прямой отправке клиенту.
| Данные | Поставщик А | Поставщик Б |
|---|---|---|
| Код источника | A-35-blue | B-pair-350 |
| Закупочная цена | 500 ₽ за штуку | 960 ₽ за упаковку из двух |
| Сообщённый запас | 6 штук | 3 упаковки, то есть 6 штук |
| Ещё не отражённые источником локальные резервы магазина | 2 штуки | Нет |
| Доступность по условиям примера | 4 штуки | 3 полные упаковки |
| Расход на эту отправку | 200 ₽ | 250 ₽ |
| Подтверждённый срок для направления | 2 дня | 8 дней |
Цена одной кружки у Б равна 960 / 2 = 480 ₽, но это не разрешение заказать нечётное количество. Для клиента, которому нужны три кружки с получением в пределах трёх дней, подходит А: четыре доступные штуки позволяют выполнить заказ, срок подтверждён. Б не подходит ни по кратности прямой отправки, ни по сроку. Нельзя незаметно добавить четвёртую кружку за деньги покупателя.
Для другого заказа — четыре кружки без ограничения трёх дней — сравнение меняется. Закупка и отправка у А стоят 4 × 500 + 200 = 2 200 ₽, у Б — 2 × 960 + 250 = 2 170 ₽. Это разница в 30 ₽ по перечисленным статьям, а не доказательство большей прибыли Б: нужно учесть остальные затраты и пригодность срока покупателю. Если товар забирается на собственный склад и упаковки можно разукомплектовать, появится другой процесс с учётом оставшихся единиц.
Как выбрать источник заказа
Сначала отсекайте недопустимые варианты: нет подтверждённого остатка, неверная комплектация, неподходящий срок или минимальная партия. Затем сравнивайте расходы и надёжность исполнения среди оставшихся. Самая низкая закупочная цена не должна обходить обязательное условие заказа.
Заранее определите, кто может согласовать замену. Если у резервного поставщика другой комплект или изменяется обещанная доставка, это уже изменение предложения покупателю. Оно требует понятного согласования, а не молчаливой подстановки похожего артикула.
Для корзины из разных товаров проверьте, можно ли исполнить её одним источником. Если нет, запишите состав каждого отправления, цену, срок и порядок уведомления. Например, кружки отправляет А, а другой поставщик — недостающие ложки. Покупатель должен понимать, что получит две посылки, а магазин — учитывать две операции вместо одной. Если заказ нужен к одной дате и второй источник её не подтверждает, разделение не решает задачу: нужен другой вариант или согласованное изменение заказа.
Остатки, резервы и сбой обновления
В учебном примере после локального резервирования трёх кружек у А остаётся одна доступная: 6 − 2 − 3 = 1. Это правило верно потому, что исходное число ещё не учитывает перечисленные локальные резервы. Если следующий файл уже отражает подтверждённую поставщиком часть заказа, повторно вычитать её нельзя.
Согласуйте смысл количества и связь обновления с подтверждением резерва. Не удаляйте локальный резерв просто по факту отправки заявки: поставщик мог её не принять, а файл — ещё не обновиться. Если невозможно определить, какие заказы уже отражены в новой версии данных, пометьте источник как требующий сверки и не восстанавливайте доступность по догадке.
Отсутствующий файл, пустая ячейка и подтверждённый ноль — разные состояния. Для ошибки обмена сохраните последнюю успешную версию с её временем, покажите статус сбоя ответственному и примените заранее выбранное ограничение продажи. Срок, после которого нужно ручное подтверждение или снятие обещания наличия, выбирайте по условиям поставщика и скорости изменений, а не по универсальному расписанию из чужого магазина.
Перед первым импортом сохраните исходные данные и небольшой тестовый набор. Проверьте обычную строку, упаковку, неоднозначное совпадение, ноль, пропуск поля и повтор того же файла. Сверьте число изменённых, пропущенных и отклонённых записей. Ошибочную строку удобнее остановить на разбор, чем затем искать неверные обещания в заказах.
Как поддерживать процесс без лишней сложности
Небольшому магазину достаточно ответственного, таблицы соответствий и журнала подтверждений, если сотрудники успевают проверять изменения до обещания заказа. Переход к автоматическому обмену оправдан, когда объём обновлений и задержки мешают выполнять это правило. Интерфейс передачи данных сам по себе не заменяет проверки идентичности товара и резервов.
Раз в выбранный рабочий цикл разбирайте конкретные расхождения: неверный вариант, двойной резерв, обещанный устаревший запас, неподтверждённый срок. Меняйте правило, вызвавшее ошибку, и повторяйте затронутый тест. Планирование собственных закупок и запасов — соседняя задача из управления запасами магазина.