CREATE INDEX ITBESTOQUE_TRANSACAO_ITEM_29 ON TBESTOQUE_TRANSACAO_ITEM (TABELA,TABELA_NIVEL,TIPO,CONFERENCIA);

CREATE OR ALTER VIEW VWCONFERENCIA_PENDENTE(
    TIPO_ID,
    TIPO,
    DOCUMENTO,
    GRUPO,
    REMESSA_ITEM_CONTROLE,
    CONTROLE,
    PRODUTO_CODIGO,
    DESCRICAO,
    LOCALIZACAO_CODIGO,
    LOCALIZACAO,
    CONFERENCIA,
    QUANTIDADE,
    UM,
    QUANTIDADE_ALTERNATIVA,
    UM_ALTERNATIVA,
    TAMANHO,
    PECA_ID,
    DATAHORA_DESC,
    DATAHORA,
    FAMILIA_CODIGO)
AS
select
    TRIM(TIPO_ID) TIPO_ID,
    TIPO,
    DOCUMENTO,
    GRUPO,
    '' REMESSA_ITEM_CONTROLE,
    list(CONTROLE) as CONTROLE,
    PRODUTO_CODIGO,
    DESCRICAO,
    LOCALIZACAO_CODIGO,
    (select first 1 l.descricao from tblocalizacao l where l.codigo = a.LOCALIZACAO_CODIGO) as LOCALIZACAO,
    CONFERENCIA,
    sum(QUANTIDADE) as QUANTIDADE,
    UM,         
    sum(QUANTIDADE_ALTERNATIVA) as QUANTIDADE_ALTERNATIVA,
    UM_ALTERNATIVA,
    fn_tamanho_produto(a.PRODUTO_CODIGO,A.TAMANHO) as TAMANHO,
    PECA_ID,
    fn_timestamp_to_string(max(datahora)) as datahora_desc,
    max(datahora),
    familia_codigo
from
(
    SELECT
        '1' TIPO_ID,
        'KANBAN' TIPO,
        i.documento,
        'KB'||FN_LPAD(D.KANBAN_LOTE_ID,11,0) GRUPO,
        I.peca_id,
        i.remessa_item_controle,
        i.controle,
        I.PRODUTO_CODIGO,
        P.DESCRICAO,
        I.OPERADOR,
        O.NOME,
        I.DATAHORA,
        I.LOCALIZACAO_CODIGO,
        I.CONFERENCIA,
        I.ESTOQUE_TRANSACAO_REGRA_ID,
        I.QUANTIDADE,
        P.UNIDADEMEDIDA_SIGLA UM,
        NULL QUANTIDADE_ALTERNATIVA,
        NULL UM_ALTERNATIVA,
        IIF(I.T01 > 0,01,
        IIF(I.T02 > 0,02,
        IIF(I.T03 > 0,03,
        IIF(I.T04 > 0,04,
        IIF(I.T05 > 0,05,
        IIF(I.T06 > 0,06,
        IIF(I.T07 > 0,07,
        IIF(I.T08 > 0,08,
        IIF(I.T09 > 0,09,
        IIF(I.T10 > 0,10,
        IIF(I.T11 > 0,11,
        IIF(I.T12 > 0,12,
        IIF(I.T13 > 0,13,
        IIF(I.T14 > 0,14,
        IIF(I.T15 > 0,15,
        IIF(I.T16 > 0,16,
        IIF(I.T17 > 0,17,
        IIF(I.T18 > 0,18,
        IIF(I.T19 > 0,19,
        IIF(I.T20 > 0,20, 0)))))))))))))))))))) AS TAMANHO,
        p.familia_codigo
    
        FROM
            TBESTOQUE_TRANSACAO_ITEM I
            LEFT JOIN TBKANBAN_LOTE_DETALHE D ON D.ID = I.TABELA_ID
            LEFT JOIN TBKANBAN_LOTE L ON L.ID = D.KANBAN_LOTE_ID--,
            LEFT JOIN TBPRODUTO P ON P.CODIGO = I.PRODUTO_CODIGO
            LEFT JOIN TBUSUARIO O ON O.CODIGO = I.USUARIO_CODIGO
    
        WHERE I.TIPO       = 'E'
        and i.tabela       = 'TBKANBAN_LOTE_DETALHE'
        and i.tabela_nivel = 0
        and i.estoque_transacao_regra_id > 0   
        and i.conferencia = 1
        AND L.STATUS = '1'
    and i.data >= dateadd(year,-1,current_date)
    
        union
    
    SELECT
        '2' TIPO_ID,
        'CONF. PROD.' TIPO,
        i.documento,
        'RA'||FN_LPAD(T.ID ,11,0) GRUPO,
        '' as peca_id,
        i.remessa_item_controle,
        i.controle,
        I.PRODUTO_CODIGO,
        P.DESCRICAO,
        I.OPERADOR,
        O.NOME,
        I.DATAHORA,
        I.LOCALIZACAO_CODIGO,
        I.CONFERENCIA,
        I.ESTOQUE_TRANSACAO_REGRA_ID,
        I.QUANTIDADE,
        P.UNIDADEMEDIDA_SIGLA UM,
        D.QUANTIDADE_ALTERN_SALDO QUANTIDADE_ALTERNATIVA,
        F.UNIDADEMEDIDA_ALTERNATIVO UM_ALTERNATIVA,
        IIF(I.T01 > 0,01,
        IIF(I.T02 > 0,02,
        IIF(I.T03 > 0,03,
        IIF(I.T04 > 0,04,
        IIF(I.T05 > 0,05,
        IIF(I.T06 > 0,06,
        IIF(I.T07 > 0,07,
        IIF(I.T08 > 0,08,
        IIF(I.T09 > 0,09,
        IIF(I.T10 > 0,10,
        IIF(I.T11 > 0,11,
        IIF(I.T12 > 0,12,
        IIF(I.T13 > 0,13,
        IIF(I.T14 > 0,14,
        IIF(I.T15 > 0,15,
        IIF(I.T16 > 0,16,
        IIF(I.T17 > 0,17,
        IIF(I.T18 > 0,18,
        IIF(I.T19 > 0,19,
        IIF(I.T20 > 0,20, 0)))))))))))))))))))) AS TAMANHO,
        p.familia_codigo

    FROM TBESTOQUE_TRANSACAO_ITEM I
    LEFT JOIN VWREMESSA_TALAO_DETALHE D ON D.ID = I.TABELA_ID
    LEFT JOIN VWREMESSA_TALAO T ON T.REMESSA_ID = D.REMESSA_ID AND T.REMESSA_TALAO_ID = D.REMESSA_TALAO_ID
    LEFT JOIN TBPRODUTO P ON P.CODIGO = I.PRODUTO_CODIGO
    LEFT JOIN TBFAMILIA F ON F.CODIGO = P.FAMILIA_CODIGO,
         TBUSUARIO O
    WHERE I.TABELA = 'TBPEDIDO_ITEM_PROCESSADO'
     AND I.TABELA_NIVEL = 1
     AND I.ESTOQUE_TRANSACAO_REGRA_ID > 0
     AND I.TIPO = 'E'
     AND O.CODIGO = I.USUARIO_CODIGO
     and i.conferencia = 1
    and i.data >= dateadd(year,-1,current_date)
    
     union
    
     SELECT   
        '3' TIPO_ID,
        'ABAST. WIP' TIPO,
        i.documento,   
        I.peca_id GRUPO,
        I.peca_id,
        i.remessa_item_controle,
        i.controle,
        I.PRODUTO_CODIGO,
        P.DESCRICAO,
        I.OPERADOR,
        O.NOME,
        I.DATAHORA,
        I.LOCALIZACAO_CODIGO,
        I.CONFERENCIA,
        I.ESTOQUE_TRANSACAO_REGRA_ID,
        I.QUANTIDADE,
        P.UNIDADEMEDIDA_SIGLA UM,
        NULL QUANTIDADE_ALTERNATIVA,   
        NULL UM_ALTERNATIVA,
        IIF(I.T01 > 0,01,
        IIF(I.T02 > 0,02,
        IIF(I.T03 > 0,03,
        IIF(I.T04 > 0,04,
        IIF(I.T05 > 0,05,
        IIF(I.T06 > 0,06,
        IIF(I.T07 > 0,07,
        IIF(I.T08 > 0,08,
        IIF(I.T09 > 0,09,
        IIF(I.T10 > 0,10,
        IIF(I.T11 > 0,11,
        IIF(I.T12 > 0,12,
        IIF(I.T13 > 0,13,
        IIF(I.T14 > 0,14,
        IIF(I.T15 > 0,15,
        IIF(I.T16 > 0,16,
        IIF(I.T17 > 0,17,
        IIF(I.T18 > 0,18,
        IIF(I.T19 > 0,19,
        IIF(I.T20 > 0,20, 0)))))))))))))))))))) AS TAMANHO,
        p.familia_codigo
    
    FROM
        TBESTOQUE_TRANSACAO_ITEM I,
        TBPRODUTO P,
        TBUSUARIO O
    
    WHERE
        I.TABELA = 'TBREMESSA_CONSUMO'
    AND I.TABELA_NIVEL = 4
    AND I.TIPO = 'E'
    AND I.ESTOQUE_TRANSACAO_REGRA_ID > 0
    AND O.CODIGO = I.USUARIO_CODIGO
    AND P.CODIGO = I.PRODUTO_CODIGO
    and i.conferencia = 1
    and i.data >= dateadd(year,-1,current_date)
    
    union
    
    SELECT 
        '4' TIPO_ID,
        'TRANS. REM.' TIPO,
        i.documento,     
        'TR'||FN_LPAD(C.REMESSA_ID,11,0) GRUPO,
        I.peca_id,
        i.remessa_item_controle,
        i.controle,
        I.PRODUTO_CODIGO,
        P.DESCRICAO,
        I.OPERADOR,
        O.NOME,
        I.DATAHORA,
        I.LOCALIZACAO_CODIGO,
        I.CONFERENCIA,
        I.ESTOQUE_TRANSACAO_REGRA_ID,
        I.QUANTIDADE,
        P.UNIDADEMEDIDA_SIGLA UM,
        NULL QUANTIDADE_ALTERNATIVA,   
        NULL UM_ALTERNATIVA,
        IIF(I.T01 > 0,01,
        IIF(I.T02 > 0,02,
        IIF(I.T03 > 0,03,
        IIF(I.T04 > 0,04,
        IIF(I.T05 > 0,05,
        IIF(I.T06 > 0,06,
        IIF(I.T07 > 0,07,
        IIF(I.T08 > 0,08,
        IIF(I.T09 > 0,09,
        IIF(I.T10 > 0,10,
        IIF(I.T11 > 0,11,
        IIF(I.T12 > 0,12,
        IIF(I.T13 > 0,13,
        IIF(I.T14 > 0,14,
        IIF(I.T15 > 0,15,
        IIF(I.T16 > 0,16,
        IIF(I.T17 > 0,17,
        IIF(I.T18 > 0,18,
        IIF(I.T19 > 0,19,
        IIF(I.T20 > 0,20, 0)))))))))))))))))))) AS TAMANHO,
        p.familia_codigo
    
    FROM
        TBESTOQUE_TRANSACAO_ITEM I
        LEFT JOIN VWREMESSA_CONSUMO C ON C.ID = I.TABELA_ID,
        TBPRODUTO P,
        TBUSUARIO O
    
    WHERE
        I.TABELA = 'TBREMESSA_CONSUMO'
    AND I.TABELA_NIVEL = 0
    AND I.TIPO = 'E'
    AND O.CODIGO = I.USUARIO_CODIGO
    AND P.CODIGO = I.PRODUTO_CODIGO
    and i.conferencia = 1
    and i.data >= dateadd(year,-1,current_date)
) A

group by
    TIPO_ID,
    TIPO,
    DOCUMENTO,
    GRUPO,
    REMESSA_ITEM_CONTROLE,
    PRODUTO_CODIGO,
    DESCRICAO,
    LOCALIZACAO_CODIGO,
    CONFERENCIA,
    TAMANHO,
    PECA_ID,
    UM,
    UM_ALTERNATIVA,
    familia_codigo
;

