Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Boa tarde gente
Preciso montar
esses status
Qtde NFs Dentro do Prazo (expedida em até 1 dia da emissão) /
Atrasado (expedida com 2 ou mais dias após a emissão) /
Pendentes (não expedidas)
Possuo uma tabela fatoromaneio, nela tenho os campos data emissão da NF e data emissão do romaneio,
sendo assim
quero calcular a quantidade de notas, que a data do romaneio é diferente da data de entrega,
se for ate um dia de diferença esta no prazo
se não, esta atrasada.
no script adicionei esse cara
if(date(DT_EMIS_ROMANEIO) > date(DT_EMISSAO_NF),DT_EMIS_ROMANEIO - DT_EMISSAO_NF) AS QTDE_DIAS_ATRASO e depois na expressão , montei desta forma: COUNT({$<TIPO_DADO_NF = {'NF'},CD_UO_NF = {'0015','0199'}, EXISTE_ROMANEIO_1 = {'1'},QTDE_DIAS_ATRASO ={'>=2'}>distinct NR_NF_NF) |
mas n esta dando certo....pergunta, consigo dar um Sum na frente do campo Qtde _dias_atraso?
alguém tem alguma ideia mais simples?
Boa noite.
No script se criar flags que possam conter 0 e 1 para usar no sum não simplificaria?
ex:
if(not isnull(data_romaneio) and data_romaneio - data_emissao) >= 2 , 1,0) as Atrasada,
if(not isnull(data_romaneio) and data_romaneio - data_emissao) <= 1 , 1,0) as NoPRazo,
if(isnull(data_romaneio),1,0) as NaoDespachada
ai se na expressão der um sum(Atrasada) viria a qtde de notas que foram despachadas em atraso.
Caso tenha outras regras a considerar, poderiam estar no if (considerar determinados tipos de notas).
Att,
Alessandro Furtado
Me parece que sua lógica esta correta, pode ser algum problema com sintaxe. Você pode disponibilizar um qvw de exemplo para verificarmos?
olá yuri, o qvw fico complicado, pois tem vários outros indicadores, está muito carregado.
mas basicamente é isto
tabela de romaneios onde tenho os dois campos
Yuri será que na frente do campo QTDE_DIAS_ATRASO, n seria necessário colocar um SUM?
pois estou usando COUNT na frente , pois preciso contar qtde de notas fiscais.
Carla, não é necessário, pois espera-se que o resultado da coluna QTDE_DIAS_ATRASO retorne essa informação consolidada por NF, desta forma a sintaxe QTDE_DIAS_ATRASO = {'>=2'} faria o filtro conforme esperamos.
Você esta utilizando distinct em sua expressão, então existe mais de uma linha de dados para cada Nota Fiscal? Se isso é uma verdade, talvez seja necessário você criar uma tabela para consolidar essa informação por NF.
É possível colocar um exemplo de dados da sua tabela de NF? Pode mascarar algumas informações
Oi Yuri
Então, como eu trago por item, ele trará dois números de nfs, por isso dou o disctinct .
possuo uma tabela de notas fiscais
e um tabela só de romaneios
onde essa de romaneio eu trago a data de emissão da nota e data que foi emitido o romaneio
Boa noite.
No script se criar flags que possam conter 0 e 1 para usar no sum não simplificaria?
ex:
if(not isnull(data_romaneio) and data_romaneio - data_emissao) >= 2 , 1,0) as Atrasada,
if(not isnull(data_romaneio) and data_romaneio - data_emissao) <= 1 , 1,0) as NoPRazo,
if(isnull(data_romaneio),1,0) as NaoDespachada
ai se na expressão der um sum(Atrasada) viria a qtde de notas que foram despachadas em atraso.
Caso tenha outras regras a considerar, poderiam estar no if (considerar determinados tipos de notas).
Att,
Alessandro Furtado
oi Alessandro
boa dica, quando retornar a empresa..vou fazer essa ação
obrigadaa
Alessando
muito obrigada pela dica...deu certo.
Alessandro
agora só preciso ajustar a clausula
pq nas minhas tabelas
eu trato por itens
ou seja
Uma nota fiscal tem 10 itens....o certo seria trazer como nota atrasada a quantidade de UMA nota..
porém tras 10,pq ele ta pegando tudo.
Eu faria um distinct no IF?
como posso contornar isso
Boa tarde Carla.
Teríamos duas formas (o que me vem a cabeça, mas o pessoal da comunidade pode sugerir outras....).
No script usar um group by
Ex:
left join (Nota)
LOAD
Chave_Nota,
if(not isnull(max(data_romaneio)) and max(data_romaneio) - max(data_emissao)) >= 2 , 1,0) as Atrasada,
if(not isnull(max(data_romaneio)) and max(data_romaneio) - max(data_emissao)) <= 1 , 1,0) as NoPRazo,
if(isnull(max(data_romaneio)),1,0) as NaoDespachada
Resident Nota group by Chave_Nota;
ou usar um aggr na expressao
sum(aggr(sum(distinct Atrasada),Chave_Nota))
Veja, se resolver no script, voce tira o peso da expressao, visto que o aggr cria uma tabela virtual para resolver e isto consome recursos......
Att,
Alessandro Furtado