/**
  * Processa a autenticação de NFSe
  */
 public function autenticarPostAction()
 {
     $aDadosRequest = $this->getRequest()->getParams();
     $aRetornoJson['status'] = FALSE;
     $oForm = new Auth_Form_nfse_FormAutenticacao();
     $oForm->populate($aDadosRequest);
     // Valida o "codigo de verificação" ou "número da RPS" está preenchido
     if (!$oForm->getElement('codigo_verificacao')->getValue() && !$oForm->getElement('numero_rps')->getValue()) {
         $aRetornoJson['fields'] = array('codigo_verificacao', 'numero_rps');
         $aRetornoJson['error'][] = $this->translate->_('Informe o Número do RPS ou o Código de Verificação.');
         echo $this->getHelper('json')->sendJson($aRetornoJson);
     }
     // Valida o restante do formulário
     if ($oForm->isValid($aDadosRequest)) {
         $sPrestadorCnpj = $oForm->getElement('prestador_cnpjcpf')->getValue();
         $sNumeroRps = $oForm->getElement('numero_rps')->getValue();
         $sCodigoVerificacao = $oForm->getElement('codigo_verificacao')->getValue();
         if ($sCodigoVerificacao) {
             $uNota = Contribuinte_Model_Nota::getByPrestadorAndCodigoVerificacao($sPrestadorCnpj, $sCodigoVerificacao);
         } else {
             $uNota = Contribuinte_Model_Nota::getByPrestadorAndNumeroRps($sPrestadorCnpj, $sNumeroRps);
         }
         if (is_object($uNota) || is_array($uNota)) {
             // Url criptografada
             $aUrlVerificacao = DBSeller_Helper_Url_Encrypt::encrypt(array('module' => 'default', 'controller' => 'index', 'action' => 'autentica', 'url' => $aDadosRequest));
             $aRetornoJson['status'] = TRUE;
             $aRetornoJson['url'] = $aUrlVerificacao;
         } else {
             $sMensagemErro = 'Nenhum registro foi encontrado, verifique os dados informados e tente novamente.';
             $aRetornoJson['error'][] = $this->translate->_($sMensagemErro);
         }
     } else {
         $aRetornoJson['fields'] = array_keys($oForm->getMessages());
         $aRetornoJson['error'][] = $this->translate->_('Preencha os dados corretamente.');
     }
     echo $this->getHelper('json')->sendJson($aRetornoJson);
 }
Ejemplo n.º 2
0
 /**
  * Retorna os dados para a emissão da nfse
  *
  * @param string $sCodigoVerificacao
  * @param object $oNota
  * @param object $oPrefeitura
  * @return array
  */
 public static function getDadosEmissao($sCodigoVerificacao, $oNota, $oPrefeitura)
 {
     /**
      * Verifica se os dados foram enviados pela verificar de autenticidade sem nescessidade de estar logado ao sistema
      */
     if ($oNota->getId_contribuinte()) {
         $oPrestador = Contribuinte_Model_Contribuinte::getById($oNota->getId_contribuinte());
     } else {
         $oPrestador = Contribuinte_Model_Contribuinte::getByInscricaoMunicipal($oNota->getP_im());
     }
     $oBaseUrlHelper = new Zend_View_Helper_BaseUrl();
     $oServerUrlHelper = new Zend_View_Helper_ServerUrl();
     // Calcula e divide a quantidade de páginas conforme os dados descritos no campo de 'Descrição do Serviço'
     $iTamanhoTotalTexto = strlen($oNota->getS_dados_discriminacao());
     $iQndPaginas = $iTamanhoTotalTexto > 800 ? 2 : 1;
     $aDados = array();
     // Quebra os modelos de nota em páginas conforme os dados descritos no campo de 'Descrição do Serviço'
     for ($iIndex = 1; $iIndex <= $iQndPaginas; $iIndex++) {
         // Dados de manipulação do cabeçalho
         $oDadosCabecalho = new StdClass();
         $oDadosCabecalho->sBrasao = $oBaseUrlHelper->baseUrl('/global/img/brasao.jpg');
         $oDadosCabecalho->oDadosPrefeitura = $oPrefeitura;
         if (getenv('APPLICATION_ENV') != 'production') {
             $oDadosCabecalho->sUrlTarja = $oBaseUrlHelper->baseUrl('/administrativo/img/nfse/tarja_sem_valor.png');
         } else {
             if ($oNota->getIdNotaSubstituta()) {
                 $oDadosCabecalho->sUrlTarja = $oBaseUrlHelper->baseUrl('/administrativo/img/nfse/tarja_substituida.gif');
             } else {
                 if ($oNota->getCancelada()) {
                     $oDadosCabecalho->sUrlTarja = $oBaseUrlHelper->baseUrl('/administrativo/img/nfse/tarja_cancelada.gif');
                 }
             }
         }
         // Gera o QRCode apenas para os modelos que exibem o mesmo
         if (in_array($oPrefeitura->getModeloImpressaoNfse(), array(2, 3))) {
             $aVerificacao = array('module' => 'auth', 'controller' => 'nfse', 'action' => 'autenticar-post', 'prestador_cnpjcpf' => $oNota->getP_cnpjcpf(), 'codigo_verificacao' => $sCodigoVerificacao);
             $sUrlVerificada = DBSeller_Helper_Url_Encrypt::encrypt(array('module' => 'default', 'controller' => 'index', 'action' => 'autentica', 'url' => $aVerificacao));
             //"codigo_verificacao/{$sCodigoVerificacao}/prestador_cnpjcpf/{$oNota->getP_cnpjcpf()}"));
             $sQRCodeImagem = DBSeller_Helper_QRCode_QRCode::getQrCodeNfse($sUrlVerificada, $sCodigoVerificacao);
             $oDadosCabecalho->sQRCode = $oBaseUrlHelper->baseUrl("/tmp/{$sQRCodeImagem}");
         }
         // Dados de manipulação do prestador
         $oDadosPrestador = new StdClass();
         $oDadosPrestador->oPrestador = $oPrestador;
         $sLogoPrestador = Administrativo_Model_Empresa::getLogoByIm($oNota->getP_im());
         $oDadosPrestador->sLogoPrestador = $oBaseUrlHelper->baseUrl("/tmp/{$sLogoPrestador}");
         // Dados de manipulação do serviço
         $oDadosServico = new StdClass();
         $oDadosServico->oDadosNota = $oNota;
         // Verifica se não é a primeira página que será impressa e quebra as demais 'Descrição do Serviço'
         $iInicioCaracterPagina = 0;
         $iQndCaracterPagina = 800;
         if ($iIndex == 2) {
             $iInicioCaracterPagina = 800;
             $iQndCaracterPagina = $iTamanhoTotalTexto;
         }
         $sDiscriminacaoServico = substr($oNota->getS_dados_discriminacao(), $iInicioCaracterPagina, $iQndCaracterPagina);
         $oDadosServico->sDiscriminacaoServico = $sDiscriminacaoServico;
         // Dados de manipulação da nota subtstituida
         $iIdNotaSubstituida = $oNota->getIdNotaSubstituida();
         if ($iIdNotaSubstituida) {
             $oDadosServico->oDadosNotaSubstituida = Contribuinte_Model_Nota::getById($iIdNotaSubstituida);
         }
         $oRegistro = new StdClass();
         $oRegistro->iPagina = $iIndex;
         $oRegistro->oDadosCabecalho = $oDadosCabecalho;
         $oRegistro->oDadosPrestador = $oDadosPrestador;
         $oRegistro->oDadosServico = $oDadosServico;
         $aDados[] = $oRegistro;
     }
     return $aDados;
 }
 /**
  * Retorna os parâmetros com ou sem criptografia
  *
  * @param string      $sParametro
  * @param string|null $sValorPadrao
  * @return mixed|null
  */
 public function getParam($sParametro, $sValorPadrao = NULL)
 {
     $aRequest = DBSeller_Helper_Url_Encrypt::decrypt();
     if (isset($aRequest[$sParametro])) {
         return $aRequest[$sParametro] ?: $sValorPadrao;
     }
     return $this->getRequest()->getParam($sParametro, $sValorPadrao);
 }