/** * 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; }
/** * Método para ver se a nota pode ser cancelada ou não * @param object $oContribuinte Model do contribuinte * @return boolean */ public function podeCancelar($oContribuinte) { $oNota = $this->getEntity(); $lExisteGuia = Contribuinte_Model_Guia::existeGuia($oContribuinte, $oNota->getMes_comp(), $oNota->getAno_comp(), Contribuinte_Model_Guia::$DOCUMENTO_ORIGEM_NFSE); $oSolicitacaoCancelamento = Contribuinte_Model_SolicitacaoCancelamento::getByAttribute('nota', $oNota); $uDataUltimaNota = Contribuinte_Model_Nota::getUltimaNotaEmitidaByContribuinte($oContribuinte->getContribuintes()); $oDataUltimaNota = new DateTime($uDataUltimaNota); $oCompetencia = new Contribuinte_Model_Competencia($oNota->getAno_comp(), $oNota->getMes_comp(), $oContribuinte); $aCompetenciaSemMovimento = $oCompetencia->getDeclaracaoSemMovimento(); if ($oNota->getAno_comp() < $oDataUltimaNota->format('Y')) { return FALSE; } else { if ($oNota->getAno_comp() == $oDataUltimaNota->format('Y') && $oNota->getMes_comp() < $oDataUltimaNota->format('m')) { return FALSE; } else { if ($oNota->getCancelada() || $lExisteGuia || $oNota->getImportada() || !empty($oSolicitacaoCancelamento)) { return FALSE; } else { if (isset($aCompetenciaSemMovimento[0]) && $oNota->getAno_comp() < $aCompetenciaSemMovimento[0]->ano) { return FALSE; } else { if (isset($aCompetenciaSemMovimento[0]) && $oNota->getAno_comp() == $aCompetenciaSemMovimento[0]->ano && $oNota->getMes_comp() <= $aCompetenciaSemMovimento[0]->mes) { return FALSE; } } } } } return TRUE; }
/** * Método para rejeitar a solicitação de cancelamento de NFSE */ public function rejeitarAction() { parent::noTemplate(); $aDados = $this->getRequest()->getParams(); $oForm = new Fiscal_Form_CancelamentoRejeitar(); $this->view->solicitacao = $aDados; $oForm->populate(array('id' => $aDados['id'])); $this->view->form = $oForm; if ($this->getRequest()->isPost()) { parent::noLayout(); try { $aDados = $this->getRequest()->getParams(); $oSolicitacao = Contribuinte_Model_SolicitacaoCancelamento::getById($aDados['id']); $oNota = Contribuinte_Model_Nota::getById($oSolicitacao->getNota()->getId()); $sRetornoEmail = $this->enviarEmailRejeicao($oNota, $oSolicitacao, $aDados['justificativa_fiscal']); $sMensagemRetorno = 'Solicitação rejeitada com sucesso!'; $sMensagemRetorno = is_null($sRetornoEmail) ? $sMensagemRetorno : $sRetornoEmail; $oSolicitacao->destroy(); $aRetornoJson['status'] = TRUE; $aRetornoJson['success'] = $sMensagemRetorno; } catch (Exception $oError) { $aRetornoJson['status'] = FALSE; $aRetornoJson['error'][] = $oError->getMessage(); } echo $this->getHelper('json')->sendJson($aRetornoJson); } }
/** * 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); }