/**
  * Processa o arquivo Webservice
  */
 public function consultaDados($oParametros)
 {
     try {
         $sNomeTempArquivo = TEMP_PATH . "/ConsultarSituacaoLoteRps-" . time() . ".xml";
         /* gravo o xml enviado */
         $fp = fopen($sNomeTempArquivo, "w");
         fwrite($fp, $oParametros);
         fclose($fp);
         /* carrega o arquivo em memoria para manipulação */
         $oXml = simplexml_load_file($sNomeTempArquivo);
         $oRetorno = new StdClass();
         $oRetorno->iNumeroLote = '';
         $oRetorno->iSituacao = 1;
         $oParametrosArquivo = $oXml->ConsultarSituacaoLoteRpsEnvio;
         if (!$this->validarRequisicao($oParametrosArquivo)) {
             return $this->processaRetornoWebService($oRetorno);
         }
         /**
          * Busca usuário contribuinte pelo cnpj_cpf
          */
         $oUsuarioContribuinte = Administrativo_Model_UsuarioContribuinte::getByAttribute('cnpj_cpf', $oParametrosArquivo->Prestador->Cnpj);
         if (empty($oUsuarioContribuinte)) {
             $this->adicionarInconsistencia('E45');
             return $this->processaRetornoWebService($oRetorno);
         }
         $oProtocolo = Administrativo_Model_Protocolo::getByAttribute('protocolo', $oParametrosArquivo->Protocolo);
         if (!$oProtocolo) {
             // situação de não recebido
             $oRetorno->iNumeroLote = $oParametrosArquivo->Protocolo;
             $oRetorno->iSituacao = 1;
             return $this->processaRetornoWebService($oRetorno);
         }
         $oProtocoloImportacao = Contribuinte_Model_ProtocoloImportacao::getByAttribute('protocolo', $oProtocolo->getId());
         if (!$oProtocoloImportacao->getImportacao()) {
             // situação de recebido mas processado com erro
             $oRetorno->iNumeroLote = $oProtocoloImportacao->getNumeroLote();
             $oRetorno->iSituacao = 3;
             return $this->processaRetornoWebService($oRetorno);
         }
         // situação de recebido e processado com sucesso
         $oRetorno->iNumeroLote = $oProtocoloImportacao->getNumeroLote();
         $oRetorno->iSituacao = 4;
         return $this->processaRetornoWebService($oRetorno);
     } catch (Exception $oErro) {
         return $oErro->getMessage();
     }
 }
 /**
  * Realiza a execução da pesquisa dos dados conforme arquivo de requisicao
  *
  * @param $sArquivo
  * @return string
  */
 public function processar($sArquivo)
 {
     if (empty($sArquivo)) {
         $this->adicionarInconsistencia('E160');
     }
     $sNomeTempArquivo = TEMP_PATH . "/ConsultarLoteRps-" . time() . ".xml";
     /* gravo o xml enviado */
     $fp = fopen($sNomeTempArquivo, "w");
     fwrite($fp, $sArquivo);
     fclose($fp);
     $this->oRequisicao = simplexml_load_string($sArquivo);
     if (empty($this->oRequisicao)) {
         $this->adicionarInconsistencia('E160');
     }
     if (!$this->validarRequisicao()) {
         return $this->escreverRetorno();
     }
     $sCnpj = $this->oRequisicao->Prestador->Cnpj;
     $sNumeroProtocolo = $this->oRequisicao->Protocolo;
     $oUsuarioContribuinte = Administrativo_Model_UsuarioContribuinte::getByAttribute('cnpj_cpf', $sCnpj);
     if (empty($oUsuarioContribuinte)) {
         $this->adicionarInconsistencia('E45');
     }
     $oProtocolo = Administrativo_Model_Protocolo::getByAttribute('protocolo', $sNumeroProtocolo);
     if (empty($oProtocolo)) {
         $this->adicionarInconsistencia('E86');
         return $this->escreverRetorno();
     }
     $oProtocoloImportacao = Contribuinte_Model_ProtocoloImportacao::getByAttribute('protocolo', $oProtocolo->getId());
     if (!$oProtocoloImportacao->getImportacao()) {
         $this->adicionarInconsistencia('E86');
         return $this->escreverRetorno();
     }
     $this->aNotas = $oProtocoloImportacao->getNotasImportadas();
     return $this->escreverRetorno();
 }
 /**
  *
  * @param integer $iTipo
  * @param string $sMensagem
  * @param integer $iNumeroLote
  * @param object $oDadosImportacao
  * @return Contribuinte_Model_ProtocoloImportacao
  */
 public function adicionaProtocolo($iTipo, $sMensagem, $iNumeroLote, $oDadosImportacao = NULL)
 {
     /**
      * Cria um protocolo para a operação executada
      */
     $oProtocolo = new Administrativo_Model_Protocolo();
     $oProtocoloCriado = $oProtocolo->criaProtocolo($iTipo, $sMensagem);
     /**
      * Cria o vinculo entre o protocolo e a importacao do arquivo
      */
     $oProtocoloImportacao = new Contribuinte_Model_ProtocoloImportacao();
     $oProtocoloImportacao->setProtocolo($oProtocoloCriado);
     if ($oDadosImportacao) {
         $oProtocoloImportacao->setImportacao($oDadosImportacao);
     }
     $oProtocoloImportacao->setNumeroLote($iNumeroLote);
     $oProtocoloImportacao->persist();
     return $oProtocolo;
 }