/**
  * Método construtor
  */
 public function __construct()
 {
     $oSessao = Zend_Session::namespaceGet('sessao');
     if (isset($oSessao['acl'])) {
         $this->_auth = Zend_Auth::getInstance();
         self::$_acl = $oSessao['acl'];
     }
 }
 /**
  * Carrega a autenticação do usuario de acordo com o retorno da validação do certificado
  * 
  * @param string $sLoginUsuario
  * @throws Exception
  * @return boolean
  */
 public function autenticaUsuario($sLoginUsuario)
 {
     try {
         $oEntityManager = Zend_Registry::get('em');
         $oAuthAdapter = new Doctrine_Auth_Adapter($oEntityManager, 'Administrativo\\Usuario', 'login', 'senha');
         $oAuthAdapter->setIdentity($sLoginUsuario);
         $oAuthAdapter->setCredential('');
         $oAuth = Zend_Auth::getInstance();
         $iStatus = $oAuth->authenticate($oAuthAdapter)->getCode();
         if (in_array($iStatus, array(1, -3))) {
             $sLogin = $oAuth->getIdentity();
             $oUser = Administrativo_Model_Usuario::getByAttribute('login', $sLoginUsuario);
             if ($oUser && $oUser->getHabilitado()) {
                 Zend_Auth::getInstance()->getStorage()->write(array('id' => $oUser->getId(), 'login' => $sLoginUsuario));
             } else {
                 $this->oModeloImportacao->setMensagemErro('E157', 'Usuário não habilitado');
             }
         } else {
             $this->oModeloImportacao->setMensagemErro('E157', 'Usuário Inválido');
         }
         /**
          * Verifica se ocorreu algum erro no processamentos dos dados na importacao
          */
         if ($this->oModeloImportacao->getErro()) {
             return $this->oModeloImportacao->processaErroWebService(NULL);
         }
         /**
          * Reecreve os dados e permissões de sessão na ACL
          */
         new DBSeller_Acl_Setup(TRUE);
         /**
          * Verifica a permissão de execução da ação conforme liberação do usuário
          */
         $sAmbiente = Zend_Controller_Front::getInstance()->getRequest()->getActionName();
         if (!DBSeller_Plugin_Auth::checkPermission("webservice/{$sAmbiente}/recepcionar-lote-rps")) {
             return FALSE;
         }
         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!');
         }
     }
 }