/**
  * 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;
 }