La pregunta que haces tiene que ver más bien con el diseño y casos de uso que con la programación. Te puedo poner un ejemplo basado en como lo manejan las grandes cadenas de venta al retail:
- Se tienen N productos
- Se tienen N proveedores
- Cada proveedor nos puede surtir algunos de los N productos que vendemos,
- Algunos productos nos los puede surtir mas de un proveedor
- Cada proveedor nos da un precio al cual le compramos sus productos (precio de costo)
- Nuestros productos los vendemos siempre a un mismo precio al público (precio de venta) sin importar cuanto nos costó comprarlo.
- Dependiendo del precio al que hayamos comprado y que vendamos será nuestra utilidad o ganancia
- Nuestro inventario siempre lo calculamos a precio de venta, es decir nuestro inventario en dinero sera igual a existencias por el precio de venta en ese momento
Con base en lo anterior:
El precio de venta lo podemos cambiar en cualquier momento pero tenemos que registrar el incremento o decremento en nuestro inventario en dinero.
Si un proveedor nos cambia sus precios y no corresponden con los que tenemos registrados, basta con hacer al aumento o disminución del inventario en costo que está entrando con nuestra compra, a saber:
Compramos 100 piezas a $80 para venderlas a $100. Nuestros costos son de $8,000 y nuestro inventario queda en $10,000, o sea una utilidad bruta de $200 (hasta que no se venda la última pieza no lograremos los $200).
Luego, compramos otras 100 piezas a otro proveedor ( o al mismo) que nos la vende a $90. A nuestros costos agregamos $9,000 y a nuestro inventario agregamos $10,000 ya que nuestro precio de venta sigue igual.
Entonces:
Compras $8,000
$9,000,
Total: $17,000
Inventario $20,000
Utilidad: $3,000
Cu
Cuando se venda la totalidad de las piezas obtendremos $3,000 de utilidad sin importar a que precio compramos cada artículo.
Es decir, no importa que precio tenga registrado por parte del proveedor en mi sistema, si registro mis aumentos o disminuciones al momento de dar entrada a mi inventario automáticamente ajusto el mismo a sus valores correctos y puedo obtener la utilidad real de cada artículo. Los precios que tengo registrados por parte del proveedor solo son una mera referencia y no deben jugar para nada al momento de afectar las cuentas del negocio.
Ahora bien, vamos a suponer que queremos variar el precio de venta, esto en automático nos va a cambiar el valor de nuestro inventario por lo que tenemos que hacer el ajuste en dinero del mismo ya sea con un aumento o disminución.
Supongamos el ejemplo anterior, nuestro inventario vale $20,000 (pensando que no ha tenido movimiento)
Entonces decidimos que ahora lo queremos vender no en $100 sino en $95, Hacemos la operacion de el total de piezas (200) por la diferencia de precio (-$5) y obtenemos que rebajeremos $1,000 a nuestro inventario en dinero, entonces en lugar de tener $20,000 ahora tenemos $19,000 la diferencia la comprobamos con un registro de "rebaja" por esa cantidad de manera que:
Compras $8,000
$9,000,
Total : $17,000
Inventario $20,000
Rebajas: -$ 1,000
Inventario: $19,000
Utilidad: $2,000
Como podemos darnos cuenta nuestra utilidad disminuyó. Si se hubieran subido precios de venta la utilidad aumenta. En ambos casos al ser ajustes siempre en función de la existencia que tengamos tendremos un valor real de nuestro inventario y una utlidad también real sin importar si contamos o no con listas de precios del proveedor.
Este esquema quita y limita problemas comunes con la mayoría de programas de gestión:
- No es posible dar entrada a artículos con precios de costo diferentes a los registrados en el sistema para un proveedor
- No es posible calcular cuanto vale el inventario dado que se utilizan esquemas contables rígidos
- No es posible cambiar precios de venta debido a que no se han recalculado costos en el inventario
- etc.