/**
  * La todas as notificacoes referentes ao usuario
  * @param Administrativo_Model_Usuario $usuario
  */
 public static function getNotificacoesUsuario(Administrativo_Model_Usuario $usuario)
 {
     $notificacoes = array();
     if ($usuario->getAdministrativo()) {
         $notificacoes = array_merge(self::getNotificacoesCadastro($usuario), self::getNotificacoesRequisicaoRps($usuario));
     }
     return $notificacoes;
 }
 /**
  * Busca a aliquota por servico [Json]
  */
 public function emissaoManualBuscarDadosServicoAction()
 {
     try {
         // Perfil do usuario
         $iIdPerfil = $this->oUsuario->getPerfil()->getId();
         $iIdServico = $this->getParam('id_servico');
         $aRetornoJson = array();
         // Ignora se for prestador eventual
         if ($iIdPerfil != 6) {
             $aServicos = Contribuinte_Model_Servico::getByIm($this->oContribuinte->getInscricaoMunicipal(), FALSE);
             if (is_array($aServicos)) {
                 foreach ($aServicos as $oServico) {
                     if ($oServico->attr('cod_atividade') == $iIdServico) {
                         $aRetornoJson = array('item_servico' => $oServico->attr('desc_item_servico'), 'cod_item_servico' => $oServico->attr('cod_item_servico'), 'estrut_cnae' => $oServico->attr('estrut_cnae'), 'deducao' => $oServico->attr('deducao'), 'aliq' => DBSeller_Helper_Number_Format::toMoney($oServico->attr('aliq')));
                         break;
                     }
                 }
             }
         }
         echo $this->getHelper('json')->sendJson($aRetornoJson);
     } catch (Exception $e) {
         $aRetorno['erro'] = TRUE;
         if ($e->getCode() == Global_Lib_Model_WebService::CODIGO_ERRO_CONSULTA_WEBSERVICE) {
             $aRetorno['mensagem'] = "E-cidade temporariamente insdisponível. Emissão bloqueada!";
         } else {
             $aRetorno['mensagem'] = $e->getMessage();
         }
         echo $this->getHelper('json')->sendJson($aRetorno);
     }
 }
 /**
  * Cria um novo protocolo
  * @param int $iTipo
  * @param string $sMensagem
  * @param null $sCaminhoSistema
  * @throws Exception
  */
 public function criaProtocolo($iTipo = 3, $sMensagem, $sCaminhoSistema = NULL)
 {
     if (!$sMensagem) {
         throw new Exception('Informe uma mensagem!');
     }
     if (empty(self::$aTiposProtocolo[$iTipo])) {
         throw new Exception('Tipo de Protocolo está inválido!');
     }
     try {
         /**
          * Monta a rota executada pelo sistema
          */
         if (empty($sCaminhoSistema)) {
             $sSistemaEmUso = Zend_Controller_Front::getInstance()->getRequest();
             $sCaminhoSistema = $sSistemaEmUso->getModuleName() . '/' . $sSistemaEmUso->getControllerName() . '/' . $sSistemaEmUso->getActionName();
         }
         $oDataProcessamento = new DateTime();
         $sLoginUsuario = Zend_Auth::getInstance()->getIdentity();
         $oUsuario = Administrativo_Model_Usuario::getByAttribute('login', $sLoginUsuario['login']);
         $sData = $oDataProcessamento->format('Y-m-d\\TH:i:s');
         $sCodigoProtocolo = SHA1(rand() . $sData . $aCodigoUsuario['id'] . time());
         $this->setProtocolo($sCodigoProtocolo);
         $this->setTipo($iTipo);
         $this->setMensagem(trim($sMensagem));
         $this->setSistema(trim($sCaminhoSistema));
         $this->setUsuario($oUsuario->getEntity());
         $this->setDataProcessamento($oDataProcessamento);
         $this->getEm()->persist($this->getEntity());
         $this->getEm()->flush();
     } catch (Exception $oErro) {
         throw new Exception($oErro->getMessage());
     }
     return $this->getEntity();
 }
 /**
  * Lista todos os usuarios do sistema para o fiscal
  * poder acessa-lo
  */
 public function listarCadastrosAction()
 {
     // retornar os contadores e contribuintes
     $aParametros = array('habilitado' => true, 'tipo' => array(1, 2));
     $aOrdem = array('nome' => 'ASC');
     $oUsuarios = Administrativo_Model_Usuario::getByAttributes($aParametros, $aOrdem);
     $this->view->aUsuarios = $oUsuarios;
 }
 /**
  * Retorna o objeto do usuario
  *
  * @return ambiguos <Administrativo_Model_Usuario(), null>
  */
 public static function getAuthData()
 {
     $oAuth = Zend_Auth::getInstance();
     $sLogin = $oAuth->getIdentity();
     if (isset($sLogin['login'])) {
         return Administrativo_Model_Usuario::getByAttribute('login', $sLogin['login']);
     }
     return NULL;
 }
 /**
  * @param Administrativo_Model_Usuario $usuario
  * @param integer $contribuinte
  * @return Administrativo_Model_UsuarioContribuinte[]
  */
 public static function getByUsuarioContribuinte($usuario, $contribuinte)
 {
     $qb = parent::getEm()->createQueryBuilder();
     $qb->select('uc')->from(self::$entityName, 'uc')->where('1=1');
     if ($usuario !== null) {
         $qb->andWhere('uc.usuario = :u');
         $qb->setParameter('u', $usuario->getEntity());
     }
     if ($contribuinte !== null) {
         $qb->andWhere('uc.im = :c');
         $qb->setParameter('c', $contribuinte);
     }
     $a = array();
     foreach ($qb->getQuery()->getResult() as $r) {
         $a[] = new Administrativo_Model_UsuarioContribuinte($r);
     }
     return $a;
 }
 /**
  * Construtor da classe Modelo Relatório
  */
 public function carregaDados()
 {
     $aIdentity = Zend_Auth::getInstance()->getIdentity();
     $this->oDadosPrefeitura = Administrativo_Model_Prefeitura::getDadosPrefeituraBase();
     $this->oDadosUsuario = Administrativo_Model_Usuario::getById($aIdentity['id']);
     $this->SetFillColor(220, 220, 220);
     $this->AddPage();
     $this->SetAutoPageBreak(TRUE, 12);
 }
 /**
  * Busca no webservice todos os contadores cadastrados
  * @param boolean $com_usuario TRUE para buscar todos inclusive os que ja tem usuário cadastrado
  * @return Administrativo_Model_Contador
  */
 public static function getAll($com_usuario = false)
 {
     $result = self::get(array());
     $a = array();
     foreach ($result as $r) {
         if (!$com_usuario) {
             $usuario = Administrativo_Model_Usuario::getByAttribute('cnpj', $r->cnpj);
             if ($usuario === null) {
                 $a[] = new self($r);
             }
         } else {
             $a[] = new self($r);
         }
     }
     return $a;
 }
 /**
  * Recursos / Previlegios
  */
 protected function _setupResourcesPrivilegesUserAuth()
 {
     $aDadosLogin = Zend_Auth::getInstance()->getIdentity();
     $oUsuario = Administrativo_Model_Usuario::getByAttribute('login', $aDadosLogin["login"]);
     $oContribuinte = new Zend_Session_Namespace('nfse');
     if (!isset($oContribuinte->contribuinte)) {
         $aUsuarioAcoes = $oUsuario->getAcoes();
         if (is_array($aUsuarioAcoes) && count($aUsuarioAcoes) > 0) {
             foreach ($aUsuarioAcoes as $oUsuarioAcao) {
                 $sControle = $oUsuarioAcao->getControle()->getIdentidade();
                 $sModulo = $oUsuarioAcao->getControle()->getModulo()->getIdentidade();
                 $oResource = new Zend_Acl_Resource("{$sModulo}:{$sControle}");
                 if (!$this->_acl->has($oResource->getResourceId())) {
                     $this->_acl->addResource($oResource);
                 }
                 $oAcoesExtra = explode(',', trim($oUsuarioAcao->getSubAcoes()));
                 $aAcoesExtra = array_merge($oAcoesExtra, array($oUsuarioAcao->getAcaoAcl()));
                 foreach ($aAcoesExtra as $sAcao) {
                     if (empty($sAcao)) {
                         continue;
                     }
                     $this->_acl->allow('Usuario', $oResource->getResourceId(), $sAcao);
                 }
             }
         }
     }
     if (!empty($oContribuinte->contribuinte)) {
         $iCodigoUsuarioContribuinte = $oContribuinte->contribuinte->getIdUsuarioContribuinte();
         $oUsuarioContribuinte = Administrativo_Model_UsuarioContribuinte::getById($iCodigoUsuarioContribuinte);
         foreach ($oUsuarioContribuinte->getUsuarioContribuinteAcoes() as $oPermissoes) {
             $oAcoesExtra = explode(',', trim($oPermissoes->getAcao()->getSubAcoes()));
             $aAcoesExtra = array_merge($oAcoesExtra, array($oPermissoes->getAcao()->getAcaoAcl()));
             $sModulo = $oPermissoes->getAcao()->getControle()->getModulo()->getIdentidade();
             $sControle = $oPermissoes->getAcao()->getControle()->getIdentidade();
             $oResource = new Zend_Acl_Resource("{$sModulo}:{$sControle}");
             if (!$this->_acl->has($oResource->getResourceId())) {
                 $this->_acl->addResource($oResource);
             }
             foreach ($aAcoesExtra as $sAcao) {
                 if (empty($sAcao)) {
                     continue;
                 }
                 $this->_acl->allow('Usuario', $oResource->getResourceId(), $sAcao);
             }
         }
     }
 }
 /**
  * Cria Formulário
  *
  * @see Zend_Form::init()
  */
 public function init()
 {
     $oBaseUrlHelper = new Zend_View_Helper_BaseUrl();
     $this->setName('formConsulta');
     $this->setMethod(Zend_form::METHOD_POST);
     $this->setAction($oBaseUrlHelper->baseUrl('/administrativo/protocolo/consulta-processar'));
     /**
      * Consulta usuários ativos
      */
     $aUsuarios = Administrativo_Model_Usuario::getByAttributes(array('habilitado' => true, 'tipo' => array(1, 2)), array('nome' => 'ASC'));
     $aListaUsuarios = array('' => 'Selecione');
     foreach ($aUsuarios as $oUsuario) {
         $aListaUsuarios[$oUsuario->getId()] = trim(DBSeller_Helper_String_Format::wordsCap($oUsuario->getNome()));
     }
     $oElm = $this->createElement('select', 'usuario', array('multiOptions' => $aListaUsuarios, 'divspan' => '10'));
     $oElm->setLabel('Usuário/Contribuinte:');
     $oElm->setAttrib('class', 'input-xlarge span4');
     $oElm->setValue(NULL);
     $this->addElement($oElm);
     $oElm = $this->createElement('text', 'data_processamento_inicial', array('divspan' => '5'));
     $oElm->setLabel('Data Inicial:');
     $oElm->setAttrib('class', 'span2');
     $oElm->addValidator(new Zend_Validate_Date(array('locale' => 'pt-Br')));
     $oElm->removeDecorator('errors');
     $this->addElement($oElm);
     $oElm = $this->createElement('text', 'data_processamento_final', array('divspan' => '5'));
     $oElm->setLabel('Data Final:');
     $oElm->setAttrib('class', 'span2');
     $oElm->addValidator(new Zend_Validate_Date(array('locale' => 'pt-Br')));
     $oElm->removeDecorator('errors');
     $this->addElement($oElm);
     $oElm = $this->createElement('select', 'ordenacao', array('divspan' => '5'));
     $oElm->setLabel('Ordenação:');
     $oElm->setAttrib('class', 'span2');
     $oElm->addMultiOptions(array('asc' => 'Crescente', 'desc' => 'Decrescente'));
     $oElm->removeDecorator('errors');
     $oElm->setRequired(TRUE);
     $this->addElement($oElm);
     $oElm = $this->createElement('text', 'protocolo', array('divspan' => '5'));
     $oElm->setLabel('Número do Protocolo:');
     $oElm->setAttrib('class', 'span2');
     $oElm->removeDecorator('errors');
     $this->addElement($oElm);
     $this->addElement('submit', 'btn_consultar', array('divspan' => 2, 'label' => 'Consultar', 'class' => 'input-medium', 'buttonType' => Twitter_Bootstrap_Form_Element_Button::BUTTON_PRIMARY));
     $this->addDisplayGroup(array('usuario', 'data_processamento_inicial', 'data_processamento_final', 'ordenacao', 'protocolo', 'btn_consultar'), 'dados_consulta', array('legend' => 'Parâmetros'));
     return $this;
 }
 public function alteraUser()
 {
     // retorna os dados do fiscal para o sistema.
     if (isset($this->_session->iUsuarioEscolhido)) {
         // Seta os dados do usuário logado no sistema
         $aLogin = Zend_Auth::getInstance()->getIdentity();
         $oUsuarioLogado = Administrativo_Model_Usuario::getByAttribute('login', $aLogin['login']);
         $this->user = $oUsuarioLogado;
         $this->view->user = $oUsuarioLogado;
         $this->view->layout()->user = $oUsuarioLogado;
         $this->_session->id = NULL;
         $this->_session->contribuinte = NULL;
         unset($this->_session->iUsuarioEscolhido);
         // Reseta permissões
         new DBSeller_Acl_Setup(TRUE);
     }
 }
 public function init()
 {
     $this->view->messages = $this->_helper->getHelper('FlashMessenger')->getMessages();
     $this->_redirector = $this->_helper->getHelper('Redirector');
     $this->_ajaxContext = $this->_helper->getHelper('AjaxContext');
     // pega login do usuario para mostrar no layout
     $login = Zend_Auth::getInstance()->getIdentity();
     $this->view->user = Administrativo_Model_Usuario::getByAttribute('login', $login['login']);
     $this->view->moduleName = $this->getRequest()->getModuleName();
     // inicializa variavel sessao
     $this->_session = new Zend_Session_Namespace('nfse');
     $this->view->contribuinte = $this->_session->contribuinte;
     // verifica quantidade de notificações para o usuário logado
     if ($this->view->user !== null) {
         $notificacoes = Default_Model_Notificacao::getNotificacoesUsuario($this->view->user);
         $this->view->qtd_notif = count($notificacoes) == 0 ? '' : count($notificacoes);
     }
 }
 /**
  * Retorna contribuinte pela inscrição municipal
  *
  * @param $iInscricaoMunicipal
  * @return Contribuinte_Model_Contribuinte|null|object
  */
 public static function getByInscricaoMunicipal($iInscricaoMunicipal)
 {
     $oContribuinteWebService = NULL;
     if ($iInscricaoMunicipal != NULL) {
         $oContribuinteWebService = self::getDadosContribuinteEcidade($iInscricaoMunicipal);
         $iUsuarioLogadoSessao = Zend_Auth::getInstance()->getIdentity();
         $iUsuarioLogado = Administrativo_Model_Usuario::getById($iUsuarioLogadoSessao['id']);
         $oUsuarioContribuinte = Administrativo_Model_UsuarioContribuinte::getByUsuarioContribuinte($iUsuarioLogado, $iInscricaoMunicipal);
         // verifica se tá cadastrado e se tem contribuinte vinculado no nota.
         if (empty($oUsuarioContribuinte) || is_array($oUsuarioContribuinte) && count($oUsuarioContribuinte) == 1) {
             $oContribuinte = self::preencherInstanciaContribuinte($oContribuinteWebService);
             // caso não exista ela não está cadastrado no nota então ele não tem id ainda
             if (!empty($oUsuarioContribuinte)) {
                 $oContribuinte->setIdUsuarioContribuinte($oUsuarioContribuinte[0]->getId());
             }
             return $oContribuinte;
         }
     }
     return NULL;
 }
 /**
  * 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;
 }
 /**
  * Comprovante de importação de RPS
  */
 public function rpsReciboAction()
 {
     parent::noLayout();
     $iIdImportacao = $this->_getParam('id');
     $oDoctrine = Zend_Registry::get('em');
     $oImportacao = $oDoctrine->find('\\Contribuinte\\ImportacaoArquivo', $iIdImportacao);
     $oDadosUsuario = Administrativo_Model_Usuario::getById($oImportacao->getIdUsuario());
     $oPrefeitura = Administrativo_Model_ParametroPrefeitura::getAll();
     // Dados da View
     $this->view->oImportacao = $oImportacao;
     $this->view->oDadosUsuario = $oDadosUsuario;
     $this->view->oDadosPrefeitura = $oPrefeitura[0];
     $this->view->sNomePrefeitura = $oPrefeitura[0]->getEntity()->getNome();
     // Carrega a view do comprovante
     $sHtml = $this->view->render('importacao-arquivo/comprovante-importacao-rps.phtml');
     // Renderiza a view do comprovante
     $this->renderPdf($sHtml, 'comprovante-importacao-rps', array('format' => 'A4'));
 }
 /**
  * Adiciona o usuario que efetuou o cancelamento
  *
  * @param Administrativo_Model_Usuario $oUsuario
  */
 public function setUsuarioCancelamento(Administrativo_Model_Usuario $oUsuario)
 {
     $this->setUsuario($oUsuario->getEntity());
 }
 /**
  * Busca permissões do usuário
  */
 public function getPermissaoAction()
 {
     $iIdUsuarioContribuinte = $this->_getParam('usuario_contribuinte');
     $oUsuarioContribuinte = Administrativo_Model_UsuarioContribuinte::getById($iIdUsuarioContribuinte);
     $aRetornoJson = array();
     if ($oUsuarioContribuinte) {
         $aAcoes = $oUsuarioContribuinte->getAcoes();
         foreach ($aAcoes as $oAcao) {
             $aRetornoJson[] = $oAcao->getId();
         }
     } else {
         $iIdUsuario = $this->_getParam('usuario');
         $oUsuario = Administrativo_Model_Usuario::getById($iIdUsuario);
         foreach ($oUsuario->getAcoes() as $oAcao) {
             $aRetornoJson[] = $oAcao->getId();
         }
     }
     echo $this->getHelper('json')->sendJson($aRetornoJson);
 }
 /**
  * Cria a Senha e Atualiza o os dados dado usuário
  */
 public function recuperarSenhaPostAction()
 {
     $oRequest = $this->getRequest();
     $aRetornoJson = array();
     $aRetornoJson['status'] = TRUE;
     $aRetornoJson['message'] = '';
     $oDoctrine = Zend_Registry::get('em');
     try {
         $oDoctrine->getConnection()->beginTransaction();
         if ($oRequest->isPost() || $oRequest->isGet()) {
             $oForm = new Auth_Form_RecuperarSenha();
             if ($oRequest->senha != $oRequest->senharepetida) {
                 $aRetornoJson['fields'] = array('senha', 'senharepetida');
                 throw new Exception($this->translate->_('As senhas informadas não correspondem.'));
             }
             if (!$oForm->isValid($oRequest->getParams())) {
                 $aRetornoJson['fields'] = array_keys($oForm->getMessages());
                 throw new Exception($this->translate->_('Preencha os dados corretamente.'));
             }
             /**
              * Buscamos o usuário pelo email
              */
             $oQueryAtivos = Administrativo_Model_Usuario::getQuery();
             $oQueryAtivos->select('e');
             $oQueryAtivos->from('\\Administrativo\\Usuario', "e");
             $oQueryAtivos->where("e.email = '{$oForm->email->getValue()}' and e.habilitado = true");
             $aEntitiesUsuarios = $oQueryAtivos->getQuery()->getResult();
             if (count($aEntitiesUsuarios) != 1) {
                 throw new Exception($this->translate->_('Email informado não é um cadastro válido.'));
             }
             $oUsuario = new Administrativo_Model_Usuario($aEntitiesUsuarios[0]);
             /**
              * Recriamos o hash do usuario. caso nao seja o mesmo enviado, negamos a troca de senha
              */
             $sHashUsuario = $oUsuario->criarHash();
             if ($sHashUsuario != $oRequest->getParam('hash')) {
                 throw new Exception($this->translate->_('Código de verificação informado é inválido.'));
             }
             $oUsuario->setSenha($oRequest->getParam('senha'));
             $oUsuario->persist();
             $oDoctrine->getConnection()->commit();
             $aRetornoJson['success'] = $this->translate->_('Senha alterada com sucesso.');
             $aRetornoJson['login'] = $oUsuario->getLogin();
             $aRetornoJson['url'] = $this->view->baseUrl('/auth/login');
         }
     } catch (Exception $eErro) {
         $oDoctrine->getConnection()->rollback();
         $aRetornoJson['status'] = FALSE;
         $aRetornoJson['error'][] = $eErro->getMessage();
     }
     echo $this->getHelper('json')->sendJson($aRetornoJson);
 }
 /**
  * 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());
     }
 }
 /**
  * Envia um email com os dados para Recuperacao/alteração da senha do usuário
  * @param Administrativo_Model_Usuario $oUsuario instancia do usuario
  */
 public static function enviarEmailSenha(Administrativo_Model_Usuario $oUsuario)
 {
     $sHash = $oUsuario->criarHash();
     $oView = new Zend_View();
     $oView->setScriptPath(APPLICATION_PATH . '/modules/auth/views/scripts/login/');
     $oView->sUrlRecuperarSenha = $oView->serverUrl("/auth/login/recuperar-senha/hash/{$sHash}");
     $oView->nome = $oUsuario->getEntity()->getNome();
     $sTextoEmail = $oView->render('email-recuperacao-senha.phtml');
     $oTranslate = Zend_Registry::get('Zend_Translate');
     DBSeller_Helper_Mail_Mail::send($oUsuario->getEmail(), $oTranslate->_('ECidadeOnline2 - Recuperação de Senha'), $sTextoEmail);
 }
 /**
  * Método responsável pelo envio de email no cancelamento ou na solicitação do mesmo
  *
  * @param $oNota
  * @param $oSolicitacao
  * @param $sJustificativaFiscal
  * @return null|string
  */
 public function enviarEmailRejeicao($oNota, $oSolicitacao, $sJustificativaFiscal)
 {
     //Retorna os usuarios do tipo fiscal
     $aUsuariosFiscal = Administrativo_Model_Usuario::getByAttribute('tipo', Administrativo_Model_Usuario::USUARIO_TIPO_FISCAL);
     //Remove o usuário admin do array
     if ($aUsuariosFiscal[0]->getAdministrativo()) {
         unset($aUsuariosFiscal[0]);
     }
     $aEmailBCC = array();
     //Pega os emails cadastrados dos usuarios fiscais
     foreach ($aUsuariosFiscal as $oUsuarioFiscal) {
         $sEmail = $oUsuarioFiscal->getEmail();
         if (!is_null($sEmail) && $sEmail != '') {
             $aEmailBCC[] = $sEmail;
         }
     }
     $oValidadorEmail = new Zend_Validate_EmailAddress();
     $emailTO = $oNota->getT_email();
     $sMensagemRetorno = NULL;
     $sEmailTomador = $oSolicitacao->getEmailTomador();
     if ($oValidadorEmail->isValid($emailTO) || !empty($sEmailTomador) && $oValidadorEmail->isValid($sEmailTomador) || count($aEmailBCC) > 0) {
         $iInscricaoMunicipal = $oNota->getP_im();
         $oContribuinte = Contribuinte_Model_Contribuinte::getByInscricaoMunicipal($iInscricaoMunicipal);
         $this->view->nota = $oNota;
         $this->view->justificativa_fiscal = $sJustificativaFiscal;
         $this->view->tomadorNome = $oNota->getT_razao_social();
         $this->view->prestadorNome = $oContribuinte->getNome();
         $this->view->prestadorCnpj = DBSeller_Helper_Number_Format::maskCPF_CNPJ($oContribuinte->getCgcCpf());
         $this->view->nfseNumero = $oNota->getNota();
         $this->view->nfseUrl = $oNota->getUrlVerificacaoNota();
         $this->mensagem = $this->view->render('nota/email-rejeicao-cancelamento.phtml');
         // Verifica se foi mudado o e-mail do Tomador para enviar uma cópia oculta do cancelamento
         if (!empty($sEmailTomador) && $sEmailTomador != $oNota->getT_email() && $oValidadorEmail->isValid($sEmailTomador)) {
             $emailTO = $sEmailTomador;
             if ($oValidadorEmail->isValid($oNota->getT_email())) {
                 $aEmailBCC[] = $oNota->getT_email();
             }
             $sMensagemRetorno = "Cancelamento rejeitado com sucesso.<br>Email foi enviado para {$emailTO}";
         }
         // Caso não haja email cadastrado na nota e nem email informado no cancelamento,
         // ou se for uma solicitação de cancelamento, o primeiro email de fiscal é colocado
         // como destinatário principal para que seja possível o envio
         if (is_null($emailTO) || empty($emailTO)) {
             $emailTO = $aEmailBCC[0];
             unset($aEmailBCC[0]);
             $sMensagemRetorno = "Cancelamento efetuado com sucesso.<br>Email foi enviado para {$emailTO}";
         }
         // Envia Email
         DBSeller_Helper_Mail_Mail::send($emailTO, "Nota Fiscal Eletrônica nº {$oNota->getNota()}", $this->mensagem, 'utf-8', $aEmailBCC);
     }
     return $sMensagemRetorno;
 }
 /**
  * Método construtor, será executado para todos os módulos do sistema
  */
 public function init()
 {
     $this->aIniConfig = $this->getFrontController()->getParam('bootstrap')->getApplication()->getOptions();
     self::maintenance();
     $this->zendHelperUrl = new Zend_View_Helper_Url();
     // Seta os dados do módulo, controller, action para os controllers, views e layouts
     $this->module = $this->getRequest()->getModuleName();
     $this->controller = $this->getRequest()->getControllerName();
     $this->action = $this->getRequest()->getActionName();
     $this->view->moduleName = $this->getRequest()->getModuleName();
     $this->view->controller = $this->getRequest()->getControllerName();
     $this->view->action = $this->getRequest()->getActionName();
     $this->view->layout()->module = $this->getRequest()->getModuleName();
     $this->view->layout()->controller = $this->getRequest()->getControllerName();
     $this->view->layout()->action = $this->getRequest()->getActionName();
     // Tradutor
     $this->translate = Zend_Registry::get('Zend_Translate');
     $this->view->translate = $this->translate;
     $this->view->layout()->translate = $this->translate;
     // Ambiente
     $this->view->messages = $this->_helper->getHelper('FlashMessenger')->getMessages();
     $this->_redirector = $this->_helper->getHelper('Redirector');
     $this->_ajaxContext = $this->_helper->getHelper('AjaxContext');
     // Seta os dados do contribuinte para as views e layouts
     $this->_session = new Zend_Session_Namespace('nfse');
     $this->view->contribuinte = $this->_session->contribuinte;
     $this->view->layout()->contribuinte = $this->_session->contribuinte;
     // Seta os dados da prefeitura nas views e layouts
     $oPrefeitura = self::getDadosPrefeitura();
     $this->oPrefeitura = $oPrefeitura;
     $this->view->oPrefeitura = $oPrefeitura;
     $this->view->layout()->oPrefeitura = $oPrefeitura;
     // Dados do usuário logado (independente do perfil)
     $aLogin = Zend_Auth::getInstance()->getIdentity();
     $oUsuarioLogado = Administrativo_Model_Usuario::getByAttribute('login', $aLogin['login']);
     $this->usuarioLogado = $oUsuarioLogado;
     $this->view->usuarioLogado = $oUsuarioLogado;
     $this->view->layout()->usuarioLogado = $oUsuarioLogado;
     // Seta o usuário que irá utilizar o sistema (usuários escolhido pelo fiscal ou contador)
     if (isset($this->_session->iUsuarioEscolhido)) {
         $oUsuarioLogado = Administrativo_Model_Usuario::getByAttribute('id', $this->_session->iUsuarioEscolhido);
         $this->user = $oUsuarioLogado;
         $this->view->user = $oUsuarioLogado;
         $this->view->layout()->user = $oUsuarioLogado;
     } else {
         // Seta os dados do usuário iguais aos do usuário logado no sistema
         $this->user = $oUsuarioLogado;
         $this->view->user = $oUsuarioLogado;
         $this->view->layout()->user = $oUsuarioLogado;
     }
 }
 /**
  * Método para confirmação do usuário eventual [json]
  *
  * @throws Exception
  * @return void
  */
 public function confirmarAction()
 {
     $oFiltro = new Zend_Filter_Digits();
     $aDados = $this->getRequest()->getParams();
     $sCpfCnpj = DBSeller_Helper_Number_Format::unmaskCPF_CNPJ($aDados['cnpjcpf']);
     // Popula o formulario
     $oForm = new Default_Form_LiberacaoCadastro();
     $oForm->populate($aDados);
     // Valida o formulario
     if ($oForm->isValid($aDados)) {
         if ($aDados['hash'] == NULL || $sCpfCnpj == NULL) {
             throw new Exception($this->translate->_('Campo(s) obrigatório(s) não informado(s).'));
         }
         $oDoctrine = Zend_Registry::get('em');
         $oDoctrine->getConnection()->beginTransaction();
         try {
             $oCadastroPessoa = Contribuinte_Model_CadastroPessoa::getByAttribute('hash', $aDados['hash']);
             if ($oCadastroPessoa == NULL) {
                 $sMensagemErro = 'Dados informados não encontrados. Favor entrar em contato com o suporte da prefeitura.';
                 throw new Exception($this->translate->_($sMensagemErro));
             }
             $iTipoLiberacaoUsuarioBloqueado = Contribuinte_Model_CadastroPessoa::TIPO_LIBERACAO_USUARIO_BLOQUEADO;
             if ($oCadastroPessoa->getTipoLiberacao() == $iTipoLiberacaoUsuarioBloqueado) {
                 $sMensagemErro = 'Cadastro foi recusado. Favor entrar em contato com o setor de fiscalização.';
                 throw new Exception($this->translate->_($sMensagemErro));
             }
             if ($sCpfCnpj != $oCadastroPessoa->getCpfcnpj()) {
                 throw new Exception($this->translate->_('CNPJ/CPF informado não é o mesmo informado no cadastro.'));
             }
             $oUsuarioCadastrado = Administrativo_Model_Usuario::getByAttribute('email', $oCadastroPessoa->getEmail());
             if ($oUsuarioCadastrado instanceof Administrativo_Model_Usuario) {
                 $sLink = '<a href="' . $this->view->serverUrl('/auth/login/esqueci-minha-senha/') . '">Clique Aqui</a>';
                 $sMensagemErro = "Já encontramos um cadastro com este email.<br>Caso tenha esquecido sua senha. {$sLink}";
                 throw new Exception($this->translate->_($sMensagemErro));
             }
             $oCgm = Contribuinte_Model_Cgm::getDadosCgm($sCpfCnpj);
             if ($oCadastroPessoa->getTipoLiberacao() == Contribuinte_Model_CadastroPessoa::TIPO_LIBERACAO_USUARIO && $oCgm == NULL) {
                 $sErro = $this->translate->_('Parametros estão inválidos (CGM não existe), ');
                 $sErro .= $this->translate->_('favor entrar em contato com o setor de fiscalização.');
                 throw new Exception($sErro);
             }
             if ($oCadastroPessoa->getTipoLiberacao() == Contribuinte_Model_CadastroPessoa::TIPO_LIBERACAO_USUARIO_CGM && $oCgm == NULL) {
                 $oNovoCgm = new Contribuinte_Model_Cgm();
                 if (strlen($oCadastroPessoa->getCpfCnpj()) >= 14) {
                     $oNovoCgm->setJuridico(TRUE);
                     $oNovoCgm->setCNPJ($oCadastroPessoa->getCpfCnpj());
                 } else {
                     $oNovoCgm->setJuridico(FALSE);
                     $oNovoCgm->setCPF($oCadastroPessoa->getCpfCnpj());
                 }
                 $sDescricaoMunicipio = Default_Model_Cadendermunicipio::getById($oCadastroPessoa->getCidade())->getNome();
                 $oNovoCgm->setNome($oCadastroPessoa->getNome());
                 $oNovoCgm->setEmail($oCadastroPessoa->getEmail());
                 $oNovoCgm->setCodigoIbgeCidade($oCadastroPessoa->getCidade());
                 $oNovoCgm->setDescricaoMunicipio($sDescricaoMunicipio);
                 $oNovoCgm->setEstado($oCadastroPessoa->getEstado());
                 $oNovoCgm->setTelefone($oFiltro->filter($oCadastroPessoa->getTelefone()));
                 $oNovoCgm->setCep($oFiltro->filter($oCadastroPessoa->getCep()));
                 $oNovoCgm->setEnderecoEcidade(FALSE);
                 if ($oCadastroPessoa->getCodBairro()) {
                     $oNovoCgm->setEnderecoEcidade(TRUE);
                 }
                 $oNovoCgm->setCodigoBairro($oCadastroPessoa->getCodBairro());
                 $oNovoCgm->setCodigoLogradouro($oCadastroPessoa->getCodEndereco());
                 $oNovoCgm->setDescricaoBairro($oCadastroPessoa->getBairro());
                 $oNovoCgm->setDescricaoLogradouro($oCadastroPessoa->getEndereco());
                 $oNovoCgm->setNumeroLogradouro($oCadastroPessoa->getNumero());
                 $oNovoCgm->setComplemento($oCadastroPessoa->getComplemento());
                 $oCodigoCgm = $oNovoCgm->persist();
                 $iCodigoCgm = $oCodigoCgm->codigo_cgm;
             } else {
                 $iCodigoCgm = $oCgm->getCodigoCgm();
             }
             $aArraTipoLiberacao = array(Contribuinte_Model_CadastroPessoa::TIPO_LIBERACAO_USUARIO_CGM, Contribuinte_Model_CadastroPessoa::TIPO_LIBERACAO_USUARIO);
             if (in_array($oCadastroPessoa->getTipoLiberacao(), $aArraTipoLiberacao)) {
                 // Usuário do sistema
                 $oUsuarioSistema = new Administrativo_Model_Usuario();
                 $oUsuarioSistema->setNome($oCadastroPessoa->getNome());
                 $oUsuarioSistema->setTelefone($oFiltro->filter($oCadastroPessoa->getTelefone()));
                 $oUsuarioSistema->setLogin($oCadastroPessoa->getCpfCnpj());
                 $oUsuarioSistema->setSenha($aDados['senha']);
                 $oUsuarioSistema->setEmail($oCadastroPessoa->getEmail());
                 $oUsuarioSistema->setHabilitado(TRUE);
                 $oUsuarioSistema->setAdministrativo(FALSE);
                 $oUsuarioSistema->setTipo(Administrativo_Model_TipoUsuario::$CONTRIBUINTE);
                 $oUsuarioSistema->setCgm($iCodigoCgm);
                 $oUsuarioSistema->setCnpj($oCadastroPessoa->getCpfCnpj());
                 $oUsuarioSistema->setPerfil($oCadastroPessoa->getPerfil()->getEntity());
                 $oUsuarioSistema->adicionaAcoes($oCadastroPessoa->getPerfil()->getAcoes());
                 $oUsuarioSistema->persist();
                 // Criamos o usuario eventual;
                 $oUsuarioEventual = new Administrativo_Model_UsuarioContribuinte();
                 $oUsuarioEventual->setCGM($iCodigoCgm);
                 $oUsuarioEventual->setHabilitado(TRUE);
                 $oUsuarioEventual->setTipoContribuinte(2);
                 $oUsuarioEventual->setCnpjCpf($oCadastroPessoa->getCpfCnpj());
                 $oUsuarioEventual->setUsuario($oUsuarioSistema->getEntity());
                 $oUsuarioEventual->copiaPerfilAcoes($oCadastroPessoa->getPerfil());
                 $oUsuarioEventual->persist();
                 // Cadastro de Pessoa
                 $oCadastroPessoa->setHash(NULL);
                 $oCadastroPessoa->persist();
             }
             $oDoctrine->getConnection()->commit();
             $aRetornoJson['status'] = TRUE;
             $aRetornoJson['success'] = $this->translate->_('Cadastro efetuado com sucesso.');
             $aRetornoJson['url'] = $this->view->serverUrl();
         } catch (Exception $oErro) {
             $oDoctrine->getConnection()->rollback();
             if (isset($oCodigoCgm) && isset($oCodigoCgm->codigo_cgm) && Contribuinte_Model_Cgm::removerCgm($oCodigoCgm->codigo_cgm)) {
                 $oLog = Zend_Registry::get('logger');
                 $oLog->log("Erro ao excluir o CGM: {$oCodigoCgm->codigo_cgm}", Zend_Log::INFO, ' ');
             }
             $aRetornoJson['status'] = FALSE;
             $aRetornoJson['error'][] = $oErro->getMessage();
         }
     } else {
         $aRetornoJson['status'] = FALSE;
         $aRetornoJson['fields'] = array_keys($oForm->getMessages());
         $aRetornoJson['error'][] = $this->translate->_('Preencha os dados corretamente.');
     }
     echo $this->getHelper('json')->sendJson($aRetornoJson);
 }
 private function aprovarUsuario()
 {
     // Atualiza Cadastro
     $iId = $this->_getParam('id');
     $oCadastro = Administrativo_Model_Cadastro::getById($iId);
     $oCadastro->setStatus('1');
     $oCadastro->persist();
     $oFilterDigits = new Zend_Filter_Digits();
     $oFilterTrim = new Zend_Filter_StringTrim();
     // Cadastra Usuario
     $aDados = $this->_getAllParams();
     $aUsuario['id_perfil'] = $oFilterDigits->filter($aDados['id_perfil']);
     $aUsuario['tipo'] = $oFilterDigits->filter($aDados['tipo']);
     $aUsuario['cnpj'] = $oFilterDigits->filter($aDados['cpfcnpj']);
     $aUsuario['login'] = $oFilterTrim->filter($aDados['login']);
     $aUsuario['senha'] = $oFilterTrim->filter($aDados['senha']);
     $aUsuario['nome'] = $oFilterTrim->filter($aDados['nome']);
     $aUsuario['email'] = $oFilterTrim->filter($aDados['email']);
     $aUsuario['fone'] = $oFilterDigits->filter($aDados['telefone']);
     $oUsuario = new Administrativo_Model_Usuario();
     $oUsuario->persist($aUsuario);
 }
 /**
  * Execucao do cancelamento de NFSE via ajax
  */
 public function cancelarPostAction()
 {
     $aDados = $this->getRequest()->getParams();
     $oForm = new Contribuinte_Form_NotaCancelar();
     $oForm->populate($aDados);
     if (!$oForm->isValid($aDados)) {
         $aRetornoJson['status'] = FALSE;
         $aRetornoJson['fields'] = array_keys($oForm->getMessages());
         $aRetornoJson['error'][] = 'Preencha os dados corretamente.';
     } else {
         try {
             $oContribuinte = $this->_session->contribuinte;
             $oPrefeitura = Administrativo_Model_Prefeitura::getDadosPrefeituraBase();
             $aLoginUsuario = Zend_Auth::getInstance()->getIdentity();
             $oUsuario = Administrativo_Model_Usuario::getByAttribute('login', $aLoginUsuario['login']);
             $oDataCancelamento = new DateTime();
             $oNota = Contribuinte_Model_Nota::getById($aDados['id']);
             if ($oNota->podeCancelar($oContribuinte)) {
                 //Retorna os usuarios do tipo fiscal
                 $aUsuariosFiscal = Administrativo_Model_Usuario::getByAttribute('tipo', Administrativo_Model_Usuario::USUARIO_TIPO_FISCAL);
                 //Remove o usuário admin do array
                 if ($aUsuariosFiscal[0]->getAdministrativo()) {
                     unset($aUsuariosFiscal[0]);
                 }
                 $aEmailBCC = array();
                 //Pega os emails cadastrados dos usuarios fiscais
                 foreach ($aUsuariosFiscal as $oUsuarioFiscal) {
                     $sEmail = $oUsuarioFiscal->getEmail();
                     if (!is_null($sEmail) && $sEmail != '') {
                         $aEmailBCC[] = $sEmail;
                     }
                 }
                 if ($oPrefeitura->getSolicitaCancelamento()) {
                     $oSolicitacaoCancelamento = new Contribuinte_Model_SolicitacaoCancelamento();
                     $oSolicitacaoCancelamento->solicitar($oNota->getEntity(), $aDados, $oUsuario->getEntity());
                     $sJustificativa = $oSolicitacaoCancelamento->getJustificativa();
                     $sRetornoEmail = $this->enviarEmailCancelamento($oNota, $aDados, $aEmailBCC, TRUE, $sJustificativa);
                     $sMensagemRetorno = "Cancelamento solicitado com sucesso!";
                 } else {
                     $oCancelamentoNota = new Contribuinte_Model_CancelamentoNota();
                     $oCancelamentoNota->setUsuarioCancelamento($oUsuario);
                     $oCancelamentoNota->setNotaCancelada($oNota);
                     $oCancelamentoNota->setJustificativa($aDados['cancelamento_justificativa']);
                     $oCancelamentoNota->setMotivoCancelmento($aDados['cancelamento_motivo']);
                     $oCancelamentoNota->setDataHora($oDataCancelamento);
                     $oCancelamentoNota->salvar();
                     $sRetornoEmail = $this->enviarEmailCancelamento($oNota, $aDados, $aEmailBCC, FALSE);
                     $sMensagemRetorno = "Cancelamento efetuado com sucesso!";
                 }
                 $sMensagemRetorno = is_null($sRetornoEmail) ? $sMensagemRetorno : $sRetornoEmail;
                 $aRetornoJson['status'] = TRUE;
                 $aRetornoJson['success'] = $sMensagemRetorno;
             } else {
                 throw new Exception("Esta nota não pode mais ser cancelada!");
             }
         } catch (Exception $oErro) {
             $aRetornoJson['status'] = FALSE;
             $aRetornoJson['error'][] = $oErro->getMessage();
         }
     }
     echo $this->getHelper('json')->sendJson($aRetornoJson);
 }