/* ********************************************************************************** * * * @package URBEM CNM - Soluções em Gestão Pública * * @copyright (c) 2013 Confederação Nacional de Municípos * * @author Confederação Nacional de Municípios * * * * O URBEM CNM é um software livre; você pode redistribuí-lo e/ou modificá-lo sob * * os termos da Licença Pública Geral GNU conforme publicada pela Fundação do * * Software Livre (FSF - Free Software Foundation); na versão 2 da Licença. * * * * Este programa é distribuído na expectativa de que seja útil, porém, * * SEM NENHUMA GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE OU * * ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral do GNU * * para mais detalhes. * * * * Você deve ter recebido uma cópia da Licença Pública Geral do GNU "LICENCA.txt" * * com este programa; se não, escreva para a Free Software Foundation Inc., * * no endereço 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * * ********************************************************************************** */ /* * Script de DDL e DML * * URBEM Soluções de Gestão Pública Ltda * www.urbem.cnm.org.br * * $Id:$ * * Versão 2.00.4 */ /* * Script de Virada de Ano: virada_para_2012.sql */ -- Exclusão de possiveis funçoes de manutencao. CREATE OR REPLACE FUNCTION public.manutencaokiller() RETURNS VOID AS $$ DECLARE reRegistro RECORD; varFuncao VARCHAR; BEGIN FOR reRegistro IN SELECT 'DROP FUNCTION ' || pg_namespace.nspname || '.' || pg_proc.proname || '( ' || Btrim(pg_catalog.oidvectortypes(pg_proc.proargtypes)) || ' ) ' as comando FROM pg_catalog.pg_proc LEFT JOIN pg_catalog.pg_namespace ON pg_namespace.oid = pg_proc.pronamespace WHERE pg_proc.prorettype != 'pg_catalog.cstring'::pg_catalog.regtype AND pg_namespace.nspname != 'pg_catalog' AND ( pg_proc.proname = 'manutencao' OR pg_proc.proname ILIKE 'temp%' OR pg_proc.proname ILIKE 'tmp%' ) ORDER BY 1 LOOP varFuncao := reRegistro.comando; EXECUTE varFuncao; END LOOP; RETURN; END; $$ LANGUAGE 'plpgsql'; Select public.manutencaokiller(); Drop Function public.manutencaokiller(); -- -- Procedimento 01 -- CREATE TEMP TABLE tmp_exer_permis AS SELECT ano_exercicio FROM administracao.permissao GROUP BY ano_exercicio ORDER BY 1; Delete From administracao.auditoria Where numcgm = 0 And cod_acao In ( Select acao.cod_acao From administracao.modulo , administracao.funcionalidade , administracao.acao Where modulo.cod_modulo = funcionalidade.cod_modulo And funcionalidade.cod_funcionalidade = acao.cod_funcionalidade) ; Delete From administracao.permissao Where numcgm = 0 And cod_acao In ( Select acao.cod_acao From administracao.modulo , administracao.funcionalidade , administracao.acao Where modulo.cod_modulo = funcionalidade.cod_modulo And funcionalidade.cod_funcionalidade = acao.cod_funcionalidade) ; CREATE OR REPLACE FUNCTION public.manutencao() RETURNS VOID AS $$ DECLARE recRecno RECORD; BEGIN FOR recRecno IN SELECT ano_exercicio FROM tmp_exer_permis GROUP BY ano_exercicio ORDER BY 1 LOOP Insert Into administracao.permissao ( numcgm, cod_acao, ano_exercicio ) Select 0, acao.cod_acao, recRecno.ano_exercicio From administracao.modulo , administracao.funcionalidade , administracao.acao Where ((modulo.cod_modulo = 2 or modulo.cod_modulo = 4) or (modulo.cod_modulo = 30 and cod_acao IN (1124,1335,1334,1127,1126,1125,1128))) And modulo.cod_modulo = funcionalidade.cod_modulo And funcionalidade.cod_funcionalidade = acao.cod_funcionalidade And 0 = ( Select COALESCE(Count(1),0) From administracao.permissao Where permissao.ano_exercicio = recRecno.ano_exercicio and permissao.cod_acao = acao.cod_acao and permissao.numcgm = 0 ); END LOOP; RETURN; END; $$ LANGUAGE 'plpgsql' ; Select public.manutencao(); DROP FUNCTION public.manutencao(); Insert Into administracao.permissao ( numcgm, cod_acao, ano_exercicio ) Select numcgm, cod_acao, '2012' From administracao.permissao as perm Where perm.ano_exercicio = '2011' and 0 = ( Select COALESCE(Count(1),0) From administracao.permissao Where permissao.ano_exercicio = '2012' and permissao.cod_acao = perm.cod_acao and permissao.numcgm = perm.numcgm ) ; -- Procedimento 02 Insert Into administracao.configuracao ( exercicio , cod_modulo , parametro , valor) SELECT '2012' , cod_modulo , parametro , valor FROM administracao.configuracao as proximo WHERE exercicio='2011' AND NOT EXISTS ( SELECT 1 FROM administracao.configuracao WHERE exercicio ='2012' and cod_modulo = proximo.cod_modulo and parametro = proximo.parametro); -- No caso da pref. ter sido inserido uma nova entidade após a criação do orçamento 2012. Insert Into orcamento.entidade ( exercicio, cod_entidade, numcgm, cod_responsavel, cod_resp_tecnico, cod_profissao, sequencia ) SELECT '2012', cod_entidade, numcgm, cod_responsavel, cod_resp_tecnico, cod_profissao, sequencia FROM orcamento.entidade as proximo WHERE exercicio='2011' AND NOT EXISTS ( SELECT 1 FROM orcamento.entidade WHERE exercicio = '2012' and cod_entidade = proximo.cod_entidade); -- No caso da pref. ter sido inserido uma nova entidade após a criação do orçamento 2012. Insert Into orcamento.usuario_entidade ( exercicio, numcgm, cod_entidade ) SELECT '2012', numcgm, cod_entidade FROM orcamento.usuario_entidade as proximo WHERE exercicio='2011' AND NOT EXISTS ( SELECT 1 FROM orcamento.usuario_entidade WHERE exercicio = '2012' and cod_entidade = proximo.cod_entidade); Insert Into administracao.configuracao_entidade ( exercicio , cod_entidade , cod_modulo , parametro , valor) SELECT '2012' , cod_entidade , cod_modulo , parametro , valor FROM administracao.configuracao_entidade as proximo WHERE exercicio='2011' AND NOT EXISTS ( SELECT 1 FROM administracao.configuracao_entidade WHERE exercicio = '2012' and cod_entidade = proximo.cod_entidade and cod_modulo = proximo.cod_modulo and parametro = proximo.parametro); Insert Into administracao.entidade_rh ( exercicio, cod_entidade, schema_cod ) SELECT '2012', cod_entidade, schema_cod FROM administracao.entidade_rh as proximo WHERE exercicio='2011' AND NOT EXISTS ( SELECT 1 FROM administracao.entidade_rh WHERE exercicio = '2012' and cod_entidade = proximo.cod_entidade); -- ASSINATURA INSERT INTO administracao.assinatura ( exercicio , cod_entidade , numcgm , timestamp , cargo ) SELECT '2012' AS exercicio , cod_entidade , numcgm , timestamp , cargo FROM administracao.assinatura AS proximo WHERE exercicio = '2011' AND NOT EXISTS ( SELECT 1 FROM administracao.assinatura WHERE exercicio = '2012' AND cod_entidade = proximo.cod_entidade AND numcgm = proximo.numcgm AND timestamp = proximo.timestamp AND cargo = proximo.cargo ) ; INSERT INTO administracao.assinatura_crc ( exercicio , cod_entidade , numcgm , timestamp , insc_crc ) SELECT '2012' AS exercicio , cod_entidade , numcgm , timestamp , insc_crc FROM administracao.assinatura_crc AS proximo WHERE exercicio = '2011' AND NOT EXISTS ( SELECT 1 FROM administracao.assinatura_crc WHERE exercicio = '2012' AND cod_entidade = proximo.cod_entidade AND numcgm = proximo.numcgm AND timestamp = proximo.timestamp AND insc_crc = proximo.insc_crc ) ; INSERT INTO administracao.assinatura_modulo ( exercicio , cod_entidade , numcgm , timestamp , cod_modulo ) SELECT '2012' AS exercicio , cod_entidade , numcgm , timestamp , cod_modulo FROM administracao.assinatura_modulo AS proximo WHERE exercicio = '2011' AND NOT EXISTS ( SELECT 1 FROM administracao.assinatura_modulo WHERE exercicio = '2012' AND cod_entidade = proximo.cod_entidade AND numcgm = proximo.numcgm AND timestamp = proximo.timestamp AND cod_modulo = proximo.cod_modulo ) ; -- Procedimento 03 update administracao.configuracao set valor='2012' where exercicio='2012' and parametro='ano_exercicio'; delete from administracao.configuracao where exercicio='2011' and parametro='diretorio' ; -- VERIFICACAO DE UTILIZACAO OU NAO DOS MODULOS GF -- ----------------------------------------------------- CREATE OR REPLACE FUNCTION atualiza_gf() RETURNS VOID AS $$ DECLARE stAux VARCHAR; BEGIN PERFORM 1 FROM orcamento.receita WHERE exercicio = '2011'; RAISE NOTICE 'ENTRA 1'; IF FOUND THEN RAISE NOTICE 'ENTRA 2'; -- Procedimento 07 Insert Into contabilidade.plano_analitica_credito ( exercicio , cod_plano , cod_especie , cod_genero , cod_natureza , cod_credito) Select '2012' , cod_plano , cod_especie , cod_genero , cod_natureza , cod_credito from contabilidade.plano_analitica_credito as proximo where exercicio='2011' and NOT EXISTS ( SELECT cod_plano , cod_especie , cod_genero , cod_natureza , cod_credito FROM contabilidade.plano_analitica_credito WHERE exercicio = '2012' AND cod_plano = proximo.cod_plano AND cod_credito = proximo.cod_credito AND cod_genero = proximo.cod_genero AND cod_especie = proximo.cod_especie AND cod_natureza = proximo.cod_natureza ) ; ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ -- Procedimento 08 Insert Into tcers.credor ( exercicio , numcgm , tipo) Select '2012' , numcgm , tipo from tcers.credor as proximo where exercicio='2011' and NOT EXISTS ( select 1 from tcers.credor where exercicio = '2012' and numcgm = proximo.numcgm) ; -- Procedimento 09 Insert Into tcers.uniorcam ( numcgm , exercicio , num_unidade , num_orgao , identificador) Select numcgm , '2012' , num_unidade , num_orgao , identificador from tcers.uniorcam as proximo where exercicio='2011' and NOT EXISTS (select 1 from tcers.uniorcam where exercicio = '2012' and numcgm = proximo.numcgm and num_unidade = proximo.num_unidade and num_orgao = proximo.num_orgao ); -- Procedimento 10 Insert Into tcers.rd_extra ( cod_conta , exercicio , classificacao) Select cod_conta , '2012' , classificacao from tcers.rd_extra proximo where exercicio='2011' and not exists ( select 1 from tcers.rd_extra where exercicio = '2012' and cod_conta = proximo.cod_conta); -- Procedimento 11 Insert Into tcerj.conta_despesa ( cod_conta , cod_estrutural_tce , lancamento , exercicio) Select cod_conta , cod_estrutural_tce , lancamento , '2012' from tcerj.conta_despesa as proximo where exercicio='2011' and not exists ( select 1 from tcerj.conta_despesa where exercicio = '2012' and cod_conta = proximo.cod_conta); -- Procedimento 12 Insert Into tcerj.conta_receita ( cod_conta , cod_estrutural_tce , lancamento , exercicio) Select cod_conta , cod_estrutural_tce , lancamento , '2012' from tcerj.conta_receita as proximo where exercicio='2011' and not exists ( select 1 from tcerj.conta_receita where exercicio = '2012' and cod_conta = proximo.cod_conta); PERFORM 1 FROM contabilidade.tipo_transferencia WHERE exercicio = '2012'; IF NOT FOUND THEN RAISE EXCEPTION 'É necessário gerar o exercício seguinte na elaboração do orçamento para a aplicação do pacote da virada!'; ELSE -- Procedimento 13 Insert Into tcerj.tipo_alteracao ( exercicio , cod_tipo , cod_tipo_alteracao , tipo ) Select '2012' , cod_tipo , cod_tipo_alteracao , tipo from tcerj.tipo_alteracao as proximo where exercicio='2011' and not exists ( select 1 from tcerj.tipo_alteracao where exercicio = '2012' and cod_tipo = proximo.cod_tipo and tipo = proximo.tipo) ; END IF; -- Procedimento 14 Insert Into tcerj.recurso ( cod_recurso, exercicio, cod_fonte) Select cod_recurso, '2012' , cod_fonte from tcerj.recurso as proximo where exercicio='2011' and not exists ( select 1 from tcerj.recurso where exercicio='2012' and cod_recurso = proximo.cod_recurso); -- Procedimento 15 Insert Into tcers.modelo_lrf ( exercicio, cod_modelo, nom_modelo, nom_modelo_orcamento) Select '2012' , cod_modelo, nom_modelo, nom_modelo_orcamento from tcers.modelo_lrf as proximo where exercicio='2011' and not exists ( select 1 from tcers.modelo_lrf where exercicio='2012' and cod_modelo = proximo.cod_modelo); -- Procedimento 16 Insert Into tcers.quadro_modelo_lrf ( exercicio, cod_modelo, cod_quadro, nom_quadro) Select '2012' , cod_modelo, cod_quadro, nom_quadro from tcers.quadro_modelo_lrf as proximo where exercicio='2011' and not exists ( select 1 from tcers.quadro_modelo_lrf where exercicio='2012' and cod_modelo = proximo.cod_modelo and cod_quadro = proximo.cod_quadro); END IF; END; $$ LANGUAGE 'plpgsql'; CREATE OR REPLACE FUNCTION aplica_fora_tribunal() RETURNS VOID AS $$ DECLARE stSql VARCHAR; BEGIN PERFORM 1 FROM administracao.configuracao WHERE exercicio = '2011' AND parametro = 'cnpj' AND valor = '15424948000141' ; IF NOT FOUND THEN stSql := 'SELECT atualiza_gf();'; EXECUTE stSql; END IF; END; $$ LANGUAGE 'plpgsql'; SELECT aplica_fora_tribunal(); DROP FUNCTION aplica_fora_tribunal(); DROP FUNCTION atualiza_gf(); -- Procedimento 17 -- -- Inclusão Contábil. -- CREATE OR REPLACE FUNCTION contabilidade.fn_sub_importa_conta_contabil_exer_ant( varExer VARCHAR , intCodContaExerAnt INTEGER , varCodStrutural VARCHAR , intCassficacaoCont INTEGER , intSistemaCont INTEGER , varDescr VARCHAR) RETURNS VOID AS $$ DECLARE intCodConta INTEGER; varExerAnt VARCHAR := BTRIM(TO_CHAR((TO_NUMBER(varExer, '9999') - 1), '9999')); intClass01 INTEGER; intClass02 INTEGER; intClass03 INTEGER; intClass04 INTEGER; intClass05 INTEGER; intClass06 INTEGER; intClass07 INTEGER; intClass08 INTEGER; intClass09 INTEGER; intClass10 INTEGER; stNaturezaSaldo VARCHAR; BEGIN SELECT cod_classificacao INTO intClass01 FROM contabilidade.classificacao_plano WHERE exercicio = varExerAnt AND cod_conta = intCodContaExerAnt AND cod_posicao = 1; SELECT cod_classificacao INTO intClass02 FROM contabilidade.classificacao_plano WHERE exercicio = varExerAnt AND cod_conta = intCodContaExerAnt AND cod_posicao = 2; SELECT cod_classificacao INTO intClass03 FROM contabilidade.classificacao_plano WHERE exercicio = varExerAnt AND cod_conta = intCodContaExerAnt AND cod_posicao = 3; SELECT cod_classificacao INTO intClass04 FROM contabilidade.classificacao_plano WHERE exercicio = varExerAnt AND cod_conta = intCodContaExerAnt AND cod_posicao = 4; SELECT cod_classificacao INTO intClass05 FROM contabilidade.classificacao_plano WHERE exercicio = varExerAnt AND cod_conta = intCodContaExerAnt AND cod_posicao = 5; SELECT cod_classificacao INTO intClass06 FROM contabilidade.classificacao_plano WHERE exercicio = varExerAnt AND cod_conta = intCodContaExerAnt AND cod_posicao = 6; SELECT cod_classificacao INTO intClass07 FROM contabilidade.classificacao_plano WHERE exercicio = varExerAnt AND cod_conta = intCodContaExerAnt AND cod_posicao = 7; SELECT cod_classificacao INTO intClass08 FROM contabilidade.classificacao_plano WHERE exercicio = varExerAnt AND cod_conta = intCodContaExerAnt AND cod_posicao = 8; SELECT cod_classificacao INTO intClass09 FROM contabilidade.classificacao_plano WHERE exercicio = varExerAnt AND cod_conta = intCodContaExerAnt AND cod_posicao = 9; SELECT cod_classificacao INTO intClass10 FROM contabilidade.classificacao_plano WHERE exercicio = varExerAnt AND cod_conta = intCodContaExerAnt AND cod_posicao = 10; PERFORM 1 FROM contabilidade.plano_conta WHERE exercicio = varExer AND cod_estrutural = varCodStrutural; IF NOT FOUND THEN SELECT COALESCE(Max(cod_conta) + 1, 1) INTO intCodConta FROM contabilidade.plano_conta WHERE exercicio = varExer; INSERT INTO contabilidade.plano_conta (exercicio, cod_conta , cod_estrutural, nom_conta , cod_classificacao , cod_sistema) VALUES (varExer , intCodConta, '' , BTRIM(varDescr) , intCassficacaoCont, intSistemaCont ); Insert Into contabilidade.classificacao_plano ( exercicio, cod_posicao, cod_classificacao , cod_conta) Values ( varExer, 1, intClass01, intCodConta); Insert Into contabilidade.classificacao_plano ( exercicio, cod_posicao, cod_classificacao , cod_conta) Values ( varExer, 2, intClass02, intCodConta); Insert Into contabilidade.classificacao_plano ( exercicio, cod_posicao, cod_classificacao , cod_conta) Values ( varExer, 3, intClass03, intCodConta); Insert Into contabilidade.classificacao_plano ( exercicio, cod_posicao, cod_classificacao , cod_conta) Values ( varExer, 4, intClass04, intCodConta); Insert Into contabilidade.classificacao_plano ( exercicio, cod_posicao, cod_classificacao , cod_conta) Values ( varExer, 5, intClass05, intCodConta); Insert Into contabilidade.classificacao_plano ( exercicio, cod_posicao, cod_classificacao , cod_conta) Values ( varExer, 6, intClass06, intCodConta); Insert Into contabilidade.classificacao_plano ( exercicio, cod_posicao, cod_classificacao , cod_conta) Values ( varExer, 7, intClass07, intCodConta); Insert Into contabilidade.classificacao_plano ( exercicio, cod_posicao, cod_classificacao , cod_conta) Values ( varExer, 8, intClass08, intCodConta); Insert Into contabilidade.classificacao_plano ( exercicio, cod_posicao, cod_classificacao , cod_conta) Values ( varExer, 9, intClass09, intCodConta); Insert Into contabilidade.classificacao_plano ( exercicio, cod_posicao, cod_classificacao , cod_conta) Values ( varExer, 10, intClass10, intCodConta); UPDATE contabilidade.plano_conta SET cod_estrutural = cod_estrutural WHERE exercicio = varExer AND cod_conta = intCodConta; IF substr(varCodStrutural,1,1) = 1 THEN stNaturezaSaldo := 'D'; ELSIF substr(varCodStrutural,1,1) = 2 THEN stNaturezaSaldo := 'C'; ELSIF substr(varCodStrutural,1,1) = 3 THEN stNaturezaSaldo := 'D'; ELSIF substr(varCodStrutural,1,1) = 4 THEN stNaturezaSaldo := 'C'; ELSIF substr(varCodStrutural,1,1) = 5 THEN stNaturezaSaldo := 'D'; ELSIF substr(varCodStrutural,1,1) = 6 THEN stNaturezaSaldo := 'C'; ELSIF substr(varCodStrutural,1,1) = 7 THEN stNaturezaSaldo := 'C'; ELSIF substr(varCodStrutural,1,1) = 9 THEN stNaturezaSaldo := 'D'; END IF; INSERT INTO contabilidade.plano_analitica ( exercicio , cod_conta , cod_plano , natureza_saldo ) VALUES ( varExer , intCodConta , ( SELECT COALESCE((max(cod_plano)+1),1) FROM contabilidade.plano_analitica WHERE exercicio = varExer ) , stNaturezaSaldo ); END IF; RETURN; END; $$ LANGUAGE 'plpgsql'; -- -- Função principal. -- CREATE OR REPLACE FUNCTION contabilidade.fn_importa_conta_contabil_exer_ant(varExer VARCHAR) RETURNS VOID AS $$ DECLARE varExerAnt VARCHAR := BTRIM(TO_CHAR((TO_NUMBER(varExer, '9999') - 1), '9999')); recAnalitica RECORD; BEGIN FOR recAnalitica IN SELECT plano_conta.cod_conta , plano_conta.cod_estrutural , plano_conta.cod_classificacao , plano_conta.cod_sistema , plano_conta.nom_conta FROM contabilidade.plano_conta , contabilidade.plano_analitica WHERE plano_conta.exercicio = varExerAnt AND plano_conta.exercicio = plano_analitica.exercicio AND plano_conta.cod_conta = plano_analitica.cod_conta LOOP -- Inclusão de contas na contabilidade. PERFORM contabilidade.fn_sub_importa_conta_contabil_exer_ant( varExer , recAnalitica.cod_conta , recAnalitica.cod_estrutural , recAnalitica.cod_classificacao , recAnalitica.cod_sistema , recAnalitica.nom_conta); END LOOP; RETURN; END; $$ LANGUAGE 'plpgsql'; CREATE OR REPLACE FUNCTION publico.fn_consulta_classificacao(VARCHAR,VARCHAR,VARCHAR) RETURNS VARCHAR AS $$ DECLARE reRecord RECORD; stOut VARCHAR := ''; stSql VARCHAR := ''; stTabelaClassificacao ALIAS FOR $1; stTabelaPosicao ALIAS FOR $2; stFiltro ALIAS FOR $3; BEGIN IF stTabelaClassificacao != 'orcamento.classificacao_receita' THEN stSql := ' SELECT * FROM ( SELECT cla.* ,pos.mascara FROM ' || stTabelaClassificacao || ' as cla ,' || stTabelaPosicao || ' as pos WHERE cla.exercicio = pos.exercicio AND cla.cod_posicao = pos.cod_posicao ORDER BY cla.cod_posicao ) as tabela ' || stFiltro || ' '; ELSE stSql := ' SELECT * FROM ( SELECT cla.* ,pos.mascara FROM ' || stTabelaClassificacao || ' as cla ,' || stTabelaPosicao || ' as pos WHERE cla.exercicio = pos.exercicio AND cla.cod_posicao = pos.cod_posicao AND cla.cod_tipo = pos.cod_tipo ORDER BY cla.cod_posicao ) as tabela ' || stFiltro || ' '; END IF; FOR reRecord IN EXECUTE stSql LOOP stOut := stOut||'.'||sw_fn_mascara_dinamica ( ( case when reRecord.mascara = '' then '0' else reRecord.mascara end ) , cast( reRecord.cod_classificacao as VARCHAR) ); END LOOP; stOut := SUBSTR(stOut,2,LENGTH(stOut)); RETURN stOut; END; $$ LANGUAGE 'plpgsql'; CREATE OR REPLACE FUNCTION atualiza_gf() RETURNS VOID AS $$ DECLARE stAux VARCHAR; BEGIN PERFORM 1 FROM orcamento.receita WHERE exercicio = '2011'; IF FOUND THEN PERFORM contabilidade.fn_importa_conta_contabil_exer_ant('2012'); END IF; END; $$ LANGUAGE 'plpgsql'; CREATE FUNCTION aplica_fora_tribunal() RETURNS VOID AS $$ DECLARE stSql VARCHAR; BEGIN PERFORM 1 FROM administracao.configuracao WHERE exercicio = '2011' AND parametro = 'cnpj' AND valor = '15424948000141' ; IF NOT FOUND THEN stSql := 'SELECT atualiza_gf();'; EXECUTE stSql; END IF; END; $$ LANGUAGE 'plpgsql'; SELECT aplica_fora_tribunal(); DROP FUNCTION aplica_fora_tribunal(); DROP FUNCTION atualiza_gf(); -- -- Procedimento 18 -- DELETE FROM administracao.configuracao WHERE parametro = 'virada_GF' AND exercicio = '2012'; -------------------------------- -- Replicacao de ima.codigo_dirf -------------------------------- SELECT atualizarbanco(' INSERT INTO ima.codigo_dirf ( exercicio , cod_dirf , tipo , descricao ) SELECT \'2012\' AS exercicio , cod_dirf , tipo , descricao FROM ima.codigo_dirf WHERE exercicio = \'2011\' ; ');