Feature: Cancelamento de Matricula
Visao geral
O cancelamento de matricula ocorre por tres vias principais no backend:
- solicitacao de cancelamento (marca pendencia),
- cancelamento direto pelo participante,
- 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
- 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.
- Atualiza
- 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.
- Atualiza
- 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 ambientespiloto/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_dateautomaticamente. Fonte:we-dhedalos/functions/utils/update_cancel_date.php:16-24. canceled_bye preenchido automaticamente em save destudentscancelado. 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:
AtivaCancelamento SolicitadoCancelada
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 deenable_certificacao_progressiva.