Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   Tipos de moneda en firebird 2.5 (https://www.clubdelphi.com/foros/showthread.php?t=90739)

ronimaxh 24-08-2016 16:20:09

Tipos de moneda en firebird 2.5
 
Saludos amigos del club, tengo una duda quiero pedirles ayuda tengo un sistema de punto de venta me gustaría saber como podria manejar difernetes tipos de monedas: euro, dolares y pesos domincano. Cómo firebird los define

ecfisa 24-08-2016 19:13:01

Hola.

No entiendo bién a donde apunta la pregunta, supongo que te refieres al contenido de los distintos juegos de caracteres y como definirlos:Pero si aludes al formato de salida, (pantalla/impresión, etc) normalmente se maneja desde el lenguaje.

Saludos :)

ronimaxh 24-08-2016 20:02:55

Parece que no me di a entender bien, lo quiero saber es: registrar dolores o registrar euros aquí hay una diferencia en la forma como quedarían guardados, ejemplo 1,500.00 (dolares o pesos) y en euro seria 1.500,00 como se puede manejar eso.

mamcx 24-08-2016 20:43:51

Lo mas simple es crear una columna por cada denominacion, si tienes una lista fija. Si no, haces una relacion uno a muchos y creas una fila por cada denominacion

ecfisa 24-08-2016 20:52:49

Hola.

Como te dije antes, no es Firebird quién debe encargarse de los formatos de presentación sino el lenguaje, revisa las variables globales:
Un ejemplo:
Código Delphi [-]

procedure SetMoney(Euro: Boolean = False);
begin
  if Euro then
  begin
    ThousandSeparator := '.';
    DecimalSeparator  := ',';
  end
  else
  begin
    ThousandSeparator := ',';
    DecimalSeparator  := '.';
  end;
end;

procedure TForm1.btnDolarClick(Sender: TObject);
begin
  SetMoney; // dolar-peso
end;

procedure TForm1.btnEuroClick(Sender: TObject);
begin
  SetMoney(True); // euro
end;

var
  Monto: Double = 1500.99;

procedure TForm1.btnShowClick(Sender: TObject);
begin
  ListBox1.Items.Add( FormatFloat(',0.00', Monto) );
end;
Podes asegurar que no se cambie el formato durante la ejecución mediante:
Código Delphi [-]
Application.UpdateFormatSettings := False;

También te va a resultar útil la informacion y consejos de este hilo: float con coma (,) o punto (.)

Saludos :)

ronimaxh 24-08-2016 20:56:00

Gracias amigos ahora si tengo una idea clara.

Ferrari 24-08-2016 22:18:45

Eficsa 4 President....
 
Coincido con eficsa.....!!!

AgustinOrtu 24-08-2016 22:28:43

Estas a tiempo de no usar un valor primitivo para representar dinero.

Yo justamente por eso ahora tengo planeada una refactorizacion bastante grande. En la mayoría de los modelos, los tipos primitivos léase string, float, integer, etc, no son adecuados para representar objetos del modelo

Lo más adecuado es usar clases que encapsulen ese comportamiento. De esa manera vas a poder realizar conversiones desde hasta en cualquier momento y fácilmente

Acá se explica más detenidamente este "mal olor" o potencial problema conocido como "primitive obsession" o en español algo así como "abuso de tipos primitivos"

http://blog.ploeh.dk/2011/05/25/Desi...tiveObsession/

http://blog.ploeh.dk/2015/01/19/from...ain-modelling/

De esta forma centralizas: conversión a string, cambio de moneda, equivalencias, redondeo, validaciónes, parseo de string, etc

Casimiro Notevi 24-08-2016 22:55:28

En la base de datos, como te han indicado, un valor numérico decimal o currency, y la base de datos lo guardará como crea oportuno. Luego eres tú quien presentará en pantalla ese dato como más te convenga.
Date cuenta que tu pregunta es lo mismo que: quiero guardar cantidad de manzanas, peras y limones: 5 peras, 6 manzanas, 8 limones.
Tú guardarás directamente un número 5, 6, 8 o la cantidad que sea. Luego en pantalla mostrarás la descripción del producto: peras, manzanas, tomates o pimientos.

rocksoft 25-08-2016 07:45:10

La pregunta del millon que usar para monedas decimal o money (currency)?

:) quien se robo el limon? y de donde salieron los tomates o el pimiento :)

Casimiro Notevi 25-08-2016 09:17:20

Mira esta página.

Los tomates y pimientos acabaron en la ensalada, y el limón para aderezarlo :)

rastafarey 09-09-2016 14:49:38

La del millon
 
te recomiendo usar numeric o decimal con formato definido fijo.

Moneda = numeric(18, 2) o numeric(1,4). Al igual que el calcul o de % tambien usar algo asi. Si no haces eso fijo vas a tener problemas con el los redondeos y la presision. te lo digo por que ya me paso.

Aqui en el foro hay uno o varios hilo sque este tema, lo de la meneda en bastanto delicado y no se debe tomar a la ligera, es preferible hacer el calculo redondear y almacenar los decimales con un largo definco para que te evites muchos dolodres de cabeza mas adelante.


La franja horaria es GMT +2. Ahora son las 12:53:08.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi