/**
  * Retorna os totalizadores da importação para geraçao das guias
  *
  * @param integer $iCodigoImportacaoDesif
  * @param bool    $lDetalhes
  * @param null    $fAliquota
  * @return array
  */
 public static function getTotalReceitasGuia($iCodigoImportacaoDesif, $lDetalhes = FALSE, $fAliquota = NULL)
 {
     $aReceitaAgrupadas = array();
     $aParametros = array('importacao_desif' => $iCodigoImportacaoDesif, 'guia' => NULL);
     $aReceitaAgrupadas = NULL;
     $aContasImportacaoGuia = Contribuinte_Model_DesifContaGuia::getByAttributes($aParametros);
     /**
      * Percorre as contas selecionadas que irá gerar as guias
      */
     foreach ($aContasImportacaoGuia as $oDesifContaGuia) {
         $aParametros = array('importacao_desif' => $iCodigoImportacaoDesif, 'importacao_desif_conta' => $oDesifContaGuia->getImportacaoDesifConta()->getId());
         /**
          * Filtro por aliquota
          */
         if (!empty($fAliquota)) {
             $aParametros['aliq_issqn'] = "{$fAliquota}";
         }
         $aDesifReceita = Contribuinte_Model_ImportacaoDesifReceita::getByAttributes($aParametros);
         $fValorTotal = 0;
         $fValorIss = 0;
         /**
          * Percore as receitas de cada importação
          */
         foreach ($aDesifReceita as $oDesifReceita) {
             $fValor = $oDesifReceita->getValrCredMens();
             $fAliqIssqn = DBSeller_Helper_Number_Format::toFloat($oDesifReceita->getAliqIssqn());
             /**
              * Soma os totais por aliquota com detalhamento
              */
             if ($lDetalhes) {
                 if (isset($aAliqIssqnAgrupadas[$fAliqIssqn])) {
                     $aAliqIssqnAgrupadas[$fAliqIssqn]['total_receita'] = $aAliqIssqnAgrupadas[$fAliqIssqn]['total_receita'] + $fValor;
                 } else {
                     $aAliqIssqnAgrupadas[$fAliqIssqn]['total_receita'] = $fValor;
                 }
                 $fValorTotal = $aAliqIssqnAgrupadas[$fAliqIssqn]['total_receita'];
                 $aAliqIssqnAgrupadas[$fAliqIssqn]['total_iss'] = $fValorTotal * ($fAliqIssqn / 100);
                 $aReceitaAgrupadas['id_importacao_desif'] = $iCodigoImportacaoDesif;
                 $aReceitaAgrupadas['id_importacao_desif_conta'][] = $oDesifReceita->getImportacaoDesifConta()->getId();
                 $aReceitaAgrupadas['data_importacao'] = $oDesifReceita->getImportacaoDesif()->getDataImportacao();
                 $aReceitaAgrupadas['aliquotas_issqn'] = $aAliqIssqnAgrupadas;
             } else {
                 $fValorTotal = $fValorTotal + $fValor;
                 $fValorIss = $fValorIss + $fValor * ($fAliqIssqn / 100);
             }
         }
         /**
          * Retorna os valores totais das receitas e iss totalizadas
          */
         if (!$lDetalhes) {
             $aReceitaAgrupadas['total_receita'] = $aReceitaAgrupadas['total_receita'] + $fValorTotal;
             $aReceitaAgrupadas['total_iss'] = $aReceitaAgrupadas['total_iss'] + $fValorIss;
         }
     }
     return $aReceitaAgrupadas;
 }
Пример #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!');
         }
     }
 }
 /**
  * Método que gera o relatório e importações de desif
  */
 public function imprimeImportacaoAction()
 {
     parent::noLayout();
     $iIdImportacao = $this->getRequest()->getParam('id');
     $sDataHoraGeracao = date('YmdHis');
     $sArquivoPdf = "importacao_desif_{$sDataHoraGeracao}.pdf";
     $oContribuinte = $this->_session->contribuinte;
     $oDadosPrefeitura = Administrativo_Model_Prefeitura::getDadosPrefeituraBase();
     $oImportacaoDesif = Contribuinte_Model_ImportacaoDesif::getById($iIdImportacao);
     $sCompInicial = $oImportacaoDesif->getCompetenciaInicial();
     $sCompFinal = $oImportacaoDesif->getCompetenciaFinal();
     $aMes = array('inicial' => substr($sCompInicial, 4), 'final' => substr($sCompFinal, 4));
     $aAno = array('inicial' => substr($sCompInicial, 0, 4), 'final' => substr($sCompFinal, 0, 4));
     $aReceitas = Contribuinte_Model_ImportacaoDesifReceita::getReceitasContasByImportacao($iIdImportacao);
     $oPdf = new Contribuinte_Model_RelatorioReceitasDesif('l');
     $oPdf->setNomeArquivo($sArquivoPdf);
     $oPdf->setAmbiente(getenv('APPLICATION_ENV'));
     $oPdf->setPrefeitura($oDadosPrefeitura);
     $oPdf->openPdf();
     $oPdf->setDadosContribuinte($oContribuinte, $aMes, $aAno, FALSE);
     $oPdf->setDadosReceitas($aReceitas);
     $oPdf->Output();
     parent::download($oPdf->getNomeArquivo());
 }