SET TERM ^ ;
CREATE OR ALTER PROCEDURE SPC_ESTOQUE_SALDO_DISP_PEDIDO2 (
    PRODUTO_ID INTEGER,
    PERFIL_PEDIDO VARCHAR(10))
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
        Z.ESTABELECIMENTO_ID,
        Z.LOCALIZACAO_ID,
        Z.FAMILIA_ID, 
        Z.PRODUTO_ID,
        Z.DESCRICAO PRODUTO_DESCRICAO,
        Z.GRADE_ID,
        Z.TAMANHO,
        Z.TAMANHO_DESCRICAO,
        Z.SALDO,
        Z.SALDO - COALESCE((SELECT EA.QUANTIDADE     FROM TBESTOQUE_SALDO_ALOCACAO EA WHERE EA.ESTABELECIMENTO_ID = Z.ESTABELECIMENTO_ID AND EA.LOCALIZACAO_ID = Z.LOCALIZACAO_ID AND EA.PRODUTO_ID = Z.PRODUTO_ID AND EA.TAMANHO = Z.TAMANHO),0) AS SALDO_ALOCADO,
        Z.SALDO - COALESCE((SELECT SUM(E.QUANTIDADE) FROM TBPEDIDO C, TBPEDIDO_ITEM D, TBPEDIDO_ITEM_SALDO E WHERE C.PEDIDO = D.PEDIDO AND E.PEDIDO = D.PEDIDO AND E.pedido_item_controle = D.CONTROLE AND D.SITUACAO = 1 AND C.SITUACAO = 1 AND D.PRODUTO_CODIGO = Z.PRODUTO_ID AND C.ESTABELECIMENTO_CODIGO = Z.ESTABELECIMENTO_ID AND D.LOCALIZACAO_ID = Z.LOCALIZACAO_ID AND D.TAMANHO = Z.TAMANHO AND E.QUANTIDADE > 0),0) AS SALDO_PEDIDO,
        Z.UNIDADEMEDIDA_SIGLA UM,
        FN_LPAD(Z.PRODUTO_ID,6,0) || ' - ' || Z.DESCRICAO || ' - ' || Z.TAMANHO_DESCRICAO FILTRO
        FROM (
                SELECT A.ESTABELECIMENTO_CODIGO ESTABELECIMENTO_ID, A.LOCALIZACAO_CODIGO LOCALIZACAO_ID, A.PRODUTO_CODIGO PRODUTO_ID, P.FAMILIA_CODIGO FAMILIA_ID, P.DESCRICAO, P.GRADE_CODIGO GRADE_ID, 00 TAMANHO,                                  '' TAMANHO_DESCRICAO, A.SALDO    , P.UNIDADEMEDIDA_SIGLA FROM TBESTOQUE_SALDO A LEFT JOIN TBPRODUTO P ON P.CODIGO = A.PRODUTO_CODIGO   WHERE A.SALDO     > 0 AND (SELECT FIRST 1 C.LOCALIZACAO_ID FROM TBPERFIL C WHERE C.ID = :PERFIL_PEDIDO AND C.TABELA = 'PED') = A.LOCALIZACAO_CODIGO AND P.GRADE_CODIGO = 0 UNION
                SELECT A.ESTABELECIMENTO_CODIGO ESTABELECIMENTO_ID, A.LOCALIZACAO_CODIGO LOCALIZACAO_ID, A.PRODUTO_CODIGO PRODUTO_ID, P.FAMILIA_CODIGO FAMILIA_ID, P.DESCRICAO, P.GRADE_CODIGO GRADE_ID, 01 TAMANHO, FN_TAMANHO_GRADE(P.GRADE_CODIGO,01) TAMANHO_DESCRICAO, A.T01_SALDO, P.UNIDADEMEDIDA_SIGLA FROM TBESTOQUE_SALDO A LEFT JOIN TBPRODUTO P ON P.CODIGO = A.PRODUTO_CODIGO   WHERE A.T01_SALDO > 0 AND (SELECT FIRST 1 C.LOCALIZACAO_ID FROM TBPERFIL C WHERE C.ID = :PERFIL_PEDIDO AND C.TABELA = 'PED') = A.LOCALIZACAO_CODIGO AND P.GRADE_CODIGO > 0 UNION
                SELECT A.ESTABELECIMENTO_CODIGO ESTABELECIMENTO_ID, A.LOCALIZACAO_CODIGO LOCALIZACAO_ID, A.PRODUTO_CODIGO PRODUTO_ID, P.FAMILIA_CODIGO FAMILIA_ID, P.DESCRICAO, P.GRADE_CODIGO GRADE_ID, 02 TAMANHO, FN_TAMANHO_GRADE(P.GRADE_CODIGO,02) TAMANHO_DESCRICAO, A.T02_SALDO, P.UNIDADEMEDIDA_SIGLA FROM TBESTOQUE_SALDO A LEFT JOIN TBPRODUTO P ON P.CODIGO = A.PRODUTO_CODIGO   WHERE A.T02_SALDO > 0 AND (SELECT FIRST 1 C.LOCALIZACAO_ID FROM TBPERFIL C WHERE C.ID = :PERFIL_PEDIDO AND C.TABELA = 'PED') = A.LOCALIZACAO_CODIGO AND P.GRADE_CODIGO > 0 UNION
                SELECT A.ESTABELECIMENTO_CODIGO ESTABELECIMENTO_ID, A.LOCALIZACAO_CODIGO LOCALIZACAO_ID, A.PRODUTO_CODIGO PRODUTO_ID, P.FAMILIA_CODIGO FAMILIA_ID, P.DESCRICAO, P.GRADE_CODIGO GRADE_ID, 03 TAMANHO, FN_TAMANHO_GRADE(P.GRADE_CODIGO,03) TAMANHO_DESCRICAO, A.T03_SALDO, P.UNIDADEMEDIDA_SIGLA FROM TBESTOQUE_SALDO A LEFT JOIN TBPRODUTO P ON P.CODIGO = A.PRODUTO_CODIGO   WHERE A.T03_SALDO > 0 AND (SELECT FIRST 1 C.LOCALIZACAO_ID FROM TBPERFIL C WHERE C.ID = :PERFIL_PEDIDO AND C.TABELA = 'PED') = A.LOCALIZACAO_CODIGO AND P.GRADE_CODIGO > 0 UNION
                SELECT A.ESTABELECIMENTO_CODIGO ESTABELECIMENTO_ID, A.LOCALIZACAO_CODIGO LOCALIZACAO_ID, A.PRODUTO_CODIGO PRODUTO_ID, P.FAMILIA_CODIGO FAMILIA_ID, P.DESCRICAO, P.GRADE_CODIGO GRADE_ID, 04 TAMANHO, FN_TAMANHO_GRADE(P.GRADE_CODIGO,04) TAMANHO_DESCRICAO, A.T04_SALDO, P.UNIDADEMEDIDA_SIGLA FROM TBESTOQUE_SALDO A LEFT JOIN TBPRODUTO P ON P.CODIGO = A.PRODUTO_CODIGO   WHERE A.T04_SALDO > 0 AND (SELECT FIRST 1 C.LOCALIZACAO_ID FROM TBPERFIL C WHERE C.ID = :PERFIL_PEDIDO AND C.TABELA = 'PED') = A.LOCALIZACAO_CODIGO AND P.GRADE_CODIGO > 0 UNION
                SELECT A.ESTABELECIMENTO_CODIGO ESTABELECIMENTO_ID, A.LOCALIZACAO_CODIGO LOCALIZACAO_ID, A.PRODUTO_CODIGO PRODUTO_ID, P.FAMILIA_CODIGO FAMILIA_ID, P.DESCRICAO, P.GRADE_CODIGO GRADE_ID, 05 TAMANHO, FN_TAMANHO_GRADE(P.GRADE_CODIGO,05) TAMANHO_DESCRICAO, A.T05_SALDO, P.UNIDADEMEDIDA_SIGLA FROM TBESTOQUE_SALDO A LEFT JOIN TBPRODUTO P ON P.CODIGO = A.PRODUTO_CODIGO   WHERE A.T05_SALDO > 0 AND (SELECT FIRST 1 C.LOCALIZACAO_ID FROM TBPERFIL C WHERE C.ID = :PERFIL_PEDIDO AND C.TABELA = 'PED') = A.LOCALIZACAO_CODIGO AND P.GRADE_CODIGO > 0 UNION
                SELECT A.ESTABELECIMENTO_CODIGO ESTABELECIMENTO_ID, A.LOCALIZACAO_CODIGO LOCALIZACAO_ID, A.PRODUTO_CODIGO PRODUTO_ID, P.FAMILIA_CODIGO FAMILIA_ID, P.DESCRICAO, P.GRADE_CODIGO GRADE_ID, 06 TAMANHO, FN_TAMANHO_GRADE(P.GRADE_CODIGO,06) TAMANHO_DESCRICAO, A.T06_SALDO, P.UNIDADEMEDIDA_SIGLA FROM TBESTOQUE_SALDO A LEFT JOIN TBPRODUTO P ON P.CODIGO = A.PRODUTO_CODIGO   WHERE A.T06_SALDO > 0 AND (SELECT FIRST 1 C.LOCALIZACAO_ID FROM TBPERFIL C WHERE C.ID = :PERFIL_PEDIDO AND C.TABELA = 'PED') = A.LOCALIZACAO_CODIGO AND P.GRADE_CODIGO > 0 UNION
                SELECT A.ESTABELECIMENTO_CODIGO ESTABELECIMENTO_ID, A.LOCALIZACAO_CODIGO LOCALIZACAO_ID, A.PRODUTO_CODIGO PRODUTO_ID, P.FAMILIA_CODIGO FAMILIA_ID, P.DESCRICAO, P.GRADE_CODIGO GRADE_ID, 07 TAMANHO, FN_TAMANHO_GRADE(P.GRADE_CODIGO,07) TAMANHO_DESCRICAO, A.T07_SALDO, P.UNIDADEMEDIDA_SIGLA FROM TBESTOQUE_SALDO A LEFT JOIN TBPRODUTO P ON P.CODIGO = A.PRODUTO_CODIGO   WHERE A.T07_SALDO > 0 AND (SELECT FIRST 1 C.LOCALIZACAO_ID FROM TBPERFIL C WHERE C.ID = :PERFIL_PEDIDO AND C.TABELA = 'PED') = A.LOCALIZACAO_CODIGO AND P.GRADE_CODIGO > 0 UNION
                SELECT A.ESTABELECIMENTO_CODIGO ESTABELECIMENTO_ID, A.LOCALIZACAO_CODIGO LOCALIZACAO_ID, A.PRODUTO_CODIGO PRODUTO_ID, P.FAMILIA_CODIGO FAMILIA_ID, P.DESCRICAO, P.GRADE_CODIGO GRADE_ID, 08 TAMANHO, FN_TAMANHO_GRADE(P.GRADE_CODIGO,08) TAMANHO_DESCRICAO, A.T08_SALDO, P.UNIDADEMEDIDA_SIGLA FROM TBESTOQUE_SALDO A LEFT JOIN TBPRODUTO P ON P.CODIGO = A.PRODUTO_CODIGO   WHERE A.T08_SALDO > 0 AND (SELECT FIRST 1 C.LOCALIZACAO_ID FROM TBPERFIL C WHERE C.ID = :PERFIL_PEDIDO AND C.TABELA = 'PED') = A.LOCALIZACAO_CODIGO AND P.GRADE_CODIGO > 0 UNION
                SELECT A.ESTABELECIMENTO_CODIGO ESTABELECIMENTO_ID, A.LOCALIZACAO_CODIGO LOCALIZACAO_ID, A.PRODUTO_CODIGO PRODUTO_ID, P.FAMILIA_CODIGO FAMILIA_ID, P.DESCRICAO, P.GRADE_CODIGO GRADE_ID, 09 TAMANHO, FN_TAMANHO_GRADE(P.GRADE_CODIGO,09) TAMANHO_DESCRICAO, A.T09_SALDO, P.UNIDADEMEDIDA_SIGLA FROM TBESTOQUE_SALDO A LEFT JOIN TBPRODUTO P ON P.CODIGO = A.PRODUTO_CODIGO   WHERE A.T09_SALDO > 0 AND (SELECT FIRST 1 C.LOCALIZACAO_ID FROM TBPERFIL C WHERE C.ID = :PERFIL_PEDIDO AND C.TABELA = 'PED') = A.LOCALIZACAO_CODIGO AND P.GRADE_CODIGO > 0 UNION
                SELECT A.ESTABELECIMENTO_CODIGO ESTABELECIMENTO_ID, A.LOCALIZACAO_CODIGO LOCALIZACAO_ID, A.PRODUTO_CODIGO PRODUTO_ID, P.FAMILIA_CODIGO FAMILIA_ID, P.DESCRICAO, P.GRADE_CODIGO GRADE_ID, 10 TAMANHO, FN_TAMANHO_GRADE(P.GRADE_CODIGO,10) TAMANHO_DESCRICAO, A.T10_SALDO, P.UNIDADEMEDIDA_SIGLA FROM TBESTOQUE_SALDO A LEFT JOIN TBPRODUTO P ON P.CODIGO = A.PRODUTO_CODIGO   WHERE A.T10_SALDO > 0 AND (SELECT FIRST 1 C.LOCALIZACAO_ID FROM TBPERFIL C WHERE C.ID = :PERFIL_PEDIDO AND C.TABELA = 'PED') = A.LOCALIZACAO_CODIGO AND P.GRADE_CODIGO > 0 UNION
                SELECT A.ESTABELECIMENTO_CODIGO ESTABELECIMENTO_ID, A.LOCALIZACAO_CODIGO LOCALIZACAO_ID, A.PRODUTO_CODIGO PRODUTO_ID, P.FAMILIA_CODIGO FAMILIA_ID, P.DESCRICAO, P.GRADE_CODIGO GRADE_ID, 11 TAMANHO, FN_TAMANHO_GRADE(P.GRADE_CODIGO,11) TAMANHO_DESCRICAO, A.T11_SALDO, P.UNIDADEMEDIDA_SIGLA FROM TBESTOQUE_SALDO A LEFT JOIN TBPRODUTO P ON P.CODIGO = A.PRODUTO_CODIGO   WHERE A.T11_SALDO > 0 AND (SELECT FIRST 1 C.LOCALIZACAO_ID FROM TBPERFIL C WHERE C.ID = :PERFIL_PEDIDO AND C.TABELA = 'PED') = A.LOCALIZACAO_CODIGO AND P.GRADE_CODIGO > 0 UNION
                SELECT A.ESTABELECIMENTO_CODIGO ESTABELECIMENTO_ID, A.LOCALIZACAO_CODIGO LOCALIZACAO_ID, A.PRODUTO_CODIGO PRODUTO_ID, P.FAMILIA_CODIGO FAMILIA_ID, P.DESCRICAO, P.GRADE_CODIGO GRADE_ID, 12 TAMANHO, FN_TAMANHO_GRADE(P.GRADE_CODIGO,12) TAMANHO_DESCRICAO, A.T12_SALDO, P.UNIDADEMEDIDA_SIGLA FROM TBESTOQUE_SALDO A LEFT JOIN TBPRODUTO P ON P.CODIGO = A.PRODUTO_CODIGO   WHERE A.T12_SALDO > 0 AND (SELECT FIRST 1 C.LOCALIZACAO_ID FROM TBPERFIL C WHERE C.ID = :PERFIL_PEDIDO AND C.TABELA = 'PED') = A.LOCALIZACAO_CODIGO AND P.GRADE_CODIGO > 0 UNION
                SELECT A.ESTABELECIMENTO_CODIGO ESTABELECIMENTO_ID, A.LOCALIZACAO_CODIGO LOCALIZACAO_ID, A.PRODUTO_CODIGO PRODUTO_ID, P.FAMILIA_CODIGO FAMILIA_ID, P.DESCRICAO, P.GRADE_CODIGO GRADE_ID, 13 TAMANHO, FN_TAMANHO_GRADE(P.GRADE_CODIGO,13) TAMANHO_DESCRICAO, A.T13_SALDO, P.UNIDADEMEDIDA_SIGLA FROM TBESTOQUE_SALDO A LEFT JOIN TBPRODUTO P ON P.CODIGO = A.PRODUTO_CODIGO   WHERE A.T13_SALDO > 0 AND (SELECT FIRST 1 C.LOCALIZACAO_ID FROM TBPERFIL C WHERE C.ID = :PERFIL_PEDIDO AND C.TABELA = 'PED') = A.LOCALIZACAO_CODIGO AND P.GRADE_CODIGO > 0 UNION
                SELECT A.ESTABELECIMENTO_CODIGO ESTABELECIMENTO_ID, A.LOCALIZACAO_CODIGO LOCALIZACAO_ID, A.PRODUTO_CODIGO PRODUTO_ID, P.FAMILIA_CODIGO FAMILIA_ID, P.DESCRICAO, P.GRADE_CODIGO GRADE_ID, 14 TAMANHO, FN_TAMANHO_GRADE(P.GRADE_CODIGO,14) TAMANHO_DESCRICAO, A.T14_SALDO, P.UNIDADEMEDIDA_SIGLA FROM TBESTOQUE_SALDO A LEFT JOIN TBPRODUTO P ON P.CODIGO = A.PRODUTO_CODIGO   WHERE A.T14_SALDO > 0 AND (SELECT FIRST 1 C.LOCALIZACAO_ID FROM TBPERFIL C WHERE C.ID = :PERFIL_PEDIDO AND C.TABELA = 'PED') = A.LOCALIZACAO_CODIGO AND P.GRADE_CODIGO > 0 UNION
                SELECT A.ESTABELECIMENTO_CODIGO ESTABELECIMENTO_ID, A.LOCALIZACAO_CODIGO LOCALIZACAO_ID, A.PRODUTO_CODIGO PRODUTO_ID, P.FAMILIA_CODIGO FAMILIA_ID, P.DESCRICAO, P.GRADE_CODIGO GRADE_ID, 15 TAMANHO, FN_TAMANHO_GRADE(P.GRADE_CODIGO,15) TAMANHO_DESCRICAO, A.T15_SALDO, P.UNIDADEMEDIDA_SIGLA FROM TBESTOQUE_SALDO A LEFT JOIN TBPRODUTO P ON P.CODIGO = A.PRODUTO_CODIGO   WHERE A.T15_SALDO > 0 AND (SELECT FIRST 1 C.LOCALIZACAO_ID FROM TBPERFIL C WHERE C.ID = :PERFIL_PEDIDO AND C.TABELA = 'PED') = A.LOCALIZACAO_CODIGO AND P.GRADE_CODIGO > 0 UNION
                SELECT A.ESTABELECIMENTO_CODIGO ESTABELECIMENTO_ID, A.LOCALIZACAO_CODIGO LOCALIZACAO_ID, A.PRODUTO_CODIGO PRODUTO_ID, P.FAMILIA_CODIGO FAMILIA_ID, P.DESCRICAO, P.GRADE_CODIGO GRADE_ID, 16 TAMANHO, FN_TAMANHO_GRADE(P.GRADE_CODIGO,16) TAMANHO_DESCRICAO, A.T16_SALDO, P.UNIDADEMEDIDA_SIGLA FROM TBESTOQUE_SALDO A LEFT JOIN TBPRODUTO P ON P.CODIGO = A.PRODUTO_CODIGO   WHERE A.T16_SALDO > 0 AND (SELECT FIRST 1 C.LOCALIZACAO_ID FROM TBPERFIL C WHERE C.ID = :PERFIL_PEDIDO AND C.TABELA = 'PED') = A.LOCALIZACAO_CODIGO AND P.GRADE_CODIGO > 0 UNION
                SELECT A.ESTABELECIMENTO_CODIGO ESTABELECIMENTO_ID, A.LOCALIZACAO_CODIGO LOCALIZACAO_ID, A.PRODUTO_CODIGO PRODUTO_ID, P.FAMILIA_CODIGO FAMILIA_ID, P.DESCRICAO, P.GRADE_CODIGO GRADE_ID, 17 TAMANHO, FN_TAMANHO_GRADE(P.GRADE_CODIGO,17) TAMANHO_DESCRICAO, A.T17_SALDO, P.UNIDADEMEDIDA_SIGLA FROM TBESTOQUE_SALDO A LEFT JOIN TBPRODUTO P ON P.CODIGO = A.PRODUTO_CODIGO   WHERE A.T17_SALDO > 0 AND (SELECT FIRST 1 C.LOCALIZACAO_ID FROM TBPERFIL C WHERE C.ID = :PERFIL_PEDIDO AND C.TABELA = 'PED') = A.LOCALIZACAO_CODIGO AND P.GRADE_CODIGO > 0 UNION
                SELECT A.ESTABELECIMENTO_CODIGO ESTABELECIMENTO_ID, A.LOCALIZACAO_CODIGO LOCALIZACAO_ID, A.PRODUTO_CODIGO PRODUTO_ID, P.FAMILIA_CODIGO FAMILIA_ID, P.DESCRICAO, P.GRADE_CODIGO GRADE_ID, 18 TAMANHO, FN_TAMANHO_GRADE(P.GRADE_CODIGO,18) TAMANHO_DESCRICAO, A.T18_SALDO, P.UNIDADEMEDIDA_SIGLA FROM TBESTOQUE_SALDO A LEFT JOIN TBPRODUTO P ON P.CODIGO = A.PRODUTO_CODIGO   WHERE A.T18_SALDO > 0 AND (SELECT FIRST 1 C.LOCALIZACAO_ID FROM TBPERFIL C WHERE C.ID = :PERFIL_PEDIDO AND C.TABELA = 'PED') = A.LOCALIZACAO_CODIGO AND P.GRADE_CODIGO > 0 UNION
                SELECT A.ESTABELECIMENTO_CODIGO ESTABELECIMENTO_ID, A.LOCALIZACAO_CODIGO LOCALIZACAO_ID, A.PRODUTO_CODIGO PRODUTO_ID, P.FAMILIA_CODIGO FAMILIA_ID, P.DESCRICAO, P.GRADE_CODIGO GRADE_ID, 19 TAMANHO, FN_TAMANHO_GRADE(P.GRADE_CODIGO,19) TAMANHO_DESCRICAO, A.T19_SALDO, P.UNIDADEMEDIDA_SIGLA FROM TBESTOQUE_SALDO A LEFT JOIN TBPRODUTO P ON P.CODIGO = A.PRODUTO_CODIGO   WHERE A.T19_SALDO > 0 AND (SELECT FIRST 1 C.LOCALIZACAO_ID FROM TBPERFIL C WHERE C.ID = :PERFIL_PEDIDO AND C.TABELA = 'PED') = A.LOCALIZACAO_CODIGO AND P.GRADE_CODIGO > 0 UNION
                SELECT A.ESTABELECIMENTO_CODIGO ESTABELECIMENTO_ID, A.LOCALIZACAO_CODIGO LOCALIZACAO_ID, A.PRODUTO_CODIGO PRODUTO_ID, P.FAMILIA_CODIGO FAMILIA_ID, P.DESCRICAO, P.GRADE_CODIGO GRADE_ID, 20 TAMANHO, FN_TAMANHO_GRADE(P.GRADE_CODIGO,20) TAMANHO_DESCRICAO, A.T20_SALDO, P.UNIDADEMEDIDA_SIGLA FROM TBESTOQUE_SALDO A LEFT JOIN TBPRODUTO P ON P.CODIGO = A.PRODUTO_CODIGO   WHERE A.T20_SALDO > 0 AND (SELECT FIRST 1 C.LOCALIZACAO_ID FROM TBPERFIL C WHERE C.ID = :PERFIL_PEDIDO AND C.TABELA = 'PED') = A.LOCALIZACAO_CODIGO AND P.GRADE_CODIGO > 0 UNION

                SELECT A.ESTABELECIMENTO_CODIGO ESTABELECIMENTO_ID, A.LOCALIZACAO_CODIGO LOCALIZACAO_ID, A.PRODUTO_CODIGO PRODUTO_ID, P.FAMILIA_CODIGO FAMILIA_ID, P.DESCRICAO, P.GRADE_CODIGO GRADE_ID, 00 TAMANHO, FN_TAMANHO_GRADE(P.GRADE_CODIGO,01) TAMANHO_DESCRICAO, A.SALDO     , P.UNIDADEMEDIDA_SIGLA FROM TBESTOQUE_SALDO A LEFT JOIN TBPRODUTO P ON P.CODIGO = A.PRODUTO_CODIGO WHERE A.SALDO > 0 AND (IIF(P.FAMILIA_ALTERNATIVA > 0, (SELECT FIRST 1 B.LOCALIZACAO_CODIGO FROM TBFAMILIA B WHERE B.CODIGO = P.FAMILIA_ALTERNATIVA), (SELECT FIRST 1 B.LOCALIZACAO_CODIGO FROM TBFAMILIA B WHERE B.CODIGO = P.FAMILIA_CODIGO))) = A.LOCALIZACAO_CODIGO AND P.GRADE_CODIGO = 0 UNION
                SELECT A.ESTABELECIMENTO_CODIGO ESTABELECIMENTO_ID, A.LOCALIZACAO_CODIGO LOCALIZACAO_ID, A.PRODUTO_CODIGO PRODUTO_ID, P.FAMILIA_CODIGO FAMILIA_ID, P.DESCRICAO, P.GRADE_CODIGO GRADE_ID, 01 TAMANHO, FN_TAMANHO_GRADE(P.GRADE_CODIGO,01) TAMANHO_DESCRICAO, A.T01_SALDO , P.UNIDADEMEDIDA_SIGLA FROM TBESTOQUE_SALDO A LEFT JOIN TBPRODUTO P ON P.CODIGO = A.PRODUTO_CODIGO WHERE A.T01_SALDO > 0 AND (IIF(P.FAMILIA_ALTERNATIVA > 0, (SELECT FIRST 1 B.LOCALIZACAO_CODIGO FROM TBFAMILIA B WHERE B.CODIGO = P.FAMILIA_ALTERNATIVA), (SELECT FIRST 1 B.LOCALIZACAO_CODIGO FROM TBFAMILIA B WHERE B.CODIGO = P.FAMILIA_CODIGO))) = A.LOCALIZACAO_CODIGO AND P.GRADE_CODIGO > 0 UNION
                SELECT A.ESTABELECIMENTO_CODIGO ESTABELECIMENTO_ID, A.LOCALIZACAO_CODIGO LOCALIZACAO_ID, A.PRODUTO_CODIGO PRODUTO_ID, P.FAMILIA_CODIGO FAMILIA_ID, P.DESCRICAO, P.GRADE_CODIGO GRADE_ID, 02 TAMANHO, FN_TAMANHO_GRADE(P.GRADE_CODIGO,02) TAMANHO_DESCRICAO, A.T02_SALDO , P.UNIDADEMEDIDA_SIGLA FROM TBESTOQUE_SALDO A LEFT JOIN TBPRODUTO P ON P.CODIGO = A.PRODUTO_CODIGO WHERE A.T02_SALDO > 0 AND (IIF(P.FAMILIA_ALTERNATIVA > 0, (SELECT FIRST 1 B.LOCALIZACAO_CODIGO FROM TBFAMILIA B WHERE B.CODIGO = P.FAMILIA_ALTERNATIVA), (SELECT FIRST 1 B.LOCALIZACAO_CODIGO FROM TBFAMILIA B WHERE B.CODIGO = P.FAMILIA_CODIGO))) = A.LOCALIZACAO_CODIGO AND P.GRADE_CODIGO > 0 UNION
                SELECT A.ESTABELECIMENTO_CODIGO ESTABELECIMENTO_ID, A.LOCALIZACAO_CODIGO LOCALIZACAO_ID, A.PRODUTO_CODIGO PRODUTO_ID, P.FAMILIA_CODIGO FAMILIA_ID, P.DESCRICAO, P.GRADE_CODIGO GRADE_ID, 03 TAMANHO, FN_TAMANHO_GRADE(P.GRADE_CODIGO,03) TAMANHO_DESCRICAO, A.T03_SALDO , P.UNIDADEMEDIDA_SIGLA FROM TBESTOQUE_SALDO A LEFT JOIN TBPRODUTO P ON P.CODIGO = A.PRODUTO_CODIGO WHERE A.T03_SALDO > 0 AND (IIF(P.FAMILIA_ALTERNATIVA > 0, (SELECT FIRST 1 B.LOCALIZACAO_CODIGO FROM TBFAMILIA B WHERE B.CODIGO = P.FAMILIA_ALTERNATIVA), (SELECT FIRST 1 B.LOCALIZACAO_CODIGO FROM TBFAMILIA B WHERE B.CODIGO = P.FAMILIA_CODIGO))) = A.LOCALIZACAO_CODIGO AND P.GRADE_CODIGO > 0 UNION
                SELECT A.ESTABELECIMENTO_CODIGO ESTABELECIMENTO_ID, A.LOCALIZACAO_CODIGO LOCALIZACAO_ID, A.PRODUTO_CODIGO PRODUTO_ID, P.FAMILIA_CODIGO FAMILIA_ID, P.DESCRICAO, P.GRADE_CODIGO GRADE_ID, 04 TAMANHO, FN_TAMANHO_GRADE(P.GRADE_CODIGO,04) TAMANHO_DESCRICAO, A.T04_SALDO , P.UNIDADEMEDIDA_SIGLA FROM TBESTOQUE_SALDO A LEFT JOIN TBPRODUTO P ON P.CODIGO = A.PRODUTO_CODIGO WHERE A.T04_SALDO > 0 AND (IIF(P.FAMILIA_ALTERNATIVA > 0, (SELECT FIRST 1 B.LOCALIZACAO_CODIGO FROM TBFAMILIA B WHERE B.CODIGO = P.FAMILIA_ALTERNATIVA), (SELECT FIRST 1 B.LOCALIZACAO_CODIGO FROM TBFAMILIA B WHERE B.CODIGO = P.FAMILIA_CODIGO))) = A.LOCALIZACAO_CODIGO AND P.GRADE_CODIGO > 0 UNION
                SELECT A.ESTABELECIMENTO_CODIGO ESTABELECIMENTO_ID, A.LOCALIZACAO_CODIGO LOCALIZACAO_ID, A.PRODUTO_CODIGO PRODUTO_ID, P.FAMILIA_CODIGO FAMILIA_ID, P.DESCRICAO, P.GRADE_CODIGO GRADE_ID, 05 TAMANHO, FN_TAMANHO_GRADE(P.GRADE_CODIGO,05) TAMANHO_DESCRICAO, A.T05_SALDO , P.UNIDADEMEDIDA_SIGLA FROM TBESTOQUE_SALDO A LEFT JOIN TBPRODUTO P ON P.CODIGO = A.PRODUTO_CODIGO WHERE A.T05_SALDO > 0 AND (IIF(P.FAMILIA_ALTERNATIVA > 0, (SELECT FIRST 1 B.LOCALIZACAO_CODIGO FROM TBFAMILIA B WHERE B.CODIGO = P.FAMILIA_ALTERNATIVA), (SELECT FIRST 1 B.LOCALIZACAO_CODIGO FROM TBFAMILIA B WHERE B.CODIGO = P.FAMILIA_CODIGO))) = A.LOCALIZACAO_CODIGO AND P.GRADE_CODIGO > 0 UNION
                SELECT A.ESTABELECIMENTO_CODIGO ESTABELECIMENTO_ID, A.LOCALIZACAO_CODIGO LOCALIZACAO_ID, A.PRODUTO_CODIGO PRODUTO_ID, P.FAMILIA_CODIGO FAMILIA_ID, P.DESCRICAO, P.GRADE_CODIGO GRADE_ID, 06 TAMANHO, FN_TAMANHO_GRADE(P.GRADE_CODIGO,06) TAMANHO_DESCRICAO, A.T06_SALDO , P.UNIDADEMEDIDA_SIGLA FROM TBESTOQUE_SALDO A LEFT JOIN TBPRODUTO P ON P.CODIGO = A.PRODUTO_CODIGO WHERE A.T06_SALDO > 0 AND (IIF(P.FAMILIA_ALTERNATIVA > 0, (SELECT FIRST 1 B.LOCALIZACAO_CODIGO FROM TBFAMILIA B WHERE B.CODIGO = P.FAMILIA_ALTERNATIVA), (SELECT FIRST 1 B.LOCALIZACAO_CODIGO FROM TBFAMILIA B WHERE B.CODIGO = P.FAMILIA_CODIGO))) = A.LOCALIZACAO_CODIGO AND P.GRADE_CODIGO > 0 UNION
                SELECT A.ESTABELECIMENTO_CODIGO ESTABELECIMENTO_ID, A.LOCALIZACAO_CODIGO LOCALIZACAO_ID, A.PRODUTO_CODIGO PRODUTO_ID, P.FAMILIA_CODIGO FAMILIA_ID, P.DESCRICAO, P.GRADE_CODIGO GRADE_ID, 07 TAMANHO, FN_TAMANHO_GRADE(P.GRADE_CODIGO,07) TAMANHO_DESCRICAO, A.T07_SALDO , P.UNIDADEMEDIDA_SIGLA FROM TBESTOQUE_SALDO A LEFT JOIN TBPRODUTO P ON P.CODIGO = A.PRODUTO_CODIGO WHERE A.T07_SALDO > 0 AND (IIF(P.FAMILIA_ALTERNATIVA > 0, (SELECT FIRST 1 B.LOCALIZACAO_CODIGO FROM TBFAMILIA B WHERE B.CODIGO = P.FAMILIA_ALTERNATIVA), (SELECT FIRST 1 B.LOCALIZACAO_CODIGO FROM TBFAMILIA B WHERE B.CODIGO = P.FAMILIA_CODIGO))) = A.LOCALIZACAO_CODIGO AND P.GRADE_CODIGO > 0 UNION
                SELECT A.ESTABELECIMENTO_CODIGO ESTABELECIMENTO_ID, A.LOCALIZACAO_CODIGO LOCALIZACAO_ID, A.PRODUTO_CODIGO PRODUTO_ID, P.FAMILIA_CODIGO FAMILIA_ID, P.DESCRICAO, P.GRADE_CODIGO GRADE_ID, 08 TAMANHO, FN_TAMANHO_GRADE(P.GRADE_CODIGO,08) TAMANHO_DESCRICAO, A.T08_SALDO , P.UNIDADEMEDIDA_SIGLA FROM TBESTOQUE_SALDO A LEFT JOIN TBPRODUTO P ON P.CODIGO = A.PRODUTO_CODIGO WHERE A.T08_SALDO > 0 AND (IIF(P.FAMILIA_ALTERNATIVA > 0, (SELECT FIRST 1 B.LOCALIZACAO_CODIGO FROM TBFAMILIA B WHERE B.CODIGO = P.FAMILIA_ALTERNATIVA), (SELECT FIRST 1 B.LOCALIZACAO_CODIGO FROM TBFAMILIA B WHERE B.CODIGO = P.FAMILIA_CODIGO))) = A.LOCALIZACAO_CODIGO AND P.GRADE_CODIGO > 0 UNION
                SELECT A.ESTABELECIMENTO_CODIGO ESTABELECIMENTO_ID, A.LOCALIZACAO_CODIGO LOCALIZACAO_ID, A.PRODUTO_CODIGO PRODUTO_ID, P.FAMILIA_CODIGO FAMILIA_ID, P.DESCRICAO, P.GRADE_CODIGO GRADE_ID, 09 TAMANHO, FN_TAMANHO_GRADE(P.GRADE_CODIGO,09) TAMANHO_DESCRICAO, A.T09_SALDO , P.UNIDADEMEDIDA_SIGLA FROM TBESTOQUE_SALDO A LEFT JOIN TBPRODUTO P ON P.CODIGO = A.PRODUTO_CODIGO WHERE A.T09_SALDO > 0 AND (IIF(P.FAMILIA_ALTERNATIVA > 0, (SELECT FIRST 1 B.LOCALIZACAO_CODIGO FROM TBFAMILIA B WHERE B.CODIGO = P.FAMILIA_ALTERNATIVA), (SELECT FIRST 1 B.LOCALIZACAO_CODIGO FROM TBFAMILIA B WHERE B.CODIGO = P.FAMILIA_CODIGO))) = A.LOCALIZACAO_CODIGO AND P.GRADE_CODIGO > 0 UNION
                SELECT A.ESTABELECIMENTO_CODIGO ESTABELECIMENTO_ID, A.LOCALIZACAO_CODIGO LOCALIZACAO_ID, A.PRODUTO_CODIGO PRODUTO_ID, P.FAMILIA_CODIGO FAMILIA_ID, P.DESCRICAO, P.GRADE_CODIGO GRADE_ID, 10 TAMANHO, FN_TAMANHO_GRADE(P.GRADE_CODIGO,10) TAMANHO_DESCRICAO, A.T10_SALDO , P.UNIDADEMEDIDA_SIGLA FROM TBESTOQUE_SALDO A LEFT JOIN TBPRODUTO P ON P.CODIGO = A.PRODUTO_CODIGO WHERE A.T10_SALDO > 0 AND (IIF(P.FAMILIA_ALTERNATIVA > 0, (SELECT FIRST 1 B.LOCALIZACAO_CODIGO FROM TBFAMILIA B WHERE B.CODIGO = P.FAMILIA_ALTERNATIVA), (SELECT FIRST 1 B.LOCALIZACAO_CODIGO FROM TBFAMILIA B WHERE B.CODIGO = P.FAMILIA_CODIGO))) = A.LOCALIZACAO_CODIGO AND P.GRADE_CODIGO > 0 UNION
                SELECT A.ESTABELECIMENTO_CODIGO ESTABELECIMENTO_ID, A.LOCALIZACAO_CODIGO LOCALIZACAO_ID, A.PRODUTO_CODIGO PRODUTO_ID, P.FAMILIA_CODIGO FAMILIA_ID, P.DESCRICAO, P.GRADE_CODIGO GRADE_ID, 11 TAMANHO, FN_TAMANHO_GRADE(P.GRADE_CODIGO,11) TAMANHO_DESCRICAO, A.T11_SALDO , P.UNIDADEMEDIDA_SIGLA FROM TBESTOQUE_SALDO A LEFT JOIN TBPRODUTO P ON P.CODIGO = A.PRODUTO_CODIGO WHERE A.T11_SALDO > 0 AND (IIF(P.FAMILIA_ALTERNATIVA > 0, (SELECT FIRST 1 B.LOCALIZACAO_CODIGO FROM TBFAMILIA B WHERE B.CODIGO = P.FAMILIA_ALTERNATIVA), (SELECT FIRST 1 B.LOCALIZACAO_CODIGO FROM TBFAMILIA B WHERE B.CODIGO = P.FAMILIA_CODIGO))) = A.LOCALIZACAO_CODIGO AND P.GRADE_CODIGO > 0 UNION
                SELECT A.ESTABELECIMENTO_CODIGO ESTABELECIMENTO_ID, A.LOCALIZACAO_CODIGO LOCALIZACAO_ID, A.PRODUTO_CODIGO PRODUTO_ID, P.FAMILIA_CODIGO FAMILIA_ID, P.DESCRICAO, P.GRADE_CODIGO GRADE_ID, 12 TAMANHO, FN_TAMANHO_GRADE(P.GRADE_CODIGO,12) TAMANHO_DESCRICAO, A.T12_SALDO , P.UNIDADEMEDIDA_SIGLA FROM TBESTOQUE_SALDO A LEFT JOIN TBPRODUTO P ON P.CODIGO = A.PRODUTO_CODIGO WHERE A.T12_SALDO > 0 AND (IIF(P.FAMILIA_ALTERNATIVA > 0, (SELECT FIRST 1 B.LOCALIZACAO_CODIGO FROM TBFAMILIA B WHERE B.CODIGO = P.FAMILIA_ALTERNATIVA), (SELECT FIRST 1 B.LOCALIZACAO_CODIGO FROM TBFAMILIA B WHERE B.CODIGO = P.FAMILIA_CODIGO))) = A.LOCALIZACAO_CODIGO AND P.GRADE_CODIGO > 0 UNION
                SELECT A.ESTABELECIMENTO_CODIGO ESTABELECIMENTO_ID, A.LOCALIZACAO_CODIGO LOCALIZACAO_ID, A.PRODUTO_CODIGO PRODUTO_ID, P.FAMILIA_CODIGO FAMILIA_ID, P.DESCRICAO, P.GRADE_CODIGO GRADE_ID, 13 TAMANHO, FN_TAMANHO_GRADE(P.GRADE_CODIGO,13) TAMANHO_DESCRICAO, A.T13_SALDO , P.UNIDADEMEDIDA_SIGLA FROM TBESTOQUE_SALDO A LEFT JOIN TBPRODUTO P ON P.CODIGO = A.PRODUTO_CODIGO WHERE A.T13_SALDO > 0 AND (IIF(P.FAMILIA_ALTERNATIVA > 0, (SELECT FIRST 1 B.LOCALIZACAO_CODIGO FROM TBFAMILIA B WHERE B.CODIGO = P.FAMILIA_ALTERNATIVA), (SELECT FIRST 1 B.LOCALIZACAO_CODIGO FROM TBFAMILIA B WHERE B.CODIGO = P.FAMILIA_CODIGO))) = A.LOCALIZACAO_CODIGO AND P.GRADE_CODIGO > 0 UNION
                SELECT A.ESTABELECIMENTO_CODIGO ESTABELECIMENTO_ID, A.LOCALIZACAO_CODIGO LOCALIZACAO_ID, A.PRODUTO_CODIGO PRODUTO_ID, P.FAMILIA_CODIGO FAMILIA_ID, P.DESCRICAO, P.GRADE_CODIGO GRADE_ID, 14 TAMANHO, FN_TAMANHO_GRADE(P.GRADE_CODIGO,14) TAMANHO_DESCRICAO, A.T14_SALDO , P.UNIDADEMEDIDA_SIGLA FROM TBESTOQUE_SALDO A LEFT JOIN TBPRODUTO P ON P.CODIGO = A.PRODUTO_CODIGO WHERE A.T14_SALDO > 0 AND (IIF(P.FAMILIA_ALTERNATIVA > 0, (SELECT FIRST 1 B.LOCALIZACAO_CODIGO FROM TBFAMILIA B WHERE B.CODIGO = P.FAMILIA_ALTERNATIVA), (SELECT FIRST 1 B.LOCALIZACAO_CODIGO FROM TBFAMILIA B WHERE B.CODIGO = P.FAMILIA_CODIGO))) = A.LOCALIZACAO_CODIGO AND P.GRADE_CODIGO > 0 UNION
                SELECT A.ESTABELECIMENTO_CODIGO ESTABELECIMENTO_ID, A.LOCALIZACAO_CODIGO LOCALIZACAO_ID, A.PRODUTO_CODIGO PRODUTO_ID, P.FAMILIA_CODIGO FAMILIA_ID, P.DESCRICAO, P.GRADE_CODIGO GRADE_ID, 15 TAMANHO, FN_TAMANHO_GRADE(P.GRADE_CODIGO,15) TAMANHO_DESCRICAO, A.T15_SALDO , P.UNIDADEMEDIDA_SIGLA FROM TBESTOQUE_SALDO A LEFT JOIN TBPRODUTO P ON P.CODIGO = A.PRODUTO_CODIGO WHERE A.T15_SALDO > 0 AND (IIF(P.FAMILIA_ALTERNATIVA > 0, (SELECT FIRST 1 B.LOCALIZACAO_CODIGO FROM TBFAMILIA B WHERE B.CODIGO = P.FAMILIA_ALTERNATIVA), (SELECT FIRST 1 B.LOCALIZACAO_CODIGO FROM TBFAMILIA B WHERE B.CODIGO = P.FAMILIA_CODIGO))) = A.LOCALIZACAO_CODIGO AND P.GRADE_CODIGO > 0 UNION
                SELECT A.ESTABELECIMENTO_CODIGO ESTABELECIMENTO_ID, A.LOCALIZACAO_CODIGO LOCALIZACAO_ID, A.PRODUTO_CODIGO PRODUTO_ID, P.FAMILIA_CODIGO FAMILIA_ID, P.DESCRICAO, P.GRADE_CODIGO GRADE_ID, 16 TAMANHO, FN_TAMANHO_GRADE(P.GRADE_CODIGO,16) TAMANHO_DESCRICAO, A.T16_SALDO , P.UNIDADEMEDIDA_SIGLA FROM TBESTOQUE_SALDO A LEFT JOIN TBPRODUTO P ON P.CODIGO = A.PRODUTO_CODIGO WHERE A.T16_SALDO > 0 AND (IIF(P.FAMILIA_ALTERNATIVA > 0, (SELECT FIRST 1 B.LOCALIZACAO_CODIGO FROM TBFAMILIA B WHERE B.CODIGO = P.FAMILIA_ALTERNATIVA), (SELECT FIRST 1 B.LOCALIZACAO_CODIGO FROM TBFAMILIA B WHERE B.CODIGO = P.FAMILIA_CODIGO))) = A.LOCALIZACAO_CODIGO AND P.GRADE_CODIGO > 0 UNION
                SELECT A.ESTABELECIMENTO_CODIGO ESTABELECIMENTO_ID, A.LOCALIZACAO_CODIGO LOCALIZACAO_ID, A.PRODUTO_CODIGO PRODUTO_ID, P.FAMILIA_CODIGO FAMILIA_ID, P.DESCRICAO, P.GRADE_CODIGO GRADE_ID, 17 TAMANHO, FN_TAMANHO_GRADE(P.GRADE_CODIGO,17) TAMANHO_DESCRICAO, A.T17_SALDO , P.UNIDADEMEDIDA_SIGLA FROM TBESTOQUE_SALDO A LEFT JOIN TBPRODUTO P ON P.CODIGO = A.PRODUTO_CODIGO WHERE A.T17_SALDO > 0 AND (IIF(P.FAMILIA_ALTERNATIVA > 0, (SELECT FIRST 1 B.LOCALIZACAO_CODIGO FROM TBFAMILIA B WHERE B.CODIGO = P.FAMILIA_ALTERNATIVA), (SELECT FIRST 1 B.LOCALIZACAO_CODIGO FROM TBFAMILIA B WHERE B.CODIGO = P.FAMILIA_CODIGO))) = A.LOCALIZACAO_CODIGO AND P.GRADE_CODIGO > 0 UNION
                SELECT A.ESTABELECIMENTO_CODIGO ESTABELECIMENTO_ID, A.LOCALIZACAO_CODIGO LOCALIZACAO_ID, A.PRODUTO_CODIGO PRODUTO_ID, P.FAMILIA_CODIGO FAMILIA_ID, P.DESCRICAO, P.GRADE_CODIGO GRADE_ID, 18 TAMANHO, FN_TAMANHO_GRADE(P.GRADE_CODIGO,18) TAMANHO_DESCRICAO, A.T18_SALDO , P.UNIDADEMEDIDA_SIGLA FROM TBESTOQUE_SALDO A LEFT JOIN TBPRODUTO P ON P.CODIGO = A.PRODUTO_CODIGO WHERE A.T18_SALDO > 0 AND (IIF(P.FAMILIA_ALTERNATIVA > 0, (SELECT FIRST 1 B.LOCALIZACAO_CODIGO FROM TBFAMILIA B WHERE B.CODIGO = P.FAMILIA_ALTERNATIVA), (SELECT FIRST 1 B.LOCALIZACAO_CODIGO FROM TBFAMILIA B WHERE B.CODIGO = P.FAMILIA_CODIGO))) = A.LOCALIZACAO_CODIGO AND P.GRADE_CODIGO > 0 UNION
                SELECT A.ESTABELECIMENTO_CODIGO ESTABELECIMENTO_ID, A.LOCALIZACAO_CODIGO LOCALIZACAO_ID, A.PRODUTO_CODIGO PRODUTO_ID, P.FAMILIA_CODIGO FAMILIA_ID, P.DESCRICAO, P.GRADE_CODIGO GRADE_ID, 19 TAMANHO, FN_TAMANHO_GRADE(P.GRADE_CODIGO,19) TAMANHO_DESCRICAO, A.T19_SALDO , P.UNIDADEMEDIDA_SIGLA FROM TBESTOQUE_SALDO A LEFT JOIN TBPRODUTO P ON P.CODIGO = A.PRODUTO_CODIGO WHERE A.T19_SALDO > 0 AND (IIF(P.FAMILIA_ALTERNATIVA > 0, (SELECT FIRST 1 B.LOCALIZACAO_CODIGO FROM TBFAMILIA B WHERE B.CODIGO = P.FAMILIA_ALTERNATIVA), (SELECT FIRST 1 B.LOCALIZACAO_CODIGO FROM TBFAMILIA B WHERE B.CODIGO = P.FAMILIA_CODIGO))) = A.LOCALIZACAO_CODIGO AND P.GRADE_CODIGO > 0 UNION
                SELECT A.ESTABELECIMENTO_CODIGO ESTABELECIMENTO_ID, A.LOCALIZACAO_CODIGO LOCALIZACAO_ID, A.PRODUTO_CODIGO PRODUTO_ID, P.FAMILIA_CODIGO FAMILIA_ID, P.DESCRICAO, P.GRADE_CODIGO GRADE_ID, 20 TAMANHO, FN_TAMANHO_GRADE(P.GRADE_CODIGO,20) TAMANHO_DESCRICAO, A.T20_SALDO , P.UNIDADEMEDIDA_SIGLA FROM TBESTOQUE_SALDO A LEFT JOIN TBPRODUTO P ON P.CODIGO = A.PRODUTO_CODIGO WHERE A.T20_SALDO > 0 AND (IIF(P.FAMILIA_ALTERNATIVA > 0, (SELECT FIRST 1 B.LOCALIZACAO_CODIGO FROM TBFAMILIA B WHERE B.CODIGO = P.FAMILIA_ALTERNATIVA), (SELECT FIRST 1 B.LOCALIZACAO_CODIGO FROM TBFAMILIA B WHERE B.CODIGO = P.FAMILIA_CODIGO))) = A.LOCALIZACAO_CODIGO AND P.GRADE_CODIGO > 0 UNION

                SELECT A.ESTABELECIMENTO_CODIGO ESTABELECIMENTO_ID, A.LOCALIZACAO_CODIGO LOCALIZACAO_ID, A.PRODUTO_CODIGO PRODUTO_ID, P.FAMILIA_CODIGO FAMILIA_ID, P.DESCRICAO, P.GRADE_CODIGO GRADE_ID, 00 TAMANHO,                                  '' TAMANHO_DESCRICAO, A.SALDO    , P.UNIDADEMEDIDA_SIGLA FROM TBESTOQUE_SALDO A LEFT JOIN TBPRODUTO P ON P.CODIGO = A.PRODUTO_CODIGO AND P.LOCALIZACAO_CODIGO = A.LOCALIZACAO_CODIGO WHERE A.SALDO     > 0 AND P.GRADE_CODIGO = 0 UNION
                SELECT A.ESTABELECIMENTO_CODIGO ESTABELECIMENTO_ID, A.LOCALIZACAO_CODIGO LOCALIZACAO_ID, A.PRODUTO_CODIGO PRODUTO_ID, P.FAMILIA_CODIGO FAMILIA_ID, P.DESCRICAO, P.GRADE_CODIGO GRADE_ID, 01 TAMANHO, FN_TAMANHO_GRADE(P.GRADE_CODIGO,01) TAMANHO_DESCRICAO, A.T01_SALDO, P.UNIDADEMEDIDA_SIGLA FROM TBESTOQUE_SALDO A LEFT JOIN TBPRODUTO P ON P.CODIGO = A.PRODUTO_CODIGO AND P.LOCALIZACAO_CODIGO = A.LOCALIZACAO_CODIGO WHERE A.T01_SALDO > 0 AND P.GRADE_CODIGO > 0 UNION
                SELECT A.ESTABELECIMENTO_CODIGO ESTABELECIMENTO_ID, A.LOCALIZACAO_CODIGO LOCALIZACAO_ID, A.PRODUTO_CODIGO PRODUTO_ID, P.FAMILIA_CODIGO FAMILIA_ID, P.DESCRICAO, P.GRADE_CODIGO GRADE_ID, 02 TAMANHO, FN_TAMANHO_GRADE(P.GRADE_CODIGO,02) TAMANHO_DESCRICAO, A.T02_SALDO, P.UNIDADEMEDIDA_SIGLA FROM TBESTOQUE_SALDO A LEFT JOIN TBPRODUTO P ON P.CODIGO = A.PRODUTO_CODIGO AND P.LOCALIZACAO_CODIGO = A.LOCALIZACAO_CODIGO WHERE A.T02_SALDO > 0 AND P.GRADE_CODIGO > 0 UNION
                SELECT A.ESTABELECIMENTO_CODIGO ESTABELECIMENTO_ID, A.LOCALIZACAO_CODIGO LOCALIZACAO_ID, A.PRODUTO_CODIGO PRODUTO_ID, P.FAMILIA_CODIGO FAMILIA_ID, P.DESCRICAO, P.GRADE_CODIGO GRADE_ID, 03 TAMANHO, FN_TAMANHO_GRADE(P.GRADE_CODIGO,03) TAMANHO_DESCRICAO, A.T03_SALDO, P.UNIDADEMEDIDA_SIGLA FROM TBESTOQUE_SALDO A LEFT JOIN TBPRODUTO P ON P.CODIGO = A.PRODUTO_CODIGO AND P.LOCALIZACAO_CODIGO = A.LOCALIZACAO_CODIGO WHERE A.T03_SALDO > 0 AND P.GRADE_CODIGO > 0 UNION
                SELECT A.ESTABELECIMENTO_CODIGO ESTABELECIMENTO_ID, A.LOCALIZACAO_CODIGO LOCALIZACAO_ID, A.PRODUTO_CODIGO PRODUTO_ID, P.FAMILIA_CODIGO FAMILIA_ID, P.DESCRICAO, P.GRADE_CODIGO GRADE_ID, 04 TAMANHO, FN_TAMANHO_GRADE(P.GRADE_CODIGO,04) TAMANHO_DESCRICAO, A.T04_SALDO, P.UNIDADEMEDIDA_SIGLA FROM TBESTOQUE_SALDO A LEFT JOIN TBPRODUTO P ON P.CODIGO = A.PRODUTO_CODIGO AND P.LOCALIZACAO_CODIGO = A.LOCALIZACAO_CODIGO WHERE A.T04_SALDO > 0 AND P.GRADE_CODIGO > 0 UNION
                SELECT A.ESTABELECIMENTO_CODIGO ESTABELECIMENTO_ID, A.LOCALIZACAO_CODIGO LOCALIZACAO_ID, A.PRODUTO_CODIGO PRODUTO_ID, P.FAMILIA_CODIGO FAMILIA_ID, P.DESCRICAO, P.GRADE_CODIGO GRADE_ID, 05 TAMANHO, FN_TAMANHO_GRADE(P.GRADE_CODIGO,05) TAMANHO_DESCRICAO, A.T05_SALDO, P.UNIDADEMEDIDA_SIGLA FROM TBESTOQUE_SALDO A LEFT JOIN TBPRODUTO P ON P.CODIGO = A.PRODUTO_CODIGO AND P.LOCALIZACAO_CODIGO = A.LOCALIZACAO_CODIGO WHERE A.T05_SALDO > 0 AND P.GRADE_CODIGO > 0 UNION
                SELECT A.ESTABELECIMENTO_CODIGO ESTABELECIMENTO_ID, A.LOCALIZACAO_CODIGO LOCALIZACAO_ID, A.PRODUTO_CODIGO PRODUTO_ID, P.FAMILIA_CODIGO FAMILIA_ID, P.DESCRICAO, P.GRADE_CODIGO GRADE_ID, 06 TAMANHO, FN_TAMANHO_GRADE(P.GRADE_CODIGO,06) TAMANHO_DESCRICAO, A.T06_SALDO, P.UNIDADEMEDIDA_SIGLA FROM TBESTOQUE_SALDO A LEFT JOIN TBPRODUTO P ON P.CODIGO = A.PRODUTO_CODIGO AND P.LOCALIZACAO_CODIGO = A.LOCALIZACAO_CODIGO WHERE A.T06_SALDO > 0 AND P.GRADE_CODIGO > 0 UNION
                SELECT A.ESTABELECIMENTO_CODIGO ESTABELECIMENTO_ID, A.LOCALIZACAO_CODIGO LOCALIZACAO_ID, A.PRODUTO_CODIGO PRODUTO_ID, P.FAMILIA_CODIGO FAMILIA_ID, P.DESCRICAO, P.GRADE_CODIGO GRADE_ID, 07 TAMANHO, FN_TAMANHO_GRADE(P.GRADE_CODIGO,07) TAMANHO_DESCRICAO, A.T07_SALDO, P.UNIDADEMEDIDA_SIGLA FROM TBESTOQUE_SALDO A LEFT JOIN TBPRODUTO P ON P.CODIGO = A.PRODUTO_CODIGO AND P.LOCALIZACAO_CODIGO = A.LOCALIZACAO_CODIGO WHERE A.T07_SALDO > 0 AND P.GRADE_CODIGO > 0 UNION
                SELECT A.ESTABELECIMENTO_CODIGO ESTABELECIMENTO_ID, A.LOCALIZACAO_CODIGO LOCALIZACAO_ID, A.PRODUTO_CODIGO PRODUTO_ID, P.FAMILIA_CODIGO FAMILIA_ID, P.DESCRICAO, P.GRADE_CODIGO GRADE_ID, 08 TAMANHO, FN_TAMANHO_GRADE(P.GRADE_CODIGO,08) TAMANHO_DESCRICAO, A.T08_SALDO, P.UNIDADEMEDIDA_SIGLA FROM TBESTOQUE_SALDO A LEFT JOIN TBPRODUTO P ON P.CODIGO = A.PRODUTO_CODIGO AND P.LOCALIZACAO_CODIGO = A.LOCALIZACAO_CODIGO WHERE A.T08_SALDO > 0 AND P.GRADE_CODIGO > 0 UNION
                SELECT A.ESTABELECIMENTO_CODIGO ESTABELECIMENTO_ID, A.LOCALIZACAO_CODIGO LOCALIZACAO_ID, A.PRODUTO_CODIGO PRODUTO_ID, P.FAMILIA_CODIGO FAMILIA_ID, P.DESCRICAO, P.GRADE_CODIGO GRADE_ID, 09 TAMANHO, FN_TAMANHO_GRADE(P.GRADE_CODIGO,09) TAMANHO_DESCRICAO, A.T09_SALDO, P.UNIDADEMEDIDA_SIGLA FROM TBESTOQUE_SALDO A LEFT JOIN TBPRODUTO P ON P.CODIGO = A.PRODUTO_CODIGO AND P.LOCALIZACAO_CODIGO = A.LOCALIZACAO_CODIGO WHERE A.T09_SALDO > 0 AND P.GRADE_CODIGO > 0 UNION
                SELECT A.ESTABELECIMENTO_CODIGO ESTABELECIMENTO_ID, A.LOCALIZACAO_CODIGO LOCALIZACAO_ID, A.PRODUTO_CODIGO PRODUTO_ID, P.FAMILIA_CODIGO FAMILIA_ID, P.DESCRICAO, P.GRADE_CODIGO GRADE_ID, 10 TAMANHO, FN_TAMANHO_GRADE(P.GRADE_CODIGO,10) TAMANHO_DESCRICAO, A.T10_SALDO, P.UNIDADEMEDIDA_SIGLA FROM TBESTOQUE_SALDO A LEFT JOIN TBPRODUTO P ON P.CODIGO = A.PRODUTO_CODIGO AND P.LOCALIZACAO_CODIGO = A.LOCALIZACAO_CODIGO WHERE A.T10_SALDO > 0 AND P.GRADE_CODIGO > 0 UNION
                SELECT A.ESTABELECIMENTO_CODIGO ESTABELECIMENTO_ID, A.LOCALIZACAO_CODIGO LOCALIZACAO_ID, A.PRODUTO_CODIGO PRODUTO_ID, P.FAMILIA_CODIGO FAMILIA_ID, P.DESCRICAO, P.GRADE_CODIGO GRADE_ID, 11 TAMANHO, FN_TAMANHO_GRADE(P.GRADE_CODIGO,11) TAMANHO_DESCRICAO, A.T11_SALDO, P.UNIDADEMEDIDA_SIGLA FROM TBESTOQUE_SALDO A LEFT JOIN TBPRODUTO P ON P.CODIGO = A.PRODUTO_CODIGO AND P.LOCALIZACAO_CODIGO = A.LOCALIZACAO_CODIGO WHERE A.T11_SALDO > 0 AND P.GRADE_CODIGO > 0 UNION
                SELECT A.ESTABELECIMENTO_CODIGO ESTABELECIMENTO_ID, A.LOCALIZACAO_CODIGO LOCALIZACAO_ID, A.PRODUTO_CODIGO PRODUTO_ID, P.FAMILIA_CODIGO FAMILIA_ID, P.DESCRICAO, P.GRADE_CODIGO GRADE_ID, 12 TAMANHO, FN_TAMANHO_GRADE(P.GRADE_CODIGO,12) TAMANHO_DESCRICAO, A.T12_SALDO, P.UNIDADEMEDIDA_SIGLA FROM TBESTOQUE_SALDO A LEFT JOIN TBPRODUTO P ON P.CODIGO = A.PRODUTO_CODIGO AND P.LOCALIZACAO_CODIGO = A.LOCALIZACAO_CODIGO WHERE A.T12_SALDO > 0 AND P.GRADE_CODIGO > 0 UNION
                SELECT A.ESTABELECIMENTO_CODIGO ESTABELECIMENTO_ID, A.LOCALIZACAO_CODIGO LOCALIZACAO_ID, A.PRODUTO_CODIGO PRODUTO_ID, P.FAMILIA_CODIGO FAMILIA_ID, P.DESCRICAO, P.GRADE_CODIGO GRADE_ID, 13 TAMANHO, FN_TAMANHO_GRADE(P.GRADE_CODIGO,13) TAMANHO_DESCRICAO, A.T13_SALDO, P.UNIDADEMEDIDA_SIGLA FROM TBESTOQUE_SALDO A LEFT JOIN TBPRODUTO P ON P.CODIGO = A.PRODUTO_CODIGO AND P.LOCALIZACAO_CODIGO = A.LOCALIZACAO_CODIGO WHERE A.T13_SALDO > 0 AND P.GRADE_CODIGO > 0 UNION
                SELECT A.ESTABELECIMENTO_CODIGO ESTABELECIMENTO_ID, A.LOCALIZACAO_CODIGO LOCALIZACAO_ID, A.PRODUTO_CODIGO PRODUTO_ID, P.FAMILIA_CODIGO FAMILIA_ID, P.DESCRICAO, P.GRADE_CODIGO GRADE_ID, 14 TAMANHO, FN_TAMANHO_GRADE(P.GRADE_CODIGO,14) TAMANHO_DESCRICAO, A.T14_SALDO, P.UNIDADEMEDIDA_SIGLA FROM TBESTOQUE_SALDO A LEFT JOIN TBPRODUTO P ON P.CODIGO = A.PRODUTO_CODIGO AND P.LOCALIZACAO_CODIGO = A.LOCALIZACAO_CODIGO WHERE A.T14_SALDO > 0 AND P.GRADE_CODIGO > 0 UNION
                SELECT A.ESTABELECIMENTO_CODIGO ESTABELECIMENTO_ID, A.LOCALIZACAO_CODIGO LOCALIZACAO_ID, A.PRODUTO_CODIGO PRODUTO_ID, P.FAMILIA_CODIGO FAMILIA_ID, P.DESCRICAO, P.GRADE_CODIGO GRADE_ID, 15 TAMANHO, FN_TAMANHO_GRADE(P.GRADE_CODIGO,15) TAMANHO_DESCRICAO, A.T15_SALDO, P.UNIDADEMEDIDA_SIGLA FROM TBESTOQUE_SALDO A LEFT JOIN TBPRODUTO P ON P.CODIGO = A.PRODUTO_CODIGO AND P.LOCALIZACAO_CODIGO = A.LOCALIZACAO_CODIGO WHERE A.T15_SALDO > 0 AND P.GRADE_CODIGO > 0 UNION
                SELECT A.ESTABELECIMENTO_CODIGO ESTABELECIMENTO_ID, A.LOCALIZACAO_CODIGO LOCALIZACAO_ID, A.PRODUTO_CODIGO PRODUTO_ID, P.FAMILIA_CODIGO FAMILIA_ID, P.DESCRICAO, P.GRADE_CODIGO GRADE_ID, 16 TAMANHO, FN_TAMANHO_GRADE(P.GRADE_CODIGO,16) TAMANHO_DESCRICAO, A.T16_SALDO, P.UNIDADEMEDIDA_SIGLA FROM TBESTOQUE_SALDO A LEFT JOIN TBPRODUTO P ON P.CODIGO = A.PRODUTO_CODIGO AND P.LOCALIZACAO_CODIGO = A.LOCALIZACAO_CODIGO WHERE A.T16_SALDO > 0 AND P.GRADE_CODIGO > 0 UNION
                SELECT A.ESTABELECIMENTO_CODIGO ESTABELECIMENTO_ID, A.LOCALIZACAO_CODIGO LOCALIZACAO_ID, A.PRODUTO_CODIGO PRODUTO_ID, P.FAMILIA_CODIGO FAMILIA_ID, P.DESCRICAO, P.GRADE_CODIGO GRADE_ID, 17 TAMANHO, FN_TAMANHO_GRADE(P.GRADE_CODIGO,17) TAMANHO_DESCRICAO, A.T17_SALDO, P.UNIDADEMEDIDA_SIGLA FROM TBESTOQUE_SALDO A LEFT JOIN TBPRODUTO P ON P.CODIGO = A.PRODUTO_CODIGO AND P.LOCALIZACAO_CODIGO = A.LOCALIZACAO_CODIGO WHERE A.T17_SALDO > 0 AND P.GRADE_CODIGO > 0 UNION
                SELECT A.ESTABELECIMENTO_CODIGO ESTABELECIMENTO_ID, A.LOCALIZACAO_CODIGO LOCALIZACAO_ID, A.PRODUTO_CODIGO PRODUTO_ID, P.FAMILIA_CODIGO FAMILIA_ID, P.DESCRICAO, P.GRADE_CODIGO GRADE_ID, 18 TAMANHO, FN_TAMANHO_GRADE(P.GRADE_CODIGO,18) TAMANHO_DESCRICAO, A.T18_SALDO, P.UNIDADEMEDIDA_SIGLA FROM TBESTOQUE_SALDO A LEFT JOIN TBPRODUTO P ON P.CODIGO = A.PRODUTO_CODIGO AND P.LOCALIZACAO_CODIGO = A.LOCALIZACAO_CODIGO WHERE A.T18_SALDO > 0 AND P.GRADE_CODIGO > 0 UNION
                SELECT A.ESTABELECIMENTO_CODIGO ESTABELECIMENTO_ID, A.LOCALIZACAO_CODIGO LOCALIZACAO_ID, A.PRODUTO_CODIGO PRODUTO_ID, P.FAMILIA_CODIGO FAMILIA_ID, P.DESCRICAO, P.GRADE_CODIGO GRADE_ID, 19 TAMANHO, FN_TAMANHO_GRADE(P.GRADE_CODIGO,19) TAMANHO_DESCRICAO, A.T19_SALDO, P.UNIDADEMEDIDA_SIGLA FROM TBESTOQUE_SALDO A LEFT JOIN TBPRODUTO P ON P.CODIGO = A.PRODUTO_CODIGO AND P.LOCALIZACAO_CODIGO = A.LOCALIZACAO_CODIGO WHERE A.T19_SALDO > 0 AND P.GRADE_CODIGO > 0 UNION
                SELECT A.ESTABELECIMENTO_CODIGO ESTABELECIMENTO_ID, A.LOCALIZACAO_CODIGO LOCALIZACAO_ID, A.PRODUTO_CODIGO PRODUTO_ID, P.FAMILIA_CODIGO FAMILIA_ID, P.DESCRICAO, P.GRADE_CODIGO GRADE_ID, 20 TAMANHO, FN_TAMANHO_GRADE(P.GRADE_CODIGO,20) TAMANHO_DESCRICAO, A.T20_SALDO, P.UNIDADEMEDIDA_SIGLA FROM TBESTOQUE_SALDO A LEFT JOIN TBPRODUTO P ON P.CODIGO = A.PRODUTO_CODIGO AND P.LOCALIZACAO_CODIGO = A.LOCALIZACAO_CODIGO WHERE A.T20_SALDO > 0 AND P.GRADE_CODIGO > 0 
                
        ) Z
        WHERE Z.PRODUTO_ID = :PRODUTO_ID
        AND 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 ; ^