/** * Fecha a competência para as Notas Fiscais (NFSE) */ public function fechaCompetenciaAction() { parent::noTemplate(); $iMes = $this->getRequest()->getParam('mes'); $iAno = $this->getRequest()->getParam('ano'); $oContribuinte = $this->_session->contribuinte; $oCompetencia = new Contribuinte_Model_Competencia($iAno, $iMes, $oContribuinte); $oCompetencia->getNotas(); $oCompetencia->setTotaisCompetencia(); $oFormCompetencia = new Contribuinte_Form_GuiaCompetencia(); $oFormCompetencia->setAction('/contribuinte/guia/fecha-competencia'); $oFormCompetencia->preenche($oCompetencia, NULL); $oFormCompetencia->getElement('data_guia')->setValue(date('d/m/Y')); $this->view->competencia = $oCompetencia; $this->view->form = $oFormCompetencia; if ($this->getRequest()->isPost()) { $this->view->arquivo = ''; $this->view->guia = ''; try { $lTemGuiaEmitida = Contribuinte_Model_Guia::existeGuia($oContribuinte, $oCompetencia->getMesComp(), $oCompetencia->getAnoComp(), Contribuinte_Model_Guia::$DOCUMENTO_ORIGEM_NFSE); if ($lTemGuiaEmitida) { throw new Exception('Guia já emitida.'); } $sDataInvertida = DBSeller_Helper_Date_Date::invertDate($this->getRequest()->getParam('data_guia')); $oDataPagamento = new DateTime($sDataInvertida); $oGuia = Contribuinte_Model_GuiaEcidade::gerarGuiaNFSE($oContribuinte, $oCompetencia, $oDataPagamento); // Verifica se retornou algum erro no processo de geração da guia if (is_string($oGuia)) { throw new Exception($oGuia); } // Verifica se foi gerado o arquivo de emissão da guia if (empty($oGuia->arquivo_guia)) { throw new Exception('Ocorreu algum problema na geração da guia de pagamento!'); } $this->view->arquivo = $oGuia->arquivo_guia; } catch (Exception $oErro) { $this->view->mensagem_erro = $oErro->getMessage(); } } }
/** * 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); }