--- tags: [ag-music, comissoes, financeiro] created: 2026-02-27 updated: 2026-03-20 parent: "[[AG-Music]]" --- # Sistema de Comissoes - Detalhes Tecnicos ## Tabela: comissao_anual - `professor_id`, `ano_matricula`, `comissao_tipo` (percentual/valor_fixo), `comissao_valor`, `ano_fim_beneficio`, `ativo` - UNIQUE: (`professor_id`, `ano_matricula`, `ativo`) ## Logica de Resolucao `ComissaoAnualModel::resolverComissao()`: 1. Buscar `comissao_anual` WHERE `professor_id` AND `ano_matricula = X` AND `ativo = 1` 2. Se `ano_atual <= ano_fim_beneficio` -> usa essa comissao 3. Se `ano_atual > ano_fim_beneficio` -> tenta `ano_matricula + 1` (recursivo, max 20) 4. Se nao encontra -> retorna null (fallback para `professores.comissao_tipo/valor`) ## Calculo `FinanceiroController::apiCalcularComissoes()`: ``` valorBaseAula = valorMensal / 4 fatorProporcional = duracaoReal / 60 valorAulaProporcional = valorBaseAula * fatorProporcional ``` - Se **percentual**: `comissao = valorAulaProporcional * (comissao_valor / 100)` - Se **valor_fixo**: `comissao = comissao_valor` ## Migrations - `2026-02-27-100000`: Criar `comissao_anual` + coluna `matriculas.ano_matricula` - `2026-02-27-110000`: Migrar dados de `professor_comissoes` para `comissao_anual` ## Arquivos Chave - `app/Models/ComissaoAnualModel.php` - `app/Controllers/FinanceiroController.php` (`apiCalcularComissoes`) - `app/Controllers/ProfessorController.php` (`getComissoes`, `criarComissao`, `editarComissao`, `excluirComissao`) - `app/Views/direcao/professores.php` (UI da aba comissao + JS) ## Ver tambem - [[Comissao Override]] - override por matricula individual - [[AG-Music]] - visao geral do projeto