SET TERM ^ ;

create or alter procedure SPU_COPIA_MODELO_FICHA2_NEW (
    ID1 integer,
    ID2 integer,
    ID3 integer,
    DESCRICAO_1 varchar(200) collate UTF8,
    USUARIO_ID integer)
returns (
    MODELO_CODIGO integer,
    CONSUMO_PRODUTO_CODIGO integer,
    TAM integer,
    CONSUMO_QUANTIDADE_T01 numeric(10,5),
    CONSUMO_QUANTIDADE_T02 numeric(10,5),
    CONSUMO_QUANTIDADE_T03 numeric(10,5),
    CONSUMO_QUANTIDADE_T04 numeric(10,5),
    CONSUMO_QUANTIDADE_T05 numeric(10,5),
    CONSUMO_QUANTIDADE_T06 numeric(10,5),
    CONSUMO_QUANTIDADE_T07 numeric(10,5),
    CONSUMO_QUANTIDADE_T08 numeric(10,5),
    CONSUMO_QUANTIDADE_T09 numeric(10,5),
    CONSUMO_QUANTIDADE_T10 numeric(10,5),
    CONSUMO_QUANTIDADE_T11 numeric(10,5),
    CONSUMO_QUANTIDADE_T12 numeric(10,5),
    CONSUMO_QUANTIDADE_T13 numeric(10,5),
    CONSUMO_QUANTIDADE_T14 numeric(10,5),
    CONSUMO_QUANTIDADE_T15 numeric(10,5),
    CONSUMO_QUANTIDADE_T16 numeric(10,5),
    CONSUMO_QUANTIDADE_T17 numeric(10,5),
    CONSUMO_QUANTIDADE_T18 numeric(10,5),
    CONSUMO_QUANTIDADE_T19 numeric(10,5),
    CONSUMO_QUANTIDADE_T20 numeric(10,5),
    CONSUMO_QUANTIDADE numeric(10,5),
    SETOR_CODIGO integer,
    OBSERVACAO varchar(50),
    TAMANHO numeric(10,2),
    FATOR_CONVERSAO numeric(15,4),
    ALOCACAO char(1),
    MATRIZ_ID integer,
    HABILITA_GERAR_CONSUMO varchar(1),
    INC_GRUPO_PRODUTO char(1),
    GRUPO_PRODUTO_ID integer,
    AGRUPAMENTO_ID integer,
    PECA_CONJUNTO integer)
as
BEGIN
    IF (COALESCE(:ID3, 0) > 0) THEN
    BEGIN
        DELETE FROM TBMODELO_CONSUMO WHERE MODELO_CODIGO = :ID3;
    END

    FOR
        SELECT 
            A.MODELO_CODIGO, 
            A.CONSUMO_PRODUTO_CODIGO, 
            A.TAM, 
            A.CONSUMO_QUANTIDADE_T01, 
            A.CONSUMO_QUANTIDADE_T02, 
            A.CONSUMO_QUANTIDADE_T03, 
            A.CONSUMO_QUANTIDADE_T04, 
            A.CONSUMO_QUANTIDADE_T05, 
            A.CONSUMO_QUANTIDADE_T06, 
            A.CONSUMO_QUANTIDADE_T07, 
            A.CONSUMO_QUANTIDADE_T08, 
            A.CONSUMO_QUANTIDADE_T09, 
            A.CONSUMO_QUANTIDADE_T10, 
            A.CONSUMO_QUANTIDADE_T11, 
            A.CONSUMO_QUANTIDADE_T12, 
            A.CONSUMO_QUANTIDADE_T13, 
            A.CONSUMO_QUANTIDADE_T14, 
            A.CONSUMO_QUANTIDADE_T15, 
            A.CONSUMO_QUANTIDADE_T16, 
            A.CONSUMO_QUANTIDADE_T17, 
            A.CONSUMO_QUANTIDADE_T18, 
            A.CONSUMO_QUANTIDADE_T19, 
            A.CONSUMO_QUANTIDADE_T20, 
            A.CONSUMO_QUANTIDADE, 
            A.SETOR_CODIGO, 
            A.OBSERVACAO,
            A.TAMANHO, 
            A.FATOR_CONVERSAO, 
            A.ALOCACAO, 
            A.MATRIZ_ID, 
            A.HABILITA_GERAR_CONSUMO,
            A.INC_GRUPO_PRODUTO,
            A.GRUPO_PRODUTO_ID,
            A.AGRUPAMENTO_ID,
            A.PECA_CONJUNTO
    
        FROM TBMODELO_CONSUMO A
        WHERE A.MODELO_CODIGO = :ID1
        AND A.NIVEL = 0

    INTO
        :MODELO_CODIGO, 
        :CONSUMO_PRODUTO_CODIGO, 
        :TAM, 
        :CONSUMO_QUANTIDADE_T01, 
        :CONSUMO_QUANTIDADE_T02, 
        :CONSUMO_QUANTIDADE_T03, 
        :CONSUMO_QUANTIDADE_T04, 
        :CONSUMO_QUANTIDADE_T05, 
        :CONSUMO_QUANTIDADE_T06, 
        :CONSUMO_QUANTIDADE_T07, 
        :CONSUMO_QUANTIDADE_T08, 
        :CONSUMO_QUANTIDADE_T09, 
        :CONSUMO_QUANTIDADE_T10, 
        :CONSUMO_QUANTIDADE_T11, 
        :CONSUMO_QUANTIDADE_T12, 
        :CONSUMO_QUANTIDADE_T13, 
        :CONSUMO_QUANTIDADE_T14, 
        :CONSUMO_QUANTIDADE_T15, 
        :CONSUMO_QUANTIDADE_T16, 
        :CONSUMO_QUANTIDADE_T17, 
        :CONSUMO_QUANTIDADE_T18, 
        :CONSUMO_QUANTIDADE_T19, 
        :CONSUMO_QUANTIDADE_T20, 
        :CONSUMO_QUANTIDADE, 
        :SETOR_CODIGO, 
        :OBSERVACAO, 
        :TAMANHO, 
        :FATOR_CONVERSAO, 
        :ALOCACAO, 
        :MATRIZ_ID, 
        :HABILITA_GERAR_CONSUMO,
        :INC_GRUPO_PRODUTO,
        :GRUPO_PRODUTO_ID,
        :AGRUPAMENTO_ID,
        :PECA_CONJUNTO

    DO
    BEGIN
        IF (:MODELO_CODIGO > 0) THEN
        BEGIN
            UPDATE OR INSERT INTO TBMODELO_CONSUMO (
                    MODELO_CODIGO, CONSUMO_PRODUTO_CODIGO, TAM, CONSUMO_QUANTIDADE_T01,
                    CONSUMO_QUANTIDADE_T02, CONSUMO_QUANTIDADE_T03, CONSUMO_QUANTIDADE_T04,
                    CONSUMO_QUANTIDADE_T05, CONSUMO_QUANTIDADE_T06, CONSUMO_QUANTIDADE_T07,
                    CONSUMO_QUANTIDADE_T08, CONSUMO_QUANTIDADE_T09, CONSUMO_QUANTIDADE_T10,
                    CONSUMO_QUANTIDADE_T11, CONSUMO_QUANTIDADE_T12, CONSUMO_QUANTIDADE_T13,
                    CONSUMO_QUANTIDADE_T14, CONSUMO_QUANTIDADE_T15, CONSUMO_QUANTIDADE_T16,
                    CONSUMO_QUANTIDADE_T17, CONSUMO_QUANTIDADE_T18, CONSUMO_QUANTIDADE_T19,
                    CONSUMO_QUANTIDADE_T20, CONSUMO_QUANTIDADE, SETOR_CODIGO, OBSERVACAO,
                    TAMANHO, FATOR_CONVERSAO, ALOCACAO, MATRIZ_ID, HABILITA_GERAR_CONSUMO, FLAG,
                    INC_GRUPO_PRODUTO, GRUPO_PRODUTO_ID, AGRUPAMENTO_ID, PECA_CONJUNTO)
                VALUES (:ID2, :CONSUMO_PRODUTO_CODIGO, :TAM, :CONSUMO_QUANTIDADE_T01,
                    :CONSUMO_QUANTIDADE_T02, :CONSUMO_QUANTIDADE_T03, :CONSUMO_QUANTIDADE_T04,
                    :CONSUMO_QUANTIDADE_T05, :CONSUMO_QUANTIDADE_T06, :CONSUMO_QUANTIDADE_T07,
                    :CONSUMO_QUANTIDADE_T08, :CONSUMO_QUANTIDADE_T09, :CONSUMO_QUANTIDADE_T10,
                    :CONSUMO_QUANTIDADE_T11, :CONSUMO_QUANTIDADE_T12, :CONSUMO_QUANTIDADE_T13,
                    :CONSUMO_QUANTIDADE_T14, :CONSUMO_QUANTIDADE_T15, :CONSUMO_QUANTIDADE_T16,
                    :CONSUMO_QUANTIDADE_T17, :CONSUMO_QUANTIDADE_T18, :CONSUMO_QUANTIDADE_T19,
                    :CONSUMO_QUANTIDADE_T20, :CONSUMO_QUANTIDADE, :SETOR_CODIGO, :OBSERVACAO,
                    :TAMANHO, :FATOR_CONVERSAO, :ALOCACAO, :MATRIZ_ID, :HABILITA_GERAR_CONSUMO, '1',
                    :INC_GRUPO_PRODUTO, :GRUPO_PRODUTO_ID, :AGRUPAMENTO_ID, :PECA_CONJUNTO)
                MATCHING (MODELO_CODIGO, CONSUMO_PRODUTO_CODIGO, TAM, SETOR_CODIGO, PECA_CONJUNTO);
        END

    END
END
^

SET TERM ; ^

SET TERM ^ ;

create or alter procedure SPU_COPIA_MODELO_FICHA3_NEW (
    ID1 integer,
    ID2 integer,
    ID3 integer,
    DESCRICAO_1 varchar(50),
    USUARIO_ID integer)
returns (
    MODELO_ID integer,
    COR_ID integer,
    PRODUTO_ID integer,
    TAM integer,
    SETOR_ID integer,
    MATRIZ_ID integer,
    OBSERVACAO varchar(100),
    FATOR_CONVERSAO numeric(15,4),
    FATOR_MATRIZ numeric(10,1),
    QUANTIDADE numeric(10,5),
    T01 numeric(10,5),
    T02 numeric(10,5),
    T03 numeric(10,5),
    T04 numeric(10,5),
    T05 numeric(10,5),
    T06 numeric(10,5),
    T07 numeric(10,5),
    T08 numeric(10,5),
    T09 numeric(10,5),
    T10 numeric(10,5),
    T11 numeric(10,5),
    T12 numeric(10,5),
    T13 numeric(10,5),
    T14 numeric(10,5),
    T15 numeric(10,5),
    T16 numeric(10,5),
    T17 numeric(10,5),
    T18 numeric(10,5),
    T19 numeric(10,5),
    T20 numeric(10,5),
    ALOCACAO char(1),
    HABILITA_GERAR_CONSUMO varchar(1),
    INC_GRUPO_PRODUTO char(1),
    GRUPO_PRODUTO_ID integer,
    AGRUPAMENTO_ID integer,
    PECA_CONJUNTO integer)
as
BEGIN

    IF (COALESCE(:ID3, 0) > 0) THEN
    BEGIN
        DELETE FROM TBMODELO_CONSUMO_COR WHERE MODELO_ID = :ID3;
    END

    FOR
        SELECT
            A.MODELO_ID,
            A.COR_ID,
            A.PRODUTO_ID,
            A.TAM,
            A.SETOR_ID,
            A.OBSERVACAO,
            A.FATOR_CONVERSAO,
            A.QUANTIDADE,
            A.T01,
            A.T02,
            A.T03,
            A.T04,
            A.T05,
            A.T06,
            A.T07,
            A.T08,
            A.T09,
            A.T10,
            A.T11,
            A.T12,
            A.T13,
            A.T14,
            A.T15,
            A.T16,
            A.T17,
            A.T18,
            A.T19,
            A.T20,
            A.ALOCACAO,
            A.MATRIZ_ID,
            A.FATOR_MATRIZ,
            A.HABILITA_GERAR_CONSUMO,
            A.INC_GRUPO_PRODUTO,
            A.GRUPO_PRODUTO_ID,
            A.AGRUPAMENTO_ID,
            A.PECA_CONJUNTO

        FROM TBMODELO_CONSUMO_COR A, TBCOR C
        WHERE A.MODELO_ID = :ID1
        AND A.NIVEL = 0
        AND A.COR_ID = C.CODIGO
        AND C.STATUS = '1'

        INTO
            :MODELO_ID,
            :COR_ID,
            :PRODUTO_ID,
            :TAM,
            :SETOR_ID,
            :OBSERVACAO,
            :FATOR_CONVERSAO,
            :QUANTIDADE,
            :T01,
            :T02,
            :T03,
            :T04,
            :T05,
            :T06,
            :T07,
            :T08,
            :T09,
            :T10,
            :T11,
            :T12,
            :T13,
            :T14,
            :T15,
            :T16,
            :T17,
            :T18,
            :T19,
            :T20,
            :ALOCACAO,
            :MATRIZ_ID,
            :FATOR_MATRIZ,
            :HABILITA_GERAR_CONSUMO,
            :INC_GRUPO_PRODUTO,
            :GRUPO_PRODUTO_ID,
            :AGRUPAMENTO_ID,
            :PECA_CONJUNTO

        DO
        BEGIN

        IF (:MODELO_ID > 0) THEN
        BEGIN
            UPDATE OR INSERT INTO TBMODELO_CONSUMO_COR (
                    MODELO_ID, COR_ID, PRODUTO_ID, TAM,
                    SETOR_ID, OBSERVACAO, FATOR_CONVERSAO, QUANTIDADE,
                    T01,T02,T03,T04,T05,T06,T07,T08,T09,T10,
                    T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,
                    ALOCACAO, MATRIZ_ID, FATOR_MATRIZ, HABILITA_GERAR_CONSUMO, FLAG,
                    INC_GRUPO_PRODUTO, GRUPO_PRODUTO_ID, AGRUPAMENTO_ID, PECA_CONJUNTO)
                VALUES (:ID2, :COR_ID, :PRODUTO_ID, :TAM,
                    :SETOR_ID, :OBSERVACAO, :FATOR_CONVERSAO, :QUANTIDADE,
                    :T01,:T02,:T03,:T04,:T05,:T06,:T07,:T08,:T09,:T10,
                    :T11,:T12,:T13,:T14,:T15,:T16,:T17,:T18,:T19,:T20,
                    :ALOCACAO, :MATRIZ_ID, :FATOR_MATRIZ, :HABILITA_GERAR_CONSUMO, '1',
                    :INC_GRUPO_PRODUTO, :GRUPO_PRODUTO_ID, :AGRUPAMENTO_ID, :PECA_CONJUNTO)
                MATCHING (MODELO_ID, COR_ID, PRODUTO_ID, TAM, SETOR_ID, PECA_CONJUNTO);
        END

    END
END
^

SET TERM ; ^

/********************************************************************************/

SET TERM ^ ;

create or alter procedure SPU_COPIA_MODELO_COR1_NEW (
    ID1 integer,
    ID2 integer,
    DESCRICAO_1 varchar(50),
    USUARIO_ID integer)
returns (
    MODELO_ID integer,
    COR_ID integer,
    TAMANHO integer,
    PERFIL varchar(10),
    STATUS_PRODUTO char(1),
    BLQ_PED char(1),
    PERCENTUAL_TALAO integer,
    STATUS char(10),
    PERCENTUAL_REPRESENTATIVIDADE numeric(15,2))
as
BEGIN

    FOR
        SELECT
            A.MODELO_ID,
            A.COR_ID,
            A.PERCENTUAL_TALAO,
            A.STATUS,
            A.PERCENTUAL_REPRESENTATIVIDADE,
            COALESCE((SELECT FIRST 1 P.STATUS FROM TBPRODUTO P WHERE P.MODELO_CODIGO = A.MODELO_ID AND P.COR_CODIGO = C.CODIGO), '1') AS STATUS_PRODUTO

        FROM TBMODELO_COR A, TBCOR C
        WHERE A.COR_ID = C.CODIGO
--        AND C.STATUS = '1'
        AND A.MODELO_ID = :ID1

    INTO
        :MODELO_ID,
        :COR_ID,
        :PERCENTUAL_TALAO,
        :STATUS,
        :PERCENTUAL_REPRESENTATIVIDADE,
        :STATUS_PRODUTO

    DO
    BEGIN
        IF (:MODELO_ID > 0 /*AND :STATUS_PRODUTO = '1'*/) THEN
        BEGIN
            UPDATE OR INSERT INTO TBMODELO_COR (MODELO_ID, COR_ID, PERCENTUAL_TALAO, STATUS, PERCENTUAL_REPRESENTATIVIDADE, STATUS_PRODUTO)
                VALUES (:ID2, :COR_ID, :PERCENTUAL_TALAO, :STATUS, :PERCENTUAL_REPRESENTATIVIDADE, :STATUS_PRODUTO)
                MATCHING (MODELO_ID, COR_ID);
        END
    END
    
    FOR
        SELECT
            M.MODELO_ID,
            M.COR_ID,
            M.TAMANHO,
            M.PERFIL,
            M.BLQ_PED

        FROM TBMODELO_BLOQUEIO M
        WHERE M.MODELO_ID = :ID1

    INTO
        :MODELO_ID,
        :COR_ID,
        :TAMANHO,
        :PERFIL,
        :BLQ_PED

    DO
    BEGIN
        IF (:MODELO_ID > 0) THEN
        BEGIN
            UPDATE OR INSERT INTO TBMODELO_BLOQUEIO (MODELO_ID, COR_ID, TAMANHO, PERFIL, BLQ_PED)
                VALUES (:ID2, :COR_ID, :TAMANHO, :PERFIL, :BLQ_PED)
                MATCHING (MODELO_ID, COR_ID, TAMANHO);
        END
    END
END
^

SET TERM ; ^

/******************************************************************************/

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))
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

            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

        DO
        BEGIN

            IF (:OLD_FLUXO <> :GRUPO_ID) THEN
            BEGIN
                :NEW_GRUPO_ID = GEN_ID(GTBMODELO_FLUXO_PRODUCAO_GRUPO, 1);
    
                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)
                    VALUES(:NEW_GRUPO_ID, :ID2, :FLUXO_ID, :COR_ID, :TAMANHO, :ORDEM, :TEMPO, :TM, :TH, :PS, :TT, :QC, :TF, :PECA, :CARGA);
    
                :OLD_FLUXO = :GRUPO_ID;
            END

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

    END
END
^

SET TERM ; ^

