function __construct()
 {
     /**
      * Declaramos as variáveis da classe de acordo com o que está configurado no arquivo config.mail.php
      */
     include_once 'libs/config.mail.php';
     $this->sUserMail = $sUser;
     $this->sPassMail = $sPass;
     $this->sHostMail = $sHost;
     $this->sPortMail = (int) $sPort;
     $this->sClass = (int) $sClass;
     $oConfigDBpref = db_utils::getDao("configdbpref");
     $rsConfigDBpref = $oConfigDBpref->sql_record($oConfigDBpref->sql_query_file(db_getsession('DB_instit'), "w13_emailadmin"));
     $this->sEmailFrom = db_utils::fieldsMemory($rsConfigDBpref, 0)->w13_emailadmin;
 }
function db_rodape()
{
    require_once "libs/db_utils.php";
    require_once "libs/JSON.php";
    $oJSON = new Services_JSON();
    $sRodape = "<center>";
    $oDaoDBConfig = db_utils::getDao("db_config");
    $oInstituicao = $oDaoDBConfig->getParametrosInstituicao();
    if (!empty($oInstituicao->uf)) {
        $oEstados = $oJSON->decode(file_get_contents('imagens/estados/estados.json'));
        $sSiglaEstado = strtolower($oInstituicao->uf);
        if (!empty($oEstados->{$sSiglaEstado})) {
            $oEstado = $oEstados->{$sSiglaEstado};
            if (file_exists($oEstado->sCaminhoImagem)) {
                $sRodape .= "\t<a target='_blank' href='{$oEstado->sUrl}' style='margin-right:20px;text-decoration:none;'>           ";
                $sRodape .= "  \t<img src='{$oEstado->sCaminhoImagem}' title='{$oEstado->sTextoAlternativo}' width='37' height='18'> ";
                $sRodape .= " </a>                         ";
            }
        }
    }
    if (file_exists('imagens/gov_br.jpg')) {
        $sRodape .= "\t<a target='_blank'  href='http://www.brasil.gov.br' style='margin-right:20px;text-decoration:none;'>                            ";
        $sRodape .= "\t\t<img src='imagens/gov_br.jpg' width='69' height='18'>                                                                         ";
        $sRodape .= "  </a>                                                                                                                           ";
    }
    if (file_exists('imagens/adobe.gif')) {
        $sRodape .= "\t<a target='_blank'  href='http://www.adobe.com/products/acrobat/readstep2.html' style='margin-right:20px;text-decoration:none;'>";
        $sRodape .= "\t\t<img src='imagens/adobe.gif'>                                                                                                 ";
        $sRodape .= "\t</a>                                                                                                                            ";
    }
    $sRodape .= "  <font style='margin-right:20px;'>                                                                                              ";
    $sRodape .= "\t\t<br /><br />                                                                                                                  ";
    $sRodape .= "\t\tcopyright " . date('Y') . " &copy;                                                                                            ";
    $sRodape .= "\t  <a target='_blank' href='http://www.dbseller.com.br'>www.dbseller.com.br </a>                                                 ";
    $sRodape .= "  </font>                                                                                                                        ";
    $sRodape .= "</center>                                                                                                                        ";
    echo $sRodape;
}
 /**
  * Anulaçao do debito, já efetuando o processamento do cancelamento
  *
  * @param boolean $cancdebitosissplan se a anulação é de uma planilha de retencao;
  */
 function incluir_cancelamento($cancdebitosissplan = true)
 {
     // $cancdebitosissplan = Se grava na cancdebitosissplan...true: grava false: não grava
     //gravar na cancdebitos, cancdebitosreg, cancdebitosproc, cancdebitosprocreg
     $erro = false;
     // inclui cancdebitos
     $this->incluir(null);
     if ($this->erro_status == "0") {
         echo $this->erro_msg;
         $erro = true;
         //echo"<br>erro na cancdebitos".$this->erro_msg;
     }
     $codigo = $this->k20_codigo;
     if ($cancdebitosissplan == true) {
         // inclui cancdebitosissplan
         $clcancdebitosissplan = db_utils::getDao("cancdebitosissplan");
         $clcancdebitosissplan->q78_cancdebitos = $codigo;
         $clcancdebitosissplan->q78_issplan = $this->planilha;
         $clcancdebitosissplan->incluir(null);
         if ($clcancdebitosissplan->erro_status == "0") {
             $erro = true;
             $this->erro_msg = "planilha" . $clcancdebitosissplan->erro_msg;
             //echo "<br> não incluiu na cancdebitosissplan ".$this->erro_msg;
             $this->erro_status = "0";
         }
     }
     // inclui cancdebitosproc
     $clcancdebitosproc = db_utils::getDao("cancdebitosproc");
     $clcancdebitosproc->k23_data = $this->k20_data;
     $clcancdebitosproc->k23_hora = $this->k20_hora;
     $clcancdebitosproc->k23_usuario = $this->usuario;
     $clcancdebitosproc->k23_cancdebitostipo = 1;
     $clcancdebitosproc->k23_obs = $this->k21_obs;
     $clcancdebitosproc->incluir(null);
     if ($clcancdebitosproc->erro_status == "0") {
         $erro = true;
         $this->erro_msg = "deb prtoc" . $clcancdebitosproc->erro_msg;
         //echo "<br> não incluiu na cancdebitosproc ".$this->erro_msg;
         $this->erro_status = "0";
     }
     //echo "<br> cancdebitosproc = ".$clcancdebitosproc->k23_codigo;
     $clcancdebitosprocreg = db_utils::getDao("cancdebitosprocreg");
     $clcancdebitosreg = db_utils::getDao("cancdebitosreg");
     $sqlarrecad = "select k00_receit from arrecad where k00_numpre = " . $this->numpre . " and k00_numpar=" . $this->numpar;
     //echo "<br>".$sqlarrecad;
     $resultarrecad = db_query($sqlarrecad);
     $linhasarrecad = pg_num_rows($resultarrecad);
     if ($linhasarrecad > 0) {
         for ($i = 0; $i < $linhasarrecad; $i++) {
             $k00_receit = pg_result($resultarrecad, $i, "k00_receit");
             $clcancdebitosreg->k21_codigo = $codigo;
             $clcancdebitosreg->k21_numpre = $this->numpre;
             $clcancdebitosreg->k21_numpar = $this->numpar;
             $clcancdebitosreg->k21_receit = $k00_receit;
             $clcancdebitosreg->k21_data = $this->k20_data;
             $clcancdebitosreg->k21_hora = $this->k20_hora;
             $clcancdebitosreg->k21_obs = $this->k21_obs;
             $clcancdebitosreg->incluir(null);
             if ($clcancdebitosreg->erro_status == "0") {
                 $erro = true;
                 $this->erro_msg = "debitos registros" . $clcancdebitosreg->erro_msg;
                 //echo "<br> não incluiu na cancdebitosreg ".$this->erro_msg;
                 $this->erro_status = "0";
             }
             if ($erro == false) {
                 $resultdebito = debitos_numpre($this->numpre, 0, $this->tipo, strtotime(date("Y-m-d")), date("Y"));
                 $linhasdebito = pg_num_rows($resultdebito);
                 $vlrhis = pg_result($resultdebito, 0, "vlrhis");
                 $vlrcor = pg_result($resultdebito, 0, "vlrcor");
                 $vlrjuros = pg_result($resultdebito, 0, "vlrjuros");
                 $vlrmulta = pg_result($resultdebito, 0, "vlrmulta");
                 $vlrdesconto = pg_result($resultdebito, 0, "vlrdesconto");
                 $clcancdebitosprocreg->k24_codigo = $clcancdebitosproc->k23_codigo;
                 $clcancdebitosprocreg->k24_cancdebitosreg = $clcancdebitosreg->k21_sequencia;
                 $clcancdebitosprocreg->k24_vlrhis = $vlrhis;
                 $clcancdebitosprocreg->k24_vlrcor = $vlrcor;
                 $clcancdebitosprocreg->k24_juros = $vlrjuros;
                 $clcancdebitosprocreg->k24_multa = $vlrmulta;
                 $clcancdebitosprocreg->k24_desconto = $vlrdesconto;
                 $clcancdebitosprocreg->incluir(null);
                 if ($clcancdebitosprocreg->erro_status == "0") {
                     $erro = true;
                     $this->erro_msg = "regitors prco" . $clcancdebitosprocreg->erro_msg;
                     //echo "<br> não incluiu na cancdebitosprocreg ".$this->erro_msg;
                     $this->erro_status = "0";
                 }
             }
         }
     } else {
         $this->erro_msg = "Não encontrou registros no arrecad.";
     }
 }
 function processaSimulacao()
 {
     $aRetorno = array();
     $oDaoCadVenc = db_utils::getDao("cadvenc");
     $oDadosTipoCalculo = $this->processaAtividadeTipoCalculo();
     foreach ($oDadosTipoCalculo as $oDadosCalculo) {
         $sMsgLog = "----------------------------------------------------------------------------------------------<br>";
         $sMsgLog .= "Processando Calculo ...: {$oDadosCalculo->iCalculo} - {$oDadosCalculo->sCalculoDescricao} <br><br>";
         $sMsgLog .= "Tipo de Calculo .......: {$oDadosCalculo->iTipoCalculo} - {$oDadosCalculo->sTipoCalculoDescricao} <br>";
         $sMsgLog .= "Vencimento ............: {$oDadosCalculo->iCodigoVencimento} <br>";
         $this->logCalculo($sMsgLog);
         //Processamos os calculos de variável
         if ($oDadosCalculo->sVariavel == 't') {
             $sMsgLog = "Processando calculo de ISSQN Variável <br>";
             $this->logCalculo($sMsgLog);
             $sSqlVencimentos = $oDaoCadVenc->sql_query($oDadosCalculo->iCodigoVencimento, null, "*", "q82_parc asc");
             $rsVencimentos = $oDaoCadVenc->sql_record($sSqlVencimentos);
             $iQuantidadeVencimentos = $oDaoCadVenc->numrows;
             if ($iQuantidadeVencimentos == 0) {
                 $sMsgLog = "[ Erro 10] - Erro ao buscar dados dos vemcimentos";
                 $this->logCalculo($sMsgLog);
                 throw new Exception($sMsgLog);
             }
             for ($iInd = 0; $iInd < $iQuantidadeVencimentos; $iInd++) {
                 $oDadosVencimento = db_utils::fieldsMemory($rsVencimentos, $iInd);
                 if (substr(str_replace("-", "", $oDadosVencimento->q82_venc), 0, 6) > substr(str_replace("-", "", $this->getDataInicioAtividade()), 0, 6)) {
                     $nValorParcela = $oDadosCalculo->nValorOrigem / $this->nValorInflator;
                     $iParcela = $oDadosVencimento->q82_parc;
                     $dVencimento = $oDadosVencimento->q82_venc;
                     $sMsgLog = "Parcela : {$iParcela} Vencimento : {$dVencimento} Valor: {$nValorParcela}<br>";
                     $this->logCalculo($sMsgLog);
                     $oRetornoCalculo = new stdClass();
                     $oRetornoCalculo->iTipoCalculo = $oDadosCalculo->iTipoCalculo;
                     $oRetornoCalculo->sDescricaoCalculo = $oDadosCalculo->sCalculoDescricao;
                     $oRetornoCalculo->iParcela = $iParcela;
                     $oRetornoCalculo->dVencimento = $dVencimento;
                     $oRetornoCalculo->nValor = $nValorParcela;
                     $aRetorno[] = $oRetornoCalculo;
                 } else {
                     $sMsgLog = "Parcela : {$oDadosVencimento->q82_parc} Vencimento : {$oDadosVencimento->q82_venc} ";
                     $sMsgLog .= "não calculada pois o ano/mes de vencimento é menor ou igual ao ano/mes do início da ativiade {$this->getDataInicioAtividade()} <br>";
                     $this->logCalculo($sMsgLog);
                 }
             }
             $sMsgLog = "FIM DO PROCESSAMENTO DO ISSQN VARIÁVEL";
             $this->logCalculo($sMsgLog);
         } else {
             $sMsgLog = "Processando calculo de ISSQN NÃO VARIÁVEL<br>";
             $this->logCalculo($sMsgLog);
             $bProcessaParcelaVencida = false;
             $bUltimoVencimento = false;
             $iQuantidadeVencimentoProcessar = 0;
             $iVencimentosProcessados = 0;
             $iDiasSomados = 0;
             $dUltimoDiaAno = $this->getAnoCalculo() . "-12-31";
             $sMktimeUltimoDiaAno = mktime(0, 0, 0, "12", "31", $this->getAnoCalculo());
             $sWhere = " cadvencdesc.q92_codigo = {$oDadosCalculo->iCodigoVencimento}                                               ";
             $sWhere .= " and ( case                                                                                                 ";
             $sWhere .= "         when cadvencdesc.q92_formacalcparcvenc = 1                                                         ";
             $sWhere .= "           then                                                                                             ";
             $sWhere .= "             case                                                                                           ";
             $sWhere .= "               when q82_venc >= '{$this->getDataInicioAtividade()}'                                         ";
             $sWhere .= "                 then true                                                                                  ";
             $sWhere .= "               else false                                                                                   ";
             $sWhere .= "             end                                                                                            ";
             $sWhere .= "         when cadvencdesc.q92_formacalcparcvenc = 3                                                         ";
             $sWhere .= "           then q82_venc >= '{$this->getDataCalculo()}' and q82_venc >= '{$this->getDataInicioAtividade()}' ";
             $sWhere .= "         else                                                                                               ";
             $sWhere .= "           case                                                                                             ";
             $sWhere .= "             when cadvenc.q82_calculaparcvenc is true                                                       ";
             $sWhere .= "               then true                                                                                    ";
             $sWhere .= "             else                                                                                           ";
             $sWhere .= "               q82_venc >= '{$this->getDataCalculo()}' and q82_venc >= '{$this->getDataInicioAtividade()}'  ";
             $sWhere .= "           end                                                                                              ";
             $sWhere .= "       end )                                                                                                ";
             $sSqlVerificaVencimentosProcessar = $oDaoCadVenc->sql_query(null, null, "count(*) as qtd", null, $sWhere);
             $rsVerificaVencimentosProcessar = $oDaoCadVenc->sql_record($sSqlVerificaVencimentosProcessar);
             $iQuantidadeVencimentoProcessar = db_utils::fieldsMemory($rsVerificaVencimentosProcessar, 0)->qtd;
             $sCampos = "max(cadvenc.q82_venc)                     as maiorvencimento,\n                    coalesce(max(cadvencdesc.q92_diasvcto),0) as dias,\n                    count(*)                                  as total";
             $sSqlComplementoVencimento = $oDaoCadVenc->sql_query($oDadosCalculo->iCodigoVencimento, null, $sCampos, null);
             $rsComplementoVencimento = $oDaoCadVenc->sql_record($sSqlComplementoVencimento);
             $dMaiorVencimento = db_utils::fieldsMemory($rsComplementoVencimento, 0)->maiorvencimento;
             $iDiasParaVencimento = db_utils::fieldsMemory($rsComplementoVencimento, 0)->dias;
             $iTotalVencimentos = db_utils::fieldsMemory($rsComplementoVencimento, 0)->total;
             $sSqlVencimentos = $oDaoCadVenc->sql_query($oDadosCalculo->iCodigoVencimento, null, "*", "q82_parc asc");
             $rsVencimentos = $oDaoCadVenc->sql_record($sSqlVencimentos);
             $iQuantidadeVencimentos = $oDaoCadVenc->numrows;
             if ($iQuantidadeVencimentos == 0) {
                 $sMsgLog = "[ Erro 10] - Erro ao buscar dados dos vemcimentos";
                 $this->logCalculo($sMsgLog);
                 throw new Exception($sMsgLog);
             }
             for ($iInd = 0; $iInd < $iQuantidadeVencimentos; $iInd++) {
                 $oDadosVencimento = db_utils::fieldsMemory($rsVencimentos, $iInd);
                 $sMsgLog = "Processando Vencimento {$oDadosVencimento->q82_venc} Parcela: {$oDadosVencimento->q82_parc} <br>";
                 $this->logCalculo($sMsgLog);
                 //Guardar o vencimento atual do cadvenc
                 $dVencimento = $oDadosVencimento->q82_venc;
                 if ($dVencimento == "") {
                     $dVencimento = $this->getDataCalculo();
                 }
                 $bProcessaParcela = true;
                 if ($iQuantidadeVencimentoProcessar == 0) {
                     if ($iDiasParaVencimento > 0) {
                         $aDataCalculo = explode("-", $this->getDataCalculo());
                         $dVencimento = date("Y-m-d", mktime(0, 0, 0, $aDataCalculo[1], $aDataCalculo[2] + $iDiasParaVencimento, $aDataCalculo[0]));
                     } else {
                         $dVencimento = $dUltimoDiaAno;
                     }
                     $sMsgLog = "Trocou o vencimento para : {$dVencimento}";
                     $this->logCalculo($sMsgLog);
                 }
                 /*
                  * Verificamos se será gerada parcela vencida
                  */
                 if ($oDadosVencimento->q92_formacalcparcvenc == 1) {
                     $bProcessaParcelaVencida = true;
                 } else {
                     if ($oDadosVencimento->q92_formacalcparcvenc == 3) {
                         if ($oDadosVencimento->q82_venc >= $this->getDataCalculo() && $oDadosVencimento->q82_venc <= $dUltimoDiaAno) {
                             $bProcessaParcelaVencida = true;
                         }
                     } else {
                         if ($oDadosVencimento->q82_calculaparcvenc == "t") {
                             $bProcessaParcelaVencida = true;
                         } else {
                             if ($oDadosVencimento->q82_venc >= $this->getDataCalculo() && $oDadosVencimento->q82_venc <= $dUltimoDiaAno) {
                                 $bProcessaParcelaVencida = true;
                             }
                         }
                     }
                 }
                 $aVencimento = explode("-", $dVencimento);
                 $sMktimeVencimento = mktime(0, 0, 0, $aVencimento[1], $aVencimento[2], $aVencimento[0]);
                 $aMaiorVencimento = explode("-", $dMaiorVencimento);
                 $sMktimeMaiorVencimento = mktime(0, 0, 0, $aMaiorVencimento[1], $aMaiorVencimento[2], $aMaiorVencimento[0]);
                 $aDataInicioAtividade = explode("-", $this->getDataInicioAtividade());
                 $sMktimeDataInicioAtividade = mktime(0, 0, 0, $aDataInicioAtividade[1], $aDataInicioAtividade[2], $aDataInicioAtividade[0]);
                 $aDataCalculo = explode("-", $this->getDataCalculo());
                 $sMktimeDataCalculo = mktime(0, 0, 0, $aDataCalculo[1], $aDataCalculo[2], $aDataCalculo[0]);
                 if ($sMktimeVencimento > $sMktimeMaiorVencimento) {
                     $sMsgLog = "Vencimento do cadastro de vencimentos maior que o maximo vencimento, pasando bUltVenc para true";
                     $this->logCalculo($sMsgLog);
                     $bUltimoVencimento = true;
                 }
                 if ($this->getAnoInicioAtividade() != $this->getAnoCalculo()) {
                     $sMsgLog = "Ano de inicio diferente do atual";
                     $this->logCalculo($sMsgLog);
                     $bProcessaParcela = true;
                 } else {
                     if ($sMktimeVencimento >= $sMktimeDataInicioAtividade || $dVencimento == "" || $iQuantidadeVencimentoProcessar == 0 || $bProcessaParcelaVencida == true) {
                         $bProcessaParcela = true;
                     } else {
                         $bProcessaParcela = false;
                     }
                 }
                 if ($sMktimeDataCalculo > $sMktimeVencimento && $bProcessaParcelaVencida == false) {
                     $sMsgLog = "Inicio maior que data de vencimento e processar parcelas vencidas NAO";
                     $this->logCalculo($sMsgLog);
                     $bProcessaParcela = false;
                 }
                 if ($sMktimeDataInicioAtividade > $sMktimeVencimento && $bUltimoVencimento == false && $iTotalVencimentos != $iVencimentosProcessados) {
                     $bProcessaParcela = false;
                 }
                 if ($bProcessaParcela == true) {
                     $iVencimentosProcessados++;
                     if ($iQuantidadeVencimentoProcessar == 0) {
                         $nPercentualParcela = 100;
                     } else {
                         if ($oDadosCalculo->sTipoProporcionalidade == "D") {
                             $dVencimentoCalculado = $dVencimento;
                             if ($bUltimoVencimento == true || $sMktimeVencimento == $sMktimeMaiorVencimento) {
                                 $dVencimentoCalculado = $dUltimoDiaAno;
                                 $dMaiorVencimento = $dVencimentoCalculado;
                                 $aMaiorVencimento = explode("-", $dMaiorVencimento);
                                 $sMktimeMaiorVencimento = mktime(0, 0, 0, $aMaiorVencimento[1], $aMaiorVencimento[2], $aMaiorVencimento[0]);
                             }
                             if ($this->getAnoInicioAtividade() < $this->getAnoCalculo()) {
                                 $dInicioAtividadeCalculado = $this->getAnoCalculo() . "-01-01";
                             } else {
                                 $dInicioAtividadeCalculado = $this->getDataInicioAtividade();
                             }
                             $aInicioAtividadeCalculado = explode("-", $dInicioAtividadeCalculado);
                             $sMktimeInicioAtividadeCalculado = mktime(0, 0, 0, $aInicioAtividadeCalculado[1], $aInicioAtividadeCalculado[2], $aInicioAtividadeCalculado[0]);
                             $iDiasInicio = date("d", $sMktimeUltimoDiaAno - $sMktimeDataInicioAtividade) + 1;
                             $iDiasVencimento = date("d", $sMktimeUltimoDiaAno - $sMktimeInicioAtividadeCalculado) + 1 - $iDiasSomados;
                             $iDiasSomados += $iDiasVencimento;
                             $nPercentualParcela = round(100 / $iDiasInicio * $iDiasVencimento, 2);
                         } else {
                             $nPercentualParcela = round(100 / $iQuantidadeVencimentos, 2);
                         }
                     }
                     if ($dVencimento == "" and $this->getAnoInicioAtividade() < $this->getAnoCalculo()) {
                         $dVencimento = $dUltimoDiaAno;
                         if ($iDiasParaVencimento > 0 && $this->getAnoInicioAtividade() == $this->getAnoCalculo()) {
                             $dVencimento = date("Y-m-d", mktime(0, 0, 0, $aDataCalculo[1], $aDataCalculo[2] + $iDiasParaVencimento, $aDataCalculo[0]));
                         }
                     }
                     $nValorParcela = round($oDadosCalculo->nValorIntegral * $nPercentualParcela / 100, 2);
                     $oRetornoCalculo = new stdClass();
                     $oRetornoCalculo->iTipoCalculo = $oDadosCalculo->iTipoCalculo;
                     $oRetornoCalculo->sDescricaoCalculo = $oDadosCalculo->sCalculoDescricao;
                     $oRetornoCalculo->iParcela = $iVencimentosProcessados;
                     $oRetornoCalculo->dVencimento = $dVencimento;
                     $oRetornoCalculo->nValor = $nValorParcela;
                     $aRetorno[] = $oRetornoCalculo;
                     if ($nPercentualParcela == 100) {
                         break;
                     }
                 }
             }
         }
     }
     return $aRetorno;
 }
 /**
  * No construtor já será gerado os abjetos apartir do layout informado
  *
  * @param integer $iLayoutTxt  Código do Cadastro de Layout
  * @param string  $sArquivo    Caminho do Arquivo
  * @param boolean $lUsaSeparador  true para utilizar separador (se houver), ou seja,
  * fazer o explode pelo separador nas linhas. false para não utilizar separador.
  * @param boolean $lProcessarArquivo  true para processar o arquivo diretamente default true
  */
 function __construct($iLayoutTxt = '', $sArquivo = '', $lUsaSeparador = false, $lProcessarArquivo = true, $lUsaChr = false)
 {
     if (trim($iLayoutTxt) == '') {
         throw new Exception('Código do Layout não informado!');
     }
     if (trim($sArquivo) == '') {
         throw new Exception('Caminho do arquivo não informado!');
     }
     $clLayoutTxt = db_utils::getDao("db_layouttxt");
     $this->sCaminhoArquivo = $sArquivo;
     /**
      *  Consulta as propriedades de cada campo das linhas do layout informado 
      */
     $sCamposDadosLayout = " ( select trim(db52_default)                     ";
     $sCamposDadosLayout .= "\t\t\tfrom db_layoutcampos                  \t\t\t";
     $sCamposDadosLayout .= "\t\t where db52_layoutlinha = db51_codigo\t\t\t\t\t";
     $sCamposDadosLayout .= "\t\t\t and db52_ident is true ) as identificador, ";
     $sCamposDadosLayout .= "\tdb52_nome       as nome_campo,         \t\t\t\t\t";
     $sCamposDadosLayout .= " db52_descr      as descricao_campo,             ";
     $sCamposDadosLayout .= "\tdb52_posicao    as posicao_campo,    \t\t\t\t\t\t";
     $sCamposDadosLayout .= "\tdb52_tamanho    as tamanho_campo, \t\t\t\t\t\t\t";
     $sCamposDadosLayout .= "\tdb51_separador  as separador_campo,\t\t\t\t\t\t\t";
     $sCamposDadosLayout .= " db52_obs        as observacao_campo,             ";
     $sCamposDadosLayout .= "\tdb52_ident      as campo_identificador      \t\t";
     $sOrderByDadosLayout = " db51_tipolinha, ";
     $sOrderByDadosLayout .= " identificador,  ";
     $sOrderByDadosLayout .= " db52_posicao    ";
     $sSqlDadosLayout = $clLayoutTxt->sql_query_campos($iLayoutTxt, $sCamposDadosLayout, $sOrderByDadosLayout);
     $rsDadosLayout = $clLayoutTxt->sql_record($sSqlDadosLayout);
     $iLinhasLayout = $clLayoutTxt->numrows;
     if ($iLinhasLayout > 0) {
         /**
          * Para o caso de utilizar separadores para determinar os campos dentro das linhas
          * preciso saber o índice do vetor explodido no separador. Como os dados vêm ordenados
          * pelo tipo de linha e pela posição dentro do tipo de linha, então, a ordem
          * para cada campo dentro de cada tipo de linha já está correta. O índice começa em 0
          * porque os arrays no PHP começam em 0 também.
          * Ex.: 
          * linha: 123|456|78
          * separador: |
          * array explodido: {123, 456, 78}
          * valor da posição 1: 456
          */
         $iIndice = 0;
         /**
          * Variável que identifica a mudança de um tipo de linha para outro
          */
         $sIdentificadorAtual = '';
         for ($iInd = 0; $iInd < $iLinhasLayout; $iInd++) {
             $oDadosLayout = db_utils::fieldsMemory($rsDadosLayout, $iInd);
             /**
              * Verifico se mudou o tipo de linha. Se mudou, zero o índice do campo.
              */
             if ($sIdentificadorAtual != $oDadosLayout->identificador) {
                 $iIndice = 0;
                 $sIdentificadorAtual = $oDadosLayout->identificador;
             }
             /**
              *  Cria um array contendo as propriedades necessárias para 
              *  a localização do campo dentro da linha do arquivo
              */
             $this->aPropriedadesCampos[$oDadosLayout->identificador][$oDadosLayout->nome_campo] = array($oDadosLayout->posicao_campo, $oDadosLayout->tamanho_campo, $oDadosLayout->separador_campo, $iIndice, $oDadosLayout->nome_campo, $oDadosLayout->campo_identificador == 't' ? true : false, $oDadosLayout->descricao_campo, $oDadosLayout->observacao_campo);
             $iTamanhoIdent = strlen($oDadosLayout->identificador);
             $iIndice++;
         }
     }
     if ($lProcessarArquivo) {
         $this->processarArquivo($iTamanhoIdent, $lUsaSeparador, false, $lUsaChr);
     }
 }
 /**
  * Salva os Dados da Nota da Planilha de Retencao 
  * 
  * @access public
  * @return void
  */
 public function salvar()
 {
     if (!db_utils::inTransaction()) {
         throw new Exception("Erro [0] - Não Existe transação ativa");
     }
     $oDaoNotas = db_utils::getDao("issplanit");
     $oDaoNotas->q21_planilha = $this->getCodigoPlanilha();
     //$this->iCodigoPlanilha;
     $oDaoNotas->q21_dataop = $this->getDataOperacao()->getDate();
     //$this->getDatausu();
     $oDaoNotas->q21_horaop = $this->getHoraOperacao();
     //db_hora();
     $oDaoNotas->q21_tipolanc = $this->getTipoLancamento();
     //1;
     $oDaoNotas->q21_retido = $this->isRetido() ? 'true' : 'false';
     //"true";
     $oDaoNotas->q21_status = $this->getStatus();
     //1;
     $oDaoNotas->q21_situacao = $this->getSituacao();
     //"0";
     $oDaoNotas->q21_datanota = $this->getDataNota()->getDate();
     //$oNota->dtNota;
     $oDaoNotas->q21_cnpj = $this->getCNPJ();
     //$oNota->sCnpj;
     $oDaoNotas->q21_serie = $this->getSerie();
     //"";
     $oDaoNotas->q21_nome = $this->getNome();
     //substr($oNota->sNome,0,40);
     $oDaoNotas->q21_nota = $this->getNumeroNota();
     //$oNota->sNumeroNota;
     $oDaoNotas->q21_valorser = $this->getValorServico();
     //$oNota->nValor;
     $oDaoNotas->q21_valor = $this->getValorRetencao();
     //$oNota->nValorTotalRetencao;
     $oDaoNotas->q21_aliq = $this->getAliquota();
     //$oNota-nAliquota;
     $oDaoNotas->q21_valordeducao = $this->getValorDeducao();
     //"{$oNota->nValorDeducao}";
     $oDaoNotas->q21_valorbase = $this->getValorBase();
     //$oNota->nValorBase;
     $oDaoNotas->q21_valorimposto = $this->getValorImposto();
     //$oNota->nValorTotalRetencao;
     $oDaoNotas->q21_servico = $this->getDescricaoServico();
     //"Recolhimento de retencao";
     $oDaoNotas->q21_obs = $this->getObservacoes();
     //"";
     $oDaoNotas->incluir(null);
     if ($oDaoNotas->erro_status == 0) {
         throw new Exception("Erro ao incluir nota na planilha.\n{$oDaoNotas->erro_msg}");
     }
     if (!empty($this->iCodigoNotaLiquidacao)) {
         $oDaoIssPlanOp = db_utils::getDao("issplanitop");
         $oDaoIssPlanOp->q96_issplanit = $this->getCodigoPlanilha();
         $oDaoIssPlanOp->q96_pagordem = $this->getCodigoNotaLiquidacao();
         $oDaoIssPlanOp->incluir(null);
         if ($oDaoIssPlanOp->erro_status == 0) {
             throw new Exception("Erro ao incluir nota na planilha.");
         }
     }
     return true;
 }
 *  junto com este programa; se nao, escreva para a Free Software     
 *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA          
 *  02111-1307, USA.                                                  
 *  
 *  Copia da licenca no diretorio licenca/licenca_en.txt 
 *                                licenca/licenca_pt.txt 
 */
include "libs/db_conecta.php";
include "libs/db_stdlib.php";
include "libs/db_sql.php";
include "libs/db_utils.php";
validaUsuarioLogado();
$aRetorno = array();
parse_str(base64_decode($HTTP_SERVER_VARS["QUERY_STRING"]), $aRetorno);
$iMatric = $aRetorno['iMatric'];
$oRHPessoal = db_utils::getDao('rhpessoal');
$sSqlDadosServidor = "select *,\n                             substr((select * from  db_fxxx(rh02_regist,rh02_anousu,rh02_mesusu,rh02_instit)),210,25) as padraoatual\n\t\t\t\t\t\t\t\t\t\t\t  from rhpessoal\n\t\t\t\t\t\t\t\t\t\t\t       inner join rhpessoalmov    on rh02_anousu                        = " . db_anofolha() . " \n\t\t\t\t\t\t\t\t\t\t\t                                 and rh02_mesusu                        = " . db_mesfolha() . "\n\t\t\t\t\t\t\t\t\t\t\t                                 and rh02_regist                        = rh01_regist\n\t\t\t\t\t\t\t\t\t\t\t       left  join rhlota          on rhlota.r70_codigo                  = rhpessoalmov.rh02_lota\n\t\t\t\t\t\t\t\t\t\t\t                                 and rhlota.r70_instit                  = rhpessoalmov.rh02_instit\n\t\t\t\t\t\t\t\t\t\t\t       left  join rhpesbanco      on rh44_seqpes                        = rhpessoalmov.rh02_seqpes\n\t\t\t\t\t\t\t\t\t\t\t       inner join cgm             on cgm.z01_numcgm                     = rhpessoal.rh01_numcgm\n\t\t\t\t\t\t\t\t\t\t\t       left  join db_cgmruas      on db_cgmruas.z01_numcgm              = cgm.z01_numcgm\n\t\t\t\t\t\t\t\t\t\t\t       left  join ruas            on ruas.j14_codigo                    = db_cgmruas.j14_codigo\n\t\t\t\t\t\t\t\t\t\t\t       left  join ruastipo        on ruastipo.j88_codigo                = ruas.j14_tipo\n\t\t\t\t\t\t\t\t\t\t\t       inner join rhestcivil      on rhestcivil.rh08_estciv             = rhpessoal.rh01_estciv\n\t\t\t\t\t\t\t\t\t\t\t       left  join rhfuncao        on rhfuncao.rh37_funcao               = rhpessoal.rh01_funcao\n\t\t\t\t\t\t\t\t\t\t\t                                 and rhfuncao.rh37_instit               = rhpessoalmov.rh02_instit\n\t\t\t\t\t\t\t\t\t\t\t       left  join rhregime        on rhregime.rh30_codreg               = rhpessoalmov.rh02_codreg\n\t\t\t\t\t\t\t\t\t\t\t                                 and rhregime.rh30_instit               = rhpessoalmov.rh02_instit   \n\t\t\t\t\t\t\t\t\t\t\t       inner join rhinstrucao     on rhinstrucao.rh21_instru            = rhpessoal.rh01_instru\n\t\t\t\t\t\t\t\t\t\t\t       left  join rhpespadrao     on rhpespadrao.rh03_seqpes            = rhpessoalmov.rh02_seqpes \n\t\t\t\t\t\t\t\t\t\t\t       left  join rhpesrescisao   on rh02_seqpes = rh05_seqpes\n\t\t\t\t\t\t\t\t\t\t\t where rhpessoal.rh01_regist = {$iMatric}";
$rsDadosServidor = $oRHPessoal->sql_record($sSqlDadosServidor);
$oDadosServidor = db_utils::fieldsMemory($rsDadosServidor, 0);
?>
<html>
<head>
<title><?php 
echo $w01_titulo;
?>
</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link href="config/estilos.css"        rel="stylesheet" type="text/css">
<link href="config/portalservidor.css" rel="stylesheet" type="text/css">

<script language="JavaScript" src="scripts/scripts.js"></script>
$result = pg_exec("SELECT distinct m_publico,m_arquivo,m_descricao\n                       FROM db_menupref \n                       WHERE m_arquivo = 'digitaouvidoria.php'\n                       ORDER BY m_descricao\n                       ");
db_fieldsmemory($result, 0);
if ($m_publico != 't') {
    if (!session_is_registered("DB_acesso")) {
        echo "<script>location.href='index.php?" . base64_encode('erroscripts=3') . "'</script>";
    }
}
$db_verificaip = db_verifica_ip();
$cl_db_ouvidoria = new cl_db_ouvidoria();
$cl_db_tipo = new cl_db_tipo();
$cl_db_uf = new cl_db_uf();
$cl_db_ouvidoria->rotulo->label();
$clrotulo = new rotulocampo();
$clrotulo->label("w03_tipo");
$ip = $HTTP_SERVER_VARS['REMOTE_ADDR'];
$oConfigDBpref = db_utils::getDao("configdbpref");
$rsConfigDBpref = $oConfigDBpref->sql_record($oConfigDBpref->sql_query_file(db_getsession('DB_instit'), "w13_uploadarquivos"));
$upload_path = db_utils::fieldsMemory($rsConfigDBpref, 0)->w13_uploadarquivos;
mens_help();
db_mensagem("ouvidoria_cab", "ouvidoria_rod");
db_postmemory($HTTP_POST_VARS);
if (isset($HTTP_POST_VARS["confirma"])) {
    $cl_db_ouvidoria->po01_data = date('Y-m-d', db_getsession('DB_datausu'));
    $DB_MSG = "";
    if (!empty($_FILES)) {
        $allowedExts = array("gif", "jpg", "jpeg", "png", "zip", "rar", "doc", "docx", "txt", "pdf");
        $fileTypes = array("image/gif", "image/jpeg", "image/pjpeg", "image/png", "application/x-compressed", "application/x-zip-compressed", "application/zip", "multipart/x-zip", "application/rar", "application/x-rar", "application/x-rar-compressed", "application/msword", "application/vnd.openxmlformats-officedocument.wordprocessingml.document", "text/plain", "application/pdf");
        foreach ($_FILES as $k => $v) {
            if (!empty($_FILES[$k]["name"])) {
                $extension = end(explode(".", $_FILES[$k]["name"]));
                if (in_array($_FILES[$k]["type"], $fileTypes) && $_FILES[$k]["size"] < 5242880 && in_array($extension, $allowedExts)) {
 private function geraLinhaBarra($iNumpre, $iNumpar, $sValor, $sVlrbar, $dDataVenc, $iTercDig)
 {
     $sDataVencimento = str_replace("-", "", $dDataVenc);
     if ($this->iModalidadeConvenio == 1) {
         $sSqlFichaCompensacao = "select * \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t                ";
         $sSqlFichaCompensacao .= "  from fc_fichacompensacao( {$this->iCodConvenio},\t\t\t  ";
         $sSqlFichaCompensacao .= " \t\t\t\t             \t\t    {$iNumpre},\t\t\t\t\t\t\t\t\t\t";
         $sSqlFichaCompensacao .= " \t\t\t\t\t            \t    {$iNumpar},\t\t\t\t\t\t\t\t\t\t";
         $sSqlFichaCompensacao .= " \t\t\t\t\t\t               '{$dDataVenc}',\t\t\t\t\t  \t\t";
         $sSqlFichaCompensacao .= " \t\t\t\t\t\t                {$sValor})\t\t\t\t\t\t\t\t\t\t";
         $rsFichaCompensacao = pg_query($sSqlFichaCompensacao);
         $oFichaCompensacao = db_utils::fieldsMemory($rsFichaCompensacao, 0);
         if ($oFichaCompensacao->erro == 'f') {
             $this->sCodigoBarra = $oFichaCompensacao->codigobarras;
             $this->sLinhaDigitavel = $oFichaCompensacao->linhadigitavel;
             $this->sNossoNumero = $oFichaCompensacao->nossonumero;
             $this->sCampoLivre = $oFichaCompensacao->campolivre;
         } else {
             throw new Exception($oFichaCompensacao->mensagem);
         }
     } else {
         if ($this->iModalidadeConvenio == 2) {
             if ($this->iFormatoVenc == 1) {
                 $sVencBar = $sDataVencimento . '000000';
             } else {
                 if ($this->iFormatoVenc == 2) {
                     $sDataVencimento = substr($sDataVencimento, 6, 2) . substr($sDataVencimento, 4, 2) . substr($sDataVencimento, 2, 2);
                     $sVencBar = $sDataVencimento . '00000000';
                 }
             }
             $sInibar = "8" . $this->sSegmento . $iTercDig;
             $iNumpre = db_numpre($iNumpre, 0) . db_formatar($iNumpar, 's', "0", 3, "e");
             $sSqlFebraban = " select fc_febraban('{$sInibar}'||'{$sVlrbar}'||'" . $this->sConvenioArrecadacao . "'||'" . $sVencBar . "'||'{$iNumpre}')";
             $rsFebraban = pg_query($sSqlFebraban);
             $oFebraban = db_utils::fieldsMemory($rsFebraban, 0);
             if ($oFebraban->fc_febraban == "") {
                 throw new Exception("Erro ao gerar código de barras(2)");
             }
             $this->sCodigoBarra = substr($oFebraban->fc_febraban, 0, strpos($oFebraban->fc_febraban, ','));
             $this->sLinhaDigitavel = substr($oFebraban->fc_febraban, strpos($oFebraban->fc_febraban, ',') + 1);
         } else {
             $this->sCodigoBarra = str_pad($iNumpre, 8, '0', STR_PAD_LEFT) . str_pad($iNumpar, 3, '0', STR_PAD_LEFT);
             $this->sLinhaDigitavel = str_pad($iNumpre, 8, '0', STR_PAD_LEFT) . str_pad($iNumpar, 3, '0', STR_PAD_LEFT);
         }
     }
     /*
      * Verificamos se o numpre é um numpre de recibo
      * Se a condição for verdadeira, inserimos registro do numpre, código de barra e linha digitavel na tabela recibocodbar 
      */
     $sSqlRecibo = "select 1                       ";
     $sSqlRecibo .= "  from recibopaga              ";
     $sSqlRecibo .= " where k00_numnov = {$iNumpre} ";
     $sSqlRecibo .= " union                         ";
     $sSqlRecibo .= "select 1                       ";
     $sSqlRecibo .= "  from recibo                  ";
     $sSqlRecibo .= " where k00_numpre = {$iNumpre} ";
     $rsRecibo = db_query($sSqlRecibo);
     if (pg_num_rows($rsRecibo) > 0) {
         $rsVerificaExistenciaTabela = db_query("select * from pg_class where relname = 'recibocodbar' and relkind = 'r'");
         if (pg_num_rows($rsVerificaExistenciaTabela) > 0) {
             $oDaoReciboCodBar = db_utils::getDao("recibocodbar");
             $oDaoReciboCodBar->k00_numpre = $iNumpre;
             $oDaoReciboCodBar->k00_codbar = $this->sCodigoBarra;
             $oDaoReciboCodBar->k00_linhadigitavel = $this->sLinhaDigitavel;
             $oDaoReciboCodBar->incluir($iNumpre);
             if ($oDaoReciboCodBar->erro_status == "0") {
                 $sMsgErro = "Erro ao incluir registros do numpre na tabela recibocodbar.\\n\\n";
                 $sMsgErro .= "Erro da Classe:\\n";
                 $sMsgErro .= "{$oDaoReciboCodBar->erro_msg}";
                 throw new Exception($sMsgErro);
             }
         }
     }
 }
     if (!empty($oDadosAtendimento->ov10_cidadao)) {
         $sCamposCidadao = "ov02_sequencial as codigo,         ";
         $sCamposCidadao .= "ov02_nome       as nomerequerente, ";
         $sCamposCidadao .= "ov02_cnpjcpf    as cpfcnpj,        ";
         $sCamposCidadao .= "ov02_munic      as municipio,      ";
         $sCamposCidadao .= "ov02_cep        as cep,            ";
         $sCamposCidadao .= "ov02_uf         as estado,         ";
         $sCamposCidadao .= "ov02_endereco   as endereco,       ";
         $sCamposCidadao .= "ov02_numero     as numero,         ";
         $sCamposCidadao .= "ov02_bairro     as bairro,         ";
         $sCamposCidadao .= "ov02_compl      as complemento,    ";
         $sCamposCidadao .= "ov07_numero     as telefone        ";
         $oDaoBuscaCidadao = db_utils::getDao('cidadao');
         $sSqlBuscaDadosCidadao = $oDaoBuscaCidadao->sql_query_file($oDadosAtendimento->ov10_cidadao, null, $sCamposCidadao);
         $rsBuscaDadosCgmCidadao = $oDaoBuscaCidadao->sql_record($sSqlBuscaDadosCidadao);
         $oDaoBuscaCidadaoContato = db_utils::getDao('cidadaotelefone');
         $sSqlBuscaTelefones = $oDaoBuscaCidadaoContato->sql_query_file(null, "*", null, "ov07_cidadao = {$oDadosAtendimento->ov10_cidadao}");
         $rsBuscaTelefones = $oDaoBuscaCidadaoContato->sql_record($sSqlBuscaTelefones);
         $iTotalTelefones = $oDaoBuscaCidadaoContato->numrows;
         $aTelefones = array();
         if ($iTotalTelefones > 0) {
             $aTelefones = db_utils::getCollectionByRecord($rsBuscaTelefones);
         }
     }
 }
 /*
  * dados pessoais do requerente
  */
 if (isset($rsBuscaDadosCgmCidadao) && pg_num_rows($rsBuscaDadosCgmCidadao) > 0) {
     $oResultadoRequerente = db_utils::fieldsMemory($rsBuscaDadosCgmCidadao, 0);
     $oStdDadosRequerente->codigo = $oResultadoRequerente->codigo;
 /**
  * Buscas os Tipos de Debitos pela Origem
  * @param string  $sTipoOrigem 
  *                | M - Matricula
  *                | I - Inscricao
  *                | C - CGM
  *                | N - Numpre
  * @param integer $iChavePesquisa - Numero base para Pesquisa
  * @return stdClass[] Com as Definições dos Tipos de Débito encontrados
  */
 public static function getTiposDebitoByOrigem($sTipoOrigem, $iChavePesquisa, $iInstituicao = null)
 {
     $oDaoArretipo = db_utils::getDao("arretipo");
     if (empty($iInstituicao)) {
         $iInstituicao = db_getsession('DB_instit');
     }
     $sCampos = "distinct                         ";
     $sCampos .= "arretipo.k00_tipo,               ";
     $sCampos .= "arretipo.k03_tipo,               ";
     $sCampos .= "arretipo.k00_descr,              ";
     $sCampos .= "arretipo.k00_marcado,            ";
     $sCampos .= "arretipo.k00_emrec,              ";
     $sCampos .= "arretipo.k00_agnum,              ";
     $sCampos .= "arretipo.k00_agpar,              ";
     switch ($sTipoOrigem) {
         case "M":
             //Matricula
             $sCampos .= "iptubase.j01_numcgm as k00_numcgm";
             $sSqlArretipo = $oDaoArretipo->sql_query_tiposDebitosByMatricula($iChavePesquisa, $iInstituicao, $sCampos);
             break;
         case "I":
             //Inscricao
             $sCampos .= "issbase.q02_numcgm  as k00_numcgm";
             $sSqlArretipo = $oDaoArretipo->sql_query_tiposDebitosByInscricao($iChavePesquisa, $iInstituicao, $sCampos);
             break;
         case "C":
             //CGM
             $sCampos .= "arrenumcgm.k00_numcgm as k00_numcgm";
             $sSqlArretipo = $oDaoArretipo->sql_query_tiposDebitosByCgm($iChavePesquisa, $iInstituicao, $sCampos);
             break;
         case "N":
             //Numpre
             $sCampos .= "arrenumcgm.k00_numcgm as k00_numcgm";
             $sSqlArretipo = $oDaoArretipo->sql_query_tiposDebitosByNumpre($iChavePesquisa, $iInstituicao, $sCampos);
             break;
     }
     $rsTipos = db_query($sSqlArretipo);
     if (!$rsTipos) {
         throw new DBException("Erro ao Buscar dados dos Tipos de Débitos:" . pg_last_error());
     }
     return db_utils::getCollectionByRecord($rsTipos);
 }
 /**
  * Metodo para retornar exercicio da divida, conforme o cadtipo
  * @param  integer $iNumpre
  * @param  integer $iCadTipo
  * @param  integer $iAnoDefult
  * @return integer $iExercicio
  */
 function getExercicioDivida($iNumpre, $iCadTipo, $iAnoDefult)
 {
     $sSqlExercicio = '';
     $iAnoDivida = '';
     switch ($iCadTipo) {
         case 1:
             //iptu           iptunump
             $oDaoIptuNump = db_utils::getDao("iptunump");
             $sSqlExercicio = $oDaoIptuNump->sql_query_file(null, null, "j20_anousu as exercicio", null, "j20_numpre = {$iNumpre}");
             break;
         case 2:
             //iss fixo        isscalc
             require_once "classes/db_isscalc_classe.php";
             $oDaoIssCalc = db_utils::getDao("isscalc");
             $sSqlExercicio = $oDaoIssCalc->sql_query_file(null, null, null, null, $iNumpre, "q01_anousu as exercicio");
             break;
         case 3:
             // iss variavel   issvar
             require_once "classes/db_issvar_classe.php";
             $oDaoIssVar = new cl_issvar();
             $sSqlExercicio = $oDaoIssVar->sql_query_file(null, "q05_ano as exercicio", null, "q05_numpre = {$iNumpre}");
             break;
         case 7:
             //diversos        diversos
             require_once "classes/db_diversos_classe.php";
             $oDaoDiversos = new cl_diversos();
             $sSqlExercicio = $oDaoDiversos->sql_query_file(null, "dv05_exerc as exercicio", null, "dv05_numpre = {$iNumpre}");
             break;
         case 9:
             //alvara          isscalc
             require_once "classes/db_isscalc_classe.php";
             $oDaoIssCalc = db_utils::getDao("isscalc");
             $sSqlExercicio = $oDaoIssCalc->sql_query_file(null, null, null, null, $iNumpre, "q01_anousu as exercicio");
             break;
         case 19:
             //vistorias      vistoria
             require_once "classes/db_vistorianumpre_classe.php";
             $oDaoVistoria = new cl_vistorianumpre();
             $sSqlExercicio = $oDaoVistoria->sql_query(null, "extract (year from y70_data) as exercicio", null, "y69_numpre = {$iNumpre}");
             break;
         default:
             // quando não for nenhum desses casos
             $iAnoDivida = $iAnoDefult;
             break;
     }
     $iAnoDivida = $iAnoDefult;
     if (!empty($sSqlExercicio)) {
         $rsExercicio = $this->sql_record($sSqlExercicio);
         if ($this->numrows > 0) {
             $iAnoDivida = db_utils::fieldsMemory($rsExercicio, 0)->exercicio;
         }
     }
     return $iAnoDivida;
 }
 function anularPlanilha($sMotivo)
 {
     require_once "libs/db_sql.php";
     $clissplananula = db_utils::getDao("issplananula");
     $clissplan = db_utils::getDao("issplan");
     $clarrecad = db_utils::getDao("arrecad");
     $clcancdebitos = db_utils::getDao("cancdebitos");
     $planilha = $this->iCodigoPlanilha;
     $data = date("Y-m-d");
     $hora = date("H:i");
     $ip = db_getsession("DB_ip");
     $usuario = db_getsession("DB_id_usuario");
     if ($usuario == "") {
         $usuario = 1;
     }
     $sql = "select * from issplan where q20_planilha = {$planilha}";
     $result = pg_query($sql);
     $linhas = pg_num_rows($result);
     if ($linhas > 0) {
         $q20_numpre = pg_result($result, 0, "q20_numpre");
     } else {
         throw new Exception("Planilha sem codigo de arrecadação!");
     }
     $sqlerro = false;
     //gravar na issplananula: os dados da anulação
     $clissplananula->q76_planilha = $planilha;
     $clissplananula->q76_data = $data;
     $clissplananula->q76_hora = $hora;
     $clissplananula->q76_motivo = "Planilha anulada DBPref. " . $sMotivo;
     $clissplananula->q76_ip = $ip;
     $clissplananula->q76_id_usuario = $usuario;
     $clissplananula->incluir(null);
     if ($clissplananula->erro_status == 0) {
         $sqlerro = true;
         //die($clissplananula->erro_sql);
         throw new Exception("Erro [1] - {$clissplananula->erro_msg}");
     }
     //alterar a situação da issplan para anulada
     $clissplan->q20_planilha = $planilha;
     $clissplan->q20_situacao = 5;
     $clissplan->alterar($planilha);
     if ($clissplan->erro_status == 0) {
         $sqlerro = true;
         throw new Exception("Erro [2] - {$clissplan->erro_msg}");
     }
     if ($q20_numpre > 0) {
         //gravar na cancdebitos, cancdebitosreg, cancdebitosproc, cancdebitosprocreg
         $sqltipo = "select w10_tipo from db_confplan ";
         $resulttipo = pg_query($sqltipo);
         $linhastipo = pg_num_rows($resulttipo);
         if ($linhastipo > 0) {
             //db_fieldsmemory($resulttipo,0);
             $w10_tipo = pg_result($resulttipo, 0, "w10_tipo");
         } else {
             $sqlerro = true;
             throw new Exception("Deve-se configurar a planilha (db_confplan)");
         }
         $clcancdebitos->k20_descr = "anulação de planilha no dbpref.";
         $clcancdebitos->k20_hora = $hora;
         $clcancdebitos->k20_data = $data;
         $clcancdebitos->k20_usuario = $usuario;
         $clcancdebitos->k20_instit = db_getsession("DB_instit");
         $clcancdebitos->k20_cancdebitostipo = 1;
         $clcancdebitos->numpre = $q20_numpre;
         $clcancdebitos->numpar = 1;
         $clcancdebitos->k21_obs = "Planilha anulada DBPref. " . $sMotivo;
         $clcancdebitos->usuario = $usuario;
         $clcancdebitos->tipo = $w10_tipo;
         $clcancdebitos->planilha = $planilha;
         $clcancdebitos->incluir_cancelamento(true);
         if ($clcancdebitos->erro_status == "0") {
             $sqlerro = true;
             throw new Exception("Erro [3] - {$clcancdebitos->erro_msg}");
         }
         //grava na cancdebitosissplan
         //deletar da arrecad e gravar na arrecant
         $clarrecad->excluir_arrecad_inc_arrecant($q20_numpre, 1, true);
         if ($clarrecad->erro_status == 0) {
             $sqlerro = true;
             $erro_msg = "Erro [4] - {$clarrecad->erro_msg}";
         }
     }
     return $sqlerro;
 }
require_once "libs/db_stdlib.php";
require_once "libs/db_utils.php";
require_once "libs/JSON.php";
require_once "dbforms/db_funcoes.php";
require_once "model/issqn/SimulaCalculoInscricao.model.php";
$oJson = new services_json();
$oRetorno = new stdClass();
$oParam = $oJson->decode(str_replace("\\", "", $_POST["json"]));
$oRetorno->iStatus = 1;
$oRetorno->sMessage = '';
$lErro = false;
switch ($oParam->sExec) {
    case 'simular':
        $oDaoIsssimulacalculo = db_utils::getDao('isssimulacalculo');
        $oDaoIsssimulacalculoatividade = db_utils::getDao('isssimulacalculoatividade');
        $oDaoIsssimulacalculoTipoCalculo = db_utils::getDao('isssimulacalculotipocalculo');
        db_inicio_transacao();
        try {
            $oDaoIsssimulacalculo->q130_cadescrito = $oParam->iEscritorio == "" ? "null" : $oParam->iEscritorio;
            $oDaoIsssimulacalculo->q130_cnpjcpf = $oParam->iCpfCpnj;
            $oDaoIsssimulacalculo->q130_razaosocial = str_replace("x86", "&", $oParam->sRazaoSocial);
            $oDaoIsssimulacalculo->q130_email = $oParam->sEmail;
            $oDaoIsssimulacalculo->q130_logradouro = $oParam->iCodigoLogradouro;
            $oDaoIsssimulacalculo->q130_bairro = $oParam->iCodigoBairro;
            $oDaoIsssimulacalculo->q130_numero = $oParam->iNumero;
            $oDaoIsssimulacalculo->q130_complemento = $oParam->sComplemento;
            $oDaoIsssimulacalculo->q130_zona = $oParam->iZona;
            $oDaoIsssimulacalculo->q130_empregados = $oParam->iNumeroEmpregados;
            $oDaoIsssimulacalculo->q130_area = $oParam->nArea;
            $oDaoIsssimulacalculo->q130_datainicio = $oParam->dDataInicio;
            $oDaoIsssimulacalculo->q130_telefone = $oParam->iTelefone;
function duplicaReceitaaCorrenteLiquida($iAnoUsu, $iCodigoRelatorio)
{
    $iExercAnt = $iAnoUsu - 1;
    $iExercicio = $iAnoUsu;
    $clorcparamelemento = db_utils::getDao("orcparamelemento");
    $clorcparamelemento->o44_anousu = $iExercAnt;
    $clorcparamelemento->o44_codparrel = $iCodigoRelatorio;
    $clorcparamelemento->excluir($iExercAnt, $iCodigoRelatorio);
    // Inclui elemento no exercício anterior com base no atual;
    $sSqlWhere = " o44_codparrel = {$iCodigoRelatorio} ";
    $sSqlDuplicaEle = " select fc_duplica_exercicio('orcparamelemento', 'o44_anousu', " . db_getsession('DB_anousu') . ",{$iExercAnt},'{$sSqlWhere}');";
    $rsDuplicaEle = pg_query($sSqlDuplicaEle);
    /**
     * Duplica a as configurações padroes do relatorio e as configurações do usuario.
     */
    $oDaoFiltroPadrao = db_utils::getDao("orcparamseqfiltropadrao");
    $sSqlApagaPadrao = $oDaoFiltroPadrao->excluir(null, "o132_anousu = {$iExercAnt} \n                                                  and o132_orcparamrel = {$iCodigoRelatorio}");
    $sSqlinclui = $oDaoFiltroPadrao->sql_query_file(null, "*", null, "o132_anousu = {$iExercicio} \n                                                        and o132_orcparamrel = {$iCodigoRelatorio}");
    $rsIncluirPadraoAnterior = $oDaoFiltroPadrao->sql_record($sSqlinclui);
    $aFiltrosPadraoIncluir = db_utils::getColectionByRecord($rsIncluirPadraoAnterior);
    foreach ($aFiltrosPadraoIncluir as $oFiltroPadrao) {
        $oDaoFiltroPadrao->o132_filtro = $oFiltroPadrao->o132_filtro;
        $oDaoFiltroPadrao->o132_orcparamrel = $oFiltroPadrao->o132_orcparamrel;
        $oDaoFiltroPadrao->o132_orcparamseq = $oFiltroPadrao->o132_orcparamseq;
        $oDaoFiltroPadrao->o132_anousu = $iExercAnt;
        $oDaoFiltroPadrao->incluir(null);
    }
    $oDaoFiltroUsuario = db_utils::getDao("orcparamseqfiltroorcamento");
    $sSqlApagaOrcamento = $oDaoFiltroUsuario->excluir(null, "o133_anousu = {$iExercAnt} \n                                                  and o133_orcparamrel = {$iCodigoRelatorio}");
    $sSqlinclui = $oDaoFiltroUsuario->sql_query_file(null, "*", null, "o133_anousu = {$iExercicio} \n                                                        and o133_orcparamrel = {$iCodigoRelatorio}");
    $rsIncluirUsuarioAnterior = $oDaoFiltroUsuario->sql_record($sSqlinclui);
    $aFiltrosUsuarioIncluir = db_utils::getColectionByRecord($rsIncluirUsuarioAnterior);
    foreach ($aFiltrosUsuarioIncluir as $oFiltroUsuario) {
        $oDaoFiltroUsuario->o133_filtro = $oFiltroUsuario->o133_filtro;
        $oDaoFiltroUsuario->o133_orcparamrel = $oFiltroUsuario->o133_orcparamrel;
        $oDaoFiltroUsuario->o133_orcparamseq = $oFiltroUsuario->o133_orcparamseq;
        $oDaoFiltroUsuario->o133_anousu = $iExercAnt;
        $oDaoFiltroUsuario->incluir(null);
    }
}
require_once "libs/db_conecta.php";
require_once "libs/db_stdlib.php";
require_once "libs/db_sql.php";
require_once "libs/db_utils.php";
require_once "libs/JSON.php";
require_once "classes/db_ouvidoriaatendimento_classe.php";
$oJson = new services_json();
$oParam = $oJson->decode(str_replace("\\", "", $_POST["json"]));
$oRetorno = new stdClass();
$oRetorno->dados = array();
$oRetorno->status = 1;
try {
    switch ($oParam->exec) {
        case 'buscaDados':
            if (isset($oParam->lRetornoAutomatico) && empty($oParam->lRetornoAutomatico)) {
                $oDaoOuvidoriaAtendimento = db_utils::getDao('ouvidoriaatendimento');
                $sCampos = " DISTINCT ov01_sequencial,                           ";
                $sCampos .= " fc_numeroouvidoria(ov01_sequencial) as ov01_numero, ";
                $sCampos .= " p51_descr,                                          ";
                $sCampos .= " ov01_requerente,                                    ";
                $sCampos .= " descrdepto,                                         ";
                $sCampos .= " ov01_dataatend,                                     ";
                $sCampos .= " ov01_dataatend,                                     ";
                $sCampos .= " case when                                           ";
                $sCampos .= "   ov02_cnpjcpf is null                              ";
                $sCampos .= "     then z01_cgccpf                                 ";
                $sCampos .= "   else ov02_cnpjcpf end as cpf_cnpj,                ";
                $sCampos .= " ov09_protprocesso,                                  ";
                $sCampos .= " p58_numero,                                         ";
                $sCampos .= " p58_ano                                             ";
                $aWhere = array();
 function consultaDebitosMatricula($iMatric = "")
 {
     require_once "libs/db_utils.php";
     $oDaoArrematric = db_utils::getDao("arrematric");
     $sCampos = " distinct cadtipo.k03_tipo, ";
     $sCampos .= "\t        cadtipo.k03_descr ";
     $sWhere = " arrematric.k00_matric = {$iMatric}";
     $rsConsulta = $oDaoArrematric->sql_record($oDaoArrematric->sql_query_info(null, null, $sCampos, null, $sWhere));
     $aRetorno = db_utils::getCollectionByRecord($rsConsulta, false, false, false);
     return $aRetorno;
 }