/** * Metodo inicial quando o usuairo for contribuinte */ public function contribuinteAction() { // Oculta breadcrumbs $this->view->oculta_breadcrumbs = TRUE; // Matar sessão quando acessado via menu if ($this->_getParam('alterar')) { $oSessao = new Zend_Session_Namespace('nfse'); $oSessao->contribuinte = NULL; $this->view->contribuinte = NULL; $this->_session->id = NULL; } if (!isset($this->_session->iUsuarioEscolhido) && $this->usuarioLogado->getPerfil()->getId() == 5) { $this->_redirector->gotoSimple('listar-cadastros', 'usuario-acesso', 'fiscal'); } // Verifica se a lista de contribuinte e diferente da lista vinculada ao usuario if ($this->view->user->getTipo() == Administrativo_Model_TipoUsuario::$CONTADOR) { $aContribuintes = Administrativo_Model_Empresa::getByCnpj(trim($this->view->user->getCnpj())); // atualiza a lista de contribuintes $this->view->user->atualizaListaContribuintes($aContribuintes); } else { $oContribuinte = $this->view->user->getUsuariosContribuintes(); $oContribuinte = $oContribuinte[0]; if ($oContribuinte->getIm()) { $aContribuintesInscricao = new Contribuinte_Model_Contribuinte(); $aContribuintes[] = $aContribuintesInscricao->getDadosContribuinteEcidade($oContribuinte->getIm()); } else { if ($oContribuinte->getCnpjCpf()) { $oContribuinteEventual = new Contribuinte_Model_ContribuinteEventual(); $aContribuintes[] = $oContribuinteEventual->getByCpfCnpjWebService($oContribuinte->getCnpjCpf()); } } } // atualiza o tipo de emissao e permissoes dos contribuintes Administrativo_Model_UsuarioContribuinte::atualizaTipoEmissao($aContribuintes); $aContribuintes = $this->view->user->getContribuintes(); $this->view->contribuintes = $aContribuintes; //carrega informativo do fiscal $oInformativo = Administrativo_Model_Informativo::getByAttribute('id', 1); //Verifica se retorna algo da coluna informativo if (!empty($oInformativo)) { $this->view->descricao = $oInformativo->getDescricao(); } if (count($this->view->contribuintes) == 1 && $this->_session->id == NULL) { $aContribuintes = each($this->view->contribuintes); $oContribuinte = $aContribuintes['value']; self::setContribuinte($oContribuinte); $this->_redirector->gotoSimple('contribuinte', 'index', 'contribuinte'); } // Reseta permissões new DBSeller_Acl_Setup(TRUE); }
/** * Popula o combo de serviços * * @param integer|null $iCodigoServico código do serviço * @return $this */ public function setServico($iCodigoServico = NULL) { $aServicos = Contribuinte_Model_Servico::getByIm($this->oContribuinte->getInscricaoMunicipal()); $aDados = array('' => '-- Escolha o Serviço --'); if (is_array($aServicos)) { foreach ($aServicos as $oServico) { $sAtividade = strtolower($oServico->attr('atividade')); $aDados[$oServico->attr('cod_atividade')] = DBSeller_Helper_String_Format::wordsCap($sAtividade); } } $this->getElement('s_servico_prestado')->addMultiOptions($aDados)->setValue($iCodigoServico); return $this; }
/** * Verifica se deve emitir a guia considerando: * 1 - as características do contribuinte no alvará * 2 - tributação dentro ou fora do municipio * * * @param stdClass $oParametro * $oParametro->inscricao_municipal * $oParametro->data * @throws Exception * @return boolean * * @tutorial: Abaixo constam as regras para emissão de guia * * Regime(4)/Exigibilidade(5) |Exigível(23)|Não Incide(24)|Isento(25)|Export.(26)|Imune(27)|Susp.Judic(28)|Susp.Adm(29) * ------------------------------------------------------------------------------------------------------------------ * (--)Optante Simples |Não |Não |Não |Não |Não |Não |Não * (14)Normal |Sim |Não |Não |sim |Não |Não |Não * (15)Cooperativa |Sim |Não |Não |sim |Não |Não |Não * (16)EPP |Sim |Não |Não |sim |Não |Não |Não * (17)Estimativa |Sim |Não |Não |sim |Não |Não |Não * (18)Fixado |Não |Não |Não |Não |Não |Não |Não * (19)ME municipal |Sim |Não |Não |sim |Não |Não |Não * (20)MEI |Não |Não |Não |Não |Não |Não |Não * (21)ME |Sim |Não |Não |sim |Não |Não |Não * (22)Sociedade profissional |Não |Não |Não |Não |Não |Não |Não */ public static function checarEmissaoGuia($oParametro = NULL) { $oValidaData = new Zend_Validate_Date(); if (!is_object($oParametro)) { throw new Exception('O parâmetro informado deve ser um objeto.'); } else { if (!isset($oParametro->data) || !isset($oParametro->inscricao_municipal)) { throw new Exception('Verifique os parâmetros informados.'); } else { if (!$oValidaData->isValid($oParametro->data)) { throw new Exception('Parâmetro "data" inválido.'); } } } // Busca os dados do contribuinte da sessão $oContribuinte = Contribuinte_Model_Contribuinte::getByInscricaoMunicipal($oParametro->inscricao_municipal); if (!is_object($oContribuinte)) { throw new Exception('Nenhum contribuinte foi encontrado.'); } // Optante pelo simples no período pesquisado, não emite guia $oDataSimples = new DateTime(DBSeller_Helper_Date_Date::invertDate($oParametro->data)); if ($oContribuinte->isOptanteSimples($oDataSimples)) { return FALSE; } // Verifica se deve emitir a guia conforme as regras de emissão $iRegimeTributario = $oContribuinte->getRegimeTributario(); $iExigibilidade = $oContribuinte->getExigibilidade(); switch ("{$iRegimeTributario}-{$iExigibilidade}") { case '14-23': case '14-26': case '15-23': case '15-26': case '16-23': case '16-26': case '17-23': case '17-26': case '19-23': case '19-26': case '21-23': case '21-26': return TRUE; break; default: return FALSE; } return FALSE; }
/** * Busca o contribuinte pelo CNPJ/CPF */ public function getContribuinteCnpjAction() { $aRetorno = NULL; $iCnpj = DBSeller_Helper_Number_Format::getNumbers($this->_getParam('term')); $aDados = Contribuinte_Model_Contribuinte::getInscricaoMunicipalByCpjCnpj($iCnpj); $oContribuinte = Contribuinte_Model_Contribuinte::preencherInstanciaContribuinte($aDados[0]); $aRetorno = array('razao_social' => $oContribuinte->getRazaoSocial(), 'login' => $oContribuinte->getCgcCpf(), 'nome' => $oContribuinte->getRazaoSocial(), 'email' => $oContribuinte->getEmail(), 'telefone' => DBSeller_Helper_Number_Format::maskPhoneNumber($oContribuinte->getTelefone())); if (is_array($aDados) && count($aDados) > 1) { foreach ($aDados as $oDadosContribuinte) { $iInscricao = Contribuinte_Model_Contribuinte::preencherInstanciaContribuinte($oDadosContribuinte)->getInscricaoMunicipal(); $aRetorno['inscricoes'][$iInscricao] = $iInscricao; } } echo $this->getHelper('json')->sendJson($aRetorno); }
/** * Valida e salva as informações do RPS na base de dados * * @throws Exception * @return integer|NULL */ public function processarImportacaoRps() { // Dados da sessão $oSessao = new Zend_Session_Namespace('nfse'); $oDoctrine = Zend_Registry::get('em'); $oDoctrine->getConnection()->beginTransaction(); try { // Dados da importação $oImportacao = new \Contribuinte\ImportacaoArquivo(); $oImportacao->setData(new DateTime()); $oImportacao->setHora(new DateTime()); $oImportacao->setTipo('RPS'); $oImportacao->setQuantidadeDocumentos($this->oImportacao->lote->quantidade_rps); $oImportacao->setVersaoLayout('modelo1'); $oImportacao->setIdUsuario($this->iUsuarioLogado); $oImportacao->setNumeroLote($this->oImportacao->lote->numero); // Totalizadores $fValorTotalServico = 0; $fValorTotalImpostos = 0; // Processa a lista de rps foreach ($this->oImportacao->rps as $oRps) { if ($oRps->servico->valores->valor_iss_retido > 0) { $oRps->servico->valores->valor_iss = $oRps->servico->valores->valor_iss_retido; $oRps->servico->valores->iss_retido = 1; } $oContribuinte = Contribuinte_Model_Contribuinte::getByCpfCnpj($oRps->prestador->cnpj); $iInscricaoMunicipal = $oContribuinte->getInscricaoMunicipal(); // Dados dos Usuários $aDados['id_contribuinte'] = $oSessao->contribuinte->getIdUsuarioContribuinte(); $aDados['id_usuario'] = $this->iUsuarioLogado; // Dados da RPS $aDados['grupo_nota'] = Contribuinte_Model_Nota::GRUPO_NOTA_RPS; $aDados['tipo_nota'] = $oRps->tipo; $aDados['n_rps'] = $oRps->numero; $aDados['data_rps'] = $oRps->data_emissao; $aDados['dt_nota'] = $oRps->data_emissao; $aDados['hr_nota'] = $oRps->data_emissao; $aDados['ano_comp'] = $oRps->data_emissao->format('Y'); $aDados['mes_comp'] = $oRps->data_emissao->format('m'); $aDados['natureza_operacao'] = $oRps->natureza_operacao; // Dados do Prestador $aDados['p_im'] = $iInscricaoMunicipal; $aDados['p_cnpjcpf'] = $oRps->prestador->cnpj; // Dados do Tomador $aDados['t_cnpjcpf'] = $oRps->tomador->cpf_cnpj; $aDados['t_razao_social'] = $oRps->tomador->razao_social; $aDados['t_cep'] = $oRps->tomador->endereco->cep; $aDados['t_endereco'] = $oRps->tomador->endereco->descricao; $aDados['t_endereco_numero'] = $oRps->tomador->endereco->numero; $aDados['t_endereco_comp'] = $oRps->tomador->endereco->complemento; $aDados['t_bairro'] = $oRps->tomador->endereco->bairro; $aDados['t_cod_municipio'] = $oRps->tomador->endereco->ibge_municipio; $aDados['t_uf'] = $oRps->tomador->endereco->uf; $aDados['t_telefone'] = $oRps->tomador->contato->telefone; $aDados['t_email'] = $oRps->tomador->contato->email; // Dados da construção civil $aDados['s_codigo_obra'] = $oRps->construcao_civil->codigo_obra; $aDados['s_art'] = $oRps->construcao_civil->art; // Dados do Serviço $iAtividade = $oRps->servico->atividade; $oServico = Contribuinte_Model_Servico::getServicoPorAtividade($iInscricaoMunicipal, $iAtividade); if (empty($oServico)) { throw new Exception('O código de atividade do serviço inválido.'); } $aDados['descricao'] = $oRps->servico->discriminacao; $aDados['s_dados_cod_tributacao'] = $oServico->attr('cod_atividade'); $aDados['s_dados_cod_municipio'] = $oRps->servico->ibge_municipio; $aDados['s_dados_municipio_incidencia'] = $oRps->servico->ibge_municipio; $aDados['s_dados_cod_pais'] = 1058; //brasil // Verifica se o tomador retem o ISS $lTomadorRetemIss = $oRps->servico->valores->iss_retido == 1 ? TRUE : FALSE; // Valores do Serviço $aDados['s_vl_servicos'] = self::converterValor($oRps->servico->valores->valor_servicos); $aDados['s_vl_deducoes'] = self::converterValor($oRps->servico->valores->valor_deducoes); $aDados['s_vl_pis'] = self::converterValor($oRps->servico->valores->valor_pis); $aDados['s_vl_cofins'] = self::converterValor($oRps->servico->valores->valor_cofins); $aDados['s_vl_inss'] = self::converterValor($oRps->servico->valores->valor_inss); $aDados['s_vl_ir'] = self::converterValor($oRps->servico->valores->valor_ir); $aDados['s_vl_csll'] = self::converterValor($oRps->servico->valores->valor_csll); $aDados['s_vl_iss'] = self::converterValor($oRps->servico->valores->valor_iss); $aDados['s_dados_iss_retido'] = $lTomadorRetemIss ? 1 : 0; $aDados['s_vl_outras_retencoes'] = self::converterValor($oRps->servico->valores->outras_retencoes); $aDados['s_vl_bc'] = self::converterValor($oRps->servico->valores->base_calculo); $aDados['s_vl_aliquota'] = self::converterValor($oRps->servico->valores->aliquota * 100); $aDados['s_vl_liquido'] = self::converterValor($oRps->servico->valores->valor_liquido); $aDados['vl_liquido_nfse'] = self::converterValor($oRps->servico->valores->valor_liquido); $aDados['s_vl_condicionado'] = self::converterValor($oRps->servico->valores->desconto_condicionado); $aDados['s_vl_desc_incondicionado'] = self::converterValor($oRps->servico->valores->desconto_incondicionado); // Salva o RPS $oNotaRps = new Contribuinte_Model_Nota(); $oNotaRps->persist($aDados); // Adiciona os documento aos dados da importação $oImportacaoArquivoDocumento = new \Contribuinte\ImportacaoArquivoDocumento(); $oImportacaoArquivoDocumento->setImportacaoDms($oImportacao); $oImportacaoArquivoDocumento->addNota($oNotaRps->getEntity()); $oImportacaoArquivoDocumento->setValorImposto($oRps->servico->valores->valor_iss); $oImportacaoArquivoDocumento->setValorTotal($oRps->servico->valores->valor_servicos); // Vincula o documento aos dados da importação $oImportacao->addImportacaoArquivoDocumentos($oImportacaoArquivoDocumento); // Incrementa os totalizadores $fValorTotalServico += $oRps->servico->valores->valor_servicos; $fValorTotalImpostos += $oRps->servico->valores->valor_iss; } // Completa e salva os dados da importação $oImportacao->setValorTotal($fValorTotalServico); $oImportacao->setValorImposto($fValorTotalImpostos); $oDoctrine->persist($oImportacao); $oDoctrine->flush(); $oDoctrine->getConnection()->commit(); return $oImportacao; } catch (Exception $oErro) { $oDoctrine->getConnection()->rollback(); throw new Exception('Ocorreu um erro ao importar o arquivo: ' . $oErro->getMessage()); } }
/** * @param Contribuinte_Model_Contribuinte $oContribuinte * @param $iAno * @param $iMes * @param null $fAliquota * @return object */ public static function getTotalReceitasCompetencia(Contribuinte_Model_Contribuinte $oContribuinte, $iAno, $iMes, $fAliquota = NULL) { $aReceitasGuia = array(); $aParametros = array('contribuinte' => $oContribuinte->getContribuintes(), 'competencia_inicial' => "{$iAno}{$iMes}"); $aImportacaoDesif = Contribuinte_Model_ImportacaoDesif::getByAttributes($aParametros); /** * Verifica se retornou uma importacao desif */ if (isset($aImportacaoDesif[0])) { $oImportacaoDesif = $aImportacaoDesif[0]->getEntity(); $aReceitasGuia = Contribuinte_Model_ImportacaoDesif::getTotalReceitasGuia($oImportacaoDesif->getId(), TRUE, $fAliquota); } return (object) $aReceitasGuia; }
/** * Salva os dados complementares do usuário contribuinte * * @param int $iInscricaoMunicipal * @return bool */ private function salvarDadosComplementaresUsuarioContribuinte($iInscricaoMunicipal) { try { $oContribuinte = Contribuinte_Model_Contribuinte::getByInscricaoMunicipal($iInscricaoMunicipal); $oContribuinteComplemento = Administrativo_Model_UsuarioContribuinteComplemento::getById($oContribuinte->getCgcCpf()); $oContribuinteComplemento->setInscricaoMunicipal($oContribuinte->getInscricaoMunicipal()); $oContribuinteComplemento->setInscricaoEstadual($oContribuinte->getInscricaoEstadual()); $oContribuinteComplemento->setCnpjcpf($oContribuinte->getCgcCpf()); $oContribuinteComplemento->setRazaoSocial($oContribuinte->getRazaoSocial() ?: $oContribuinte->getNome()); $oContribuinteComplemento->setNomeFantasia($oContribuinte->getNomeFantasia()); $oContribuinteComplemento->setEnderecoPaisCodigo(); $oContribuinteComplemento->setEnderecoUf($oContribuinte->getEstado()); $oContribuinteComplemento->setEnderecoMunicipioCodigo($oContribuinte->getCodigoIbgeMunicipio()); $oContribuinteComplemento->setEnderecoDescricao($oContribuinte->getDescricaoLogradouro()); $oContribuinteComplemento->setEnderecoBairro($oContribuinte->getLogradouroBairro()); $oContribuinteComplemento->setEnderecoNumero($oContribuinte->getLogradouroNumero()); $oContribuinteComplemento->setEnderecoComplemento($oContribuinte->getLogradouroComplemento()); $oContribuinteComplemento->setEnderecoCep($oContribuinte->getCep()); $oContribuinteComplemento->setContatoEmail($oContribuinte->getEmail()); $oContribuinteComplemento->setContatoTelefone($oContribuinte->getTelefone()); $oContribuinteComplemento->persist(); return TRUE; } catch (Exception $oErro) { return FALSE; } }
/** * Método abstrato para validar o formulário em ambos os relatórios * * @return array|boolean */ protected function validarFormulario() { $aDados = $this->getRequest()->getPost(); $aRetornoErros = array(); $oForm = new Fiscal_Form_Relatorio6(); $oForm->render(); // Verifica se os parâmetros do formulário são válidos if ($oForm->isValid($aDados)) { // Parâmetros do formulário $sCompetenciaInicial = $oForm->getValue('data_competencia_inicial'); $sCompetenciaFinal = $oForm->getValue('data_competencia_final'); $sPrestadorCnpj = $oForm->getValue('prestador_cnpj'); // Valida se é cadastrado e se é prestador de servico $oPrestador = Contribuinte_Model_Contribuinte::getByCpfCnpj($sPrestadorCnpj); if (!$oPrestador instanceof Contribuinte_Model_Contribuinte) { $sMensagemErro = $this->translate->_('Contribuinte não cadastrado no sistema.'); $aRetornoErros['status'] = FALSE; $aRetornoErros['fields'] = array('prestador_cnpj'); $aRetornoErros['error'][] = $this->translate->_($sMensagemErro); return $aRetornoErros; } else { if (!Contribuinte_Model_Servico::getByIm($oPrestador->getInscricaoMunicipal())) { $sMensagemErro = $this->translate->_('O contribuinte não é prestador de serviços.'); $aRetornoErros['status'] = FALSE; $aRetornoErros['fields'] = array('prestador_cnpj'); $aRetornoErros['error'][] = $this->translate->_($sMensagemErro); return $aRetornoErros; } } // Objeto para validação das competências inicial e final $oValidaCompetencia = new DBSeller_Validator_Competencia(); $oValidaCompetencia->setCompetenciaInicial($sCompetenciaInicial); $oValidaCompetencia->setCompetenciaFinal($sCompetenciaFinal); // Valida a competência inicial e final if (!$oValidaCompetencia->isValid($sCompetenciaInicial)) { $aRetornoErros['status'] = FALSE; $aRetornoErros['fields'] = array('data_competencia_inicial', 'data_competencia_final'); $aMensagensErro = $oValidaCompetencia->getMessages(); $aIndicesErro = array_keys($aMensagensErro); foreach ($aIndicesErro as $sIndiceErro) { if (array_key_exists($sIndiceErro, $aMensagensErro)) { $aRetornoErros['error'][] = $this->translate->_($aMensagensErro[$sIndiceErro]); } } return $aRetornoErros; } return TRUE; } else { $aCamposComErro = array_keys($oForm->getMessages()); $sMensagemErro = $this->translate->_('Preencha os dados corretamente.'); if (count($aCamposComErro) > 1) { $sMensagemErro = $this->translate->_('Preencha os dados corretamente.'); } else { if (in_array('data_competencia_final', $aCamposComErro)) { $sMensagemErro = $this->translate->_('Informe a Competência Final corretamente.'); } else { if (in_array('data_competencia_inicial', $aCamposComErro)) { $sMensagemErro = $this->translate->_('Informe a Competência Inicial corretamente.'); } } } $aRetornoErros['status'] = FALSE; $aRetornoErros['fields'] = array_keys($oForm->getMessages()); $aRetornoErros['error'][] = $this->translate->_($sMensagemErro); } return $aRetornoErros; }
/** * Preenche os dados do contribuinte * @param null $oContribuinteWebService * * @return Contribuinte_Model_Contribuinte|null */ public static function preencherInstanciaContribuinte($oContribuinteWebService = NULL) { $oContribuinte = NULL; if (is_object($oContribuinteWebService)) { $oContribuinte = new Contribuinte_Model_Contribuinte(); if (isset($oContribuinteWebService->razao_social)) { $oContribuinte->setRazaoSocial($oContribuinteWebService->razao_social); } if (isset($oContribuinteWebService->codigo_empresa)) { $oContribuinte->setInscricaoMunicipal($oContribuinteWebService->codigo_empresa); } if (isset($oContribuinteWebService->endereco)) { $oContribuinte->setEndereco($oContribuinteWebService->endereco); } if (isset($oContribuinteWebService->cgm)) { $oContribuinte->setCgm($oContribuinteWebService->cgm); } if (isset($oContribuinteWebService->tipo)) { $oContribuinte->setTipoPessoa($oContribuinteWebService->tipo); } if (isset($oContribuinteWebService->cnpj)) { $oContribuinte->setCgcCpf($oContribuinteWebService->cnpj); } if (isset($oContribuinteWebService->cgccpf)) { $oContribuinte->setCgcCpf($oContribuinteWebService->cgccpf); } if (isset($oContribuinteWebService->nome)) { $oContribuinte->setNome($oContribuinteWebService->nome); } if (isset($oContribuinteWebService->nome_fanta)) { $oContribuinte->setNomeFantasia($oContribuinteWebService->nome_fanta); } if (isset($oContribuinteWebService->identidade)) { $oContribuinte->setIdentidade($oContribuinteWebService->identidade); } if (isset($oContribuinteWebService->inscr_est)) { $oContribuinte->setInscricaoEstadual($oContribuinteWebService->inscr_est); } if (isset($oContribuinteWebService->tipo_lograd)) { $oContribuinte->setTipoLogradouro($oContribuinteWebService->tipo_lograd); } if (isset($oContribuinteWebService->lograd)) { $oContribuinte->setDescricaoLogradouro($oContribuinteWebService->lograd); } if (isset($oContribuinteWebService->numero)) { $oContribuinte->setLogradouroNumero($oContribuinteWebService->numero); } if (isset($oContribuinteWebService->complemento)) { $oContribuinte->setLogradouroComplemento($oContribuinteWebService->complemento); } if (isset($oContribuinteWebService->bairro)) { $oContribuinte->setLogradouroBairro($oContribuinteWebService->bairro); } if (isset($oContribuinteWebService->cod_ibge)) { $oContribuinte->setCodigoIbgeMunicipio($oContribuinteWebService->cod_ibge); } if (isset($oContribuinteWebService->munic)) { $oContribuinte->setDescricaoMunicipio($oContribuinteWebService->munic); } if (isset($oContribuinteWebService->uf)) { $oContribuinte->setEstado($oContribuinteWebService->uf); } if (isset($oContribuinteWebService->cod_pais)) { $oContribuinte->setCodigoPais($oContribuinteWebService->cod_pais); } if (isset($oContribuinteWebService->pais)) { $oContribuinte->setDescricaoPais($oContribuinteWebService->pais); } if (isset($oContribuinteWebService->cep)) { $oContribuinte->setCep($oContribuinteWebService->cep); } if (isset($oContribuinteWebService->telefone)) { $oContribuinte->setTelefone($oContribuinteWebService->telefone); } if (isset($oContribuinteWebService->fax)) { $oContribuinte->setFax($oContribuinteWebService->fax); } if (isset($oContribuinteWebService->celular)) { $oContribuinte->setCelular($oContribuinteWebService->celular); } if (isset($oContribuinteWebService->email)) { $oContribuinte->setEmail(strtolower($oContribuinteWebService->email)); } if (isset($oContribuinteWebService->inscricao)) { $oContribuinte->setInscricaoMunicipal($oContribuinteWebService->inscricao); } if (isset($oContribuinteWebService->data_inscricao)) { $oContribuinte->setDataInscricao(new DateTime($oContribuinteWebService->data_inscricao)); } if (isset($oContribuinteWebService->tipo_classificacao)) { $oContribuinte->setTipoClassificacao($oContribuinteWebService->tipo_classificacao); } if (isset($oContribuinteWebService->optante_simples)) { $oContribuinte->setOptanteSimples($oContribuinteWebService->optante_simples); } if (isset($oContribuinteWebService->optante_simples_baixado)) { $oContribuinte->setOptanteSimplesBaixado($oContribuinteWebService->optante_simples_baixado); } if (isset($oContribuinteWebService->tipo_emissao)) { $oContribuinte->setTipoEmissao($oContribuinteWebService->tipo_emissao); } if (isset($oContribuinteWebService->exigibilidade)) { $oContribuinte->setExigibilidade($oContribuinteWebService->exigibilidade); } if (isset($oContribuinteWebService->subst_tributaria)) { $oContribuinte->setSubstituicaoTributaria($oContribuinteWebService->subst_tributaria); } if (isset($oContribuinteWebService->regime_tributario)) { $oContribuinte->setRegimeTributario($oContribuinteWebService->regime_tributario); } if (isset($oContribuinteWebService->incentivo_fiscal)) { $oContribuinte->setIncentivoFiscal($oContribuinteWebService->incentivo_fiscal); } if (isset($oContribuinteWebService->subst_tributaria)) { $oContribuinte->setDescricaoSubstituicaoTributaria(Contribuinte_Model_SubstitutoTributario::getById($oContribuinteWebService->subst_tributaria)); $oContribuinte->setDescricaoExigibilidade(Contribuinte_Model_Exigeiss::getById($oContribuinteWebService->exigibilidade)); $oContribuinte->setDescricaoIncentivoFiscal(Contribuinte_Model_IncentivoFiscal::getById($oContribuinteWebService->incentivo_fiscal)); $oContribuinte->setDescricaoRegimeTributario(Contribuinte_Model_Tributacao::getById($oContribuinteWebService->regime_tributario)); $oContribuinte->setDescricaoTipoClassificacao(Contribuinte_Model_TipoEmpresa::getById($oContribuinteWebService->tipo_classificacao)); $oContribuinte->setDescricaoTipoEmissao(Contribuinte_Model_TipoEmissao::getById($oContribuinteWebService->tipo_emissao)); $oContribuinte->setDescricaoOptanteSimples('Não'); if ($oContribuinteWebService->optante_simples == 'Sim' && $oContribuinteWebService->optante_simples_baixado == 'Sim') { $oContribuinte->setDescricaoOptanteSimples('Não'); } else { if ($oContribuinteWebService->optante_simples == 'Sim') { $oContribuinte->setDescricaoOptanteSimples('Sim'); if (isset($oContribuinteWebService->optante_simples_categoria)) { $oContribuinte->setOptanteSimplesCategoria($oContribuinteWebService->optante_simples_categoria); } } } } } return $oContribuinte; }
/** * Método responsável pelo envio de email no cancelamento ou na solicitação do mesmo * * @param $oNota * @param $oSolicitacao * @param $sJustificativaFiscal * @return null|string */ public function enviarEmailRejeicao($oNota, $oSolicitacao, $sJustificativaFiscal) { //Retorna os usuarios do tipo fiscal $aUsuariosFiscal = Administrativo_Model_Usuario::getByAttribute('tipo', Administrativo_Model_Usuario::USUARIO_TIPO_FISCAL); //Remove o usuário admin do array if ($aUsuariosFiscal[0]->getAdministrativo()) { unset($aUsuariosFiscal[0]); } $aEmailBCC = array(); //Pega os emails cadastrados dos usuarios fiscais foreach ($aUsuariosFiscal as $oUsuarioFiscal) { $sEmail = $oUsuarioFiscal->getEmail(); if (!is_null($sEmail) && $sEmail != '') { $aEmailBCC[] = $sEmail; } } $oValidadorEmail = new Zend_Validate_EmailAddress(); $emailTO = $oNota->getT_email(); $sMensagemRetorno = NULL; $sEmailTomador = $oSolicitacao->getEmailTomador(); if ($oValidadorEmail->isValid($emailTO) || !empty($sEmailTomador) && $oValidadorEmail->isValid($sEmailTomador) || count($aEmailBCC) > 0) { $iInscricaoMunicipal = $oNota->getP_im(); $oContribuinte = Contribuinte_Model_Contribuinte::getByInscricaoMunicipal($iInscricaoMunicipal); $this->view->nota = $oNota; $this->view->justificativa_fiscal = $sJustificativaFiscal; $this->view->tomadorNome = $oNota->getT_razao_social(); $this->view->prestadorNome = $oContribuinte->getNome(); $this->view->prestadorCnpj = DBSeller_Helper_Number_Format::maskCPF_CNPJ($oContribuinte->getCgcCpf()); $this->view->nfseNumero = $oNota->getNota(); $this->view->nfseUrl = $oNota->getUrlVerificacaoNota(); $this->mensagem = $this->view->render('nota/email-rejeicao-cancelamento.phtml'); // Verifica se foi mudado o e-mail do Tomador para enviar uma cópia oculta do cancelamento if (!empty($sEmailTomador) && $sEmailTomador != $oNota->getT_email() && $oValidadorEmail->isValid($sEmailTomador)) { $emailTO = $sEmailTomador; if ($oValidadorEmail->isValid($oNota->getT_email())) { $aEmailBCC[] = $oNota->getT_email(); } $sMensagemRetorno = "Cancelamento rejeitado com sucesso.<br>Email foi enviado para {$emailTO}"; } // Caso não haja email cadastrado na nota e nem email informado no cancelamento, // ou se for uma solicitação de cancelamento, o primeiro email de fiscal é colocado // como destinatário principal para que seja possível o envio if (is_null($emailTO) || empty($emailTO)) { $emailTO = $aEmailBCC[0]; unset($aEmailBCC[0]); $sMensagemRetorno = "Cancelamento efetuado com sucesso.<br>Email foi enviado para {$emailTO}"; } // Envia Email DBSeller_Helper_Mail_Mail::send($emailTO, "Nota Fiscal Eletrônica nº {$oNota->getNota()}", $this->mensagem, 'utf-8', $aEmailBCC); } return $sMensagemRetorno; }
/** * Consulta todas as guias dos contribuintes por competência * @param $iMes * @param $iAno * @return array */ public static function getByGuiasContribuinteAndCompetencia($iMes, $iAno) { $oEntityManager = self::getEm(); $sSql = 'SELECT nota.id_contribuinte, nota.ano_comp, nota.mes_comp, SUM(nota.s_vl_iss) AS s_vl_iss , SUM(nota.s_vl_servicos) AS s_vl_servicos FROM Contribuinte\\Nota nota WHERE nota.mes_comp = :mes_comp AND nota.ano_comp = :ano_comp AND nota.cancelada = false AND nota.s_vl_iss > 0 AND nota.s_dados_iss_retido = 1 AND nota.emite_guia = true AND nota.importada = false AND NOT EXISTS(SELECT 1 FROM Contribuinte\\Guia guia WHERE guia.mes_comp = :mes_comp AND guia.ano_comp = :ano_comp AND guia.id_contribuinte = nota.id_contribuinte) GROUP BY nota.id_contribuinte, nota.ano_comp, nota.mes_comp ORDER BY nota.ano_comp, nota.mes_comp DESC'; $oQuery = $oEntityManager->createQuery($sSql); $oQuery->setParameter('mes_comp', $iMes); $oQuery->setParameter('ano_comp', $iAno); $aResultados = $oQuery->getResult(); $aRetorno = array(); foreach ($aResultados as $aGuiaCompetencia) { $oContribuinte = Contribuinte_Model_Contribuinte::getById($aGuiaCompetencia['id_contribuinte']); $oCompetencia = new Contribuinte_Model_Competencia($aGuiaCompetencia['ano_comp'], $aGuiaCompetencia['mes_comp'], $oContribuinte); $oCompetencia->setTotalIss($aGuiaCompetencia['s_vl_iss']); $oCompetencia->setTotalServico($aGuiaCompetencia['s_vl_servicos']); $lExisteGuia = Contribuinte_Model_Guia::existeGuia($oContribuinte, $aGuiaCompetencia['mes_comp'], $aGuiaCompetencia['ano_comp']); if ($lExisteGuia) { continue; } $aRetorno[] = $oCompetencia; } unset($aResultados); return $aRetorno; }
/** * Método responsável pelo envio de email no cancelamento ou na solicitação do mesmo * @param Contribuinte_Model_Nota $oNota * @param array $aDados * @param array $aEmailBCC * @param boolean $lSolicitacao * @param string $sJustificativa * @return string|null * @throws Exception */ private function enviarEmailCancelamento($oNota, $aDados, $aEmailBCC, $lSolicitacao = FALSE, $sJustificativa = null) { try { $oValidadorEmail = new Zend_Validate_EmailAddress(); $emailTO = $oNota->getT_email(); $sMensagemRetorno = NULL; if ($oValidadorEmail->isValid($emailTO) || !empty($aDados['email']) && $oValidadorEmail->isValid($aDados['email']) || count($aEmailBCC) > 0) { $iInscricaoMunicipal = $oNota->getP_im(); $oContribuinte = Contribuinte_Model_Contribuinte::getByInscricaoMunicipal($iInscricaoMunicipal); $this->view->justificativa = $sJustificativa; $this->view->solicitacao = $lSolicitacao; $this->view->nota = $oNota; $this->view->tomadorNome = $oNota->getT_razao_social(); $this->view->prestadorNome = $oContribuinte->getNome(); $this->view->prestadorCnpj = DBSeller_Helper_Number_Format::maskCPF_CNPJ($oContribuinte->getCgcCpf()); $this->view->nfseNumero = $oNota->getNota(); $this->view->nfseUrl = $oNota->getUrlVerificacaoNota(); $this->mensagem = $this->view->render('nota/email-emissao.phtml'); $aArquivoPdfNfse = $this->getNotaImpressao($oNota->getCod_verificacao(), TRUE, TRUE); // Verifica se foi mudado o e-mail do Tomador para enviar uma cópia oculta do cancelamento if (!empty($aDados['email']) && $aDados['email'] != $oNota->getT_email() && $oValidadorEmail->isValid($aDados['email'])) { $emailTO = $aDados['email']; if ($oValidadorEmail->isValid($oNota->getT_email())) { $aEmailBCC[] = $oNota->getT_email(); } $sMensagemRetorno = "Cancelamento efetuado com sucesso.<br>Email foi enviado para {$emailTO}"; } /*Caso não haja email cadastrado na nota e nem email informado no cancelamento, ou se for uma solicitação de cancelamento, o primeiro email de fiscal é colocado como destinatário principal para que seja possível o envio*/ if (is_null($emailTO) || empty($emailTO) || $lSolicitacao) { $emailTO = $aEmailBCC[0]; unset($aEmailBCC[0]); if ($lSolicitacao) { $sMensagemRetorno = "Cancelamento solicitado com sucesso.<br>Email foi enviado para {$emailTO}"; } } // Envia Email DBSeller_Helper_Mail_Mail::sendAttachment($emailTO, "Nota Fiscal Eletrônica nº {$oNota->getNota()}", $this->mensagem, $aArquivoPdfNfse, $aEmailBCC); // Apaga o arquivo temporario gerado para envio do email unlink($aArquivoPdfNfse['location']); return $sMensagemRetorno; } } catch (Exception $oError) { throw $oError; } }
/** * Realiza a busca dos dados do contribuinte */ public function buscaContribuinteAction() { $this->setAjaxContext('getContribuinte'); $dados = Contribuinte_Model_Contribuinte::getByIm($this->getRequest()->getParam('term')); if (empty($dados) || $dados == null) { echo json_encode(null); return; } $parametro = $this->buscaParametroContribuinte($dados[0]->attr('inscricao')); if ($parametro === null || empty($parametro)) { echo json_encode(null); return; } $retorno = new stdClass(); $retorno->dados = $dados[0]->toArray(); $retorno->parametros = $parametro->toJson(); echo json_encode($retorno); }
/** * Acao Salvar DMS Entrada * * @return mixed bool|json */ public function emissaoManualEntradaSalvarAction() { // Dados Request $aDados = $this->getRequest()->getParams(); // Formulario $oForm = new Contribuinte_Form_DmsEntrada(); $oForm->populate($aDados); // Valida o formulario if ($oForm->isValid($aDados)) { // Verifica se ja existe uma nota com o numero e se tem AIDOF self::emissaoManualEntradaVerificarDocumentoAction(); // Valida se a data da nota esta no mes corrente $oValidaDataNota = new DBSeller_Validator_DateCurrentMonth(); $oValidaDataNota->setMes($aDados['mes_comp']); $oValidaDataNota->setAno($aDados['ano_comp']); if (!$oValidaDataNota->isValid($aDados['s_nota_data'])) { $aErros = $oValidaDataNota->getMessages(); $aRetornoJson['status'] = FALSE; $aRetornoJson['error'][] = $aErros[$oValidaDataNota::COMPETENCIA_INVALIDA]; echo $this->getHelper('json')->sendJson($aRetornoJson); exit; } // Aplica filtro de mascaras $aDados['s_cpf_cnpj'] = $oForm->getElement('s_cpf_cnpj')->getValue(); // SALVAR DADOS DA DMS (INI) if (isset($aDados['id_dms']) && !empty($aDados['id_dms'])) { $oDms = Contribuinte_Model_Dms::getById($aDados['id_dms']); } else { $oDms = new Contribuinte_Model_Dms(); $oDms->setAnoCompetencia($aDados['ano_comp']); $oDms->setMesCompetencia($aDados['mes_comp']); $oDms->setOperacao('e'); } if (!is_object($oDms)) { $aRetornoJson['status'] = FALSE; $aRetornoJson['error'][] = $this->translate->_('Código DMS não encontrado.'); echo $this->getHelper('json')->sendJson($aRetornoJson); exit; } $oDms->setDataOperacao(new DateTime()); $oDms->setStatus('aberto'); $oDms->setIdContribuinte($this->oContribuinte->getIdUsuarioContribuinte()); $oDms->setIdUsuario($this->usuarioLogado->getId()); // SALVAR DADOS DA DMS (FIM) // SALVAR DADOS DA NOTA (INI) if (isset($aDados['id']) && !empty($aDados['id'])) { $oDmsNota = Contribuinte_Model_DmsNota::getById($aDados['id']); } else { $oDmsNota = new Contribuinte_Model_DmsNota(); } if (!is_object($oDmsNota)) { $aRetornoJson['status'] = FALSE; $aRetornoJson['error'][] = $this->translate->_('Código Dms Nota não encontrado.'); echo $this->getHelper('json')->sendJson($aRetornoJson); exit; } // Dados Nota $oGrupoDocumento = Contribuinte_model_nota::getTipoNota($aDados['tipo_documento']); $oDataNota = new DateTime(str_replace('/', '-', $aDados['s_nota_data'])); $oDataNota->format('Y-m-d'); $oDmsNota->setNotaNumero($aDados['s_nota']); $oDmsNota->setNotaSerie($aDados['s_nota_serie']); $oDmsNota->setNotaData($oDataNota); $oDmsNota->setGrupoDocumento($oGrupoDocumento->codigo_grupo); $oDmsNota->setTipoDocumento($aDados['tipo_documento']); $oDmsNota->setSituacaoDocumento($aDados['situacao_documento']); $oDmsNota->setNaturezaOperacao($aDados['natureza_operacao']); $oDmsNota->setEmiteGuia(TRUE); $oDmsNota->setServicoImpostoRetido($aDados['s_imposto_retido'] == 1); // Se a natureza da operação for 2 (fora da prefeitura), NÃO emite guia if ($aDados['natureza_operacao'] == 2) { $oDmsNota->setEmiteGuia(FALSE); } // Dados Servico $oDataServico = new DateTime(str_replace('/', '-', $aDados['s_data'])); $oDataServico->format('Y-m-d'); // Formata dados $sServicoValorPagar = DBSeller_Helper_Number_Format::toDataBase($aDados['s_valor_bruto']); $sServicoValorDeducao = DBSeller_Helper_Number_Format::toDataBase($aDados['s_valor_deducao']); $sServicoValorCondicionado = DBSeller_Helper_Number_Format::toDataBase($aDados['s_vl_condicionado']); $sServicoDescontoIncondicionado = DBSeller_Helper_Number_Format::toDataBase($aDados['s_vl_desc_incondicionado']); $sServicoAliquota = str_replace(',', '.', $aDados['s_aliquota']); $sServicoBaseCalculo = DBSeller_Helper_Number_Format::toDataBase($aDados['s_base_calculo']); $sServicoValorImposto = DBSeller_Helper_Number_Format::toDataBase($aDados['s_valor_imposto']); $sServicoValorLiquido = DBSeller_Helper_Number_Format::toDataBase($aDados['s_valor_pagar']); // Seta os dados do Documento de DMS $oDmsNota->setNumpre(0); $oDmsNota->setServicoData($oDataServico); $oDmsNota->setServicoImpostoRetido($aDados['s_imposto_retido']); $oDmsNota->setServicoValorPagar($sServicoValorPagar); $oDmsNota->setServicoValorDeducao($sServicoValorDeducao); $oDmsNota->setServicoValorCondicionado($sServicoValorCondicionado); $oDmsNota->setServicoDescontoIncondicionado($sServicoDescontoIncondicionado); $oDmsNota->setServicoAliquota($sServicoAliquota); $oDmsNota->setServicoBaseCalculo($sServicoBaseCalculo); $oDmsNota->setServicoValorImposto($sServicoValorImposto); $oDmsNota->setServicoValorLiquido($sServicoValorLiquido); $oDmsNota->setDescricaoServico($aDados['s_observacao']); $oDmsNota->setServicoCodigoObra($aDados['s_codigo_obra']); $oDmsNota->setServicoArt($aDados['s_art']); $oDmsNota->setServicoInformacoesComplementares($aDados['s_informacoes_complementares']); if ($this->oContribuinte->getInscricaoMunicipal()) { $oDadosTomador = Contribuinte_Model_Contribuinte::getByInscricaoMunicipal($this->oContribuinte->getInscricaoMunicipal()); } else { $oDadosTomador = Contribuinte_Model_ContribuinteEventual::getByCpfCnpj($this->oContribuinte->getCgcCpf()); } $oDmsNota->setTomadorCpfCnpj($oDadosTomador->getCgcCpf()); $oDmsNota->setTomadorInscricaoMunicipal($oDadosTomador->getInscricaoMunicipal()); $oDmsNota->setTomadorInscricaoEstadual($oDadosTomador->getInscricaoEstadual()); $oDmsNota->setTomadorRazaoSocial($oDadosTomador->getNome()); $oDmsNota->setTomadorNomeFantasia($oDadosTomador->getNomeFantasia()); $oDmsNota->setTomadorEnderecoRua($oDadosTomador->getDescricaoLogradouro()); $oDmsNota->setTomadorEnderecoNumero($oDadosTomador->getLogradouroNumero()); $oDmsNota->setTomadorEnderecoComplemento($oDadosTomador->getLogradouroComplemento()); $oDmsNota->setTomadorEnderecoBairro($oDadosTomador->getLogradouroBairro()); $oDmsNota->setTomadorEnderecoCodigoMunicipio($oDadosTomador->getCodigoIbgeMunicipio()); $oDmsNota->setTomadorEnderecoEstado($oDadosTomador->getEstado()); $oDmsNota->setTomadorEnderecoCodigoPais($oDadosTomador->getCodigoPais()); $oDmsNota->setTomadorEnderecoCEP($oDadosTomador->getCep()); $oDmsNota->setTomadorTelefone($oDadosTomador->getTelefone()); $oDmsNota->setTomadorEmail($oDadosTomador->getEmail()); // Dados Tomador $oDadosPrestador = Contribuinte_Model_Empresa::getByCgcCpf($aDados['s_cpf_cnpj']); if (empty($oDadosPrestador->eCidade)) { // Se não for cadastrado no eCidade, salva prestador no NFSE if (empty($oDadosPrestador->eNota) && !empty($aDados['s_cpf_cnpj'])) { $aDadosPrestador['t_cnpjcpf'] = $aDados['s_cpf_cnpj']; $aDadosPrestador['t_razao_social'] = $aDados['s_razao_social']; $oDadosPrestadorNota = new Contribuinte_Model_EmpresaBase(); $oDadosPrestadorNota->persist($aDadosPrestador); } $oDmsNota->setPrestadorCpfCnpj($aDados['s_cpf_cnpj']); $oDmsNota->setPrestadorRazaoSocial($aDados['s_razao_social']); } else { $oDadosPrestadorEcidade = $oDadosPrestador->eCidade[0]; $oDmsNota->setPrestadorCpfCnpj($aDados['s_cpf_cnpj']); $oDmsNota->setPrestadorNomeFantasia($oDadosPrestadorEcidade->attr('nome_fanta')); $oDmsNota->setPrestadorRazaoSocial($oDadosPrestadorEcidade->attr('nome')); $oDmsNota->setPrestadorInscricaoMunicipal($oDadosPrestadorEcidade->attr('inscricao')); $oDmsNota->setPrestadorInscricaoEstadual($oDadosPrestadorEcidade->attr('inscr_est')); $oDmsNota->setPrestadorEnderecoRua($oDadosPrestadorEcidade->attr('endereco')); $oDmsNota->setPrestadorEnderecoNumero($oDadosPrestadorEcidade->attr('numero')); $oDmsNota->setPrestadorEnderecoComplemento($oDadosPrestadorEcidade->attr('complemento')); $oDmsNota->setPrestadorEnderecoBairro($oDadosPrestadorEcidade->attr('bairro')); $oDmsNota->setPrestadorEnderecoCodigoMunicipio($oDadosPrestadorEcidade->attr('cod_ibge')); $oDmsNota->setPrestadorEnderecoEstado($oDadosPrestadorEcidade->attr('uf')); $oDmsNota->setPrestadorEnderecoCodigoPais($oDadosPrestadorEcidade->attr('cod_pais')); $oDmsNota->setPrestadorEnderecoCEP($oDadosPrestadorEcidade->attr('cep')); $oDmsNota->setPrestadorTelefone($oDadosPrestadorEcidade->attr('telefone')); $oDmsNota->setPrestadorEmail($oDadosPrestadorEcidade->attr('email')); } $oDmsNota->setIdUsuario($this->usuarioLogado->getId()); $oDmsNota->setIdContribuinte($this->oContribuinte->getIdUsuarioContribuinte()); $oDmsNota->setDms($oDms->getEntity()); // Adiciona o documento ao DMS $oDms->addDmsNotas($oDmsNota->getEntity()); // Salva o DMS e o documento $iCodigoDms = $oDms->persist(); // Configura a mensagem de retorno $aRetornoJson['status'] = TRUE; $aRetornoJson['success'] = $this->translate->_('Documento lançado com sucesso!'); $aRetornoJson['id_dms'] = $iCodigoDms; // Quando for alteração, configura a mensagem de alteração if (isset($aDados['id']) && $aDados['id']) { $sUrlDmsAlterado = "/contribuinte/dms/emissao-manual-entrada/id_dms/{$iCodigoDms}"; $aRetornoJson['success'] = $this->translate->_('Documento alterado com sucesso!'); $aRetornoJson['url'] = $this->view->baseUrl($sUrlDmsAlterado); } } else { $aRetornoJson['status'] = FALSE; $aRetornoJson['fields'] = array_keys($oForm->getMessages()); $aRetornoJson['error'][] = $this->translate->_('Preencha os dados corretamente.'); } echo $this->getHelper('json')->sendJson($aRetornoJson); }
/** * Prepara os dados para processar o arquivo do webservice * * @param string $sArquivo * @return bool * @throws Exception */ public function preparaDados($sArquivo) { try { // Foi comentado o if de verificação pois estava ocorrendo um problema na emissão e retornava um arquivo em branco. // Somente em ambiente de desenvolvimento //if (APPLICATION_ENV == 'development') { $oDomDocument = new DOMDocument(); $oDomDocument->loadXml($sArquivo); $oData = new Zend_Date(); $this->sNomeArquivo = "/RecepcionarLote-{$oData->getTimestamp()}.xml"; $this->sCaminhoArquivo = TEMP_PATH; /** * Verifica se o caminho do arquivo não existe recria a pasta */ if (!file_exists($this->sCaminhoArquivo)) { mkdir($this->sCaminhoArquivo, 0777); } /** * Escreve os dados no arquivo */ $this->sCaminhoNomeArquivo = $this->sCaminhoArquivo . $this->sNomeArquivo; $aArquivo = fopen($this->sCaminhoNomeArquivo, 'w'); fputs($aArquivo, print_r($sArquivo, TRUE)); fclose($aArquivo); //} $oValidacao = new DBSeller_Helper_Xml_AssinaturaDigital($sArquivo); /** * Validação digital do arquivo */ if (!$oValidacao->validar()) { throw new Exception($oValidacao->getLastError()); } $oUsuario = Administrativo_Model_Usuario::getByAttribute('cnpj', $oValidacao->getCnpj()); if (!is_object($oUsuario)) { throw new Exception('Usuário contribuinte não existe!', 157); } /** * Busca usuário contribuinte através do usuário cadastrado */ $aUsuarioContribuinte = Administrativo_Model_UsuarioContribuinte::getByAttributes(array('usuario' => $oUsuario->getId(), 'cnpj_cpf' => $oUsuario->getCnpj())); if (!is_object($aUsuarioContribuinte[0])) { throw new Exception('Usuário contribuinte não encontrado!', 160); } /** * Seta os dados do contribuinte */ $this->oDadosUsuario = $oUsuario; $this->oContribuinte->sCpfCnpj = $aUsuarioContribuinte[0]->getCnpjCpf(); $this->oContribuinte->iCodigoUsuario = $oUsuario->getId(); $this->oContribuinte->iIdUsuarioContribuinte = $aUsuarioContribuinte[0]->getId(); /** * Atualiza os dados do contribuinte na sessão */ $oSessao = new Zend_Session_Namespace('nfse'); $oSessao->contribuinte = Contribuinte_Model_Contribuinte::getById($this->oContribuinte->iIdUsuarioContribuinte); return TRUE; } catch (Exception $oErro) { throw new Exception($oErro->getMessage(), $oErro->getCode()); } }
/** * Define os dados do contribuinte * * @param Contribuinte_Model_Contribuinte $oContribuinte * @param $iMesCompetencia * @param $iAnoCompetencia * @param bool $lLivroFiscal */ public function setDadosContribuinte(Contribuinte_Model_Contribuinte $oContribuinte, $iMesCompetencia, $iAnoCompetencia, $lLivroFiscal = TRUE) { if (!$lLivroFiscal) { $this->AddPage(); } // Mês e ano da competnência por extenso $sCompetencia = DBSeller_Helper_Date_Date::mesExtenso($iMesCompetencia) . "/{$iAnoCompetencia}"; $sCompetencia = utf8_decode($sCompetencia); // Mostra os campos referentes à guia somente para contribuintes NFSe if ($oContribuinte->getTipoEmissao() == Contribuinte_Model_Contribuinte::TIPO_EMISSAO_NOTA || !$lLivroFiscal) { // Situação da Guia $sDataFechamentoGuia = '-'; $sSituacaoGuia = 'Em aberto'; $oGuia = new Contribuinte_Model_Guia(); $aGuia = $oGuia->getByCompetenciaAndContribuinte($iAnoCompetencia, $iMesCompetencia, $oContribuinte, Contribuinte_Model_Guia::$PRESTADOR); if (count($aGuia) > 0) { $oGuia = $aGuia[0]->getEntity(); $sDataFechamentoGuia = $oGuia->getDataFechamento()->format('d/m/Y'); $sSituacaoGuia = Contribuinte_Model_Guia::$SITUACAO[$oGuia->getSituacao()]; } $aLarguraCelulas = array(57, 55, 55, 55, 55, 45, 50); $this->SetFont('Arial', 'B', 8); if ($lLivroFiscal) { // Mostra CGM ou Inscrição Municipal if ($oContribuinte->getCgm()) { $this->Cell($aLarguraCelulas[0], 5, utf8_decode('CGM / Inscrição Municipal:'), 1); } else { $this->Cell($aLarguraCelulas[0], 5, utf8_decode('Inscrição Municipal:'), 1); } $this->Cell($aLarguraCelulas[1], 5, utf8_decode('CPF / CNPJ:'), 1); $this->Cell($aLarguraCelulas[2], 5, utf8_decode('Mês Referência:'), 1); $this->Cell($aLarguraCelulas[3], 5, utf8_decode('Situação:'), 1); $this->Cell($aLarguraCelulas[4], 5, utf8_decode('Encerramento:'), 1); $this->Ln(); $this->SetFont('Arial', NULL, 8); // Mostra CGM ou Inscrição Municipal if ($oContribuinte->getCgm()) { $this->Cell($aLarguraCelulas[0], 5, $oContribuinte->getCgm(), 1); } else { $this->Cell($aLarguraCelulas[0], 5, $oContribuinte->getInscricaoMunicipal(), 1); } $sCpfCnpjContribuinte = DBSeller_Helper_Number_Format::maskCPF_CNPJ($oContribuinte->getCgcCpf()); $this->Cell($aLarguraCelulas[1], 5, $sCpfCnpjContribuinte, 1); $this->Cell($aLarguraCelulas[2], 5, $sCompetencia, 1); $this->Cell($aLarguraCelulas[3], 5, $sSituacaoGuia, 1); $this->Cell($aLarguraCelulas[4], 5, $sDataFechamentoGuia, 1); $this->Ln(6); } else { // Mostra CGM ou Inscrição Municipal if ($oContribuinte->getCgm()) { $this->Cell($aLarguraCelulas[1], 5, utf8_decode('CGM / Inscrição Municipal:'), 1); } else { $this->Cell($aLarguraCelulas[1], 5, utf8_decode('Inscrição Municipal:'), 1); } $this->Cell($aLarguraCelulas[6], 5, utf8_decode('CPF / CNPJ:'), 1); $this->Cell($aLarguraCelulas[5], 5, utf8_decode('Competencia Inicial:'), 1); $this->Cell($aLarguraCelulas[5], 5, utf8_decode('Competencia Final:'), 1); $this->Cell($aLarguraCelulas[5], 5, utf8_decode('Situação:'), 1); $this->Cell(0, 5, utf8_decode('Encerramento:'), 1); $this->Ln(); $this->SetFont('Arial', NULL, 8); // Mostra CGM ou Inscrição Municipal if ($oContribuinte->getCgm()) { $this->Cell($aLarguraCelulas[1], 5, $oContribuinte->getCgm(), 1); } else { $this->Cell($aLarguraCelulas[1], 5, $oContribuinte->getInscricaoMunicipal(), 1); } $sCpfCnpjContribuinte = DBSeller_Helper_Number_Format::maskCPF_CNPJ($oContribuinte->getCgcCpf()); $sCompetenciaInicial = $iMesCompetencia['inicial'] . '/' . $iAnoCompetencia['inicial']; $sCompetenciaFinal = $iMesCompetencia['final'] . '/' . $iAnoCompetencia['final']; $this->Cell($aLarguraCelulas[6], 5, $sCpfCnpjContribuinte, 1); $this->Cell($aLarguraCelulas[5], 5, $sCompetenciaInicial, 1); $this->Cell($aLarguraCelulas[5], 5, $sCompetenciaFinal, 1); $this->Cell($aLarguraCelulas[5], 5, $sSituacaoGuia, 1); $this->Cell(0, 5, $sDataFechamentoGuia, 1); $this->Ln(6); } } else { $aLarguraCelulas = array(93, 92, 92); $this->SetFont('Arial', 'B', 8); // Mostra CGM ou Inscrição Municipal if ($oContribuinte->getCgm()) { $this->Cell($aLarguraCelulas[0], 5, utf8_decode('CGM / Inscrição Municipal:'), 1); } else { $this->Cell($aLarguraCelulas[0], 5, utf8_decode('Inscrição Municipal:'), 1); } $this->Cell($aLarguraCelulas[1], 5, utf8_decode('CPF / CNPJ:'), 1); $this->Cell($aLarguraCelulas[2], 5, utf8_decode('Mês Referência:'), 1); $this->Ln(); $this->SetFont('Arial', NULL, 8); // Mostra CGM ou Inscrição Municipal if ($oContribuinte->getCgm()) { $this->Cell($aLarguraCelulas[0], 5, $oContribuinte->getCgm(), 1); } else { $this->Cell($aLarguraCelulas[0], 5, $oContribuinte->getInscricaoMunicipal(), 1); } $this->Cell($aLarguraCelulas[1], 5, DBSeller_Helper_Number_Format::maskCPF_CNPJ($oContribuinte->getCgcCpf()), 1); $this->Cell($aLarguraCelulas[2], 5, $sCompetencia, 1); $this->Ln(6); } $this->SetFont('Arial', 'B', 8); $this->Cell(0, 5, utf8_decode('Razão Social:'), 1); $this->Ln(); $this->SetFont('Arial', NULL, 8); $this->Cell(0, 5, utf8_decode($oContribuinte->getNome()), 1); $this->Ln(6); $this->SetFont('Arial', 'B', 8); $this->Cell(242, 5, utf8_decode('Endereço:'), 1); $this->Cell(35, 5, utf8_decode('Número:'), 1); $this->Ln(); $this->SetFont('Arial', NULL, 8); $this->Cell(242, 5, utf8_decode($oContribuinte->getDescricaoLogradouro()), 1); $this->Cell(35, 5, utf8_decode($oContribuinte->getLogradouroNumero()), 1); $this->Ln(6); $this->SetFont('Arial', 'B', 8); $this->Cell(90, 5, utf8_decode('Complemento:'), 1); $this->Cell(80, 5, utf8_decode('Bairro:'), 1); $this->Cell(72, 5, utf8_decode('Cidade:'), 1); $this->Cell(35, 5, utf8_decode('Estado:'), 1); $this->Ln(); $this->SetFont('Arial', NULL, 8); $this->Cell(90, 5, utf8_decode($oContribuinte->getLogradouroComplemento()), 1); $this->Cell(80, 5, utf8_decode($oContribuinte->getLogradouroBairro()), 1); $this->Cell(72, 5, utf8_decode($oContribuinte->getDescricaoMunicipio()), 1); $this->Cell(35, 5, utf8_decode($oContribuinte->getEstado()), 1); $this->Ln(6); $oDataAtual = new DateTime(); $sEnderecoIp = $_SERVER['REMOTE_ADDR']; $this->SetFont('Arial', 'B', 8); $this->Cell(139, 5, utf8_decode("Endereço IP: {$sEnderecoIp}"), 1); $this->Cell(138, 5, utf8_decode("Data da impressão: {$oDataAtual->format('d/m/Y H:i:s')}"), 1); $this->Ln(7); }
/** * Retorna a Instância do contribuinte * @return Contribuinte_Model_ContribuinteAbstract */ public static function getContribuinte($iCodigoContribuinte) { $oContribuinte = Administrativo_Model_UsuarioContribuinte::getById($iCodigoContribuinte); $iCodigoUsuario = $oContribuinte->getId(); $oUsuarioRetorno = NULL; switch ($oContribuinte->getTipoContribuinte()) { case Administrativo_Model_UsuarioContribuinte::CONTRIBUINTE_EVENTUAL: $oUsuarioRetorno = Contribuinte_Model_ContribuinteEventual::getById($iCodigoUsuario); break; case Administrativo_Model_UsuarioContribuinte::CONTRIBUINTE_MUNICIPAL: $oUsuarioRetorno = Contribuinte_Model_Contribuinte::getById($iCodigoUsuario); break; } return $oUsuarioRetorno; }
/** * Retorna os dados para a emissão da nfse * * @param string $sCodigoVerificacao * @param object $oNota * @param object $oPrefeitura * @return array */ public static function getDadosEmissao($sCodigoVerificacao, $oNota, $oPrefeitura) { /** * Verifica se os dados foram enviados pela verificar de autenticidade sem nescessidade de estar logado ao sistema */ if ($oNota->getId_contribuinte()) { $oPrestador = Contribuinte_Model_Contribuinte::getById($oNota->getId_contribuinte()); } else { $oPrestador = Contribuinte_Model_Contribuinte::getByInscricaoMunicipal($oNota->getP_im()); } $oBaseUrlHelper = new Zend_View_Helper_BaseUrl(); $oServerUrlHelper = new Zend_View_Helper_ServerUrl(); // Calcula e divide a quantidade de páginas conforme os dados descritos no campo de 'Descrição do Serviço' $iTamanhoTotalTexto = strlen($oNota->getS_dados_discriminacao()); $iQndPaginas = $iTamanhoTotalTexto > 800 ? 2 : 1; $aDados = array(); // Quebra os modelos de nota em páginas conforme os dados descritos no campo de 'Descrição do Serviço' for ($iIndex = 1; $iIndex <= $iQndPaginas; $iIndex++) { // Dados de manipulação do cabeçalho $oDadosCabecalho = new StdClass(); $oDadosCabecalho->sBrasao = $oBaseUrlHelper->baseUrl('/global/img/brasao.jpg'); $oDadosCabecalho->oDadosPrefeitura = $oPrefeitura; if (getenv('APPLICATION_ENV') != 'production') { $oDadosCabecalho->sUrlTarja = $oBaseUrlHelper->baseUrl('/administrativo/img/nfse/tarja_sem_valor.png'); } else { if ($oNota->getIdNotaSubstituta()) { $oDadosCabecalho->sUrlTarja = $oBaseUrlHelper->baseUrl('/administrativo/img/nfse/tarja_substituida.gif'); } else { if ($oNota->getCancelada()) { $oDadosCabecalho->sUrlTarja = $oBaseUrlHelper->baseUrl('/administrativo/img/nfse/tarja_cancelada.gif'); } } } // Gera o QRCode apenas para os modelos que exibem o mesmo if (in_array($oPrefeitura->getModeloImpressaoNfse(), array(2, 3))) { $aVerificacao = array('module' => 'auth', 'controller' => 'nfse', 'action' => 'autenticar-post', 'prestador_cnpjcpf' => $oNota->getP_cnpjcpf(), 'codigo_verificacao' => $sCodigoVerificacao); $sUrlVerificada = DBSeller_Helper_Url_Encrypt::encrypt(array('module' => 'default', 'controller' => 'index', 'action' => 'autentica', 'url' => $aVerificacao)); //"codigo_verificacao/{$sCodigoVerificacao}/prestador_cnpjcpf/{$oNota->getP_cnpjcpf()}")); $sQRCodeImagem = DBSeller_Helper_QRCode_QRCode::getQrCodeNfse($sUrlVerificada, $sCodigoVerificacao); $oDadosCabecalho->sQRCode = $oBaseUrlHelper->baseUrl("/tmp/{$sQRCodeImagem}"); } // Dados de manipulação do prestador $oDadosPrestador = new StdClass(); $oDadosPrestador->oPrestador = $oPrestador; $sLogoPrestador = Administrativo_Model_Empresa::getLogoByIm($oNota->getP_im()); $oDadosPrestador->sLogoPrestador = $oBaseUrlHelper->baseUrl("/tmp/{$sLogoPrestador}"); // Dados de manipulação do serviço $oDadosServico = new StdClass(); $oDadosServico->oDadosNota = $oNota; // Verifica se não é a primeira página que será impressa e quebra as demais 'Descrição do Serviço' $iInicioCaracterPagina = 0; $iQndCaracterPagina = 800; if ($iIndex == 2) { $iInicioCaracterPagina = 800; $iQndCaracterPagina = $iTamanhoTotalTexto; } $sDiscriminacaoServico = substr($oNota->getS_dados_discriminacao(), $iInicioCaracterPagina, $iQndCaracterPagina); $oDadosServico->sDiscriminacaoServico = $sDiscriminacaoServico; // Dados de manipulação da nota subtstituida $iIdNotaSubstituida = $oNota->getIdNotaSubstituida(); if ($iIdNotaSubstituida) { $oDadosServico->oDadosNotaSubstituida = Contribuinte_Model_Nota::getById($iIdNotaSubstituida); } $oRegistro = new StdClass(); $oRegistro->iPagina = $iIndex; $oRegistro->oDadosCabecalho = $oDadosCabecalho; $oRegistro->oDadosPrestador = $oDadosPrestador; $oRegistro->oDadosServico = $oDadosServico; $aDados[] = $oRegistro; } return $aDados; }
/** * Valida a importação de arquivo do tipo RPS modelo 1 (ABRASF 1.0) */ public function validaArquivoCarregado() { $oSessao = new Zend_Session_Namespace('nfse'); if (empty($this->oDadosPrefeitura)) { $aParametrosPrefeitura = Administrativo_Model_ParametroPrefeitura::getAll(0, 1); if (count($aParametrosPrefeitura) == 0) { throw new Exception('Parâmetros da prefeitura não configurados. Processamento Abortado'); } $this->oDadosPrefeitura = $aParametrosPrefeitura[0]; } if (empty($this->oArquivoXmlRetorno->lote->numero)) { $this->setMensagemErro('E88'); } if (empty($this->oArquivoXmlRetorno->lote->cnpj)) { $this->setMensagemErro('E46'); } $oContribuinte = Contribuinte_Model_Contribuinte::getByCpfCnpj($this->oArquivoXmlRetorno->lote->cnpj); if (empty($oContribuinte)) { $this->setMensagemErro('E45', 'Contribuinte: ' . $this->oArquivoXmlRetorno->lote->cnpj); } else { if ($oContribuinte->getCgcCpf() != $oSessao->contribuinte->getCgcCpf()) { $this->setMensagemErro('E156', '', true); } } if ($this->oArquivoXmlRetorno->lote->quantidade_rps != count($this->oArquivoXmlRetorno->rps)) { $this->setMensagemErro('E69'); } if (strlen($this->oArquivoXmlRetorno->lote->quantidade_rps) > 4) { $this->setMensagemErro('E72'); } $aNumeracaoRPS = array(); foreach ($this->oArquivoXmlRetorno->rps as $oRps) { if ($this->oArquivoXmlRetorno->lote->inscricao_municipal != $oRps->prestador->inscricao_municipal) { $this->setMensagemErro('E70', 'RPS: ' . $oRps->numero); } if (empty($oRps->numero)) { $this->setMensagemErro('E11'); } else { if (is_int($oRps->numero) && strlen($oRps->numero) > 15) { $this->setMensagemErro('E96', 'RPS: ' . $oRps->numero); } if (in_array($oRps->numero, $aNumeracaoRPS)) { $this->setMensagemErro('E71', 'RPS: ' . $oRps->numero); } $aNumeracaoRPS[$oRps->numero] = NULL; } if (strlen($oRps->serie) > 5) { $this->setMensagemErro('E97', 'RPS: ' . $oRps->numero); } if (empty($oRps->tipo)) { $this->setMensagemErro('E12', 'RPS: ' . $oRps->numero); } if (empty($oRps->natureza_operacao)) { $this->setMensagemErro('E3', 'RPS: ' . $oRps->numero); } else { if (!in_array($oRps->natureza_operacao, array(1, 2, 3, 4, 5, 6))) { $this->setMensagemErro('E144', 'RPS: ' . $oRps->numero); } } if (empty($oRps->optante_simples_nacional)) { $this->setMensagemErro('E8', 'RPS: ' . $oRps->numero); } else { if (!in_array($oRps->optante_simples_nacional, array(1, 2))) { $this->setMensagemErro('E146', 'RPS: ' . $oRps->numero); } } if (empty($oRps->incentivador_cultural)) { $this->setMensagemErro('E9', 'RPS: ' . $oRps->numero); } else { if (!in_array($oRps->incentivador_cultural, array(1, 2))) { $this->setMensagemErro('E147', 'RPS: ' . $oRps->numero); } } if (empty($oRps->data_emissao)) { $this->setMensagemErro('E14', 'RPS: ' . $oRps->numero); } if (!in_array($oRps->status, array(1, 2))) { $this->setMensagemErro('E68', 'RPS: ' . $oRps->numero); } if ($oRps->data_emissao->format('Ymd') > date('Ymd')) { $this->setMensagemErro('E16', 'RPS: ' . $oRps->numero); } if ($oRps->prestador->cnpj == $oRps->tomador->cpf_cnpj) { $this->setMensagemErro('E52', 'RPS: ' . $oRps->numero); } // validação dos valores se float $oNumeroFloat = new Zend_Validate_Float(); if ($oRps->servico->valores->valor_servicos <= 0) { $this->setMensagemErro('E18', 'RPS: ' . $oRps->numero); } if (!$oNumeroFloat->isValid($oRps->servico->valores->valor_servicos)) { $this->setMensagemErro('E100', 'RPS: ' . $oRps->numero); } if ($oRps->servico->valores->valor_servicos <= 0) { $this->setMensagemErro('E18', 'RPS: ' . $oRps->numero); } if ($oRps->servico->valores->valor_deducoes > $oRps->servico->valores->valor_servicos) { $this->setMensagemErro('E19', 'RPS: ' . $oRps->numero); } if ($oRps->servico->valores->valor_deducoes < 0) { $this->setMensagemErro('E20', 'RPS: ' . $oRps->numero); } if (!$oNumeroFloat->isValid($oRps->servico->valores->valor_deducoes)) { $this->setMensagemErro('E101', 'RPS: ' . $oRps->numero); } $fTotalDesconto = $oRps->servico->valores->desconto_incondicionado + $oRps->servico->valores->desconto_condicionado; if ($fTotalDesconto > $oRps->servico->valores->valor_servicos) { $this->setMensagemErro('E21', 'RPS: ' . $oRps->numero); } if ($fTotalDesconto < 0) { $this->setMensagemErro('E22', 'RPS: ' . $oRps->numero); } if (!$oNumeroFloat->isValid($fTotalDesconto)) { $this->setMensagemErro('E102', 'RPS: ' . $oRps->numero); } if ($oRps->servico->valores->valor_pis < 0) { $this->setMensagemErro('E23', 'RPS: ' . $oRps->numero); } if (!$oNumeroFloat->isValid($oRps->servico->valores->valor_pis)) { $this->setMensagemErro('E103', 'RPS: ' . $oRps->numero); } if ($oRps->servico->valores->valor_cofins < 0) { $this->setMensagemErro('E24', 'RPS: ' . $oRps->numero); } if (!$oNumeroFloat->isValid($oRps->servico->valores->valor_cofins)) { $this->setMensagemErro('E103', 'RPS: ' . $oRps->numero); } if ($oRps->servico->valores->valor_inss < 0) { $this->setMensagemErro('E25', 'RPS: ' . $oRps->numero); } if (!$oNumeroFloat->isValid($oRps->servico->valores->valor_inss)) { $this->setMensagemErro('E103', 'RPS: ' . $oRps->numero); } if ($oRps->servico->valores->valor_ir < 0) { $this->setMensagemErro('E26', 'RPS: ' . $oRps->numero); } if (!$oNumeroFloat->isValid($oRps->servico->valores->valor_ir)) { $this->setMensagemErro('E103', 'RPS: ' . $oRps->numero); } if ($oRps->servico->valores->valor_csll < 0) { $this->setMensagemErro('E27', 'RPS: ' . $oRps->numero); } if (!$oNumeroFloat->isValid($oRps->servico->valores->valor_csll)) { $this->setMensagemErro('E103', 'RPS: ' . $oRps->numero); } if (!in_array($oRps->servico->valores->iss_retido, array(1, 2))) { $this->setMensagemErro('E36', 'RPS: ' . $oRps->numero); } if ($oRps->servico->valores->iss_retido == 1) { if ($oRps->servico->valores->valor_iss_retido <= 0) { $this->setMensagemErro('E40', 'RPS: ' . $oRps->numero); } if (!$oNumeroFloat->isValid($oRps->servico->valores->valor_iss_retido)) { $this->setMensagemErro('E153', 'RPS: ' . $oRps->numero); } if (strlen(DBSeller_Helper_Number_Format::unmaskCPF_CNPJ($oRps->tomador->cpf_cnpj)) != 14) { $this->setMensagemErro('E39', 'RPS: ' . $oRps->numero . ". Serviços tomados por pessoa Física não pode reter iss"); } } if ($oRps->servico->valores->iss_retido == 1 && $oRps->servico->valores->valor_iss_retido > $oRps->servico->valores->valor_servicos) { $this->setMensagemErro('E99', 'RPS: ' . $oRps->numero); } if (empty($oRps->servico->discriminacao)) { $this->setMensagemErro('E41', 'RPS: ' . $oRps->numero); } if (!empty($oContribuinte)) { $iInscricaoMunicipal = $oContribuinte->getInscricaoMunicipal(); $aServicos = Contribuinte_Model_Servico::getByIm($iInscricaoMunicipal); // Valida se o prestador de serviço pode atuar no município if (empty($aServicos)) { $this->setMensagemErro('E17', 'RPS: ' . $oRps->numero); } // Valida se o prestador do serviço é emissor de NFSE $iTipoEmissaoNfse = Contribuinte_Model_ContribuinteAbstract::TIPO_EMISSAO_NOTA; if ($oContribuinte->getTipoEmissao($iInscricaoMunicipal) != $iTipoEmissaoNfse) { $this->setMensagemErro('E138', 'RPS: ' . $oRps->numero); } // Valida a competência $oCompetencia = new Contribuinte_Model_Competencia($oRps->data_emissao->format('Y'), $oRps->data_emissao->format('m'), $oContribuinte); if (empty($oCompetencia) || $oCompetencia->existeGuiaEmitida()) { $this->setMensagemErro(null, "A competência da RPS \"{$oRps->numero}\" é inválida, já existe Guia Emitida."); } } // Valida se a data é maior que a atual if ($oRps->data_emissao->format('Y-m') > date('Y-m')) { $this->setMensagemErro('E2', 'RPS: ' . $oRps->numero); } // Valida se já existe na base de dados $oTipoRps = Administrativo_Model_ParametroPrefeituraRps::getByTipoNfse($oRps->tipo); $iTipoRps = 0; // Valida o tipo de RPS if (is_object($oTipoRps)) { $iTipoRps = $oTipoRps->getEntity()->getTipoEcidade($oRps->tipo); } if ($iTipoRps == 0) { $this->setMensagemErro('E13', 'RPS: ' . $oRps->numero); } // Verifica se a numeração do AIDOF é válida $oAidof = new Administrativo_Model_Aidof(); $lVerificaNumeracaoRps = $oAidof->verificarNumeracaoValidaParaEmissaoDocumento($oSessao->contribuinte->getInscricaoMunicipal(), $oRps->numero, $iTipoRps); if ($lVerificaNumeracaoRps === FALSE) { $this->setMensagemErro('E90', 'RPS: ' . $oRps->numero); } $lExisteRps = Contribuinte_Model_Nota::existeRps($oSessao->contribuinte, $oRps->numero, $oRps->tipo); if ($lExisteRps) { $this->setMensagemErro('E10', 'RPS: ' . $oRps->numero); } if (empty($oRps->servico->atividade)) { $this->setMensagemErro('E31', 'RPS: ' . $oRps->numero); } else { if (strlen($oRps->servico->atividade) > 5) { $this->setMensagemErro('E104', 'RPS: ' . $oRps->numero); } // Valida Grupo de Serviço/Atividade if (!empty($iInscricaoMunicipal)) { $oServico = Contribuinte_Model_Servico::getServicoPorAtividade($iInscricaoMunicipal, $oRps->servico->atividade); if (!$oServico) { $this->setMensagemErro('E30', 'RPS: ' . $oRps->numero); } } } if (empty($oRps->servico->codigo_cnae)) { $this->setMensagemErro('E33', 'RPS: ' . $oRps->numero); } else { if (strlen($oRps->servico->codigo_cnae) > 7) { $this->setMensagemErro('E105', 'RPS: ' . $oRps->numero); } } if (!empty($oRps->servico->ibge_municipio)) { if (strlen($oRps->servico->ibge_municipio) > 7) { $this->setMensagemErro('E108', 'RPS: ' . $oRps->numero); } // 2 = fora do municipio if ($oRps->natureza_operacao == 2 && $oRps->servico->ibge_municipio == $this->oDadosPrefeitura->getIbge()) { $this->setMensagemErro('E110', 'RPS: ' . $oRps->numero); } } // Validar IBGE Prefeitura if ($oRps->natureza_operacao == 1 && $this->oDadosPrefeitura->getIbge() !== $oRps->servico->ibge_municipio) { $this->setMensagemErro('E42', 'RPS: ' . $oRps->numero); } if (strlen($oRps->construcao_civil->art) > 15) { $this->setMensagemErro('E130', 'RPS: ' . $oRps->numero); } if (strlen($oRps->construcao_civil->codigo_obra) > 15) { $this->setMensagemErro('E129', 'Rps: ' . $oRps->numero); } if (count($this->aMensagensErroValidacao) >= 50) { $this->setMensagemErro('E49', '', TRUE); } } // Se existirem erros executa uma exceção com a lista de erros if (count($this->aMensagensErroValidacao) > 0) { return FALSE; } return TRUE; }