CREATE OR ALTER VIEW VWROMANEIO_NOTA(
    ROMANEIO_ID,
    NUMERO_NOTAFISCAL,
    EMPRESA_ID,
    PRODUTO_ID,
    PRODUTO_TAMANHO,
    STATUS,
    RESOLVIDO,
    PERDA,
    QUANTIDADE_B_ROMANEIO,
    QUANTIDADE_L_ROMANEIO,
    NFE_ITEM_ID,
    QUANTIDADE_NOTA,
    PRODUTO_DESCRICAO)
AS
select
    *
from(
    select
        r.romaneio_id,
        r.NUMERO_NOTAFISCAL,
        r.EMPRESA_ID,
        r.PRODUTO_ID,
        r.PRODUTO_TAMANHO,
        r.status,
        r.RESOLVIDO,

        r.PERDA,
        r.QUANTIDADE_BRUTA as quantidade_b_romaneio,
        r.QUANTIDADE_LIQUIDA as quantidade_l_romaneio,
    
        coalesce(s.controle,0) as NFE_ITEM_ID,
        s.quantidade as quantidade_nota,
        s.produto_descricao
    
    from(
        select
            r.id as romaneio_id,
            r.numero_notafiscal,
            r.empresa_id,
            i.PRODUTO_ID,
            i.PRODUTO_TAMANHO,
            r.status,
            coalesce(r.RESOLVIDO,0) as RESOLVIDO,
    
            sum(i.PERDA) as PERDA,
            sum(i.QUANTIDADE_BRUTA) as QUANTIDADE_BRUTA,
            sum(i.QUANTIDADE_LIQUIDA) as QUANTIDADE_LIQUIDA
    
        from tbromaneio r, tbromaneio_item i
        where i.romaneio_id = r.id
        and r.numero_notafiscal > 0
    
        group by 1,2,3,4,5,6,7
    
    ) r
    left join tbnfe e on e.numero_notafiscal = r.numero_notafiscal and e.empresa_codigo = r.empresa_id
    left join tbnfe_item s on s.nfe_controle = e.controle and s.produto_codigo = r.produto_id and s.tamanho = r.PRODUTO_TAMANHO
)
;

SET TERM ^ ;

CREATE OR ALTER procedure SP_PENDENCIA_ROMANEIO
as
declare variable ROMANEIO_ID integer;
begin

    for
        select distinct
            n.ROMANEIO_ID
        from vwromaneio_nota n, tbempresa e
        where n.status > 1
        and n.quantidade_b_romaneio <> n.quantidade_nota
        and e.codigo = n.empresa_id
        and n.resolvido = 0
    into
        ROMANEIO_ID
    do begin
        execute procedure SP_NOTIFICAR_ROMANEIO_PEND(:ROMANEIO_ID);
    end

end
^

SET TERM ; ^

SET TERM ^ ;

CREATE OR ALTER procedure SP_NOTIFICAR_ROMANEIO
as
declare variable ROMANEIO_ID integer;
declare variable NUMERO_NOTAFISCAL integer;
declare variable EMPRESA_ID integer;
declare variable PRODUTO_ID integer;
declare variable PRODUTO_TAMANHO varchar(5);
declare variable STATUS char(1);
declare variable PERDA numeric(18,5);
declare variable QUANTIDADE_B_ROMANEIO numeric(18,5);
declare variable QUANTIDADE_L_ROMANEIO numeric(18,5);
declare variable NFE_ITEM_ID integer;
declare variable QUANTIDADE_NOTA numeric(18,5);
declare variable PRODUTO_DESCRICAO varchar(100);
declare variable RAZAOSOCIAL varchar(300);
declare variable NOMEFANTASIA varchar(300);
declare variable USUARIO_ID integer;
declare variable EMAIL varchar(200);
declare variable CORPO1 blob sub_type 1 segment size 80;
declare variable ASSUNTO varchar(500);
begin

    --notificar se nota pendente de lançamento
    for
        select distinct
            ROMANEIO_ID,
            NUMERO_NOTAFISCAL,
            EMPRESA_ID,
            e.razaosocial,
            e.nomefantasia
        from vwromaneio_nota n, tbempresa e
        where n.status > 1 and n.nfe_item_id = 0
        and e.codigo = n.empresa_id
        and n.RESOLVIDO = 0
    into
        ROMANEIO_ID,
        NUMERO_NOTAFISCAL,
        EMPRESA_ID,
        RAZAOSOCIAL,
        NOMEFANTASIA
    do begin
        
        ASSUNTO = 'Romaneio (Pendência de Lançamento da Nota Fiscal)';

        corpo1 = '<html><head><meta charset="Content-Type: text/html; charset=UTF-8"><style>p {margin: 2px;}</style></head><body>';
        corpo1 = corpo1 || '<p></p>';
        corpo1 = corpo1 || '<p><a href="'||fn_parametro('SISTEMA.URL_SERVER')||'/_15210?ID='||:ROMANEIO_ID||'" target="_blank">[ABRIR NA WEB]</a></p>';
        corpo1 = corpo1 || '<br>';
        corpo1 = corpo1 || '<p style="font-weight: bold;"><u>ID: '||:ROMANEIO_ID||'</u></p>';
        corpo1 = corpo1 || '<p><u>NF</u>: '||:NUMERO_NOTAFISCAL||'</p>';
        corpo1 = corpo1 || '<p><u>Empresa</u>: '||:EMPRESA_ID||' - '||:RAZAOSOCIAL||'</p>';
        corpo1 = corpo1 || '<br>';
        corpo1 = corpo1 || '</body></html>';

        for
            select
                u.email,
                u.codigo
            from tbcontrole_usuario o,  tbusuario u
            where u.codigo = o.usuario_id
            and o.id = 899
            and o.valor_ext = '1'
        into
            :EMAIL,
            :USUARIO_ID
        do begin
           execute procedure spi_notificar(
              current_timestamp,
              :USUARIO_ID,
              :assunto,
              :corpo1,
              1,
              1
           );

        end

    end

    --notificar se nota pendente de lançamento
    for
        select distinct
            ROMANEIO_ID,
            NUMERO_NOTAFISCAL,
            EMPRESA_ID,
            e.razaosocial,
            e.nomefantasia
        from vwromaneio_nota n, tbempresa e
        where n.status < 1 and n.nfe_item_id > 0
        --where n.romaneio_id > 0
        and e.codigo = n.empresa_id
    into
        ROMANEIO_ID,
        NUMERO_NOTAFISCAL,
        EMPRESA_ID,
        RAZAOSOCIAL,
        NOMEFANTASIA
    do begin
        
        ASSUNTO = 'Romaneio (Pendente de Conferência)';

        corpo1 = '<html><head><meta charset="Content-Type: text/html; charset=UTF-8"><style>p {margin: 2px;}</style></head><body>';
        corpo1 = corpo1 || '<p></p>';
        corpo1 = corpo1 || '<p><a href="'||fn_parametro('SISTEMA.URL_SERVER')||'/_15210?ID='||:ROMANEIO_ID||'" target="_blank">[ABRIR NA WEB]</a></p>';
        corpo1 = corpo1 || '<br>';
        corpo1 = corpo1 || '<p style="font-weight: bold;"><u>ID: '||:ROMANEIO_ID||'</u></p>';
        corpo1 = corpo1 || '<p><u>NF</u>: '||:NUMERO_NOTAFISCAL||'</p>';
        corpo1 = corpo1 || '<p><u>Empresa</u>: '||:EMPRESA_ID||' - '||:RAZAOSOCIAL||'</p>';
        corpo1 = corpo1 || '<br>';
        corpo1 = corpo1 || '</body></html>';

        for
            select
                u.email,
                u.codigo
            from tbcontrole_usuario o,  tbusuario u
            where u.codigo = o.usuario_id
            and o.id = 900
            and o.valor_ext = '1'
        into
            :EMAIL,
            :USUARIO_ID
        do begin
           execute procedure spi_notificar(
              current_timestamp,
              :USUARIO_ID,
              :assunto,
              :corpo1,
              1,
              1
           );

        end

    end
end
^

SET TERM ; ^

