BASE DE CONHECIMENTO - CADASTRO DE MOTORISTA (SAG)

OBJETIVO
Esta base descreve como funciona o cadastro de motorista no modulo dm_motorista.
Use estas orientacoes para responder usuarios sobre inclusao, edicao, exclusao logica, filtros e campos do cadastro.

ARQUIVOS PRINCIPAIS
- dm_motorista/index.php: lista de motoristas e acoes (alterar/excluir) com permissao.
- dm_motorista/cad.php: formulario de cadastro e edicao.
- dm_motorista/insert.php: persistencia (insert/update) no banco.
- dm_motorista/delete.php: exclusao logica (status = 2).
- dm_motorista/filtro.php: tela de filtros.
- dm_motorista/select.php: query base da listagem com joins.

TABELA PRINCIPAL
- dim_motorista

REGRAS DE STATUS
- 0 = Ativo
- 1 = Inativo
- 2 = Excluido (exclusao logica)

FLUXO DE CADASTRO
1) Usuario acessa dm_motorista/cad sem id para novo cadastro.
2) Preenche formulario.
3) Form envia para dm_motorista/insert com action=0.
4) Sistema faz INSERT em dim_motorista e retorna id.
5) Se controlejornada = 1, integra/atualiza jor002_funcionario.
6) Redireciona para index.

FLUXO DE EDICAO
1) Usuario acessa dm_motorista/cad?id={id}.
2) Sistema busca dados em dim_motorista por empresa e id.
3) Form envia para dm_motorista/insert com action=1.
4) Sistema faz UPDATE em dim_motorista por empresa e id.

FLUXO DE EXCLUSAO
1) Usuario aciona dm_motorista/delete?id={id}.
2) Sistema atualiza status=2 no registro.
3) Registro deixa de aparecer no filtro padrao da listagem.

REGRAS DE LISTAGEM E FILTRO
- select.php aplica filtro por empresa (dv.empresa = codempresa).
- Sem filtro de status informado, lista apenas status in (0,1).
- Filtros principais: id, nome, cpf, rg, cnh, rastreador, classificacao, centrocusto, gestor, catcnh, status.
- Ordenacao padrao: nome.

CAMPOS DO FORMULARIO (CADASTRO)
- Basicos: nome, status, rastreador, rastreador2, classificacao, cpf, rg, dtnascimento.
- Vinculos: idcidade, centrocusto, gestor.
- Pessoais: estadocivil, nomepai, nomemae.
- Datas RH: dtadmissao, dtdemissao.
- Documento RG: orgaoemissorrg, dtemissaorg.
- CNH: cnh, registrocnh, idcidadecnh, catcnh, dtemissaocnh, dtvctocnh.
- Operacional: controlejornada.
- Contato/alerta: telefone, enviarnottelefone.

INTEGRACAO COM CONTROLE DE JORNADA
Quando controlejornada = 1:
- Sistema verifica jor002_funcionario por (empresa + idmotorista) ou (empresa + matricula=cpf).
- Se nao existir, cria funcionario com status=0.
- Se existir, atualiza idmotorista.

REGRAS FUNCIONAIS IMPORTANTES
- O cadastro e segmentado por empresa (codempresa da sessao).
- Exclusao e logica (status=2), nao remove fisicamente.
- Tela de listagem usa permissao de rotina para visualizar/editar/deletar.

OBSERVACOES TECNICAS RELEVANTES (DO CODIGO ATUAL)
- insert.php espera o campo POST "metamedia".
- cad.php envia o campo como name="media_veiculo".
- Resultado pratico: o valor de meta media pode nao persistir corretamente.

- delete.php atualiza por id sem filtro explicito de empresa.
- Ideal: incluir empresa no WHERE para evitar impacto cruzado entre empresas.

COMO A IA DEVE RESPONDER AO USUARIO
- Explicar em passos simples.
- Informar status com os codigos corretos (0/1/2).
- Diferenciar claramente cadastro, edicao e exclusao logica.
- Em duvida sobre dado nao mostrado no codigo, responder: "Nao encontrei essa regra no modulo dm_motorista analisado".

PERGUNTAS DE TESTE PARA O AGENTE
1) Como cadastro um novo motorista no sistema?
2) Quais campos da CNH preciso preencher?
3) O que acontece quando marco controle de jornada = Sim?
4) Qual a diferenca entre Inativo e Excluido?
5) Como o filtro de status funciona por padrao?
6) Quais tabelas o cadastro de motorista usa?
7) Se eu excluir motorista, o registro e apagado do banco?
8) Como funciona a integracao com jor002_funcionario?
9) Quais campos de data existem no cadastro?
10) Quais cuidados devo ter ao excluir um motorista?

RESPOSTA PADRAO ESPERADA (EXEMPLO)
Pergunta: "Como excluir um motorista?"
Resposta esperada:
- A exclusao no modulo dm_motorista e logica.
- O sistema altera status para 2 (Excluido).
- O registro nao e removido fisicamente da tabela dim_motorista.
- Na listagem padrao, aparecem apenas status 0 e 1.

FIM DA BASE