/** * ====================================================================================================== * Obtendo a base de dados de execuções orçamentária * * Variáveis: * $metodo => método utilizado para obter os dados que consta do arquivo include.soap.php * $agrupamento => label para exibição * $destino => tabela no banco de dados onde são armazenados os dados obtidos * $dados => array com valores de entrada, composto por: * 'exercicio' => ano de exercício * 'programas' => array com todos os dados dos programas que serão consultados * */ function obterExecucoesOrcamentarias($metodo, $agrupamento, $destino, $dados) { $obtendo = "Obtendo execuções orçamentárias agrupadas por {$agrupamento} para o exercício de {$dados['exercicio']}."; agora(str_repeat("-", strlen($obtendo))); agora($obtendo); agora(str_repeat("-", strlen($obtendo))); limparDadosExecucoesOrcamentarias($destino, $dados['exercicio'], $dados['programas'], "Limpando base de dados das execuções orçamentárias agrupadas por {$agrupamento} para o ano de {$dados['exercicio']}."); $codigoPrograma = 0; foreach ($dados['programas'] as $programa) { if ($codigoPrograma !== $programa['CODIGOPROGRAMA']) { $codigoPrograma = $programa['CODIGOPROGRAMA']; do { $numRegistrosSalvos = 0; $execucoesOrcamentarias = $metodo($codigoPrograma, $dados['exercicio']); if (!$execucoesOrcamentarias['sucesso']) { agora("Houve um problema:"); echo "\n"; echo str_replace("<br>", "\n", $execucoesOrcamentarias['mensagensErro']); echo "\n"; } else { // Caso não tenha sido encontrado nenhum registro o webservice retorna um array com um único elemento de índice 0 e vazio. // Caso tenha sido encontrado apenas um registro o webservice retorna um array com os valores desse registro dentro da chave execucaoOrcamentaria // Se há mais de um registro o webservice retorna execucaoOrcamentaria como sendo um array de arrays if (isset($execucoesOrcamentarias['registros'][0]['execucaoOrcamentaria'])) { foreach ($execucoesOrcamentarias['registros'] as $k => $registrosExecucoesOrcamentarias) { if (isset($registrosExecucoesOrcamentarias['execucaoOrcamentaria']['acao'])) { $execucaoOrcamentaria = $registrosExecucoesOrcamentarias['execucaoOrcamentaria']; $dadosExecucaoOrcamentaria = montandoDadosDaExecucaoOrcamentaria($execucaoOrcamentaria, $dados['exercicio']); salvarDadosSiop($destino, $dadosExecucaoOrcamentaria); $numRegistrosSalvos++; } else { foreach ($registrosExecucoesOrcamentarias as $j => $registros) { foreach ($registros as $execucaoOrcamentaria) { $dadosExecucaoOrcamentaria = montandoDadosDaExecucaoOrcamentaria($execucaoOrcamentaria, $dados['exercicio']); salvarDadosSiop($destino, $dadosExecucaoOrcamentaria); $numRegistrosSalvos++; } } } } } } } while (!$execucoesOrcamentarias['sucesso']); if ($numRegistrosSalvos > 0) { agora("\tSalvados {$numRegistrosSalvos} registro(s) da execução orçamentária agrupadas por {$agrupamento} do programa."); } else { agora("\tExecução orçamentária do programa agrupadas por {$agrupamento} sem registros."); } } reset($programas); } }
reset($objetivos); } } if ($baixar['metas']) { /** * ====================================================================== * Obtendo a base de dados de metas para o ano de exercício repassado * */ agora("Obtendo metas."); limparDadosSiop('metas', "exercicio = '{$exercicio}'", "Limpando base de dados das metas para o ano de {$exercicio}."); $metas = obterTodasMetasPorAnoExercicio($exercicio); if (!$metas['sucesso']) { agora("\tNão foi possível obter os dados das metas:"); echo "\n"; echo str_replace("<br>", "\n", $metas['mensagensErro']); echo "\n"; } else { $numRegistrosMetas = 0; foreach ($metas['registros'] as $meta) { salvarDadosSiop('metas', $meta); $numRegistrosMetas++; } if ($numRegistrosMetas > 0) { agora("Salvadas {$numRegistrosMetas} metas."); } else { agora("Sem metas para serem salvadas."); } reset($metas); } }
agora("Carregando ações obtidos na base SIOP."); $acoesSiop = obterDadosSiop('acoes', "exercicio = {$exercicio}", array('"identificadorUnico"', '"codigoAcao"')); agora("Obtendo planos orçamentários."); limparDadosSiop('planos_orcamentarios', "exercicio = '{$exercicio}'", "Limpando base de dados dos planos orçamentários para o ano de {$exercicio}."); $numTotalRegistrosPlanos = 0; foreach ($acoesSiop as $acaoSiop) { $identificadorUnicoAcao = $acaoSiop['IDENTIFICADORUNICO']; do { $planosOrcamentarios = obterPlanosOrcamentariosPorAcao($exercicio, $identificadorUnicoAcao); if (!$planosOrcamentarios['sucesso']) { agora("\tNão foi possível obter os dados dos planos orçamentários para a ação {$identificadorUnicoAcao}:"); echo "\n"; echo str_replace("<br>", "\n", $planosOrcamentarios['mensagensErro']); echo "\n"; } else { $numRegistrosPlanos = 0; foreach ($planosOrcamentarios['registros'] as $planoOrcamentario) { salvarDadosSiop('planos_orcamentarios', $planoOrcamentario); $numRegistrosPlanos++; $numTotalRegistrosPlanos++; } if ($numRegistrosPlanos > 0) { agora("Salvados {$numRegistrosPlanos} planos orçamentários para a ação {$identificadorUnicoAcao}."); } else { agora("Sem planos orçamentários para a ação {$identificadorUnicoAcao}."); } } } while (!$planosOrcamentarios['sucesso']); } agora("Salvados no total {$numTotalRegistrosPlanos} planos orçamentários."); }
} else { // Caso não tenha sido encontrado nenhum registro o webservice retorna um array com um único elemento de índice 0 e vazio. // Caso tenha sido encontrado apenas um registro o webservice retorna um array com os valores desse registro dentro da chave execucaoOrcamentaria // Se há mais de um registro o webservice retorna execucaoOrcamentaria como sendo um array de arrays if (isset($execucoesOrcamentarias['registros'][0]['execucaoOrcamentaria'])) { foreach ($execucoesOrcamentarias['registros'] as $k => $registrosExecucoesOrcamentarias) { if (isset($registrosExecucoesOrcamentarias['execucaoOrcamentaria']['acao'])) { $execucaoOrcamentaria = $registrosExecucoesOrcamentarias['execucaoOrcamentaria']; $dadosExecucaoOrcamentaria = montandoDadosDaExecucaoOrcamentaria($execucaoOrcamentaria, $exercicio); salvarDadosSiop('execucao_orcamentaria', $dadosExecucaoOrcamentaria); $numRegistrosSalvos++; } else { foreach ($registrosExecucoesOrcamentarias as $j => $registros) { foreach ($registros as $execucaoOrcamentaria) { $dadosExecucaoOrcamentaria = montandoDadosDaExecucaoOrcamentaria($execucaoOrcamentaria, $exercicio); salvarDadosSiop('execucao_orcamentaria', $dadosExecucaoOrcamentaria); $numRegistrosSalvos++; } } } } } } } while (!$execucoesOrcamentarias['sucesso']); if ($numRegistrosSalvos > 0) { agora("\tSalvados {$numRegistrosSalvos} registro(s) da execução orçamentária do programa."); } else { agora("\tExecução orçamentária do programa sem registros."); } } }