2010-08-12 11 views
5

En una aplicación de facturación, considere lo siguiente:¿Cómo manejar las fluctuaciones de precios en una aplicación de factura?

Tengo una tabla de productos que también contiene el precio del producto. Y luego tengo una factura y una tabla de facturas en línea y en cada línea de factura, me refiero a la identificación del producto junto con la cantidad. En este caso, no estoy almacenando el precio del producto con la línea de la factura.

Ahora, unos meses más tarde, si el precio del producto cambia, cualquier informe mostraría el volumen de las ventas basado en el precio actual en lugar del precio en que se vendió realmente el producto.

Una solución que me viene a la mente es que mantenemos una tabla separada llamada precios que vincula cada producto y cada vez que se cambia el precio del producto se inserta un registro en esta tabla de precios. El último registro en esta tabla siempre se considera como el precio actual de las nuevas facturas. Cada línea de factura indica su precio indicando la identificación del precio para que se muestre correctamente más adelante en los informes.

¿Cuáles son las mejores prácticas para manejar tales situaciones?

Respuesta

1

Agregue un campo de precio a la línea de la factura.

+0

Sí, de acuerdo. Almacenaba el precio actual del producto en la tabla del producto y el precio en el momento de la venta en la línea de la factura. – wadesworld

+0

También he estado haciendo esto por mucho tiempo Como tengo mesa de compra y mesa de ventas en ambos lugares, tengo que mantener el precio ... ¿Pero esta es la mejor manera de salir? –

5

Siempre almacenaré el nombre real, la cantidad y el precio en el momento de la compra contra cada artículo de pedido, desnormando efectivamente los datos. Una orden es instantánea en el tiempo y no debe relacionarse con algo que pueda cambiar. Los precios no solo pueden fluctuar, sino también, ¿qué sucede si elimina o cambia el nombre del producto original y su factura se relaciona con el mismo?

+0

puede elaborar con estructura db. –

1

Me volvería a repetir su sugerencia: Romper con precios en una tabla separada con estas columnas:

PriceId, ProductId, Precio, StartDate, EndDate.

De esta manera también puede planificar con anticipación para futuros cambios de precios. Los datos actuales se pueden obtener utilizando (sintaxis del servidor Sql):

SELECT * 
FROM Products 
    Inner Join Prices ON Products.ProductId = Prices.ProductId 
     And GetDate() Between StartDate and EndDate 
+0

Otra ventaja de este enfoque es que captura los cambios de precio que quizás nunca aparezcan en una factura. – bobs

Cuestiones relacionadas