Граф Wiki

Склад — учёт ТМЦ и оборудования

Склад (/admin/stock/) — универсальный учёт ТМЦ и оборудования провайдера: от закупки до установки у клиента. Каждое перемещение — неизменяемая запись-движение (как финансовые операции: не правим, а сторнируем), поэтому остатки всегда сходятся, а история — доказуема. Модуль интегрирован с нарядами монтажника, карточкой клиента и деньгами: продажа списывает с лицевого счёта, аренда начисляется ежемесячно.

Модуль «Склад» — на сайте продукта
Содержание раздела
Обучающее видео 2:47

Приход, выдача в подотчёт, установка у клиента, возврат и инвентаризация. С озвучкой; весь текст продублирован на экране — можно смотреть и без звука.

1920×1080 с озвучкой Скачать

Как устроен модуль

Ядро модели — цепочка держателей. Товар (или конкретная серийная единица) в каждый момент времени находится у одного держателя: на складе, в подотчёте сотрудника или у клиента. Перемещения между держателями фиксируются движениями:

flowchart LR
    P["📦 Закупка
(накладная, поставщик)"] -->|"приход (receipt)"| W["🏬 Склад
остатки · min_stock"] W -->|"выдача (issue)"| S["🧰 Подотчёт сотрудника
монтажник · скан"] S -->|"установка (install)"| C["👤 Клиент
ответхранение · продажа · аренда"] S -->|"возврат (return)"| W C -->|"демонтаж"| W W -->|"акт брака (defect)"| D["🗑 Брак"] S -->|"акт брака"| D style W fill:#e8f5e9,stroke:#43b77a style C fill:#e7f0fb,stroke:#0d6efd style D fill:#fdecea,stroke:#dc3545

Два типа учёта в одной модели:

Остатки — сводная с подсветкой ниже минимума

Как связан с остальной системой. Склад — не изолированный реестр: списание материалов происходит прямо из наряда монтажника (CRM), установленное оборудование видно в карточке клиента, продажа создаёт финансовую операцию, аренда — периодическую услугу, а низкие остатки прилетают в Telegram.
flowchart TB
    ST["📦 Склад
номенклатура · единицы · движения"] CRM["🛠 Наряд монтажа (CRM)
кнопка «Материалы»"] AB["👤 Карточка клиента
вкладка «Оборудование»"] FIN["💰 Финансы
FinanceOperations"] UU["🔁 Услуги клиента
UsersUsluga «Аренда оборудования»"] BW["⚙️ billing_worker
ежемесячные списания"] TG["✈️ Telegram
алерт min_stock"] AUD["🗒 Аудит
каждое движение"] CRM -->|"install (ref: deal#N)"| ST AB -->|"install / демонтаж"| ST ST -->|"продажа: −sale_price"| FIN ST -->|"аренда: услуга rent_price/мес"| UU UU --> BW ST --> TG ST --> AUD style ST fill:#e8f5e9,stroke:#43b77a,stroke-width:2px

Быстрый старт

  1. Включите модуль «Склад» на /admin/settings/modules/ и тумблер STOCK_ENABLED в настройках (категория «Склад»).
  2. Добавьте кладовщика в группу storekeeper (настройка STOCK_KEEPER_GROUPS); монтажников — в группы из STOCK_HOLDER_GROUPS.
  3. Заведите категории и номенклатуру (/admin/stock/items/) — или посмотрите на демо-данных: manage.py seed_stock_demo (удаление — --clear).
  4. Проведите стартовую инвентаризацию: приход с типом «инвентаризация (correction)» на текущие остатки.
  5. Распечатайте этикетки на серийные единицы и выдайте монтажникам их текущее «железо» в подотчёт.

Движения и статусы единиц

Движение (StockMovement) — append-only запись: тип, позиция, количество, откуда → куда, цена, документ, привязка к наряду (ref_type/ref_id). Ошиблись — нажимаете сторно: создаётся обратная запись, а единица возвращается к держателю-источнику. Серийная единица (StockUnit) дополнительно несёт статус:

stateDiagram-v2
    [*] --> in_stock: приход
    in_stock --> issued: выдача в подотчёт
    issued --> in_stock: возврат
    in_stock --> installed: установка (кладовщик)
    issued --> installed: установка (custody)
    issued --> sold: продажа
    issued --> rented: аренда
    installed --> in_stock: демонтаж
    rented --> in_stock: демонтаж (аренда закрывается)
    issued --> defect: акт брака
    in_stock --> defect: акт брака

В журнале — фильтры по типу движения и по сотруднику (показываются все движения, где он «откуда», «куда» или «кто провёл»); клик по любой фамилии в таблице подставляет её в фильтр. Колонка S/N — единая иконка штрихкода (во всех таблицах модуля): тултип показывает серийник, MAC и штрихкод, клик открывает карточку движения со всеми деталями. Даты — компактно «дд.мм.гг», полная дата в тултипе.

Журнал движений — фильтр по сотруднику, S/N-иконки

Номенклатура и остатки

Позиция каталога задаёт: категорию, единицу измерения, тип учёта (поштучный/количественный), режим передачи клиенту (ответхранение / продажа / аренда — можно переопределить при установке), три цены (закупочная, продажи, аренды в месяц) и минимальный остаток min_stock для алертов.

Пресеты номенклатуры: кнопка «Пресеты» на странице номенклатуры добавляет готовый набор позиций с категориями, ценами и порогами остатков — «Интернет-провайдер (ISP)», «Видеонаблюдение», «Домофония». Применение идемпотентно: существующие позиции с теми же названиями не меняются.

Пресеты номенклатуры

Номенклатура — позиции, категории, склады

Остатки: где лежит запас и сколько он стоит

Страница «Остатки» отвечает на вопрос «что у нас есть» не только штуками, но и деньгами. Над таблицей — полоса распределения: сколько лежит на складе, сколько на руках у монтажников, сколько уже стоит у клиентов и сколько списано в брак. Рядом с количеством — сумма по закупочной цене, чтобы было видно, сколько денег заморожено на складе и в подотчётах.

flowchart LR
    S["Склад
2445 шт · 138 751 ₽"] -->|выдача| P["Подотчёты монтажников
486 шт · 48 815 ₽"] P -->|установка| C["У клиентов
518 шт"] P -->|возврат| S C -->|демонтаж| S P -->|акт брака| D["Брак
7 шт"] S -->|акт брака| D

Таблица сортируется кликом по любому заголовку, фильтруется по складу и категории и выгружается в CSV — ровно тот срез, который на экране. Внизу — строка итогов: сколько позиций попало в выборку и на какую сумму.

Остатки: полоса распределения, суммы по закупочной, фильтр склада

Дефицит и список к закупке

У позиции задаётся минимальный остаток. В номенклатуре рядом с остатком показывается дефицит — сколько не хватает до минимума с учётом того, что уже на руках у монтажников. Кнопка «К закупке» выгружает CSV со списком: что докупить, сколько и на какую сумму по закупочной цене — такой файл можно сразу отдать снабженцу.

Номенклатура: колонка «Дефицит» и кнопка «К закупке»

Карточка позиции и карточка единицы

Чтобы посмотреть, что происходит с конкретной позицией или с конкретной единицей оборудования, никуда переходить не нужно: обе карточки открываются боковой панелью поверх текущего списка.

Карточка позиции — клик по названию позиции в остатках, номенклатуре, «Я выдал» или в модалке движения. Что показывает:

Карточка единицы — клик по иконке штрихкода (S/N) в любой таблице склада или ссылка из карточки позиции. Показывает, где единица сейчас (склад, сотрудник или клиент), режим передачи, цены, даты — и таймлайн владения: приход → выдача в подотчёт → передача другому сотруднику → установка клиенту → демонтаж или брак. Сторнированные события зачёркнуты.

Карточка позиции: распределение остатка, деньги, дефицит, вкладки

Карточка единицы: где она сейчас и таймлайн владения

Обе карточки уважают организацию: чужую позицию или единицу открыть нельзя (см. 10а. Несколько организаций).

Приход, серийники, этикетки

Приход оформляется накладной: номер документа, склад, позиции. Для серийных позиций серийники сканируются подряд — камерой телефона (на Android — BarcodeDetector, на iPhone — ZXing), USB-сканером или вручную. После проведения — печать этикеток:

На этикетке — штрихкод Code128 (или QR) со значением SU-N и серийник. Code128 кодирует только латиницу и цифры — если значение штрихкода содержит кириллицу, система автоматически строит QR-код (кодирует любой текст, сканируется камерой телефона), чтобы код оставался читаемым. Во всех таблицах модуля при наведении на иконку штрихкода всплывает сканируемая картинка кода — сканер прикладывают прямо к экрану, не отходя к принтеру этикеток.

Приход — накладная и массовое заведение серийников

Подотчёт сотрудника

Кладовщик выдаёт монтажнику оборудование по скану и расходники количеством. Выбор сотрудника — единый компонент ProfileSelect (аватар, роли, поиск). У монтажника есть свой мобильный экран «Мой подотчёт»: что на руках, возврат на склад, акт брака.

Выдача в подотчёт — скан и единый селектор сотрудника

Мой подотчёт — мобильный экран монтажника

«Я выдал» (/admin/stock/issued/) — зеркальная страница для кладовщика: все выдачи и передачи, которые он провёл, и судьба каждой единицы — в чьём подотчёте сейчас, установлена или в аренде у клиента (ссылка на его вкладку «Оборудование»), возвращена на склад, списана в брак или сторнирована. В профиле сотрудника — блоки «Мой подотчёт» (итог материальной ответственности + акт PDF, даты выдачи) и «Я выдал».

Я выдал — судьба каждой выдачи

Передача подотчёт→подотчёт: при включённой настройке сотрудники передают единицы друг другу (например, бригадир — монтажнику) без возврата на склад; движение «Перемещение» в журнале, уведомление получателю, проверка матрицы прав и лимита.

«Я выдал»: что стало с выданным

Кладовщику важно не то, что он выдал, а что с этим стало. Страница «Я выдал» показывает каждую выдачу и передачу вместе с текущей судьбой единицы, а сверху — счётчики по судьбам: сколько ещё в подотчёте, сколько уже стоит у клиентов, сколько вернулось, сколько ушло в брак и сколько сторнировано. Клик по счётчику оставляет в списке только эти строки; рядом — фильтры «кому выдал» и период.

«Я выдал»: счётчики по судьбам, фильтры по получателю и периоду

Журнал движений

Журнал — полная история склада: приход, выдача, передача, установка, возврат, брак и сторно. Фильтры — период, организация, склад, сотрудник и тип движения; выгрузка в CSV отдаёт тот же отфильтрованный срез. Из карточки движения открываются карточка единицы и карточка позиции.

Журнал движений: период, организация, склад, тип и выгрузка CSV

Инвентаризация: пересчёт и акт расхождений

Все цифры склада — остатки, дефицит, стоимость запаса — держатся на одном допущении: то, что в базе, лежит на полке. Проверяет это инвентаризация. Раздел Склад → Инвентаризация показывает список актов; кнопка «Начать пересчёт» открывает новый лист по выбранному складу.

Список актов инвентаризации со статусами

Главное правило: пересчёт не правит историю. Разница оформляется отдельными движениями типа «Корректировка (инвентаризация)» со ссылкой на акт: видно, что расхождение было, когда, на сколько и кто его провёл. Приход остаётся таким, каким был.

flowchart LR
    O["Открыли лист
снимок остатков склада"] --> C["Считаем полку
факт по позициям"] O --> S["Сканируем серийники
штрихкод или s/n"] C --> P["Проводим акт"] S --> P P --> M["Движения «Корректировка»
со ссылкой на акт"] P --> L["Ненайденная единица →
статус «Недостача»"] P --> E["Найденная лишняя →
приходуется на склад"]

Лист пересчёта

Лист запоминает учётный остаток на момент открытия — акт показывает ту цифру, от которой считали, даже если склад потом двигали. Сверху — свод: сколько позиций, сколько внесено, сколько излишков и недостач, сколько серийников найдено и во что расхождение обходится по закупочной цене.

Лист пересчёта: свод, ввод факта, скан серийников

Защита от «провёл, не считая». Если по листу не отмечена ни одна серийная единица, при проведении серийники не трогаются вовсе — иначе один клик отправил бы весь склад в недостачу. Если отсканирована меньше половины — подтверждение красное и называет цифры: сколько найдено и сколько уйдёт в недостачу. Непосчитанные позиции (пустой факт) не меняются никогда.

Что происходит при проведении

На один склад одновременно открыт один лист — иначе два человека считали бы одно и то же и оба провели бы расхождение. Лист живёт в границах организации своего склада: чужие позиции в него не попадают.

Резерв под наряд

Остаток на складе перестал быть ответом на вопрос «можно ли брать»: часть запаса уже обещана конкретным адресам. Резерв — это обещание, а не движение: вещь физически лежит на складе, но считается занятой. Без него монтажник приезжал к клиенту за роутером, который час назад увезли на другой адрес — остаток был, а вещи не было.

Бронь ставится там, где о ней думают, — в наряде, в модалке «Материалы наряда». Клиент для этого не нужен: наряд уже есть, вещь нужна.

Блок «Отложено под наряд» в модалке материалов и кнопка «Забронировать выбранное»

Общая картина — в разделе Склад → Резервы: что отложено, под какой наряд, к какой дате и кем. Оттуда же бронь снимается.

Список резервов: позиция, наряд, дата, статус

Что резерв меняет в работе склада

flowchart LR
    R["Бронь под наряд
позиция или единица"] --> F["Свободно = остаток − резервы"] F -->|"выдача по этому наряду"| C["Резерв закрыт
ушло по назначению"] F -->|"выдача под другой наряд"| X["Отказ
«свободно N, занято M»"] R -->|"наряд отменён"| S["Резерв снят
позиция снова свободна"]

Перемещение между складами

Переезд коробки с центрального склада в филиал — одно движение типа «Перемещение», а не списание с одного склада и приход на другой. Пара движений выглядела бы в журнале как потеря в одном месте и находка в другом, хотя это одна и та же вещь.

Модалка перемещения: откуда, куда, позиция или штрихкод

Кнопка «Переместить» — в разделе «Остатки». Переместить можно количеством (расходники) или по штрихкоду конкретной единицы. Не даст: на тот же склад, больше, чем лежит, забронированное под наряды и — отдельно — между складами разных организаций: передача имущества между юрлицами оформляется продажей, а не складской проводкой.

Поставщики

Поставщик — отдельный справочник, на который ссылается приход: одна карточка на фирму, вся история закупок и цен в одном месте. Отсюда ответ на вопрос «сколько у них закупили и почём брали в прошлый раз».

Приход: отдельные поля «№ документа» и «Поставщик» с быстрым добавлением

Материалы в наряде монтажа

На карточке наряда (/admin/crm/montazh/) — строка «Материалы: N». Модалка позволяет прямо с телефона на объекте:

Все списания привязываются к сделке (deal#N) и к учётке клиента. Если у сделки ещё нет клиента — модалка подскажет сначала создать его из карточки сделки. Настройка STOCK_REQUIRE_MATERIALS_ON_DONE включает жёсткий режим: наряд нельзя закрыть «Выполнено», пока не указаны материалы.

Установка только «своим» клиентам: настройка STOCK_INSTALL_REQUIRE_MONTAGE (по умолчанию выкл.) ограничивает монтажников — установить или демонтировать оборудование клиенту можно, только если у монтажника есть на него наряд в CRM (сделка, где он назначен монтажником и проставлена дата монтажа — то же, что «мой наряд» на /admin/crm/montazh/). Кладовщик, суперпользователь и менеджеры работают без ограничения. Смена статуса единиц по-прежнему возможна только для того, что в своём подотчёте.

Наряды монтажника — строка Материалы на карточке

Модалка материалов наряда

Оборудование в карточке клиента

Вкладка «Оборудование» (прямая ссылка — /admin/Abonents/<id>/equipment/): всё оборудование со склада у клиента со статусами, история установок со сторно, ручная установка из подотчёта и демонтаж (с вопросом «исправное или брак?»). При установке серийной единицы её MAC/серийник автоматически подставляются в учётку клиента (тумблер STOCK_AUTO_FILL_MAC).

Вкладка Оборудование в карточке клиента

Деньги: продажа и аренда

Режим передачи определяет финансовые последствия установки:

flowchart TB
    I["Установка клиенту
(наряд / карточка / API)"] I --> CU["Ответхранение
(custody)"] I --> SA["Продажа
(sale)"] I --> RE["Аренда
(rent)"] CU --> CU2["Только движение и статус.
Оборудование — собственность оператора"] SA --> SA2["FinanceOperations:
−цена продажи с лицевого счёта
метка [stock:mv:N]"] RE --> RE2["UsersUsluga «Аренда оборудования»
цена/мес · начисления с 1-го числа
следующего месяца (billing_worker)"] SA2 -.->|сторно| SA3["Деньги возвращаются на счёт,
операция помечается «сторно»"] RE2 -.->|"демонтаж / сторно"| RE3["Услуга аренды выключается,
новых начислений нет"] style SA2 fill:#fdecea,stroke:#dc3545 style RE2 fill:#fff3cd,stroke:#fd7e14 style CU2 fill:#e8f5e9,stroke:#43b77a
Целостность. Складское движение и его финансовая часть выполняются в одной транзакции: если списание с лицевого счёта не удалось — не будет и движения. Продажа без финансовой операции невозможна.

Аналитика

Страница /admin/stock/analytics/ (кладовщик/руководитель) — деньги и движение ТМЦ за период (месяц/квартал/год/даты). Сверху — интерактивные графики в стиле главного дашборда: движения по дням (стек-диаграмма приход/выдача/установка/возврат), структура склада по категориям в рублях (пончик), топ-5 установок за период и подотчёты сотрудников. Графики поддерживают тёмную тему и перерисовываются при смене периода.

Аналитика склада — KPI, обороты, подотчёты, себестоимость

Скан-центр: операции с телефона

Страница /admin/stock/scan/ (пункт меню «Скан») — максимум автоматизации в поле: сотрудник наводит камеру телефона на этикетку (код помещается в рамку-видоискатель с бегущей линией; можно ввести S/N вручную), и система сама предлагает действие по статусу единицы и роли сотрудника:

После выдачи или взятия на ответхранение в карточке появляется кнопка «Распечатать акт (PDF)» — открывается акт подотчёта получателя (материальная ответственность с подписями); при передаче между сотрудниками кнопку видит кладовщик. Кнопка «Вся история» выдвигает справа сайдбар со всеми событиями единицы по датам: тип операции, откуда → куда, кто провёл, комментарий; сторнированные записи перечёркнуты.

Совместимость: на Android работает нативный BarcodeDetector; на iPhone (WebKit его не поддерживает) автоматически подгружается декодер ZXing — сканирование доступно во всех браузерах. После каждого действия — уведомление и журнал операций на экране; можно сканировать следующий код без перезагрузки. USB-сканер работает как клавиатура (ввод + Enter).

Скан-центр на телефоне — контекстные действия по статусу единицы

Сканирование подряд и работа без связи

Сканирование в поле рассчитано на две ситуации: серия кодов подряд и работа без связи.

Что офлайн-режим не делает. Он не решает за сервер: права, организация и остаток проверяются в момент реальной отправки. Поэтому действие, отложенное в очередь, может быть отклонено позже — об этом будет запись в истории с причиной.

Документы и интеграция с CRM

Складские операции оформляются печатными документами (PDF, реквизиты организации клиента подставляются автоматически):

Связь с CRM: в карточке сделки (вкладка «Подключение») показываются материалы наряда — количество позиций и себестоимость по закупочной, рядом — PDF-акт. В профиле сотрудника — блоки «Мой подотчёт» (что на руках, итог ответственности, акт) и «Я выдал» (для кладовщика). Из «Остатков» число «У клиентов» открывает список клиентов со ссылками на их вкладку «Оборудование».

Настройки, роли, алерты

Схема данных модуля:

erDiagram
    StockCategory ||--o{ StockItem : "категория"
    StockUom ||--o{ StockItem : "ед. изм."
    StockItem ||--o{ StockUnit : "серийные единицы"
    StockItem ||--o{ StockMovement : "движения"
    StockUnit |o--o{ StockMovement : ""
    StockWarehouse |o--o{ StockMovement : "src/dst склад"
    StockUnit }o--o| Abonents : "у клиента"
    StockMovement }o--o| FinanceOperations : "продажа [stock:mv:N]"
    StockUnit }o--o| UsersUsluga : "аренда [stock:unit:N]"

    StockItem {
        bool is_serialized "S-N или количеством"
        string transfer_mode "custody-sale-rent"
        money purchase_sale_rent "3 цены"
        decimal min_stock "порог алерта"
    }
    StockUnit {
        string serial_mac_barcode "SU-N"
        string status "in_stock-issued-installed-sold-rented-defect"
    }
    StockMovement {
        string mv_type "receipt-issue-install-return-defect-storno"
        string ref "deal-manual + id"
    }
НастройкаDefaultНазначение
STOCK_ENABLEDOFFГлавный тумблер модуля
STOCK_KEEPER_GROUPSstorekeeper, rootКладовщики: приход, выдача, сторно чужих движений, установка прямо со склада
STOCK_HOLDER_GROUPSinstaller, …Кому можно выдавать в подотчёт
STOCK_BARCODE_FORMATcode128Формат этикетки (code128 / qr)
STOCK_LABEL_W_MM / H_MM40 × 14Размер этикетки под ленту принтера
STOCK_AUTO_FILL_MACONПодставлять MAC/серийник в учётку клиента при установке
STOCK_REQUIRE_MATERIALS_ON_DONEOFFЖёсткий режим: наряд не закрывается без материалов
STOCK_ISSUE_RULESМатрица «кто→кому»: JSON {"группа выдающего": ["группы получателей"]}; пусто — кладовщики выдают всем держателям
STOCK_ALLOW_STAFF_TRANSFEROFFПередача подотчёт→подотчёт между сотрудниками (движение «Перемещение»)
STOCK_MAX_STAFF_COST0Лимит стоимости подотчёта, ₽ по закупочной — выдача сверх лимита блокируется
STOCK_STALE_ISSUED_DAYS0Telegram-алерт: единица висит в подотчёте без движения дольше N дней
STOCK_ORG_STRICTONЗапрет установки клиенту чужой организации (см. раздел 10а). Выключать только если у вас сознательно общий склад на несколько юрлиц
STOCK_INSTALL_REQUIRE_MONTAGEOFFМонтажник ставит/демонтирует оборудование только клиентам со своим нарядом в CRM (сделка: он монтажник + дата монтажа). Кладовщик/суперюзер/менеджеры — без ограничений

Мульти-организация: правила «чьё что» вынесены в отдельный раздел — 10а. Несколько организаций.

Алерт остатков: раз в сутки задача stock-min-alert собирает позиции ниже min_stock и отправляет одно сообщение в Telegram-группу оператора со ссылкой на страницу прихода.

Аудит: каждое движение пишется в журнал аудита (STOCK_MOVEMENT) — кто, что, куда и когда переместил.

Несколько организаций: чьё что

Если в биллинге заведено больше одной организации, склад ведётся по каждой отдельно: своя номенклатура, свои склады, свои сотрудники, свои деньги. Сотрудник видит и трогает только то, что относится к доступным ему организациям.

ОбъектКому принадлежитЧто из этого следует
Позиция номенклатурыОрганизации (выбирается в модалке позиции)Чужие позиции не видны в списках, поиске, аналитике и журнале
СкладОрганизации (обязательно)Приход и выдача идут в границах организации: склад одного юрлица не подставится под позицию другого
КатегорияОрганизации или общая«Роутеры» и «ONU/Оптика» разумно держать общими — иначе разъедутся отчёты и пресеты
Единица (серийник)Наследует организацию позиции в момент приходаДальше не меняется: история владения не «переезжает», если позицию потом переведут в другую организацию
ДвижениеФиксируется в момент проводкиЖурнал и аналитика фильтруются по организации самого движения, а не по текущему состоянию позиции
СотрудникОрганизациям из профиляВыдать и передать подотчёт можно только сотруднику своей организации
flowchart TB
    subgraph A["Организация «СмИТ»"]
        A1[Склад организации А] --> A2[Позиция: ONU]
        A2 --> A3[Единица SU-56]
        A3 --> A4[Клиент организации А]
    end
    subgraph B["Организация Б"]
        B1[Склад организации Б] --> B2[Позиция: ONU]
        B2 --> B3[Единица SU-77]
        B3 --> B4[Клиент организации Б]
    end
    A3 -. запрещено .-> B4
    B3 -. запрещено .-> A4

Установка клиенту — только внутри своей организации. Оборудование организации А нельзя поставить клиенту организации Б: система ответит «Позиция принадлежит организации А, а клиент — Б». Причина не формальная: себестоимость списывается со склада одной организации, а операция продажи или услуга аренды создаётся у клиента — то есть в другой организации. После такой установки не сходится ни у одной из сторон. Правильный путь — завести позицию в организации клиента. Ограничение снимается настройкой STOCK_ORG_STRICT = 0, если у вас сознательно общий склад на несколько юрлиц.

Где это видно в интерфейсе. Колонка и бейдж «Орг.» в номенклатуре и на остатках; выбор организации в модалке позиции и в справочнике складов; фильтр по организации и выгрузка CSV в журнале движений. Списки организаций в этих селектах приходят с сервера уже отфильтрованными по правам сотрудника — увидеть в выпадающем списке чужую организацию нельзя.

Что проверить при запуске второй организации: завести ей свой склад (иначе приход уедет на склад по умолчанию), завести номенклатуру в её организации, проверить у сотрудников привязку к организациям в профиле — от неё зависит, кому можно выдавать подотчёт.

Чек-лист запуска

  1. Группа storekeeper + учётка кладовщика в ней.
  2. Категории и номенклатура (типовые позиции ISP: роутеры, ONU, кабель, коннекторы). Для знакомства — manage.py seed_stock_demo, очистка демо — seed_stock_demo --clear.
  3. Стартовая инвентаризация — приход «инвентаризация (correction)» на фактические остатки склада и подотчётов.
  4. Печать этикеток на серийные остатки.
  5. STOCK_ENABLED = ON — с этого момента монтажники видят «Мой подотчёт», в нарядах появляются «Материалы», в карточках клиентов — вкладка «Оборудование».