Pular para o conteúdo principal

Feature: Cancelamento de Matricula

Visao geral

O cancelamento de matricula ocorre por tres vias principais no backend:

  1. solicitacao de cancelamento (marca pendencia),
  2. cancelamento direto pelo participante,
  3. processamento automatico diario de pendencias (cron), alem de ajustes via admin.

Atores

  • Participante.
  • Facilitador/administrador.
  • Jobs/cron.

Pre-condicoes

  • Matricula existente no CPT students.
  • Usuario autenticado para rotas com sessao/token (exceto observacao de pendencia na rota de solicitacao).
  • Para cancelamento automatico: ciclo progressivo ativo e solicitacao pendente.

Fluxo principal

  1. Participante solicita cancelamento em /enrollment/{enrollment_id}/request-cancellation.
    • Atualiza is_cancel_requested, cancel_request_date, cancel_requested_by.
    • Gera registro em cancellation_logs. Fonte: we-dhedalos/functions/rest/classes.php:2693-2763.
  2. Participante pode cancelar diretamente em /enroll/cancel/{enrollment_id}.
    • Atualiza is_enroll_canceled, cancel_description, cancel_date. Fonte: we-dhedalos/functions/rest/course/enroll.php:297-372.
  3. Cron diario processa pendencias (is_cancel_requested=1) em ciclos progressivos ativos e aplica cancelamento. Fonte: we-dhedalos/functions/utils/auto_cancel_enrollments_cron.php:71-234.

Fluxos alternativos

  • Matricula inexistente: 404 (we-dhedalos/functions/rest/classes.php:2697-2703, we-dhedalos/functions/rest/course/enroll.php:315-317).
  • Ja cancelada ou ja solicitada: 400 (we-dhedalos/functions/rest/classes.php:2706-2721).
  • Participante tentando cancelar matricula de outro usuario: 403 (we-dhedalos/functions/rest/course/enroll.php:321-323).
  • DELETE de matricula por ID (/enroll/{enroll_id}) so e registrado em ambientes piloto/homolog. Fonte: we-dhedalos/functions/rest/course/disenroll.php:11-19.

Regras de negocio

  • Status exibido no admin de inscricoes: Ativa, Cancelamento Solicitado, Cancelada. Fonte: we-dhedalos/functions/post_types/students.php:107-117.
  • Ao salvar cancelamento via ACF/admin, motivo e obrigatorio para preencher cancel_date automaticamente. Fonte: we-dhedalos/functions/utils/update_cancel_date.php:16-24.
  • canceled_by e preenchido automaticamente em save de students cancelado. Fonte: we-dhedalos/functions/utils/add_cancellation_author.php:8-14.
  • Solicitacoes pendentes podem ser processadas automaticamente e gerar log cancelamento_automatico. Fonte: we-dhedalos/functions/utils/auto_cancel_enrollments_cron.php:206-226.

Estados possiveis

  • is_enroll_canceled = 0|1.
  • is_cancel_requested = 0|1.
  • Estado funcional da matricula:
    • Ativa
    • Cancelamento Solicitado
    • Cancelada

Endpoints envolvidos

  • OpenAPI POST /dhedalos/v1/enrollment/{enrollment_id}/request-cancellation
  • OpenAPI POST /dhedalos/v1/enroll/cancel/{enrollment_id}
  • OpenAPI DELETE /dhedalos/v1/enroll/{enroll_id}

Tabelas/CPTs afetados

Pendencias/duvidas

  • A rota de solicitacao de cancelamento usa permission_callback => __return_true (we-dhedalos/functions/rest/classes.php:427), sem check explicito de autenticacao/autorizacao no registro da rota.
  • O cron de cancelamento automatico considera ciclos retornados por get_active_progressive_cycles, isto e, dependentes de enable_certificacao_progressiva.