12 Replies Latest reply: Dec 15, 2014 1:44 PM by carla oliveira RSS

    Status de atraso

    carla oliveira

      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?

        • Re: Status de atraso
          Yuri Nicolett

          Me parece que sua lógica esta correta, pode ser algum problema com sintaxe. Você pode disponibilizar um qvw de exemplo para verificarmos?

            • Re: Status de atraso
              carla oliveira

              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.

                • Re: Status de atraso
                  Yuri Nicolett

                  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

                    • Re: Status de atraso
                      carla oliveira

                      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

                       

                        • Re: Status de atraso
                          Alessandro Furtado

                          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

                  • Re: Status de atraso
                    carla oliveira

                    oi Alessandro

                     

                    boa dica, quando retornar a empresa..vou fazer essa ação

                    obrigadaa

                    • Re: Status de atraso
                      carla oliveira

                      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

                        • Re: Status de atraso
                          Alessandro Furtado

                          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