Без закупочной стоимости можно узнать, сколько удержал Ozon, но нельзя узнать прибыль товара. Для расчёта нужна цена одной продаваемой единицы и правильный SKU. Если цена менялась, дополнительно нужна дата каждого изменения.
Что считать себестоимостью
В самом простом варианте себестоимость — закупочная или производственная цена одной единицы. Если магазин учитывает упаковку, маркировку и доставку партии до склада, эти расходы тоже можно включить. Главное — один раз записать правило и применять его ко всем товарам одинаково.
«Закупка» и «закупка с упаковкой и доставкой партии» дадут разные результаты. Без пояснения два SKU нельзя честно сравнить.
Приводите цену к продаваемой единице
Если поставщик выставил цену за короб, а на Ozon продаются штуки, разделите полную стоимость короба на количество пригодных единиц. Комплект из двух предметов считается отдельной единицей: его стоимость — сумма компонентов и затрат на сборку комплекта.
Когда достаточно базовой цены, а когда нужна дата
Если закупочная цена стабильна или для первого расчёта достаточно средней оценки, её можно сохранить как базовую — она применяется ко всей доступной истории. Когда стоимость меняется, базовую цену не заменяют задним числом: добавляют новое значение с датой начала.
Для продажи выбирается цена, действовавшая на дату финансовой операции. Датированная запись имеет приоритет над базовой с указанного дня, но не пересчитывает более раннюю историю по сегодняшней закупке.
SKU и артикул продавца решают разные задачи
SKU Ozon приходит в финансовых и операционных данных. Артикул продавца удобен человеку и обычно стабилен внутри каталога. Для автоматического сопоставления полезны оба идентификатора, но при конфликте сервис не должен угадывать товар — строку нужно вынести на ручную проверку.
Откуда брать себестоимость
Основные источники — учёт продавца, документы поставщика и расчёт производства. Если Ozon передаёт сохранённую закупочную стоимость для конкретного кабинета, её можно использовать как предварительное значение с явной пометкой источника. Ручной ввод пользователя должен иметь понятный приоритет и не смешиваться с импортированным значением.
Если такого поля нет, себестоимость вводят вручную или импортируют из таблицы. Отсутствие значения нужно показывать как отсутствие данных, а не как нулевую себестоимость.
Ручной ввод или таблица
Ручной ввод подходит для нескольких товаров и разового изменения. Таблица удобнее, когда SKU десятки или сотни. Безопасный импорт состоит из двух этапов:
- Предпросмотр. Сервис читает CSV, XLS или XLSX, проверяет заголовки, цены и даты, сопоставляет товары и показывает ошибки.
- Подтверждение. В базу попадают только строки, отмеченные как готовые; файл и результат проверки не должны измениться между этапами.
Пустая дата в строке означает базовую цену для всей истории. Если в файле находится архив изменений, один SKU можно повторить несколько раз с разными датами начала и соответствующими средними ценами.
Формулы перед загрузкой заменяют значениями. Так результат не зависит от версии Excel и от того, пересчиталась ли книга перед сохранением.
Как измерять полноту себестоимости
Считать только долю карточек с заполненной ценой мало: один пропущенный бестселлер важнее десятка товаров без продаж. Полноту лучше измерять по проданным единицам и обороту, для которых нашлась действующая цена.
- Показывайте список SKU без цены.
- Отдельно считайте затронутый оборот.
- Не выводите точную маржу при низком покрытии.
- После исправления пересчитывайте только затронутые периоды.
Не смешивайте управленческий и налоговый учёт
Себестоимость для внутреннего решения о цене не всегда совпадает с расходом, который можно признать для конкретного налогового режима. Маржио использует введённую цену в управленческой оценке и не заменяет первичные документы или налоговый регистр.