/** * Instancia o formulario de emissão de RPS * * @param string $sCodigoVerificacao Código de Verificação * @param Contribuinte_Model_ContribuinteAbstract $oContribuinte Dados do contribuinte * @return Contribuinte_Form_Nota */ private function formNota($sCodigoVerificacao, Contribuinte_Model_ContribuinteAbstract $oContribuinte = NULL) { // Seta o contribuinte da sessão se não for enviado por parâmetro $oContribuinte = $oContribuinte ? $oContribuinte : $this->_session->contribuinte; $iIdContribuinte = $oContribuinte->getIdUsuarioContribuinte(); $maxNota = 0; $maxGuia = 0; $aListaIdContribuinte = $oContribuinte->getContribuintes(); // Calcula quantos dias no passado a nota pode ser emtidida $oParametrosPrefeitura = Administrativo_Model_Prefeitura::getDadosPrefeituraBase(); $max = $oParametrosPrefeitura->getNotaRetroativa(); $oUltimaGuia = Contribuinte_Model_Guia::getUltimaGuiaNota($oContribuinte); $uDataUltimaNota = Contribuinte_Model_Nota::getUltimaNotaEmitidaByContribuinte($aListaIdContribuinte); $dia = new DateTime(); if ($oUltimaGuia != NULL) { if ($oUltimaGuia->getMesComp() + 1 > 12) { $iMes = 1; } else { $iMes = $oUltimaGuia->getMesComp(); } $uDataUltimoDiaCompetencia = new Zend_Date("01/{$iMes}/{$oUltimaGuia->getAnoComp()}"); $uDataUltimoDiaCompetencia->sub(1, Zend_date::DAY); $diff = $dia->diff(new DateTime($uDataUltimoDiaCompetencia->get('YYYY-MM-dd')), TRUE); $maxGuia = $diff->d < $max ? $diff->d : $max; } if ($uDataUltimaNota != NULL) { $diff = $dia->diff(new DateTime($uDataUltimaNota), TRUE); $maxNota = $diff->d < $max ? $diff->d : $max; } if ($maxNota - $maxGuia < $maxGuia) { $max = $maxGuia - 1; } else { if ($maxNota > 0) { $max = $maxNota; } else { $max = 0; } } $dia = $dia->sub(new DateInterval('P' . $max . 'D')); $oForm = new Contribuinte_Form_Nota($sCodigoVerificacao, $dia, '/contribuinte/rps/index', TRUE); if ($oContribuinte !== NULL) { $oParametros = Contribuinte_Model_ParametroContribuinte::getById($iIdContribuinte); $oForm->preencheParametros($oParametros); } return $oForm; }
/** * Formulário NFSE * * @param string $sCodigoVerificacao * @param string $oContribuinte * @return Contribuinte_Form_Nota */ private function formNota($sCodigoVerificacao, $oContribuinte = NULL) { $oContribuinte = $oContribuinte ?: $this->_session->contribuinte; $iMaxNota = 0; $iMaxGuia = 0; // Calcula quantos dias no passado a nota pode ser emitida $oParametrosPrefeitura = Administrativo_Model_Prefeitura::getDadosPrefeituraBase(); $iDiasRetroativosEmissaoNota = $oParametrosPrefeitura->getNotaRetroativa(); $oDataCorrente = new DateTime(); $oUltimaGuia = Contribuinte_Model_Guia::getUltimaGuiaNota($oContribuinte); $uDataUltimaNota = Contribuinte_Model_Nota::getUltimaNotaEmitidaByContribuinte($oContribuinte->getContribuintes()); if ($uDataUltimaNota != NULL) { $oDiff = $oDataCorrente->diff(new DateTime($uDataUltimaNota), TRUE); $iMaxNota = $oDiff->days < $iDiasRetroativosEmissaoNota ? $oDiff->days : $iDiasRetroativosEmissaoNota; } if (!empty($oUltimaGuia)) { $iMes = $oUltimaGuia->getMesComp(); $iAno = $oUltimaGuia->getAnoComp(); if ($oUltimaGuia->getMesComp() + 1 > 12) { $iMes = 1; } $iMes = str_pad($iMes, 2, '0', STR_PAD_LEFT); $uDataUltimoDiaCompetencia = new Zend_Date("01/{$iMes}/{$iAno}"); $uDataUltimoDiaCompetencia->sub(-1, Zend_date::MONTH); $oDiff = $oDataCorrente->diff(new DateTime($uDataUltimoDiaCompetencia->get('Y-M-d')), TRUE); $iMaxGuia = $oDiff->days < $iDiasRetroativosEmissaoNota ? $oDiff->days : $iDiasRetroativosEmissaoNota; } if ($iMaxNota > $iMaxGuia && $iMaxGuia > 0) { $iDiasRetroativosEmissaoNota = $iMaxGuia; } else { if ($iMaxNota > 0) { $iDiasRetroativosEmissaoNota = $iMaxNota; } else { if (!$iDiasRetroativosEmissaoNota || $iMaxNota == 0) { $iDiasRetroativosEmissaoNota = 0; } } } $oDataCorrente = new DateTime(); $oDataCorrente = $oDataCorrente->sub(date_interval_create_from_date_string("{$iDiasRetroativosEmissaoNota} days")); $oForm = new Contribuinte_Form_Nota($sCodigoVerificacao, $oDataCorrente); if ($oContribuinte !== NULL) { $oParametros = Contribuinte_Model_ParametroContribuinte::getById($oContribuinte->getIdUsuarioContribuinte()); if ($oParametros instanceof Contribuinte_Model_ParametroContribuinte) { $oForm->preencheParametros($oParametros); } } return $oForm; }