Discussion:
usar tipo money o real en proceso de facturacion ?
(too old to reply)
carlos mendez
2008-10-03 00:27:14 UTC
Permalink
hola a todos,

estoy realizando un sistema de facturacion y como saben para manejar el
dinero se debe tomar en cuenta los centavos ahora yo estoy utilizando para
los campos precio o monto el tipo de dato real asi almaceno datos como 10.30
o 43.50 sin embargo no se si utilizando el tipo de dato real tendre
problemas en el futuro,
Por otra parte vi que pgsql maneja el tipo de dato money supongo que este
debe ser el mas indicado, y me gustaria saber que *ventajas* existe -si es
que las hay- de usar este tipo de dato a diferencia del real,

Gracias de antemano por la ayuda,
saludos.
Alvaro Herrera
2008-10-03 01:23:28 UTC
Permalink
Post by carlos mendez
hola a todos,
estoy realizando un sistema de facturacion y como saben para manejar el
dinero se debe tomar en cuenta los centavos ahora yo estoy utilizando para
los campos precio o monto el tipo de dato real asi almaceno datos como 10.30
o 43.50 sin embargo no se si utilizando el tipo de dato real tendre
problemas en el futuro,
Por otra parte vi que pgsql maneja el tipo de dato money supongo que este
debe ser el mas indicado, y me gustaria saber que *ventajas* existe -si es
que las hay- de usar este tipo de dato a diferencia del real,
No deberías almacenar dinero en campos de punto flotante, por la
inherente pérdida de precisión de estos. La ventaja del tipo money es
que tiene dos decimales pero está implementado con aritmética entera,
por lo que no tiene ese problema.

Obviamente otra solución es usar el tipo numeric. Se supone que hay
diferencias de rendimiento entre numeric y money, pero en algunas cosas
gana uno y en otras gana el otro, así que este argumento no es claro :-)
Lo otro cierto es que más que nada el tipo money se sabe que funciona
bien con las monedas gringas (por lo del símbolo dólar, etc), pero en
otras configuraciones regionales puede ser un problema.

Ahh, creo que en 8.3 el símbolo de moneda es dependiente de la
configuración regional del servidor ... lo cual significa que un dump
hecho en un servidor no necesariamente puede restaurarse en otro.
--
Alvaro Herrera http://www.flickr.com/photos/alvherre/
FOO MANE PADME HUM
--
TIP 6: ¿Has buscado en los archivos de nuestra lista de correo?
http://archives.postgresql.org/pgsql-es-ayuda
Jenaro Centeno Gómez
2008-10-03 14:31:54 UTC
Permalink
Post by carlos mendez
hola a todos,
estoy realizando un sistema de facturacion y como saben para manejar
el dinero se debe tomar en cuenta los centavos ahora yo estoy
utilizando para los campos precio o monto el tipo de dato real asi
almaceno datos como 10.30 o 43.50 sin embargo no se si utilizando el
tipo de dato real tendre problemas en el futuro,
Por otra parte vi que pgsql maneja el tipo de dato money supongo que
este debe ser el mas indicado, y me gustaria saber que _ventajas_
existe -si es que las hay- de usar este tipo de dato a diferencia del
real,
Gracias de antemano por la ayuda,
saludos.
Hola, personalmente no lo uso, nunca me gustó. Prefiero manejarlo yo.
Saludos Fernando
--
TIP 10: no uses HTML en tu pregunta, seguro que quien responda no podrá leerlo
Si de algo te sirve un consejo, utiliza numeric, tu puedes definir la
resolución a nivel de número de decimales, y esto sobre todo en sistemas
de inventario o finanzas es muy util, en una ocasión me encontré con un
cliente que necesitaba resolución en sus costos de 8 decimales. Así que
mas vale prevenir que lamentar.

Saludos.
carlos mendez
2008-10-06 01:06:16 UTC
Permalink
Post by Jenaro Centeno Gómez
Si de algo te sirve un consejo, utiliza numeric, tu puedes definir la
resolución a nivel de número de decimales, y esto sobre todo en sistemas
de inventario o finanzas es muy util, en una ocasión me encontré con un
cliente que necesitaba resolución en sus costos de 8 decimales. Así que
mas vale prevenir que lamentar.
Saludos.
Muchas gracias por las respuestas, bueno el tipo real esta descartado,
ahora si quisiera utilizar el tipo numeric como lo definiria el campo? algo
como: monto numeric(10,2)? o numeric(10,8)? cual seria mejor?
De acuerdo a la experiencia que han tenido como como lo definirian en la
base de datos?
por el momento solo estoy utilizando unas tablas donde almaceno los precios
de venta y ahi son numeros redondos o maximo con 2 decimales como 50,20 o
100.30, despues utilizo otra tabla detalle_factura donde tambien almaceno
los precios unitarios de lo que se vende, hasta ahora me dice el director
ejecutivo que desea los reportes que cuanto se vendio al dia, al mes, al año
etc o sea ingresos totales, pero todo en la vida puede cambiar y como bien
decian mas vale preveer,

cualquier ayuda o sugerencia sera bienvenida,
saludos.
Raúl Andrés Duque Murillo
2008-10-06 10:43:24 UTC
Permalink
From: carlos mendez
Sent: Sunday, October 05, 2008 8:06 PM
To: Jenaro Centeno Gómez
Subject: Re: [pgsql-es-ayuda] usar tipo money o real en proceso de
facturacion ?
Si de algo te sirve un consejo, utiliza numeric, tu puedes definir la
resolución a nivel de número de decimales, y esto sobre todo en sistemas
de inventario o finanzas es muy util, en una ocasión me encontré con un
cliente que necesitaba resolución en sus costos de 8 decimales. Así que
mas vale prevenir que lamentar.
Saludos.
Muchas gracias por las respuestas, bueno el tipo real esta descartado,
ahora si quisiera utilizar el tipo numeric como lo definiria el campo? algo
como: monto numeric(10,2)? o numeric(10,8)? cual seria >mejor?
De acuerdo a la experiencia que han tenido como como lo definirian en la
base de datos?
por el momento solo estoy utilizando unas tablas donde almaceno los precios
de venta y ahi son numeros redondos o maximo con 2 decimales como 50,20 o
100.30, despues utilizo otra tabla >detalle_factura donde tambien almaceno
los precios unitarios de lo que se vende, hasta ahora me dice el director
ejecutivo que desea los reportes que cuanto se vendio al dia, al mes, al
año etc o sea >ingresos totales, pero todo en la vida puede cambiar y como
bien decian mas vale preveer,
cualquier ayuda o sugerencia sera bienvenida,
saludos.
Pues si estas SEGURO que no excederás dos decimales de precisión un (14, 2)
de seguro sería normalmente suficiente. En nuestros países latinoamericanos
donde la moneda está tan devaluada, hablar de cifras de más de décimas de
billón es complicado incluso en el sector gubernamental y no creo que estés
haciendo un softwsre para la entidad de impuestos de tu país !!! :-). Aunque
recuerda que entre más pequeño pueda ser mejor, aunque debes hacer un juicio
pensando en el futuro a mediano plazo. En el peor de los casos tendrás que
hacer un ALTER en algún momento y agrandar la precisión pero eso te
implicaría tener la DB por fuera de servicio algún tiempo (dependiendo de la
cantidad de registros que tenga tu DB).

Ten en cuenta que cuando hablas de (10, 8) defines un numeric con 10 dígitos
de ellos 8 decimales ... como quien dice podrías almacenar como máximo
99.99999999 !!!

Atentamente,

RAUL DUQUE
Bogotá, Colomia


--
TIP 2: puedes desuscribirte de todas las listas simultáneamente
(envía "unregister TuDirecciónDeCorreo" a majordomo-RDL/qDirzP6MkH2+***@public.gmane.orgg)
Alvaro Herrera
2008-10-06 13:52:49 UTC
Permalink
Post by carlos mendez
ahora si quisiera utilizar el tipo numeric como lo definiria el campo? algo
como: monto numeric(10,2)? o numeric(10,8)? cual seria mejor?
De acuerdo a la experiencia que han tenido como como lo definirian en la
base de datos?
10,2 debería ser más que suficiente para almacenar los precios
unitarios; puedes agregar más dígitos para las columnas que vayan a
almacenar valores más grandes.
Post by carlos mendez
por el momento solo estoy utilizando unas tablas donde almaceno los precios
de venta y ahi son numeros redondos o maximo con 2 decimales como 50,20 o
100.30, despues utilizo otra tabla detalle_factura donde tambien almaceno
los precios unitarios de lo que se vende, hasta ahora me dice el director
ejecutivo que desea los reportes que cuanto se vendio al dia, al mes, al año
etc o sea ingresos totales, pero todo en la vida puede cambiar y como bien
decian mas vale preveer,
Ojo que el resultado de una consulta (por ej. la del reporte) puede
tener mayor cantidad de dígitos que la columna de donde vienen los
datos, así que no hay problema con usar 10,2 si después resulta que
necesitas 14 dígitos para guardar el total de ventas anuales.
--
Alvaro Herrera http://www.PlanetPostgreSQL.org/
"La vida es para el que se aventura"
--
TIP 3: Si encontraste la respuesta a tu problema, publícala, otros te lo agradecerán
Jenaro Centeno Gómez
2008-10-06 17:44:26 UTC
Permalink
Post by Jenaro Centeno Gómez
Si de algo te sirve un consejo, utiliza numeric, tu puedes definir la
resolución a nivel de número de decimales, y esto sobre todo
en sistemas
de inventario o finanzas es muy util, en una ocasión me
encontré con un
cliente que necesitaba resolución en sus costos de 8
decimales. Así que
mas vale prevenir que lamentar.
Saludos.
Muchas gracias por las respuestas, bueno el tipo real esta descartado,
ahora si quisiera utilizar el tipo numeric como lo definiria el campo?
algo como: monto numeric(10,2)? o numeric(10,8)? cual seria mejor?
De acuerdo a la experiencia que han tenido como como lo definirian en
la base de datos?
por el momento solo estoy utilizando unas tablas donde almaceno los
precios de venta y ahi son numeros redondos o maximo con 2 decimales
como 50,20 o 100.30, despues utilizo otra tabla detalle_factura donde
tambien almaceno los precios unitarios de lo que se vende, hasta ahora
me dice el director ejecutivo que desea los reportes que cuanto se
vendio al dia, al mes, al año etc o sea ingresos totales, pero todo
en la vida puede cambiar y como bien decian mas vale preveer,
cualquier ayuda o sugerencia sera bienvenida,
saludos.
Personalmente utilizo NUMERIC(12,2) para importes en documentos de venta
(y con los tiempos que corren quiza pronto necesite más dígitos, espero
que no), en el caso de los costos utilizo NUMERIC (16,6) o
NUMERIC(18,8), recuerda que en finanzas para cuestiones de cálculos se
requiere que se llegue a 8 decimales para mejorar la precisión. Lo mismo
aplica para la parte de artículos o ingredientes en las unidades de
medida, y siempre recomendar utilizar en este caso la unidad de medida
menor para mejorar la resolución, por ejemplo, en artículos controlados
por peso utilizar gramos en lugar de kilos para aquellos que requieren
trabajarse incluso en micras, como es el caso de los agentes químicos, y
aplicarlo cuidadosamente según el caso.

Es importante que le dés una leída a la documentación sobre los tipos de
datos en PostgreSQL porque esto también impacta en el tamaño de las
tablas y por consecuencia de la base de datos. Otra cosa importante y
que ya se ha comentado en repetidas ocasiones es que el rendimiento es
menor sobre campos tipo NUMERIC.

Saludos.
carlos mendez
2008-10-11 18:17:19 UTC
Permalink
Hola a todos, como estan,

Muchas gracias por la ayuda y los consejos, gracias a la informacion he
podido resolver las dudas que tenia,

saludos.
Post by Jenaro Centeno Gómez
Post by Jenaro Centeno Gómez
Si de algo te sirve un consejo, utiliza numeric, tu puedes definir la
resolución a nivel de número de decimales, y esto sobre todo
en sistemas
de inventario o finanzas es muy util, en una ocasión me
encontré con un
cliente que necesitaba resolución en sus costos de 8
decimales. Así que
mas vale prevenir que lamentar.
Saludos.
Muchas gracias por las respuestas, bueno el tipo real esta descartado,
ahora si quisiera utilizar el tipo numeric como lo definiria el campo?
algo como: monto numeric(10,2)? o numeric(10,8)? cual seria mejor?
De acuerdo a la experiencia que han tenido como como lo definirian en
la base de datos?
por el momento solo estoy utilizando unas tablas donde almaceno los
precios de venta y ahi son numeros redondos o maximo con 2 decimales
como 50,20 o 100.30, despues utilizo otra tabla detalle_factura donde
tambien almaceno los precios unitarios de lo que se vende, hasta ahora
me dice el director ejecutivo que desea los reportes que cuanto se
vendio al dia, al mes, al año etc o sea ingresos totales, pero todo
en la vida puede cambiar y como bien decian mas vale preveer,
cualquier ayuda o sugerencia sera bienvenida,
saludos.
Personalmente utilizo NUMERIC(12,2) para importes en documentos de venta
(y con los tiempos que corren quiza pronto necesite más dígitos, espero
que no), en el caso de los costos utilizo NUMERIC (16,6) o
NUMERIC(18,8), recuerda que en finanzas para cuestiones de cálculos se
requiere que se llegue a 8 decimales para mejorar la precisión. Lo mismo
aplica para la parte de artículos o ingredientes en las unidades de
medida, y siempre recomendar utilizar en este caso la unidad de medida
menor para mejorar la resolución, por ejemplo, en artículos controlados
por peso utilizar gramos en lugar de kilos para aquellos que requieren
trabajarse incluso en micras, como es el caso de los agentes químicos, y
aplicarlo cuidadosamente según el caso.
Es importante que le dés una leída a la documentación sobre los tipos de
datos en PostgreSQL porque esto también impacta en el tamaño de las
tablas y por consecuencia de la base de datos. Otra cosa importante y
que ya se ha comentado en repetidas ocasiones es que el rendimiento es
menor sobre campos tipo NUMERIC.
Saludos.
Rodriguez Fernando
2008-10-03 11:08:35 UTC
Permalink
Post by carlos mendez
hola a todos,
estoy realizando un sistema de facturacion y como saben para manejar
el dinero se debe tomar en cuenta los centavos ahora yo estoy
utilizando para los campos precio o monto el tipo de dato real asi
almaceno datos como 10.30 o 43.50 sin embargo no se si utilizando el
tipo de dato real tendre problemas en el futuro,
Por otra parte vi que pgsql maneja el tipo de dato money supongo que
este debe ser el mas indicado, y me gustaria saber que _ventajas_
existe -si es que las hay- de usar este tipo de dato a diferencia del
real,
Gracias de antemano por la ayuda,
saludos.
Hola, personalmente no lo uso, nunca me gustó. Prefiero manejarlo yo.


Saludos Fernando
--
TIP 10: no uses HTML en tu pregunta, seguro que quien responda no podrá leerlo
Loading...