[firebase-br] Case no where
Sandro Souza
escovadordebits em gmail.com
Quarta Junho 30 15:48:36 -03 2021
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