示例#1
0
 public function processa_analise()
 {
     $data = $this->getParametroVisao();
     $data['page'] = 'home';
     $data['tema'] != '' ? $this->load->setTheme($data['tema']) : '';
     $data['msg'] = $this->getMsg();
     $data['abaAtiva'] = 30;
     $data['abaPage'] = 'processa_analise';
     $data['js'] = array(0 => 'js/modules/financeiro/financeiro.js');
     $sqlFinanceiro = new SqlFinanceiro();
     $ano_letivo = $data['ano_letivo'];
     $data['turmas'] = $sqlFinanceiro->get_turmas_gerais($ano_letivo);
     if ($_SERVER['REQUEST_METHOD'] == "POST") {
         try {
             $turma = $this->input->post('pk_turma');
             $ano = $data['ano_letivo'];
             //consulta receita bruta da turma para fazer processamento
             $data['receita_turma'] = $sqlFinanceiro->listar_receita_turma_id($turma, $ano);
             $totalReceita = array();
             //processa registros da receita da turma
             foreach ($data['receita_turma']['registros'] as $row) {
                 //calculo desconto mensalidade
                 $percentual = $row[9] / 100;
                 if ($row[10] == 1) {
                     $mensalidade = $row[6];
                 } elseif ($row[10] == 2) {
                     $mensalidade = $row[7];
                 } elseif ($row[10] == 3) {
                     $mensalidade = $row[8];
                 } else {
                     $mensalidade = null;
                     // $mensalidade = $row[6];
                 }
                 $desconto = $percentual * $mensalidade;
                 $mensalidadeEfetiva = $mensalidade - $desconto;
                 array_push($totalReceita, $mensalidadeEfetiva);
             }
             //armazena total de receita em variável
             $totalReceitaMensalidades = array_sum($totalReceita);
             //consulta parametros de custo por professor na turma
             $data['custo_professores'] = $sqlFinanceiro->listar_custo_professores_id($turma, $ano);
             $totalCustoMensalBase = array();
             $totalCustoMensalMedio = array();
             foreach ($data['custo_professores']['registros'] as $row) {
                 //verifica titulacao do professor para definir gratificação por titulação
                 if ($row[5] == null) {
                     $grat_titulacao = 0;
                 } elseif ($row[5] == 1) {
                     $grat_titulacao = $row[9];
                 } elseif ($row[5] == 2) {
                     $grat_titulacao = $row[10];
                 } elseif ($row[5] == 3) {
                     $grat_titulacao = $row[11];
                 } elseif ($row[5] == 4) {
                     $grat_titulacao = $row[12];
                 }
                 // Cálculo de custo mensal (Base)
                 //soma adicionais de pesquisa + titulacao + correcao de prova
                 $gratificacaoTotal = $grat_titulacao + $row[13] + $row[14];
                 $ajusteGratificacao = $gratificacaoTotal / 100;
                 //cria variavel de horabase
                 $horaBase = $row[7];
                 $custo = ($horaBase + $row[8]) * (1 + $ajusteGratificacao);
                 //multiplica pela carga horária
                 $horasCarga = $custo * $row[2];
                 //parametro para multiplicacao
                 $mensal = 5.25;
                 //cria variavel com o valor mensal
                 $valorMensal = $horasCarga * $mensal;
                 //acrescenta gratificacao na serie (se houver)
                 $custoMensalBase = $valorMensal;
                 // Cálculo de custo mensal (Médio)
                 //calculo 13º + Férias
                 $custoDecimoNoMes = $custoMensalBase * 1 / 12;
                 $custoFeriasNoMes = $custoMensalBase * 1 / 12;
                 $custoTercoDeFeriasNoMes = $custoFeriasNoMes * 1 / 3;
                 $custoProvisaoDecimoEFerias = $custoDecimoNoMes + $custoFeriasNoMes + $custoTercoDeFeriasNoMes;
                 //calculo inss + fgts
                 $inss = $row[15];
                 $fgts = $row[16];
                 //custoIF = 1 + ((INSS + FGTS) / 100)
                 $custoIF = 1 + ($inss + $fgts) / 100;
                 $custoMensalComImpostos = $custoMensalBase * $custoIF;
                 $custoMensalTotal = $custoMensalComImpostos + $custoProvisaoDecimoEFerias;
                 array_push($totalCustoMensalMedio, money_format('%.2n', round($custoMensalTotal)));
                 array_push($totalCustoMensalBase, money_format('%.2n', round($custoMensalBase)));
             }
             $totalMensalBase = array_sum($totalCustoMensalBase);
             $totalMensalMedio = array_sum($totalCustoMensalMedio);
             //verifica se já existe uma análise na tabela relacionada a turma atual
             $data['verifica_consolidacao'] = $sqlFinanceiro->verifica_analise($turma);
             if ($data['verifica_consolidacao'] == null) {
                 //consolida dados em tabela do módulo financeiro
                 $data['consolida'] = $sqlFinanceiro->consolida_analise($turma, $totalReceitaMensalidades, $totalMensalMedio);
                 $data['status'] = array('0' => '1', '1' => 'Processado com sucesso!', '2' => '0');
                 //converte array em json para retornar os dados
                 $saida = json_encode($data['status']);
                 //retorna os dados para o javascript financeiro.js
                 echo $saida;
             } else {
                 //atualiza dados consolidados
                 $data['consolida'] = $sqlFinanceiro->atualiza_analise($turma, $totalReceitaMensalidades, $totalMensalMedio);
                 $data['status'] = array('0' => '1', '1' => 'Processado com sucesso!', '2' => '0');
                 //converte array em json para retornar os dados
                 $saida = json_encode($data['status']);
                 //retorna os dados para o javascript financeiro.js
                 echo $saida;
             }
         } catch (Exception $e) {
             $msg = '<p class="alert erro">' . $e->getMessage() . '</p>';
         }
     }
     $this->load->view($this->load->getUrlTema(), $data);
     //$this->output->enable_profiler(TRUE);
 }