[firebase-br] Case no where

Nobyte X clovis.007x em gmail.com
Terça Junho 29 13:19:45 -03 2021


Precisaria de um pouco mais de informações para conseguir entender melhor,
se quiser passo meu telegram para conversarmos, mas vou tentar passa algo
para ver se da certo.
Coloque mais uma condição no case



CASE c.in_autorizado
            WHEN 'N' THEN 'AN'
            WHEN 'S' and (c.vl_total >= (:vVlFinal + 0.01)) THEN 'CC'
            when 'S' and :vlTetoUsuario >= c.vl_total and (c.vl_total <
(:vVlFinal + 0.01)) THEN 'AU'
            else 'AN'
          END

Sendo o parâmetro :vlTetoUsuario o valor maximo que o usuario pode liberar
e o vl_total pelo que entendi seria o valor da compra mas como citei
anteriormente posso ter entendido errado por conta das informações.

Ah é coloquei um parâmetro pois nao achei no select algum campo que defina
o limite do teto do usuario

Em ter, 29 de jun de 2021 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