

CREATE GLOBAL TEMPORARY TABLE TMPTEMPO_MODELO (
    MODELO_ID       INTEGER NOT NULL,
    COR_ID          INTEGER NOT NULL,
    TAMANHO         INTEGER NOT NULL,
    QUANTIDADE      NUMERIC(15,4) DEFAULT 0,
    TEMPOSETUP      NUMERIC(15,4) DEFAULT 0,
    TEMPOSETCOR     NUMERIC(15,4) DEFAULT 0,
    TEMPOREB        NUMERIC(15,4) DEFAULT 0,
    TEMPOPROCESSO   NUMERIC(15,4) DEFAULT 0,
    TOTALSETUP      NUMERIC(15,4) DEFAULT 0,
    TOTALPROCESSO   NUMERIC(15,4) DEFAULT 0,
    TOTAL           NUMERIC(15,4) DEFAULT 0,
	QUANTIDADE_OPERADOR           NUMERIC(15,4) DEFAULT 0
) ON COMMIT DELETE ROWS;



CREATE INDEX ITMPTEMPO_MODELO_01
ON TMPTEMPO_MODELO (MODELO_ID);

CREATE INDEX ITMPTEMPO_MODELO_02
ON TMPTEMPO_MODELO (COR_ID);

CREATE INDEX ITMPTEMPO_MODELO_03
ON TMPTEMPO_MODELO (TAMANHO);


CREATE OR ALTER procedure SPC_TEMPO_GP_V2 (
    GP_ID numeric(15,4),
    MODELO_ID numeric(15,4),
    COR_ID numeric(15,4),
    TAMANHO numeric(15,4),
    QUANTIDADE numeric(15,4))
returns (
    TEMPOSETUP numeric(15,4),
    TEMPOSETCOR numeric(15,4),
    TEMPOREB numeric(15,4),
    TEMPOPROCESSO numeric(15,4),
    TOTALSETUP numeric(15,4),
    TOTALPROCESSO numeric(15,4),
    TOTAL numeric(15,4),
    QUANTIDADE_OPERADOR numeric(15,4))
as
declare variable FLAG integer;
declare variable TEMPO numeric(15,4);
Begin

    :FLAG = 0;

    SELECT
        T.TEMPOSETUP,
        T.TEMPOSETCOR,
        T.TEMPOREB,
        T.TEMPOPROCESSO,
        T.TOTALSETUP,
        T.TOTALPROCESSO,
        T.TOTAL,
        T.QUANTIDADE_OPERADOR,
        1 AS FLAG
    FROM TMPTEMPO_MODELO T
    WHERE T.MODELO_ID = :MODELO_ID
    AND T.COR_ID = :COR_ID
    AND T.TAMANHO = :TAMANHO
    AND T.QUANTIDADE = :QUANTIDADE
    INTO :TEMPOSETUP, :TEMPOSETCOR, :TEMPOREB,
         :TEMPOPROCESSO, :TOTALSETUP, :TOTALPROCESSO,
         :TOTAL, :QUANTIDADE_OPERADOR, :FLAG;

    IF(COALESCE(:FLAG, 0) = 0) THEN
    BEGIN

        delete from TMP22040;

        INSERT INTO
        TMP22040 (
            UP_ID, 
            MODELO_ID, 
            COR_ID, 
            TAMANHO, 
            QUANTIDADE
        ) VALUES (
           :GP_ID,
           :MODELO_ID, 
           :COR_ID, 
           :TAMANHO, 
           :QUANTIDADE
        );
          
        SELECT FIRST 1
            TEMPOSETUP,
            TEMPOSETCOR,
            TEMPOREB,
            TEMPOPROCESSO,
            TOTALSETUP,
            TOTALPROCESSO,
            TOTAL,
            QUANTIDADE_OPERADOR
        FROM SPC_TEMPO_MODELO_GP T
        into
            :TEMPOSETUP,
            :TEMPOSETCOR,
            :TEMPOREB,
            :TEMPOPROCESSO,
            :TOTALSETUP,
            :TOTALPROCESSO,
            :TOTAL,
            :QUANTIDADE_OPERADOR;

         INSERT INTO TMPTEMPO_MODELO (MODELO_ID, COR_ID, TAMANHO, QUANTIDADE, TEMPOSETUP, TEMPOSETCOR, TEMPOREB, TEMPOPROCESSO,
                             TOTALSETUP, TOTALPROCESSO, TOTAL, QUANTIDADE_OPERADOR)
            VALUES (:MODELO_ID, :COR_ID, :TAMANHO, :QUANTIDADE, :TEMPOSETUP, :TEMPOSETCOR, :TEMPOREB, :TEMPOPROCESSO, :TOTALSETUP,
                    :TOTALPROCESSO, :TOTAL, :QUANTIDADE_OPERADOR);

    END

        TEMPOSETUP          = coalesce(TEMPOSETUP,0);
        TEMPOSETCOR         = coalesce(TEMPOSETCOR,0);
        TEMPOREB            = coalesce(TEMPOREB,0);
        TEMPOPROCESSO       = coalesce(TEMPOPROCESSO,0);
        TOTALSETUP          = coalesce(TOTALSETUP,0);
        TOTALPROCESSO       = coalesce(TOTALPROCESSO,0);
        TOTAL               = coalesce(TOTAL,0);
        QUANTIDADE_OPERADOR = coalesce(QUANTIDADE_OPERADOR,0);

   suspend;
End;