CREATE OR ALTER PROCEDURE SPC_ESTOQUE_DISP_LIN_MOD_GRADE (
    LOCALIZACAO INTEGER,
    TABELA_PRECO INTEGER,
    TIPO_ESTOQUE INTEGER,
    DATA1 DATE,
    DATA2 DATE)
RETURNS (
    GRADE_ID INTEGER,
    LINHA_ID INTEGER,
    LINHA_DESCRICAO VARCHAR(50),
    MODELO_ID INTEGER,
    MODELO_DESCRICAO VARCHAR(100),
    TIPO VARCHAR(50),
    T01 NUMERIC(15,0),
    T02 NUMERIC(15,0),
    T03 NUMERIC(15,0),
    T04 NUMERIC(15,0),
    T05 NUMERIC(15,0),
    T06 NUMERIC(15,0),
    T07 NUMERIC(15,0),
    T08 NUMERIC(15,0),
    T09 NUMERIC(15,0),
    T10 NUMERIC(15,0),
    T11 NUMERIC(15,0),
    T12 NUMERIC(15,0),
    T13 NUMERIC(15,0),
    T14 NUMERIC(15,0),
    T15 NUMERIC(15,0),
    T16 NUMERIC(15,0),
    T17 NUMERIC(15,0),
    T18 NUMERIC(15,0),
    T19 NUMERIC(15,0),
    T20 NUMERIC(15,0),
    G01 VARCHAR(10),
    G02 VARCHAR(10),
    G03 VARCHAR(10),
    G04 VARCHAR(10),
    G05 VARCHAR(10),
    G06 VARCHAR(10),
    G07 VARCHAR(10),
    G08 VARCHAR(10),
    G09 VARCHAR(10),
    G10 VARCHAR(10),
    G11 VARCHAR(10),
    G12 VARCHAR(10),
    G13 VARCHAR(10),
    G14 VARCHAR(10),
    G15 VARCHAR(10),
    G16 VARCHAR(10),
    G17 VARCHAR(10),
    G18 VARCHAR(10),
    G19 VARCHAR(10),
    G20 VARCHAR(10),
    TMIN INTEGER,
    TMAX INTEGER,
    TOT NUMERIC(15,0),
    GTOT VARCHAR(10),
    TAM_MAX_MIN INTEGER,
    PRECO NUMERIC(15,4),
    VALOR_TOTAL NUMERIC(15,4))
AS
DECLARE VARIABLE PROX_LIN            INTEGER;
DECLARE VARIABLE PROX_LIN_GRADE      VARCHAR(100);
DECLARE VARIABLE E01                 NUMERIC(15,0);
DECLARE VARIABLE E02                 NUMERIC(15,0);
DECLARE VARIABLE E03                 NUMERIC(15,0);
DECLARE VARIABLE E04                 NUMERIC(15,0);
DECLARE VARIABLE E05                 NUMERIC(15,0);
DECLARE VARIABLE E06                 NUMERIC(15,0);
DECLARE VARIABLE E07                 NUMERIC(15,0);
DECLARE VARIABLE E08                 NUMERIC(15,0);
DECLARE VARIABLE E09                 NUMERIC(15,0);
DECLARE VARIABLE E10                 NUMERIC(15,0);
DECLARE VARIABLE E11                 NUMERIC(15,0);
DECLARE VARIABLE E12                 NUMERIC(15,0);
DECLARE VARIABLE E13                 NUMERIC(15,0);
DECLARE VARIABLE E14                 NUMERIC(15,0);
DECLARE VARIABLE E15                 NUMERIC(15,0);
DECLARE VARIABLE E16                 NUMERIC(15,0);
DECLARE VARIABLE E17                 NUMERIC(15,0);
DECLARE VARIABLE E18                 NUMERIC(15,0);
DECLARE VARIABLE E19                 NUMERIC(15,0);
DECLARE VARIABLE E20                 NUMERIC(15,0);
DECLARE VARIABLE A01                 NUMERIC(15,0);
DECLARE VARIABLE A02                 NUMERIC(15,0);
DECLARE VARIABLE A03                 NUMERIC(15,0);
DECLARE VARIABLE A04                 NUMERIC(15,0);
DECLARE VARIABLE A05                 NUMERIC(15,0);
DECLARE VARIABLE A06                 NUMERIC(15,0);
DECLARE VARIABLE A07                 NUMERIC(15,0);
DECLARE VARIABLE A08                 NUMERIC(15,0);
DECLARE VARIABLE A09                 NUMERIC(15,0);
DECLARE VARIABLE A10                 NUMERIC(15,0);
DECLARE VARIABLE A11                 NUMERIC(15,0);
DECLARE VARIABLE A12                 NUMERIC(15,0);
DECLARE VARIABLE A13                 NUMERIC(15,0);
DECLARE VARIABLE A14                 NUMERIC(15,0);
DECLARE VARIABLE A15                 NUMERIC(15,0);
DECLARE VARIABLE A16                 NUMERIC(15,0);
DECLARE VARIABLE A17                 NUMERIC(15,0);
DECLARE VARIABLE A18                 NUMERIC(15,0);
DECLARE VARIABLE A19                 NUMERIC(15,0);
DECLARE VARIABLE A20                 NUMERIC(15,0);
DECLARE VARIABLE P01                 NUMERIC(15,0);
DECLARE VARIABLE P02                 NUMERIC(15,0);
DECLARE VARIABLE P03                 NUMERIC(15,0);
DECLARE VARIABLE P04                 NUMERIC(15,0);
DECLARE VARIABLE P05                 NUMERIC(15,0);
DECLARE VARIABLE P06                 NUMERIC(15,0);
DECLARE VARIABLE P07                 NUMERIC(15,0);
DECLARE VARIABLE P08                 NUMERIC(15,0);
DECLARE VARIABLE P09                 NUMERIC(15,0);
DECLARE VARIABLE P10                 NUMERIC(15,0);
DECLARE VARIABLE P11                 NUMERIC(15,0);
DECLARE VARIABLE P12                 NUMERIC(15,0);
DECLARE VARIABLE P13                 NUMERIC(15,0);
DECLARE VARIABLE P14                 NUMERIC(15,0);
DECLARE VARIABLE P15                 NUMERIC(15,0);
DECLARE VARIABLE P16                 NUMERIC(15,0);
DECLARE VARIABLE P17                 NUMERIC(15,0);
DECLARE VARIABLE P18                 NUMERIC(15,0);
DECLARE VARIABLE P19                 NUMERIC(15,0);
DECLARE VARIABLE P20                 NUMERIC(15,0);
DECLARE VARIABLE VQTDLINHAESTOQUE    NUMERIC(15,0);
DECLARE VARIABLE VVLRLINHAESTOQUE    NUMERIC(15,2);
DECLARE VARIABLE VQTDLINHADISPONIVEL NUMERIC(15,0);
DECLARE VARIABLE VVLRLINHADISPONIVEL NUMERIC(15,2);
DECLARE VARIABLE VQTDTOTALESTOQUE    NUMERIC(15,0);
DECLARE VARIABLE VVLRTOTALESTOQUE    NUMERIC(15,2);
DECLARE VARIABLE VQTDTOTALDISPONIVEL NUMERIC(15,0);
DECLARE VARIABLE VVLRTOTALDISPONIVEL NUMERIC(15,2);
begin

    vQtdLinhaEstoque = 0;
    vVlrLinhaEstoque = 0;
    vQtdLinhaDisponivel = 0;
    vVlrLinhaDisponivel = 0;
    vQtdTotalEstoque = 0;
    vVlrTotalEstoque = 0;
    vQtdTotalDisponivel = 0;
    vVlrTotalDisponivel = 0;

    FOR
        SELECT LINHA_ID,LINHA_DESCRICAO,
               MODELO_ID, MODELO_DESCRICAO,
               T01,T02,T03,T04,T05,T06,T07,T08,T09,T10,
               T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,
               A01,A02,A03,A04,A05,A06,A07,A08,A09,A10,
               A11,A12,A13,A14,A15,A16,A17,A18,A19,A20,
               P01, P02, P03, P04, P05, P06, P07, P08, P09, P10,
               P11, P12, P13, P14, P15, P16, P17, P18, P19, P20,
               G01,G02,G03,G04,G05,G06,G07,G08,G09,G10,
               G11,G12,G13,G14,G15,G16,G17,G18,G19,G20, 
               TMIN,
               TMAX,
               MAX(TAM_MAX_MIN) OVER (),
               PROX_LIN,
               GRADE_ID,
               PROX_LIN_GRADE
          FROM (
                SELECT LINHA_ID,LINHA_DESCRICAO,
                       MODELO_ID, MODELO_DESCRICAO,
                       T01,T02,T03,T04,T05,T06,T07,T08,T09,T10,
                       T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,
                       A01,A02,A03,A04,A05,A06,A07,A08,A09,A10,
                       A11,A12,A13,A14,A15,A16,A17,A18,A19,A20,
                       P01, P02, P03, P04, P05, P06, P07, P08, P09, P10,
                       P11, P12, P13, P14, P15, P16, P17, P18, P19, P20,
                       G01,G02,G03,G04,G05,G06,G07,G08,G09,G10,
                       G11,G12,G13,G14,G15,G16,G17,G18,G19,G20, 
                       MIN(TAM_MIN) OVER (PARTITION BY LINHA_ID,GRADE_ID) TMIN,
                       MAX(TAM_MAX) OVER (PARTITION BY LINHA_ID,GRADE_ID) TMAX,
                       TAM_MAX - TAM_MIN + 2 as TAM_MAX_MIN,
                       GRADE_ID,
                       PROX_LIN,
                       PROX_LIN_GRADE
                  FROM (
                        SELECT LINHA_ID,
                               LINHA_DESCRICAO,
                               MODELO_ID,MODELO_DESCRICAO,
                               T01,T02,T03,T04,T05,T06,T07,T08,T09,T10,
                               T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,
                               A01,A02,A03,A04,A05,A06,A07,A08,A09,A10,
                               A11,A12,A13,A14,A15,A16,A17,A18,A19,A20,
                               P01, P02, P03, P04, P05, P06, P07, P08, P09, P10,
                               P11, P12, P13, P14, P15, P16, P17, P18, P19, P20,
                               G01,G02,G03,G04,G05,G06,G07,G08,G09,G10,
                               G11,G12,G13,G14,G15,G16,G17,G18,G19,G20,
                               LEAD (LINHA_ID) OVER (ORDER BY LINHA_ID,GRADE_ID,MODELO_ID) PROX_LIN,
                               LEAD (LIN_GRADE) OVER (ORDER BY LINHA_ID,GRADE_ID,MODELO_ID) PROX_LIN_GRADE,
                               IIF(T01>0,1,  IIF(T02>0,2,    IIF(T03>0,3,  IIF(T04>0,4,
                               IIF(T05>0,5,  IIF(T06>0,6,    IIF(T07>0,7,  IIF(T08>0,8,
                               IIF(T09>0,9,  IIF(T10>0,10,   IIF(T11>0,11, IIF(T12>0,12,
                               IIF(T13>0,13, IIF(T14>0,14,   IIF(T15>0,15, IIF(T16>0,16,
                               IIF(T17>0,17, IIF(T18>0,18,   IIF(T19>0,19, 20))))))))))))))))))) TAM_MIN,
                               IIF(T20>0,20, IIF(T19>0,19,   IIF(T18>0,18, IIF(T17>0,17,
                               IIF(T16>0,16, IIF(T15>0,15,   IIF(T14>0,14, IIF(T13>0,13,
                               IIF(T12>0,12, IIF(T11>0,11,   IIF(T10>0,10, IIF(T09>0,9,
                               IIF(T08>0,8,  IIF(T07>0,7,    IIF(T06>0,6,  IIF(T05>0,5,
                               IIF(T04>0,4,  IIF(T03>0,3,    IIF(T02>0,2,  1))))))))))))))))))) TAM_MAX,
                               GRADE_ID
                          FROM (
                                SELECT X.LINHA_ID,
                                       X.LINHA_DESCRICAO,
                                       X.MODELO_ID,
                                       X.MODELO_DESCRICAO,
                                       SUM(T01) T01,SUM(T02) T02,SUM(T03) T03,SUM(T04) T04,
                                       SUM(T05) T05,SUM(T06) T06,SUM(T07) T07,SUM(T08) T08,
                                       SUM(T09) T09,SUM(T10) T10,SUM(T11) T11,SUM(T12) T12,
                                       SUM(T13) T13,SUM(T14) T14,SUM(T15) T15,SUM(T16) T16,
                                       SUM(T17) T17,SUM(T18) T18,SUM(T19) T19,SUM(T20) T20,
                                       SUM(A01) A01,SUM(A02) A02,SUM(A03) A03,SUM(A04) A04,
                                       SUM(A05) A05,SUM(A06) A06,SUM(A07) A07,SUM(A08) A08,
                                       SUM(A09) A09,SUM(A10) A10,SUM(A11) A11,SUM(A12) A12,
                                       SUM(A13) A13,SUM(A14) A14,SUM(A15) A15,SUM(A16) A16,
                                       SUM(A17) A17,SUM(A18) A18,SUM(A19) A19,SUM(A20) A20,
                                       SUM( P01)  P01,SUM( P02)  P02,SUM( P03)  P03,SUM( P04)  P04,
                                       SUM( P05)  P05,SUM( P06)  P06,SUM( P07)  P07,SUM( P08)  P08,
                                       SUM( P09)  P09,SUM( P10)  P10,SUM( P11)  P11,SUM( P12)  P12,
                                       SUM( P13)  P13,SUM( P14)  P14,SUM( P15)  P15,SUM( P16)  P16,
                                       SUM( P17)  P17,SUM( P18)  P18,SUM( P19)  P19,SUM( P20)  P20,
                                       G01,G02,G03,G04,G05,G06,G07,G08,G09,G10,
                                       G11,G12,G13,G14,G15,G16,G17,G18,G19,G20,
                                       X.LINHA_ID||'-'||X.GRADE_ID AS LIN_GRADE,
                                       X.GRADE_ID
                                 FROM (
                                            SELECT ML.CODIGO AS LINHA_ID,
                                                   ML.DESCRICAO AS LINHA_DESCRICAO,
                                                   M.CODIGO AS MODELO_ID,
                                                   M.DESCRICAO AS MODELO_DESCRICAO,
                                                   A.T01_SALDO AS T01,
                                                   A.T02_SALDO as T02,
                                                   A.T03_SALDO as T03,
                                                   A.T04_SALDO as T04,
                                                   A.T05_SALDO as T05,
                                                   A.T06_SALDO as T06,
                                                   A.T07_SALDO as T07,
                                                   A.T08_SALDO as T08,
                                                   A.T09_SALDO as T09,
                                                   A.T10_SALDO as T10,
                                                   A.T11_SALDO as T11,
                                                   A.T12_SALDO as T12,
                                                   A.T13_SALDO as T13,
                                                   A.T14_SALDO as T14,
                                                   A.T15_SALDO as T15,
                                                   A.T16_SALDO as T16,
                                                   A.T17_SALDO as T17,
                                                   A.T18_SALDO as T18,
                                                   A.T19_SALDO as T19,
                                                   A.T20_SALDO as T20,

                                                   IIF(:TIPO_ESTOQUE IN (2,4), COALESCE((SELECT SUM(SA.QUANTIDADE) FROM TBESTOQUE_SALDO_ALOCACAO SA WHERE SA.ESTABELECIMENTO_ID = A.ESTABELECIMENTO_CODIGO AND SA.LOCALIZACAO_ID = A.LOCALIZACAO_CODIGO AND SA.PRODUTO_ID = A.PRODUTO_CODIGO AND SA.TAMANHO = 1),0),0) A01,
                                                   IIF(:TIPO_ESTOQUE IN (2,4), COALESCE((SELECT SUM(SA.QUANTIDADE) FROM TBESTOQUE_SALDO_ALOCACAO SA WHERE SA.ESTABELECIMENTO_ID = A.ESTABELECIMENTO_CODIGO AND SA.LOCALIZACAO_ID = A.LOCALIZACAO_CODIGO AND SA.PRODUTO_ID = A.PRODUTO_CODIGO AND SA.TAMANHO = 2),0),0) A02,
                                                   IIF(:TIPO_ESTOQUE IN (2,4), COALESCE((SELECT SUM(SA.QUANTIDADE) FROM TBESTOQUE_SALDO_ALOCACAO SA WHERE SA.ESTABELECIMENTO_ID = A.ESTABELECIMENTO_CODIGO AND SA.LOCALIZACAO_ID = A.LOCALIZACAO_CODIGO AND SA.PRODUTO_ID = A.PRODUTO_CODIGO AND SA.TAMANHO = 3),0),0) A03,
                                                   IIF(:TIPO_ESTOQUE IN (2,4), COALESCE((SELECT SUM(SA.QUANTIDADE) FROM TBESTOQUE_SALDO_ALOCACAO SA WHERE SA.ESTABELECIMENTO_ID = A.ESTABELECIMENTO_CODIGO AND SA.LOCALIZACAO_ID = A.LOCALIZACAO_CODIGO AND SA.PRODUTO_ID = A.PRODUTO_CODIGO AND SA.TAMANHO = 4),0),0) A04,
                                                   IIF(:TIPO_ESTOQUE IN (2,4), COALESCE((SELECT SUM(SA.QUANTIDADE) FROM TBESTOQUE_SALDO_ALOCACAO SA WHERE SA.ESTABELECIMENTO_ID = A.ESTABELECIMENTO_CODIGO AND SA.LOCALIZACAO_ID = A.LOCALIZACAO_CODIGO AND SA.PRODUTO_ID = A.PRODUTO_CODIGO AND SA.TAMANHO = 5),0),0) A05,
                                                   IIF(:TIPO_ESTOQUE IN (2,4), COALESCE((SELECT SUM(SA.QUANTIDADE) FROM TBESTOQUE_SALDO_ALOCACAO SA WHERE SA.ESTABELECIMENTO_ID = A.ESTABELECIMENTO_CODIGO AND SA.LOCALIZACAO_ID = A.LOCALIZACAO_CODIGO AND SA.PRODUTO_ID = A.PRODUTO_CODIGO AND SA.TAMANHO = 6),0),0) A06,
                                                   IIF(:TIPO_ESTOQUE IN (2,4), COALESCE((SELECT SUM(SA.QUANTIDADE) FROM TBESTOQUE_SALDO_ALOCACAO SA WHERE SA.ESTABELECIMENTO_ID = A.ESTABELECIMENTO_CODIGO AND SA.LOCALIZACAO_ID = A.LOCALIZACAO_CODIGO AND SA.PRODUTO_ID = A.PRODUTO_CODIGO AND SA.TAMANHO = 7),0),0) A07,
                                                   IIF(:TIPO_ESTOQUE IN (2,4), COALESCE((SELECT SUM(SA.QUANTIDADE) FROM TBESTOQUE_SALDO_ALOCACAO SA WHERE SA.ESTABELECIMENTO_ID = A.ESTABELECIMENTO_CODIGO AND SA.LOCALIZACAO_ID = A.LOCALIZACAO_CODIGO AND SA.PRODUTO_ID = A.PRODUTO_CODIGO AND SA.TAMANHO = 8),0),0) A08,
                                                   IIF(:TIPO_ESTOQUE IN (2,4), COALESCE((SELECT SUM(SA.QUANTIDADE) FROM TBESTOQUE_SALDO_ALOCACAO SA WHERE SA.ESTABELECIMENTO_ID = A.ESTABELECIMENTO_CODIGO AND SA.LOCALIZACAO_ID = A.LOCALIZACAO_CODIGO AND SA.PRODUTO_ID = A.PRODUTO_CODIGO AND SA.TAMANHO = 9),0),0) A09,
                                                   IIF(:TIPO_ESTOQUE IN (2,4), COALESCE((SELECT SUM(SA.QUANTIDADE) FROM TBESTOQUE_SALDO_ALOCACAO SA WHERE SA.ESTABELECIMENTO_ID = A.ESTABELECIMENTO_CODIGO AND SA.LOCALIZACAO_ID = A.LOCALIZACAO_CODIGO AND SA.PRODUTO_ID = A.PRODUTO_CODIGO AND SA.TAMANHO =10),0),0) A10,
                                                   IIF(:TIPO_ESTOQUE IN (2,4), COALESCE((SELECT SUM(SA.QUANTIDADE) FROM TBESTOQUE_SALDO_ALOCACAO SA WHERE SA.ESTABELECIMENTO_ID = A.ESTABELECIMENTO_CODIGO AND SA.LOCALIZACAO_ID = A.LOCALIZACAO_CODIGO AND SA.PRODUTO_ID = A.PRODUTO_CODIGO AND SA.TAMANHO =11),0),0) A11,
                                                   IIF(:TIPO_ESTOQUE IN (2,4), COALESCE((SELECT SUM(SA.QUANTIDADE) FROM TBESTOQUE_SALDO_ALOCACAO SA WHERE SA.ESTABELECIMENTO_ID = A.ESTABELECIMENTO_CODIGO AND SA.LOCALIZACAO_ID = A.LOCALIZACAO_CODIGO AND SA.PRODUTO_ID = A.PRODUTO_CODIGO AND SA.TAMANHO =12),0),0) A12,
                                                   IIF(:TIPO_ESTOQUE IN (2,4), COALESCE((SELECT SUM(SA.QUANTIDADE) FROM TBESTOQUE_SALDO_ALOCACAO SA WHERE SA.ESTABELECIMENTO_ID = A.ESTABELECIMENTO_CODIGO AND SA.LOCALIZACAO_ID = A.LOCALIZACAO_CODIGO AND SA.PRODUTO_ID = A.PRODUTO_CODIGO AND SA.TAMANHO =13),0),0) A13,
                                                   IIF(:TIPO_ESTOQUE IN (2,4), COALESCE((SELECT SUM(SA.QUANTIDADE) FROM TBESTOQUE_SALDO_ALOCACAO SA WHERE SA.ESTABELECIMENTO_ID = A.ESTABELECIMENTO_CODIGO AND SA.LOCALIZACAO_ID = A.LOCALIZACAO_CODIGO AND SA.PRODUTO_ID = A.PRODUTO_CODIGO AND SA.TAMANHO =14),0),0) A14,
                                                   IIF(:TIPO_ESTOQUE IN (2,4), COALESCE((SELECT SUM(SA.QUANTIDADE) FROM TBESTOQUE_SALDO_ALOCACAO SA WHERE SA.ESTABELECIMENTO_ID = A.ESTABELECIMENTO_CODIGO AND SA.LOCALIZACAO_ID = A.LOCALIZACAO_CODIGO AND SA.PRODUTO_ID = A.PRODUTO_CODIGO AND SA.TAMANHO =15),0),0) A15,
                                                   IIF(:TIPO_ESTOQUE IN (2,4), COALESCE((SELECT SUM(SA.QUANTIDADE) FROM TBESTOQUE_SALDO_ALOCACAO SA WHERE SA.ESTABELECIMENTO_ID = A.ESTABELECIMENTO_CODIGO AND SA.LOCALIZACAO_ID = A.LOCALIZACAO_CODIGO AND SA.PRODUTO_ID = A.PRODUTO_CODIGO AND SA.TAMANHO =16),0),0) A16,
                                                   IIF(:TIPO_ESTOQUE IN (2,4), COALESCE((SELECT SUM(SA.QUANTIDADE) FROM TBESTOQUE_SALDO_ALOCACAO SA WHERE SA.ESTABELECIMENTO_ID = A.ESTABELECIMENTO_CODIGO AND SA.LOCALIZACAO_ID = A.LOCALIZACAO_CODIGO AND SA.PRODUTO_ID = A.PRODUTO_CODIGO AND SA.TAMANHO =17),0),0) A17,
                                                   IIF(:TIPO_ESTOQUE IN (2,4), COALESCE((SELECT SUM(SA.QUANTIDADE) FROM TBESTOQUE_SALDO_ALOCACAO SA WHERE SA.ESTABELECIMENTO_ID = A.ESTABELECIMENTO_CODIGO AND SA.LOCALIZACAO_ID = A.LOCALIZACAO_CODIGO AND SA.PRODUTO_ID = A.PRODUTO_CODIGO AND SA.TAMANHO =18),0),0) A18,
                                                   IIF(:TIPO_ESTOQUE IN (2,4), COALESCE((SELECT SUM(SA.QUANTIDADE) FROM TBESTOQUE_SALDO_ALOCACAO SA WHERE SA.ESTABELECIMENTO_ID = A.ESTABELECIMENTO_CODIGO AND SA.LOCALIZACAO_ID = A.LOCALIZACAO_CODIGO AND SA.PRODUTO_ID = A.PRODUTO_CODIGO AND SA.TAMANHO =19),0),0) A19,
                                                   IIF(:TIPO_ESTOQUE IN (2,4), COALESCE((SELECT SUM(SA.QUANTIDADE) FROM TBESTOQUE_SALDO_ALOCACAO SA WHERE SA.ESTABELECIMENTO_ID = A.ESTABELECIMENTO_CODIGO AND SA.LOCALIZACAO_ID = A.LOCALIZACAO_CODIGO AND SA.PRODUTO_ID = A.PRODUTO_CODIGO AND SA.TAMANHO =20),0),0) A20,

                                                   IIF(:TIPO_ESTOQUE IN (3,5),
                                                   COALESCE((SELECT SUM(C.QUANTIDADE) FROM TBPEDIDO AA, TBPEDIDO_ITEM B, TBPEDIDO_ITEM_SALDO C
                                                              WHERE AA.PEDIDO = B.PEDIDO AND B.PEDIDO = C.PEDIDO AND B.CONTROLE = C.PEDIDO_ITEM_CONTROLE
                                                                AND AA.ESTABELECIMENTO_CODIGO = A.ESTABELECIMENTO_CODIGO AND B.LOCALIZACAO_ID = A.LOCALIZACAO_CODIGO
                                                                AND B.PRODUTO_CODIGO = A.PRODUTO_CODIGO AND B.TAMANHO = 1 AND B.SITUACAO = 1
                                                                AND AA.DATA_CLIENTE BETWEEN :DATA1 AND :DATA2),0),0) AS P01,
                                                   IIF(:TIPO_ESTOQUE IN (3,5),
                                                   COALESCE((SELECT SUM(C.QUANTIDADE) FROM TBPEDIDO AA, TBPEDIDO_ITEM B, TBPEDIDO_ITEM_SALDO C
                                                              WHERE AA.PEDIDO = B.PEDIDO AND B.PEDIDO = C.PEDIDO AND B.CONTROLE = C.PEDIDO_ITEM_CONTROLE
                                                                AND AA.ESTABELECIMENTO_CODIGO = A.ESTABELECIMENTO_CODIGO AND B.LOCALIZACAO_ID = A.LOCALIZACAO_CODIGO
                                                                AND B.PRODUTO_CODIGO = A.PRODUTO_CODIGO AND B.TAMANHO = 2 AND B.SITUACAO = 1
                                                                AND AA.DATA_CLIENTE BETWEEN :DATA1 AND :DATA2),0),0) AS P02,
                                                   IIF(:TIPO_ESTOQUE IN (3,5),
                                                   COALESCE((SELECT SUM(C.QUANTIDADE) FROM TBPEDIDO AA, TBPEDIDO_ITEM B, TBPEDIDO_ITEM_SALDO C
                                                              WHERE AA.PEDIDO = B.PEDIDO AND B.PEDIDO = C.PEDIDO AND B.CONTROLE = C.PEDIDO_ITEM_CONTROLE
                                                                AND AA.ESTABELECIMENTO_CODIGO = A.ESTABELECIMENTO_CODIGO AND B.LOCALIZACAO_ID = A.LOCALIZACAO_CODIGO
                                                                AND B.PRODUTO_CODIGO = A.PRODUTO_CODIGO AND B.TAMANHO = 3 AND B.SITUACAO = 1
                                                                AND AA.DATA_CLIENTE BETWEEN :DATA1 AND :DATA2),0),0) AS P03,
                                                   IIF(:TIPO_ESTOQUE IN (3,5),
                                                   COALESCE((SELECT SUM(C.QUANTIDADE) FROM TBPEDIDO AA, TBPEDIDO_ITEM B, TBPEDIDO_ITEM_SALDO C
                                                              WHERE AA.PEDIDO = B.PEDIDO AND B.PEDIDO = C.PEDIDO AND B.CONTROLE = C.PEDIDO_ITEM_CONTROLE
                                                                AND AA.ESTABELECIMENTO_CODIGO = A.ESTABELECIMENTO_CODIGO AND B.LOCALIZACAO_ID = A.LOCALIZACAO_CODIGO
                                                                AND B.PRODUTO_CODIGO = A.PRODUTO_CODIGO AND B.TAMANHO = 4 AND B.SITUACAO = 1
                                                                AND AA.DATA_CLIENTE BETWEEN :DATA1 AND :DATA2),0),0) AS P04,
                                                   IIF(:TIPO_ESTOQUE IN (3,5),
                                                   COALESCE((SELECT SUM(C.QUANTIDADE) FROM TBPEDIDO AA, TBPEDIDO_ITEM B, TBPEDIDO_ITEM_SALDO C
                                                              WHERE AA.PEDIDO = B.PEDIDO AND B.PEDIDO = C.PEDIDO AND B.CONTROLE = C.PEDIDO_ITEM_CONTROLE
                                                                AND AA.ESTABELECIMENTO_CODIGO = A.ESTABELECIMENTO_CODIGO AND B.LOCALIZACAO_ID = A.LOCALIZACAO_CODIGO
                                                                AND B.PRODUTO_CODIGO = A.PRODUTO_CODIGO AND B.TAMANHO = 5 AND B.SITUACAO = 1
                                                                AND AA.DATA_CLIENTE BETWEEN :DATA1 AND :DATA2),0),0) AS P05,
                                                   IIF(:TIPO_ESTOQUE IN (3,5),
                                                   COALESCE((SELECT SUM(C.QUANTIDADE) FROM TBPEDIDO AA, TBPEDIDO_ITEM B, TBPEDIDO_ITEM_SALDO C
                                                              WHERE AA.PEDIDO = B.PEDIDO AND B.PEDIDO = C.PEDIDO AND B.CONTROLE = C.PEDIDO_ITEM_CONTROLE
                                                                AND AA.ESTABELECIMENTO_CODIGO = A.ESTABELECIMENTO_CODIGO AND B.LOCALIZACAO_ID = A.LOCALIZACAO_CODIGO
                                                                AND B.PRODUTO_CODIGO = A.PRODUTO_CODIGO AND B.TAMANHO = 6 AND B.SITUACAO = 1
                                                                AND AA.DATA_CLIENTE BETWEEN :DATA1 AND :DATA2),0),0) AS P06,
                                                   IIF(:TIPO_ESTOQUE IN (3,5),
                                                   COALESCE((SELECT SUM(C.QUANTIDADE) FROM TBPEDIDO AA, TBPEDIDO_ITEM B, TBPEDIDO_ITEM_SALDO C
                                                              WHERE AA.PEDIDO = B.PEDIDO AND B.PEDIDO = C.PEDIDO AND B.CONTROLE = C.PEDIDO_ITEM_CONTROLE
                                                                AND AA.ESTABELECIMENTO_CODIGO = A.ESTABELECIMENTO_CODIGO AND B.LOCALIZACAO_ID = A.LOCALIZACAO_CODIGO
                                                                AND B.PRODUTO_CODIGO = A.PRODUTO_CODIGO AND B.TAMANHO = 7 AND B.SITUACAO = 1
                                                                AND AA.DATA_CLIENTE BETWEEN :DATA1 AND :DATA2),0),0) AS P07,
                                                   IIF(:TIPO_ESTOQUE IN (3,5),
                                                   COALESCE((SELECT SUM(C.QUANTIDADE) FROM TBPEDIDO AA, TBPEDIDO_ITEM B, TBPEDIDO_ITEM_SALDO C
                                                              WHERE AA.PEDIDO = B.PEDIDO AND B.PEDIDO = C.PEDIDO AND B.CONTROLE = C.PEDIDO_ITEM_CONTROLE
                                                                AND AA.ESTABELECIMENTO_CODIGO = A.ESTABELECIMENTO_CODIGO AND B.LOCALIZACAO_ID = A.LOCALIZACAO_CODIGO
                                                                AND B.PRODUTO_CODIGO = A.PRODUTO_CODIGO AND B.TAMANHO = 8 AND B.SITUACAO = 1
                                                                AND AA.DATA_CLIENTE BETWEEN :DATA1 AND :DATA2),0),0) AS P08,
                                                   IIF(:TIPO_ESTOQUE IN (3,5),
                                                   COALESCE((SELECT SUM(C.QUANTIDADE) FROM TBPEDIDO AA, TBPEDIDO_ITEM B, TBPEDIDO_ITEM_SALDO C
                                                              WHERE AA.PEDIDO = B.PEDIDO AND B.PEDIDO = C.PEDIDO AND B.CONTROLE = C.PEDIDO_ITEM_CONTROLE
                                                                AND AA.ESTABELECIMENTO_CODIGO = A.ESTABELECIMENTO_CODIGO AND B.LOCALIZACAO_ID = A.LOCALIZACAO_CODIGO
                                                                AND B.PRODUTO_CODIGO = A.PRODUTO_CODIGO AND B.TAMANHO = 9 AND B.SITUACAO = 1
                                                                AND AA.DATA_CLIENTE BETWEEN :DATA1 AND :DATA2),0),0) AS P09,
                                                   IIF(:TIPO_ESTOQUE IN (3,5),
                                                   COALESCE((SELECT SUM(C.QUANTIDADE) FROM TBPEDIDO AA, TBPEDIDO_ITEM B, TBPEDIDO_ITEM_SALDO C
                                                              WHERE AA.PEDIDO = B.PEDIDO AND B.PEDIDO = C.PEDIDO AND B.CONTROLE = C.PEDIDO_ITEM_CONTROLE
                                                                AND AA.ESTABELECIMENTO_CODIGO = A.ESTABELECIMENTO_CODIGO AND B.LOCALIZACAO_ID = A.LOCALIZACAO_CODIGO
                                                                AND B.PRODUTO_CODIGO = A.PRODUTO_CODIGO AND B.TAMANHO =10 AND B.SITUACAO = 1
                                                                AND AA.DATA_CLIENTE BETWEEN :DATA1 AND :DATA2),0),0) AS P10,

                                                   IIF(:TIPO_ESTOQUE IN (3,5),
                                                   COALESCE((SELECT SUM(C.QUANTIDADE) FROM TBPEDIDO AA, TBPEDIDO_ITEM B, TBPEDIDO_ITEM_SALDO C
                                                              WHERE AA.PEDIDO = B.PEDIDO AND B.PEDIDO = C.PEDIDO AND B.CONTROLE = C.PEDIDO_ITEM_CONTROLE
                                                                AND AA.ESTABELECIMENTO_CODIGO = A.ESTABELECIMENTO_CODIGO AND B.LOCALIZACAO_ID = A.LOCALIZACAO_CODIGO
                                                                AND B.PRODUTO_CODIGO = A.PRODUTO_CODIGO AND B.TAMANHO =11 AND B.SITUACAO = 1
                                                                AND AA.DATA_CLIENTE BETWEEN :DATA1 AND :DATA2),0),0) AS P11,
                                                   IIF(:TIPO_ESTOQUE IN (3,5),
                                                   COALESCE((SELECT SUM(C.QUANTIDADE) FROM TBPEDIDO AA, TBPEDIDO_ITEM B, TBPEDIDO_ITEM_SALDO C
                                                              WHERE AA.PEDIDO = B.PEDIDO AND B.PEDIDO = C.PEDIDO AND B.CONTROLE = C.PEDIDO_ITEM_CONTROLE
                                                                AND AA.ESTABELECIMENTO_CODIGO = A.ESTABELECIMENTO_CODIGO AND B.LOCALIZACAO_ID = A.LOCALIZACAO_CODIGO
                                                                AND B.PRODUTO_CODIGO = A.PRODUTO_CODIGO AND B.TAMANHO =12 AND B.SITUACAO = 1
                                                                AND AA.DATA_CLIENTE BETWEEN :DATA1 AND :DATA2),0),0) AS P12,
                                                   IIF(:TIPO_ESTOQUE IN (3,5),
                                                   COALESCE((SELECT SUM(C.QUANTIDADE) FROM TBPEDIDO AA, TBPEDIDO_ITEM B, TBPEDIDO_ITEM_SALDO C
                                                              WHERE AA.PEDIDO = B.PEDIDO AND B.PEDIDO = C.PEDIDO AND B.CONTROLE = C.PEDIDO_ITEM_CONTROLE
                                                                AND AA.ESTABELECIMENTO_CODIGO = A.ESTABELECIMENTO_CODIGO AND B.LOCALIZACAO_ID = A.LOCALIZACAO_CODIGO
                                                                AND B.PRODUTO_CODIGO = A.PRODUTO_CODIGO AND B.TAMANHO =13 AND B.SITUACAO = 1
                                                                AND AA.DATA_CLIENTE BETWEEN :DATA1 AND :DATA2),0),0) AS P13,
                                                   IIF(:TIPO_ESTOQUE IN (3,5),
                                                   COALESCE((SELECT SUM(C.QUANTIDADE) FROM TBPEDIDO AA, TBPEDIDO_ITEM B, TBPEDIDO_ITEM_SALDO C
                                                              WHERE AA.PEDIDO = B.PEDIDO AND B.PEDIDO = C.PEDIDO AND B.CONTROLE = C.PEDIDO_ITEM_CONTROLE
                                                                AND AA.ESTABELECIMENTO_CODIGO = A.ESTABELECIMENTO_CODIGO AND B.LOCALIZACAO_ID = A.LOCALIZACAO_CODIGO
                                                                AND B.PRODUTO_CODIGO = A.PRODUTO_CODIGO AND B.TAMANHO =14 AND B.SITUACAO = 1
                                                                AND AA.DATA_CLIENTE BETWEEN :DATA1 AND :DATA2),0),0) AS P14,
                                                   IIF(:TIPO_ESTOQUE IN (3,5),
                                                   COALESCE((SELECT SUM(C.QUANTIDADE) FROM TBPEDIDO AA, TBPEDIDO_ITEM B, TBPEDIDO_ITEM_SALDO C
                                                              WHERE AA.PEDIDO = B.PEDIDO AND B.PEDIDO = C.PEDIDO AND B.CONTROLE = C.PEDIDO_ITEM_CONTROLE
                                                                AND AA.ESTABELECIMENTO_CODIGO = A.ESTABELECIMENTO_CODIGO AND B.LOCALIZACAO_ID = A.LOCALIZACAO_CODIGO
                                                                AND B.PRODUTO_CODIGO = A.PRODUTO_CODIGO AND B.TAMANHO =15 AND B.SITUACAO = 1
                                                                AND AA.DATA_CLIENTE BETWEEN :DATA1 AND :DATA2),0),0) AS P15,
                                                   IIF(:TIPO_ESTOQUE IN (3,5),
                                                   COALESCE((SELECT SUM(C.QUANTIDADE) FROM TBPEDIDO AA, TBPEDIDO_ITEM B, TBPEDIDO_ITEM_SALDO C
                                                              WHERE AA.PEDIDO = B.PEDIDO AND B.PEDIDO = C.PEDIDO AND B.CONTROLE = C.PEDIDO_ITEM_CONTROLE
                                                                AND AA.ESTABELECIMENTO_CODIGO = A.ESTABELECIMENTO_CODIGO AND B.LOCALIZACAO_ID = A.LOCALIZACAO_CODIGO
                                                                AND B.PRODUTO_CODIGO = A.PRODUTO_CODIGO AND B.TAMANHO =16 AND B.SITUACAO = 1
                                                                AND AA.DATA_CLIENTE BETWEEN :DATA1 AND :DATA2),0),0) AS P16,
                                                   IIF(:TIPO_ESTOQUE IN (3,5),
                                                   COALESCE((SELECT SUM(C.QUANTIDADE) FROM TBPEDIDO AA, TBPEDIDO_ITEM B, TBPEDIDO_ITEM_SALDO C
                                                              WHERE AA.PEDIDO = B.PEDIDO AND B.PEDIDO = C.PEDIDO AND B.CONTROLE = C.PEDIDO_ITEM_CONTROLE
                                                                AND AA.ESTABELECIMENTO_CODIGO = A.ESTABELECIMENTO_CODIGO AND B.LOCALIZACAO_ID = A.LOCALIZACAO_CODIGO
                                                                AND B.PRODUTO_CODIGO = A.PRODUTO_CODIGO AND B.TAMANHO =17 AND B.SITUACAO = 1
                                                                AND AA.DATA_CLIENTE BETWEEN :DATA1 AND :DATA2),0),0) AS P17,
                                                   IIF(:TIPO_ESTOQUE IN (3,5),
                                                   COALESCE((SELECT SUM(C.QUANTIDADE) FROM TBPEDIDO AA, TBPEDIDO_ITEM B, TBPEDIDO_ITEM_SALDO C
                                                              WHERE AA.PEDIDO = B.PEDIDO AND B.PEDIDO = C.PEDIDO AND B.CONTROLE = C.PEDIDO_ITEM_CONTROLE
                                                                AND AA.ESTABELECIMENTO_CODIGO = A.ESTABELECIMENTO_CODIGO AND B.LOCALIZACAO_ID = A.LOCALIZACAO_CODIGO
                                                                AND B.PRODUTO_CODIGO = A.PRODUTO_CODIGO AND B.TAMANHO =18 AND B.SITUACAO = 1
                                                                AND AA.DATA_CLIENTE BETWEEN :DATA1 AND :DATA2),0),0) AS P18,
                                                   IIF(:TIPO_ESTOQUE IN (3,5),
                                                   COALESCE((SELECT SUM(C.QUANTIDADE) FROM TBPEDIDO AA, TBPEDIDO_ITEM B, TBPEDIDO_ITEM_SALDO C
                                                              WHERE AA.PEDIDO = B.PEDIDO AND B.PEDIDO = C.PEDIDO AND B.CONTROLE = C.PEDIDO_ITEM_CONTROLE
                                                                AND AA.ESTABELECIMENTO_CODIGO = A.ESTABELECIMENTO_CODIGO AND B.LOCALIZACAO_ID = A.LOCALIZACAO_CODIGO
                                                                AND B.PRODUTO_CODIGO = A.PRODUTO_CODIGO AND B.TAMANHO =19 AND B.SITUACAO = 1
                                                                AND AA.DATA_CLIENTE BETWEEN :DATA1 AND :DATA2),0),0) AS P19,
                                                   IIF(:TIPO_ESTOQUE IN (3,5),
                                                   COALESCE((SELECT SUM(C.QUANTIDADE) FROM TBPEDIDO AA, TBPEDIDO_ITEM B, TBPEDIDO_ITEM_SALDO C
                                                              WHERE AA.PEDIDO = B.PEDIDO AND B.PEDIDO = C.PEDIDO AND B.CONTROLE = C.PEDIDO_ITEM_CONTROLE
                                                                AND AA.ESTABELECIMENTO_CODIGO = A.ESTABELECIMENTO_CODIGO AND B.LOCALIZACAO_ID = A.LOCALIZACAO_CODIGO
                                                                AND B.PRODUTO_CODIGO = A.PRODUTO_CODIGO AND B.TAMANHO =20 AND B.SITUACAO = 1
                                                                AND AA.DATA_CLIENTE BETWEEN :DATA1 AND :DATA2),0),0) AS P20,

                                                   G.CODIGO AS GRADE_ID,
                                                   G.T01 AS G01, G.T02 AS G02, G.T03 AS G03, G.T04 AS G04,
                                                   G.T05 AS G05, G.T06 AS G06, G.T07 AS G07, G.T08 AS G08,
                                                   G.T09 AS G09, G.T10 AS G10, G.T11 AS G11, G.T12 AS G12,
                                                   G.T13 AS G13, G.T14 AS G14, G.T15 AS G15, G.T16 AS G16,
                                                   G.T17 AS G17, G.T18 AS G18, G.T19 AS G19, G.T20 AS G20
                                              FROM TBESTOQUE_SALDO A
                                             INNER JOIN TBLOCALIZACAO L ON L.CODIGO = A.LOCALIZACAO_CODIGO
                                             INNER JOIN TBPRODUTO P ON P.CODIGO = A.PRODUTO_CODIGO
                                             INNER JOIN TBMODELO M ON M.CODIGO = P.MODELO_CODIGO
                                             INNER JOIN TBCOR C ON C.CODIGO = P.COR_CODIGO
                                              LEFT JOIN TBMODELO_LINHA ML ON ML.CODIGO = M.LINHA_CODIGO
                                              LEFT JOIN TBGRADE G ON G.CODIGO = P.GRADE_CODIGO
                                             WHERE A.SALDO > 0
                                               AND A.LOCALIZACAO_CODIGO = :LOCALIZACAO
                                         ) X
                                   GROUP BY X.LINHA_ID,
                                            X.LINHA_DESCRICAO,
                                            X.GRADE_ID,
                                            X.MODELO_ID,
                                            X.MODELO_DESCRICAO,
                                            G01,G02,G03,G04,G05,G06,G07,G08,G09,G10,
                                            G11,G12,G13,G14,G15,G16,G17,G18,G19,G20
                           )
                     ORDER BY LINHA_ID, GRADE_ID, MODELO_ID
                   )
            ORDER BY LINHA_ID, GRADE_ID, MODELO_ID
        )
    ORDER BY LINHA_ID, GRADE_ID, MODELO_ID



    INTO :LINHA_ID,:LINHA_DESCRICAO,
         :MODELO_ID,:MODELO_DESCRICAO, 
         :E01,:E02,:E03,:E04,:E05,:E06,:E07,:E08,:E09,:E10,
         :E11,:E12,:E13,:E14,:E15,:E16,:E17,:E18,:E19,:E20,
         :A01,:A02,:A03,:A04,:A05,:A06,:A07,:A08,:A09,:A10,
         :A11,:A12,:A13,:A14,:A15,:A16,:A17,:A18,:A19,:A20,
         :P01,:P02,:P03,:P04,:P05,:P06,:P07,:P08,:P09,:P10,
         :P11,:P12,:P13,:P14,:P15,:P16,:P17,:P18,:P19,:P20,
         :G01,:G02,:G03,:G04,:G05,:G06,:G07,:G08,:G09,:G10,
         :G11,:G12,:G13,:G14,:G15,:G16,:G17,:G18,:G19,:G20,
         :TMIN,:TMAX,:TAM_MAX_MIN,:PROX_LIN,
         :GRADE_ID,:PROX_LIN_GRADE
     Do Begin

     PRECO = Coalesce(
             (SELECT FIRST 1 P.PRECO_VENDA
                FROM TBMODELO_PRECO P
               WHERE P.MODELO_CODIGO = :MODELO_ID
                 AND P.TABELA_ID = :TABELA_PRECO),0.00);

     if (:Tipo_Estoque = 1) then
         Begin
         TIPO = 'Saldo Fisico';
         End else
     if (:Tipo_Estoque = 2) then
         Begin
         TIPO = 'Saldo Alocado';
         E01 = A01; E02 = A02;
         E03 = A03; E04 = A04;
         E05 = A05; E06 = A06;
         E07 = A07; E08 = A08;
         E09 = A09; E10 = A10;
         E11 = A11; E12 = A12;
         E13 = A13; E14 = A14;
         E15 = A15; E16 = A16;
         E17 = A17; E18 = A18;
         E19 = A19; E20 = A20;
         End else
     if (:Tipo_Estoque = 3) then
         Begin
         TIPO = 'Necessidade de Pedidos';
         E01 = P01; E02 = P02;
         E03 = P03; E04 = P04;
         E05 = P05; E06 = P06;
         E07 = P07; E08 = P08;
         E09 = P09; E10 = P10;
         E11 = P11; E12 = P12;
         E13 = P13; E14 = P14;
         E15 = P15; E16 = P16;
         E17 = P17; E18 = P18;
         E19 = P19; E20 = P20;
         End else
     if (:Tipo_Estoque = 4) then
         Begin
         TIPO = 'Disponivel¹(Saldo Fisico-Alocado)';
         E01 = E01 - A01; E02 = E02 - A02;
         E03 = E03 - A03; E04 = E04 - A04;
         E05 = E05 - A05; E06 = E06 - A06;
         E07 = E07 - A07; E08 = E08 - A08;
         E09 = E09 - A09; E10 = E10 - A10;
         E11 = E11 - A11; E12 = E12 - A12;
         E13 = E13 - A13; E14 = E14 - A14;
         E15 = E15 - A15; E16 = E16 - A16;
         E17 = E17 - A17; E18 = E18 - A18;
         E19 = E19 - A19; E20 = E20 - A20;
         End else
     if (:Tipo_Estoque = 5) then
         Begin
         TIPO = 'Disponível²(Saldo Físico-Necess.Pedidos)';
         E01 = E01 - P01; E02 = E02 - P02;
         E03 = E03 - P03; E04 = E04 - P04;
         E05 = E05 - P05; E06 = E06 - P06;
         E07 = E07 - P07; E08 = E08 - P08;
         E09 = E09 - P09; E10 = E10 - P10;
         E11 = E11 - P11; E12 = E12 - P12;
         E13 = E13 - P13; E14 = E14 - P14;
         E15 = E15 - P15; E16 = E16 - P16;
         E17 = E17 - P17; E18 = E18 - P18;
         E19 = E19 - P19; E20 = E20 - P20;
         End

             gTot = ''; -- 'Total';
             TOT  = E01+E02+E03+E04+E05+E06+E07+E08+E09+E10+
                    E11+E12+E13+E14+E15+E16+E17+E18+E19+E20;
             VALOR_TOTAL = Tot * Preco;

                       T01 = E01;  T02 = E02; T03 = E03;  T04 = E04;
                       T05 = E05;  T06 = E06; T07 = E07;  T08 = E08;
                       T09 = E09;  T10 = E10; T11 = E11;  T12 = E12;
                       T13 = E13;  T14 = E14; T15 = E15;  T16 = E16;
                       T17 = E17;  T18 = E18; T19 = E19;  T20 = E20;

                   /* "Puxa" para as primeiras posições os valores > 0 */
                   if (TMIN = 2) Then
                       Begin
                       T01 = E02;  T02 = E03; T03 = E04;  T04 = E05;
                       T05 = E06;  T06 = E07; T07 = E08;  T08 = E09;
                       T09 = E10;  T10 = E11; T11 = E12;  T12 = E13;
                       T13 = E14;  T14 = E15; T15 = E16;  T16 = E17;
                       T17 = E18;  T18 = E19; T19 = E20;  T20 = 0;
                       G01 = G02;  G02 = G03; G03 = G04;  G04 = G05;
                       G05 = G06;  G06 = G07; G07 = G08;  G08 = G09;
                       G09 = G10;  G10 = G11; G11 = G12;  G12 = G13;
                       G13 = G14;  G14 = G15; G15 = G16;  G16 = G17;
                       G17 = G18;  G18 = G19; G19 = G20;  G20 = '';
                       End else
                   if (TMIN = 3) Then
                       Begin
                       T01 = E03; T02 = E04; T03 = E05; T04 = E06;
                       T05 = E07; T06 = E08; T07 = E09; T08 = E10;
                       T09 = E11; T10 = E12; T11 = E13; T12 = E14;
                       T13 = E15; T14 = E16; T15 = E17; T16 = E18;
                       T17 = E19; T18 = E20; T19 = 0;   T20 = 0;
                       G01 = G03; G02 = G04; G03 = G05; G04 = G06;
                       G05 = G07; G06 = G08; G07 = G09; G08 = G10;
                       G09 = G11; G10 = G12; G11 = G13; G12 = G14;
                       G13 = G15; G14 = G16; G15 = G17; G16 = G18;
                       G17 = G19; G18 = G20; G19 = '';   G20 = '';
                       End else
                   if (TMIN = 4) Then
                       Begin
                       T01 = E04; T02 = E05; T03 = E06; T04 = E07;
                       T05 = E08; T06 = E09; T07 = E10; T08 = E11;
                       T09 = E12; T10 = E13; T11 = E14; T12 = E15;
                       T13 = E16; T14 = E17; T15 = E18; T16 = E19;
                       T17 = E20; T18 = 0;   T19 = 0;   T20 = 0;
                       G01 = G04; G02 = G05; G03 = G06; G04 = G07;
                       G05 = G08; G06 = G09; G07 = G10; G08 = G11;
                       G09 = G12; G10 = G13; G11 = G14; G12 = G15;
                       G13 = G16; G14 = G17; G15 = G18; G16 = G19;
                       G17 = G20; G18 = '';   G19 = '';   G20 = '';
                       End else
                   if (TMIN = 5) Then
                       Begin
                       T01 = E05; T02 = E06; T03 = E07; T04 = E08;
                       T05 = E09; T06 = E10; T07 = E11; T08 = E12;
                       T09 = E13; T10 = E14; T11 = E15; T12 = E16;
                       T13 = E17; T14 = E18; T15 = E19; T16 = E20;
                       T17 = 0;   T18 = 0;   T19 = 0;   T20 = 0;
                       G01 = G05; G02 = G06; G03 = G07; G04 = G08;
                       G05 = G09; G06 = G10; G07 = G11; G08 = G12;
                       G09 = G13; G10 = G14; G11 = G15; G12 = G16;
                       G13 = G17; G14 = G18; G15 = G19; G16 = G20;
                       G17 = '';   G18 = '';   G19 = '';   G20 = '';
                       End else
                   if (TMIN = 6) Then
                       Begin
                       T01 = E06; T02 = E07; T03 = E08; T04 = E09;
                       T05 = E10; T06 = E11; T07 = E12; T08 = E13;
                       T09 = E14; T10 = E15; T11 = E16; T12 = E17;
                       T13 = E18; T14 = E19; T15 = E20; T16 = 0;
                       T17 = 0;   T18 = 0;   T19 = 0;   T20 = 0;
                       G01 = G06; G02 = G07; G03 = G08; G04 = G09;
                       G05 = G10; G06 = G11; G07 = G12; G08 = G13;
                       G09 = G14; G10 = G15; G11 = G16; G12 = G17;
                       G13 = G18; G14 = G19; G15 = G20; G16 = '';
                       G17 = '';   G18 = '';   G19 = '';   G20 = '';
                       End else
                   if (TMIN = 7) Then
                       Begin
                       T01 = E07; T02 = E08; T03 = E09; T04 = E10;
                       T05 = E11; T06 = E12; T07 = E13; T08 = E14;
                       T09 = E15; T10 = E16; T11 = E17; T12 = E18;
                       T13 = E19; T14 = E20; T15 = 0;   T16 = 0;
                       T17 = 0;   T18 = 0;   T19 = 0;   T20 = 0;
                       G01 = G07; G02 = G08; G03 = G09; G04 = G10;
                       G05 = G11; G06 = G12; G07 = G13; G08 = G14;
                       G09 = G15; G10 = G16; G11 = G17; G12 = G18;
                       G13 = G19; G14 = G20; G15 = '';   G16 = '';
                       G17 = '';   G18 = '';   G19 = '';   G20 = '';
                       End else
                   if (TMIN = 8) Then
                       Begin
                       T01 = E08; T02 = E09; T03 = E10; T04 = E11;
                       T05 = E12; T06 = E13; T07 = E14; T08 = E15;
                       T09 = E16; T10 = E17; T11 = E18; T12 = E19;
                       T13 = E20; T14 = 0;   T15 = 0;   T16 = 0;
                       T17 = 0;   T18 = 0;   T19 = 0;   T20 = 0;
                       G01 = G08; G02 = G09; G03 = G10; G04 = G11;
                       G05 = G12; G06 = G13; G07 = G14; G08 = G15;
                       G09 = G16; G10 = G17; G11 = G18; G12 = G19;
                       G13 = G20; G14 = '';   G15 = '';   G16 = '';
                       G17 = '';   G18 = '';   G19 = '';   G20 = '';
                       End else
                   if (TMIN = 9) Then
                       Begin
                       T01 = E09; T02 = E10; T03 = E11; T04 = E12;
                       T05 = E13; T06 = E14; T07 = E15; T08 = E16;
                       T09 = E17; T10 = E18; T11 = E19; T12 = E20;
                       T13 = 0;   T14 = 0;   T15 = 0;   T16 = 0;
                       T17 = 0;   T18 = 0;   T19 = 0;   T20 = 0;
                       G01 = G09; G02 = G10; G03 = G11; G04 = G12;
                       G05 = G13; G06 = G14; G07 = G15; G08 = G16;
                       G09 = G17; G10 = G18; G11 = G19; G12 = G20;
                       G13 = '';   G14 = '';   G15 = '';   G16 = '';
                       G17 = '';   G18 = '';   G19 = '';   G20 = '';
                       End else
                   if (TMIN =10) Then
                       Begin
                       T01 = E10; T02 = E11; T03 = E12; T04 = E13;
                       T05 = E14; T06 = E15; T07 = E16; T08 = E17;
                       T09 = E18; T10 = E19; T11 = E20; T12 = 0;
                       T13 = 0;   T14 = 0;   T15 = 0;   T16 = 0;
                       T17 = 0;   T18 = 0;   T19 = 0;   T20 = 0;
                       G01 = G10; G02 = G11; G03 = G12; G04 = G13;
                       G05 = G14; G06 = G15; G07 = G16; G08 = G17;
                       G09 = G18; G10 = G19; G11 = G20; G12 = '';
                       G13 = '';   G14 = '';   G15 = '';   G16 = '';
                       G17 = '';   G18 = '';   G19 = '';   G20 = '';
                       End else
                   if (TMIN =11) Then
                       Begin
                       T01 = E11; T02 = E12; T03 = E13; T04 = E14;
                       T05 = E15; T06 = E16; T07 = E17; T08 = E18;
                       T09 = E19; T10 = E20; T11 = 0;   T12 = 0;
                       T13 = 0;   T14 = 0;   T15 = 0;   T16 = 0;
                       T17 = 0;   T18 = 0;   T19 = 0;   T20 = 0;
                       G01 = G11; G02 = G12; G03 = G13; G04 = G14;
                       G05 = G15; G06 = G16; G07 = G17; G08 = G18;
                       G09 = G19; G10 = G20; G11 = '';   G12 = '';
                       G13 = '';   G14 = '';   G15 = '';   G16 = '';
                       G17 = '';   G18 = '';   G19 = '';   G20 = '';
                       End else
                   if (TMIN =12) Then
                       Begin
                       T01 = E12; T02 = E13; T03 = E14; T04 = E15;
                       T05 = E16; T06 = E17; T07 = E18; T08 = E19;
                       T09 = E20; T10 = 0;   T11 = 0;   T12 = 0;
                       T13 = 0;   T14 = 0;   T15 = 0;   T16 = 0;
                       T17 = 0;   T18 = 0;   T19 = 0;   T20 = 0;
                       G01 = G12; G02 = G13; G03 = G14; G04 = G15;
                       G05 = G16; G06 = G17; G07 = G18; G08 = G19;
                       G09 = G20; G10 = '';   G11 = '';   G12 = '';
                       G13 = '';   G14 = '';   G15 = '';   G16 = '';
                       G17 = '';   G18 = '';   G19 = '';   G20 = '';
                       End else
                   if (TMIN =13) Then
                       Begin
                       T01 = E13; T02 = E14; T03 = E15; T04 = E16;
                       T05 = E17; T06 = E18; T07 = E19; T08 = E20;
                       T09 = 0;   T10 = 0;   T11 = 0;   T12 = 0;
                       T13 = 0;   T14 = 0;   T15 = 0;   T16 = 0;
                       T17 = 0;   T18 = 0;   T19 = 0;   T20 = 0;
                       G01 = G13; G02 = G14; G03 = G15; G04 = G16;
                       G05 = G17; G06 = G18; G07 = G19; G08 = G20;
                       G09 = '';   G10 = '';   G11 = '';   G12 = '';
                       G13 = '';   G14 = '';   G15 = '';   G16 = '';
                       G17 = '';   G18 = '';   G19 = '';   G20 = '';
                       End else
                   if (TMIN =14) Then
                       Begin
                       T01 = E14; T02 = E15; T03 = E16; T04 = E17;
                       T05 = E18; T06 = E19; T07 = E20; T08 = 0;
                       T09 = 0;   T10 = 0;   T11 = 0;   T12 = 0;
                       T13 = 0;   T14 = 0;   T15 = 0;   T16 = 0;
                       T17 = 0;   T18 = 0;   T19 = 0;   T20 = 0;
                       G01 = G14; G02 = G15; G03 = G16; G04 = G17;
                       G05 = G18; G06 = G19; G07 = G20; G08 = '';
                       G09 = '';   G10 = '';   G11 = '';   G12 = '';
                       G13 = '';   G14 = '';   G15 = '';   G16 = '';
                       G17 = '';   G18 = '';   G19 = '';   G20 = '';
                       End else
                   if (TMIN =15) Then
                       Begin
                       T01 = E15; T02 = E16; T03 = E17; T04 = E18;
                       T05 = E19; T06 = E20; T07 = 0;   T08 = 0;
                       T09 = 0;   T10 = 0;   T11 = 0;   T12 = 0;
                       T13 = 0;   T14 = 0;   T15 = 0;   T16 = 0;
                       T17 = 0;   T18 = 0;   T19 = 0;   T20 = 0;
                       G01 = G15; G02 = G16; G03 = G17; G04 = G18;
                       G05 = G19; G06 = G20; G07 = '';   G08 = '';
                       G09 = '';   G10 = '';   G11 = '';   G12 = '';
                       G13 = '';   G14 = '';   G15 = '';   G16 = '';
                       G17 = '';   G18 = '';   G19 = '';   G20 = '';
                       End else
                   if (TMIN =16) Then
                       Begin
                       T01 = E16; T02 = E17; T03 = E18; T04 = E19;
                       T05 = E20; T06 = 0;   T07 = 0;   T08 = 0;
                       T09 = 0;   T10 = 0;   T11 = 0;   T12 = 0;
                       T13 = 0;   T14 = 0;   T15 = 0;   T16 = 0;
                       T17 = 0;   T18 = 0;   T19 = 0;   T20 = 0;
                       G01 = G16; G02 = G17; G03 = G18; G04 = G19;
                       G05 = G20; G06 = '';   G07 = '';   G08 = '';
                       G09 = '';   G10 = '';   G11 = '';   G12 = '';
                       G13 = '';   G14 = '';   G15 = '';   G16 = '';
                       G17 = '';   G18 = '';   G19 = '';   G20 = '';
                       End else
                   if (TMIN =17) Then
                       Begin
                       T01 = E17; T02 = E18; T03 = E19; T04 = E20;
                       T05 = 0;   T06 = 0;   T07 = 0;   T08 = 0;
                       T09 = 0;   T10 = 0;   T11 = 0;   T12 = 0;
                       T13 = 0;   T14 = 0;   T15 = 0;   T16 = 0;
                       T17 = 0;   T18 = 0;   T19 = 0;   T20 = 0;
                       G01 = G17; G02 = G18; G03 = G19; G04 = G20;
                       G05 = '';   G06 = '';   G07 = '';   G08 = '';
                       G09 = '';   G10 = '';   G11 = '';   G12 = '';
                       G13 = '';   G14 = '';   G15 = '';   G16 = '';
                       G17 = '';   G18 = '';   G19 = '';   G20 = '';
                       End else
                   if (TMIN =18) Then
                       Begin
                       T01 = E18; T02 = E19; T03 = E20; T04 = 0;
                       T05 = 0;   T06 = 0;   T07 = 0;   T08 = 0;
                       T09 = 0;   T10 = 0;   T11 = 0;   T12 = 0;
                       T13 = 0;   T14 = 0;   T15 = 0;   T16 = 0;
                       T17 = 0;   T18 = 0;   T19 = 0;   T20 = 0;
                       G01 = G18; G02 = G19; G03 = G20; G04 = '';
                       G05 = '';   G06 = '';   G07 = '';   G08 = '';
                       G09 = '';   G10 = '';   G11 = '';   G12 = '';
                       G13 = '';   G14 = '';   G15 = '';   G16 = '';
                       G17 = '';   G18 = '';   G19 = '';   G20 = '';
                       End else
                   if (TMIN =19) Then
                       Begin
                       T01 = E19; T02 = E20;  T03 = 0;   T04 = 0;
                       T05 = 0;   T06 = 0;    T07 = 0;   T08 = 0;
                       T09 = 0;   T10 = 0;    T11 = 0;   T12 = 0;
                       T13 = 0;   T14 = 0;    T15 = 0;   T16 = 0;
                       T17 = 0;   T18 = 0;    T19 = 0;   T20 = 0;
                       G01 = G19; G02 = G20;  G03 = '';   G04 = '';
                       G05 = '';   G06 = '';    G07 = '';   G08 = '';
                       G09 = '';   G10 = '';    G11 = '';   G12 = '';
                       G13 = '';   G14 = '';    G15 = '';   G16 = '';
                       G17 = '';   G18 = '';    G19 = '';   G20 = '';
                       End else
                   if (TMIN =20) Then
                       Begin
                       T01 = E20;  T02 = 0;  T03 = 0;    T04 = 0;
                       T05 = 0;    T06 = 0;  T07 = 0;    T08 = 0;
                       T09 = 0;    T10 = 0;  T11 = 0;    T12 = 0;
                       T13 = 0;    T14 = 0;  T15 = 0;    T16 = 0;
                       T17 = 0;    T18 = 0;  T19 = 0;    T20 = 0;
                       G01 = G20;  G02 = '';  G03 = '';    G04 = '';
                       G05 = '';    G06 = '';  G07 = '';    G08 = '';
                       G09 = '';    G10 = '';  G11 = '';    G12 = '';
                       G13 = '';    G14 = '';  G15 = '';    G16 = '';
                       G17 = '';    G18 = '';  G19 = '';    G20 = '';
                       end
                  
                   /* Limpa os Tamanhos e Grades das últimas posições sem valores */
                   if (TMAX - TMIN + 1 = 1) Then
                       Begin
                       T02 = null; G02 = '';  
                       T03 = null; G03 = '';  T04 = null; G04 = '';
                       T05 = null; G05 = '';  T06 = null; G06 = '';
                       T07 = null; G07 = '';  T08 = null; G08 = '';
                       T09 = null; G09 = '';  T10 = null; G10 = '';
                       T11 = null; G11 = '';  T12 = null; G12 = '';
                       T13 = null; G13 = '';  T14 = null; G14 = '';
                       T15 = null; G15 = '';  T16 = null; G16 = '';
                       T17 = null; G17 = '';  T18 = null; G18 = '';
                       T19 = null; G19 = '';  T20 = null; G20 = '';
                       end else
                   if (TMAX - TMIN + 1 = 2) Then
                       Begin
                       T03 = null; G03 = '';  T04 = null; G04 = '';
                       T05 = null; G05 = '';  T06 = null; G06 = '';
                       T07 = null; G07 = '';  T08 = null; G08 = '';
                       T09 = null; G09 = '';  T10 = null; G10 = '';
                       T11 = null; G11 = '';  T12 = null; G12 = '';
                       T13 = null; G13 = '';  T14 = null; G14 = '';
                       T15 = null; G15 = '';  T16 = null; G16 = '';
                       T17 = null; G17 = '';  T18 = null; G18 = '';
                       T19 = null; G19 = '';  T20 = null; G20 = '';
                       end else
                   if (TMAX - TMIN + 1 = 3) Then
                       Begin
                       T04 = null; G04 = '';
                       T05 = null; G05 = '';  T06 = null; G06 = '';
                       T07 = null; G07 = '';  T08 = null; G08 = '';
                       T09 = null; G09 = '';  T10 = null; G10 = '';
                       T11 = null; G11 = '';  T12 = null; G12 = '';
                       T13 = null; G13 = '';  T14 = null; G14 = '';
                       T15 = null; G15 = '';  T16 = null; G16 = '';
                       T17 = null; G17 = '';  T18 = null; G18 = '';
                       T19 = null; G19 = '';  T20 = null; G20 = '';
                       end else
                   if (TMAX - TMIN + 1 = 4) Then
                       Begin
                       T05 = null; G05 = '';  T06 = null; G06 = '';
                       T07 = null; G07 = '';  T08 = null; G08 = '';
                       T09 = null; G09 = '';  T10 = null; G10 = '';
                       T11 = null; G11 = '';  T12 = null; G12 = '';
                       T13 = null; G13 = '';  T14 = null; G14 = '';
                       T15 = null; G15 = '';  T16 = null; G16 = '';
                       T17 = null; G17 = '';  T18 = null; G18 = '';
                       T19 = null; G19 = '';  T20 = null; G20 = '';
                       end else
                   if (TMAX - TMIN + 1 = 5) Then
                       Begin
                       T06 = null; G06 = '';
                       T07 = null; G07 = '';  T08 = null; G08 = '';
                       T09 = null; G09 = '';  T10 = null; G10 = '';
                       T11 = null; G11 = '';  T12 = null; G12 = '';
                       T13 = null; G13 = '';  T14 = null; G14 = '';
                       T15 = null; G15 = '';  T16 = null; G16 = '';
                       T17 = null; G17 = '';  T18 = null; G18 = '';
                       T19 = null; G19 = '';  T20 = null; G20 = '';
                       end else
                   if (TMAX - TMIN + 1 = 6) Then
                       Begin
                       T07 = null; G07 = '';  T08 = null; G08 = '';
                       T09 = null; G09 = '';  T10 = null; G10 = '';
                       T11 = null; G11 = '';  T12 = null; G12 = '';
                       T13 = null; G13 = '';  T14 = null; G14 = '';
                       T15 = null; G15 = '';  T16 = null; G16 = '';
                       T17 = null; G17 = '';  T18 = null; G18 = '';
                       T19 = null; G19 = '';  T20 = null; G20 = '';
                       end else
                   if (TMAX - TMIN + 1 = 7) Then
                       Begin
                       T08 = null; G08 = '';
                       T09 = null; G09 = '';  T10 = null; G10 = '';
                       T11 = null; G11 = '';  T12 = null; G12 = '';
                       T13 = null; G13 = '';  T14 = null; G14 = '';
                       T15 = null; G15 = '';  T16 = null; G16 = '';
                       T17 = null; G17 = '';  T18 = null; G18 = '';
                       T19 = null; G19 = '';  T20 = null; G20 = '';
                       end else
                   if (TMAX - TMIN + 1 = 8) Then
                       Begin
                       T09 = null; G09 = '';  T10 = null; G10 = '';
                       T11 = null; G11 = '';  T12 = null; G12 = '';
                       T13 = null; G13 = '';  T14 = null; G14 = '';
                       T15 = null; G15 = '';  T16 = null; G16 = '';
                       T17 = null; G17 = '';  T18 = null; G18 = '';
                       T19 = null; G19 = '';  T20 = null; G20 = '';
                       end else
                   if (TMAX - TMIN + 1 = 9) Then
                       Begin
                       T10 = null; G10 = '';
                       T11 = null; G11 = '';  T12 = null; G12 = '';
                       T13 = null; G13 = '';  T14 = null; G14 = '';
                       T15 = null; G15 = '';  T16 = null; G16 = '';
                       T17 = null; G17 = '';  T18 = null; G18 = '';
                       T19 = null; G19 = '';  T20 = null; G20 = '';
                       end else
                   if (TMAX - TMIN + 1 =10) Then
                       Begin
                       T11 = null; G11 = '';  T12 = null; G12 = '';
                       T13 = null; G13 = '';  T14 = null; G14 = '';
                       T15 = null; G15 = '';  T16 = null; G16 = '';
                       T17 = null; G17 = '';  T18 = null; G18 = '';
                       T19 = null; G19 = '';  T20 = null; G20 = '';
                       end else
                   if (TMAX - TMIN + 1 =11) Then
                       Begin
                       T12 = null; G12 = '';
                       T13 = null; G13 = '';  T14 = null; G14 = '';
                       T15 = null; G15 = '';  T16 = null; G16 = '';
                       T17 = null; G17 = '';  T18 = null; G18 = '';
                       T19 = null; G19 = '';  T20 = null; G20 = '';
                       end else
                   if (TMAX - TMIN + 1 =12) Then
                       Begin
                       T13 = null; G13 = '';  T14 = null; G14 = '';
                       T15 = null; G15 = '';  T16 = null; G16 = '';
                       T17 = null; G17 = '';  T18 = null; G18 = '';
                       T19 = null; G19 = '';  T20 = null; G20 = '';
                       end else
                   if (TMAX - TMIN + 1 =13) Then
                       Begin
                       T14 = null; G14 = '';
                       T15 = null; G15 = '';  T16 = null; G16 = '';
                       T17 = null; G17 = '';  T18 = null; G18 = '';
                       T19 = null; G19 = '';  T20 = null; G20 = '';
                       end else
                   if (TMAX - TMIN + 1 =14) Then
                       Begin
                       T15 = null; G15 = '';  T16 = null; G16 = '';
                       T17 = null; G17 = '';  T18 = null; G18 = '';
                       T19 = null; G19 = '';  T20 = null; G20 = '';
                       end else
                   if (TMAX - TMIN + 1 =15) Then
                       Begin
                       T16 = null; G16 = '';
                       T17 = null; G17 = '';  T18 = null; G18 = '';
                       T19 = null; G19 = '';  T20 = null; G20 = '';
                       end else
                   if (TMAX - TMIN + 1 =16) Then
                       Begin
                       T17 = null; G17 = '';  T18 = null; G18 = '';
                       T19 = null; G19 = '';  T20 = null; G20 = '';
                       end else
                   if (TMAX - TMIN + 1 =17) Then
                       Begin
                       T18 = null; G18 = '';
                       T19 = null; G19 = '';  T20 = null; G20 = '';
                       end else
                   if (TMAX - TMIN + 1 =18) Then
                       Begin
                       T19 = null; G19 = '';  T20 = null; G20 = '';
                       end else
                   if (TMAX - TMIN + 1 =19) Then
                       Begin
                       T20 = null; G20 = '';
                       end

                   TIPO = 'Saldo Fisico';

                    vQtdLinhaEstoque = vQtdLinhaEstoque + TOT;
                    vVlrLinhaEstoque = vVlrLinhaEstoque + VALOR_TOTAL;
                    vQtdTotalEstoque = vQtdTotalEstoque + TOT;
                    vVlrTotalEstoque = vVlrTotalEstoque + VALOR_TOTAL;

               IF (TOT <> 0) THEN
                   SUSPEND;

-------------------------------

                   
                   IF ( (LINHA_ID <> PROX_LIN) OR (PROX_LIN IS NULL) ) THEN
                       Begin
                           -- Limpa os Tamanhos e Grades
                           G01 = ''; G02 = ''; G03 = ''; G04 = ''; G05 = '';
                           G06 = ''; G07 = ''; G08 = ''; G09 = ''; G10 = '';
                           G11 = ''; G12 = ''; G13 = ''; G14 = ''; G15 = '';
                           G16 = ''; G17 = ''; G18 = ''; G19 = ''; G20 = '';
                    
                           T01 = null; T02 = null; T03 = null; T04 = null;
                           T05 = null; T06 = null; T07 = null; T08 = null;
                           T09 = null; T10 = null; T11 = null; T12 = null;
                           T13 = null; T14 = null; T15 = null; T16 = null;
                           T17 = null; T18 = null; T19 = null; T20 = null;
                           PRECO = null;
                           -- preenche o registro do totalizador  
                           MODELO_DESCRICAO = 'TOTAL DA LINHA '||LINHA_DESCRICAO;

                           TIPO = 'Total da Linha';
                           TOT = vQtdLinhaEstoque;
                           VALOR_TOTAL = vVlrLinhaEstoque;

                           IF (TOT <> 0) THEN
                               SUSPEND;

                           vQtdLinhaEstoque = 0;
                           vVlrLinhaEstoque = 0;
                           vQtdLinhaDisponivel = 0;
                           vVlrLinhaDisponivel = 0;

                       End
                       
                End

       -- Limpa os Tamanhos e Grades
       G01 = ''; G02 = ''; G03 = ''; G04 = ''; G05 = '';
       G06 = ''; G07 = ''; G08 = ''; G09 = ''; G10 = '';
       G11 = ''; G12 = ''; G13 = ''; G14 = ''; G15 = '';
       G16 = ''; G17 = ''; G18 = ''; G19 = ''; G20 = '';

       T01 = null; T02 = null; T03 = null; T04 = null;
       T05 = null; T06 = null; T07 = null; T08 = null;
       T09 = null; T10 = null; T11 = null; T12 = null;
       T13 = null; T14 = null; T15 = null; T16 = null;
       T17 = null; T18 = null; T19 = null; T20 = null;
       PRECO = null;
       -- preenche o registro do totalizador  
       LINHA_DESCRICAO = 'TOTAL GERAL';
       MODELO_DESCRICAO = '';
       TIPO = 'Total Geral';
       TOT = vQtdTotalEstoque;
       VALOR_TOTAL = vVlrTotalEstoque;
       SUSPEND;

End;

ALTER TABLE TBGP_ETAPA_PMP
    ADD DESCRICAO_RESUMIDA VARCHAR(100);

ALTER TABLE TBGP_ETAPA_PMP_COLUNA
    ADD DESCRICAO_RESUMIDA VARCHAR(100);
	
	