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

92 lines
3.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Импорты в 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-пример
```bash
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"
```
### Ответ
```json
{
"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-токен МойСклада).