[firebase-br] Case no where

José Mauricio Barbisan Zottis zottissistemas em gmail.com
Quarta Junho 30 16:23:45 -03 2021


Boa tarde.
dessa forma daria certo

Em qua., 30 de jun. de 2021 às 15:48, Sandro Souza <
escovadordebits em gmail.com> escreveu:

> Bom dia/tarde/noite.
>
> Não conhecia essa sintaxe do CASE.
>
> Eu faria dessa forma:
>
> and  (c.tp_status =
> CASE
>   WHEN(c.in_autorizado = 'N')THEN 'AN'
>   WHEN((c.in_autorizado = 'S') and (c.vl_total >= (:vVlFinal + 0.01)))
> THEN 'CC'
>   WHEN((c.in_autorizado = 'S') and (c.vl_total < (:vVlFinal + 0.01))THEN
> 'AU'
>   ELSE 'AN'
> END)
>
> Poderia testar essa condição, por favor?
>
> Em ter., 29 de jun. de 2021 às 12:10, José Mauricio Barbisan Zottis via
> lista <lista em firebase.com.br> escreveu:
>
>> 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
>>
>

--


Mais detalhes sobre a lista de discussão lista