[firebase-br] Case no where

José Mauricio Barbisan Zottis zottissistemas em gmail.com
Terça Junho 29 14:01:43 -03 2021


  from v_cmp_compras c
   where c.nr_itens > 0
    and c.tp_status =
          CASE c.in_autorizado
            WHEN 'N' THEN 'AN'
            WHEN (('S') and ((select c2.vl_total from cmp_pedidoc c2 where
c2.cd_pedido = c.cd_pedido >= (:vVlFinal + 0.01)))) THEN 'CC'
            WHEN (('S') and ((c.vl_total >= (:vVlFinal + 0.01)))) THEN
'CC'--<- Aqui é somente para não aparecer mais( o TP_STATUS "CC' Não existe
--            when 'S' and :vlTetoUsuario >= c.vl_total and (c.vl_total
<(:vVlFinal + 0.01)) THEN 'AU'
            else 'AN'
          END

Em ter., 29 de jun. de 2021 às 13:46, Nobyte X via lista <
lista em firebase.com.br> escreveu:

> Estranho ter aparecido este erro, coloca entre parênteses "()"  a condição
> que adicionou no case, o que você está passando para "vltetousuario" é um
> valor ne?
> Como ficou o select?
>
> Em ter, 29 de jun de 2021 13:29, José Mauricio Barbisan Zottis via lista <
> lista em firebase.com.br> escreveu:
>
> > está dando esse erro:
> >
> > Invalid token.
> > Dynamic SQL Error.
> > SQL error code = -104.
> > Invalid usage of boolean expression.
> > ------------------------------------
> > SQLCODE: -104
> > SQLSTATE: 22000
> > GDSCODE: 335544569
> >
> > Em ter., 29 de jun. de 2021 às 13:24, José Mauricio Barbisan Zottis <
> > zottissistemas em gmail.com> escreveu:
> >
> > > Desculpe, cliquei no enviar sem querer
> > >
> > > oi Mário, desculpe, tentei ser o mais claro possível, vamos lá
> > >
> > > No Sistema, os pedidos de compra tem duas etapas AUTORIZADO e LIBERADO.
> > > O Usuário pode ser apenas Autorizador, Liberador ou ambos.
> > > Para LIBERAR é Usado um Limite(Range) que no exemplo é de  até 2000,00
> > > e AUTORIZAR pode ser qualquer valor.
> > >
> > > Tenho uma view que tem o Campo IN_AUTORIZADO e IN_LIBERADO que podem
> > > receber os valores "S' ou "N"
> > > o usuário tem um limite de aprovação, no caso do exemplo, de 0 até
> > 2000,00
> > > o usuário pode AUTORIZAR qualquer valor, mas LIBERAR apenas dentro do
> > > Range(0 até 200,00)
> > > Na tela de Liberação das Compras, tem um Check Box que o usuário marca
> > > qual pedido ele quer liberar e clica em um botão chamado "Processar"
> > > o Sistema verifica se o usuário está apto a LIBERAR, e caso o Pedido de
> > > Compra esteja acima do teto do usuário, marca o Pedido apenas como
> > > Autorizado, e este pedido deverá ser LIBERADO por  outro usuário, neste
> > > caso, o usuário AUTORIZOU um pedido Maior que o limite dele poder
> LIBERAR
> > > então, preciso que este pedido não apareça mais para este usuário pois
> o
> > > que ele poderia fazer com o Pedido ele fez que era apenas AUTORIZAR e
> > caso
> > > o pedido esteja dentro do Range de valor do usuário, o sistema
> AUTORIZA e
> > > LIBERA o pedido para poder ser comprado.
> > >
> > >
> > > Em ter., 29 de jun. de 2021 às 13:18, José Mauricio Barbisan Zottis <
> > > zottissistemas em gmail.com> escreveu:
> > >
> > >> oi Mário, desculpe, tentei ser o mais claro possível, vamos lá
> > >> Tenho uma view que tem o Campo IN_AUTORIZADO e IN_LIBERADO que podem
> > >> receber os valores "S' ou "N"
> > >> o usuário tem um limite de aprovação, no caso do exemplo, de 0 até
> > 2000,00
> > >> o usuário pode AUTORIZAR qualquer valor, mas LIBERAR apenas dentro do
> > >> Range(0 até 200,00)
> > >> Na tela de Liberação das Compras, tem um Check Box que o usuário marca
> > >> qual ele quer liberar e clica em um botão chado "Processar"
> > >> o Sistema verifica se o usuário está apto a LIBERAR
> > >>
> > >> Em ter., 29 de jun. de 2021 às 12:58, Mário Reis via lista <
> > >> lista em firebase.com.br> escreveu:
> > >>
> > >>> Desculpe mas só assim sem mais dados, não dá para entender!
> > >>> Com os meus melhores cumprimentos
> > >>> Mário Agostinho Reis
> > >>> 919262146
> > >>>
> > >>> Esta mensagem contém informação de natureza confidencial e é
> > >>> exclusivamente dirigida ao(s) destinatário(s) indicado(s). Se, por
> > >>> engano,
> > >>> receber este email agradecemos que não o copie nem o reenvie e que
> nos
> > >>> notifique do ocorrido através do email de resposta.
> > >>>
> > >>>
> > >>> José Mauricio Barbisan Zottis via lista <lista em firebase.com.br>
> > >>> escreveu no
> > >>> dia terça, 29/06/2021 à(s) 15:11:
> > >>>
> > >>> > Pessoal, estou com um problema em um SQL que não tô dando conta.
> > >>> > a Situação é a seguinte:
> > >>> > Tenho uma tela de Autorização e liberação de Compras,
> > >>> > Os usuários tem um teto(range) de LIBERAÇÃO, porém, eles podem ver
> > >>> todos os
> > >>> > pedidos de qualquer valor que estejam aguardando autorização ou
> > >>> Liberação
> > >>> > no momento da abertura da tela.
> > >>> >
> > >>> > Exemplo de usuário. Zottis de 0 até 2000,00
> > >>> > Exemplo de Compra Total 3500,00
> > >>> > O Usuário Zottis pode *Autorizar* o Pedido, mas não pode *liberar*
> > >>> > Isso, acontece ao clicar em um botão "Processar" o sistema verifica
> > se
> > >>> ele
> > >>> > pode Liberar e caso o valor seja maior que o teto dele, o sistema
> > >>> apenas
> > >>> > Autoriza o pedido.
> > >>> > *O problema está que eu preciso que nos pedidos já Autorizados e
> > sejam
> > >>> > maiores do que o teto do usuário não apareçam mais para ele, pois o
> > >>> que ele
> > >>> > poderia fazer com o pedido já foi feito.*
> > >>> >
> > >>> >
> > >>> > com esse case abaixo, dá certo, porém não atende completamente pois
> > >>> aparece
> > >>> > os Autorizados com valores maiores da alçada do usuário.
> > >>> > and  c.tp_status = ');
> > >>> >          CASE c.in_autorizado
> > >>> >             WHEN 'N' THEN 'AN'
> > >>> >              WHEN 'S' THEN 'AU'
> > >>> >               else ''AN'' ');
> > >>> >             END
> > >>> >
> > >>> > O Select que faço
> > >>> >
> > >>> > select c.cd_empresa,
> > >>> >        c.cd_pedido,
> > >>> >        c.dt_cadastro,
> > >>> >        c.cd_pessoa,
> > >>> >        c.nm_pessoa,
> > >>> >        c.nr_documentopes,
> > >>> >        c.cd_comprador,
> > >>> >        c.nm_comprador,
> > >>> >        c.vl_total,
> > >>> >        c.cd_transportadora,
> > >>> >        c.nm_transp,
> > >>> >        c.cd_formapgto,
> > >>> >        c.ds_formapgto,
> > >>> >        c.in_autorizado,
> > >>> >        c.dt_autorizacao,
> > >>> >        c.in_negado,
> > >>> >        c.obs,
> > >>> >        --c.observacao_negacao,
> > >>> >        c.in_liberado,
> > >>> >        c.nr_itens,
> > >>> >
> > >>> >        c.tp_status,
> > >>> >        case c.tp_status
> > >>> >           when 'DG' then 'Em Digitação'
> > >>> >           when 'AN' then 'Em Andamento'
> > >>> >           when 'AU' then 'Autorizado'
> > >>> >           when 'LI' then 'Liberado'
> > >>> >           when 'BL' then 'Bloqueado'
> > >>> >           when 'CA' then 'Cancelado'
> > >>> >           when 'BF' then 'Bloqueado Para Faturamento'
> > >>> >           when 'AP' then 'Atendida Parcial'
> > >>> >           when 'AT' then 'Atendida Total'
> > >>> >           when 'NG' then 'Negado'
> > >>> >          end ds_tpstatus,
> > >>> >
> > >>> >        c.dt_preventrega,
> > >>> >        c.cd_autorizador,
> > >>> >        c.nm_autorizador,
> > >>> >        c.cd_liberador,
> > >>> >        c.nm_liberador,
> > >>> >        c.dt_liberacao,
> > >>> >        c.tp_liberado,
> > >>> >        c.dt_negacao
> > >>> >   from v_cmp_compras c  /*é uma View*/
> > >>> >    where c.nr_itens > 0
> > >>> >      and  c.tp_status =
> > >>> >           CASE c.in_autorizado
> > >>> >             WHEN 'N' THEN 'AN'
> > >>> >             WHEN 'S' and (c.vl_total >= (:vVlFinal + 0.01)) THEN
> 'CC'
> > >>> >             when 'S' and (c.vl_total < (:vVlFinal + 0.01))THEN 'AU'
> > >>> >             else 'AN'
> > >>> >           END
> > >>> >
> > >>> > --
> > >>> > ______________________________________________
> > >>> > FireBase-BR (www.firebase.com.br) - Hospedado em
> www.locador.com.br
> > >>> > Para saber como gerenciar/excluir seu cadastro na lista, use:
> > >>> > http://www.firebase.com.br/fb/artigo.php?id=1107
> > >>> > Para consultar mensagens antigas:
> > >>> > http://www.firebase.com.br/pesquisa_lista.html
> > >>> >
> > >>> ______________________________________________
> > >>> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> > >>> Para saber como gerenciar/excluir seu cadastro na lista, use:
> > >>> http://www.firebase.com.br/fb/artigo.php?id=1107
> > >>> Para consultar mensagens antigas:
> > >>> http://www.firebase.com.br/pesquisa_lista.html
> > >>>
> > >>
> > >>
> > >> --
> > >>
> > >>
> > >
> > > --
> > >
> > >
> >
> > --
> > ______________________________________________
> > FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> > Para saber como gerenciar/excluir seu cadastro na lista, use:
> > http://www.firebase.com.br/fb/artigo.php?id=1107
> > Para consultar mensagens antigas:
> > http://www.firebase.com.br/pesquisa_lista.html
> >
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas:
> http://www.firebase.com.br/pesquisa_lista.html
>


--


Mais detalhes sobre a lista de discussão lista