$idProfessorValido = isset($idProfessor) && (preg_match("/^[0-9]+\$/", $idProfessor) || $idProfessor == -1);
 $descricaoValida = !isset($descricao) || mb_strlen($descricao, 'UTF-8') <= 10000;
 $idProfessorPrimarioValido = isset($idProfessorAdicional) && (preg_match("/^[0-9]+\$/", $idProfessorAdicional) || $idProfessorAdicional == -1);
 $idProfessorSecundarioValido = isset($idProfessorSecundario) && (preg_match("/^[0-9]+\$/", $idProfessorSecundario) || $idProfessorSecundario == -1);
 // checamos se a cidade recebida pertence ao ano recebido e se existe
 if ($dataValida && $idCidadeValido) {
     require_once "entidades/Cidade.php";
     $ano = date("Y", strtotime($data));
     $cidade = new Cidade();
     $cidade->setIdCidade($idCidade);
     $encontrada = $cidade->recebeCidadeId($host, "homeopatias", $usuario, $senhaBD);
     if (!$encontrada) {
         $idCidadeValido = false;
         $mensagem = "Essa cidade não foi encontrada no sistema";
     } else {
         if ($cidade->getAno() != $ano) {
             $idCidadeValido = false;
             $mensagem = "Essa cidade não pertence a esse ano";
         }
     }
 }
 // agora checamos se o professor recebido existe
 if ($idProfessorValido && $idProfessor != -1) {
     require_once "entidades/Administrador.php";
     $admin = new Administrador("");
     $admin->setIdAdmin($idProfessor);
     $encontrado = $admin->recebeAdminId($host, "homeopatias", $usuario, $senhaBD, "professor");
     if (!$encontrado) {
         $idProfessorValido = false;
         $mensagem = "Esse professor não foi encontrado no sistema";
     }
 $etapa = $_POST['etapa-retificacao'];
 $idCidade = $_POST['cidade-retificacao'];
 $idValida = isset($idMatricula) && preg_match("/^[0-9]+\$/", $idMatricula);
 $etapaValida = isset($etapa) && ($etapa == 1 || $etapa == 2 || $etapa == 3 || $etapa == 4);
 $cidadeValida = isset($idCidade);
 // checamos se a cidade recebida é do ano atual
 if ($cidadeValida) {
     require_once "../../entidades/Cidade.php";
     $cidade = new Cidade();
     $cidade->setIdCidade($idCidade);
     $encontrada = $cidade->recebeCidadeId($host, "homeopatias", $usuario, $senhaBD);
     if (!$encontrada) {
         $cidadeValida = false;
         $mensagem = "Essa cidade não foi encontrada no sistema";
     } else {
         if ($cidade->getAno() != date("Y")) {
             $cidadeValida = false;
             $mensagem = "Essa cidade não pertence ao ano atual";
         }
     }
 }
 if ($idValida && $etapaValida && $cidadeValida) {
     // Usamos as TRANSACTIONs do MySql para garantir que caso haja
     // algum erro, as tabelas continuem consistentes
     $conexao->beginTransaction();
     $sql = "DELETE FROM PgtoMensalidade WHERE chaveMatricula = ? AND ano = YEAR(CURDATE())";
     $query = $conexao->prepare($sql);
     $query->bindParam(1, $idMatricula);
     $remocaoMensalidade = $query->execute();
     $sql = "UPDATE Matricula SET etapa = ?, chaveCidade = ? WHERE idMatricula = ?";
     $query = $conexao->prepare($sql);
     echo "\" data-desc=\"";
     echo number_format($pagamentos[$anoPagamento][$i]['desconto'], 2);
     echo "\" data-datapag=\"";
     echo is_null($pagamentos[$anoPagamento][$i]['data']) ? "" : date("Y-m-d", strtotime($pagamentos[$anoPagamento][$i]['data']));
     echo "\" data-metodopag=\"";
     echo $pagamentos[$anoPagamento][$i]['metodo'];
     echo "\"><i class=\"fa fa-pencil\"></i></a></td>";
 }
 echo "</tr><tr>";
 echo "<td style='background-color: #AAA'><b>Gerar boleto</b></td>";
 $valorAcumulado = 0;
 $cidadePag = new Cidade();
 $cidadePag->setIdCidade($idCidadePag);
 $cidadePag->recebeCidadeId($host, "homeopatias", $usuario, $senhaBD);
 $mesInicio = $cidadePag->getMesInicio();
 $anoInicio = $cidadePag->getAno();
 // caso o mês atual esteja no ano após
 // o início das aulas nessa cidade,
 // somamos 12 meses, para facilitar os cálculos
 $mesCalculo = date("m");
 if (date("Y") > $anoInicio) {
     $mesCalculo += 12;
 }
 $parcelaAtual = $mesCalculo - $mesInicio + 1;
 if ($parcelaAtual > 11) {
     $parcelaAtual = 11;
 }
 for ($i = 0; $i < 12; $i++) {
     if (!$pagamentos[$anoPagamento][$i]['fechado'] && $pagamentos[$anoPagamento][$i]['pago'] > 0) {
         $valorPagar = $pagamentos[$anoPagamento][$i]['valor'] - $pagamentos[$anoPagamento][$i]['valor'] * ($pagamentos[$anoPagamento][$i]['desconto'] / 100) - $pagamentos[$anoPagamento][$i]['pago'];
         $valorAcumulado += $valorPagar;