[firebase-br] sugestão de modelagem no FB para campos dinheiro.

Zottis IG bzottis em ig.com.br
Ter Out 6 15:34:15 -03 2009


ainda fico com a opção de colocar um campo marcador,
exemplo
Cacular_Como_posto    varchar(1)

alter table1
add    SALDO            COMPUTED BY (CASE
WHEN ( Cacular_Como_posto = 'N' )  THEN
CAST(VALOR + VLRJUROS + DESPESAS_EXTRAS - ( DESCONTO + TOTALPAGO ) AS 
NUMERIC(15,2))
WHEN (Cacular_Como_posto = 'S' )THEN
CAST( VALOR + VLRJUROS + DESPESAS_EXTRAS - ( DESCONTO + TOTALPAGO ) AS 
NUMERIC(15,3))
END),


Arte&Cor Estamparia - Zottis

"Um homem só tem o direito de olhar
  a um outro de cima para baixo, quando
  vai ajuda-lo a levantar-se".
                   Gabriel Garcia Marquez
----- Original Message ----- 
From: "Elton da Motta Barbosa" <embarbosa em gmail.com>
To: <lista em firebase.com.br>
Sent: Tuesday, October 06, 2009 2:00 PM
Subject: [firebase-br] sugestão de modelagem no FB para campos dinheiro.


  Vamos-lá pessoal,
  Muito obrigado por todas as sugestões. São bem interessantes,
principalmente a de usar um domínio, embora ainda não analisei a sua
praticidade, mas enfim..

   A minha questão é pertinente também a como tratar o campo. Digamos
tipo Numeric(18,4), para ambos diferentes casos.

Algumas aplicações, por exemplo tem facilidades como remarcar preço
por porcentagem, (ou talvez na hora de vender, dar um desconto
porcentualmente, ou uma quantidade fracionada, etc...), nesse caso na
hora de gravar o preço de um produto o valor poderia ficar com casas
decimais além do necessário para o valor monetário o que depois
causaria erro nas contas.
 Por exemplo suponha que numa dessas um produto seja calculado como
1,80 -> mas na verdade seja gravado no BD 1,796 porque o tipo do campo
permite isso. Se vender esse produto, quatro unidades custará 7,20 mas
no banco 4x1,796 = 7,182 o que por um round ou trunc vai mostrar na
tela pro usuário 7,18 (dois centavos a menos).
  É claro que seria fácil resolver esse problema definindo o campo
como Numeric(18,2) por exemplo, mas isso impediria o uso de 3 casas e
passaria a ter duas versões do banco de dados para uma só aplicação.

  Então, temos aí opções:
 1) Ou cercamos as entradas dos preços dos produtos para que na tabela
de preços tenha somente o número de casas necessárias. Mas como?
  Dando um Round em todos os lugares de inserção de acordo com a
configuração? Na hora da venda fazendo o mesmo se for dado um desconto
percentual? ficar cercando em cada lugar que faz uma multiplicação por
números fracionários?

 2) Ou cercamos nas horas de recolher o dado do banco de dados?
Cercando os SQLs das querys no programa, criando sempre pelo menos
duas diferentes pra usar de acordo com um modelo ou outro? (isso não
impediria o uso de componentes como sem SQL como o TIBTable no
delphi)?

3)??

e aí?

______________________________________________
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://firebase.com.br/pesquisa 





Mais detalhes sobre a lista de discussão lista