> Усі статті WIKI Helomi: /wiki/llms.txt

# Склад і товари

Склад — товари компанії з артикулом, назвою, ціною, собівартістю, залишком, резервом і папкою (категорією). Звідси товари потрапляють в угоди, тут видно кожен рух залишку в «Журналі операцій», а YML-фід і «Публікації на площадки» передають ціни й наявність на сайти та маркетплейси.

## Можливості
- Товари в папках будь-якої глибини; хлібні крихти «Склад / Папка / …».
- Колонки: фото, артикул, назва, од. виміру, собівартість, ціна, «В наявності», «Резерв», «Вільно», «Всього», папка і власні поля.
- Залишок, резерв і «неповно» (резерв більший за залишок); неактуальні товари сховані типово.
- Рухи залишку з картки: прихід, списання, повернення, перерахунок — кожен з коментарем у журналі.
- «Журнал операцій» показує, що куди рухалось: склад → угода, прихід → склад, резерв під угоду.
- Масова зміна ціни й собівартості у відсотках, обнулення наявності.
- YML-фід для Prom, Rozetka й сайтів; «Публікації на площадки» з переглядом змін.
- Імпорт і експорт XLSX у форматі KeepinCRM, з модифікаціями й фото.
- Вкладки складу: «Товари», «Прайс-лист», «Товарні накладні», «Накладні переміщення», «Інвентаризації», «Виробництво», «Статистика» (документи складу — окрема стаття).

## 1. Налаштування
Загальні налаштування складу діють на всю компанію: з якого розділу брати товари в угоду, чи можна продати те, чого нема, бронювання, автоартикул, місця й габарити.

- **Поля товару** — «Налаштування → Типи даних → Товари» (зі складу — «⋮ → Налаштувати поля»). Позначки: «Обов'язкове поле», «Вивести в списку», «Вивести при створенні», «Вивести в угоді» (колонка у вікні «Додати товар зі складу»), «Вивести в накладних», «Додати у фільтр», блок. Типи: рядок, цифри, дата, список, текст, так/ні, посилання.
- **Склад і товари** у меню «Налаштування»: «Загальні налаштування» (з якого розділу брати товари в угоду — «Склад» чи «Прайс-лист»; «Заблокувати списання товару, якщо наявність 0»; «Заборонити ручне списання товарів»; «Бронювання товару»; правила собівартості; «Автоматична генерація артикулів»), «Одиниці виміру», «Категорії складу», «YML генератор», «Синхронізація товарів через XML».
- **Як діє кожна галочка «Загальних налаштувань товарів»** (перевірено 16.10, тест `test_product_settings_hold_on_every_path`):
  - «Товари в замовленні: Склад / Прайс-лист» — позиції угоди лише з обраного розділу: у картці угоди, через API й ШІ
    (інший розділ → помилка); позицію без товару (назвою: доставка, послуга) можна додати завжди.
  - «Заборонити додавати товар, якого немає в наявності» — вільного залишку нема: товар не додати в угоду й не збільшити
    кількість позиції (вручну, ШІ, API). Замовлення з маркетплейсів і сайту приходять як є — це реальні замовлення.
  - «Заборонити ставити „Виграно“, якщо товар не списаний» — етап ролі «Виграно», «Виграно» в меню угоди (і коли такого етапу
    у воронці нема), масові дії, тригери, ШІ, API; автодія етапу «в архів — виграно» не архівує, а пише в журнал угоди, чому.
    Не діє для імпорту історії, тихого закриття угод з минулого й замовлень, що приходять уже виконаними.
  - «Заблокувати списання товару, якщо наявність 0» — списати більше, ніж є, не можна: позиція угоди, «Списання» в картці товару,
    етап угоди. Людина бачить повідомлення, і етап не змінюється; автоматичний етап (трекінг, приймання, автодії) змінюється, але позицію
    без залишку пропускає — запис у журналі угоди й сповіщення «Не списано: нема в наявності» у дзвіночку «Сповіщення складу» над вкладками складу (21.10).
  - «Заборонити ручне списання товарів» — не-адміністратор не зменшить залишок у картці товару (пункту «Списання (−)» немає),
    «Обнуленням» чи імпортом з файлу (рядок іде у файл помилок); збільшити можна. Інвентаризація Віктора й синхронізація
    з Prom/XML працюють — це звірка з реальністю, не списання.
  - «Бронювання товару» — контролі дивляться на «Вільно» = в наявності − резерв; вимкнено — на «В наявності».
  - «К-сть місць» — вкладка «К-сть місць» у картці товару (місця й габарити кожного місця).
  - **Вага й габарити** (власник 19.10): «Вага, кг», «Об'єм, м³», «Довжина, см», «Ширина, см», «Висота, см» — системні поля кожного товару (є в усіх компаніях, не обов'язкові; обов'язковими й «при створенні» їх можна зробити в «Типи даних → Товари»). Їх беруть позиції прайс-листа, пов'язані з товаром, і ТТН (галочка «з товарів угоди» в картці служби — [Доставки і ТТН, 3а](shipping.md#3а-вага-й-габарити-з-товарів-угоди)). Старі додаткові поля «Довжина (см)», «Ширина( см )», «Висота(См)» з KeepinCRM перенесено в системні 19.10 — їх можна сховати в «Типи даних». Товари, у яких ваги не було, 19.10 отримали **оцінку ШІ** (модель Opus — за назвою, описом і схожими виміряними товарами): у «Журналі» товару такий запис підписано «оцінка ШІ (Opus) … перевірити при зважуванні»; зважили справжнє — впишіть у картку, оцінка перезапишеться й потягнеться в прайс-лист.
- Сторінки «Склади», «Типи цін», «Правила цін», «Етикетки», «ПДВ», «Prom» є, але пунктів у меню «Налаштування» для них нема.
- **Доступ** — галочка «Склад» у «Налаштування → Розділи меню»; окремі галочки для документів складу й «Прайс-листа» — у статтях про них.

## 2. Знайти товар, папки
Папки (категорії складу) групують товари, щоб їх було легко знайти й відфільтрувати; створюють і переставляють їх у розділі «Склад».

1. Відкрийте «Склад» → вкладка «Товари».
2. Угорі таблиці — папки поточного рівня: клік відкриває папку; «⋮» папки — «Відкрити», «Нова підпапка», «Перейменувати», «Видалити» (лише порожню).
3. Пишіть у «Пошук»: артикул, назва, Marketplace uid або значення власного поля. З пошуком видно товари всієї гілки.
4. «Фільтри»: наявність, актуальність, власні поля і «Колонки».
5. Унизу — кількість товарів і категорій, суми, сторінки.
6. Позначте товари галочками → «Перенести в папку…»: угорі вікна — пошук папки за назвою чи батьківською папкою (видно шлях «Компанія / Папка»), ↑↓ і Enter.

## 3. Додати товар або категорію
1. Натисніть круглу «+» праворуч унизу.
2. «Новий товар» відкриває шторку: артикул (необов'язковий, якщо його не генерує налаштування), «Назва *», од. виміру, собівартість, ціна, папка, «В наявності», вага, об'єм, «Неактуальний» і поля з позначкою «Вивести при створенні». «Зберегти».
3. «Нова категорія» створює папку в поточній папці.

## 4. Картка товару і рухи залишку
1. Клік по назві відкриває картку з вкладками **«Картка» · «Угоди · N» · «Журнал»**. «Картка»: фото, групи полів «Основне», «Ціна», «Вага й габарити» (вага, об'єм, довжина, ширина, висота), «Постачальник, посилання» і власні блоки (значення змінюється кліком; порожні власні поля сховані під «Порожні поля · N»; «Папка» — вибір із пошуком), праворуч «Залишок» (на складі, резерв, вільно, дія із залишком, рухи).
   - **«Угоди»** — окремий розділ: усі угоди, де є цей товар або позиція прайс-листа, пов'язана з ним (набір рахується в штуках товару, біля угоди — «прайс-лист <артикул>»). Угорі підсумки: угод, продано шт, сума; пошук за номером чи назвою угоди; «Усі / В роботі / Архів»; таблиця: угода, клієнт, етап, дата, к-сть, ціна, сума, «списано» / «резерв»; «Показати ще». Угоди лише за збігом артикула не показуються: різні товари бувають з однаковим артикулом латиницею й кирилицею (A000142-1 і А000142-1) — такий артикул краще змінити одному з товарів.
   - **«Журнал»** — хто й коли змінював товар.
2. Щоб змінити залишок, виберіть «Дія із залишком»: «Прихід (+)», «Списання (−)», «Повернення (+)», «Перерахунок (=)» (новий точний залишок), кількість і коментар → «Записати».
3. «Оновити на площадках» відправляє ціну й наявність цього товару на підключені маркетплейси.
4. Товар, що вже є в угодах, видалити не можна — позначте його неактуальним («⋮ → Позначити неактуальним»).
5. Те саме — просто з таблиці, через «⋮» рядка товару (як у KeepinCRM): «Редагувати» (картка), «Додавання в наявний матеріал»
   (кількість, собівартість одиниці — необов'язково, коментар → «Додати»: прихід +), «Відняти матеріал зі складу» (кількість,
   коментар → «Відняти»: списання −), «Журнал» (усі рухи цього товару: дата, +/−, тип, коментар, угода, хто). У вікні видно,
   скільки є зараз і скільки стане. Заборона ручного списання і списання в мінус («Налаштування → Товари») діють і тут.
   Після «Додати» чи «Відняти» внизу екрана коротко з'являється чорна пігулка: «артикул: списано 1 шт, залишилось 42 шт»
   (чи «додано …, тепер …»). Вона зникає сама за кілька секунд або від натиску; на телефоні стоїть ліворуч від «+».
   Для комплекту («Комплектація» без свого залишку) додавання й віднімання вимкнені.

## 5. Резерв і списання через угоди
- Товар з галочкою «резерв» в угоді резервується: «вільно» зменшується, «на складі» — ні.
- Списання і повернення роблять етапи угоди за налаштуванням «Склад» у «Воронках й етапах» або «⋮» позиції в картці угоди. Докладно — стаття «Угоди», розділ «Товари і склад».

## 6. Журнал операцій
1. «Склад» → «Журнал операцій».
2. Кожен рядок: напрямок (надійшло або списано), дата, хто створив, товар з артикулом, кількість, собівартість, ціна, філія, тип руху словами, джерело угоди, коментар.
3. Фільтри: напрямок, тип, дати; пошук за товаром, номером угоди, коментарем. Унизу — «надійшло» і «списано» разом.
4. Видалення операції повертає залишок назад. Резерв тут не видаляється — його знімають в угоді.
5. Два типи рядків лише пояснюють, звідки взялося число, і залишку не змінюють (23.10). «Початковий залишок» — з чим товар прийшов з KeepinCRM при перенесенні. «Зміна без руху складу» — залишок змінили повз журнал: до 14.10 його перезаписувало дзеркало KeepinCRM, до 21.10 — імпорт KeepinCRM під час оновлення програми. У коментарі — проміжок, коли це сталося. Такі рядки не видаляються. Разом з ними сума журналу дорівнює залишку в картці товару.

> [!TIP]
> Залишок не збігається з полицею — зробіть «Перерахунок» у картці товару: він запише справжню кількість окремим рухом.

## 7. Масова зміна ціни, обнулення наявності
- «⋮ → Масова зміна ціни»: ціна або собівартість ± відсоток для вибраних товарів, поточної папки або всього складу.
- «⋮ → Обнулити наявність» після підтвердження ставить нуль; кожна зміна записується в журнал як перерахунок.
- У «⋮» рядка товару: «Відкрити картку», «Позначити неактуальним» / «Позначити актуальним», «Оновити на площадках», «Видалити».

## 8. YML-фід і публікації на площадки
YML-фід — постійна адреса з вашими товарами, цінами й наявністю для сайтів, Google Merchant, Hotline і партнерів; назви тегів налаштовуються під кожного одержувача.

- «Фід (YML)» показує адресу фіду, коли його згенеровано і скільки в ньому товарів; «Оновити». Фід усього складу — `/feed/all.xml`, окремої компанії — `/feed/<назва>.xml`; відкривається без входу, оновлюється раз на 5 хвилин. Склад полів фіду налаштовується в «Налаштування → YML генератор».
- Там само — **фіди каналів із прайс-листа** `/feed/channel/<канал>.xml` (Prom, Rozetka, Kasta, Епіцентр, кожен сайт): оголошення саме цього каналу з його id і ціною з прайс-листа, а кількість і наявність — вільний залишок пов'язаних товарів складу. Саме ці адреси читають ШІ-агенти (Аліна, Єлизавета, Аня), Rozetka й сайти замість фіду KeepinCRM; позиція без зв'язку зі складом віддається з кількістю, яку востаннє бачили в каналі (див. статтю «Прайс-лист»).
- «Публікації на площадки» — журнал відправлень залишків і цін на Prom, Rozetka та інші канали; «Оновити зараз» спершу показує «Було / Стане» і нічого не відправляє, поки ви не підтвердите.
- **Rozetka — з прайс-листа, за розкладом.** Rozetka читає не фід, а API: картка Rozetka в «Публікаціях» має позначку «з прайс-листа» і розклад «автоматично кожні N хв» (типово 60; період і перемикач ставить людина, не `.env`). Кожне оголошення Rozetka з прайс-листа отримує залишок пов'язаних товарів складу і ціну з прайс-листа через `PUT /items/mass-update`; у «Публікаціях» видно «авто востаннє …».

## 9. Імпорт і експорт
«⋮ → Імпорт» і «⋮ → Експорт». Збіг з наявними — «ID, а якщо нема — артикулом», «ID», «Rozetka Offer ID», «Артикулом», «Назвою». Покроково — стаття «Імпорт і експорт».

### Синхронізація товарів через XML
Товари з XML-файлу постачальника чи сайту створюються й оновлюються самі кожні 12 годин; вручну — один раз одразу після створення синхронізації («Налаштування → Склад і товари → Синхронізація товарів через XML»).

## Замовлення з площадок і сайтів беруть позиції звідти ж (14.10)
Якщо в «Налаштування → Товари → Товари в замовленні» стоїть «Прайс-лист», приймання замовлень з Prom, Rozetka, Kasta, Епіцентру, OLX, сайтів і Telegram підбирає кожну позицію з прайс-листа: спершу оголошення цього каналу з тим самим id товару на площадці, потім Rozetka Offer ID, потім артикул, потім назва. Склад списується матеріалами позиції. Якщо стоїть «Склад» — позиція шукається серед товарів складу, як раніше (артикул або режим «Зв'язок позицій» у картці каналу).

## Партнери на товарі (16.10)
Коли в бізнесу товару є партнери («Налаштування → Бренди та юрособи → бренд → Партнери бізнесу»), у картці товару з'являється блок «Партнери»: частка партнера на цьому товарі (порожньо — частка з бренду), «повертати собівартість», «у виплату». За ними рахуються виплати партнерам («Фінанси → Партнери»). Зміни зберігаються одразу.

## Можливі помилки
| Що ви бачите | Чому | Що зробити |
| --- | --- | --- |
| «Артикул … уже є» | Артикул має бути унікальним | Змініть артикул або відкрийте наявний товар |
| «Потрібна назва товару» | Порожня назва | Впишіть назву |
| «Заповніть обов'язкові поля: …» | Поле обов'язкове в «Типах даних → Товари» | Заповніть поле |
| «Товар є у … угодах — позначте його неактуальним» | Товар з угодами не видаляється | «⋮ → Позначити неактуальним» |
| «Папка не порожня: …» | Видаляється лише порожня папка | Перенесіть або видаліть вміст |
| «Ручне списання заборонене — товар списується лише через угоди …» | Увімкнено «Заборонити ручне списання товарів» | Списуйте етапом угоди або попросіть адміністратора |
| «В наявності … — списання в мінус заблоковано …» | Увімкнено «Заблокувати списання товару, якщо наявність 0» | Оприбуткуйте товар |
| «… немає в наявності — збільшити кількість заборонено» | «Заборонити додавати товар, якого немає в наявності», вільного нема | Оприбуткуйте товар або зменшіть кількість |
| «товари в угоду беруться з прайс-листа / зі складу …» | «Товари в замовленні» — інший розділ | Оберіть позицію з потрібного розділу |
| «Угоду не можна закрити як «Виграно»: товар не списаний …» | «Заборонити „Виграно“, якщо товар не списаний» | Спишіть товари або закрийте як «Програно» |
| «Ручне списання заборонене — обнулити залишки може лише адмін» | «Заборонити ручне списання товарів» | Попросіть адміністратора |
| «Поле формує правило «…» — ручне редагування заборонене» | Ціну рахує правило цін | Змініть правило або зніміть замок поля |
| «Резерв знімається в угоді …» | Резерв не видаляється з журналу | Зніміть резерв на позиції угоди |
| «„Початковий залишок“ — запис історії, залишок він не змінював …» | Рядок-пояснення в журналі не видаляється | Щоб виправити залишок, зробіть «Перерахунок» у картці товару |

## Для ШІ-співробітників
Ключ розділу — `products` (`describe_section("products")`). Потрібен доступ «Склад». ШІ склад лише читає; рухи залишку, нові товари й публікації робить людина.

| Інструмент | Що робить |
| --- | --- |
| `products_list` | Пошук `q` (артикул, назва), фільтри `category_id`, `in_stock`, `irrelevant`; колонки з ціною, собівартістю, залишком, резервом і «вільно» |
| `products_get` | Картка товару: поля, фото, рухи, угоди |
| `products_deals` | Угоди з товаром: `q` (№ угоди), `state` (`all`, `active`, `archived`), `page`; підсумки `totals` — угод, продано шт (`units`), сума |

Щоб додати товар в угоду, знайдіть `product_id` тут і викличте `deals_add_item`.

Чого не робити:
- Не обіцяти клієнту наявність без перевірки «вільно» (`free`), а не лише «В наявності».
- Не вигадувати артикули — брати з `products_list`.

## Додаткова інформація
- Пов'язані статті: [Угоди](deals.md), [Склад: накладні, інвентаризації, переміщення](warehouse-docs.md), [Прайс-лист](pricelist.md), [Імпорт і експорт](import-export.md).
