Sistema de coversion de unidades

204 views
Skip to first unread message

Ronny Solano

unread,
Apr 10, 2011, 1:24:21 PM4/10/11
to publice...@googlegroups.com

Saludos compañeros!

 

Necesito agregar a mi sistema de facturación la opción de permitir trabajar con conversión de unidades, por ejemplo poder facturar productos que están en kilos a libras, galones a litros, etc.

 

Por lo que agradecería sus experiencias con este tipo de sistemas, ya que tengo varias dudas al respecto de cuál sería la mejor forma de hacerlo.

 

Entre varias cosas pensé en crear una tabla de conversiones, con sus respectivas fórmulas de conversión.  Será esto una idea acertada?  En fin como les comente agradecería mucho sus comentarios, tips , sugerencias, experiencias,  en todo lo que respecta trabajar con la conversión de unidades.

 

Saludos y gracias

 

Ronny S.

 

Fabricio

unread,
Apr 10, 2011, 9:56:18 PM4/10/11
to Comunidad de Visual Foxpro en Español
Hola Ronny

En tu maestro de productos (articulos o materiales) define un nuevo
campo que puedes llamar factor, en este campo pondrás el factor de
conversión para cada una de las medidas o presentaciones de un
producto.

Yo lo hago así:
Las unidades de medida de cada articulo lo tengo en una tabla
separada, el factor 1, me indica que es la unidad maestra, o bien la
unidad que representa la existencia del artículo, las otras medidas
tienen un factor que me indica la proporción que corresponde de la
medida maestra.

Ejemplo: Supongamos que tienes un artículo llamado Arroz, tu
existencia la controlas en Kilos, pero también quieres vender el Arroz
por Libra, entonces las medidas y sus respectivos factores quedarían
así:

Kilo -> Factor = 1
Libra -> Libra = 0.4536

Otro Ejemplo: Articulo Pintura, Medidas Galón, Litro, Cuarto, Octavo.
los factores serán:

Galón = 1
Litro = 0.264172
Cuarto = 0.25
Octavo = 0.125

Cuando haces una factura guardas las cantidades facturadas y tambien
el factor de conversión, para poder rebajarlo del inventario haces la
operación cantidad * factor y el resultado es el que disminuyes de la
existencia.

Ejemplo: Vendes 3 litros de pintura, pero la existencia la controlas
en galones.

Medida maestra = Galón, Factor =1
Medida Vendida = Litro, Factor = 0.264172, Cantidad Vendida = 3
3 x 0.264172 = 0.792516 Galones, está es la cantidad de pintura que
rebajarás de tu inventario.

Espero que esté clara la idea, estoy a disposición si deseas más
apoyo.

Saludos

Fabricio

Walter R. Ojeda Valiente

unread,
Apr 10, 2011, 10:14:26 PM4/10/11
to publice...@googlegroups.com
Si vas a hacer una conversión de unidades ¿por qué no usas una función que se encargue de eso?

Algo como:

Function CONVERTIR_UNIDADES
LParameters tnCualConversion, tnUnidadOrigen
Local Resultado
 
  do case
    case tnCualConversion == 1     && De pulgadas a centímetros
      Resultado = tnUnidadOrigen * 2.54
    case tnCualConversion == 2     && De centímetros a pulgadas
      Resultado = tnUnidadOrigen / 2.54
      ....
  endcase

Return(Resultado)
*
*

Saludos.

Walter.

Ronny Solano

unread,
Apr 11, 2011, 12:23:11 PM4/11/11
to publice...@googlegroups.com
Gracias Fabricio me di una buena idea de lo que tengo que hacer.

Saludos!

-----Mensaje original-----
De: publice...@googlegroups.com
[mailto:publice...@googlegroups.com] En nombre de Fabricio
Enviado el: domingo, 10 de abril de 2011 07:56 p.m.
Para: Comunidad de Visual Foxpro en Español
Asunto: [vfp] Re: Sistema de coversion de unidades

marcelobu...@gmail.com

unread,
Apr 11, 2011, 12:44:45 PM4/11/11
to publice...@googlegroups.com
Hola Walter

Con el animo de mejorarnos unos a otros,
yo haria 2 comentarios sobre la funcion...

( Espero que no lo tomes a mal )

a ) El "==" en general deberia utilizarse para cadenas
    de caracteres, ya que numericamente hablando
    1 dificilmente se parezca a 2

b ) Siendo solamente 2 posibles valores de los
     parametros (1 o 2), yo utilizaria un IF en vez
     del CASE que generalmente se usa si son
     VARIAS las opciones

Dicho esto, el codigo quedaria asi:


Function CONVERTIR_UNIDADES
LParameters tnCualConversion, tnUnidadOrigen
Local Resultado
 
 IF tnCualConversion = 1     && De pulgadas a centímetros


      Resultado = tnUnidadOrigen * 2.54

ELSE     && De centímetros a pulgadas


      Resultado = tnUnidadOrigen / 2.54

ENDIF

Return(Resultado)

Saludos
MarceloBuenosAires
__________

Walter R. Ojeda Valiente

unread,
Apr 11, 2011, 1:07:07 PM4/11/11
to publice...@googlegroups.com
Hola Marcelo

Es cierto lo del ==, pero me acostumbré a usarlo siempre en todas las comparaciones.

En lo del DO CASE no tenés razón, porque en el ejemplo yo puse para convertir solamente 2 unidades y unos puntos suspensivos a continuación, significando con eso que hay muchas más unidades para convertir. Por ejemplo:
- Galones a litros y viceversa
- Libras a gramos y viceversa
- Pies a metros y viceversa
etc.

Se supone que si hace una función para convertir unidades, le debe servir para cualquier unidad.

Saludos.

Walter.

marcelobu...@gmail.com

unread,
Apr 11, 2011, 1:22:11 PM4/11/11
to publice...@googlegroups.com
Hola Walter

Ya habia pensado en eso

Por eso aclare... "Siendo SOLAMENTE 2 posibles valores..."

De cualquier manera, no creas que pretendo ser
mejor programador que vos...

Por eso te dije... "Espero que no lo tomes a mal"

Saludos
MarceloBuenosAires
_____________

Walter R. Ojeda Valiente

unread,
Apr 11, 2011, 1:46:04 PM4/11/11
to publice...@googlegroups.com
Hola Marcelo

En castellano, cuando se colocan puntos suspensivos después de una sentencia eso significa que continúa, es un equivalente a decir etcétera, sigue, continúa, hay más ítems, etc.

DO CASE
  CASE condición1
      acción1
  CASE condición2
      acción2
  ......
ENDCASE

Los puntos suspensivos después de "acción2" indican que hay más CASE. Por supuesto no puse todas las condiciones posibles porque no sé cuales él necesitaba y porque tampoco debo estar haciéndole todo el trabajo, ya le dí la idea, el resto corre por su cuenta.

Saludos.

Walter.

P.D.: No tengo algún complejo conque tú o alguien más sea mejor programador que yo, después de todo nadie lo sabe todo sobre todo. Y siempre se puede aprender algo de los demás.




Date: Mon, 11 Apr 2011 14:22:11 -0300
Subject: Re: [vfp] Re: Sistema de coversion de unidades
From: marcelobu...@gmail.com
To: publice...@googlegroups.com

marcelobu...@gmail.com

unread,
Apr 11, 2011, 1:53:06 PM4/11/11
to publice...@googlegroups.com
Hola Walter

Desde el Fox para DOS que
ya sabia lo de los puntos suspensivos...

Saludos
MarceloBuenosAires
_____________
Reply all
Reply to author
Forward
0 new messages