Cuando se realiza una venta son varios los precios que más adelante nos interesará conocer:

  • El precio por el cual se vendió el producto
  • El precio de lista, o sea el precio al cual se debería haber vendido el producto
  • El precio de costo, que a su vez puede ser:
    • Promedio ponderado
    • FIFO
    • LIFO

Todos estos precios deben estar registrados o debe ser posible calcularlos para mostrarlos en los informes. Por ejemplo un informe de costos de ventas nos dirá el precio de venta del producto, el precio de costo, la diferencia en la moneda utilizada, y el porcentaje de ganancia. Eso implica que deberemos conocer el precio de venta y el precio de costo de cada producto en cada venta. Ejemplo: Precio de costo = 140, precio de venta = 200, diferencia = 60, porcentaje de ganancia = 42,86%

¿Cómo hacemos la registración?

Tenemos varias posibilidades:

  1. En nuestra tabla DETALLES_MOVIMIENTOS_VENTAS guardamos el precio de venta, el precio de lista, el precio de costo
  2. En una tabla PRECIOS_LISTA guardamos los precios a los cuales se deberían haber vendido los productos. Populamos esa tabla a través de un trigger que le inserta una fila cuando el precio de venta es distinto al precio de lista. En una tabla PRECIOS_COSTO guardamos los precios de costo de los productos, según el método que la empresa utiliza (Promedio ponderado, FIFO, LIFO) o mejor aún: guardamos los tres precios de costo porque eso hará más atrayente a nuestra aplicación. Los precios de costo solamente cambian cuando se realiza una compra o una devolución de productos al proveedor, no cambian cuando se realizan ventas u ocurren otras salidas (por robo, incendio, etc.)
  3. En una tabla CAMBIOS_PRECIOS_VENTA registramos los datos de cada cambio en el precio de venta de un producto (el identificador del producto, la fecha en que cambió su precio de venta, el nuevo precio de venta). En una tabla CAMBIOS_PRECIOS_COSTO registramos todos los datos de cada cambio en el precio de costo de un producto (el identificador del producto, la fecha en la cual cambió su precio de costo, el nuevo precio de costo).

¿Cuál es la mejor alternativa?

Eso ya depende de las circunstancias. La alternativa 1 es la que requiere de menos trabajo pero también es la que nos dará menor información. La alternativa 2 es la que menos espacio ocupará en el disco duro pero no siempre podremos saber cual era el precio de lista de un producto a una determinada fecha (por ejemplo: el precio de lista era de 100, después subió a 110, después subió a 120. Como no se hizo ni una venta de ese producto cuando su precio era de 110, no podremos saber que alguna vez ése fue su precio de venta). La alternativa 3 es la que requiere de más trabajo, las consultas serán un poco más lentas, pero en contrapartida será la que nos dará más información.

En una aplicación de alta gama deberíamos usar la alternativa 3 porque es la que sin dudas preferirán los gerentes, y como en ese caso dispondremos de servidores y de computadoras muy rápidas no habrá problemas con la velocidad.

Artículo relacionado:

El índice del blog Firebird21