/** * @param object $oContribuinte * @param array $aDadosComuns * @param array $aDadosApuracaoMensal */ public function __construct($oContribuinte, array $aDadosComuns, array $aDadosApuracaoMensal) { $this->oContribuinte = Administrativo_Model_UsuarioContribuinte::getByAttribute('id', $oContribuinte->getContribuintes()); $this->carregaIdentificador($aDadosComuns[0], $aDadosApuracaoMensal[0]); $this->carregarDadosContas($aDadosComuns); $this->carregarDadosReceitas($aDadosApuracaoMensal); }
/** * Processa o arquivo Webservice */ public function consultaDados($oParametros) { try { $sNomeTempArquivo = TEMP_PATH . "/ConsultarSituacaoLoteRps-" . time() . ".xml"; /* gravo o xml enviado */ $fp = fopen($sNomeTempArquivo, "w"); fwrite($fp, $oParametros); fclose($fp); /* carrega o arquivo em memoria para manipulação */ $oXml = simplexml_load_file($sNomeTempArquivo); $oRetorno = new StdClass(); $oRetorno->iNumeroLote = ''; $oRetorno->iSituacao = 1; $oParametrosArquivo = $oXml->ConsultarSituacaoLoteRpsEnvio; if (!$this->validarRequisicao($oParametrosArquivo)) { return $this->processaRetornoWebService($oRetorno); } /** * Busca usuário contribuinte pelo cnpj_cpf */ $oUsuarioContribuinte = Administrativo_Model_UsuarioContribuinte::getByAttribute('cnpj_cpf', $oParametrosArquivo->Prestador->Cnpj); if (empty($oUsuarioContribuinte)) { $this->adicionarInconsistencia('E45'); return $this->processaRetornoWebService($oRetorno); } $oProtocolo = Administrativo_Model_Protocolo::getByAttribute('protocolo', $oParametrosArquivo->Protocolo); if (!$oProtocolo) { // situação de não recebido $oRetorno->iNumeroLote = $oParametrosArquivo->Protocolo; $oRetorno->iSituacao = 1; return $this->processaRetornoWebService($oRetorno); } $oProtocoloImportacao = Contribuinte_Model_ProtocoloImportacao::getByAttribute('protocolo', $oProtocolo->getId()); if (!$oProtocoloImportacao->getImportacao()) { // situação de recebido mas processado com erro $oRetorno->iNumeroLote = $oProtocoloImportacao->getNumeroLote(); $oRetorno->iSituacao = 3; return $this->processaRetornoWebService($oRetorno); } // situação de recebido e processado com sucesso $oRetorno->iNumeroLote = $oProtocoloImportacao->getNumeroLote(); $oRetorno->iSituacao = 4; return $this->processaRetornoWebService($oRetorno); } catch (Exception $oErro) { return $oErro->getMessage(); } }
/** * @param integer $iIdContribuinte */ public static function consultaGuiasDesif($iIdContribuinte) { try { $oUsuarioContribuinte = Administrativo_Model_UsuarioContribuinte::getByAttribute('id', $iIdContribuinte); $em = parent::getEm(); $sDql = 'SELECT g FROM Contribuinte\\Guia g INNER JOIN Contribuinte\\DesifContaGuia d WITH g.id = d.guia'; $sDql .= ' WHERE g.id_contribuinte = :c AND g.tipo_documento_origem = :t'; $oQuery = $em->createQuery($sDql)->setParameters(array('t' => self::$DOCUMENTO_ORIGEM_NFSE, 'c' => $oUsuarioContribuinte->getEntity())); $aResultado = $oQuery->getResult(); $aGuias = array(); if ($aResultado != NULL) { foreach ($aResultado as $q) { $aGuias[] = new self($q); } } return $aGuias; } catch (Excpetion $oErro) { throw $oErro; } }
/** * Acition para para carregar o form de emissão de contas */ public function emitirContasAction() { $oContribuinte = $this->_session->contribuinte; $oUsuarioContribuinte = Administrativo_Model_UsuarioContribuinte::getByAttribute('id', $oContribuinte->getIdUsuarioContribuinte()); $aImportacaoDesif = Contribuinte_Model_ImportacaoDesif::getByAttribute('contribuinte', $oUsuarioContribuinte->getEntity()); if (!empty($aImportacaoDesif)) { if (is_array($aImportacaoDesif)) { foreach ($aImportacaoDesif as $oImportacaoDesif) { $aComp = array(); $aComp[] = substr($oImportacaoDesif->getCompetenciaInicial(), 0, 4); $aComp[] = substr($oImportacaoDesif->getCompetenciaInicial(), 4); $aCompetencias[$oImportacaoDesif->getId()] = implode("/", $aComp); } } else { $aComp = array(); $aComp[] = substr($aImportacaoDesif->getCompetenciaInicial(), 0, 4); $aComp[] = substr($aImportacaoDesif->getCompetenciaInicial(), 4); $aCompetencias[$aImportacaoDesif->getId()] = implode("/", $aComp); } $oForm = new Contribuinte_Form_EmitirContasDesif($aCompetencias); $this->view->oForm = $oForm; } }
/** * Realiza a execução da pesquisa dos dados conforme arquivo de requisicao * * @param $sArquivo * @return string */ public function processar($sArquivo) { if (empty($sArquivo)) { $this->adicionarInconsistencia('E160'); } $sNomeTempArquivo = TEMP_PATH . "/ConsultarLoteRps-" . time() . ".xml"; /* gravo o xml enviado */ $fp = fopen($sNomeTempArquivo, "w"); fwrite($fp, $sArquivo); fclose($fp); $this->oRequisicao = simplexml_load_string($sArquivo); if (empty($this->oRequisicao)) { $this->adicionarInconsistencia('E160'); } if (!$this->validarRequisicao()) { return $this->escreverRetorno(); } $sCnpj = $this->oRequisicao->Prestador->Cnpj; $sNumeroProtocolo = $this->oRequisicao->Protocolo; $oUsuarioContribuinte = Administrativo_Model_UsuarioContribuinte::getByAttribute('cnpj_cpf', $sCnpj); if (empty($oUsuarioContribuinte)) { $this->adicionarInconsistencia('E45'); } $oProtocolo = Administrativo_Model_Protocolo::getByAttribute('protocolo', $sNumeroProtocolo); if (empty($oProtocolo)) { $this->adicionarInconsistencia('E86'); return $this->escreverRetorno(); } $oProtocoloImportacao = Contribuinte_Model_ProtocoloImportacao::getByAttribute('protocolo', $oProtocolo->getId()); if (!$oProtocoloImportacao->getImportacao()) { $this->adicionarInconsistencia('E86'); return $this->escreverRetorno(); } $this->aNotas = $oProtocoloImportacao->getNotasImportadas(); return $this->escreverRetorno(); }
/** * Informacoes da Dms filtrando por inscricao municipal, competencia e operacao. * * @param string|null $sCpfCnpj CPF/CNPJ do Contribuinte * @param integer $iMes Mês da competência * @param integer $iAno Ano da competência * @param string $sOperacao Tipo da Operacao Contribuinte_Model_Dms::SAIDA|Contribuinte_Model_Dms::ENTRADA * @return array * @throws Exception */ public static function getCompetenciaByCpfCnpj($sCpfCnpj = NULL, $iMes, $iAno, $sOperacao = self::SAIDA) { if ($sCpfCnpj == NULL) { throw new Exception('Parametro Cnpj/Cpf é obrigatório.'); } $aUsuariosContribuintes = Administrativo_Model_UsuarioContribuinte::getByAttribute('cnpj_cpf', $sCpfCnpj); if (!is_array($aUsuariosContribuintes)) { $aUsuariosContribuintes = array($aUsuariosContribuintes); } $aContribuintes = array(); foreach ($aUsuariosContribuintes as $oContribuinte) { $aContribuintes[] = $oContribuinte->getId(); } $sCampoPesquisa = array('id_contribuinte' => $aContribuintes, 'ano_comp' => $iAno, 'mes_comp' => $iMes, 'operacao' => $sOperacao); $sCamposOrdem = array('id' => 'DESC'); return self::getByAttributes($sCampoPesquisa, $sCamposOrdem); }
/** * Vincula os usuários ao contadores */ public function vincularAction() { $usuario = $this->getRequest()->getParam('usuario'); $usuario = Administrativo_Model_Usuario::getById($usuario); $contribuinte = $this->getRequest()->getParam('contribuinte'); if ($contribuinte == NULL) { $this->_helper->getHelper('FlashMessenger')->addMessage(array('error' => $this->translate->_('Não foi possível vincular o contribuinte.'))); $this->_redirector->gotoSimple('editar', 'usuario', 'administrativo', array('id' => $usuario->getId())); } $usuario_contrib = new Administrativo_Model_UsuarioContribuinte(); $oDadosContribuinte = $usuario_contrib->getByAttribute('im', $contribuinte); if ($oDadosContribuinte != NULL) { $this->_helper->getHelper('FlashMessenger')->addMessage(array('error' => $this->translate->_('Contribuinte já está vinculado ao usuário.'))); $this->_redirector->gotoSimple('editar', 'usuario', 'administrativo', array('id' => $usuario->getId())); } $res = $usuario_contrib->persist(array('usuario' => $usuario, 'contribuinte' => $contribuinte)); $usuario->addUsuarioContribuinte($usuario_contrib); if ($res === NULL) { $this->_helper->getHelper('FlashMessenger')->addMessage(array('error' => $this->translate->_('Não foi possível vincular o contribuinte.'))); } else { $this->_helper->getHelper('FlashMessenger')->addMessage(array('success' => $this->translate->_('Contribuinte vinculado com sucesso.'))); } $this->_redirector->gotoSimple('editar', 'usuario', 'administrativo', array('id' => $usuario->getId(), 'cont' => $usuario_contrib->getId())); }
/** * Metodo Responsável por atualizar a lista de contribuintes * * @param array $contribuintes_novos */ public function atualizaListaContribuintes($contribuintes_novos) { $contribuintes_velhos = Administrativo_Model_UsuarioContribuinte::getByAttribute('usuario', $this->getId()); $novos_im = array(); $velhos_im = array(); // monta array de inscricoes novas. recebidas pelo webservice foreach ($contribuintes_novos as $c) { $novos_im[$c->attr('inscricao')] = $c; } if (!empty($contribuintes_velhos)) { // monta array de inscricoes velhas. recebidas do banco de dados if (is_array($contribuintes_velhos)) { foreach ($contribuintes_velhos as $c) { $velhos_im[$c->getIm()] = $c; } } else { $velhos_im[$contribuintes_velhos->getIm()] = $contribuintes_velhos; } } // diferença entre as novas e velhas são as inscricoes que precisam ser adicionadas $adicionar = array_diff_key($novos_im, $velhos_im); // diferença entre as velhas e as novas sao as incricões que precisam ser removidas $remover = array_diff_key($velhos_im, $novos_im); // Reabilita vinculos existentes foreach ($novos_im as $oNovoContribuinte) { if (isset($velhos_im[$oNovoContribuinte->attr('inscricao')])) { $oUsuarioContribuinteExistente = $velhos_im[$oNovoContribuinte->attr('inscricao')]; $oUsuarioContribuinteExistente->setHabilitado(TRUE); $oUsuarioContribuinteExistente->persist(); } } // Cria novos vinculos foreach ($adicionar as $oNovoContribuinte) { $oUsuarioContribuinte = new Administrativo_Model_UsuarioContribuinte(); $oUsuarioContribuinte->setUsuario($this->entity); $oUsuarioContribuinte->setIm($oNovoContribuinte->attr('inscricao')); $oUsuarioContribuinte->setCnpjCpf($oNovoContribuinte->attr('cnpj')); $oUsuarioContribuinte->setHabilitado(true); $this->addUsuarioContribuinte($oUsuarioContribuinte); $oUsuarioContribuinte->persist(); } // Desabilita o usuario contribuinte foreach ($remover as $oUsuarioRemover) { $oUsuarioRemover->setHabilitado(FALSE); $oUsuarioRemover->persist(); } }
/** * Retorna a instancia do contribuinte atraves do Cnpj/cpf * * @param string $sCpfCnpj * @return bool|Contribuinte_Model_ContribuinteEventual|object * @throws Exception */ public static function getByCpfCnpj($sCpfCnpj) { $oContribuinte = Administrativo_Model_UsuarioContribuinte::getByAttribute('cnpj_cpf', $sCpfCnpj); // Se retornar mais de um contribuinte pega o primeiro da lista if (is_array($oContribuinte)) { $oContribuinte = reset($oContribuinte); } if ($oContribuinte->getUsuario()->getCnpj() == '') { throw new Exception('Contribuinte eventual não possui CPF / CNPJ.'); } $oCgm = self::getByCpfCnpjWebService($sCpfCnpj); if (!empty($oCgm)) { $oContribuinteEventual = Contribuinte_Model_ContribuinteEventual::preencherInstanciaContribuinte($oCgm); $oContribuinteEventual->setIdUsuarioContribuinte($oContribuinte->getId()); return $oContribuinteEventual; } return FALSE; }
public static function atualizaTipoEmissao($aContribuintesAtualizar) { if (!is_array($aContribuintesAtualizar) && count($aContribuintesAtualizar) <= 0) { throw new Exception('Problemas ao atualizar tipo de emissão dos contribuintes!'); } foreach ($aContribuintesAtualizar as $aUsuarioContribuinteAtualizar) { $aUsuarioContribuinte = NULL; $iTipoEmissaoWeb = NULL; $iWebServiceUsuarioTipoEmissao = NULL; if ($aUsuarioContribuinteAtualizar == NULL) { throw new Exception('Problemas ao atualizar tipo de emissão dos contribuintes!'); } if (in_array('attr', get_class_methods($aUsuarioContribuinteAtualizar))) { $iTipoEmissaoWeb = $aUsuarioContribuinteAtualizar->attr('tipo_emissao'); $iWebServiceUsuarioTipoEmissao = !empty($iTipoEmissaoWeb) ? $iTipoEmissaoWeb : 9; $aUsuarioContribuintes = Administrativo_Model_UsuarioContribuinte::getByAttribute('cnpj_cpf', $aUsuarioContribuinteAtualizar->attr('cnpj')); $iCgm = $aUsuarioContribuinteAtualizar->attr('cgm'); } else { // quando o usuario é tomador que não tem inscrição os dados vem de outro metodo webservice if (empty($aUsuarioContribuinteAtualizar->cgccpf) || empty($aUsuarioContribuinteAtualizar->tipo_emissao)) { $aUsuarioContribuinteAtualizar->cgccpf = $aUsuarioContribuinteAtualizar->iCnpj; $aUsuarioContribuinteAtualizar->tipo_emissao = 9; //tipo emissao tomador $aUsuarioContribuinteAtualizar->numero_cgm = $aUsuarioContribuinteAtualizar->iCodigoCgm; } $iTipoEmissaoWeb = $aUsuarioContribuinteAtualizar->tipo_emissao; $iWebServiceUsuarioTipoEmissao = !empty($iTipoEmissaoWeb) ? $iTipoEmissaoWeb : 9; $aUsuarioContribuintes = Administrativo_Model_UsuarioContribuinte::getByAttribute('cnpj_cpf', $aUsuarioContribuinteAtualizar->cgccpf); $iCgm = $aUsuarioContribuinteAtualizar->numero_cgm; } if (!is_array($aUsuarioContribuintes)) { $aUsuarioContribuintes = array($aUsuarioContribuintes); } foreach ($aUsuarioContribuintes as $oContribuinte) { if (!$oContribuinte instanceof Administrativo_Model_UsuarioContribuinte) { continue; } if ($iTipoEmissaoWeb == $oContribuinte->getTipoEmissao()) { continue; } $aTiposEmissao = array(Contribuinte_Model_ContribuinteAbstract::TIPO_EMISSAO_DMS, Contribuinte_Model_ContribuinteAbstract::TIPO_EMISSAO_NOTA); $iTipoContribuinte = Administrativo_Model_UsuarioContribuinte::CONTRIBUINTE_MUNICIPAL; $iCgmAtualizar = NULL; if (!in_array($iWebServiceUsuarioTipoEmissao, $aTiposEmissao)) { $iTipoContribuinte = Administrativo_Model_UsuarioContribuinte::CONTRIBUINTE_EVENTUAL; $iCgmAtualizar = $iCgm; } $aDados = array('usuario' => $oContribuinte->getUsuario(), 'contribuinte' => $oContribuinte->getIm(), 'cnpj_cpf' => $oContribuinte->getCnpjCpf(), 'tipo_emissao' => $iWebServiceUsuarioTipoEmissao, 'tipo_contribuinte' => $iTipoContribuinte, 'cgm' => $iCgmAtualizar); $oContribuinte->persist($aDados); $oContribuinte->limparAcoes(TRUE); $oTipoEmissaoPerfil = $oContribuinte->getPerfilTipoEmissao($iWebServiceUsuarioTipoEmissao); $oPerfil = Administrativo_Model_Perfil::getById($oTipoEmissaoPerfil->iCodigoPerfil); $oContribuinte->adicionaAcoes($oPerfil->getAcoes()); } } }