/**
  * Inclui ISSQN Retido utilizado pelo nfse
  *
  * @param array $vt
  * @param null  $q02_inscr
  * @param null  $iNumCgm
  * @return bool
  */
 function incluir_issvar_dms($vt = array(), $q02_inscr = null, $iNumCgm = null)
 {
     $errocompl = false;
     if ($this->q05_histor == '' && $vt != '') {
         reset($vt);
         $ta = sizeof($vt);
         $vir = '';
         $this->q05_histor = 'REFERENTE NOTAS FISCAIS No.:';
         for ($i = 0; $i < $ta; $i++) {
             $chave = key($vt);
             if (substr($chave, 0, 6) == 'linha_') {
                 $sqlerro = false;
                 $matri = explode('#', $vt[$chave]);
                 $this->q05_histor .= $vir . $matri[0];
                 $vir = ',';
             }
             $proximo = next($vt);
         }
     }
     $this->incluir(null);
     if ($this->erro_status == '0') {
         $this->erro_msg;
         $errocompl = true;
     }
     $codigo = $this->q05_codigo;
     if ($errocompl == false and $vt != '') {
         $clissvarnotas = new cl_issvarnotas();
         reset($vt);
         $ta = sizeof($vt);
         for ($i = 0; $i < $ta; $i++) {
             $chave = key($vt);
             if (substr($chave, 0, 6) == 'linha_') {
                 $matri = explode('#', $vt[$chave]);
                 $sql = "select max(q06_seq) +1 as seq from issvarnotas where issvarnotas.q06_codigo = {$codigo}";
                 $result55 = db_query($sql);
                 $seq = pg_result($result55, 0, 'seq');
                 $q06_seq = $seq == '' ? '1' : $seq;
                 $clissvarnotas->q06_codigo = $codigo;
                 $clissvarnotas->q06_seq = $q06_seq;
                 $clissvarnotas->q06_nota = $matri[0];
                 $clissvarnotas->q06_valor = $matri[1];
                 $clissvarnotas->incluir($codigo, $q06_seq);
                 if ($clissvarnotas->erro_status == '0') {
                     $errocompl = true;
                     $this->erro_msg = $clissvarnotas->erro_msg;
                 }
             }
             $proximo = next($vt);
         }
     }
     if ($errocompl == false && $q02_inscr != '') {
         $clarreinscr = new cl_arreinscr();
         $clarreinscr->k00_numpre = $this->q05_numpre;
         $clarreinscr->k00_inscr = $q02_inscr;
         $clarreinscr->k00_perc = 100;
         // exclui se ja existir, senão da duplicate key
         $clarreinscr->excluir($this->q05_numpre, $q02_inscr);
         $clarreinscr->k00_perc = 100;
         $clarreinscr->incluir($this->q05_numpre, $q02_inscr);
         if ($clarreinscr->erro_status == '0') {
             $errocompl = true;
             $this->erro_msg = $clarreinscr->erro_msg;
         } else {
             $resultcgm = db_query("select q02_numcgm as z01_numcgm from issbase where q02_inscr = {$q02_inscr}");
             $z01_numcgm = pg_result($resultcgm, 0, "z01_numcgm");
         }
     } else {
         $z01_numcgm = $vt['z01_numcgm'];
     }
     if ($errocompl == false) {
         $rsConfPlan = db_query('select * from db_confplan');
         if (pg_num_rows($rsConfPlan) > 0) {
             $w10_dia = pg_result($rsConfPlan, 0, "w10_dia");
             $w10_tipo = pg_result($rsConfPlan, 0, 'w10_tipo');
             $w10_hist = pg_result($rsConfPlan, 0, 'w10_hist');
             $w10_receit = pg_result($rsConfPlan, 0, 'w10_receit');
         } else {
             $errocompl = true;
             $this->erro_msg = 'Tabela db_confplan vazia!';
         }
         $qmes = $this->q05_mes;
         $qano = $this->q05_ano;
         $qmes += 1;
         if ($qmes > 12) {
             $qmes = 1;
             $qano += 1;
         }
         $qmes = str_pad($qmes, 2, '0', STR_PAD_LEFT);
         $venc_arrecad = "{$qano}-{$qmes}-{$w10_dia}";
         if ($iNumCgm != null) {
             $iCgm = $iNumCgm;
         } else {
             $iCgm = $z01_numcgm;
         }
         $clarrecad = new cl_arrecad();
         $clarrecad->k00_numcgm = $iCgm;
         $clarrecad->k00_dtvenc = $venc_arrecad;
         $clarrecad->k00_dtoper = $venc_arrecad;
         $clarrecad->k00_valor = $this->q05_valor;
         $clarrecad->k00_numpre = $this->q05_numpre;
         $clarrecad->k00_numtot = 1;
         $clarrecad->k00_numpar = $this->q05_mes;
         $clarrecad->k00_numdig = '0';
         $clarrecad->k00_tipojm = '0';
         $clarrecad->k00_tipo = $w10_tipo;
         $clarrecad->k00_hist = $w10_hist;
         $clarrecad->k00_receit = $w10_receit;
         $clarrecad->incluir();
         if ($clarrecad->erro_status == '0') {
             $errocompl = true;
             $this->erro_msg = "Arrecad - {$clarrecad->erro_msg}";
         }
     }
     if ($errocompl == false) {
         $this->erro_msg = 'Inclusão efetuada com sucesso!';
         $this->q05_valor = '';
         $this->q05_bruto = '';
         unset($this->q05_histor);
         unset($q06_nota);
         unset($q06_valor);
         return true;
     } else {
         $this->erro_status = '0';
         return false;
     }
 }
function db_anulaPlanilha($planilha, $motivo, $ip)
{
    $clissplananula = new cl_issplananula();
    $clissplan = new cl_issplan();
    $clarrecad = new cl_arrecad();
    $clcancdebitos = new cl_cancdebitos();
    $data = date("Y-m-d");
    $hora = date("H:i");
    $usuario = db_getsession("id");
    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");
    }
    $sqlerro = false;
    db_inicio_transacao();
    //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. " . $motivo;
    $clissplananula->q76_ip = $ip;
    $clissplananula->q76_id_usuario = $usuario;
    $clissplananula->incluir(null);
    if ($clissplananula->erro_status == 0) {
        $sqlerro = true;
        //die($clissplananula->erro_sql);
        $erro_msg = $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;
        $erro_msg = $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;
            $erro_msg = "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->numpre = $q20_numpre;
        $clcancdebitos->numpar = 1;
        $clcancdebitos->k21_obs = "Planilha anulada DBPref. " . $motivo;
        $clcancdebitos->usuario = $usuario;
        $clcancdebitos->tipo = $w10_tipo;
        $clcancdebitos->planilha = $planilha;
        $clcancdebitos->incluir_cancelamento(true);
        if ($clcancdebitos->erro_status == "0") {
            $sqlerro = true;
            $erro_msg = $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 = $clarrecad->erro_msg;
        }
    }
    db_fim_transacao($sqlerro);
    return $sqlerro;
}
include "libs/db_stdlib.php";
include "libs/db_sql.php";
include "dbforms/db_funcoes.php";
include "classes/db_arrecad_classe.php";
include "classes/db_arreold_classe.php";
include "classes/db_issplannumpre_classe.php";
include "classes/db_cairetordem_classe.php";
include "classes/db_issvar_classe.php";
include "classes/db_issplannumpreissplanit_classe.php";
parse_str($HTTP_SERVER_VARS["QUERY_STRING"]);
postmemory($HTTP_POST_VARS);
$clquery = new cl_query();
$cl_issvar = new cl_issvar();
$cl_arreold = new cl_arreold();
$cl_issplannumpre = new cl_issplannumpre();
$cl_arrecad = new cl_arrecad();
$cl_cairetordem = new cl_cairetordem();
$cl_issplannumpreissplanit = new cl_issplannumpreissplanit();
$q24_inscr = 0;
$clquery->sql_query("db_confplan", " * ", "", "");
$clquery->sql_record($clquery->sql);
if (pg_numrows($clquery->result) == 0) {
    echo "<script>window.close();window.opener.alert('Não é possivel gerar recibo. Por favor, contate com a prefeitura.');window.opener.location.href='digitaissqn.php'</script>";
    exit;
}
db_fieldsmemory($clquery->result, 0);
if (!isset($dados_recibo)) {
    // ################### SE FOR EMITE RECIBO  #######################################
    // die(" emite ");
    //$mes = 0;
    //$ano = 0;