/** * Exporta os dados para XML */ public function rpsExportarAction() { parent::noLayout(); $aParametros = $this->getRequest()->getParams(); /** * Parametros de retorno do AJAX */ $aRetornoJson = array('success' => FALSE, 'message' => NULL); /** * Verifica se foi informado mês e ano da competência */ if (!empty($aParametros['mes_competencia']) && !empty($aParametros['ano_competencia'])) { $oContribuinte = $this->_session->contribuinte; $oCompetencia = new StdClass(); $oCompetencia->iMes = $aParametros['mes_competencia']; $oCompetencia->iAno = $aParametros['ano_competencia']; $iNumeroRps = !empty($aParametros['numero_rps']) ? $aParametros['numero_rps'] : NULL; $aNotas = Contribuinte_Model_Nota::getByContribuinteAndCompetencia($oContribuinte->getContribuintes(), $oCompetencia, $iNumeroRps); /** * Verifica se existe alguma NFSe para a competência informada */ if (count($aNotas) > 0) { $oXml = new DOMDocument("1.0", "UTF-8"); $oXml->formatOutput = TRUE; $oXmlConsultaRPSCompetencia = $oXml->createElement("ii:ConsultaRPSCompetencia"); $oXmlConsultaRPSCompetencia->setAttribute("xmlns:ii", "urn:DBSeller"); $oMes = $oXml->createElement("ii:Mes", $oCompetencia->iMes); $oAno = $oXml->createElement("ii:Ano", $oCompetencia->iAno); $oNoListaNfse = $oXml->createElement('ii:ListaNfse'); foreach ($aNotas as $oNota) { $oNotaAbrasf = new WebService_Model_NotaAbrasf($oNota); $oNoListaNfse->appendChild($oXml->importNode($oNotaAbrasf->getNota(), true)); } $oXmlConsultaRPSCompetencia->appendChild($oMes); $oXmlConsultaRPSCompetencia->appendChild($oAno); $oXmlConsultaRPSCompetencia->appendChild($oNoListaNfse); $oXml->appendChild($oXmlConsultaRPSCompetencia); /** * Path do arquivo */ $sNomeArquivo = "lista_rps_{$oCompetencia->iMes}_{$oCompetencia->iAno}.xml"; $sCaminhoArquivo = TEMP_PATH . "/{$sNomeArquivo}"; if (file_exists($sCaminhoArquivo)) { unlink($sCaminhoArquivo); } /** * Escreve os dados no arquivo */ $aArquivo = fopen($sCaminhoArquivo, 'w'); fputs($aArquivo, print_r($oXml->saveXML(), TRUE)); fclose($aArquivo); $aRetornoJson['success'] = TRUE; $aRetornoJson['filename'] = $sNomeArquivo; $aRetornoJson['message'] = 'Notas exportadas com sucesso.'; } else { $aRetornoJson['message'] = 'Nenhum registro encontrado.'; } } echo $this->getHelper('json')->sendJson($aRetornoJson); }
/** * Remove os Meses que existe movimentacao ou foi declarado sem movimento * * @return $this */ public function removerMesesComMovimentacaoDeNotas() { $oSession = new Zend_Session_Namespace('nfse'); $iMesCompetencia = (int) date('m') - 1; $iAnoCompetencia = (int) ((int) date('m') == 1 ? date('Y') - 1 : date('Y')); $oContribuinte = $oSession->contribuinte; $oCompetencia = new Contribuinte_Model_Competencia($iAnoCompetencia, $iMesCompetencia, $oContribuinte); $aMeses = DBSeller_Helper_Date_Date::getMesesAnterioresArray($iMesCompetencia); $aDeclaracaoSemMovimento = $oCompetencia->getDeclaracaoSemMovimento(); // Remove os meses que já tem declaracao sem movimento if (count($aDeclaracaoSemMovimento) > 0) { foreach ($aDeclaracaoSemMovimento as $oDeclaracaoSemMovimento) { unset($aMeses[$oDeclaracaoSemMovimento->mes]); } } // Verifica se existem notas lancadas no NFSE if (count($aMeses) > 0) { foreach ($aMeses as $iMes => $sMes) { $aResultadoDms = Contribuinte_Model_Dms::getDadosPorCompetencia($oContribuinte->getContribuintes(), $iAnoCompetencia, $iMes, Contribuinte_Model_Dms::SAIDA); // Verifica se tem NFSe lancadas na competência $oParametros = new stdClass(); $oParametros->iMes = $iMes; $oParametros->iAno = $iAnoCompetencia; $aResultadoNota = Contribuinte_Model_Nota::getByContribuinteAndCompetencia($oContribuinte->getContribuintes(), $oParametros); // Limpa os meses if (count($aResultadoDms) > 0 || count($aResultadoNota) > 0) { unset($aMeses[$iMes]); } } } // Desabilita geração quando não possuir meses válidos if (count($aMeses) == 0) { $this->getElement('mes_competencia')->setAttrib('disabled', TRUE); $this->getElement('btn_competencia')->setAttrib('disabled', TRUE); } $this->getElement('mes_competencia')->setMultiOptions($aMeses); return $this; }