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