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
Таблица правил: контрагент + типы документов + назначение платежа → проект. Поддержка добавления, редактирования, удаления.