SET TERM ^ ;

CREATE OR ALTER procedure SPC_RESSUPRIMENTO_QTDVENDA (
    IESTABELECIMENTO_ID integer not null,
    IMODELO_ID integer not null,
    ICOR_ID integer not null,
    IPERFIL_ID varchar(100),
    IDATA_INICIO date,
    IDATA_FIM date)
returns (
    OQUANTIDADE numeric(18,5))
as
BEGIN

    IF (:IPERFIL_ID = '') THEN
    BEGIN
        :IPERFIL_ID = NULL;
    END


    FOR
        SELECT FIRST 1
            F.QUANTIDADE
        
        FROM (
            SELECT DISTINCT
                MODELO_ID,
                PRODUTO_ID,
                COR_ID,
                ESTABELECIMENTO_ID,
                SUM(QUANTIDADE) AS QUANTIDADE
            
            FROM (
                SELECT
                    M.CODIGO AS MODELO_ID,
                    B.PRODUTO_CODIGO AS PRODUTO_ID,
                    A.ESTABELECIMENTO_CODIGO AS ESTABELECIMENTO_ID,
                    N.COR_CODIGO AS COR_ID,
                    B.QUANTIDADE
        
                FROM TBNFS A, TBNFS_ITEM B, TBPRODUTO N, TBMODELO M, TBOPERACAO O, TBMODELO_COR MC, TBCOR COR
                WHERE A.CONTROLE = B.NFS_CONTROLE
                AND B.PRODUTO_CODIGO = N.CODIGO
                AND N.MODELO_CODIGO = M.CODIGO
                AND ((A.NATUREZA = 1 AND A.SITUACAO = 2) OR (A.NATUREZA = 2 AND A.SITUACAO = 1))
                AND B.OPERACAO_CODIGO = O.CODIGO
                AND (O.CONTROLE_FATURAMENTO = '1' OR O.TRANSFERENCIA = '1')
                AND MC.MODELO_ID = M.CODIGO
                AND MC.COR_ID = N.COR_CODIGO
                AND COR.CODIGO = MC.COR_ID
        
                 AND IIF( CAST(:IDATA_INICIO AS DATE) IS NOT NULL AND CAST(:IDATA_FIM AS DATE) IS NOT NULL, A.DATA_EMISSAO BETWEEN CAST(:IDATA_INICIO AS DATE) AND CAST(:IDATA_FIM AS DATE), TRUE = TRUE )
                
                AND MC.COR_ID = :ICOR_ID
                AND M.CODIGO = :IMODELO_ID
                AND A.ESTABELECIMENTO_CODIGO = :IESTABELECIMENTO_ID
                
                 AND IIF( CAST(:IPERFIL_ID AS VARCHAR(10)) IS NOT NULL, COR.PERFIL = :IPERFIL_ID, TRUE = TRUE )
        
                UNION ALL
        
                SELECT
                    C.MODELO_CODIGO AS MODELO_ID,
                    C.CODIGO AS PRODUTO_ID,
                    A.ESTABELECIMENTO_CODIGO AS ESTABELECIMENTO_ID,
                    C.COR_CODIGO AS COR_ID,
                    B.QUANTIDADE
        
                FROM VWMFE A, VWMFE_ITEM B, TBOPERACAO O, TBPRODUTO C, TBMODELO M, TBMODELO_COR MC, TBCOR COR
                WHERE (O.CONTROLE_FATURAMENTO = '1' OR O.TRANSFERENCIA = '1')
                AND B.OPERACAO_CODIGO = O.CODIGO
                AND C.CODIGO = B.PRODUTO_CODIGO
                AND M.CODIGO = C.MODELO_CODIGO
                AND A.MFE_ID = B.MFE_ID
                AND MC.MODELO_ID = M.CODIGO
                AND MC.COR_ID = C.COR_CODIGO
                AND C.COR_CODIGO = COR.CODIGO
                AND A.SITUACAO = 2
                AND A.NATUREZA = 1
        
                 AND IIF( CAST(:IDATA_INICIO AS DATE) IS NOT NULL AND CAST(:IDATA_FIM AS DATE) IS NOT NULL, A.DATA_EMISSAO BETWEEN CAST(:IDATA_INICIO AS DATE) AND CAST(:IDATA_FIM AS DATE), TRUE = TRUE )
        
                AND MC.COR_ID = :ICOR_ID
                AND M.CODIGO = :IMODELO_ID
                AND A.ESTABELECIMENTO_CODIGO = :IESTABELECIMENTO_ID
                
                 AND IIF( CAST(:IPERFIL_ID AS VARCHAR(10)) IS NOT NULL, COR.PERFIL = :IPERFIL_ID, TRUE = TRUE )
        
            ) X
            WHERE QUANTIDADE > 0 
            
            GROUP BY
                MODELO_ID,
                PRODUTO_ID,
                ESTABELECIMENTO_ID,
                COR_ID
        
        ) F
        INNER JOIN TBESTABELECIMENTO E ON E.CODIGO = F.ESTABELECIMENTO_ID
    
    INTO
        :OQUANTIDADE

    DO
    BEGIN

        SUSPEND;
    END
END
^

SET TERM ; ^


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


SET TERM ^ ;

CREATE OR ALTER procedure SPC_ESTOQUE_SALDO_RESSUPRIMENTO (
    PRODUTO_ID integer,
    ESTABELECIMENTO_CODIGO integer,
    LOCALIZACAO_CODIGO integer = 0)
returns (
    ESTABELECIMENTO_ID integer,
    LOCALIZACAO_ID integer,
    FAMILIA_ID integer,
    PRODUTO_ID2 integer,
    PRODUTO_DESCRICAO varchar(100),
    GRADE_ID integer,
    TAMANHO integer,
    TAMANHO_DESCRICAO varchar(50),
    SALDO numeric(18,5),
    SALDO_ALOCADO numeric(18,5),
    SALDO_PEDIDO numeric(18,5),
    UM varchar(10),
    FILTRO varchar(2000))
as
BEGIN

    FOR
        SELECT
            CAST(:ESTABELECIMENTO_CODIGO AS INTEGER) AS ESTABELECIMENTO_ID,
            CAST(:LOCALIZACAO_CODIGO AS INTEGER) AS LOCALIZACAO_ID,
            P.FAMILIA_CODIGO AS FAMILIA_ID,
            Z.PRODUTO_CODIGO AS PRODUTO_ID2,
            P.DESCRICAO AS PRODUTO_DESCRICAO,
            P.GRADE_CODIGO AS GRADE_ID,
            Z.TAMANHO,
            COALESCE((SELECT FIRST 1 TAM_DESCRICAO FROM SP_TAMANHO_GRADE(P.GRADE_CODIGO, Z.TAMANHO)), '') AS TAMANHO_DESCRICAO,
            Z.SALDO,
            CAST(0 AS NUMERIC(18,5)) AS SALDO_ALOCADO,
            CAST(0 AS NUMERIC(18,5)) AS SALDO_PEDIDO,
            P.UNIDADEMEDIDA_SIGLA,
            FN_LPAD(P.CODIGO, 6, 0) || ' - ' || P.DESCRICAO || ' - ' || COALESCE((SELECT FIRST 1 TAM_DESCRICAO FROM SP_TAMANHO_GRADE(P.GRADE_CODIGO, Z.TAMANHO)), '') AS FILTRO
        
        FROM (
        
            SELECT PRODUTO_CODIGO, TAMANHO, SUM(QUANTIDADE) AS SALDO FROM ( SELECT SUM((R.QUANTIDADE_PEDIDO - COALESCE((SELECT SUM(BD.SALDO) FROM TBREMESSA_ITEM_ALOCACAO BD WHERE BD.SALDO > 0 AND BD.PRODUTO_ID = R.PRODUTO_CODIGO AND BD.TAMANHO = R.TAMANHO AND BD.TIPO = 'P' AND BD.TABELA_ID > 0 AND BD.TAB_ITEM_ID > 0 AND BD.LOCALIZACAO_ID = :LOCALIZACAO_CODIGO AND BD.ESTABELECIMENTO_ID = :ESTABELECIMENTO_CODIGO), 0.00))) AS QUANTIDADE, R.PRODUTO_CODIGO, R.TAMANHO FROM TBREMESSA RR, TBPEDIDO_ITEM_PROCESSADO R LEFT JOIN TBPRODUTO P ON P.CODIGO = R.PRODUTO_CODIGO WHERE RR.NUMERO = R.REMESSA AND COALESCE(R.ESTOQUE_ID, 0) = 0 AND RR.ORIGEM = 22600 AND R.SITUACAO < 6 AND R.PRODUTO_CODIGO = :PRODUTO_ID AND R.MODELO_CODIGO = P.MODELO_CODIGO AND R.COR_ID = P.COR_CODIGO GROUP BY RR.NUMERO, R.REMESSA, RR.ORIGEM, R.SITUACAO, R.PRODUTO_CODIGO, R.MODELO_CODIGO, R.COR_ID, R.TAMANHO ) WHERE TAMANHO = 1  GROUP BY PRODUTO_CODIGO, TAMANHO UNION
            SELECT PRODUTO_CODIGO, TAMANHO, SUM(QUANTIDADE) AS SALDO FROM ( SELECT SUM((R.QUANTIDADE_PEDIDO - COALESCE((SELECT SUM(BD.SALDO) FROM TBREMESSA_ITEM_ALOCACAO BD WHERE BD.SALDO > 0 AND BD.PRODUTO_ID = R.PRODUTO_CODIGO AND BD.TAMANHO = R.TAMANHO AND BD.TIPO = 'P' AND BD.TABELA_ID > 0 AND BD.TAB_ITEM_ID > 0 AND BD.LOCALIZACAO_ID = :LOCALIZACAO_CODIGO AND BD.ESTABELECIMENTO_ID = :ESTABELECIMENTO_CODIGO), 0.00))) AS QUANTIDADE, R.PRODUTO_CODIGO, R.TAMANHO FROM TBREMESSA RR, TBPEDIDO_ITEM_PROCESSADO R LEFT JOIN TBPRODUTO P ON P.CODIGO = R.PRODUTO_CODIGO WHERE RR.NUMERO = R.REMESSA AND COALESCE(R.ESTOQUE_ID, 0) = 0 AND RR.ORIGEM = 22600 AND R.SITUACAO < 6 AND R.PRODUTO_CODIGO = :PRODUTO_ID AND R.MODELO_CODIGO = P.MODELO_CODIGO AND R.COR_ID = P.COR_CODIGO GROUP BY RR.NUMERO, R.REMESSA, RR.ORIGEM, R.SITUACAO, R.PRODUTO_CODIGO, R.MODELO_CODIGO, R.COR_ID, R.TAMANHO ) WHERE TAMANHO = 2  GROUP BY PRODUTO_CODIGO, TAMANHO UNION
            SELECT PRODUTO_CODIGO, TAMANHO, SUM(QUANTIDADE) AS SALDO FROM ( SELECT SUM((R.QUANTIDADE_PEDIDO - COALESCE((SELECT SUM(BD.SALDO) FROM TBREMESSA_ITEM_ALOCACAO BD WHERE BD.SALDO > 0 AND BD.PRODUTO_ID = R.PRODUTO_CODIGO AND BD.TAMANHO = R.TAMANHO AND BD.TIPO = 'P' AND BD.TABELA_ID > 0 AND BD.TAB_ITEM_ID > 0 AND BD.LOCALIZACAO_ID = :LOCALIZACAO_CODIGO AND BD.ESTABELECIMENTO_ID = :ESTABELECIMENTO_CODIGO), 0.00))) AS QUANTIDADE, R.PRODUTO_CODIGO, R.TAMANHO FROM TBREMESSA RR, TBPEDIDO_ITEM_PROCESSADO R LEFT JOIN TBPRODUTO P ON P.CODIGO = R.PRODUTO_CODIGO WHERE RR.NUMERO = R.REMESSA AND COALESCE(R.ESTOQUE_ID, 0) = 0 AND RR.ORIGEM = 22600 AND R.SITUACAO < 6 AND R.PRODUTO_CODIGO = :PRODUTO_ID AND R.MODELO_CODIGO = P.MODELO_CODIGO AND R.COR_ID = P.COR_CODIGO GROUP BY RR.NUMERO, R.REMESSA, RR.ORIGEM, R.SITUACAO, R.PRODUTO_CODIGO, R.MODELO_CODIGO, R.COR_ID, R.TAMANHO ) WHERE TAMANHO = 3  GROUP BY PRODUTO_CODIGO, TAMANHO UNION
            SELECT PRODUTO_CODIGO, TAMANHO, SUM(QUANTIDADE) AS SALDO FROM ( SELECT SUM((R.QUANTIDADE_PEDIDO - COALESCE((SELECT SUM(BD.SALDO) FROM TBREMESSA_ITEM_ALOCACAO BD WHERE BD.SALDO > 0 AND BD.PRODUTO_ID = R.PRODUTO_CODIGO AND BD.TAMANHO = R.TAMANHO AND BD.TIPO = 'P' AND BD.TABELA_ID > 0 AND BD.TAB_ITEM_ID > 0 AND BD.LOCALIZACAO_ID = :LOCALIZACAO_CODIGO AND BD.ESTABELECIMENTO_ID = :ESTABELECIMENTO_CODIGO), 0.00))) AS QUANTIDADE, R.PRODUTO_CODIGO, R.TAMANHO FROM TBREMESSA RR, TBPEDIDO_ITEM_PROCESSADO R LEFT JOIN TBPRODUTO P ON P.CODIGO = R.PRODUTO_CODIGO WHERE RR.NUMERO = R.REMESSA AND COALESCE(R.ESTOQUE_ID, 0) = 0 AND RR.ORIGEM = 22600 AND R.SITUACAO < 6 AND R.PRODUTO_CODIGO = :PRODUTO_ID AND R.MODELO_CODIGO = P.MODELO_CODIGO AND R.COR_ID = P.COR_CODIGO GROUP BY RR.NUMERO, R.REMESSA, RR.ORIGEM, R.SITUACAO, R.PRODUTO_CODIGO, R.MODELO_CODIGO, R.COR_ID, R.TAMANHO ) WHERE TAMANHO = 4  GROUP BY PRODUTO_CODIGO, TAMANHO UNION
            SELECT PRODUTO_CODIGO, TAMANHO, SUM(QUANTIDADE) AS SALDO FROM ( SELECT SUM((R.QUANTIDADE_PEDIDO - COALESCE((SELECT SUM(BD.SALDO) FROM TBREMESSA_ITEM_ALOCACAO BD WHERE BD.SALDO > 0 AND BD.PRODUTO_ID = R.PRODUTO_CODIGO AND BD.TAMANHO = R.TAMANHO AND BD.TIPO = 'P' AND BD.TABELA_ID > 0 AND BD.TAB_ITEM_ID > 0 AND BD.LOCALIZACAO_ID = :LOCALIZACAO_CODIGO AND BD.ESTABELECIMENTO_ID = :ESTABELECIMENTO_CODIGO), 0.00))) AS QUANTIDADE, R.PRODUTO_CODIGO, R.TAMANHO FROM TBREMESSA RR, TBPEDIDO_ITEM_PROCESSADO R LEFT JOIN TBPRODUTO P ON P.CODIGO = R.PRODUTO_CODIGO WHERE RR.NUMERO = R.REMESSA AND COALESCE(R.ESTOQUE_ID, 0) = 0 AND RR.ORIGEM = 22600 AND R.SITUACAO < 6 AND R.PRODUTO_CODIGO = :PRODUTO_ID AND R.MODELO_CODIGO = P.MODELO_CODIGO AND R.COR_ID = P.COR_CODIGO GROUP BY RR.NUMERO, R.REMESSA, RR.ORIGEM, R.SITUACAO, R.PRODUTO_CODIGO, R.MODELO_CODIGO, R.COR_ID, R.TAMANHO ) WHERE TAMANHO = 5  GROUP BY PRODUTO_CODIGO, TAMANHO UNION
            SELECT PRODUTO_CODIGO, TAMANHO, SUM(QUANTIDADE) AS SALDO FROM ( SELECT SUM((R.QUANTIDADE_PEDIDO - COALESCE((SELECT SUM(BD.SALDO) FROM TBREMESSA_ITEM_ALOCACAO BD WHERE BD.SALDO > 0 AND BD.PRODUTO_ID = R.PRODUTO_CODIGO AND BD.TAMANHO = R.TAMANHO AND BD.TIPO = 'P' AND BD.TABELA_ID > 0 AND BD.TAB_ITEM_ID > 0 AND BD.LOCALIZACAO_ID = :LOCALIZACAO_CODIGO AND BD.ESTABELECIMENTO_ID = :ESTABELECIMENTO_CODIGO), 0.00))) AS QUANTIDADE, R.PRODUTO_CODIGO, R.TAMANHO FROM TBREMESSA RR, TBPEDIDO_ITEM_PROCESSADO R LEFT JOIN TBPRODUTO P ON P.CODIGO = R.PRODUTO_CODIGO WHERE RR.NUMERO = R.REMESSA AND COALESCE(R.ESTOQUE_ID, 0) = 0 AND RR.ORIGEM = 22600 AND R.SITUACAO < 6 AND R.PRODUTO_CODIGO = :PRODUTO_ID AND R.MODELO_CODIGO = P.MODELO_CODIGO AND R.COR_ID = P.COR_CODIGO GROUP BY RR.NUMERO, R.REMESSA, RR.ORIGEM, R.SITUACAO, R.PRODUTO_CODIGO, R.MODELO_CODIGO, R.COR_ID, R.TAMANHO ) WHERE TAMANHO = 6  GROUP BY PRODUTO_CODIGO, TAMANHO UNION
            SELECT PRODUTO_CODIGO, TAMANHO, SUM(QUANTIDADE) AS SALDO FROM ( SELECT SUM((R.QUANTIDADE_PEDIDO - COALESCE((SELECT SUM(BD.SALDO) FROM TBREMESSA_ITEM_ALOCACAO BD WHERE BD.SALDO > 0 AND BD.PRODUTO_ID = R.PRODUTO_CODIGO AND BD.TAMANHO = R.TAMANHO AND BD.TIPO = 'P' AND BD.TABELA_ID > 0 AND BD.TAB_ITEM_ID > 0 AND BD.LOCALIZACAO_ID = :LOCALIZACAO_CODIGO AND BD.ESTABELECIMENTO_ID = :ESTABELECIMENTO_CODIGO), 0.00))) AS QUANTIDADE, R.PRODUTO_CODIGO, R.TAMANHO FROM TBREMESSA RR, TBPEDIDO_ITEM_PROCESSADO R LEFT JOIN TBPRODUTO P ON P.CODIGO = R.PRODUTO_CODIGO WHERE RR.NUMERO = R.REMESSA AND COALESCE(R.ESTOQUE_ID, 0) = 0 AND RR.ORIGEM = 22600 AND R.SITUACAO < 6 AND R.PRODUTO_CODIGO = :PRODUTO_ID AND R.MODELO_CODIGO = P.MODELO_CODIGO AND R.COR_ID = P.COR_CODIGO GROUP BY RR.NUMERO, R.REMESSA, RR.ORIGEM, R.SITUACAO, R.PRODUTO_CODIGO, R.MODELO_CODIGO, R.COR_ID, R.TAMANHO ) WHERE TAMANHO = 7  GROUP BY PRODUTO_CODIGO, TAMANHO UNION
            SELECT PRODUTO_CODIGO, TAMANHO, SUM(QUANTIDADE) AS SALDO FROM ( SELECT SUM((R.QUANTIDADE_PEDIDO - COALESCE((SELECT SUM(BD.SALDO) FROM TBREMESSA_ITEM_ALOCACAO BD WHERE BD.SALDO > 0 AND BD.PRODUTO_ID = R.PRODUTO_CODIGO AND BD.TAMANHO = R.TAMANHO AND BD.TIPO = 'P' AND BD.TABELA_ID > 0 AND BD.TAB_ITEM_ID > 0 AND BD.LOCALIZACAO_ID = :LOCALIZACAO_CODIGO AND BD.ESTABELECIMENTO_ID = :ESTABELECIMENTO_CODIGO), 0.00))) AS QUANTIDADE, R.PRODUTO_CODIGO, R.TAMANHO FROM TBREMESSA RR, TBPEDIDO_ITEM_PROCESSADO R LEFT JOIN TBPRODUTO P ON P.CODIGO = R.PRODUTO_CODIGO WHERE RR.NUMERO = R.REMESSA AND COALESCE(R.ESTOQUE_ID, 0) = 0 AND RR.ORIGEM = 22600 AND R.SITUACAO < 6 AND R.PRODUTO_CODIGO = :PRODUTO_ID AND R.MODELO_CODIGO = P.MODELO_CODIGO AND R.COR_ID = P.COR_CODIGO GROUP BY RR.NUMERO, R.REMESSA, RR.ORIGEM, R.SITUACAO, R.PRODUTO_CODIGO, R.MODELO_CODIGO, R.COR_ID, R.TAMANHO ) WHERE TAMANHO = 8  GROUP BY PRODUTO_CODIGO, TAMANHO UNION
            SELECT PRODUTO_CODIGO, TAMANHO, SUM(QUANTIDADE) AS SALDO FROM ( SELECT SUM((R.QUANTIDADE_PEDIDO - COALESCE((SELECT SUM(BD.SALDO) FROM TBREMESSA_ITEM_ALOCACAO BD WHERE BD.SALDO > 0 AND BD.PRODUTO_ID = R.PRODUTO_CODIGO AND BD.TAMANHO = R.TAMANHO AND BD.TIPO = 'P' AND BD.TABELA_ID > 0 AND BD.TAB_ITEM_ID > 0 AND BD.LOCALIZACAO_ID = :LOCALIZACAO_CODIGO AND BD.ESTABELECIMENTO_ID = :ESTABELECIMENTO_CODIGO), 0.00))) AS QUANTIDADE, R.PRODUTO_CODIGO, R.TAMANHO FROM TBREMESSA RR, TBPEDIDO_ITEM_PROCESSADO R LEFT JOIN TBPRODUTO P ON P.CODIGO = R.PRODUTO_CODIGO WHERE RR.NUMERO = R.REMESSA AND COALESCE(R.ESTOQUE_ID, 0) = 0 AND RR.ORIGEM = 22600 AND R.SITUACAO < 6 AND R.PRODUTO_CODIGO = :PRODUTO_ID AND R.MODELO_CODIGO = P.MODELO_CODIGO AND R.COR_ID = P.COR_CODIGO GROUP BY RR.NUMERO, R.REMESSA, RR.ORIGEM, R.SITUACAO, R.PRODUTO_CODIGO, R.MODELO_CODIGO, R.COR_ID, R.TAMANHO ) WHERE TAMANHO = 9  GROUP BY PRODUTO_CODIGO, TAMANHO UNION
            SELECT PRODUTO_CODIGO, TAMANHO, SUM(QUANTIDADE) AS SALDO FROM ( SELECT SUM((R.QUANTIDADE_PEDIDO - COALESCE((SELECT SUM(BD.SALDO) FROM TBREMESSA_ITEM_ALOCACAO BD WHERE BD.SALDO > 0 AND BD.PRODUTO_ID = R.PRODUTO_CODIGO AND BD.TAMANHO = R.TAMANHO AND BD.TIPO = 'P' AND BD.TABELA_ID > 0 AND BD.TAB_ITEM_ID > 0 AND BD.LOCALIZACAO_ID = :LOCALIZACAO_CODIGO AND BD.ESTABELECIMENTO_ID = :ESTABELECIMENTO_CODIGO), 0.00))) AS QUANTIDADE, R.PRODUTO_CODIGO, R.TAMANHO FROM TBREMESSA RR, TBPEDIDO_ITEM_PROCESSADO R LEFT JOIN TBPRODUTO P ON P.CODIGO = R.PRODUTO_CODIGO WHERE RR.NUMERO = R.REMESSA AND COALESCE(R.ESTOQUE_ID, 0) = 0 AND RR.ORIGEM = 22600 AND R.SITUACAO < 6 AND R.PRODUTO_CODIGO = :PRODUTO_ID AND R.MODELO_CODIGO = P.MODELO_CODIGO AND R.COR_ID = P.COR_CODIGO GROUP BY RR.NUMERO, R.REMESSA, RR.ORIGEM, R.SITUACAO, R.PRODUTO_CODIGO, R.MODELO_CODIGO, R.COR_ID, R.TAMANHO ) WHERE TAMANHO = 10 GROUP BY PRODUTO_CODIGO, TAMANHO UNION
            SELECT PRODUTO_CODIGO, TAMANHO, SUM(QUANTIDADE) AS SALDO FROM ( SELECT SUM((R.QUANTIDADE_PEDIDO - COALESCE((SELECT SUM(BD.SALDO) FROM TBREMESSA_ITEM_ALOCACAO BD WHERE BD.SALDO > 0 AND BD.PRODUTO_ID = R.PRODUTO_CODIGO AND BD.TAMANHO = R.TAMANHO AND BD.TIPO = 'P' AND BD.TABELA_ID > 0 AND BD.TAB_ITEM_ID > 0 AND BD.LOCALIZACAO_ID = :LOCALIZACAO_CODIGO AND BD.ESTABELECIMENTO_ID = :ESTABELECIMENTO_CODIGO), 0.00))) AS QUANTIDADE, R.PRODUTO_CODIGO, R.TAMANHO FROM TBREMESSA RR, TBPEDIDO_ITEM_PROCESSADO R LEFT JOIN TBPRODUTO P ON P.CODIGO = R.PRODUTO_CODIGO WHERE RR.NUMERO = R.REMESSA AND COALESCE(R.ESTOQUE_ID, 0) = 0 AND RR.ORIGEM = 22600 AND R.SITUACAO < 6 AND R.PRODUTO_CODIGO = :PRODUTO_ID AND R.MODELO_CODIGO = P.MODELO_CODIGO AND R.COR_ID = P.COR_CODIGO GROUP BY RR.NUMERO, R.REMESSA, RR.ORIGEM, R.SITUACAO, R.PRODUTO_CODIGO, R.MODELO_CODIGO, R.COR_ID, R.TAMANHO ) WHERE TAMANHO = 11 GROUP BY PRODUTO_CODIGO, TAMANHO UNION
            SELECT PRODUTO_CODIGO, TAMANHO, SUM(QUANTIDADE) AS SALDO FROM ( SELECT SUM((R.QUANTIDADE_PEDIDO - COALESCE((SELECT SUM(BD.SALDO) FROM TBREMESSA_ITEM_ALOCACAO BD WHERE BD.SALDO > 0 AND BD.PRODUTO_ID = R.PRODUTO_CODIGO AND BD.TAMANHO = R.TAMANHO AND BD.TIPO = 'P' AND BD.TABELA_ID > 0 AND BD.TAB_ITEM_ID > 0 AND BD.LOCALIZACAO_ID = :LOCALIZACAO_CODIGO AND BD.ESTABELECIMENTO_ID = :ESTABELECIMENTO_CODIGO), 0.00))) AS QUANTIDADE, R.PRODUTO_CODIGO, R.TAMANHO FROM TBREMESSA RR, TBPEDIDO_ITEM_PROCESSADO R LEFT JOIN TBPRODUTO P ON P.CODIGO = R.PRODUTO_CODIGO WHERE RR.NUMERO = R.REMESSA AND COALESCE(R.ESTOQUE_ID, 0) = 0 AND RR.ORIGEM = 22600 AND R.SITUACAO < 6 AND R.PRODUTO_CODIGO = :PRODUTO_ID AND R.MODELO_CODIGO = P.MODELO_CODIGO AND R.COR_ID = P.COR_CODIGO GROUP BY RR.NUMERO, R.REMESSA, RR.ORIGEM, R.SITUACAO, R.PRODUTO_CODIGO, R.MODELO_CODIGO, R.COR_ID, R.TAMANHO ) WHERE TAMANHO = 12 GROUP BY PRODUTO_CODIGO, TAMANHO UNION
            SELECT PRODUTO_CODIGO, TAMANHO, SUM(QUANTIDADE) AS SALDO FROM ( SELECT SUM((R.QUANTIDADE_PEDIDO - COALESCE((SELECT SUM(BD.SALDO) FROM TBREMESSA_ITEM_ALOCACAO BD WHERE BD.SALDO > 0 AND BD.PRODUTO_ID = R.PRODUTO_CODIGO AND BD.TAMANHO = R.TAMANHO AND BD.TIPO = 'P' AND BD.TABELA_ID > 0 AND BD.TAB_ITEM_ID > 0 AND BD.LOCALIZACAO_ID = :LOCALIZACAO_CODIGO AND BD.ESTABELECIMENTO_ID = :ESTABELECIMENTO_CODIGO), 0.00))) AS QUANTIDADE, R.PRODUTO_CODIGO, R.TAMANHO FROM TBREMESSA RR, TBPEDIDO_ITEM_PROCESSADO R LEFT JOIN TBPRODUTO P ON P.CODIGO = R.PRODUTO_CODIGO WHERE RR.NUMERO = R.REMESSA AND COALESCE(R.ESTOQUE_ID, 0) = 0 AND RR.ORIGEM = 22600 AND R.SITUACAO < 6 AND R.PRODUTO_CODIGO = :PRODUTO_ID AND R.MODELO_CODIGO = P.MODELO_CODIGO AND R.COR_ID = P.COR_CODIGO GROUP BY RR.NUMERO, R.REMESSA, RR.ORIGEM, R.SITUACAO, R.PRODUTO_CODIGO, R.MODELO_CODIGO, R.COR_ID, R.TAMANHO ) WHERE TAMANHO = 13 GROUP BY PRODUTO_CODIGO, TAMANHO UNION
            SELECT PRODUTO_CODIGO, TAMANHO, SUM(QUANTIDADE) AS SALDO FROM ( SELECT SUM((R.QUANTIDADE_PEDIDO - COALESCE((SELECT SUM(BD.SALDO) FROM TBREMESSA_ITEM_ALOCACAO BD WHERE BD.SALDO > 0 AND BD.PRODUTO_ID = R.PRODUTO_CODIGO AND BD.TAMANHO = R.TAMANHO AND BD.TIPO = 'P' AND BD.TABELA_ID > 0 AND BD.TAB_ITEM_ID > 0 AND BD.LOCALIZACAO_ID = :LOCALIZACAO_CODIGO AND BD.ESTABELECIMENTO_ID = :ESTABELECIMENTO_CODIGO), 0.00))) AS QUANTIDADE, R.PRODUTO_CODIGO, R.TAMANHO FROM TBREMESSA RR, TBPEDIDO_ITEM_PROCESSADO R LEFT JOIN TBPRODUTO P ON P.CODIGO = R.PRODUTO_CODIGO WHERE RR.NUMERO = R.REMESSA AND COALESCE(R.ESTOQUE_ID, 0) = 0 AND RR.ORIGEM = 22600 AND R.SITUACAO < 6 AND R.PRODUTO_CODIGO = :PRODUTO_ID AND R.MODELO_CODIGO = P.MODELO_CODIGO AND R.COR_ID = P.COR_CODIGO GROUP BY RR.NUMERO, R.REMESSA, RR.ORIGEM, R.SITUACAO, R.PRODUTO_CODIGO, R.MODELO_CODIGO, R.COR_ID, R.TAMANHO ) WHERE TAMANHO = 14 GROUP BY PRODUTO_CODIGO, TAMANHO UNION
            SELECT PRODUTO_CODIGO, TAMANHO, SUM(QUANTIDADE) AS SALDO FROM ( SELECT SUM((R.QUANTIDADE_PEDIDO - COALESCE((SELECT SUM(BD.SALDO) FROM TBREMESSA_ITEM_ALOCACAO BD WHERE BD.SALDO > 0 AND BD.PRODUTO_ID = R.PRODUTO_CODIGO AND BD.TAMANHO = R.TAMANHO AND BD.TIPO = 'P' AND BD.TABELA_ID > 0 AND BD.TAB_ITEM_ID > 0 AND BD.LOCALIZACAO_ID = :LOCALIZACAO_CODIGO AND BD.ESTABELECIMENTO_ID = :ESTABELECIMENTO_CODIGO), 0.00))) AS QUANTIDADE, R.PRODUTO_CODIGO, R.TAMANHO FROM TBREMESSA RR, TBPEDIDO_ITEM_PROCESSADO R LEFT JOIN TBPRODUTO P ON P.CODIGO = R.PRODUTO_CODIGO WHERE RR.NUMERO = R.REMESSA AND COALESCE(R.ESTOQUE_ID, 0) = 0 AND RR.ORIGEM = 22600 AND R.SITUACAO < 6 AND R.PRODUTO_CODIGO = :PRODUTO_ID AND R.MODELO_CODIGO = P.MODELO_CODIGO AND R.COR_ID = P.COR_CODIGO GROUP BY RR.NUMERO, R.REMESSA, RR.ORIGEM, R.SITUACAO, R.PRODUTO_CODIGO, R.MODELO_CODIGO, R.COR_ID, R.TAMANHO ) WHERE TAMANHO = 15 GROUP BY PRODUTO_CODIGO, TAMANHO UNION
            SELECT PRODUTO_CODIGO, TAMANHO, SUM(QUANTIDADE) AS SALDO FROM ( SELECT SUM((R.QUANTIDADE_PEDIDO - COALESCE((SELECT SUM(BD.SALDO) FROM TBREMESSA_ITEM_ALOCACAO BD WHERE BD.SALDO > 0 AND BD.PRODUTO_ID = R.PRODUTO_CODIGO AND BD.TAMANHO = R.TAMANHO AND BD.TIPO = 'P' AND BD.TABELA_ID > 0 AND BD.TAB_ITEM_ID > 0 AND BD.LOCALIZACAO_ID = :LOCALIZACAO_CODIGO AND BD.ESTABELECIMENTO_ID = :ESTABELECIMENTO_CODIGO), 0.00))) AS QUANTIDADE, R.PRODUTO_CODIGO, R.TAMANHO FROM TBREMESSA RR, TBPEDIDO_ITEM_PROCESSADO R LEFT JOIN TBPRODUTO P ON P.CODIGO = R.PRODUTO_CODIGO WHERE RR.NUMERO = R.REMESSA AND COALESCE(R.ESTOQUE_ID, 0) = 0 AND RR.ORIGEM = 22600 AND R.SITUACAO < 6 AND R.PRODUTO_CODIGO = :PRODUTO_ID AND R.MODELO_CODIGO = P.MODELO_CODIGO AND R.COR_ID = P.COR_CODIGO GROUP BY RR.NUMERO, R.REMESSA, RR.ORIGEM, R.SITUACAO, R.PRODUTO_CODIGO, R.MODELO_CODIGO, R.COR_ID, R.TAMANHO ) WHERE TAMANHO = 16 GROUP BY PRODUTO_CODIGO, TAMANHO UNION
            SELECT PRODUTO_CODIGO, TAMANHO, SUM(QUANTIDADE) AS SALDO FROM ( SELECT SUM((R.QUANTIDADE_PEDIDO - COALESCE((SELECT SUM(BD.SALDO) FROM TBREMESSA_ITEM_ALOCACAO BD WHERE BD.SALDO > 0 AND BD.PRODUTO_ID = R.PRODUTO_CODIGO AND BD.TAMANHO = R.TAMANHO AND BD.TIPO = 'P' AND BD.TABELA_ID > 0 AND BD.TAB_ITEM_ID > 0 AND BD.LOCALIZACAO_ID = :LOCALIZACAO_CODIGO AND BD.ESTABELECIMENTO_ID = :ESTABELECIMENTO_CODIGO), 0.00))) AS QUANTIDADE, R.PRODUTO_CODIGO, R.TAMANHO FROM TBREMESSA RR, TBPEDIDO_ITEM_PROCESSADO R LEFT JOIN TBPRODUTO P ON P.CODIGO = R.PRODUTO_CODIGO WHERE RR.NUMERO = R.REMESSA AND COALESCE(R.ESTOQUE_ID, 0) = 0 AND RR.ORIGEM = 22600 AND R.SITUACAO < 6 AND R.PRODUTO_CODIGO = :PRODUTO_ID AND R.MODELO_CODIGO = P.MODELO_CODIGO AND R.COR_ID = P.COR_CODIGO GROUP BY RR.NUMERO, R.REMESSA, RR.ORIGEM, R.SITUACAO, R.PRODUTO_CODIGO, R.MODELO_CODIGO, R.COR_ID, R.TAMANHO ) WHERE TAMANHO = 17 GROUP BY PRODUTO_CODIGO, TAMANHO UNION
            SELECT PRODUTO_CODIGO, TAMANHO, SUM(QUANTIDADE) AS SALDO FROM ( SELECT SUM((R.QUANTIDADE_PEDIDO - COALESCE((SELECT SUM(BD.SALDO) FROM TBREMESSA_ITEM_ALOCACAO BD WHERE BD.SALDO > 0 AND BD.PRODUTO_ID = R.PRODUTO_CODIGO AND BD.TAMANHO = R.TAMANHO AND BD.TIPO = 'P' AND BD.TABELA_ID > 0 AND BD.TAB_ITEM_ID > 0 AND BD.LOCALIZACAO_ID = :LOCALIZACAO_CODIGO AND BD.ESTABELECIMENTO_ID = :ESTABELECIMENTO_CODIGO), 0.00))) AS QUANTIDADE, R.PRODUTO_CODIGO, R.TAMANHO FROM TBREMESSA RR, TBPEDIDO_ITEM_PROCESSADO R LEFT JOIN TBPRODUTO P ON P.CODIGO = R.PRODUTO_CODIGO WHERE RR.NUMERO = R.REMESSA AND COALESCE(R.ESTOQUE_ID, 0) = 0 AND RR.ORIGEM = 22600 AND R.SITUACAO < 6 AND R.PRODUTO_CODIGO = :PRODUTO_ID AND R.MODELO_CODIGO = P.MODELO_CODIGO AND R.COR_ID = P.COR_CODIGO GROUP BY RR.NUMERO, R.REMESSA, RR.ORIGEM, R.SITUACAO, R.PRODUTO_CODIGO, R.MODELO_CODIGO, R.COR_ID, R.TAMANHO ) WHERE TAMANHO = 18 GROUP BY PRODUTO_CODIGO, TAMANHO UNION
            SELECT PRODUTO_CODIGO, TAMANHO, SUM(QUANTIDADE) AS SALDO FROM ( SELECT SUM((R.QUANTIDADE_PEDIDO - COALESCE((SELECT SUM(BD.SALDO) FROM TBREMESSA_ITEM_ALOCACAO BD WHERE BD.SALDO > 0 AND BD.PRODUTO_ID = R.PRODUTO_CODIGO AND BD.TAMANHO = R.TAMANHO AND BD.TIPO = 'P' AND BD.TABELA_ID > 0 AND BD.TAB_ITEM_ID > 0 AND BD.LOCALIZACAO_ID = :LOCALIZACAO_CODIGO AND BD.ESTABELECIMENTO_ID = :ESTABELECIMENTO_CODIGO), 0.00))) AS QUANTIDADE, R.PRODUTO_CODIGO, R.TAMANHO FROM TBREMESSA RR, TBPEDIDO_ITEM_PROCESSADO R LEFT JOIN TBPRODUTO P ON P.CODIGO = R.PRODUTO_CODIGO WHERE RR.NUMERO = R.REMESSA AND COALESCE(R.ESTOQUE_ID, 0) = 0 AND RR.ORIGEM = 22600 AND R.SITUACAO < 6 AND R.PRODUTO_CODIGO = :PRODUTO_ID AND R.MODELO_CODIGO = P.MODELO_CODIGO AND R.COR_ID = P.COR_CODIGO GROUP BY RR.NUMERO, R.REMESSA, RR.ORIGEM, R.SITUACAO, R.PRODUTO_CODIGO, R.MODELO_CODIGO, R.COR_ID, R.TAMANHO ) WHERE TAMANHO = 19 GROUP BY PRODUTO_CODIGO, TAMANHO UNION
            SELECT PRODUTO_CODIGO, TAMANHO, SUM(QUANTIDADE) AS SALDO FROM ( SELECT SUM((R.QUANTIDADE_PEDIDO - COALESCE((SELECT SUM(BD.SALDO) FROM TBREMESSA_ITEM_ALOCACAO BD WHERE BD.SALDO > 0 AND BD.PRODUTO_ID = R.PRODUTO_CODIGO AND BD.TAMANHO = R.TAMANHO AND BD.TIPO = 'P' AND BD.TABELA_ID > 0 AND BD.TAB_ITEM_ID > 0 AND BD.LOCALIZACAO_ID = :LOCALIZACAO_CODIGO AND BD.ESTABELECIMENTO_ID = :ESTABELECIMENTO_CODIGO), 0.00))) AS QUANTIDADE, R.PRODUTO_CODIGO, R.TAMANHO FROM TBREMESSA RR, TBPEDIDO_ITEM_PROCESSADO R LEFT JOIN TBPRODUTO P ON P.CODIGO = R.PRODUTO_CODIGO WHERE RR.NUMERO = R.REMESSA AND COALESCE(R.ESTOQUE_ID, 0) = 0 AND RR.ORIGEM = 22600 AND R.SITUACAO < 6 AND R.PRODUTO_CODIGO = :PRODUTO_ID AND R.MODELO_CODIGO = P.MODELO_CODIGO AND R.COR_ID = P.COR_CODIGO GROUP BY RR.NUMERO, R.REMESSA, RR.ORIGEM, R.SITUACAO, R.PRODUTO_CODIGO, R.MODELO_CODIGO, R.COR_ID, R.TAMANHO ) WHERE TAMANHO = 20 GROUP BY PRODUTO_CODIGO, TAMANHO
        
        ) Z
        LEFT JOIN TBPRODUTO P ON P.CODIGO = Z.PRODUTO_CODIGO
        WHERE Z.SALDO > 0

    INTO
         :ESTABELECIMENTO_ID
        ,:LOCALIZACAO_ID
        ,:FAMILIA_ID
        ,:PRODUTO_ID2
        ,:PRODUTO_DESCRICAO
        ,:GRADE_ID
        ,:TAMANHO
        ,:TAMANHO_DESCRICAO
        ,:SALDO
        ,:SALDO_ALOCADO
        ,:SALDO_PEDIDO
        ,:UM
        ,:FILTRO

    DO
    SUSPEND;
END
^

SET TERM ; ^

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

SET TERM ^ ;

CREATE OR ALTER procedure SPC_QTD_ESTOQUE_DISP_RESSUP (
    ESTABELECIMENTO_CODIGO integer,
    PRODUTO_ID integer,
    PERFIL_PEDIDO varchar(10),
    TAMANHO_ID integer,
    LOCALIZACAO_CODIGO integer = 0,
    TIPO_ESTOQUE integer = 1)
returns (
    ESTABELECIMENTO_ID integer,
    LOCALIZACAO_ID integer,
    FAMILIA_ID integer,
    PRODUTO_ID2 integer,
    PRODUTO_DESCRICAO varchar(100),
    GRADE_ID integer,
    TAMANHO integer,
    TAMANHO_DESCRICAO varchar(50),
    SALDO numeric(18,5),
    SALDO_ALOCADO numeric(18,5),
    SALDO_PEDIDO numeric(18,5),
    UM varchar(10),
    FILTRO varchar(2000))
as
BEGIN

    IF (:TIPO_ESTOQUE = 1) THEN
    BEGIN

        FOR
            SELECT
                ZETA3.ESTABELECIMENTO_ID,
                ZETA3.LOCALIZACAO_ID,
                ZETA3.FAMILIA_ID,
                ZETA3.PRODUTO_ID2,
                ZETA3.PRODUTO_DESCRICAO,
                ZETA3.GRADE_ID,
                ZETA3.TAMANHO,
                ZETA3.TAMANHO_DESCRICAO,
                ZETA3.SALDO,
                ZETA3.SALDO_ALOCADO,
                ZETA3.SALDO_PEDIDO,
                ZETA3.UM,
                ZETA3.FILTRO
    
            FROM SPC_ESTOQUE_SALDO_DISP_PEDIDO2(:PRODUTO_ID, :PERFIL_PEDIDO, :LOCALIZACAO_CODIGO) ZETA3
            WHERE ZETA3.ESTABELECIMENTO_ID = :ESTABELECIMENTO_CODIGO
            AND ZETA3.LOCALIZACAO_ID = :LOCALIZACAO_CODIGO
            AND ZETA3.PRODUTO_ID2 = :PRODUTO_ID
            AND ZETA3.TAMANHO = :TAMANHO_ID

        INTO
             :ESTABELECIMENTO_ID
            ,:LOCALIZACAO_ID
            ,:FAMILIA_ID
            ,:PRODUTO_ID2
            ,:PRODUTO_DESCRICAO
            ,:GRADE_ID
            ,:TAMANHO
            ,:TAMANHO_DESCRICAO
            ,:SALDO
            ,:SALDO_ALOCADO
            ,:SALDO_PEDIDO
            ,:UM
            ,:FILTRO

        DO
        BEGIN
            SUSPEND;
        END

    END ELSE
    IF (:TIPO_ESTOQUE = 2) THEN
    BEGIN

        FOR
            SELECT
                ZETA4.ESTABELECIMENTO_ID,
                ZETA4.LOCALIZACAO_ID,
                ZETA4.FAMILIA_ID,
                ZETA4.PRODUTO_ID2,
                ZETA4.PRODUTO_DESCRICAO,
                ZETA4.GRADE_ID,
                ZETA4.TAMANHO,
                ZETA4.TAMANHO_DESCRICAO,
                ZETA4.SALDO,
                ZETA4.SALDO_ALOCADO,
                ZETA4.SALDO_PEDIDO,
                ZETA4.UM,
                ZETA4.FILTRO
    
            FROM SPC_ESTOQUE_SALDO_RESSUPRIMENTO(:PRODUTO_ID, :ESTABELECIMENTO_CODIGO, :LOCALIZACAO_CODIGO) ZETA4
            WHERE ZETA4.ESTABELECIMENTO_ID = :ESTABELECIMENTO_CODIGO
            AND ZETA4.LOCALIZACAO_ID = :LOCALIZACAO_CODIGO
            AND ZETA4.PRODUTO_ID2 = :PRODUTO_ID
            AND ZETA4.TAMANHO = :TAMANHO_ID

        INTO
             :ESTABELECIMENTO_ID
            ,:LOCALIZACAO_ID
            ,:FAMILIA_ID
            ,:PRODUTO_ID2
            ,:PRODUTO_DESCRICAO
            ,:GRADE_ID
            ,:TAMANHO
            ,:TAMANHO_DESCRICAO
            ,:SALDO
            ,:SALDO_ALOCADO
            ,:SALDO_PEDIDO
            ,:UM
            ,:FILTRO

        DO
        BEGIN
            SUSPEND;
        END

    END ELSE
    IF (:TIPO_ESTOQUE = 3) THEN
    BEGIN

        FOR
            SELECT
                ZETA5.ESTABELECIMENTO_ID,
                ZETA5.LOCALIZACAO_ID,
                ZETA5.FAMILIA_ID,
                ZETA5.PRODUTO_ID2,
                ZETA5.PRODUTO_DESCRICAO,
                ZETA5.GRADE_ID,
                ZETA5.TAMANHO,
                ZETA5.TAMANHO_DESCRICAO,
                SUM(ZETA5.SALDO) AS SALDO,
                SUM(ZETA5.SALDO_ALOCADO) AS SALDO_ALOCADO,
                SUM(ZETA5.SALDO_PEDIDO) AS SALDO_PEDIDO,
                ZETA5.UM,
                ZETA5.FILTRO
            
            FROM (
                SELECT
                    ZETA3.ESTABELECIMENTO_ID,
                    ZETA3.LOCALIZACAO_ID,
                    ZETA3.FAMILIA_ID,
                    ZETA3.PRODUTO_ID2,
                    ZETA3.PRODUTO_DESCRICAO,
                    ZETA3.GRADE_ID,
                    ZETA3.TAMANHO,
                    ZETA3.TAMANHO_DESCRICAO,
                    ZETA3.SALDO,
                    ZETA3.SALDO_ALOCADO,
                    ZETA3.SALDO_PEDIDO,
                    ZETA3.UM,
                    ZETA3.FILTRO
                
                FROM SPC_ESTOQUE_SALDO_DISP_PEDIDO2(:PRODUTO_ID, :PERFIL_PEDIDO, :LOCALIZACAO_CODIGO) ZETA3
                WHERE ZETA3.ESTABELECIMENTO_ID = :ESTABELECIMENTO_CODIGO
                AND ZETA3.LOCALIZACAO_ID = :LOCALIZACAO_CODIGO
                AND ZETA3.PRODUTO_ID2 = :PRODUTO_ID
                AND ZETA3.TAMANHO = :TAMANHO_ID
                
                UNION ALL
                
                SELECT
                    ZETA4.ESTABELECIMENTO_ID,
                    ZETA4.LOCALIZACAO_ID,
                    ZETA4.FAMILIA_ID,
                    ZETA4.PRODUTO_ID2,
                    ZETA4.PRODUTO_DESCRICAO,
                    ZETA4.GRADE_ID,
                    ZETA4.TAMANHO,
                    ZETA4.TAMANHO_DESCRICAO,
                    ZETA4.SALDO,
                    ZETA4.SALDO_ALOCADO,
                    ZETA4.SALDO_PEDIDO,
                    ZETA4.UM,
                    ZETA4.FILTRO
                
                FROM SPC_ESTOQUE_SALDO_RESSUPRIMENTO(:PRODUTO_ID, :ESTABELECIMENTO_CODIGO, :LOCALIZACAO_CODIGO) ZETA4
                WHERE ZETA4.ESTABELECIMENTO_ID = :ESTABELECIMENTO_CODIGO
                AND ZETA4.LOCALIZACAO_ID = :LOCALIZACAO_CODIGO
                AND ZETA4.PRODUTO_ID2 = :PRODUTO_ID
                AND ZETA4.TAMANHO = :TAMANHO_ID
            
            ) ZETA5
            
            GROUP BY
                ZETA5.ESTABELECIMENTO_ID,
                ZETA5.LOCALIZACAO_ID,
                ZETA5.FAMILIA_ID,
                ZETA5.PRODUTO_ID2,
                ZETA5.PRODUTO_DESCRICAO,
                ZETA5.GRADE_ID,
                ZETA5.TAMANHO,
                ZETA5.TAMANHO_DESCRICAO,
                ZETA5.UM,
                ZETA5.FILTRO

        INTO
             :ESTABELECIMENTO_ID
            ,:LOCALIZACAO_ID
            ,:FAMILIA_ID
            ,:PRODUTO_ID2
            ,:PRODUTO_DESCRICAO
            ,:GRADE_ID
            ,:TAMANHO
            ,:TAMANHO_DESCRICAO
            ,:SALDO
            ,:SALDO_ALOCADO
            ,:SALDO_PEDIDO
            ,:UM
            ,:FILTRO

        DO
        BEGIN
            SUSPEND;
        END

    END

END
^

SET TERM ; ^

