/**
  * Consulta notas para exportar RPS
  */
 public function rpsConsultarAction()
 {
     parent::noTemplate();
     $aParametros = $this->getRequest()->getParams();
     /**
      * Verifica se foi informado mês e ano da competência
      */
     if (!empty($aParametros['mes_competencia']) && !empty($aParametros['ano_competencia'])) {
         $oContribuinte = $this->_session->contribuinte;
         $sCodigosContribuintes = implode(',', $oContribuinte->getContribuintes());
         $oPaginatorAdapter = new DBSeller_Controller_Paginator(Contribuinte_Model_Nota::getQuery(), 'Contribuinte_Model_Nota', 'Contribuinte\\Nota');
         /**
          * Monta a query de consulta
          */
         $oPaginatorAdapter->where("e.id_contribuinte in ({$sCodigosContribuintes})");
         $oPaginatorAdapter->andWhere("e.mes_comp = {$aParametros['mes_competencia']}");
         $oPaginatorAdapter->andWhere("e.ano_comp = {$aParametros['ano_competencia']}");
         if (!empty($aParametros['numero_rps'])) {
             $oPaginatorAdapter->andWhere("e.nota = {$aParametros['numero_rps']}");
         }
         $oPaginatorAdapter->orderBy('e.nota', 'DESC');
         /**
          * Monta a paginação do GridPanel
          */
         $oResultado = new Zend_Paginator($oPaginatorAdapter);
         $oResultado->setItemCountPerPage(10);
         $oResultado->setCurrentPageNumber($this->_request->getParam('page'));
         foreach ($oResultado as $oNota) {
             $oNota->oContribuinte = $oContribuinte;
             $oNota->lNaoGeraGuia = !$oNota->getEmite_guia();
             $oNota->lGuiaEmitida = Contribuinte_Model_Guia::existeGuia($oContribuinte, $oNota->getMes_comp(), $oNota->getAno_comp(), Contribuinte_Model_Guia::$DOCUMENTO_ORIGEM_NFSE);
             /**
              * Informações da nota substituta
              */
             $oNota->oNotaSubstituida = NULL;
             if ($oNota->getIdNotaSubstituida()) {
                 $oNota->oNotaSubstituida = Contribuinte_Model_Nota::getById($oNota->getIdNotaSubstituida());
             }
             /**
              * Informações da nota substituta
              */
             $oNota->oNotaSubstituta = NULL;
             if ($oNota->getIdNotaSubstituta()) {
                 $oNota->oNotaSubstituta = Contribuinte_Model_Nota::getById($oNota->getIdNotaSubstituta());
             }
         }
         /**
          * Valores da pesquisa para montar a paginação
          */
         if (is_array($aParametros)) {
             foreach ($aParametros as $sParametro => $sParametroValor) {
                 if ($sParametroValor) {
                     $sParametroValor = str_replace('/', '-', $sParametroValor);
                     $this->view->sBusca .= "{$sParametro}/{$sParametroValor}/";
                 }
             }
         }
         $this->view->oDadosNota = $oResultado;
     }
 }
 /**
  * Fecha a competência para as Notas Fiscais (NFSE)
  */
 public function fechaCompetenciaAction()
 {
     parent::noTemplate();
     $iMes = $this->getRequest()->getParam('mes');
     $iAno = $this->getRequest()->getParam('ano');
     $oContribuinte = $this->_session->contribuinte;
     $oCompetencia = new Contribuinte_Model_Competencia($iAno, $iMes, $oContribuinte);
     $oCompetencia->getNotas();
     $oCompetencia->setTotaisCompetencia();
     $oFormCompetencia = new Contribuinte_Form_GuiaCompetencia();
     $oFormCompetencia->setAction('/contribuinte/guia/fecha-competencia');
     $oFormCompetencia->preenche($oCompetencia, NULL);
     $oFormCompetencia->getElement('data_guia')->setValue(date('d/m/Y'));
     $this->view->competencia = $oCompetencia;
     $this->view->form = $oFormCompetencia;
     if ($this->getRequest()->isPost()) {
         $this->view->arquivo = '';
         $this->view->guia = '';
         try {
             $lTemGuiaEmitida = Contribuinte_Model_Guia::existeGuia($oContribuinte, $oCompetencia->getMesComp(), $oCompetencia->getAnoComp(), Contribuinte_Model_Guia::$DOCUMENTO_ORIGEM_NFSE);
             if ($lTemGuiaEmitida) {
                 throw new Exception('Guia já emitida.');
             }
             $sDataInvertida = DBSeller_Helper_Date_Date::invertDate($this->getRequest()->getParam('data_guia'));
             $oDataPagamento = new DateTime($sDataInvertida);
             $oGuia = Contribuinte_Model_GuiaEcidade::gerarGuiaNFSE($oContribuinte, $oCompetencia, $oDataPagamento);
             // Verifica se retornou algum erro no processo de geração da guia
             if (is_string($oGuia)) {
                 throw new Exception($oGuia);
             }
             // Verifica se foi gerado o arquivo de emissão da guia
             if (empty($oGuia->arquivo_guia)) {
                 throw new Exception('Ocorreu algum problema na geração da guia de pagamento!');
             }
             $this->view->arquivo = $oGuia->arquivo_guia;
         } catch (Exception $oErro) {
             $this->view->mensagem_erro = $oErro->getMessage();
         }
     }
 }
 /**
  * Método para ver se a nota pode ser cancelada ou não
  * @param object $oContribuinte Model do contribuinte
  * @return boolean
  */
 public function podeCancelar($oContribuinte)
 {
     $oNota = $this->getEntity();
     $lExisteGuia = Contribuinte_Model_Guia::existeGuia($oContribuinte, $oNota->getMes_comp(), $oNota->getAno_comp(), Contribuinte_Model_Guia::$DOCUMENTO_ORIGEM_NFSE);
     $oSolicitacaoCancelamento = Contribuinte_Model_SolicitacaoCancelamento::getByAttribute('nota', $oNota);
     $uDataUltimaNota = Contribuinte_Model_Nota::getUltimaNotaEmitidaByContribuinte($oContribuinte->getContribuintes());
     $oDataUltimaNota = new DateTime($uDataUltimaNota);
     $oCompetencia = new Contribuinte_Model_Competencia($oNota->getAno_comp(), $oNota->getMes_comp(), $oContribuinte);
     $aCompetenciaSemMovimento = $oCompetencia->getDeclaracaoSemMovimento();
     if ($oNota->getAno_comp() < $oDataUltimaNota->format('Y')) {
         return FALSE;
     } else {
         if ($oNota->getAno_comp() == $oDataUltimaNota->format('Y') && $oNota->getMes_comp() < $oDataUltimaNota->format('m')) {
             return FALSE;
         } else {
             if ($oNota->getCancelada() || $lExisteGuia || $oNota->getImportada() || !empty($oSolicitacaoCancelamento)) {
                 return FALSE;
             } else {
                 if (isset($aCompetenciaSemMovimento[0]) && $oNota->getAno_comp() < $aCompetenciaSemMovimento[0]->ano) {
                     return FALSE;
                 } else {
                     if (isset($aCompetenciaSemMovimento[0]) && $oNota->getAno_comp() == $aCompetenciaSemMovimento[0]->ano && $oNota->getMes_comp() <= $aCompetenciaSemMovimento[0]->mes) {
                         return FALSE;
                     }
                 }
             }
         }
     }
     return TRUE;
 }
 /**
  * Verifica se existe guia emitida
  *
  * @return boolean
  */
 public function existeGuiaEmitida()
 {
     return Contribuinte_Model_Guia::existeGuia($this->oContribuinte, $this->iMesCompetencia, $this->iAnoCompetencia, 10);
 }
 /**
  * Gera a guia de DES-IF no eCidade
  *
  * @param Contribuinte_Model_Contribuinte $oContribuinte
  * @param                                 $iAnoCompetencia
  * @param                                 $iMesCompetencia
  * @param DateTime                        $oDataPagamento
  * @param                                 $fAliquota
  * @param bool                            $lGerarPdf
  * @return bool
  * @throws Exception
  */
 public static function gerarGuiaDesif(Contribuinte_Model_Contribuinte $oContribuinte, $iAnoCompetencia, $iMesCompetencia, DateTime $oDataPagamento, $fAliquota, $lGerarPdf = TRUE)
 {
     // Verifica se já possui uma guia emitida
     $lTemGuiaEmitida = Contribuinte_Model_Guia::existeGuia($oContribuinte, $iMesCompetencia, $iAnoCompetencia, Contribuinte_Model_Guia::$DOCUMENTO_ORIGEM_NFSE);
     if ($lTemGuiaEmitida) {
         throw new Exception('Guia já emitida.');
     }
     $aReceitasDesif = Contribuinte_Model_ImportacaoDesif::getTotalReceitasCompetencia($oContribuinte, $iAnoCompetencia, $iMesCompetencia, $fAliquota);
     $sDataPagamento = $oDataPagamento->format('d/m/Y');
     $oUsuarioContribuinte = Administrativo_Model_UsuarioContribuinte::getById($oContribuinte->getIdUsuarioContribuinte());
     $oValidateDate = new Zend_Validate_Date();
     $sData = DBSeller_Helper_Date_Date::invertDate($sDataPagamento);
     $sDataValidacao = DBSeller_Helper_Date_Date::invertDate($sDataPagamento, '');
     if ($sDataValidacao < date('Ymd')) {
         throw new Exception('Informe uma data posterior a data atual!');
     }
     if ($oValidateDate->isValid($sDataPagamento)) {
         $oData = new DateTime($sData);
     } else {
         throw new Exception('Informe uma data para pagamento válida!');
     }
     /**
      * Alterado o parametro de envio do cpf_cnpj para o e-cidade pois não estava sendo passado corretamente.
      */
     $iCpfCnpj = $oUsuarioContribuinte->getCnpjCpf();
     $iCpf = strlen($iCpfCnpj) == 11 ? $iCpfCnpj : NULL;
     $iCnpj = strlen($iCpfCnpj) == 14 ? $iCpfCnpj : NULL;
     $oGuiaGerar = new StdClass();
     $oGuiaGerar->id_importacao_desif = $aReceitasDesif->id_importacao_desif;
     $oGuiaGerar->id_importacao_desif_conta = $aReceitasDesif->id_importacao_desif_conta;
     $oGuiaGerar->inscricao_municipal = $oUsuarioContribuinte->getIm();
     $oGuiaGerar->cpf = $iCpf;
     $oGuiaGerar->cnpj = $iCnpj;
     $oGuiaGerar->numcgm = $oUsuarioContribuinte->getCgm();
     $oGuiaGerar->mes_competencia = $iMesCompetencia;
     $oGuiaGerar->ano_competencia = $iAnoCompetencia;
     $aListaReceitas = array();
     foreach ($aReceitasDesif->aliquotas_issqn as $fAliquota => $aDadosReceita) {
         $sNumeroNotaFiscal = date('YmdHs', time()) . $aReceitasDesif->id_importacao_desif . str_replace('.', '', $fAliquota);
         $oReceita = new stdClass();
         $oReceita->numero_nota_fiscal = $sNumeroNotaFiscal;
         $oReceita->codigo_documento = $aReceitasDesif->id_importacao_desif;
         $oReceita->data_nota_fiscal = $aReceitasDesif->data_importacao->format('Y-m-d');
         $oReceita->serie_nota_fiscal = NULL;
         $oReceita->valor_base_calculo = $aDadosReceita['total_receita'];
         $oReceita->valor_deducao = 0;
         $oReceita->valor_imposto_retido = $aDadosReceita['total_iss'];
         $oReceita->valor_servico_prestado = $aDadosReceita['total_receita'];
         $oReceita->aliquota = $fAliquota;
         $oReceita->data_pagamento = $sDataPagamento;
         $oReceita->retido = $aDadosReceita['total_iss'];
         $oReceita->situacao = 1;
         $oReceita->status = 1;
         $oReceita->servico_prestado = 'Receita Importada Desif';
         $oReceita->cnpj_prestador = $oUsuarioContribuinte->getCnpjCpf();
         $oReceita->inscricao_prestador = $oUsuarioContribuinte->getIm();
         $oReceita->nome = $oContribuinte->getNome();
         $oReceita->operacao = 2;
         $aListaReceitas[] = $oReceita;
     }
     $oGuiaGerar->notas = $aListaReceitas;
     $aDados = array('planilha' => $oGuiaGerar, 'data_pagamento' => $oData->format('Y-m-d'), 'tipo_debito' => Contribuinte_Model_GuiaEcidade::TIPO_DEBITO_VARIAVEL);
     $oGuiaGerada = WebService_Model_Ecidade::processar('geraDebitoIssContribribuinte', $aDados);
     $oGuia = new Contribuinte_Model_Guia();
     $oGuia->gerarGuiaDesifPrestador($oContribuinte, $oGuiaGerada, $iAnoCompetencia, $iMesCompetencia, $oDataPagamento);
     $sArquivoGuiaPdf = $oGuiaGerada->debito->dados_boleto->arquivo_guia;
     if ($lGerarPdf) {
         $oGuiaGerada->arquivo_guia = Contribuinte_Model_GuiaEcidade::salvarPdf($sArquivoGuiaPdf, 'guia_substituto');
     }
     return $oGuiaGerada;
 }
 /**
  * Emissao de NFSE
  */
 public function indexAction()
 {
     $oContribuinte = $this->_session->contribuinte;
     $sCodigoVerificacao = NULL;
     $oForm = $this->formNota($sCodigoVerificacao, $oContribuinte);
     try {
         $this->view->bloqueado_msg = FALSE;
         $aServicos = Contribuinte_Model_Servico::getByIm($oContribuinte->getInscricaoMunicipal());
         $oForm->setListaServicos($aServicos);
         // Verifica se o contribuinte é prestador de serviços
         if ($aServicos == NULL || empty($aServicos)) {
             $this->view->bloqueado_msg = $this->translate->_('Empresa não prestadora de serviço.');
             return;
         }
         // Verifica se o contribuinte é emissor de NFSe
         if ($oContribuinte->getTipoEmissao() != Contribuinte_Model_ContribuinteAbstract::TIPO_EMISSAO_NOTA) {
             $this->view->bloqueado_msg = $this->translate->_('Empresa não emissora de NFS-E.');
             return;
         }
         // Dados do formulário
         $aDados = $this->getRequest()->getParams();
         // Preeenche da nota copiada
         if (isset($aDados['id_copia'])) {
             $iIdCopiaNota = $aDados['id_copia'];
             $aCopiaDadosNota = Contribuinte_Model_Nota::getByAttribute('id', $iIdCopiaNota, '=', Contribuinte_Model_Nota::TIPO_RETORNO_ARRAY);
             $aDados = $aCopiaDadosNota[0];
             $aDados['id_copia_nota'] = $iIdCopiaNota;
         }
         $oForm->preenche($aDados);
         $oForm->getElement('nota_substituida')->setRequired($oForm->getElement('nota_substituta')->isChecked());
         // Processa o formulário
         if ($this->getRequest()->isPost()) {
             // Verifica se é tomador é
             if (!$this->podeReterPessoaFisica($aDados)) {
                 $sMensagemErro = 'Permitido reter apenas para Pessoa Jurídica.';
                 $this->view->form = $oForm;
                 $this->view->messages[] = array('error' => $sMensagemErro);
                 return;
             }
             // Limpa espaços no email
             $aDados['t_email'] = trim($aDados['t_email']);
             // Validadores
             $oValidaData = new Zend_Validate_Date(array('format' => 'yyyy-MM-dd'));
             // Bloqueia a emissão se possuir declarações sem movimento
             if (isset($aDados['dt_nota']) && $oValidaData->isValid($aDados['dt_nota'])) {
                 $oDataSimples = new DateTime($aDados['dt_nota']);
                 $aDeclaracaoSemMovimento = Contribuinte_Model_Competencia::getDeclaracaoSemMovimentoPorContribuintes($oContribuinte->getInscricaoMunicipal(), $oDataSimples->format('Y'), $oDataSimples->format('m'));
                 if (count($aDeclaracaoSemMovimento) > 0 && $oContribuinte->getOptanteSimplesCategoria() != Contribuinte_Model_ContribuinteAbstract::OPTANTE_SIMPLES_TIPO_MEI) {
                     $sMensagemErro = 'Não é possível emitir um documento nesta data, pois a competência foi declarada como ';
                     $sMensagemErro .= 'sem movimento.<br>Entre em contato com o setor de arrecadação da prefeitura.';
                     $this->view->form = $oForm;
                     $this->view->messages[] = array('error' => $sMensagemErro);
                     return;
                 }
             }
             // Valida os dados do formulário
             if (!$oForm->isValid($aDados)) {
                 $this->view->form = $oForm;
                 $this->view->messages[] = array('error' => $this->translate->_('Preencha os dados corretamente.'));
             } else {
                 // Remova chaves inválidas
                 unset($aDados['enviar'], $aDados['action'], $aDados['controller'], $aDados['module'], $aDados['estado']);
                 // filtro para retornar somente numeros
                 $aFilterDigits = new Zend_Filter_Digits();
                 $aDados['p_im'] = $oContribuinte->getInscricaoMunicipal();
                 $aDados['t_cnpjcpf'] = $aFilterDigits->filter($aDados['t_cnpjcpf']);
                 $aDados['t_cep'] = $aFilterDigits->filter($aDados['t_cep']);
                 $aDados['t_telefone'] = $aFilterDigits->filter($aDados['t_telefone']);
                 $aDados['tipo_nota'] = self::TIPO_NOTA;
                 // Recalcula valores para garantir a integridade dos cálculos
                 $aServico = Contribuinte_Model_Servico::getByCodServico($aDados['s_dados_cod_tributacao']);
                 $oServico = reset($aServico);
                 /* caso a atividade sejá retida no municipio de acordo com a legislação
                  * envia para o teste de guia um parametro = true
                  */
                 $aDados['s_tributacao_municipio'] = $oServico->attr('tributacao_municipio');
                 $oParametros = new stdClass();
                 $oParametros->vlr_servico = $oForm->getElement('s_vl_servicos')->getValue();
                 $oParametros->s_vl_deducoes = $oForm->getElement('s_vl_deducoes')->getValue();
                 $oParametros->perc_aliquota = $oForm->getElement('s_vl_aliquota')->getValue();
                 $oParametros->vlr_pis = $oForm->getElement('s_vl_pis')->getValue();
                 $oParametros->vlr_cofins = $oForm->getElement('s_vl_cofins')->getValue();
                 $oParametros->vlr_inss = $oForm->getElement('s_vl_inss')->getValue();
                 $oParametros->vlr_ir = $oForm->getElement('s_vl_ir')->getValue();
                 $oParametros->vlr_csll = $oForm->getElement('s_vl_csll')->getValue();
                 $oParametros->vlr_outras_retencoes = $oForm->getElement('s_vl_outras_retencoes')->getValue();
                 $oParametros->vlr_desc_condicionado = $oForm->getElement('s_vl_condicionado')->getValue();
                 $oParametros->vlr_desc_incondicionado = $oForm->getElement('s_vl_desc_incondicionado')->getValue();
                 $oParametros->imposto_retido_tomador = $oForm->getElement('s_dados_iss_retido')->getValue() == 1;
                 $oParametros->deducao_editavel = $oServico->attr('deducao') == 't';
                 $oParametros->formatar_valores_ptbr = TRUE;
                 // Calcula os valores da nota
                 $oCalculoValores = Contribuinte_Model_Nota::calcularValores($oParametros);
                 // Valores calculados
                 $aDados['s_vl_deducoes'] = $oCalculoValores->s_vl_deducoes;
                 $aDados['s_vl_bc'] = $oCalculoValores->vlr_base;
                 $aDados['s_vl_iss'] = $oCalculoValores->vlr_iss;
                 $aDados['s_vl_pis'] = $oCalculoValores->vlr_pis;
                 $aDados['s_vl_cofins'] = $oCalculoValores->vlr_cofins;
                 $aDados['s_vl_inss'] = $oCalculoValores->vlr_inss;
                 $aDados['s_vl_ir'] = $oCalculoValores->vlr_ir;
                 $aDados['s_vl_csll'] = $oCalculoValores->vlr_csll;
                 $aDados['s_vl_outras_retencoes'] = $oCalculoValores->vlr_outras_retencoes;
                 $aDados['s_vl_condicionado'] = $oCalculoValores->vlr_desc_condicionado;
                 $aDados['s_vl_desc_incondicionado'] = $oCalculoValores->vlr_desc_incondicionado;
                 $aDados['s_vl_liquido'] = $oCalculoValores->vlr_liquido;
                 $aDados['dt_nota'] = Contribuinte_Model_Nota::getDateTime($aDados['dt_nota']);
                 $aDados['id_contribuinte'] = $oContribuinte->getIdUsuarioContribuinte();
                 $aDados['id_usuario'] = $this->usuarioLogado->getId();
                 if ($oForm->getElement('nota_substituta')->isChecked()) {
                     $aAtributosPesquisaNotaSubstituida = array('id_contribuinte' => $oContribuinte->getIdUsuarioContribuinte(), 'nota' => $aDados['nota_substituida'], 'cancelada' => FALSE);
                     $oNotaSubstituida = Contribuinte_Model_Nota::getByAttributes($aAtributosPesquisaNotaSubstituida);
                     $oNotaSubstituida = reset($oNotaSubstituida);
                     /*
                      * Caso exista a nota a ser substituida, verifica:
                      *  - Se já não possue nota substituta
                      *  - Se não possui guia emitida
                      */
                     if ($oNotaSubstituida instanceof Contribuinte_Model_Nota && !$oNotaSubstituida->getIdNotaSubstituta() && !Contribuinte_Model_Guia::existeGuia($oContribuinte, $oNotaSubstituida->getMes_comp(), $oNotaSubstituida->getAno_comp(), Contribuinte_Model_Guia::$DOCUMENTO_ORIGEM_NFSE)) {
                         // Seta os dados da nota
                         $aDados['idNotaSubstituida'] = $oNotaSubstituida->getId();
                     } else {
                         $sMensagemErro = '<b>Erro ao substituir a nota, verifique se:</b><br>';
                         $sMensagemErro .= '- A nota informada já foi emitida no sistema.<br>';
                         $sMensagemErro .= '- A nota informada não foi substituida.<br>';
                         $sMensagemErro .= '- A nota informada não possui guia emitida.';
                         $this->view->messages[] = array('error' => $this->translate->_($sMensagemErro));
                         $this->view->form = $oForm;
                         return NULL;
                     }
                     unset($aDados['nota_substituta'], $aDados['nota_substituida']);
                 }
                 // Verifica se a nota é substituta
                 // Persiste os dados na base de dados
                 $oNota = new Contribuinte_Model_Nota();
                 if ($oNota->persist($aDados)) {
                     // Se for nota substituta
                     if (isset($oNotaSubstituida) && $oNotaSubstituida instanceof Contribuinte_Model_Nota) {
                         $sMensagemCancelamento = "Substituida pela Nota nº {$oNota->getNota()}";
                         $oNotaSubstituida->setIdNotaSubstituta($oNota->getId());
                         $oNotaSubstituida->setCancelada(TRUE);
                         $oNotaSubstituida->setCancelamentoJustificativa($this->translate->_($sMensagemCancelamento));
                         $oNotaSubstituida->setEmite_guia(FALSE);
                         $oNotaSubstituida->persist($oNotaSubstituida->getEntity());
                     }
                 } else {
                     $this->view->form = $oForm;
                     $this->view->messages[] = array('error' => $this->translate->_('Ocorreu um erro emitir a nota.'));
                     return NULL;
                 }
                 // Envia email para o tomador
                 $oValidaEmail = new Zend_Validate_EmailAddress();
                 if ($oValidaEmail->isValid($aDados['t_email'])) {
                     $iInscricaoMunicipal = $aDados['p_im'];
                     $oContribuinte = Contribuinte_Model_Contribuinte::getByInscricaoMunicipal($iInscricaoMunicipal);
                     // Informações da view
                     $this->view->nota = $oNota;
                     $this->view->tomadorNome = $aDados['t_razao_social'];
                     $this->view->prestadorNome = $oContribuinte->getNome('nome');
                     $this->view->prestadorCnpj = DBSeller_Helper_Number_Format::maskCPF_CNPJ($oContribuinte->getCgcCpf());
                     $this->view->nfseNumero = $oNota->getNota();
                     $this->view->nfseUrl = $oNota->getUrlVerificacaoNota();
                     // Renderiza o email com o texto diferente para notas substitutas
                     if (isset($oNotaSubstituida) && $oNotaSubstituida instanceof Contribuinte_Model_Nota) {
                         // Informações da View
                         $this->view->sUrlNotaSubstituida = $oNotaSubstituida->getUrlVerificacaoNota();
                         $this->view->oNotaSubstituida = $oNotaSubstituida;
                         $sMensagemEmail = $this->view->render('nota/email-emissao-substituida.phtml');
                     } else {
                         $sMensagemEmail = $this->view->render('nota/email-emissao.phtml');
                     }
                     $sArquivoPdfNfse = $this->getNotaImpressao($oNota->getCod_verificacao(), TRUE, TRUE);
                     // Envia Email
                     DBSeller_Helper_Mail_Mail::sendAttachment($aDados['t_email'], "Nota Fiscal Eletrônica nº {$oNota->getNota()}", $sMensagemEmail, $sArquivoPdfNfse);
                 }
                 $this->view->messages[] = array('success' => $this->translate->_('Nota emitida com sucesso.'));
                 $this->_redirector->gotoSimple('dadosnota', NULL, NULL, array('id' => $oNota->getId()));
             }
         } else {
             $this->view->form = $oForm;
             $this->view->form->setListaServicos($aServicos);
         }
     } catch (Exception $oError) {
         $this->view->form = $oForm;
         $this->view->messages[] = array('error' => $this->translate->_($oError->getMessage()));
         return NULL;
     }
 }