/** * Método para retornar os dados das contas em formato json para a DBJqGrid * * @param array $aParametros * @param bool $bDetalhes * @return array */ protected function retornaContasGuiaDesif(array $aParametros, $bDetalhes = FALSE) { $aRecord = array(); $iLimit = $aParametros['rows']; $iPage = $aParametros['page']; $sSord = $aParametros['sord']; $oContribuinte = $this->_session->contribuinte; $sCodigosContribuintes = NULL; $oPaginatorAdapter = new DBSeller_Controller_Paginator(Contribuinte_Model_ImportacaoDesif::getQuery(), 'Contribuinte_Model_ImportacaoDesif', 'Contribuinte\\ImportacaoDesif'); foreach ($oContribuinte->getContribuintes() as $iIdContribuinte) { if ($sCodigosContribuintes == NULL) { $sCodigosContribuintes .= $iIdContribuinte; } else { $sCodigosContribuintes .= ',' . $iIdContribuinte; } } $oPaginatorAdapter->where("e.contribuinte in ({$sCodigosContribuintes})"); if (isset($aParametros['id'])) { $oPaginatorAdapter->andWhere("e.id = {$aParametros['id']}"); } $oPaginatorAdapter->orderBy("e.competencia_inicial, e.competencia_final", $sSord); /** * Monta a paginação do GridPanel */ $oResultado = new Zend_Paginator($oPaginatorAdapter); $oResultado->setItemCountPerPage($iLimit); $oResultado->setCurrentPageNumber($iPage); foreach ($oResultado as $oDesif) { $aValores = Contribuinte_Model_ImportacaoDesif::getTotalReceitasGuia($oDesif->getId(), $bDetalhes); /** * Verifica se for para exibir as aliquotas detalhadas */ if ($bDetalhes) { foreach ($aValores['aliquotas_issqn'] as $iAliqIssqn => $aReceitas) { $aRecord[] = array('id_importacao_desif' => $oDesif->getId(), 'aliq_issqn' => DBSeller_Helper_Number_Format::toFloat($iAliqIssqn), 'total_receita' => DBSeller_Helper_Number_Format::toMoney($aReceitas['total_receita'], 2, 'R$ '), 'total_iss' => DBSeller_Helper_Number_Format::toMoney($aReceitas['total_iss'], 2, 'R$ ')); } } else { if ($aValores['total_receita'] > 0 && $aValores['total_iss'] > 0) { $aRecord[] = array('id' => $oDesif->getId(), 'competencia_inicial' => $oDesif->getCompetenciaInicial(), 'competencia_final' => $oDesif->getCompetenciaFinal(), 'total_receita' => DBSeller_Helper_Number_Format::toMoney($aValores['total_receita'], 2, 'R$ '), 'total_iss' => DBSeller_Helper_Number_Format::toMoney($aValores['total_iss'], 2, 'R$ '), 'aValores' => $aValores); } } } $iTotal = $oResultado->getTotalItemCount(); $iTotalPages = $iTotal > 0 && $iLimit > 0 ? ceil($iTotal / $iLimit) : 0; /** * Parametros de retorno do AJAX */ $aRetornoJson = array('total' => $iTotalPages, 'page' => $iPage, 'records' => $iTotal, 'rows' => $aRecord); return $aRetornoJson; }
/** * 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 para salvar as Contas preparadas para emissão de Guia * @param array $aParametros * @return array $aRetorno * @return Exception */ public function salvarEmissaoContas(array $aParametro) { $oDoctrine = Zend_Registry::get('em'); try { $oDoctrine->getConnection()->beginTransaction(); // Prepara parametros a serem removidos da preparação da guia $aContasDelete['importacao_desif_conta'] = $aParametro['contasPagina']; $aContasDelete['importacao_desif'] = $aParametro['competencia']; $aContasDelete['guia'] = null; $oImportacaoDesif = Contribuinte_Model_ImportacaoDesif::getById($aParametro['competencia']); $oDesifContaGuiaDelete = Contribuinte_Model_DesifContaGuia::delete($aContasDelete); foreach ($aParametro['selecionados'] as $iConta) { // Salva contas preparadas para a emissão de guia $oImportacaoDesifConta = Contribuinte_Model_ImportacaoDesifConta::getById($iConta); $oDesifContaGuia = new Contribuinte_Model_DesifContaGuia(); $oDesifContaGuia->setImportacaoDesif($oImportacaoDesif->getEntity()); $oDesifContaGuia->setImportacaoDesifConta($oImportacaoDesifConta->getEntity()); $oDesifContaGuia->persist(); } $oDoctrine->getConnection()->commit(); $aRetorno['status'] = TRUE; $aRetorno['success'] = 'Emissão atualizada!'; } catch (Exception $oErro) { $oDoctrine->getConnection()->rollback(); $aRetorno['status'] = FALSE; $aRetorno['error'][] = 'Não foi possível atualizar a emissão!' . $oErro->getMessage(); } return $aRetorno; }
/** * 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()); }
/** * @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; }
/** * Gera a guia de DES-IF no eCidade * * @param Contribuinte_Model_Contribuinte $oContribuinte * @param $iAnoCompetencia * @param $iMesCompetencia * @param DateTime $oDataPagamento * @param $fAliquota * @param bool $lGerarPdf * @return bool * @throws Exception */ public static function gerarGuiaDesif(Contribuinte_Model_Contribuinte $oContribuinte, $iAnoCompetencia, $iMesCompetencia, DateTime $oDataPagamento, $fAliquota, $lGerarPdf = TRUE) { // Verifica se já possui uma guia emitida $lTemGuiaEmitida = Contribuinte_Model_Guia::existeGuia($oContribuinte, $iMesCompetencia, $iAnoCompetencia, Contribuinte_Model_Guia::$DOCUMENTO_ORIGEM_NFSE); if ($lTemGuiaEmitida) { throw new Exception('Guia já emitida.'); } $aReceitasDesif = Contribuinte_Model_ImportacaoDesif::getTotalReceitasCompetencia($oContribuinte, $iAnoCompetencia, $iMesCompetencia, $fAliquota); $sDataPagamento = $oDataPagamento->format('d/m/Y'); $oUsuarioContribuinte = Administrativo_Model_UsuarioContribuinte::getById($oContribuinte->getIdUsuarioContribuinte()); $oValidateDate = new Zend_Validate_Date(); $sData = DBSeller_Helper_Date_Date::invertDate($sDataPagamento); $sDataValidacao = DBSeller_Helper_Date_Date::invertDate($sDataPagamento, ''); if ($sDataValidacao < date('Ymd')) { throw new Exception('Informe uma data posterior a data atual!'); } if ($oValidateDate->isValid($sDataPagamento)) { $oData = new DateTime($sData); } else { throw new Exception('Informe uma data para pagamento válida!'); } /** * Alterado o parametro de envio do cpf_cnpj para o e-cidade pois não estava sendo passado corretamente. */ $iCpfCnpj = $oUsuarioContribuinte->getCnpjCpf(); $iCpf = strlen($iCpfCnpj) == 11 ? $iCpfCnpj : NULL; $iCnpj = strlen($iCpfCnpj) == 14 ? $iCpfCnpj : NULL; $oGuiaGerar = new StdClass(); $oGuiaGerar->id_importacao_desif = $aReceitasDesif->id_importacao_desif; $oGuiaGerar->id_importacao_desif_conta = $aReceitasDesif->id_importacao_desif_conta; $oGuiaGerar->inscricao_municipal = $oUsuarioContribuinte->getIm(); $oGuiaGerar->cpf = $iCpf; $oGuiaGerar->cnpj = $iCnpj; $oGuiaGerar->numcgm = $oUsuarioContribuinte->getCgm(); $oGuiaGerar->mes_competencia = $iMesCompetencia; $oGuiaGerar->ano_competencia = $iAnoCompetencia; $aListaReceitas = array(); foreach ($aReceitasDesif->aliquotas_issqn as $fAliquota => $aDadosReceita) { $sNumeroNotaFiscal = date('YmdHs', time()) . $aReceitasDesif->id_importacao_desif . str_replace('.', '', $fAliquota); $oReceita = new stdClass(); $oReceita->numero_nota_fiscal = $sNumeroNotaFiscal; $oReceita->codigo_documento = $aReceitasDesif->id_importacao_desif; $oReceita->data_nota_fiscal = $aReceitasDesif->data_importacao->format('Y-m-d'); $oReceita->serie_nota_fiscal = NULL; $oReceita->valor_base_calculo = $aDadosReceita['total_receita']; $oReceita->valor_deducao = 0; $oReceita->valor_imposto_retido = $aDadosReceita['total_iss']; $oReceita->valor_servico_prestado = $aDadosReceita['total_receita']; $oReceita->aliquota = $fAliquota; $oReceita->data_pagamento = $sDataPagamento; $oReceita->retido = $aDadosReceita['total_iss']; $oReceita->situacao = 1; $oReceita->status = 1; $oReceita->servico_prestado = 'Receita Importada Desif'; $oReceita->cnpj_prestador = $oUsuarioContribuinte->getCnpjCpf(); $oReceita->inscricao_prestador = $oUsuarioContribuinte->getIm(); $oReceita->nome = $oContribuinte->getNome(); $oReceita->operacao = 2; $aListaReceitas[] = $oReceita; } $oGuiaGerar->notas = $aListaReceitas; $aDados = array('planilha' => $oGuiaGerar, 'data_pagamento' => $oData->format('Y-m-d'), 'tipo_debito' => Contribuinte_Model_GuiaEcidade::TIPO_DEBITO_VARIAVEL); $oGuiaGerada = WebService_Model_Ecidade::processar('geraDebitoIssContribribuinte', $aDados); $oGuia = new Contribuinte_Model_Guia(); $oGuia->gerarGuiaDesifPrestador($oContribuinte, $oGuiaGerada, $iAnoCompetencia, $iMesCompetencia, $oDataPagamento); $sArquivoGuiaPdf = $oGuiaGerada->debito->dados_boleto->arquivo_guia; if ($lGerarPdf) { $oGuiaGerada->arquivo_guia = Contribuinte_Model_GuiaEcidade::salvarPdf($sArquivoGuiaPdf, 'guia_substituto'); } return $oGuiaGerada; }