/**
  * Método para atualizar a versão do nota
  *
  * @param string $sVersaoNfseAtualizar
  * @return mixed
  * @throws Exception
  */
 public static function atualizaVersaoNfse($sVersaoNfseAtualizar)
 {
     try {
         $oEntidade = self::getEm();
         $sSql = 'SELECT MAX(v.ecidadeonline2) FROM Administrativo\\Versao v';
         $oQuery = $oEntidade->createQuery($sSql);
         $sVersaoAtual = $oQuery->getSingleScalarResult();
         // Verifica se foi informado uma versão para o NFS-e
         if (empty($sVersaoNfseAtualizar)) {
             throw new Exception('Informe a versão que deseja atualizar!');
         }
         $sVersaoSistemaAtualizacao = (int) str_replace('V', '', trim($sVersaoNfseAtualizar));
         $sVersaoSistemaImplantacao = (int) str_replace('V', '', trim($sVersaoAtual));
         // Verifica se a versão do nota informada é menor ou igual a primeira versão implantada
         if ($sVersaoSistemaAtualizacao < $sVersaoSistemaImplantacao) {
             $sMensagem = "Versão do NFS-e atualizada não é maior que a última modificação encontrada.<br>";
             $sMensagem .= "Versão NFS-e atualizada: {$sVersaoNfseAtualizar}<br>";
             $sMensagem .= "Versão NFS-e atual: {$sVersaoAtual}";
             throw new Exception($sMensagem);
         }
         $oVersaoNfse = Administrativo_Model_Versao::getByAttribute('ecidadeonline2', trim($sVersaoNfseAtualizar));
         if (empty($oVersaoNfse)) {
             $oQueryBuilder = $oEntidade->createQueryBuilder();
             $oQueryVersao = $oQueryBuilder->update('Administrativo\\Versao', 'v')->set('v.ecidadeonline2', '?1')->where('v.ecidadeonline2 = ?2')->setParameter(1, trim($sVersaoNfseAtualizar))->setParameter(2, trim($sVersaoAtual))->getQuery();
             $bRetorno = $oQueryVersao->execute();
             return $bRetorno;
         }
         return TRUE;
     } catch (Exception $oErro) {
         throw new WebService_Lib_Exception($oErro->getMessage(), $oErro, 'E01');
     }
 }
 /**
  * Configura o sistema
  *
  * @return Zend_Config
  */
 protected function _initConfig()
 {
     $aOpcaoConfiguracao = $this->getOptions();
     $oConfig = new Zend_Config($aOpcaoConfiguracao, TRUE);
     Zend_Registry::set('config', $oConfig);
     try {
         // Verifica se foi atualizado o sistema
         $sArquivoAtualizacao = APPLICATION_PATH . '/../versao.txt';
         if (file_exists($sArquivoAtualizacao)) {
             $sVersaoAtualizada = implode('', file($sArquivoAtualizacao));
             $aOpcaoConfiguracao['ecidadeonline2']['versao'] = trim($sVersaoAtualizada);
             $aOpcaoConfiguracao['settings']['application']['cache'] = trim($sVersaoAtualizada);
             Administrativo_Model_Versao::atualizaVersaoNfse($sVersaoAtualizada);
             $oConfig = new Zend_Config($aOpcaoConfiguracao, TRUE);
             Zend_Registry::set('config', $oConfig);
         }
         if (file_exists(APPLICATION_PATH . '/data/Ipx/webservice-ecidade.ini')) {
             $webservice = new Zend_Config_Ini(APPLICATION_PATH . '/data/Ipx/webservice-ecidade.ini', null, array('allowModifications' => TRUE));
             Zend_Registry::set('webservice.ecidade', $webservice);
         } else {
             throw new WebService_Lib_Exception(null, null, 'W03');
         }
     } catch (WebService_Lib_Exception $oErro) {
         DBSeller_Plugin_Notificacao::addErro($oErro->getCode(), $oErro->getMessage());
     }
     return $oConfig;
 }
 /**
  * Checa a versão do sistema compativel
  */
 public static function checkVersaoSistema()
 {
     try {
         $oSessao = self::capturaSessaoVersaoEcidade();
         $sConfigVersaoNfse = Zend_Registry::get('config')->ecidadeonline2->versao;
         $oVersaoNfse = Administrativo_Model_Versao::getByAttribute('ecidadeonline2', trim($sConfigVersaoNfse));
         $sVersaoSistemaAtualizacao = is_object($oVersaoNfse) ? $oVersaoNfse->getVersaoEcidade() : NULL;
         // Verifica se foi informado algum valor para comparação das versões
         if (empty($sVersaoSistemaAtualizacao) || empty($oSessao->versaoecidade)) {
             $sMensagemErro = 'Versão do E-cidade e do NFS-e não foram configuradas corretamente.<br>';
             $sMensagemErro .= "Versão E-Cidade atual: {$oSessao->versaoecidade}<br>";
             $sMensagemErro .= "Versão E-Cidade compatível: {$sVersaoSistemaAtualizacao}";
             throw new Exception($sMensagemErro, 400);
         }
         // Verifica se a versão do nota informada é menor ou igual a primeira versão implantada
         if (version_compare($sVersaoSistemaAtualizacao, $oSessao->versaoecidade, '>')) {
             $sMensagemErro = 'Versões do NFS-e e do E-cidade não são compatíveis.<br>';
             $sMensagemErro .= "Versão E-Cidade atual: {$oSessao->versaoecidade}<br>";
             $sMensagemErro .= "Versão E-Cidade compatível: {$sVersaoSistemaAtualizacao}";
             throw new Exception($sMensagemErro, 400);
         }
     } catch (Exception $oErro) {
         DBSeller_Plugin_Notificacao::addErro("W{$oErro->getCode()}", $oErro->getMessage());
     }
 }