/**
  * Gerar as guias em aberto dos contribuintes
  */
 public function gerarAction()
 {
     parent::noLayout();
     $aParametros = $this->getRequest()->getParams();
     /**
      * Parametros de retorno do AJAX
      */
     $aRetornoJson = array('success' => FALSE, 'message' => NULL);
     try {
         /**
          * Verifica competência informada
          */
         if (empty($aParametros['mes_competencia']) || empty($aParametros['ano_competencia'])) {
             throw new Exception('Informe a competência.');
         }
         $iMesCompetencia = str_pad($aParametros['mes_competencia'], 2, '0', STR_PAD_LEFT);
         $iAnoCompetencia = $aParametros['ano_competencia'];
         $iMesCorrente = date('m');
         $iAnoCorrente = date('Y');
         /**
          * Verifica mês e ano corrente
          */
         if ($iMesCompetencia >= $iMesCorrente && $iAnoCompetencia == $iAnoCorrente) {
             throw new Exception('Competência corrente não é gerado guia. <br />Selecione os meses anteriores ao corrente.');
         }
         $oDataPagamento = new DateTime();
         $aGuiasCompetencia = Contribuinte_Model_Competencia::getByGuiasContribuinteAndCompetencia($iMesCompetencia, $iAnoCompetencia);
         /**
          * Verifica se encontro alguma guia em aberto
          */
         if (count($aGuiasCompetencia) == 0) {
             throw new Exception('Nenhum registro encontrado para a competência selecionada.');
         }
         foreach ($aGuiasCompetencia as $oGuiaCompetencia) {
             $oContribuinte = $oGuiaCompetencia->getContribuinte();
             $iMesCompetencia = $oGuiaCompetencia->getMesComp();
             $iAnoCompetencia = $oGuiaCompetencia->getAnoComp();
             $aNotas = $oGuiaCompetencia->getNotas();
             if (empty($iMesCompetencia)) {
                 throw new Exception("O mês de competência do contribuinte {$oContribuinte->getInscricaoMunicipal()} não foi informado.");
             }
             if (empty($iAnoCompetencia)) {
                 throw new Exception("O ano de competência do contribuinte {$oContribuinte->getInscricaoMunicipal()} não foi informado.");
             }
             if (count($aNotas) == 0) {
                 throw new Exception("Não existem notas na competência do contribuinte {$oContribuinte->getInscricaoMunicipal()} não foi informado.");
             }
             $aRetornoGuiaEcidade[] = Contribuinte_Model_GuiaEcidade::gerarGuiaNFSE($oContribuinte, $oGuiaCompetencia, $oDataPagamento, FALSE);
         }
         $aRetornoJson['success'] = TRUE;
         $aRetornoJson['message'] = "Guias de competência {$iMesCompetencia}/{$iAnoCompetencia} geradas com sucesso.";
         /**
          * Para uso como debug de retorno do e-cidade
          */
         //$aRetornoJson['retorno_ecidade'] = $aRetornoGuiaEcidade;
     } catch (Exception $oErro) {
         $aRetornoJson['message'] = $oErro->getMessage();
     }
     echo $this->getHelper('json')->sendJson($aRetornoJson);
 }
 /**
  * Salva o informativo disponibilizado no textarea
  */
 public function formSalvarAction()
 {
     parent::noLayout();
     $aParametros = $this->getRequest()->getParams();
     $oForm = new Fiscal_Form_Informativo();
     $oForm->populate($aParametros);
     /**
      * Parametros de retorno do AJAX
      */
     $aRetornoJson = array('success' => FALSE, 'message' => NULL);
     if (!$oForm->isValid($aParametros)) {
         $aRetornoJson['fields'] = array_keys($oForm->getMessages());
         $aRetornoJson['error'][] = 'Preencha os dados corretamente.';
     } else {
         try {
             // salvar
             $oInformativo = new Administrativo_Model_Informativo();
             $oInformativo->salvarDescricao($aParametros['descricao']);
             $aRetornoJson['success'] = TRUE;
             $aRetornoJson['message'] = 'Informativo salvo com sucesso!';
         } catch (Exception $oErro) {
             $aRetornoJson['error'][] = $oErro->getMessage();
         }
     }
     echo $this->getHelper('json')->sendJson($aRetornoJson);
 }
 /**
  * Força o download dos relatórios
  */
 public function downloadAction()
 {
     parent::noLayout();
     parent::download($this->getRequest()->getParam('arquivo'));
 }
 /**
  * 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);
     }
 }
 /**
  * Realiza a recusa do cadastro da pessoa
  * 
  * @throws Exception
  * @return void
  */
 public function recusarCadastroSalvarAction()
 {
     parent::noLayout();
     $aDados = $this->getRequest()->getParams();
     $aRetornoJson = NULL;
     $oForm = new Fiscal_Form_CadastroPessoaRecusa();
     $oForm->populate($aDados);
     // Valida o formulario e gera a requisicao
     if ($oForm->isValid($aDados)) {
         try {
             $this->oDoctrine->getConnection()->beginTransaction();
             $oCadastroPessoa = new Contribuinte_Model_CadastroPessoa($aDados['id']);
             $this->validarLiberacaoUsuario($oCadastroPessoa);
             if ($oCadastroPessoa->bloquearCadastro($aDados['justificativa'])) {
                 $this->view->setScriptPath(APPLICATION_PATH . '/modules/default/views/scripts/cadastro-eventual/');
                 $this->view->sTextoRecusa = $aDados['justificativa'];
                 $sTextoEmail = $this->view->render('email-aviso-recusa-cadastro.phtml');
                 $lEmail = DBSeller_Helper_Mail_Mail::send($oCadastroPessoa->getEmail(), $this->translate->_('ECidadeOnline2 - Retorno de Solicitação de Cadastro'), $sTextoEmail);
                 if (!$lEmail) {
                     throw new Exception($this->translate->_('Email não enviado. Favor Contate Suporte Prefeitura.'));
                 }
                 $aRetornoJson['status'] = TRUE;
                 $aRetornoJson['reload'] = TRUE;
                 $aRetornoJson['success'] = $this->translate->_('A Recusa do cadastro foi efetuada. Um email com a justificativa foi enviado ao contribuinte.');
             }
             $this->oDoctrine->getConnection()->commit();
         } catch (Exception $eErro) {
             $this->oDoctrine->getConnection()->rollback();
             $aRetornoJson['status'] = FALSE;
             $aRetornoJson['error'][] = $eErro->getMessage();
         }
     } else {
         $aRetornoJson['status'] = FALSE;
         $aRetornoJson['fields'] = array_keys($oForm->getMessages());
         $aRetornoJson['error'][] = 'Preencha os dados corretamente.';
     }
     echo $this->getHelper('json')->sendJson($aRetornoJson);
 }