[firebase-br] Case no where

José Mauricio Barbisan Zottis zottissistemas em gmail.com
Terça Junho 29 13:28:08 -03 2021


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
>>>
>>
>>
>> --
>>
>>
>
> --
>
>

--


Mais detalhes sobre a lista de discussão lista