/** * 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); }
/** * 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; }