From 46e7bc7464a9d1ffa04adde36efdc4ae704f5052 Mon Sep 17 00:00:00 2001 From: juliana.barbosa Date: Fri, 3 Jun 2016 09:34:44 -0300 Subject: [PATCH] Redmine #5144 - alteração da ordem dos scripts para melhorar a performance. --- cit-adm-materiais-api/src/main/resources/scripts-bd/Migracao_MPOG/04-Patrimonio.sql | 390 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------------------------------------------------------------------------------------------------- cit-adm-materiais-api/src/main/resources/scripts-bd/Migracao_MPOG/06-SaldosContabeisEstoque.sql | 531 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- cit-adm-materiais-api/src/main/resources/scripts-bd/Migracao_MPOG/99-AjustesFinais.sql | 124 ---------------------------------------------------------------------------------------------------------------------------- 3 files changed, 523 insertions(+), 522 deletions(-) diff --git a/cit-adm-materiais-api/src/main/resources/scripts-bd/Migracao_MPOG/04-Patrimonio.sql b/cit-adm-materiais-api/src/main/resources/scripts-bd/Migracao_MPOG/04-Patrimonio.sql index b278a63..b51e316 100644 --- a/cit-adm-materiais-api/src/main/resources/scripts-bd/Migracao_MPOG/04-Patrimonio.sql +++ b/cit-adm-materiais-api/src/main/resources/scripts-bd/Migracao_MPOG/04-Patrimonio.sql @@ -2115,123 +2115,295 @@ COMMIT; -- DELETO AS CONSTRAINTS DAS TABELAS DE MOVIMENTO PARA FICAR MAIS RAPIDO END$$; -- #FIM :: MIGRACAO DAS REAVALIACOES\REDUCOES >> CONTACONTABILMOVIMENTO e CONTACONTABILMOVPATRIMONIO +-- #INI :: MIGRACAO DE MOVIMENTOS DE DEPRECIACAO >> CONTACONTABILMOVIMENTO E CONTACONTABILMOVPATRIMONIO + DO $$ + DECLARE + r RECORD; + v_ccmId BIGINT; + v_movent BIGINT; + v_classeRefDepre BIGINT; + BEGIN -BEGIN; --CRIO NOVAMENTE AS CONSTRAINTS DAS TABELAS DE MOVIMENTO - ALTER TABLE contacontabilmovimento - ADD CONSTRAINT fk_tltd08eva1hdwc3h7jlwjws4j FOREIGN KEY (editor_id) - REFERENCES seguranca_usuario (id) MATCH SIMPLE - ON UPDATE NO ACTION ON DELETE NO ACTION; - - ALTER TABLE contacontabilmovimento - ADD CONSTRAINT fk_ixxyf53r9ft0t2tjgttwhq12r FOREIGN KEY (entrada_id) - REFERENCES entrada (id) MATCH SIMPLE - ON UPDATE NO ACTION ON DELETE NO ACTION; - - ALTER TABLE contacontabilmovimento - ADD CONSTRAINT fk_dpuxwhj1qoinbsbdem8hvey5l FOREIGN KEY (inativador_id) - REFERENCES seguranca_usuario (id) MATCH SIMPLE - ON UPDATE NO ACTION ON DELETE NO ACTION; - - ALTER TABLE contacontabilmovimento - ADD CONSTRAINT fk_c2crmvotnfof8iv19h96qdn1h FOREIGN KEY (dominioclassereferencia_id) - REFERENCES dominio (id) MATCH SIMPLE - ON UPDATE NO ACTION ON DELETE NO ACTION; - - ALTER TABLE contacontabilmovimento - ADD CONSTRAINT fk_blt6cqdh6lonms89du3m5wug8 FOREIGN KEY (tipomovimentocontacontabil_id) - REFERENCES dominio (id) MATCH SIMPLE - ON UPDATE NO ACTION ON DELETE NO ACTION; - - ALTER TABLE contacontabilmovimento - ADD CONSTRAINT fk_8q85bxfuhk0f536ndy3y876xl FOREIGN KEY (contacontabil_id) - REFERENCES contacontabil (id) MATCH SIMPLE - ON UPDATE NO ACTION ON DELETE NO ACTION; - - ALTER TABLE contacontabilmovimento - ADD CONSTRAINT fk_72shgmt8caaldg2m0kw2cvbhj FOREIGN KEY (autor_id) - REFERENCES seguranca_usuario (id) MATCH SIMPLE - ON UPDATE NO ACTION ON DELETE NO ACTION; - - ALTER TABLE contacontabilmovimento - ADD CONSTRAINT fk_114dqtx1g4ja80nkdqrw0ej0t FOREIGN KEY (transferenciaconta_id) - REFERENCES transferenciacontacontabil (id) MATCH SIMPLE - ON UPDATE NO ACTION ON DELETE NO ACTION; - - ALTER TABLE contacontabilmovimento - ADD CONSTRAINT fk_2yfuukmqt1uyv7r0c9dc20xiw FOREIGN KEY (baixa_id) - REFERENCES baixa (id) MATCH SIMPLE - ON UPDATE NO ACTION ON DELETE NO ACTION; - - ALTER TABLE contacontabilmovpatrimonio - ADD CONSTRAINT fk_qu9isdu7h3l1dabu9n9l2klab FOREIGN KEY (transferencia_id) - REFERENCES transferencia (id) MATCH SIMPLE - ON UPDATE NO ACTION ON DELETE NO ACTION; - - ALTER TABLE contacontabilmovpatrimonio - ADD CONSTRAINT fk_1rrslp97ar7119a4fjw9h8xq7 FOREIGN KEY (bempatrimonial_id) - REFERENCES bempatrimonial (id) MATCH SIMPLE - ON UPDATE NO ACTION ON DELETE NO ACTION; + SELECT ID INTO v_movent + FROM PUBLIC.DOMINIO + WHERE CHAVE = 'tipoMovimentoContaContabil' + AND CODIGO = 3; + + SELECT ID INTO v_classeRefDepre + FROM PUBLIC.DOMINIO + WHERE CHAVE = 'classeReferencia' + AND CODIGO = 7; - ALTER TABLE contacontabilmovpatrimonio - ADD CONSTRAINT fk_1uaukjmyd9srei1s6l3sueu9r FOREIGN KEY (id) - REFERENCES contacontabilmovimento (id) MATCH SIMPLE - ON UPDATE NO ACTION ON DELETE NO ACTION; -COMMIT; --CRIO NOVAMENTE AS CONSTRAINTS DAS TABELAS DE MOVIMENTO + FOR r IN + SELECT + D.MESREFERENCIA AS DATAREFERENCIA, + DI.VALORDEPRECIACAOATUAL AS VALOR, + DI.CONTACONTABIL_ID, + D.ID AS DEPRECIACAO_ID, + DI.BEMPATRIMONIAL_ID + FROM DEPRECIACAO D + INNER JOIN DEPRECIACAOITEM DI ON (DI.DEPRECIACAO_ID = D.ID) + ORDER BY D.MESREFERENCIA + LOOP + raise notice 'mesano, %', to_char(r.datareferencia, 'YYYYMM'); -BEGIN; --CRIO AS CONSTRAINTS DE DEPRECIACAOITEM NOVAMENTE - ALTER TABLE depreciacao - ADD CONSTRAINT fk_7ir0d4f00iv0d5k2tqnado80t FOREIGN KEY (organizacao_id) - REFERENCES organizacao (id) MATCH SIMPLE - ON UPDATE NO ACTION ON DELETE NO ACTION; - - ALTER TABLE depreciacao - ADD CONSTRAINT fk_7qj52csr4ussngholioxwf8ny FOREIGN KEY (autor_id) - REFERENCES seguranca_usuario (id) MATCH SIMPLE - ON UPDATE NO ACTION ON DELETE NO ACTION; - - ALTER TABLE depreciacao - ADD CONSTRAINT fk_ax8wlx3nuo622jni9tlkf05t4 FOREIGN KEY (editor_id) - REFERENCES seguranca_usuario (id) MATCH SIMPLE - ON UPDATE NO ACTION ON DELETE NO ACTION; - - ALTER TABLE depreciacao - ADD CONSTRAINT fk_hxiqvyjv7su2fsn0b3hcmuirx FOREIGN KEY (inativador_id) - REFERENCES seguranca_usuario (id) MATCH SIMPLE - ON UPDATE NO ACTION ON DELETE NO ACTION; + -- RECUPERA A PROXIMA SEQUENCE + SELECT NEXTVAL('hibernate_sequence') into v_ccmId; - ALTER TABLE depreciacaoitem - ADD CONSTRAINT fk_flvqkobbb468h7m7twqpg27wm FOREIGN KEY (bempatrimonial_id) - REFERENCES bempatrimonial (id) MATCH SIMPLE - ON UPDATE NO ACTION ON DELETE NO ACTION; - - ALTER TABLE depreciacaoitem - ADD CONSTRAINT fk_e1qmf052vbg4kbym0c2rl0t9 FOREIGN KEY (autor_id) - REFERENCES seguranca_usuario (id) MATCH SIMPLE - ON UPDATE NO ACTION ON DELETE NO ACTION; - - ALTER TABLE depreciacaoitem - ADD CONSTRAINT fk_6dt6ljs2kog9j0hrugj4jp1cq FOREIGN KEY (editor_id) - REFERENCES seguranca_usuario (id) MATCH SIMPLE - ON UPDATE NO ACTION ON DELETE NO ACTION; - - ALTER TABLE depreciacaoitem - ADD CONSTRAINT fk_5dd5ba2uf8vd5im0j6wy73xue FOREIGN KEY (depreciacao_id) - REFERENCES depreciacao (id) MATCH SIMPLE - ON UPDATE NO ACTION ON DELETE NO ACTION; - - ALTER TABLE depreciacaoitem - ADD CONSTRAINT fk_2lv1atngy0npqsjbxvg2j0nd8 FOREIGN KEY (contacontabil_id) - REFERENCES contacontabil (id) MATCH SIMPLE - ON UPDATE NO ACTION ON DELETE NO ACTION; + INSERT INTO public.contacontabilmovimento + ( + id, + datacriacao, + dataedicao, + version, + datareferencia, + valor, + contacontabil_id, + tipomovimentocontacontabil_id, + dominioclassereferencia_id, + idclassereferencia + )VALUES + ( + v_ccmId, + LOCALTIMESTAMP, + LOCALTIMESTAMP, + 0, + r.datareferencia, + 0, + r.contacontabil_id, + v_movent, + v_classeRefDepre, + R.DEPRECIACAO_ID + ); + + INSERT INTO public.contacontabilmovpatrimonio + ( + id, + reavaliacao, + valordepreciacao, + valorreavaliacao, + valorreducao, + bempatrimonial_id, + transferencia_id + ) + VALUES + ( + v_ccmId, + FALSE, + r.valor, + 0, + 0, + r.BEMPATRIMONIAL_ID, + NULL + ); + END LOOP; + END$$; + -- 20 minutos maquina Ju +-- #FIM :: MIGRACAO DE MOVIMENTOS DE DEPRECIACAO >> CONTACONTABILMOVIMENTO E CONTACONTABILMOVPATRIMONIO + +-- ############################################################################ +-- #### -Esses scripts devem ser executados após as depreciações de bens ##### +-- #### -Verificar o anomes referência/data contábil do cliente e ajustar ##### +-- ############################################################################ + + +UPDATE BEMPATRIMONIAL +SET DOMINIOSTATUSDEPRECIACAO_ID = NULL; + +-- #INI :: ATUALIZA STATUS DEPRECIACAO DOS BENS BAIXADOS QUE NEM CHEGARAM A SER DEPRECIADOS >> BEMPATRIMONIAL + DO $$ + DECLARE + rBEM RECORD; + v_tipoStatusDepreciacaoNaoDepreExAnt int; + v_statusBemBaixado int; + BEGIN + SELECT ID FROM PUBLIC.DOMINIO WHERE CHAVE='tipoStatusDepreciacao' AND CODIGO=5 INTO v_tipoStatusDepreciacaoNaoDepreExAnt; + SELECT ID FROM PUBLIC.DOMINIO WHERE CHAVE='tipoStatusBem' AND CODIGO=2 INTO v_statusBemBaixado; + -- RECUPERA OS BENS PATRIMONIAIS QUE ESTAO NA TABELA DE DEPRECIACAO + FOR rBEM IN + SELECT ID FROM PUBLIC.BEMPATRIMONIAL + WHERE ID IN ( SELECT ID FROM PUBLIC.BEMPATRIMONIAL + EXCEPT + SELECT BEMPATRIMONIAL_ID FROM DEPRECIACAOITEM + ) + AND DOMINIOSTATUS_ID=v_statusBemBaixado + LOOP + UPDATE PUBLIC.BEMPATRIMONIAL + SET dominiostatusdepreciacao_id = v_tipoStatusDepreciacaoNaoDepreExAnt + WHERE ID = rBEM.id; + END LOOP; + END$$; +-- #FIM :: ATUALIZA STATUS DEPRECIACAO DOS BENS BAIXADOS QUE NEM CHEGARAM A SER DEPRECIADOS >> BEMPATRIMONIAL + + +-- #INI :: ATUALIZA STATUS DEPRECIACAO DOS BENS BAIXADOS QUE ATINGIRAM O VALOR RESIDUAL >> BEMPATRIMONIAL + DO $$ + DECLARE + rBEM RECORD; + v_tipoStatusDepreciacaoFinalizada int; + v_statusBemBaixado int; + BEGIN + SELECT ID FROM PUBLIC.DOMINIO WHERE CHAVE='tipoStatusDepreciacao' AND CODIGO=3 INTO v_tipoStatusDepreciacaoFinalizada; + SELECT ID FROM PUBLIC.DOMINIO WHERE CHAVE='tipoStatusBem' AND CODIGO=2 INTO v_statusBemBaixado; + -- RECUPERA OS BENS PATRIMONIAIS BAIXADOS QUE ESTAO NA TABELA DE DEPRECIACAO E JA ATINGIRAM O VALOR RESIDUAL + FOR rBEM IN + SELECT DISTINCT BEMPATRIMONIAL_ID AS ID + FROM DEPRECIACAOITEM D + INNER JOIN BEMPATRIMONIAL B ON (B.ID = D.BEMPATRIMONIAL_ID) + WHERE DOMINIOSTATUS_ID = v_statusBemBaixado + AND round((B.VALORBRUTOATUAL*B.PERCENTUALNAODEPRECIAVEL), 2) = round(B.VALORLIQUIDO, 2) + LOOP + UPDATE PUBLIC.BEMPATRIMONIAL + SET dominiostatusdepreciacao_id = v_tipoStatusDepreciacaoFinalizada + WHERE ID = rBEM.id; + END LOOP; + END$$; +-- #FIM :: ATUALIZA STATUS DEPRECIACAO DOS BENS BAIXADOS QUE ATINGIRAM O VALOR RESIDUAL >> BEMPATRIMONIAL + + +-- #INI :: ATUALIZA STATUS DEPRECIACAO DOS BENS BAIXADOS QUE NAO ATINGIRAM O VALOR RESIDUAL >> BEMPATRIMONIAL + DO $$ + DECLARE + rBEM RECORD; + v_tipoStatusDepreciavel int; + v_statusBemBaixado int; + BEGIN - ALTER TABLE depreciacaoitem - ADD CONSTRAINT fk_1fssswosq1k83ghlnq8efennr FOREIGN KEY (inativador_id) - REFERENCES seguranca_usuario (id) MATCH SIMPLE - ON UPDATE NO ACTION ON DELETE NO ACTION; -COMMIT; --CRIO AS CONSTRAINTS DE DEPRECIACAOITEM NOVAMENTE + SELECT ID FROM PUBLIC.DOMINIO WHERE CHAVE='tipoStatusDepreciacao' AND CODIGO=1 INTO v_tipoStatusDepreciavel; + SELECT ID FROM PUBLIC.DOMINIO WHERE CHAVE='tipoStatusBem' AND CODIGO=2 INTO v_statusBemBaixado; + + -- RECUPERA OS BENS PATRIMONIAIS BAIXADOS QUE ESTAO NA TABELA DE DEPRECIACAO E NAO ATINGIRAM O VALOR RESIDUAL + FOR rBEM IN + SELECT DISTINCT BEMPATRIMONIAL_ID AS ID + FROM PUBLIC.DEPRECIACAOITEM D + INNER JOIN BEMPATRIMONIAL B ON (B.ID = D.BEMPATRIMONIAL_ID) + WHERE DOMINIOSTATUS_ID = v_statusBemBaixado + AND round((B.VALORBRUTOATUAL*B.PERCENTUALNAODEPRECIAVEL), 2) <> round(B.VALORLIQUIDO, 2) + AND B.DOMINIOSTATUSDEPRECIACAO_ID IS NULL + LOOP + UPDATE PUBLIC.BEMPATRIMONIAL + SET dominiostatusdepreciacao_id = v_tipoStatusDepreciavel + WHERE ID = rBEM.id; + END LOOP; + END$$; +-- #FIM :: ATUALIZA STATUS DEPRECIACAO DOS BENS BAIXADOS QUE NAO ATINGIRAM O VALOR RESIDUAL >> BEMPATRIMONIAL + + +-- #INI :: ATUALIZA STATUS DEPRECIACAO DOS BENS QUE ESTAO NO ALMOXARIFADO >> BEMPATRIMONIAL + DO $$ + DECLARE + rBEM RECORD; + v_tipoStatusAlmox int; + BEGIN + SELECT ID FROM PUBLIC.DOMINIO WHERE CHAVE='tipoStatusDepreciacao' AND CODIGO=2 into v_tipoStatusAlmox; + -- RECUPERA OS BENS PATRIMONIAIS QUE ESTAO NO ALMOXARIFADO + FOR rBEM IN + SELECT ID + FROM BEMPATRIMONIAL + WHERE UNIDADEATUAL_ID IN (SELECT E.ID + FROM ESTRUTURAORGANIZACIONAL E + INNER JOIN estruturaorganizacionalpatrim EP ON (EP.ESTRUTURAORGANIZACIONAL_ID = E.ID) + WHERE EP.ISALMOXARIFADO IS TRUE) + LOOP + UPDATE PUBLIC.BEMPATRIMONIAL + SET dominiostatusdepreciacao_id = v_tipoStatusAlmox + WHERE ID = rBEM.id; + END LOOP; + END$$; +-- #FIM :: ATUALIZA STATUS DEPRECIACAO DOS BENS QUE ESTAO NO ALMOXARIFADO >> BEMPATRIMONIAL + + +-- ################ ################ +-- ################ ))))) VERIFICAR O ANOMES ATUAL DA REFERENCIA DO CLIENTE ((((( ################ +-- ################ ################ +-- #INI :: ATUALIZA STATUS DEPRECIACAO DOS BENS QUE TEM DATACONTABIL NESSE MES E NAO ESTAO NO ALMOXARIFADO >> BEMPATRIMONIAL + DO $$ + DECLARE + rBEM RECORD; + v_tipoStatusPronto int; + BEGIN + SELECT ID FROM PUBLIC.DOMINIO WHERE CHAVE='tipoStatusDepreciacao' AND CODIGO=6 into v_tipoStatusPronto; + -- RECUPERA OS BENS PATRIMONIAIS QUE TEM DATACONTABIL NESSE MES E NAO ESTAO NO ALMOXARIFADO + FOR rBEM IN + SELECT ID + FROM BEMPATRIMONIAL + WHERE TO_CHAR(DATACONTABIL, 'YYYYMM') = -- << ALTERAR PARA ANOMES CONFORME CLIENTE >> + AND UNIDADEATUAL_ID NOT IN (SELECT E.ID + FROM ESTRUTURAORGANIZACIONAL E + INNER JOIN estruturaorganizacionalpatrim EP ON (EP.ESTRUTURAORGANIZACIONAL_ID = E.ID) + WHERE EP.ISALMOXARIFADO IS TRUE) + LOOP + UPDATE PUBLIC.BEMPATRIMONIAL + SET DOMINIOSTATUSDEPRECIACAO_ID = v_tipoStatusPronto + WHERE ID = rBEM.id; + END LOOP; + END$$; +-- #FIM :: ATUALIZA STATUS DEPRECIACAO DOS BENS QUE TEM DATACONTABIL NESSE MES E NAO ESTAO NO ALMOXARIFADO >> BEMPATRIMONIAL +-- ################ ################ +-- ################ ))))) VERIFICAR A DATACONTABIL INICIAL PARA DEPRECIACAO ((((( ################ +-- ################ ################ +-- #INI :: ATUALIZA STATUS DEPRECIACAO DOS BENS QUE TEM DATACONTABIL NESSE MES E NAO ESTAO NO ALMOXARIFADO >> BEMPATRIMONIAL + DO $$ + DECLARE + rBEM RECORD; + v_tipoStatusNaoDepreciavel int; + BEGIN + SELECT ID FROM PUBLIC.DOMINIO WHERE CHAVE='tipoStatusDepreciacao' AND CODIGO=4 into v_tipoStatusNaoDepreciavel; + -- RECUPERA OS BENS PATRIMONIAIS QUE AINDA NAO POSSUEM STATUSDEPRECIACAO E QUE TEM DATA CONTABIL INFERIOR A 2010 E NAO SOFRERAM REAVALIACAO + FOR rBEM IN + SELECT ID + FROM PUBLIC.BEMPATRIMONIAL + WHERE DATACONTABIL < TO_TIMESTAMP('20100101', 'YYYYMMDD') -- << ALTERAR PARA ANOMES CONFORME CLIENTE >> + AND ID NOT IN (SELECT DISTINCT BEMPATRIMONIAL_ID + FROM BEMPATRIMONIALALTERACAO + WHERE MOTIVOALTERACAO_ID = (SELECT ID FROM PUBLIC.DOMINIO WHERE CHAVE='tipoMotivoAlteracaoBem' AND CODIGO=3)) + AND DOMINIOSTATUSDEPRECIACAO_ID IS NULL + LOOP + UPDATE PUBLIC.BEMPATRIMONIAL + SET DOMINIOSTATUSDEPRECIACAO_ID = v_tipoStatusNaoDepreciavel + WHERE ID = rBEM.id; + END LOOP; + END$$; +-- #FIM :: ATUALIZA STATUS DEPRECIACAO DOS BENS QUE TEM DATACONTABIL NESSE MES E NAO ESTAO NO ALMOXARIFADO >> BEMPATRIMONIAL + + +-- #INI :: ATUALIZA STATUS DEPRECIACAO DOS BENS QUE JA ATINGIRAM O VALOR RESIDUAL >> BEMPATRIMONIAL + DO $$ + DECLARE + rBEM RECORD; + v_tipoStatusDepreciacaoFinalizada int; + BEGIN + SELECT ID FROM PUBLIC.DOMINIO WHERE CHAVE='tipoStatusDepreciacao' AND CODIGO=3 into v_tipoStatusDepreciacaoFinalizada; + -- RECUPERA OS BENS PATRIMONIAIS QUE AINDA NAO POSSUEM STATUSDEPRECIACAO E JA ATINGIRAM O VALOR RESIDUAL + FOR rBEM IN + SELECT DISTINCT BEMPATRIMONIAL_ID AS ID + FROM PUBLIC.DEPRECIACAOITEM D + INNER JOIN BEMPATRIMONIAL B ON (B.ID = D.BEMPATRIMONIAL_ID) WHERE round((B.VALORBRUTOATUAL*B.PERCENTUALNAODEPRECIAVEL), 2) = round(B.VALORLIQUIDO, 2) AND B.DOMINIOSTATUSDEPRECIACAO_ID IS NULL + LOOP + UPDATE PUBLIC.BEMPATRIMONIAL + SET DOMINIOSTATUSDEPRECIACAO_ID = v_tipoStatusDepreciacaoFinalizada + WHERE ID = rBEM.id; + END LOOP; + END$$; +-- #FIM :: ATUALIZA STATUS DEPRECIACAO DOS BENS QUE JA ATINGIRAM O VALOR RESIDUAL >> BEMPATRIMONIAL + + +-- #INI :: ATUALIZA STATUS DEPRECIACAO DOS BENS QUE NAO SE ADEQUARAM NAS CONDICOES ANTERIORES (SAO TODOS DEPRECIAVEIS) >> BEMPATRIMONIAL + BEGIN; + UPDATE public.bempatrimonial + SET dominiostatusdepreciacao_id = (SELECT ID FROM PUBLIC.DOMINIO WHERE CHAVE='tipoStatusDepreciacao' AND CODIGO=1) + WHERE dominiostatusdepreciacao_id is null; + COMMIT; + + BEGIN; + UPDATE public.bempatrimonial + SET naodepreciar = true + WHERE dominiostatusdepreciacao_id = (SELECT ID FROM PUBLIC.DOMINIO WHERE CHAVE='tipoStatusDepreciacao' AND CODIGO=4); + COMMIT; +-- #FIM :: ATUALIZA STATUS DEPRECIACAO DOS BENS QUE NAO SE ADEQUARAM NAS CONDICOES ANTERIORES (SAO TODOS DEPRECIAVEIS) >> BEMPATRIMONIAL BEGIN; -- #INI :: GERACAO DO HISTORICO DOS BENS PATRIMONIAIS >> HISTORICOBEMPATRIMONIAL diff --git a/cit-adm-materiais-api/src/main/resources/scripts-bd/Migracao_MPOG/06-SaldosContabeisEstoque.sql b/cit-adm-materiais-api/src/main/resources/scripts-bd/Migracao_MPOG/06-SaldosContabeisEstoque.sql index aefbccb..2baeedb 100644 --- a/cit-adm-materiais-api/src/main/resources/scripts-bd/Migracao_MPOG/06-SaldosContabeisEstoque.sql +++ b/cit-adm-materiais-api/src/main/resources/scripts-bd/Migracao_MPOG/06-SaldosContabeisEstoque.sql @@ -2,297 +2,8 @@ -- ##FIM :: CARGAS E ATUALIZACOES DE SALDOS CONTABEIS/ESTOQUE/MOVIMENTOS -- --===========================================================================-- --- ############################################################################ --- #### -Esses scripts devem ser executados após as depreciações de bens ##### --- #### -Verificar o anomes referência/data contábil do cliente e ajustar ##### --- ############################################################################ --- #INI :: MIGRACAO DE MOVIMENTOS DE DEPRECIACAO >> CONTACONTABILMOVIMENTO E CONTACONTABILMOVPATRIMONIO - DO $$ - DECLARE - r RECORD; - v_ccmId BIGINT; - v_movent BIGINT; - v_classeRefDepre BIGINT; - BEGIN - - SELECT ID INTO v_movent - FROM PUBLIC.DOMINIO - WHERE CHAVE = 'tipoMovimentoContaContabil' - AND CODIGO = 3; - - SELECT ID INTO v_classeRefDepre - FROM PUBLIC.DOMINIO - WHERE CHAVE = 'classeReferencia' - AND CODIGO = 7; - - FOR r IN - SELECT - D.MESREFERENCIA AS DATAREFERENCIA, - DI.VALORDEPRECIACAOATUAL AS VALOR, - DI.CONTACONTABIL_ID, - D.ID AS DEPRECIACAO_ID, - DI.BEMPATRIMONIAL_ID - FROM DEPRECIACAO D - INNER JOIN DEPRECIACAOITEM DI ON (DI.DEPRECIACAO_ID = D.ID) - ORDER BY D.MESREFERENCIA - LOOP - - raise notice 'mesano, %', to_char(r.datareferencia, 'YYYYMM'); - - -- RECUPERA A PROXIMA SEQUENCE - SELECT NEXTVAL('hibernate_sequence') into v_ccmId; - - INSERT INTO public.contacontabilmovimento - ( - id, - datacriacao, - dataedicao, - version, - datareferencia, - valor, - contacontabil_id, - tipomovimentocontacontabil_id, - dominioclassereferencia_id, - idclassereferencia - )VALUES - ( - v_ccmId, - LOCALTIMESTAMP, - LOCALTIMESTAMP, - 0, - r.datareferencia, - 0, - r.contacontabil_id, - v_movent, - v_classeRefDepre, - R.DEPRECIACAO_ID - ); - - INSERT INTO public.contacontabilmovpatrimonio - ( - id, - reavaliacao, - valordepreciacao, - valorreavaliacao, - valorreducao, - bempatrimonial_id, - transferencia_id - ) - VALUES - ( - v_ccmId, - FALSE, - r.valor, - 0, - 0, - r.BEMPATRIMONIAL_ID, - NULL - ); - END LOOP; - END$$; - -- 20 minutos maquina Ju --- #FIM :: MIGRACAO DE MOVIMENTOS DE DEPRECIACAO >> CONTACONTABILMOVIMENTO E CONTACONTABILMOVPATRIMONIO - - -UPDATE BEMPATRIMONIAL -SET DOMINIOSTATUSDEPRECIACAO_ID = NULL; - --- #INI :: ATUALIZA STATUS DEPRECIACAO DOS BENS BAIXADOS QUE NEM CHEGARAM A SER DEPRECIADOS >> BEMPATRIMONIAL - DO $$ - DECLARE - rBEM RECORD; - v_tipoStatusDepreciacaoNaoDepreExAnt int; - v_statusBemBaixado int; - BEGIN - SELECT ID FROM PUBLIC.DOMINIO WHERE CHAVE='tipoStatusDepreciacao' AND CODIGO=5 INTO v_tipoStatusDepreciacaoNaoDepreExAnt; - SELECT ID FROM PUBLIC.DOMINIO WHERE CHAVE='tipoStatusBem' AND CODIGO=2 INTO v_statusBemBaixado; - -- RECUPERA OS BENS PATRIMONIAIS QUE ESTAO NA TABELA DE DEPRECIACAO - FOR rBEM IN - SELECT ID FROM PUBLIC.BEMPATRIMONIAL - WHERE ID IN ( SELECT ID FROM PUBLIC.BEMPATRIMONIAL - EXCEPT - SELECT BEMPATRIMONIAL_ID FROM DEPRECIACAOITEM - ) - AND DOMINIOSTATUS_ID=v_statusBemBaixado - LOOP - UPDATE PUBLIC.BEMPATRIMONIAL - SET dominiostatusdepreciacao_id = v_tipoStatusDepreciacaoNaoDepreExAnt - WHERE ID = rBEM.id; - END LOOP; - END$$; --- #FIM :: ATUALIZA STATUS DEPRECIACAO DOS BENS BAIXADOS QUE NEM CHEGARAM A SER DEPRECIADOS >> BEMPATRIMONIAL - - --- #INI :: ATUALIZA STATUS DEPRECIACAO DOS BENS BAIXADOS QUE ATINGIRAM O VALOR RESIDUAL >> BEMPATRIMONIAL - DO $$ - DECLARE - rBEM RECORD; - v_tipoStatusDepreciacaoFinalizada int; - v_statusBemBaixado int; - BEGIN - SELECT ID FROM PUBLIC.DOMINIO WHERE CHAVE='tipoStatusDepreciacao' AND CODIGO=3 INTO v_tipoStatusDepreciacaoFinalizada; - SELECT ID FROM PUBLIC.DOMINIO WHERE CHAVE='tipoStatusBem' AND CODIGO=2 INTO v_statusBemBaixado; - -- RECUPERA OS BENS PATRIMONIAIS BAIXADOS QUE ESTAO NA TABELA DE DEPRECIACAO E JA ATINGIRAM O VALOR RESIDUAL - FOR rBEM IN - SELECT DISTINCT BEMPATRIMONIAL_ID AS ID - FROM DEPRECIACAOITEM D - INNER JOIN BEMPATRIMONIAL B ON (B.ID = D.BEMPATRIMONIAL_ID) - WHERE DOMINIOSTATUS_ID = v_statusBemBaixado - AND round((B.VALORBRUTOATUAL*B.PERCENTUALNAODEPRECIAVEL), 2) = round(B.VALORLIQUIDO, 2) - LOOP - UPDATE PUBLIC.BEMPATRIMONIAL - SET dominiostatusdepreciacao_id = v_tipoStatusDepreciacaoFinalizada - WHERE ID = rBEM.id; - END LOOP; - END$$; --- #FIM :: ATUALIZA STATUS DEPRECIACAO DOS BENS BAIXADOS QUE ATINGIRAM O VALOR RESIDUAL >> BEMPATRIMONIAL - - --- #INI :: ATUALIZA STATUS DEPRECIACAO DOS BENS BAIXADOS QUE NAO ATINGIRAM O VALOR RESIDUAL >> BEMPATRIMONIAL - DO $$ - DECLARE - rBEM RECORD; - v_tipoStatusDepreciavel int; - v_statusBemBaixado int; - BEGIN - - SELECT ID FROM PUBLIC.DOMINIO WHERE CHAVE='tipoStatusDepreciacao' AND CODIGO=1 INTO v_tipoStatusDepreciavel; - SELECT ID FROM PUBLIC.DOMINIO WHERE CHAVE='tipoStatusBem' AND CODIGO=2 INTO v_statusBemBaixado; - - -- RECUPERA OS BENS PATRIMONIAIS BAIXADOS QUE ESTAO NA TABELA DE DEPRECIACAO E NAO ATINGIRAM O VALOR RESIDUAL - FOR rBEM IN - SELECT DISTINCT BEMPATRIMONIAL_ID AS ID - FROM PUBLIC.DEPRECIACAOITEM D - INNER JOIN BEMPATRIMONIAL B ON (B.ID = D.BEMPATRIMONIAL_ID) - WHERE DOMINIOSTATUS_ID = v_statusBemBaixado - AND round((B.VALORBRUTOATUAL*B.PERCENTUALNAODEPRECIAVEL), 2) <> round(B.VALORLIQUIDO, 2) - AND B.DOMINIOSTATUSDEPRECIACAO_ID IS NULL - LOOP - UPDATE PUBLIC.BEMPATRIMONIAL - SET dominiostatusdepreciacao_id = v_tipoStatusDepreciavel - WHERE ID = rBEM.id; - END LOOP; - END$$; --- #FIM :: ATUALIZA STATUS DEPRECIACAO DOS BENS BAIXADOS QUE NAO ATINGIRAM O VALOR RESIDUAL >> BEMPATRIMONIAL - - --- #INI :: ATUALIZA STATUS DEPRECIACAO DOS BENS QUE ESTAO NO ALMOXARIFADO >> BEMPATRIMONIAL - DO $$ - DECLARE - rBEM RECORD; - v_tipoStatusAlmox int; - BEGIN - SELECT ID FROM PUBLIC.DOMINIO WHERE CHAVE='tipoStatusDepreciacao' AND CODIGO=2 into v_tipoStatusAlmox; - -- RECUPERA OS BENS PATRIMONIAIS QUE ESTAO NO ALMOXARIFADO - FOR rBEM IN - SELECT ID - FROM BEMPATRIMONIAL - WHERE UNIDADEATUAL_ID IN (SELECT E.ID - FROM ESTRUTURAORGANIZACIONAL E - INNER JOIN estruturaorganizacionalpatrim EP ON (EP.ESTRUTURAORGANIZACIONAL_ID = E.ID) - WHERE EP.ISALMOXARIFADO IS TRUE) - LOOP - UPDATE PUBLIC.BEMPATRIMONIAL - SET dominiostatusdepreciacao_id = v_tipoStatusAlmox - WHERE ID = rBEM.id; - END LOOP; - END$$; --- #FIM :: ATUALIZA STATUS DEPRECIACAO DOS BENS QUE ESTAO NO ALMOXARIFADO >> BEMPATRIMONIAL - - --- ################ ################ --- ################ ))))) VERIFICAR O ANOMES ATUAL DA REFERENCIA DO CLIENTE ((((( ################ --- ################ ################ --- #INI :: ATUALIZA STATUS DEPRECIACAO DOS BENS QUE TEM DATACONTABIL NESSE MES E NAO ESTAO NO ALMOXARIFADO >> BEMPATRIMONIAL - DO $$ - DECLARE - rBEM RECORD; - v_tipoStatusPronto int; - BEGIN - SELECT ID FROM PUBLIC.DOMINIO WHERE CHAVE='tipoStatusDepreciacao' AND CODIGO=6 into v_tipoStatusPronto; - -- RECUPERA OS BENS PATRIMONIAIS QUE TEM DATACONTABIL NESSE MES E NAO ESTAO NO ALMOXARIFADO - FOR rBEM IN - SELECT ID - FROM BEMPATRIMONIAL - WHERE TO_CHAR(DATACONTABIL, 'YYYYMM') = -- << ALTERAR PARA ANOMES CONFORME CLIENTE >> - AND UNIDADEATUAL_ID NOT IN (SELECT E.ID - FROM ESTRUTURAORGANIZACIONAL E - INNER JOIN estruturaorganizacionalpatrim EP ON (EP.ESTRUTURAORGANIZACIONAL_ID = E.ID) - WHERE EP.ISALMOXARIFADO IS TRUE) - LOOP - UPDATE PUBLIC.BEMPATRIMONIAL - SET DOMINIOSTATUSDEPRECIACAO_ID = v_tipoStatusPronto - WHERE ID = rBEM.id; - END LOOP; - END$$; --- #FIM :: ATUALIZA STATUS DEPRECIACAO DOS BENS QUE TEM DATACONTABIL NESSE MES E NAO ESTAO NO ALMOXARIFADO >> BEMPATRIMONIAL - - --- ################ ################ --- ################ ))))) VERIFICAR A DATACONTABIL INICIAL PARA DEPRECIACAO ((((( ################ --- ################ ################ --- #INI :: ATUALIZA STATUS DEPRECIACAO DOS BENS QUE TEM DATACONTABIL NESSE MES E NAO ESTAO NO ALMOXARIFADO >> BEMPATRIMONIAL - DO $$ - DECLARE - rBEM RECORD; - v_tipoStatusNaoDepreciavel int; - BEGIN - SELECT ID FROM PUBLIC.DOMINIO WHERE CHAVE='tipoStatusDepreciacao' AND CODIGO=4 into v_tipoStatusNaoDepreciavel; - -- RECUPERA OS BENS PATRIMONIAIS QUE AINDA NAO POSSUEM STATUSDEPRECIACAO E QUE TEM DATA CONTABIL INFERIOR A 2010 E NAO SOFRERAM REAVALIACAO - FOR rBEM IN - SELECT ID - FROM PUBLIC.BEMPATRIMONIAL - WHERE DATACONTABIL < TO_TIMESTAMP('20100101', 'YYYYMMDD') -- << ALTERAR PARA ANOMES CONFORME CLIENTE >> - AND ID NOT IN (SELECT DISTINCT BEMPATRIMONIAL_ID - FROM BEMPATRIMONIALALTERACAO - WHERE MOTIVOALTERACAO_ID = (SELECT ID FROM PUBLIC.DOMINIO WHERE CHAVE='tipoMotivoAlteracaoBem' AND CODIGO=3)) - AND DOMINIOSTATUSDEPRECIACAO_ID IS NULL - LOOP - UPDATE PUBLIC.BEMPATRIMONIAL - SET DOMINIOSTATUSDEPRECIACAO_ID = v_tipoStatusNaoDepreciavel - WHERE ID = rBEM.id; - END LOOP; - END$$; --- #FIM :: ATUALIZA STATUS DEPRECIACAO DOS BENS QUE TEM DATACONTABIL NESSE MES E NAO ESTAO NO ALMOXARIFADO >> BEMPATRIMONIAL - - --- #INI :: ATUALIZA STATUS DEPRECIACAO DOS BENS QUE JA ATINGIRAM O VALOR RESIDUAL >> BEMPATRIMONIAL - DO $$ - DECLARE - rBEM RECORD; - v_tipoStatusDepreciacaoFinalizada int; - BEGIN - SELECT ID FROM PUBLIC.DOMINIO WHERE CHAVE='tipoStatusDepreciacao' AND CODIGO=3 into v_tipoStatusDepreciacaoFinalizada; - -- RECUPERA OS BENS PATRIMONIAIS QUE AINDA NAO POSSUEM STATUSDEPRECIACAO E JA ATINGIRAM O VALOR RESIDUAL - FOR rBEM IN - SELECT DISTINCT BEMPATRIMONIAL_ID AS ID - FROM PUBLIC.DEPRECIACAOITEM D - INNER JOIN BEMPATRIMONIAL B ON (B.ID = D.BEMPATRIMONIAL_ID) WHERE round((B.VALORBRUTOATUAL*B.PERCENTUALNAODEPRECIAVEL), 2) = round(B.VALORLIQUIDO, 2) AND B.DOMINIOSTATUSDEPRECIACAO_ID IS NULL - LOOP - UPDATE PUBLIC.BEMPATRIMONIAL - SET DOMINIOSTATUSDEPRECIACAO_ID = v_tipoStatusDepreciacaoFinalizada - WHERE ID = rBEM.id; - END LOOP; - END$$; --- #FIM :: ATUALIZA STATUS DEPRECIACAO DOS BENS QUE JA ATINGIRAM O VALOR RESIDUAL >> BEMPATRIMONIAL - - --- #INI :: ATUALIZA STATUS DEPRECIACAO DOS BENS QUE NAO SE ADEQUARAM NAS CONDICOES ANTERIORES (SAO TODOS DEPRECIAVEIS) >> BEMPATRIMONIAL - BEGIN; - UPDATE public.bempatrimonial - SET dominiostatusdepreciacao_id = (SELECT ID FROM PUBLIC.DOMINIO WHERE CHAVE='tipoStatusDepreciacao' AND CODIGO=1) - WHERE dominiostatusdepreciacao_id is null; - COMMIT; - - BEGIN; - UPDATE public.bempatrimonial - SET naodepreciar = true - WHERE dominiostatusdepreciacao_id = (SELECT ID FROM PUBLIC.DOMINIO WHERE CHAVE='tipoStatusDepreciacao' AND CODIGO=4); - COMMIT; --- #FIM :: ATUALIZA STATUS DEPRECIACAO DOS BENS QUE NAO SE ADEQUARAM NAS CONDICOES ANTERIORES (SAO TODOS DEPRECIAVEIS) >> BEMPATRIMONIAL - BEGIN; -- #INI :: CARGA EM CONTACONTABILSALDO :: ESPECIFICO MPOG >> ATE JAN-2016 INSERT INTO contacontabilsaldo VALUES (NEXTVAL('hibernate_sequence'), NULL, NULL, '2016-03-21 18:04:44.135', '2016-03-21 18:04:44.135', 0, '2009-12-01 00:00:00', 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 1204259.68, NULL, NULL, NULL, 1); INSERT INTO contacontabilsaldo VALUES (NEXTVAL('hibernate_sequence'), NULL, NULL, '2016-03-21 18:04:44.135', '2016-03-21 18:04:44.135', 0, '2009-12-01 00:00:00', 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 1769932.33, NULL, NULL, NULL, 2); @@ -3233,6 +2944,248 @@ COMMIT; -- #FIM :: ZERA OS SALDOS DAS CONTAS COM VALOR NULO >> CONTACONTABILSALD --9,23 min maquina Ju para todos os materiais -- #FIM :: GERA SALDOS DE MATERIAIS EM ESTOQUE >> MATERIALESTOQUESALDO +-- #INI :: GERACAO DE CONFIGURACAO DE CONTAS PARA O RMA/RMB >> CONTACONTABILCONFIGREFERENCIA + /* + SCRIPT QUE GERA A REFERENCIA DE CONTAS + ====================================== + 1. Definir v_dtaini_ref e v_dtafin_ref com o período inicial que você quer gerar a referência + 2. Definir v_anomes_ant com o mês de referência anterior ao saldo que você quer gerar + (os saldos já devem estar gerados para esse mês) + 3. Apos o insert definir onde você quer quer a função pare de gerar a referência, + ou seja o ultimo mes de referencia fechado no banco + */ +-- #INI :: GERACAO DE CONFIGURACAO DE CONTAS PARA O RMA/RMB >> CONTACONTABILCONFIGREFERENCIA + /* + SCRIPT QUE GERA A REFERENCIA DE CONTAS + ====================================== + 1. Definir v_dtaini_ref e v_dtafin_ref com o período inicial que você quer gerar a referência + 2. Definir v_anomes_ant com o mês de referência anterior ao saldo que você quer gerar + (os saldos já devem estar gerados para esse mês) + 3. Apos o insert definir onde você quer quer a função pare de gerar a referência, + ou seja o ultimo mes de referencia fechado no banco + */ + DO $$ + DECLARE + r RECORD; + v_anomes_ant timestamp without time zone; + v_dtaini_ref timestamp without time zone; + v_dtafin_ref timestamp without time zone; + v_anomes_fin timestamp without time zone; + v_rma boolean; + v_rmb boolean; + BEGIN + + v_anomes_fin := TO_TIMESTAMP('20160201','YYYYMMDD')::timestamp without time zone; + v_anomes_ant := TO_TIMESTAMP('20091201','YYYYMMDD')::timestamp without time zone; + v_dtaini_ref := TO_TIMESTAMP('20100101','YYYYMMDD')::timestamp without time zone; + v_dtafin_ref := v_dtaini_ref + interval '1 month' - interval '1 second'; + + LOOP + FOR r IN + SELECT C.ID, D.NOME FROM PUBLIC.CONTACONTABIL C + INNER JOIN PUBLIC.DOMINIO D ON (D.ID = DOMINIOTIPOMATERIAL_ID) + ORDER BY 1 + LOOP + RAISE NOTICE 'ANOMES, %d', to_char(v_dtaini_ref, 'YYYYMM'); + --> A PRINCIPIO NAO APARECE NEM NO RMA NEM NO RMB + v_rmb := FALSE; + v_rma := FALSE; + + --> VERIFICA SE A CONTA TEM MOVIMENTO + IF EXISTS (SELECT 'X' FROM CONTACONTABILMOVIMENTO M + WHERE M.DATAREFERENCIA BETWEEN v_dtaini_ref AND v_dtafin_ref + AND M.CONTACONTABIL_ID = r.ID) + THEN + v_rmb := (r.NOME='PERMANENTE'); + v_rma := (r.NOME='CONSUMO'); + END IF; + + --> OU SE A CONTA TEM SALDO + IF EXISTS (SELECT 'X' FROM CONTACONTABILSALDO S + WHERE S.DATAREFERENCIA BETWEEN v_dtaini_ref AND v_dtafin_ref + AND S.CONTACONTABIL_ID = r.ID AND S.VALOR > 0.0) + THEN + v_rmb := (r.NOME='PERMANENTE'); + v_rma := (r.NOME='CONSUMO'); + END IF; + + --> OU SE A CONTA JA APARECEU ALGUMA VEZ NO RELATORIO (RMA) + IF EXISTS (SELECT 'X' FROM CONTACONTABILMOVIMENTO M + WHERE M.DATAREFERENCIA <= v_dtafin_ref + AND M.CONTACONTABIL_ID = r.ID ) + THEN + v_rma := (r.NOME='CONSUMO'); + END IF; + + --> INSERE UM REGISTRO EM CONFIGURACAO PARA CADA CONTA / MESREFERENCIA + INSERT INTO public.contacontabilconfigreferencia + ( ID, datacriacao, dataedicao, version, apresentarma, + apresentarmb, apresentaRelatorioDepreciacao, mesreferencia, contacontabil_id ) + VALUES + ( NEXTVAL('hibernate_sequence'), LOCALTIMESTAMP, LOCALTIMESTAMP, 0, v_rma, + v_rmb, v_rmb, v_dtaini_ref, r.ID ); + + END LOOP; + + IF DATE_TRUNC('month',v_dtaini_ref) = DATE_TRUNC('month', v_anomes_fin) THEN + return; + END IF; + + v_dtaini_ref := v_dtaini_ref + interval '1 month'; + v_dtafin_ref := v_dtaini_ref + interval '1 month' - interval '1 second'; + + END LOOP; + END$$; +-- #FIM :: GERACAO DE CONFIGURACAO DE CONTAS PARA O RMA/RMB >> CONTACONTABILCONFIGREFERENCIA + + +BEGIN; -- #INI :: AJUSTA CONFIGURACAO DE CONTAS PARA ULTIMO MESREFERENCIA >> CONTACONTABILCONFIGREFERENCIA + INSERT INTO public.contacontabilconfigreferencia + ( id, datacriacao, dataedicao, version, apresentarma, + apresentarmb, apresentarelatoriodepreciacao, mesreferencia, contacontabil_id ) + SELECT NEXTVAL('hibernate_sequence'), localtimestamp, localtimestamp, 0, r.apresentarma, r.apresentarmb, + r.apresentarmb, TO_TIMESTAMP('20160201','YYYYMMDD')::timestamp without time zone, r.contacontabil_id + FROM CONTACONTABILCONFIGREFERENCIA R + WHERE R.MESREFERENCIA = (SELECT MAX(MESREFERENCIA) FROM CONTACONTABILCONFIGREFERENCIA); +COMMIT; -- #FIM :: AJUSTA CONFIGURACAO DE CONTAS PARA ULTIMO MESREFERENCIA >> CONTACONTABILCONFIGREFERENCIA + +BEGIN; -- #INI :: GARANTINDO QUE AS CONTAS SEM SALDO ANTERIOR, TENHAM UM SALDO ZERADO + INSERT INTO public.contacontabilsaldo + ( id, datacriacao, dataedicao, version + , datareferencia, valor, contacontabil_id, depreciacaoacumulada + , depreciacaomensal, reavaliacaoperiodo, reavaliacaoacumulada, reducaoperiodo, reducaoacumulada + ) + SELECT NEXTVAL('hibernate_sequence'), LOCALTIMESTAMP, LOCALTIMESTAMP, 0 + , TO_DATE('20160201','YYYYMMDD'), 0, ID, 0 + , 0, 0, 0, 0, 0 + FROM PUBLIC.CONTACONTABIL + WHERE CONTACONTABILSALDOANTERIOR_ID IS NULL; + + -- Referenciar um conta contabil ha um registro do conta contabil + UPDATE PUBLIC.CONTACONTABIL C + SET CONTACONTABILSALDOANTERIOR_ID = + ( SELECT S.ID FROM PUBLIC.CONTACONTABILSALDO S + WHERE S.CONTACONTABIL_ID = C.ID + ORDER BY DATAREFERENCIA DESC LIMIT 1); +COMMIT; -- #INI :: GARANTINDO QUE AS CONTAS SEM SALDO ANTERIOR, TENHAM UM SALDO ZERADO + +BEGIN; --CRIO NOVAMENTE AS CONSTRAINTS DAS TABELAS DE MOVIMENTO + ALTER TABLE contacontabilmovimento + ADD CONSTRAINT fk_tltd08eva1hdwc3h7jlwjws4j FOREIGN KEY (editor_id) + REFERENCES seguranca_usuario (id) MATCH SIMPLE + ON UPDATE NO ACTION ON DELETE NO ACTION; + + ALTER TABLE contacontabilmovimento + ADD CONSTRAINT fk_ixxyf53r9ft0t2tjgttwhq12r FOREIGN KEY (entrada_id) + REFERENCES entrada (id) MATCH SIMPLE + ON UPDATE NO ACTION ON DELETE NO ACTION; + + ALTER TABLE contacontabilmovimento + ADD CONSTRAINT fk_dpuxwhj1qoinbsbdem8hvey5l FOREIGN KEY (inativador_id) + REFERENCES seguranca_usuario (id) MATCH SIMPLE + ON UPDATE NO ACTION ON DELETE NO ACTION; + + ALTER TABLE contacontabilmovimento + ADD CONSTRAINT fk_c2crmvotnfof8iv19h96qdn1h FOREIGN KEY (dominioclassereferencia_id) + REFERENCES dominio (id) MATCH SIMPLE + ON UPDATE NO ACTION ON DELETE NO ACTION; + + ALTER TABLE contacontabilmovimento + ADD CONSTRAINT fk_blt6cqdh6lonms89du3m5wug8 FOREIGN KEY (tipomovimentocontacontabil_id) + REFERENCES dominio (id) MATCH SIMPLE + ON UPDATE NO ACTION ON DELETE NO ACTION; + + ALTER TABLE contacontabilmovimento + ADD CONSTRAINT fk_8q85bxfuhk0f536ndy3y876xl FOREIGN KEY (contacontabil_id) + REFERENCES contacontabil (id) MATCH SIMPLE + ON UPDATE NO ACTION ON DELETE NO ACTION; + + ALTER TABLE contacontabilmovimento + ADD CONSTRAINT fk_72shgmt8caaldg2m0kw2cvbhj FOREIGN KEY (autor_id) + REFERENCES seguranca_usuario (id) MATCH SIMPLE + ON UPDATE NO ACTION ON DELETE NO ACTION; + + ALTER TABLE contacontabilmovimento + ADD CONSTRAINT fk_114dqtx1g4ja80nkdqrw0ej0t FOREIGN KEY (transferenciaconta_id) + REFERENCES transferenciacontacontabil (id) MATCH SIMPLE + ON UPDATE NO ACTION ON DELETE NO ACTION; + + ALTER TABLE contacontabilmovimento + ADD CONSTRAINT fk_2yfuukmqt1uyv7r0c9dc20xiw FOREIGN KEY (baixa_id) + REFERENCES baixa (id) MATCH SIMPLE + ON UPDATE NO ACTION ON DELETE NO ACTION; + + ALTER TABLE contacontabilmovpatrimonio + ADD CONSTRAINT fk_qu9isdu7h3l1dabu9n9l2klab FOREIGN KEY (transferencia_id) + REFERENCES transferencia (id) MATCH SIMPLE + ON UPDATE NO ACTION ON DELETE NO ACTION; + + ALTER TABLE contacontabilmovpatrimonio + ADD CONSTRAINT fk_1rrslp97ar7119a4fjw9h8xq7 FOREIGN KEY (bempatrimonial_id) + REFERENCES bempatrimonial (id) MATCH SIMPLE + ON UPDATE NO ACTION ON DELETE NO ACTION; + + ALTER TABLE contacontabilmovpatrimonio + ADD CONSTRAINT fk_1uaukjmyd9srei1s6l3sueu9r FOREIGN KEY (id) + REFERENCES contacontabilmovimento (id) MATCH SIMPLE + ON UPDATE NO ACTION ON DELETE NO ACTION; +COMMIT; --CRIO NOVAMENTE AS CONSTRAINTS DAS TABELAS DE MOVIMENTO + + +BEGIN; --CRIO AS CONSTRAINTS DE DEPRECIACAOITEM NOVAMENTE + ALTER TABLE depreciacao + ADD CONSTRAINT fk_7ir0d4f00iv0d5k2tqnado80t FOREIGN KEY (organizacao_id) + REFERENCES organizacao (id) MATCH SIMPLE + ON UPDATE NO ACTION ON DELETE NO ACTION; + + ALTER TABLE depreciacao + ADD CONSTRAINT fk_7qj52csr4ussngholioxwf8ny FOREIGN KEY (autor_id) + REFERENCES seguranca_usuario (id) MATCH SIMPLE + ON UPDATE NO ACTION ON DELETE NO ACTION; + + ALTER TABLE depreciacao + ADD CONSTRAINT fk_ax8wlx3nuo622jni9tlkf05t4 FOREIGN KEY (editor_id) + REFERENCES seguranca_usuario (id) MATCH SIMPLE + ON UPDATE NO ACTION ON DELETE NO ACTION; + + ALTER TABLE depreciacao + ADD CONSTRAINT fk_hxiqvyjv7su2fsn0b3hcmuirx FOREIGN KEY (inativador_id) + REFERENCES seguranca_usuario (id) MATCH SIMPLE + ON UPDATE NO ACTION ON DELETE NO ACTION; + + ALTER TABLE depreciacaoitem + ADD CONSTRAINT fk_flvqkobbb468h7m7twqpg27wm FOREIGN KEY (bempatrimonial_id) + REFERENCES bempatrimonial (id) MATCH SIMPLE + ON UPDATE NO ACTION ON DELETE NO ACTION; + + ALTER TABLE depreciacaoitem + ADD CONSTRAINT fk_e1qmf052vbg4kbym0c2rl0t9 FOREIGN KEY (autor_id) + REFERENCES seguranca_usuario (id) MATCH SIMPLE + ON UPDATE NO ACTION ON DELETE NO ACTION; + + ALTER TABLE depreciacaoitem + ADD CONSTRAINT fk_6dt6ljs2kog9j0hrugj4jp1cq FOREIGN KEY (editor_id) + REFERENCES seguranca_usuario (id) MATCH SIMPLE + ON UPDATE NO ACTION ON DELETE NO ACTION; + + ALTER TABLE depreciacaoitem + ADD CONSTRAINT fk_5dd5ba2uf8vd5im0j6wy73xue FOREIGN KEY (depreciacao_id) + REFERENCES depreciacao (id) MATCH SIMPLE + ON UPDATE NO ACTION ON DELETE NO ACTION; + + ALTER TABLE depreciacaoitem + ADD CONSTRAINT fk_2lv1atngy0npqsjbxvg2j0nd8 FOREIGN KEY (contacontabil_id) + REFERENCES contacontabil (id) MATCH SIMPLE + ON UPDATE NO ACTION ON DELETE NO ACTION; + + ALTER TABLE depreciacaoitem + ADD CONSTRAINT fk_1fssswosq1k83ghlnq8efennr FOREIGN KEY (inativador_id) + REFERENCES seguranca_usuario (id) MATCH SIMPLE + ON UPDATE NO ACTION ON DELETE NO ACTION; +COMMIT; --CRIO AS CONSTRAINTS DE DEPRECIACAOITEM NOVAMENTE + + + --===========================================================================-- -- ##FIM :: CARGAS E ATUALIZACOES DE SALDOS CONTABEIS/ESTOQUE/MOVIMENTOS -- diff --git a/cit-adm-materiais-api/src/main/resources/scripts-bd/Migracao_MPOG/99-AjustesFinais.sql b/cit-adm-materiais-api/src/main/resources/scripts-bd/Migracao_MPOG/99-AjustesFinais.sql index bde6a02..7a9b2a4 100644 --- a/cit-adm-materiais-api/src/main/resources/scripts-bd/Migracao_MPOG/99-AjustesFinais.sql +++ b/cit-adm-materiais-api/src/main/resources/scripts-bd/Migracao_MPOG/99-AjustesFinais.sql @@ -10,110 +10,7 @@ -- #FIM :: AJUSTES TABELA BEMPATRIMONIAL >> COLUNA CODIGO --- #INI :: GERACAO DE CONFIGURACAO DE CONTAS PARA O RMA/RMB >> CONTACONTABILCONFIGREFERENCIA - /* - SCRIPT QUE GERA A REFERENCIA DE CONTAS - ====================================== - 1. Definir v_dtaini_ref e v_dtafin_ref com o período inicial que você quer gerar a referência - 2. Definir v_anomes_ant com o mês de referência anterior ao saldo que você quer gerar - (os saldos já devem estar gerados para esse mês) - 3. Apos o insert definir onde você quer quer a função pare de gerar a referência, - ou seja o ultimo mes de referencia fechado no banco - */ --- #INI :: GERACAO DE CONFIGURACAO DE CONTAS PARA O RMA/RMB >> CONTACONTABILCONFIGREFERENCIA - /* - SCRIPT QUE GERA A REFERENCIA DE CONTAS - ====================================== - 1. Definir v_dtaini_ref e v_dtafin_ref com o período inicial que você quer gerar a referência - 2. Definir v_anomes_ant com o mês de referência anterior ao saldo que você quer gerar - (os saldos já devem estar gerados para esse mês) - 3. Apos o insert definir onde você quer quer a função pare de gerar a referência, - ou seja o ultimo mes de referencia fechado no banco - */ - DO $$ - DECLARE - r RECORD; - v_anomes_ant timestamp without time zone; - v_dtaini_ref timestamp without time zone; - v_dtafin_ref timestamp without time zone; - v_anomes_fin timestamp without time zone; - v_rma boolean; - v_rmb boolean; - BEGIN - - v_anomes_fin := TO_TIMESTAMP('20160201','YYYYMMDD')::timestamp without time zone; - v_anomes_ant := TO_TIMESTAMP('20091201','YYYYMMDD')::timestamp without time zone; - v_dtaini_ref := TO_TIMESTAMP('20100101','YYYYMMDD')::timestamp without time zone; - v_dtafin_ref := v_dtaini_ref + interval '1 month' - interval '1 second'; - - LOOP - FOR r IN - SELECT C.ID, D.NOME FROM PUBLIC.CONTACONTABIL C - INNER JOIN PUBLIC.DOMINIO D ON (D.ID = DOMINIOTIPOMATERIAL_ID) - ORDER BY 1 - LOOP - RAISE NOTICE 'ANOMES, %d', to_char(v_dtaini_ref, 'YYYYMM'); - --> A PRINCIPIO NAO APARECE NEM NO RMA NEM NO RMB - v_rmb := FALSE; - v_rma := FALSE; - - --> VERIFICA SE A CONTA TEM MOVIMENTO - IF EXISTS (SELECT 'X' FROM CONTACONTABILMOVIMENTO M - WHERE M.DATAREFERENCIA BETWEEN v_dtaini_ref AND v_dtafin_ref - AND M.CONTACONTABIL_ID = r.ID) - THEN - v_rmb := (r.NOME='PERMANENTE'); - v_rma := (r.NOME='CONSUMO'); - END IF; - - --> OU SE A CONTA TEM SALDO - IF EXISTS (SELECT 'X' FROM CONTACONTABILSALDO S - WHERE S.DATAREFERENCIA BETWEEN v_dtaini_ref AND v_dtafin_ref - AND S.CONTACONTABIL_ID = r.ID AND S.VALOR > 0.0) - THEN - v_rmb := (r.NOME='PERMANENTE'); - v_rma := (r.NOME='CONSUMO'); - END IF; - - --> OU SE A CONTA JA APARECEU ALGUMA VEZ NO RELATORIO (RMA) - IF EXISTS (SELECT 'X' FROM CONTACONTABILMOVIMENTO M - WHERE M.DATAREFERENCIA <= v_dtafin_ref - AND M.CONTACONTABIL_ID = r.ID ) - THEN - v_rma := (r.NOME='CONSUMO'); - END IF; - --> INSERE UM REGISTRO EM CONFIGURACAO PARA CADA CONTA / MESREFERENCIA - INSERT INTO public.contacontabilconfigreferencia - ( ID, datacriacao, dataedicao, version, apresentarma, - apresentarmb, apresentaRelatorioDepreciacao, mesreferencia, contacontabil_id ) - VALUES - ( NEXTVAL('hibernate_sequence'), LOCALTIMESTAMP, LOCALTIMESTAMP, 0, v_rma, - v_rmb, v_rmb, v_dtaini_ref, r.ID ); - - END LOOP; - - IF DATE_TRUNC('month',v_dtaini_ref) = DATE_TRUNC('month', v_anomes_fin) THEN - return; - END IF; - - v_dtaini_ref := v_dtaini_ref + interval '1 month'; - v_dtafin_ref := v_dtaini_ref + interval '1 month' - interval '1 second'; - - END LOOP; - END$$; --- #FIM :: GERACAO DE CONFIGURACAO DE CONTAS PARA O RMA/RMB >> CONTACONTABILCONFIGREFERENCIA - - -BEGIN; -- #INI :: AJUSTA CONFIGURACAO DE CONTAS PARA ULTIMO MESREFERENCIA >> CONTACONTABILCONFIGREFERENCIA - INSERT INTO public.contacontabilconfigreferencia - ( id, datacriacao, dataedicao, version, apresentarma, - apresentarmb, apresentarelatoriodepreciacao, mesreferencia, contacontabil_id ) - SELECT NEXTVAL('hibernate_sequence'), localtimestamp, localtimestamp, 0, r.apresentarma, r.apresentarmb, - r.apresentarmb, TO_TIMESTAMP('20160201','YYYYMMDD')::timestamp without time zone, r.contacontabil_id - FROM CONTACONTABILCONFIGREFERENCIA R - WHERE R.MESREFERENCIA = (SELECT MAX(MESREFERENCIA) FROM CONTACONTABILCONFIGREFERENCIA); -COMMIT; -- #FIM :: AJUSTA CONFIGURACAO DE CONTAS PARA ULTIMO MESREFERENCIA >> CONTACONTABILCONFIGREFERENCIA BEGIN; -- #INI :: DEFINICAO DAS CARACTERISTICAS FILTRAVEIS PARA O MPOG (FUTURAMENTE O USUARIO PODERA ESCOLHER MAIS CARACTERISTICAS NO SOFTWARE) @@ -201,27 +98,6 @@ COMMIT; -- #FIM :: BLOQUEIO DE ALGUNS DOMINIOS PEDIDO PELO MPOG ** JULIANA END$$; -- #FIM :: AJUSTES TIPOSTATUSBAIXAESTORNO >> BAIXAALMOXARIFADO - -BEGIN; -- #INI :: GARANTINDO QUE AS CONTAS SEM SALDO ANTERIOR, TENHAM UM SALDO ZERADO - INSERT INTO public.contacontabilsaldo - ( id, datacriacao, dataedicao, version - , datareferencia, valor, contacontabil_id, depreciacaoacumulada - , depreciacaomensal, reavaliacaoperiodo, reavaliacaoacumulada, reducaoperiodo, reducaoacumulada - ) - SELECT NEXTVAL('hibernate_sequence'), LOCALTIMESTAMP, LOCALTIMESTAMP, 0 - , TO_DATE('20160201','YYYYMMDD'), 0, ID, 0 - , 0, 0, 0, 0, 0 - FROM PUBLIC.CONTACONTABIL - WHERE CONTACONTABILSALDOANTERIOR_ID IS NULL; - - -- Referenciar um conta contabil ha um registro do conta contabil - UPDATE PUBLIC.CONTACONTABIL C - SET CONTACONTABILSALDOANTERIOR_ID = - ( SELECT S.ID FROM PUBLIC.CONTACONTABILSALDO S - WHERE S.CONTACONTABIL_ID = C.ID - ORDER BY DATAREFERENCIA DESC LIMIT 1); -COMMIT; -- #INI :: GARANTINDO QUE AS CONTAS SEM SALDO ANTERIOR, TENHAM UM SALDO ZERADO - BEGIN; --ARRUMANDO BEM PATRIMONIAL QUE ESTAVA COM STATUS BAIXADO NO ASI MAS NAO DEVERIA ESTAR update bempatrimonial -- libgit2 0.21.2