--------------------FOI NECESSARIO NESSE CASO EM ESPECIFICO EXECUTAR ESSES SCRIPTS ABAIXO PRA RESOLVER UM PROBLEMA DE INDICES,PK E DUPLICIDADE----------------------


SELECT GEN_ID(COD_TRANSACAO_ESTOQUE, 1) FROM RDB$DATABASE;



UPDATE TRANSACAO_ESTOQUE_ITEM SET COD_TRANSACAO_ESTOQUE = @RESULT_GEN WHERE COD_TRANSACAO_ESTOQUE in (SELECT COD_TRANSACAO_ESTOQUE FROM TRANSACAO_ESTOQUE WHERE ID_TRANSACAO_ESTOQUE = '{D4C4555B-97BE-4340-BF78-5E868148DEFA}')


UPDATE TRANSACAO_ESTOQUE SET COD_TRANSACAO_ESTOQUE = @RESULT_GEN  WHERE ID_TRANSACAO_ESTOQUE = '{D4C4555B-97BE-4340-BF78-5E868148DEFA}'


ALTER TABLE TRANSACAO_ESTOQUE

ADD CONSTRAINT PK_TRANSACAO_ESTOQUE

PRIMARY KEY (COD_TRANSACAO_ESTOQUE)

USING INDEX PK_TRANSACAO_ESTOQUE


------------------------------- EM SEGUIDA VAMOS EXECUTAR O SCRIPT PRA CRIAR AS PROCEDURES NO SCRIPT EXECUTIBVO, LOGO APOS VAMOS EXECUTAR ESSE PROCEDURE IR DEFININDO AS DATAS PARA EXCLUSAO DOS DADOS---------------------------------


SET TERM ^ ;


CREATE PROCEDURE PROC_DEL_MOVIMENTOS (

    P_DATA_INICIO DATE,

    P_DATA_FIM DATE

)

AS

BEGIN

    DELETE FROM MOVIMENTO_ITEM WHERE COD_MOVIMENTO IN (SELECT COD_MOVIMENTO FROM MOVIMENTO WHERE DT_LANCAMENTO BETWEEN :P_DATA_INICIO AND :P_DATA_FIM + CAST('23:59:59' AS TIME));

    DELETE FROM NFE_REFERENCIADA WHERE COD_MOVIMENTO IN (SELECT COD_MOVIMENTO FROM MOVIMENTO WHERE DT_LANCAMENTO BETWEEN :P_DATA_INICIO AND :P_DATA_FIM + CAST('23:59:59' AS TIME));

    DELETE FROM MOVIMENTO WHERE DT_LANCAMENTO BETWEEN :P_DATA_INICIO AND :P_DATA_FIM + CAST('23:59:59' AS TIME);


    SUSPEND;

END^


SET TERM ; ^


EXECUTE PROCEDURE PROC_DEL_MOVIMENTOS('2022-01-01', '2022-12-31');



------------------------------- EM SEGUIDA VAMOS EXECUTAR O SCRIPT PRA CRIAR AS PROCEDURES NO SCRIPT EXECUTIBVO, LOGO APOS VAMOS EXECUTAR ESSE PROCEDURE IR DEFININDO AS DATAS PARA EXCLUSAO DOS DADOS---------------------------------



SET TERM ^ ;


CREATE PROCEDURE PROC_DEL_TRANSACAO_ESTOQUE (

    P_DATA_INICIO DATE,

    P_DATA_FIM DATE

)

AS

BEGIN

    DELETE FROM TRANSACAO_ESTOQUE_ITEM WHERE COD_TRANSACAO_ESTOQUE IN (SELECT COD_TRANSACAO_ESTOQUE FROM TRANSACAO_ESTOQUE  WHERE DH_DIGITACAO BETWEEN :P_DATA_INICIO AND :P_DATA_FIM + CAST('23:59:59' AS TIME));

    DELETE FROM TRANSACAO_ESTOQUE WHERE DH_DIGITACAO BETWEEN :P_DATA_INICIO AND :P_DATA_FIM + CAST('23:59:59' AS TIME);

    SUSPEND;

END^


SET TERM ; ^


EXECUTE PROCEDURE PROC_DEL_TRANSACAO_ESTOQUE('2018-01-01', '2018-12-31');


--------------NESSE CASO FOI EXECUTADO DE 2018 A 2021 UM POR VEZ, APOS ISSO E NECESSARIO EXTRAIR OS DADOS E CRIAR UM BANCO NOVO--------------------


-EXTRACT METADATA

   EXTRACT BLOBS


-SCRIPT EXECUTIVO (SQL GERADO PELO EXTRACT METADATA)