SET TERM ^ ;

CREATE OR ALTER procedure SPU_COPIA_MODELO_FLUXO_NEW (
    ID1 integer,
    ID2 integer,
    DESCRICAO_1 varchar(50),
    USUARIO_ID integer)
returns (
    FLUXO_ID integer,
    COR_ID integer,
    TAMANHO integer,
    ORDEM integer,
    TEMPO numeric(15,4),
    TM numeric(15,4),
    TH numeric(15,4),
    PS numeric(15,4),
    TT numeric(15,4),
    QC numeric(15,4),
    TF numeric(15,4),
    CARGA char(1),
    IMPRIMIR integer)
as
declare variable OLD_FLUXO integer;
declare variable GRUPO_ID integer;
declare variable NEW_GRUPO_ID integer;
declare variable PECA integer;
BEGIN

    IF (:ID1 > 0 AND :ID2 > 0) THEN
    BEGIN

        DELETE FROM TBMODELO_FLUXO WHERE MODELO_ID = :ID2;
        DELETE FROM TBMODELO_FLUXO_PRODUCAO WHERE MODELO_ID = :ID2;

        :OLD_FLUXO = 0;
        :NEW_GRUPO_ID = 0;

        FOR
            SELECT
                T.FLUXO_ID,
                T.COR_ID,
                T.TAMANHO,
                T.ORDEM,
                T.TEMPO,
                T.TM,
                T.TH,
                T.PS,
                T.TT,
                T.QC,
                T.TF,
                T.GRUPO_FLUXO_ID,
                T.PECA,
                T.CARGA,
                T.IMPRIMIR

            FROM TBMODELO_FLUXO_PRODUCAO T
            WHERE T.MODELO_ID = :ID1

            ORDER BY T.GRUPO_FLUXO_ID

        INTO
            :FLUXO_ID,
            :COR_ID,
            :TAMANHO,
            :ORDEM,
            :TEMPO,
            :TM,
            :TH,
            :PS,
            :TT,
            :QC,
            :TF,
            :GRUPO_ID,
            :PECA,
            :CARGA,
            :IMPRIMIR

        DO
        BEGIN

            IF (:OLD_FLUXO <> :GRUPO_ID) THEN
            BEGIN
                :NEW_GRUPO_ID = GEN_ID(GTBMODELO_FLUXO_PRODUCAO_GRUPO, 1);
            END

            INSERT INTO TBMODELO_FLUXO_PRODUCAO (GRUPO_FLUXO_ID, MODELO_ID, FLUXO_ID, COR_ID, TAMANHO, ORDEM, TEMPO, TM, TH, PS, TT, QC, TF, PECA, CARGA, IMPRIMIR)
                VALUES(:NEW_GRUPO_ID, :ID2, :FLUXO_ID, :COR_ID, :TAMANHO, :ORDEM, :TEMPO, :TM, :TH, :PS, :TT, :QC, :TF, :PECA, :CARGA, :IMPRIMIR);

            :OLD_FLUXO = :GRUPO_ID;


        END
 
        INSERT INTO TBMODELO_FLUXO (MODELO_ID, OPERADOR, FLUXO_ID, ORDEM, CARGA, IMPRIMIR)
        SELECT
            :ID2,
            A.OPERADOR,
            A.FLUXO_ID,
            A.ORDEM,
            A.CARGA,
            A.IMPRIMIR
        FROM TBMODELO_FLUXO A
        WHERE A.MODELO_ID = :ID1;

    END
END
^

SET TERM ; ^

