[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