/** * 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; }
/** * Verifica se o contribuinte é optante pelo simples na data especificada * Utiliza o mesmo método utilizado no DMS * * @see Contribuinte_Lib_Controller_AbstractController::verificarContribuinteOptanteSimplesAction() * @throws Exception */ public function verificarContribuinteOptanteSimplesAction() { try { $sData = $this->getRequest()->getParam('data'); if (!$sData) { throw new Exception('Informe a data para verificar.'); } $oDataSimples = new DateTime(DBSeller_Helper_Date_Date::invertDate($sData, '-')); if (!$oDataSimples instanceof DateTime) { throw new Exception('Data inválida'); } $oContribuinte = $this->_session->contribuinte; $oParametros = Contribuinte_Model_ParametroContribuinte::getById($oContribuinte->getIdUsuarioContribuinte()); $aRetorno['optante_simples_nacional'] = $oContribuinte->isOptanteSimples($oDataSimples) ? TRUE : FALSE; $aRetorno['optante_simples_categoria'] = $oContribuinte->getOptanteSimplesCategoria(); if ($oParametros instanceof Contribuinte_Model_ParametroContribuinte) { $fAliquota = $oParametros->getEntity()->getValorIssFixo(); $aRetorno['valor_iss_fixo'] = DBSeller_Helper_Number_Format::toMoney($fAliquota); } echo $this->getHelper('json')->sendJson($aRetorno); } catch (Exception $oError) { $aRetorno['erro'] = TRUE; $aRetorno['mensagem'] = $oError->getMessage(); echo $this->getHelper('json')->sendJson($aRetorno); } }
/** * Retorna o parametro cadastrado para contribuinte * @param integer $iCodigoContribuinte Codigo do Contribuinte * @return Contribuinte_Model_ParametroContribuinte Instancia do model de parametros */ public static function buscaParametroContribuinte($iCodigoContribuinte) { $parametro = Contribuinte_Model_ParametroContribuinte::getById($iCodigoContribuinte); if ($parametro == null) { $parametro = new Contribuinte_Model_ParametroContribuinte(); $parametro->setIm($im); } return $parametro; }
/** * Preenche os atributos dos campos referentes ao valores de impostos (estes itens serão enviados por ajax) * * @param Contribuinte_Model_ParametroContribuinte $oParametroContribuinte * @return Contribuinte_Form_Nota */ public function preencheParametros(Contribuinte_Model_ParametroContribuinte $oParametroContribuinte) { if ($oParametroContribuinte === NULL) { return $this; } if ($oParametroContribuinte->getEntity()->getMaxDeducao() <= 0) { $this->getElement('s_vl_deducoes')->setAttrib('readonly', TRUE); } $this->s_vl_deducoes->setAttrib('perc', $oParametroContribuinte->getEntity()->getMaxDeducao()); $this->s_vl_pis->setAttrib('perc', $oParametroContribuinte->getEntity()->getPis()); $this->s_vl_cofins->setAttrib('perc', $oParametroContribuinte->getEntity()->getCofins()); $this->s_vl_inss->setAttrib('perc', $oParametroContribuinte->getEntity()->getInss()); $this->s_vl_ir->setAttrib('perc', $oParametroContribuinte->getEntity()->getIr()); $this->s_vl_csll->setAttrib('perc', $oParametroContribuinte->getEntity()->getCsll()); return $this; }