/** * Método para pegar as Contas pela Competencia escolhida pelo Contribuinte * @param array $aParametrosBusca * @return array $aDadosConta */ public static function getContasByCompetencia($iCompetencia) { $oImportacaoDesif = Contribuinte_Model_ImportacaoDesif::getById($iCompetencia); $oImportacaoDesifEntidade = $oImportacaoDesif->getEntity(); $aImportacaoDesifTarifas = Contribuinte_Model_ImportacaoDesifTarifa::getByAttribute('importacao_desif', $oImportacaoDesifEntidade); // Adicionado valor ao array para validar o mesmo corretamente no array_search $aCodigoContas = array(0 => ""); if (is_array($aImportacaoDesifTarifas)) { foreach ($aImportacaoDesifTarifas as $oDesifTarifa) { $oDadosConta = $oDesifTarifa->getImportacaoDesifConta(); if (!array_search($oDadosConta->getConta(), $aCodigoContas)) { $oConta = new StdClass(); $oConta->id = $oDadosConta->getId(); $oConta->conta = $oDadosConta->getConta(); $oConta->descricao_conta = $oDadosConta->getDescricaoConta(); $aCodigoContas[] = $oConta->conta; $oDesifContaGuia = self::getByAttributes(array('importacao_desif' => $oImportacaoDesifEntidade, 'importacao_desif_conta' => $oDadosConta)); //Verficação de conta já emitida e conta com guia if (!empty($oDesifContaGuia)) { $oGuia = $oDesifContaGuia[0]->getGuia(); if (empty($oGuia)) { $oConta->isEmitida = TRUE; $aDadosConta[] = $oConta; } } else { $oConta->isEmitida = FALSE; $aDadosConta[] = $oConta; } } } } else { $oDadosConta = $aImportacaoDesifTarifas->getImportacaoDesifConta(); if (!array_search($oDadosConta->getConta(), $aCodigoContas)) { $oConta = new StdClass(); $oConta->id = $oDadosConta->getId(); $oConta->conta = $oDadosConta->getConta(); $oConta->descricao_conta = $oDadosConta->getDescricaoConta(); $aCodigoContas[] = $oConta->conta; $oDesifContaGuia = self::getByAttributes(array('importacao_desif' => $oImportacaoDesifEntidade, 'importacao_desif_conta' => $oDadosConta)); //Verficação de conta já emitida e conta com guia if (!empty($oDesifContaGuia)) { $oGuia = $oDesifContaGuia[0]->getGuia(); if (empty($oGuia)) { $oConta->isEmitida = TRUE; $aDadosConta[] = $oConta; } } else { $oConta->isEmitida = FALSE; $aDadosConta[] = $oConta; } } } return $aDadosConta; }
/** * Método responsável pela inserção dos dados no Banco de Dados * @throws Exception */ public function processarArquivo() { if ($this->validacao()) { $oDoctrine = Zend_Registry::get('em'); try { $oDoctrine->getConnection()->beginTransaction(); $oDataSistema = new DateTime(); $oImportacaoDesif = new Contribuinte_Model_ImportacaoDesif(); $oImportacaoDesif->setContribuinte($this->oContribuinte->getEntity()); $oImportacaoDesif->setDataImportacao($oDataSistema); $oImportacaoDesif->setCompetenciaInicial($this->oDadosDesif->sCompetenciaInicial); $oImportacaoDesif->setCompetenciaFinal($this->oDadosDesif->sCompetenciaFinal); $oImportacaoDesif->setVersao($this->oDadosDesif->sVersao); $oImportacaoDesif->setNomeArquivo($this->oDadosDesif->sNomeArquivo); $oImportacaoDesif->persist(); //Retornar o id para gerar o protocolo de sucesso $iImportacaoDesifId = $oImportacaoDesif->getId(); // Grava as contas que ainda não estão salvas no plano de contas do DESIF foreach ($this->aDadosDesifContas as $oDadosConta) { $aDesifConta = Contribuinte_Model_ImportacaoDesifConta::getByAttributes(array('conta' => $oDadosConta->sConta, 'contribuinte' => $this->oContribuinte->getEntity())); $oDesifConta = array_shift($aDesifConta); if (empty($oDesifConta)) { $oPlanoContaAbrasf = Contribuinte_Model_PlanoContaAbrasf::getByAttribute('conta_abrasf', $oDadosConta->sContaCosif); //Verifica se existe conta no plano abrasf para fazer o vínculo if (empty($oPlanoContaAbrasf)) { throw new Exception('Conta informada ' . $oDadosConta->sContaCosif . ' inexistente no plano de conta da ABRASF.', self::EXCEPTION_CONTA_INEXISTENTE_NO_PLANO_ABRASF); } $oImportacaoDesifConta = new Contribuinte_Model_ImportacaoDesifConta(); $oImportacaoDesifConta->setConta($oDadosConta->sConta); $oImportacaoDesifConta->setNome($oDadosConta->sNome); $oImportacaoDesifConta->setDescricaoConta($oDadosConta->sDescricaoConta); $oImportacaoDesifConta->setPlanoContaAbrasf($oPlanoContaAbrasf->getEntity()); $oImportacaoDesifConta->setContribuinte($this->oContribuinte->getEntity()); if (!empty($oDadosConta->sContaPai)) { $aContaPai = Contribuinte_Model_ImportacaoDesifConta::getByAttributes(array('conta' => $oDadosConta->sContaPai, 'contribuinte' => $this->oContribuinte->getEntity())); $oContaPai = array_shift($aContaPai); $oImportacaoDesifConta->setImportacaoDesifConta($oContaPai->getEntity()); } $oImportacaoDesifConta->persist(); } } // Adiciona os dados das tarifas do banco foreach ($this->aDadosDesifTarifas as $oDesifTarifa) { $aImportacaoDesifConta = Contribuinte_Model_ImportacaoDesifConta::getByAttributes(array('conta' => $oDesifTarifa->sConta, 'contribuinte' => $this->oContribuinte->getEntity())); $oImportacaoDesifConta = array_shift($aImportacaoDesifConta); if (!empty($oImportacaoDesifConta)) { $oImportacaoDesifTarifa = new Contribuinte_Model_ImportacaoDesifTarifa(); $oImportacaoDesifTarifa->setImportacaoDesif($oImportacaoDesif->getEntity()); $oImportacaoDesifTarifa->setImportacaoDesifConta($oImportacaoDesifConta->getEntity()); $oImportacaoDesifTarifa->setTarifaBanco($oDesifTarifa->sTarifaConta); $oImportacaoDesifTarifa->setDescricao($oDesifTarifa->sDescricao); $oImportacaoDesifTarifa->persist(); } } // Adiciona os dados das receitas informadas foreach ($this->aDadosDesifReceitas as $oReceita) { $aImportacaoDesifConta = Contribuinte_Model_ImportacaoDesifConta::getByAttributes(array('conta' => $oReceita->sConta, 'contribuinte' => $this->oContribuinte->getEntity())); $oImportacaoDesifConta = array_shift($aImportacaoDesifConta); if (empty($oImportacaoDesifConta)) { throw new Exception("Conta {$oReceita->sConta} é inválida!"); } $oImportacaoDesifReceita = new Contribuinte_Model_ImportacaoDesifReceita(); $oImportacaoDesifReceita->setImportacaoDesif($oImportacaoDesif->getEntity()); $oImportacaoDesifReceita->setImportacaoDesifConta($oImportacaoDesifConta->getEntity()); $oImportacaoDesifReceita->setSubTitu($oReceita->sConta); $oImportacaoDesifReceita->setCodTribDesif($oReceita->sCodTribDesif); $oImportacaoDesifReceita->setValrCredMens($oReceita->fValrCredMens); $oImportacaoDesifReceita->setValrDebtMens($oReceita->fValrDebtMens); $oImportacaoDesifReceita->setReceDecl($oReceita->fReceDecl); $oImportacaoDesifReceita->setDeduReceDecl($oReceita->fDeduReceDecl); $oImportacaoDesifReceita->setDescDedu($oReceita->fDescDedu); $oImportacaoDesifReceita->setBaseCalc($oReceita->fBaseCalc); $oImportacaoDesifReceita->setAliqIssqn($oReceita->fAliqIssqn); $oImportacaoDesifReceita->setInctFisc($oReceita->fInctFisc); $oImportacaoDesifReceita->persist(); } $oDoctrine->getConnection()->commit(); return $iImportacaoDesifId; } catch (Exception $oErro) { $oDoctrine->getConnection()->rollback(); if ($oErro->getCode() == self::EXCEPTION_CONTA_INEXISTENTE_NO_PLANO_ABRASF) { throw $oErro; } throw new Exception('Erro ao processar os arquivos da DES-IF!'); } } }