Как перестать изобретать велосипед в управлении проектами на Odoo
Представьте ситуацию: вы внедрили Odoo, база работает, заказы летят. Но как только дело доходит до управления сложными проектами, стандартного функционала начинает не хватать. Хочется добавить иерархию задач, привязать закупки к этапам или просто ограничить видимость проектов для администраторов. Обычно в этот момент разработчик открывает IDE и начинает писать свой «велосипед».
Оказывается, сообщество OCA (Odoo Community Association) уже давно собрало огромный склад готовых запчастей для таких случаев. Репозиторий OCA/project — это не просто один модуль, а целая библиотека аддонов, которые решают точечные боли проектных менеджеров и разработчиков.
Что это за проект
Репозиторий представляет собой коллекцию расширений для базового модуля project в Odoo. Здесь нет «комбайна», который меняет всё и сразу. Вместо этого разработчики предлагают модульный подход: нужен функционал шаблонов — ставите один аддон, нужна связь с HR — другой.
Это особенно полезно для сервисных компаний и команд разработки, которым тесно в рамках «коробочной» версии. Проект живой, активно поддерживается (уже есть ветка под 18.0 версию) и, что немаловажно, проходит через жесткое сито код-ревью ассоциации.
Полезные модули, которые экономят время
В репозитории сейчас несколько десятков аддонов. Разбирать все долго, поэтому я выбрал те, что чаще всего пригождаются в реальной работе.
Иерархия и структура задач
В стандартной Odoo работа с подзадачами иногда напоминает квест. Модули вроде project_task_ancestor и project_parent добавляют человеческую вложенность.
- project_task_parent_completion_blocking: гениально простая штука. Она не дает закрыть родительскую задачу, пока висят открытые дочерние. Казалось бы, мелочь, но сколько забытых «хвостов» она помогает избежать.
- project_parent_task_filter: добавляет фильтр, чтобы видеть только верхнеуровневые задачи, не зарываясь в детализацию.
Автоматизация и контроль сроков
- project_task_parent_due_auto: если вы сдвинули дедлайн у подзадачи, этот модуль автоматически пересчитает сроки у родительской. Больше не нужно вручную актуализировать планы.
- project_task_personal_stage_auto_fold: автоматически сворачивает личные стадии задач, когда они выполнены. Помогает держать канбан-доску в чистоте без лишних кликов.
Безопасность и роли
Стандартная модель доступа в Odoo иногда слишком прямолинейна.
- project_administrator_restricted_visibility: позволяет создать роль администратора проектов, который видит только те проекты, к которым ему реально разрешен доступ.
- project_tag_security: ограничивает доступ на основе тегов. Это удобно, если над проектом работают разные департаменты или внешние подрядчики.
Связь с разработкой
Для нас, разработчиков, есть приятные мелочи:
- project_task_pull_request: добавляет поле для ссылки на PR прямо в карточку задачи.
- project_task_pull_request_state: позволяет отслеживать статус этого PR (открыт/закрыт/слит) не выходя из Odoo.
Техническая сторона вопроса
Все модули написаны на Python и следуют стандартам OCA. Это значит, что код чистый, покрыт тестами (статусы билдов это подтверждают) и легко читается.
Интересная деталь: проект использует Runboat. Если вам лень разворачивать всё локально, можно нажать кнопку «Try me» в ридми и потыкать функционал в живой демо-базе, которую сервис поднимет специально для вас.
Как это использовать на практике
Предположим, вы ведете разработку ПО. Вам нужно, чтобы:
- Задачи имели уникальные короткие коды (как в Jira). Для этого ставим
project_task_code. - Клиенты в портале видели только определенные описания. Поможет
project_task_description_portal. - При создании проекта сразу подтягивались этапы (Design, Dev, QA). Тут выручит
project_task_stage_mgmt.
Вместо написания 500-700 строк кода и создания своих моделей, вы просто добавляете эти зависимости в манифест своего модуля.
Стоит ли пробовать
Если вы работаете с Odoo и вам нужно что-то специфическое для управления проектами — загляните сюда в первую очередь. Велика вероятность, что вашу проблему уже решили два года назад и даже написали к ней тесты.
Кому точно пригодится:
- Системным интеграторам Odoo.
- Внутренним командам разработки на предприятиях.
- Проджект-менеджерам, которые хотят «подкрутить» систему под себя без привлечения тяжелой артиллерии.
Главный минус — документация. Ридми у многих модулей ограничивается одной строчкой описания. Чтобы понять, как именно работает аддон, часто приходится лезть в код или запускать демо. Но, учитывая качество кода OCA, это не самая большая цена за стабильное и готовое решение.
