Introdução
No Odoo, os modelos definem como os dados são estruturados e armazenados no banco de dados. Cada pedaço de dados empresariais com o qual você trabalha, desde pedidos de venda a projetos e tarefas, vive em um modelo.
Compreender os modelos do Odoo é essencial tanto para desenvolvedores quanto para consultores funcionais. Os modelos são a base da arquitetura de dados do Odoo. Eles definem os campos do Odoo, relacionamentos e lógica de negócios. Cada modelo no Odoo segue os mesmos padrões.
Este artigo foca em um dos modelos mais importantes do Odoo: project.project. Seja você construindo módulos personalizados, integrando sistemas externos ou configurando fluxos de trabalho de projetos, você trabalhará com este modelo.
O que é o modelo project.project
O modelo project.project representa um projeto no Odoo. É o recipiente para tarefas, marcos e colaboração em equipe. Cada projeto é um registro neste modelo.
Este modelo no Odoo é utilizado pelo aplicativo Project. Quando você cria um projeto no Odoo, você cria um registro project.project. As tarefas estão vinculadas a esse projeto através do campo task_ids. O projeto define os estágios do fluxo de trabalho, os membros da equipe e as regras de visibilidade.
O modelo é definido no módulo project. Outros módulos o estendem através da herança de modelos do Odoo. O módulo Sale adiciona faturamento baseado em projetos. O módulo Timesheet adiciona rastreamento de tempo. O planejamento de projetos adiciona agendamento Gantt. Cada módulo adiciona o que precisa sem duplicar a estrutura central.
Compreender a relação entre project.project e project.task é fundamental. O projeto contém configurações compartilhadas. A tarefa contém itens de trabalho individuais. Ambos são centrais para o fluxo de trabalho de gerenciamento de projetos do Odoo.
Campos Chave no Modelo
Aqui estão os campos mais importantes do Odoo no modelo project.project. Compreender estes ajudará você a trabalhar de forma eficaz com projetos.
1. name
Tipo: Char. Este campo armazena o nome do projeto. Ele é exibido em muitas visualizações do Odoo e é o identificador principal para o registro do projeto.
2. create_date
Tipo: Datetime. Armazena a data e a hora em que o registro foi criado. Gerenciado automaticamente pelo Odoo. Útil para relatórios e auditorias.
3. write_date
Tipo: Datetime. Armazena a data e a hora da última modificação. Também gerenciado automaticamente. Ajuda a rastrear quando os dados foram atualizados pela última vez.
4. active
Tipo: Booleano. Sinal de exclusão suave. Quando Falso, o projeto é arquivado e oculto das visualizações padrão. Os registros não são fisicamente excluídos.
5. sequência
Tipo: Inteiro. Ordem de exibição para ordenação. Usado em listas de projetos e menus suspensos. Valores mais baixos aparecem primeiro.
6. cor
Tipo: Inteiro. Índice de cor para o projeto. Usado em visualizações e quadros kanban para distinguir visualmente os projetos.
7. user_id
Tipo: Many2one (res.users). O gerente do projeto. Este usuário é responsável pelo projeto e é frequentemente mostrado como o responsável padrão.
8. company_id
Tipo: Many2one (res.company). Em configurações de múltiplas empresas, isso indica a qual empresa Odoo o projeto pertence.
9. partner_id
Tipo: Many2one (res.partner). O cliente ou parceiro vinculado ao projeto. Usado para faturamento e relatórios.
10. descrição
Tipo: Html. Descrição do projeto. Pode incluir HTML para formatação. Usado para resumos e notas do projeto.
11. data_início
Tipo: Data. A data de início do projeto. Usado para planejamento e relatórios.
12. data
Tipo: Data. O prazo ou data de término do projeto. Usado para acompanhamento e relatórios.
13. ids_tarefas
Tipo: Um para muitos (project.task). A lista de tarefas no projeto. Esta é a relação principal entre projetos e tarefas.
14. contagem_tarefas
Tipo: Inteiro. Número de tarefas. Computado a partir de ids_tarefas. Usado para exibição e filtragem.
15. ids_tipo
Tipo: Muitos para muitos (project.task.type). Estágios ou tipos de tarefas para o projeto. Define o fluxo de trabalho (por exemplo, A Fazer, Em Progresso, Concluído).
16. ids_tags
Tipo: Many2many (project.tags). Etiquetas de projeto para categorização. Usado para filtrar e organizar projetos.
17. privacidade_visibilidade
Tipo: Seleção. Controla quem pode acessar o projeto. Opções: Usuários internos convidados (privado), Todos os usuários internos ou Usuários convidados do portal e todos os usuários internos (público).
18. colaborador_ids
Tipo: One2many (project.collaborator). Membros da equipe designados para o projeto. Define quem pode trabalhar no projeto.
19. favorito_user_ids
Tipo: Many2many (res.users). Usuários que marcaram o projeto como favorito. Usado para acesso rápido no painel.
20. permitir_dependências_de_tarefas
Tipo: Booleano. Quando Verdadeiro, as tarefas podem ser vinculadas a outras tarefas como predecessoras ou sucessoras. Usado para planejamento de projetos.
21. permitir_marcadores
Tipo: Booleano. Quando Verdadeiro, marcadores podem ser criados no projeto. Marcadores marcam entregas chave.
22. milestone_ids
Tipo: Um para muitos (project.milestone). Os marcos no projeto. Usado para rastrear entregas chave.
23. rating_active
Tipo: Booleano. Quando verdadeiro, os clientes podem avaliar o projeto. Usado para feedback dos clientes.
24. task_properties_definition
Tipo: Texto (JSON). Propriedades de tarefa personalizadas para o projeto. Define campos extras que podem ser adicionados às tarefas.
25. access_url
Tipo: Char. A URL para os clientes acessarem o projeto através do portal. Usado para colaboração com os clientes.
26. access_token
Tipo: Char. Token de segurança para acesso ao portal. Garante que apenas usuários autorizados possam visualizar o projeto.
27. alias_id
Tipo: Muitos para um (mail.alias). Alias de e-mail para o projeto. E-mails recebidos criam tarefas automaticamente.
28. activity_ids
Tipo: One2many (mail.activity). Atividades agendadas no projeto. Usado para acompanhamentos e lembretes.
29. activity_state
Tipo: Seleção. Resumo do estado da atividade: Hoje, Atrasado ou Planejado. Computado a partir de activity_ids.
30. activity_date_deadline
Tipo: Data. A data da próxima atividade agendada. Usado para planejamento de atividades.
31. message_ids
Tipo: One2many (mail.message). Mensagens do Chatter no projeto. Usado para comunicação interna.
32. message_follower_ids
Tipo: One2many (mail.followers). Usuários que seguem o projeto. Eles recebem notificações.
33. create_uid
Tipo: Many2one (res.users). O usuário que criou o registro. Definido automaticamente pelo Odoo.
34. write_uid
Tipo: Many2one (res.users). O utilizador que modificou o registo pela última vez. Definido automaticamente pelo Odoo.
Como Este Modelo É Usado em Fluxos de Trabalho Empresariais
1. Criação e Gestão de Projetos
Quando um vendedor ou gestor de projeto cria um projeto, define o nome, o gestor, as datas e a visibilidade. O modelo project.project armazena tudo isto. As tarefas são então adicionadas e ligadas ao projeto.
2. Fluxo de Trabalho das Tarefas
As tarefas movem-se através de etapas definidas por type_ids. O gestor de projeto atribui tarefas aos colaboradores. O projeto contém a configuração do fluxo de trabalho e a estrutura da equipa.
3. Portal do Cliente
Quando a privacidade_visibilidade permite o acesso ao portal, os clientes podem visualizar tarefas e marcos através do access_url. O access_token assegura o link. Isto é útil para projetos com clientes.
4. Folha de Ponto e Faturação
Com o módulo Folha de Ponto, project.project liga-se a entradas de folha de ponto. Com Vendas, os projetos podem ser ligados a encomendas de venda para faturação baseada em projetos. O campo partner_id conecta o projeto ao cliente.
5. Integração de Email
Emails recebidos para o alias do projeto criam tarefas automaticamente. O campo alias_id conecta o projeto ao seu alias de email. Isto simplifica a criação de tarefas a partir de emails.
Como os Desenvolvedores Estendem Este Modelo
Os desenvolvedores estendem project.project utilizando vários padrões. A herança de modelos do Odoo é o principal mecanismo.
Herança de Modelo
Use _inherit = 'project.project' para estender o modelo. Esta é a herança de modelo do Odoo em ação. Adicione novos campos do Odoo, sobrescreva métodos ou adicione restrições. O modelo herdado no Odoo mantém suas alterações em um módulo separado para facilitar as atualizações. Quando você herda um modelo no Odoo, você o estende sem modificar o original.
Adicionando Campos
Defina novos campos do Odoo no seu modelo herdado. Use o tipo de campo correto: Char, Many2one, Boolean, Integer, Text, Selection. Considere campos dependentes da empresa para multi-empresa.
Extensões Python
Sobrescreva create, write ou unlink para adicionar lógica. Use super() para chamar o original. Tenha cuidado com campos computados e suas dependências.
Odoo Studio
O Odoo Studio permite que você adicione campos sem código. Bom para personalizações rápidas. Para lógica complexa ou atualizações, módulos personalizados são mais fáceis de manter.
Melhores Práticas
- Defina user_id para a atribuição do gerente do projeto. A propriedade clara melhora a responsabilidade.
- Configure type_ids para cada projeto. Defina estágios que correspondam ao seu fluxo de trabalho.
- Use privacy_visibility corretamente. Projetos privados restringem o acesso a seguidores e administradores.
- Ao construir integrações de API, use a API XML-RPC ou JSON-RPC. O modelo project.project está totalmente exposto como um modelo de API no Odoo. Mapeie IDs externos com cuidado.
- Para campos personalizados, use o prefixo
x_ou um prefixo de módulo para evitar conflitos com versões futuras do Odoo.
Erros Comuns
- Criando tarefas sem vinculá-las a um projeto. Cada tarefa deve ter um project_id.
- Esquecendo de definir type_ids. Novos projetos podem não ter estágios, então as tarefas não podem se mover pelo fluxo de trabalho.
- Definindo privacy_visibility como público quando deveria ser privado. Isso pode expor dados sensíveis.
- Substituindo métodos principais sem chamar super(). Isso pode quebrar outros módulos ou futuras atualizações.
- Adicionando campos personalizados obrigatórios sem valores padrão. Registros existentes falharão na validação na atualização.
Conclusão
O modelo project.project é central para a gestão de projetos do Odoo. Ele armazena definições de projetos, estágios de fluxo de trabalho e estrutura de equipe. Compreender seus campos e como os módulos o estendem ajudará você a configurar, personalizar e integrar o Odoo de forma eficaz.
Seja você um consultor funcional configurando projetos ou um desenvolvedor construindo módulos personalizados, um sólido entendimento do project.project economizará tempo e evitará erros.
Precisa de Ajuda com a Sua Implementação do Odoo?
A Dasolo ajuda empresas a implementar, personalizar e otimizar o Odoo. Nós nos especializamos em integrações de API e desenvolvimento Odoo. Nossa equipe tem profunda experiência com a arquitetura de dados do Odoo e modelos como project.project.
Se você precisar de ajuda com sua implementação do Odoo, módulos personalizados ou integrações, estamos aqui para ajudar. Agende uma demonstração para discutir seu projeto.