/** * Retorna a lista de id's dos usuarios contribuintes vinculados a mesmo * @return array */ public function getContribuintes() { if (count($this->aUsuariosContribuintes) == 0) { $aCamposPesquisa = array('cnpj_cpf' => $this->getCgcCpf()); $aUsuariosContribuintes = Administrativo_Model_UsuarioContribuinte::getByAttributes($aCamposPesquisa); foreach ($aUsuariosContribuintes as $oUsuarioContribuinte) { $this->aUsuariosContribuintes[] = $oUsuarioContribuinte->getId(); } } return $this->aUsuariosContribuintes; }
/** * Prepara os dados para processar o arquivo do webservice * * @param string $sArquivo * @return bool * @throws Exception */ public function preparaDados($sArquivo) { try { // Foi comentado o if de verificação pois estava ocorrendo um problema na emissão e retornava um arquivo em branco. // Somente em ambiente de desenvolvimento //if (APPLICATION_ENV == 'development') { $oDomDocument = new DOMDocument(); $oDomDocument->loadXml($sArquivo); $oData = new Zend_Date(); $this->sNomeArquivo = "/RecepcionarLote-{$oData->getTimestamp()}.xml"; $this->sCaminhoArquivo = TEMP_PATH; /** * Verifica se o caminho do arquivo não existe recria a pasta */ if (!file_exists($this->sCaminhoArquivo)) { mkdir($this->sCaminhoArquivo, 0777); } /** * Escreve os dados no arquivo */ $this->sCaminhoNomeArquivo = $this->sCaminhoArquivo . $this->sNomeArquivo; $aArquivo = fopen($this->sCaminhoNomeArquivo, 'w'); fputs($aArquivo, print_r($sArquivo, TRUE)); fclose($aArquivo); //} $oValidacao = new DBSeller_Helper_Xml_AssinaturaDigital($sArquivo); /** * Validação digital do arquivo */ if (!$oValidacao->validar()) { throw new Exception($oValidacao->getLastError()); } $oUsuario = Administrativo_Model_Usuario::getByAttribute('cnpj', $oValidacao->getCnpj()); if (!is_object($oUsuario)) { throw new Exception('Usuário contribuinte não existe!', 157); } /** * Busca usuário contribuinte através do usuário cadastrado */ $aUsuarioContribuinte = Administrativo_Model_UsuarioContribuinte::getByAttributes(array('usuario' => $oUsuario->getId(), 'cnpj_cpf' => $oUsuario->getCnpj())); if (!is_object($aUsuarioContribuinte[0])) { throw new Exception('Usuário contribuinte não encontrado!', 160); } /** * Seta os dados do contribuinte */ $this->oDadosUsuario = $oUsuario; $this->oContribuinte->sCpfCnpj = $aUsuarioContribuinte[0]->getCnpjCpf(); $this->oContribuinte->iCodigoUsuario = $oUsuario->getId(); $this->oContribuinte->iIdUsuarioContribuinte = $aUsuarioContribuinte[0]->getId(); /** * Atualiza os dados do contribuinte na sessão */ $oSessao = new Zend_Session_Namespace('nfse'); $oSessao->contribuinte = Contribuinte_Model_Contribuinte::getById($this->oContribuinte->iIdUsuarioContribuinte); return TRUE; } catch (Exception $oErro) { throw new Exception($oErro->getMessage(), $oErro->getCode()); } }
/** * Prepara os dados para o cancelamento da nota * @param string $sParametroArquivo */ public function preparaDados($sParametroArquivo) { $this->oDadosXML = $this->validaXML($sParametroArquivo); /** * Verifica se existe inconsistencias */ if (count($this->aInconsistencias) == 0) { $sCnpj = (string) $this->oDadosXML->IdentificacaoNfse->Cnpj; $sNumero = (string) $this->oDadosXML->IdentificacaoNfse->Numero; $iInscricaoMunicipal = (string) $this->oDadosXML->IdentificacaoNfse->InscricaoMunicipal; $iNumero = (int) substr($sNumero, 4, 11); $aAtributosContriobuinte = array("cnpj_cpf" => $sCnpj, "im" => $iInscricaoMunicipal); $sAmbiente = Zend_Controller_Front::getInstance()->getRequest()->getActionName(); if (DBSeller_Plugin_Auth::checkPermissionWebservice($sCnpj, "webservice/{$sAmbiente}/recepcionar-lote-rps")) { $aContribuinte = Administrativo_Model_UsuarioContribuinte::getByAttributes($aAtributosContriobuinte); foreach ($aContribuinte as $oContribuinte) { $this->oContribuinte = $oContribuinte; } /** * Verifica se existe contribuinte com o CNPJ e Inscrição Municipal informado */ if (empty($this->oContribuinte)) { $this->adicionarInconsistencia('E44'); $this->adicionarInconsistencia('E50'); } else { $iIdContribuinte = $this->oContribuinte->getId(); $aAtributosNota = array("id_contribuinte" => $iIdContribuinte, "nota" => $iNumero); /** * Retornar a entidade do array de notas */ $aNotas = Contribuinte_Model_Nota::getByAttributes($aAtributosNota); foreach ($aNotas as $oNota) { $this->oNota = $oNota; } /** * Verifica se existe nota */ if (empty($this->oNota)) { $this->adicionarInconsistencia('E78'); } else { $bNotaCancelada = $this->oNota->getCancelada(); /** * Verifica se a nota já está cancelada */ if ($bNotaCancelada) { $this->adicionarInconsistencia('E79'); } } } } else { $this->adicionarInconsistencia('E157'); $this->adicionarInconsistencia('Usuário sem permissão!'); } } }