/**
  * Retorna dados Basicos Referentes a Parcela de Débito 
  * 
  * @param mixed $iNumpre 
  * @param mixed $iNumpar 
  * @static
  * @access public
  * @return stdClass
  */
 public static function getMensagensParcela($iNumpre, $iNumpar, $dDataEmissao)
 {
     $oRetorno = new stdClass();
     $oRetorno->sMensagemContribuinte = "";
     $oRetorno->sMensagemCaixa = "";
     /**
      * Para Buscar valor deve-se implentar busca na função debitos_numpre
      */
     $sSql = "select distinct                                                    ";
     if (!empty($iNumpar)) {
         $sSql .= "       k00_dtvenc,                                               ";
     }
     $sSql .= "       k00_msguni,                                                 ";
     $sSql .= "       k00_msguni2,                                                ";
     $sSql .= "       k00_msgparc,                                                ";
     $sSql .= "       k00_msgparc2,                                               ";
     $sSql .= "       k00_msgparcvenc,                                            ";
     $sSql .= "       k00_msgparcvenc2,                                           ";
     $sSql .= "       arrecad.k00_tipo                                            ";
     $sSql .= "  from arrecad                                                     ";
     $sSql .= "       inner join arretipo on arrecad.k00_tipo = arretipo.k00_tipo ";
     $sSql .= " where k00_numpre = {$iNumpre}  ";
     if (!empty($iNumpar)) {
         $sSql .= "   AND k00_numpar = {$iNumpar}  ";
     }
     $rsSql = db_query($sSql);
     if (!$rsSql) {
         throw new DBException("Erro ao Buscar os Dados da Parcela. Descrição do Erro:" . pg_last_error());
     }
     $oDadosDebito = db_utils::fieldsMemory($rsSql, 0);
     if (empty($iNumpar)) {
         $oRetorno->sMensagemContribuinte = $oDadosDebito->k00_msguni2;
         $oRetorno->sMensagemCaixa = $oDadosDebito->k00_msguni;
         return $oRetorno;
     }
     $oDataVencimentoDebito = new DBDate($oDadosDebito->k00_dtvenc);
     $oDataEmissao = new DBDate($dDataEmissao);
     if ($oDataEmissao->getTimeStamp() > $oDataVencimentoDebito->getTimeStamp()) {
         $oRetorno->sMensagemContribuinte = $oDadosDebito->k00_msgparc;
         $oRetorno->sMensagemCaixa = $oDadosDebito->k00_msgparc2;
         return $oRetorno;
     }
     $oRetorno->sMensagemContribuinte = $oDadosDebito->k00_msgparcvenc;
     $oRetorno->sMensagemCaixa = $oDadosDebito->k00_msgparcvenc2;
     return $oRetorno;
 }
 function gerarIssqnVariavelComplementar(DBDate $oDataVencimento, $iReceitaDebito = 0, $vt = array(), $q02_inscr = null, $iNumCgm = null, $sTipo = 'P')
 {
     $errocompl = false;
     if ($this->q05_histor == "" and $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 = split("#", $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 = split("#", $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) {
         $clarrecad = new cl_arrecad();
         $resultpar = db_query("select * from parissqn");
         $q60_tipo = pg_result($resultpar, 0, "q60_tipo");
         $q60_receit = pg_result($resultpar, 0, "q60_receit");
         $q60_codvencvar = pg_result($resultpar, 0, "q60_codvencvar");
         if (!empty($iReceitaDebito)) {
             $q60_receit = $iReceitaDebito;
         }
         $clarrecad->k00_receit = $q60_receit;
         if ($sTipo == 'P') {
             $clarrecad->k00_tipo = $q60_tipo;
         } else {
             $rsConfPlan = db_query("select w10_tipo from db_confplan");
             $w10_tipo = pg_result($rsConfPlan, 0, 'w10_tipo');
             $clarrecad->k00_tipo = $w10_tipo;
         }
         $sqlvenc = "select q82_venc,q82_hist from cadvenc where q82_codigo = {$q60_codvencvar} and q82_parc = " . $this->q05_mes;
         $resultvenc = db_query($sqlvenc);
         $q82_venc = pg_result($resultvenc, 0, "q82_venc");
         $q82_hist = pg_result($resultvenc, 0, "q82_hist");
         $clarrecad->k00_hist = $q82_hist;
         if ($this->q05_ano == db_getsession("DB_anousu")) {
             $clarrecad->k00_dtvenc = $oDataVencimento->getDate(DBDate::DATA_EN);
             //"$q82_venc";
         } else {
             $res = db_query("select * from db_confplan");
             if (pg_num_rows($res) > 0) {
                 $w10_dia = pg_result($res, 0, "w10_dia");
             } 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;
             $clarrecad->k00_dtvenc = $oDataVencimento->getDate(DBDate::DATA_EN);
             //"$venc_arrecad";
         }
         if ($iNumCgm != null) {
             $iCgm = $iNumCgm;
         } else {
             $iCgm = $z01_numcgm;
         }
         $clarrecad->k00_numcgm = $iCgm;
         $clarrecad->k00_dtoper = $clarrecad->k00_dtvenc;
         $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->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);
     } else {
         $this->erro_status = "0";
         return false;
     }
     if ($sTipo == 'T' && !$errocompl) {
         if (!class_exists('cl_issplan')) {
             $this->erro_status = "0";
             $this->erro_msg = "Classe issplan não definida!";
             return false;
         }
         $rsCgm = db_query("select * from cgm where z01_numcgm = {$iCgm}");
         $sNomeCgm = pg_result($rsCgm, 0, 'z01_nome');
         $sFoneCgm = pg_result($rsCgm, 0, 'z01_telef');
         $clissplan = new cl_issplan();
         $clissplan->q20_ano = $this->q05_ano;
         $clissplan->q20_mes = $this->q05_mes;
         $clissplan->q20_numcgm = $iCgm;
         $clissplan->q20_nomecontri = addslashes($sNomeCgm);
         $clissplan->q20_fonecontri = $sFoneCgm;
         $clissplan->q20_numbco = '';
         $clissplan->q20_numpre = $this->q05_numpre;
         $clissplan->q20_situacao = 1;
         $clissplan->incluir(null);
         if ($clissplan->erro_status == 0) {
             $this->erro_status = "0";
             $this->erro_msg = "IssPlan - " . $clissplan->erro_msg;
             return false;
         }
         if (!class_exists('cl_issplannumpre')) {
             $this->erro_status = "0";
             $this->erro_msg = "Classe issplannumpre não definida!";
             return false;
         }
         $clissplannumpre = new cl_issplannumpre();
         $clissplannumpre->q32_dataop = date('Y-m-d', db_getsession('DB_datausu'));
         $clissplannumpre->q32_horaop = db_hora();
         $clissplannumpre->q32_numpre = $this->q05_numpre;
         $clissplannumpre->q32_planilha = $clissplan->q20_planilha;
         $clissplannumpre->q32_status = 1;
         $clissplannumpre->incluir(null);
         if ($clissplannumpre->erro_status == 0) {
             $this->erro_status = "0";
             $this->erro_msg = "IssPlanNumpre - " . $clissplannumpre->erro_msg;
             return false;
         }
     }
 }