/**
  * 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;
 }
Ejemplo n.º 2
0
 /**
  * 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!');
         }
     }
 }