/**
  * Retorna em HTML a lista de Declaracoes sem Movimento por inscricao municipal e ano do e-cidade
  */
 public function declaracaoSemMovimentoListarAction()
 {
     parent::noTemplate();
     // Retorna apenas o html da view
     $iAno = $this->_getParam('ano_competencia');
     $oContribuinte = $this->_session->contribuinte;
     $oCompetencia = new Contribuinte_Model_Competencia($iAno, NULL, $oContribuinte);
     // Envia os parametros para a view
     $this->view->aDeclaracaoSemMovimento = $oCompetencia->getDeclaracaoSemMovimento();
 }
 /**
  * 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;
 }
 /**
  * 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;
 }