CREATE OR ALTER PROCEDURE SPC_ESTOQUE_SALDO_LOCALIZACAO (
    ESTABELECIMENTO INTEGER,
    PRODUTO INTEGER,
    LOCALIZACAO INTEGER)
RETURNS (
    ESTABELECIMENTO_ID VARCHAR(1000),
    ESTABELECIMENTO_DESCRICAO VARCHAR(20),
    LOCALIZACAO_ID VARCHAR(1000),
    LOCALIZACAO_DESCRICAO VARCHAR(20),
    PRODUTO_ID VARCHAR(1000),
    PRODUTO_DESCRICAO VARCHAR(100),
    GRADE_CODIGO INTEGER,
    SALDO NUMERIC(10,5),
    T01_SALDO NUMERIC(10,5),
    T02_SALDO NUMERIC(10,5),
    T03_SALDO NUMERIC(10,5),
    T04_SALDO NUMERIC(10,5),
    T05_SALDO NUMERIC(10,5),
    T06_SALDO NUMERIC(10,5),
    T07_SALDO NUMERIC(10,5),
    T08_SALDO NUMERIC(10,5),
    T09_SALDO NUMERIC(10,5),
    T10_SALDO NUMERIC(10,5),
    T11_SALDO NUMERIC(10,5),
    T12_SALDO NUMERIC(10,5),
    T13_SALDO NUMERIC(10,5),
    T14_SALDO NUMERIC(10,5),
    T15_SALDO NUMERIC(10,5),
    T16_SALDO NUMERIC(10,5),
    T17_SALDO NUMERIC(10,5),
    T18_SALDO NUMERIC(10,5),
    T19_SALDO NUMERIC(10,5),
    T20_SALDO NUMERIC(10,5))
AS
BEGIN
FOR SELECT
    FN_LPAD(E.CODIGO, 4, '0') AS ESTABELECIMENTO_ID,
    E.NOMEFANTASIA AS ESTABELECIMENTO_DESCRICAO,
    FN_LPAD(L.CODIGO, 4, '0') AS LOCALIZACAO_ID,
    L.DESCRICAO AS LOCALIZACAO_DESCRICAO,
    FN_LPAD(P.CODIGO, 7, '0') AS PRODUTO_ID,
    P.DESCRICAO AS PRODUTO_DESCRICAO,
    P.GRADE_CODIGO,
    A.SALDO,
    A.T01_SALDO, A.T02_SALDO, A.T03_SALDO, A.T04_SALDO, A.T05_SALDO, A.T06_SALDO,
    A.T07_SALDO, A.T08_SALDO, A.T09_SALDO, A.T10_SALDO, A.T11_SALDO, A.T12_SALDO,
    A.T13_SALDO, A.T14_SALDO, A.T15_SALDO, A.T16_SALDO, A.T17_SALDO, A.T18_SALDO,
    A.T19_SALDO, A.T20_SALDO
FROM TBESTOQUE_SALDO A
INNER JOIN TBESTABELECIMENTO E ON E.CODIGO = A.ESTABELECIMENTO_CODIGO
INNER JOIN TBLOCALIZACAO L ON L.CODIGO = A.LOCALIZACAO_CODIGO
INNER JOIN TBPRODUTO P ON P.CODIGO = A.PRODUTO_CODIGO
WHERE A.ESTABELECIMENTO_CODIGO = :ESTABELECIMENTO
 AND A.LOCALIZACAO_CODIGO = :LOCALIZACAO
 AND  A.PRODUTO_CODIGO = :PRODUTO

INTO    :ESTABELECIMENTO_ID, :ESTABELECIMENTO_DESCRICAO,
        :LOCALIZACAO_ID, :LOCALIZACAO_DESCRICAO,
        :PRODUTO_ID, :PRODUTO_DESCRICAO, :GRADE_CODIGO, :SALDO,
        :T01_SALDO, :T02_SALDO, :T03_SALDO, :T04_SALDO, :T05_SALDO, :T06_SALDO,
        :T07_SALDO, :T08_SALDO, :T09_SALDO, :T10_SALDO, :T11_SALDO, :T12_SALDO,
        :T13_SALDO, :T14_SALDO, :T15_SALDO, :T16_SALDO, :T17_SALDO, :T18_SALDO,
        :T19_SALDO, :T20_SALDO
DO SUSPEND;
END;
