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