food-market/docs/imports.md
nns 828080c321 rebrand: пользовательские доки + скриншоты кассы с новым лого
- docs/imports.md, docs/simple-mode.md: «Food Market» → «ALL MARKET».
- Перегенерированы скриншоты кассы (вход/продажа/оплата/смена/возврат) с
  логотипом ALL MARKET в шапке и на экране входа.
- Внутренние TZ/verify-доки оставлены как историческая фиксация.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-08 17:35:15 +05:00

3.7 KiB
Raw Blame History

Импорты в ALL MARKET

Универсальный CSV-импорт товаров

Endpoint: POST /api/catalog/products/import-csv

JSON body со списком rows — клиент парсит CSV, сервер commit'ит транзакцией. См. Sprint 19 docs.

Импорт из 1С (Бухгалтерия / УТ / Розница)

Endpoint: POST /api/catalog/products/import/1c-csv?autoCreateGroup=true

Content-Type: text/csv, text/plain, application/octet-stream или multipart/form-data (form-file).

Кодировка: автодетект — UTF-8 with BOM или Windows-1251 (стандарт 1С Excel-RU).

Разделитель: автодетект по header-строке — ; (1С) или ,.

Формат заголовка

Обязательная колонка: Наименование (или name).

Опциональные (любой регистр, оба языка):

Русский English Куда мапится
Артикул code, article Product.Article (создание пока пропускает)
Наименование name, title Product.Name
Единица unit, ед, ед.изм. UnitOfMeasure по нормализованному коду
Цена price, розничная цена ProductPrice.Amount (системный priceType)
Группа category, категория, родитель ProductGroup.Name (autoCreate если нет)
Штрихкод barcode, штрих-код ProductBarcode.Code (первый, IsPrimary=true)

Нормализация единиц

шт, штука, pcs → шт; кг, kg → кг; г, g → г; л, l → л; мл, ml → мл; м, m → м; упак, уп, pack → упак.

Если не распознали — передаётся как есть; если такого UnitOfMeasure нет — fallback на дефолтную единицу организации.

Пример

"Артикул";"Наименование";"Единица";"Цена";"Группа";"Штрихкод"
"00001";"Молоко 2.5% 1л";"шт";"450";"Молочные продукты";"4870000000017"
"00002";"Хлеб белый 500г";"шт";"180";"Хлебобулочные";"4870000000024"
"00003";"Гречка";"кг";"650";"Крупы";""

Curl-пример

curl -X POST \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: text/csv; charset=windows-1251" \
  --data-binary @export-1c.csv \
  "https://admin.food-market.kz/api/catalog/products/import/1c-csv?autoCreateGroup=true"

Ответ

{
  "created": 248,
  "skipped": 12,
  "errors": [
    { "row": 14, "error": "Дубликат штрихкода в импорте: 4870000000031" }
  ],
  "ids": ["...", "..."]
}
  • При errors.length > 0 транзакция откатывается, ничего не создаётся.
  • При created > 0 — все 248 товаров добавлены атомарно.

Что НЕ импортируется

  • НДС-ставка (берётся дефолтная Country.VatRate).
  • Себестоимость (Cost) — рассчитывается на первой приёмке.
  • Изображения (нужен отдельный endpoint загрузки картинок).
  • Цены типов кроме системной (нужен расширенный CSV-формат).
  • Поставщики (DefaultSupplier) — связь через имя нестабильна.

Импорт из МойСклад

См. docs/moysklad-import.md (отдельный flow через OAuth-токен МойСклада).