[firebase-br] Case no where

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


para tentar explicar ainda melhor:
na tela de Liberação devem aparecer somente Pedidos com  c.tp_status:
'AN'--ANDAMENTO
'AU'--AUTORIZADO

O IN_AUTORIZADO deve estar 'N'  para poder ser AUTORIZADO
O IN_AUTORIZADO deve estar 'S' para poder ser LIBERADO


and c.tp_status =
          CASE c.in_autorizado
            WHEN 'N' THEN 'AN'
            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 14:01, José Mauricio Barbisan Zottis <
zottissistemas em gmail.com> escreveu:

>   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