Skip to content

Set Project (set-project)

UUID приложения: 2b22c570-41c4-48c4-90fe-ff6fcdf0fc2c
Название: set-project

Назначение

Автоматическое назначение проекта (project) в документы МойСклад (заказы, накладные, платежи и др.) на основе правил: контрагент + типы документов + текст назначения платежа.

Модели БД

  • sp_data — связующая таблица настроек.
  • sp_rule — правила:
  • documents_type — массив типов документов, к которым применяется правило.
  • agent_uuid / agent_name — контрагент.
  • operand0 — логический оператор: CONTAINS_ANYONE, CONTAINS_EVERYONE, NOT_CONTAINS_EVERYONE.
  • purposes — массив подстрок для проверки в paymentPurpose.
  • project_uuid / project_name — проект, который подставляется.

Поток webhook

  • POST /<uid>/webhook-processor — заменяет online.moysklad.ru/api → api.moysklad.ru/api, ставит задачу save_webhook.
  • POST /<uid>/internal-webhook — передаёт все события разом в SetProject(events=..., account_uid=...).run().

Бизнес-логика

Сервис src/services/set_project.py: - Загружает правила из БД. - Для каждого события определяет тип документа. - Проверяет контрагента: если задан — должен совпадать. - Проверяет paymentPurpose по операнду и списку подстрок. - Если правило совпало — обновляет документ, подставляя проект (bulk update).

GUI (NiceGUI)

Страница: src/endpoints/main/set_project.py
Таблица правил: контрагент + типы документов + назначение платежа → проект. Поддержка добавления, редактирования, удаления.