/**
  * Método que retorna a quantidade de Notas Emitidas
  *
  * @param  integer $iInscricaoMunicipal
  * @param  integer $iTipoNota
  * @param  string  $sGrupoNota
  * @throws Exception
  * @return integer
  */
 public function getQuantidadesNotasEmissao($iInscricaoMunicipal, $iTipoNota = NULL, $sGrupoNota = NULL)
 {
     if (!$iInscricaoMunicipal) {
         throw new Zend_Exception('Informe uma Inscrição Municipal.');
     }
     if (!$iTipoNota && !$sGrupoNota) {
         throw new Zend_Exception('Informe o Tipo de Nota ou Grupo de Nota.');
     }
     if ($iTipoNota) {
         $oWebService = new WebService_Model_Ecidade();
         $aFiltro = array('inscricao_municipal' => $iInscricaoMunicipal, 'tipo_nota' => $iTipoNota);
         $aCampos = array('quantidade_notas_liberadas');
         $aRetorno = $oWebService::consultar('getQuantidadeNotasLiberadas', array($aFiltro, $aCampos));
     } else {
         $oWebService = new WebService_Model_Ecidade();
         $aFiltro = array('inscricao_municipal' => $iInscricaoMunicipal, 'grupo_nota' => $sGrupoNota);
         $aCampos = array('quantidade_notas_liberadas');
         $aRetorno = $oWebService::consultar('getQuantidadeAidofsLiberadasPorGrupoDocumento', array($aFiltro, $aCampos));
     }
     if (is_array($aRetorno)) {
         $iQuantidadeNotasEmitidas = Contribuinte_Model_DmsNota::getQuantidadeNotasEmitidas($iInscricaoMunicipal, $iTipoNota);
         return $aRetorno[0]->quantidade_notas_liberadas - $iQuantidadeNotasEmitidas;
     }
     DBSeller_Plugin_Notificacao::addAviso('Aidof01', "Não houve retorno do WebService do E-Cidade!");
     return 0;
 }
 /**
  * Processa a saída do usuário do sistema, limpando suas credenciais
  */
 public function indexAction()
 {
     $auth = Zend_Auth::getInstance();
     $auth->clearIdentity();
     DBSeller_Plugin_Notificacao::limpar();
     Zend_Session::destroy();
     $this->redirect('/auth/login/');
 }
 /**
  * Responsavél pelas ações de limpar todas ou remover uma notificação da sessão
  */
 public function removerAction()
 {
     parent::noTemplate();
     $aParametros = $this->getRequest()->getParams();
     // Verificação para remover somente uma notificação ou todas
     if (isset($aParametros['tipo']) && isset($aParametros['codigo'])) {
         $sMensagem = "Notificação de '{$aParametros['tipo']}' removida da sessão.";
         DBSeller_Plugin_Notificacao::remove($aParametros['tipo'], $aParametros['codigo']);
     } else {
         $sMensagem = 'Todas as notificações foram removidas da sessão.';
         DBSeller_Plugin_Notificacao::limpar();
     }
     $iCount = DBSeller_Plugin_Notificacao::getCountAll();
     // Parametros de retorno do AJAX
     $aRetornoJson = array('status' => TRUE, 'message' => $sMensagem, 'count' => $iCount);
     echo $this->getHelper('json')->sendJson($aRetornoJson);
 }
 /**
  * Página inicial do módulo padrão
  */
 public function indexAction()
 {
     // Verifica se o usuário está logado
     parent::checkIdentity();
     // Zera as permissões do contribuinte
     $oSessao = new Zend_Session_Namespace('nfse');
     $oSessao->contribuinte = NULL;
     $this->view->contribuinte = NULL;
     $this->_session->id = NULL;
     $this->view->iUsuarioEscolhido = $oSessao->iUsuarioEscolhido;
     $aAuth = Zend_Session::namespaceGet('Zend_Auth');
     $oUsuario = Administrativo_Model_Usuario::getById($aAuth['storage']['id']);
     if ($oUsuario->getTipo() == 3) {
         $oBaseUrl = new Zend_View_Helper_BaseUrl();
         // Verifica se possui cadastros eventuais
         $aCadastrosEventuais = Contribuinte_Model_CadastroPessoa::getCadastrosParaLiberacao();
         if (count($aCadastrosEventuais) > 0) {
             $sMensagem = "Hà " . count($aCadastrosEventuais) . " Cadastros Eventuais Pendentes <br/>";
             $sMensagem .= " <a href=" . $oBaseUrl->baseUrl("/fiscal/usuario-eventual/listar-novos-cadastros") . "> Verificar </a>";
             DBSeller_Plugin_Notificacao::addAviso('F001', $sMensagem);
         }
         // Verifica se possui solicitações de cancelamento
         $aSolicitacoesCancelamento = Contribuinte_Model_SolicitacaoCancelamento::getAll();
         if (count($aSolicitacoesCancelamento) > 0) {
             $sMensagem = "Hà " . count($aSolicitacoesCancelamento) . " Solicitações de cancelamento de NFS-e <br/>";
             $sMensagem .= " <a href=" . $oBaseUrl->baseUrl("/fiscal/cancelamento-nfse/consultar") . "> Verificar </a>";
             DBSeller_Plugin_Notificacao::addAviso('F002', $sMensagem);
         }
     }
     // Tiver apenas um módulo redireciona para a default/index
     if (isset($this->view->user) && count($this->view->user->getModulos()) == 1) {
         $aModulos = each($this->view->user->getModulos());
         $sModulo = strtolower($aModulos['value']->getNome());
         $this->_redirector->gotoSimple('index', 'index', $sModulo);
     }
     // Recria as permissões do usuário
     new DBSeller_Acl_Setup(TRUE);
 }
 /**
  * Tela inicial do módulo fiscal
  *
  *  @return void
  */
 public function indexAction()
 {
     $aAuth = Zend_Session::namespaceGet('Zend_Auth');
     $oUsuario = Administrativo_Model_Usuario::getById($aAuth['storage']['id']);
     if ($oUsuario->getTipo() == 3) {
         $oBaseUrl = new Zend_View_Helper_BaseUrl();
         // Verifica se possui cadastros eventuais
         $aCadastrosEventuais = Contribuinte_Model_CadastroPessoa::getCadastrosParaLiberacao();
         if (count($aCadastrosEventuais) > 0) {
             $sMensagem = "Hà " . count($aCadastrosEventuais) . " Cadastros Eventuais Pendentes <br/>";
             $sMensagem .= " <a href=" . $oBaseUrl->baseUrl("/fiscal/usuario-eventual/listar-novos-cadastros") . "> Verificar </a>";
             DBSeller_Plugin_Notificacao::addAviso('F001', $sMensagem);
         }
         // Verifica se possui solicitações de cancelamento
         $aSolicitacoesCancelamento = Contribuinte_Model_SolicitacaoCancelamento::getAll();
         if (count($aSolicitacoesCancelamento) > 0) {
             $sMensagem = "Hà " . count($aSolicitacoesCancelamento) . " Solicitações de cancelamento de NFS-e <br/>";
             $sMensagem .= " <a href=" . $oBaseUrl->baseUrl("/fiscal/cancelamento-nfse/consultar") . "> Verificar </a>";
             DBSeller_Plugin_Notificacao::addAviso('F002', $sMensagem);
         }
     }
     $this->view->oculta_breadcrumbs = TRUE;
 }
 /**
  * Retorna os dados da prefeitura do webservice
  *
  * @tutorial Campos de Retorno para exemplo:
  *           $oRetorno->sDescricao                = PREFEITURA MUNICIPAL DE TESTE DO SUL
  *           $oRetorno->sDescricaoAbreviada       = PM TESTE DO SUL
  *           $oRetorno->sCnpj                     = XXXXXXXXXXXXXXX
  *           $oRetorno->sLogradouro               = LOGRADOURO DA PREFEITURA
  *           $oRetorno->sMunicipio                = MUNICIPIO
  *           $oRetorno->sBairro                   = BAIRRO
  *           $oRetorno->sTelefone                 = XX XXXXXXXX
  *           $oRetorno->sSite                     = www.prefeitura.rs.gov.br
  *           $oRetorno->sEmail                    = contato@prefeitura.rs.gov.br
  *           $oRetorno->iCodigoMunicipio          = 531654
  *           $oRetorno->iNumeroCgm                = 5
  *           $oRetorno->sLogoPrefeituraBaseEncode = files/imagens/brasao_5249e01492774.jpg
  * @return mixed
  * @throws Exception
  */
 public static function getDadosPrefeituraWebService()
 {
     try {
         $aValores = array('lprefeitura' => TRUE);
         $oDadosRetorno = WebService_Model_Ecidade::processar('DadosPrefeitura', $aValores);
         if ($oDadosRetorno->sLogoPrefeituraBaseEncode != '') {
             $sImagem = $oDadosRetorno->sLogoPrefeituraBaseEncode;
             $sImagem = str_replace('data:image/png;base64,', '', $sImagem);
             $sImagem = str_replace(' ', '+', $sImagem);
             $oImagemDados = base64_decode($sImagem);
             $sNomeArquivo = 'brasao.jpg';
             $lSucesso = file_put_contents('global/img/' . $sNomeArquivo, $oImagemDados);
             unset($oDadosRetorno->sLogoPrefeituraBaseEncode);
             if (!$lSucesso) {
                 DBSeller_Plugin_Notificacao::addErro('W005', 'Problemas ao importar o arquivo logo da prefeitura.');
                 throw new Exception('Problemas ao importar o arquivo logo da prefeitura.');
             }
         }
         return $oDadosRetorno;
     } catch (Exception $oErro) {
         DBSeller_Plugin_Notificacao::addErro('W006', "Erro para carregar dados da Prefeitura: {$oErro->getMessage()}");
         throw new Exception("Erro para carregar dados da Prefeitura: {$oErro->getMessage()}");
     }
 }
 /**
  * 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;
 }
 /**
  * Método que busca do e-cidade os dados da empresa agruapada por Inscrição Municipal
  * @param  string $sCnpj
  * @return array  $aContribuinte
  * @throws Exception
  */
 public function getInscricaoMunicipalByCpjCnpj($sCnpj)
 {
     try {
         if ($sCnpj != NULL) {
             // Limpa máscaras
             $iCnpj = DBSeller_Helper_Number_Format::getNumbers($sCnpj);
             // Consulta WebService
             $aParametros = array(array('cnpj' => $iCnpj), self::$aCampos['getDadosEmpresa']);
             $aContribuinte = WebService_Model_Ecidade::consultar('getDadosEmpresa', $aParametros);
             return $aContribuinte;
         }
     } catch (Exception $oError) {
         DBSeller_Plugin_Notificacao::addErro('W009', "Erro ao consultar as Inscrições Municipais do Contribuinte: {$oError->getMessage()}");
         throw new Exception("Erro ao consultar as Inscrições Municipais do Contribuinte: {$oError->getMessage()}");
     }
 }
 /**
  * Gera declaracao de insencao de ISSQN Variavel (Declaracao de Sem Movimento)
  *
  * @return array|null
  * @throws Exception
  */
 public function gerarDeclaracaoSemMovimento()
 {
     try {
         $aParamentos = array('inscricaomunicipal' => $this->oContribuinte->getInscricaoMunicipal(), 'mes' => $this->iMesCompetencia, 'ano' => $this->iAnoCompetencia);
         $aRetorno = WebService_Model_Ecidade::processar('CancelamentoISSQNVariavel', $aParamentos);
     } catch (Exception $oErro) {
         DBSeller_Plugin_Notificacao::addErro('W007', "Erro ao declarar sem movimento: {${$oErro}->getMessage()}");
         throw new Exception(sprintf($this->translate->_('Erro ao declarar sem movimento: %s'), $oErro->getMessage()));
     }
     return $aRetorno;
 }
 /**
  * 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());
     }
 }
 /**
  * Gera a guia do tomador no eCidade
  *
  * @param $iCodigoPlanilha
  * @deprecated
  * @return mixed
  * @throws Exception
  */
 public static function gerarGuiaTomador($iCodigoPlanilha)
 {
     DBSeller_Plugin_Notificacao::addErro('Metodo Deprecated Contribuinte_Model_GuiaEcidade::gerarGuiaTomador');
     throw new Exception('Metodo Deprecated Contribuinte_Model_GuiaEcidade::gerarGuiaTomador');
     /*
     $oData                            = new DateTime();
     $aDados                           = array(
       'codigo_planilha' => $iCodigoPlanilha,
       'data'            => $oData->format('Y-m-d')
     );
     $oRetornoWebService               = Contribuinte_Lib_Model_WebService::processar('gerarGuiaTomador', $aDados);
     $oRetornoWebService->arquivo_guia = self::salvarPdf($oRetornoWebService->arquivo_guia, 'guia_substituto');
     
     return $oRetornoWebService;
     */
 }