🧾

Módulo: Serviços e Catálogo (Painel)

Páginas e endpoints do painel: sistema/painel/paginas/ (serviços, categorias e vínculos).

Este documento descreve o módulo de Serviços no painel do BarberBot, cobrindo: cat_servicos (categorias), servicos (catálogo), meus_servicos (serviços do profissional) e a tela servicos_func.php (vínculo de serviços por funcionário). As informações abaixo foram extraídas automaticamente dos arquivos deste pacote.

📁 Estrutura do pacote (para localizar rápido)

├─ cat_servicos/
│  ├─ excluir.php
│  ├─ listar.php
│  └─ salvar.php
├─ meus_servicos/
│  ├─ baixar.php
│  ├─ excluir.php
│  ├─ listar.php
│  └─ salvar.php
├─ servicos/
│  ├─ error_log
│  ├─ excluir.php
│  ├─ listar.php
│  ├─ mudar-status.php
│  └─ salvar.php
├─ cat_servicos.php
├─ meus_servicos.php
├─ servicos.php
└─ servicos_func.php
  • *.php na raiz: páginas do módulo (UI) incluídas pelo router do painel.
  • Pastas cat_servicos/, servicos/, meus_servicos/: endpoints AJAX (listar/salvar/excluir/baixar).

🧭 Mapa do módulo

  • Categorias de Serviços (cat_servicos.php / cat_servicos/*): CRUD de categorias para organizar o catálogo.
  • Serviços (servicos.php / servicos/*): CRUD do catálogo, com vínculo à categoria e status.
  • Meus Serviços (meus_servicos.php / meus_servicos/*): serviços associados ao profissional logado e rotinas de baixa.
  • Serviços por Funcionário (servicos_func.php): tela que reutiliza endpoints de funcionarios/* para vincular serviços ao funcionário.

Observação importante: servicos_func.php define var pag = "funcionarios" e chama endpoints como funcionarios/inserir-servico.php e funcionarios/listar-servicos.php. Ou seja: apesar do nome, ele depende do módulo de funcionários.

🗄️ Tabelas identificadas (por pasta)

Lista automática a partir de SQL encontrado nos arquivos (pode incluir tabelas auxiliares usadas para contagem, caixa/financeiro, etc.).

  • (raiz): cat_servicos, clientes, formas_pgto, servicos, servicos_func
  • cat_servicos: servicos
  • meus_servicos: agendamentos, caixas, clientes, formas_pgto, pagar, produtos, servicos, usuarios
  • servicos: cat_servicos

📌 Detalhamento arquivo a arquivo (raiz + endpoints)

Use esta tabela para localizar rapidamente o arquivo responsável por cada ação.

Arquivo Responsabilidade Operações Tabelas (detecção automática) Parâmetros (GET/POST) Retorno
cat_servicos.php Página principal do módulo (UI). Geralmente carrega JS e aponta para a subpasta do módulo. HTML/String
cat_servicos/excluir.php Exclusão/remoção (DELETE) via POST. DELETE, SELECT servicos id HTML/String
cat_servicos/listar.php Listagem (retorna HTML para tabela/grade via AJAX). SELECT servicos HTML/String
cat_servicos/salvar.php Ação de gravação (INSERT/UPDATE) via POST. INSERT, SELECT, UPDATE id, nome HTML/String
meus_servicos.php Página principal do módulo (UI). Geralmente carrega JS e aponta para a subpasta do módulo. SELECT clientes, formas_pgto, servicos, servicos_func HTML/String
meus_servicos/baixar.php Ação de fluxo (baixa/fechamento/ação crítica) com validação e update. INSERT, SELECT, UPDATE agendamentos, caixas, clientes, formas_pgto, pagar, servicos… id HTML/String
meus_servicos/excluir.php Exclusão/remoção (DELETE) via POST. DELETE, SELECT, UPDATE produtos id HTML/String
meus_servicos/listar.php Listagem (retorna HTML para tabela/grade via AJAX). SELECT clientes, usuarios dataFinal, dataInicial, status HTML/String
meus_servicos/salvar.php Ação de gravação (INSERT/UPDATE) via POST. INSERT, SELECT, UPDATE caixas, clientes, formas_pgto, pagar, servicos, usuarios cliente, data_pgto, data_pgto_restante, id_usuario, obs, pgto, pgto_restante, servico… HTML/String
servicos.php Página principal do módulo (UI). Geralmente carrega JS e aponta para a subpasta do módulo. SELECT cat_servicos HTML/String
servicos/excluir.php Exclusão/remoção (DELETE) via POST. DELETE, SELECT id HTML/String
servicos/listar.php Listagem (retorna HTML para tabela/grade via AJAX). SELECT cat_servicos HTML/String
servicos/mudar-status.php Altera/consulta status (geralmente UPDATE e retorno simples). UPDATE acao, id HTML/String
servicos/salvar.php Ação de gravação (INSERT/UPDATE) via POST. INSERT, SELECT, UPDATE categoria, comissao, dias_retorno, id, nome, tempo, valor HTML/String
servicos_func.php Página principal do módulo (UI). Geralmente carrega JS e aponta para a subpasta do módulo. SELECT servicos HTML/String

⚙️ Fluxos e contratos (frontend ↔ backend)

  • Padrão do painel: as páginas da raiz carregam o HTML base e o JS injeta listagens via listar.php na subpasta do módulo.
  • Os endpoints de ação (salvar.php, excluir.php, baixar.php) costumam retornar strings (não JSON) que o JS compara para exibir sucesso/erro.
  • Ao alterar esses retornos, revise o JS do painel para não quebrar o contrato (mensagens “exatas”).

Baixa de serviço (meus_servicos)

  • meus_servicos/baixar.php executa lógica de fluxo: além de atualizar registros do serviço, também interage com o financeiro/caixa.
  • Trate como fluxo crítico: validar permissão, validar sessão, e registrar log (se houver log no projeto).

🔐 Segurança e boas práticas (recomendado)

  • Validação server-side: sempre validar dados recebidos via $_POST/$_GET antes de persistir.
  • Permissões: endpoints que mexem em status/baixa/exclusão devem checar perfil/grupo (se o projeto usar módulo de acessos).
  • Multi-tenant: garanta que as consultas usem a chave correta (ex.: id_empresa / id_usuario) além do id do registro.
  • Consistência financeira: em rotinas de baixa, use transação (BEGIN/COMMIT) se houver múltiplos inserts/updates relacionados.
  • Retorno padronizado: prefira retornar um padrão estável (string “OK” ou JSON), mantendo compatibilidade com JS legado.

✅ Checklist para manutenção

  • Confirmar que verificar.php está sendo incluído nas páginas da raiz e impede acesso sem sessão.
  • Validar que o módulo de funcionarios existe e contém: funcionarios/inserir-servico.php, funcionarios/listar-servicos.php, funcionarios/excluir-servico.php.
  • Revisar o arquivo servicos/error_log: indica erro em runtime; ideal mover para log central e manter fora do pacote público.
  • Garantir índices no banco para chaves de vínculo (ex.: serviço↔categoria, serviço↔funcionário), evitando listagens lentas.