Introdução
No Odoo, os modelos definem como os dados são estruturados e armazenados na base de dados. Cada pedaço de dados empresariais com o qual você trabalha, desde pedidos de venda a faturas e funcionários, 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 campos, relacionamentos e lógica de negócios.
Este artigo foca em um dos modelos centrais no módulo de RH: hr.employee. Quer você esteja construindo fluxos de trabalho de RH personalizados, integrando sistemas de folha de pagamento ou configurando presença e licenças, você trabalhará com este modelo.
O que é o Modelo hr.employee
O modelo hr.employee representa os funcionários no Odoo. É o local central onde todas as informações pessoais são armazenadas.
Este modelo Odoo faz parte do aplicativo de RH (Recursos Humanos). É utilizado em presença, licenças, contratos, folha de pagamento e folhas de ponto.
É instalado quando você ativa o aplicativo Funcionários. Outros módulos o estendem através da herança de modelos Odoo. hr_contract adiciona campos de contrato. hr_attendance adiciona check-in e check-out. hr_leave adiciona tempo livre. Cada módulo adiciona o que precisa sem duplicar a estrutura central.
O Odoo também fornece hr.employee.public, uma visão restrita dos mesmos dados para usuários que precisam de visibilidade limitada dos funcionários. Este é um exemplo de como o Odoo utiliza padrões de modelos abstratos e herança de modelos para controlar o acesso.
Campos Chave no Modelo
Aqui estão os campos mais importantes do Odoo no modelo hr.employee. Compreender estes ajudará você a trabalhar de forma eficaz com os registros dos funcionários.
1. nome
Tipo: Char. Este campo armazena o nome do funcionário. Geralmente é exibido em muitas visualizações do Odoo e é o identificador principal para o registro do funcionário.
2. create_date
Tipo: Datetime. Armazena a data e 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 hora da última modificação. Também gerenciado automaticamente. Ajuda a rastrear quando os dados foram atualizados pela última vez.
4. ativo
Tipo: Booleano. Flag de exclusão suave. Quando Falso, o registro é arquivado e oculto das visualizações padrão. Use isso quando um funcionário sai. Os registros não são fisicamente excluídos.
5. company_id
Tipo: Many2one (res.company). Em configurações de múltiplas empresas, isso indica a qual empresa Odoo o funcionário pertence. Necessário para a maioria dos registros de funcionários.
6. user_id
Tipo: Many2one (res.users). Liga o funcionário a um usuário Odoo. Quando definido, o funcionário pode fazer login e usar o Odoo. Usado para acesso ao portal, folhas de ponto e aprovações.
7. work_email
Tipo: Char. O endereço de e-mail de trabalho. Usado para comunicações internas e notificações.
8. work_phone
Tipo: Char. O número de telefone de trabalho. Exibido em formulários de funcionários e usado para fluxos de contato.
9. mobile_phone
Tipo: Char. Número de telefone móvel de trabalho. Frequentemente usado para SMS ou notificações urgentes.
10. department_id
Tipo: Many2one (hr.department). O departamento ao qual o funcionário pertence. Usado para organogramas, relatórios e fluxos de aprovação.
11. job_id
Tipo: Many2one (hr.job). A posição de trabalho. Liga-se ao modelo hr.job que define títulos de trabalho e posições abertas.
12. job_title
Tipo: Char. Título de trabalho em texto livre. Pode ser usado quando job_id não está definido ou para títulos personalizados.
13. parent_id
Tipo: Many2one (hr.employee). O gerente. Permite a hierarquia de funcionários. Usado para cadeias de aprovação e estrutura organizacional.
14. coach_id
Tipo: Many2one (hr.employee). O treinador deste funcionário. Usado para desempenho e desenvolvimento. O treinador não tem direitos específicos por padrão.
15. resource_id
Tipo: Many2one (resource.resource). Liga-se ao modelo de recurso. Usado para agendamento, planejamento de capacidade e integração de calendário.
16. work_contact_id
Tipo: Many2one (res.partner). O contacto de trabalho. Liga ao registo do parceiro utilizado para comunicações e documentos relacionados com o trabalho.
17. address_id
Tipo: Many2one (res.partner). Endereço de trabalho. Liga a um registo res.partner para o escritório ou local de trabalho.
18. address_home_id
Tipo: Many2one (res.partner). Endereço privado. O endereço de casa do empregado, não o escritório. Usado para folha de pagamento e contactos de emergência.
19. resource_calendar_id
Tipo: Many2one (resource.calendar). Horário de trabalho. Define as horas e dias de trabalho. Usado para assiduidade, licença e planeamento.
20. employee_type
Tipo: Seleção. Tipo de empregado: Empregado, Freelancer ou Estagiário. Obrigatório. Afeta o histórico de contratos: apenas o tipo Empregado deve estar sob contrato.
21. barcode
Tipo: Char. ID do crachá. Usado para identificação do empregado no quiosque de assiduidade e outros sistemas de leitura de código de barras.
22. pin
Tipo: Char. PIN usado para fazer check-in e check-out no modo Kiosk do aplicativo de Presença. Também usado para trocar o caixa no Ponto de Venda.
23. aniversário
Tipo: Data. Data de nascimento. Usado para registros de RH e lembretes opcionais de aniversário.
24. identificação_id
Tipo: Char. Número de identificação nacional. Usado para conformidade de RH e folha de pagamento.
25. passaporte_id
Tipo: Char. Número do passaporte. Usado para rastreamento de viagens e permissões de trabalho.
26. conta_bancária_id
Tipo: Many2one (res.partner.bank). Conta bancária do funcionário para pagamentos de salário.
27. email_privado
Tipo: Char. O email pessoal do funcionário. Usado quando o email de trabalho não está disponível.
28. telefone
Tipo: Char. Número de telefone privado. Diferente dos detalhes de contacto de trabalho.
29. contract_id
Tipo: Many2one (hr.contract). Contrato atual. Referência ao contrato ativo.
30. contract_ids
Tipo: One2many (hr.contract). Todos os contratos ligados a este funcionário. Histórico de contratos.
31. image_1920
Tipo: Binário. Foto ou avatar do funcionário. Odoo armazena múltiplos tamanhos. Usado em formulários, relatórios e no diretório.
32. related_partner_id
Tipo: Many2one (res.partner). O contacto ligado a este funcionário. Conecta os dados do funcionário ao modelo de parceiro para CRM e outros módulos.
33. leave_manager_id
Tipo: Many2one (res.users). Utilizador responsável pela aprovação de folgas. Se vazio, a aprovação vai para um Administrador ou Aprovador.
34. expense_manager_id
Tipo: Many2one (res.users). Utilizador responsável pela aprovação de despesas. Se vazio, a aprovação vai para um Administrador ou Aprovador.
35. timesheet_manager_id
Tipo: Many2one (res.users). Utilizador responsável pela aprovação de folhas de ponto. Se vazio, a aprovação vai para um Administrador de Folhas de Ponto ou Utilizador.
Como Este Modelo É Usado em Fluxos de Trabalho Empresariais
1. Diretório de Funcionários e Integração
Quando o RH cria um novo funcionário, preenche o registo hr.employee. Nome, departamento, cargo, gerente e detalhes de contacto. O link user_id é definido quando o funcionário obtém acesso ao Odoo.
2. Presença e Registo de Tempo
Os funcionários fazem check-in e check-out através da aplicação de Presença. Os horários de check-in e check-out são armazenados em hr.attendance, ligados a hr.employee. Os campos de código de barras e pin permitem o modo quiosque.
3. Férias e Licenças
Os pedidos de licença referenciam o funcionário. O leave_manager_id e resource_calendar_id determinam quem aprova e quantos dias são alocados.
4. Folha de Pagamento e Contratos
A folha de pagamento utiliza hr.employee para estrutura salarial, conta bancária e dados do contrato. O contract_id liga ao contrato atual. Os contract_ids mantêm o histórico completo.
5. Folhas de Ponto e Alocação de Projetos
Quando os funcionários registam tempo em projetos, a folha de horas está ligada a hr.employee. O timesheet_manager_id controla a aprovação. O resource_id está ligado às ferramentas de planeamento e agendamento.
Como os Desenvolvedores Estendem Este Modelo
Os desenvolvedores estendem hr.employee utilizando vários padrões. A herança de modelo do Odoo é o principal mecanismo.
Herança de Modelo
Use _inherit = 'hr.employee' para estender o modelo. Adicione novos campos, sobreponha métodos ou adicione restrições. O modelo herdado no Odoo mantém as suas alterações em um módulo separado para atualizações fáceis.
Adicionando Campos
Defina novos campos 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
Sobreponha 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 apenas quando o funcionário precisar de acesso ao Odoo. Nem todos os funcionários precisam de uma conta de usuário.
- Use a hierarquia parent_id corretamente. Construa a estrutura organizacional de cima para baixo.
- Defina resource_calendar_id para cálculos consistentes de horas de trabalho e licenças.
- Ao construir integrações de API, use a API XML-RPC ou JSON-RPC. O modelo hr.employee no Odoo está totalmente exposto como um modelo de API. 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. - Campos restritos ao hr.group_hr_user não devem ser pré-carregados para usuários sem acesso a RH. Use grupos nas definições de campo.
Erros Comuns
- Criando registros de funcionários duplicados em vez de procurar os existentes. Use work_email ou identification_id para deduplicação.
- Confundindo user_id e related_partner_id. user_id é para login no Odoo. related_partner_id é o registro de contato.
- Esquecendo de definir employee_type. É obrigatório e afeta o comportamento do contrato.
- 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.
- Expondo campos sensíveis de RH a usuários sem hr.group_hr_user. Use grupos em campos que contêm dados privados.
Conclusão
O modelo hr.employee é central para o Odoo RH. Ele armazena dados de funcionários, vincula a contratos, presença e licenças. 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 mapeando processos de RH ou um desenvolvedor construindo módulos personalizados, um sólido entendimento do hr.employee 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. Especializamo-nos em integrações de API e desenvolvimento Odoo. A nossa equipa tem uma vasta experiência com a arquitetura de dados do Odoo e modelos como hr.employee.
Se precisar de ajuda com a sua implementação do Odoo, módulos de RH personalizados ou integrações, estamos aqui para ajudar. Agende uma demonstração para discutir o seu projeto.