SQL Server - Trigger para actualizar existencias con encabezado y detalle

   
Vista:

Trigger para actualizar existencias con encabezado y detalle

Publicado por Guadalupe (1 intervención) el 03/11/2015 20:46:19
hola que tal:

ojala que me puedan ayudar. necesito hacer un trigger en sql server para que cada que borre una preventa me actualice la existencia del producto. el problema es que no se como hacerlo ya que tengo que hacer referencia al almacen que esta en el encabezado de la venta.

la estructura de mis tablas es la siguiente:

EXISTENCIAS
idAlmacen
idProducto
Existencia


ENCPREVENTA
idPreventa
idAlmacen
Fecha


DETPREVENTA
idPreventa
idProducto
cantidad

Lo que quiero hacer en el trigger es que cada que borre una preventa me actualice la existencia sumando la cantidad que se dio de salida de cada uno de los producto y en el almacen correspondiente ya que puedo tener un mismo producto en varios almacenes. y el almacen me lo indica la tabla de ENCPREVENTA . ojala me puedan ayudar. Gracias!!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Isaias

Trigger para actualizar existencias con encabezado y detalle

Publicado por Isaias (3186 intervenciones) el 03/11/2015 22:55:56
A simple vista, estan mal diseñadas las relaciones, idAlmacen, NO DEBE estar ENCPREVENTA, ya que este, tiene un sin fin de productos (idProducto)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Trigger para actualizar existencias con encabezado y detalle

Publicado por Hugo QN (18 intervenciones) el 04/11/2015 20:06:00
Hola, como dice Isaias está mal dieseñada las tablas.
deberias diseñar mas o menos como esto.

- la tabla EXISTENCIAS donde guardas las existencias(stock) pero deberia haber 2 campos de cantidades (existenciareal y existenciapreventa) donde se va acumulando el total de preventas y cuando es depachado la preventa se descuenta la cantidad de venta (existenciareal - DETPREVENTA.cantidad) y (existenciapreventa - DETPREVENTA.cantidad) y si lo anulas ó eliminas la preventa solo haces (existenciapreventa - DETPREVENTA.cantidad).
- y la tabla DETPREVENTA debe incluir el idAlmacen y no la tabla ENCPREVENTA para saber de donde sale el producto de lo contrario la lógica sería más elaborado (si primer almacén existencia = 0 entonces descontar del almacen 2; si existencias del almacen 2 = 0 entonces descontar del siguiente. así sucesivamente).

yo para controlar las cantidades crearía 3 tablas.
1. tablas_almacenexistencia(idalmacen, idproducto, existencias)
2. tabla_existencias(idproducto, existenciareal, existenciapreventa)
3. tablas_detpreventa(idpreventa, idproducto, cantidad). ojo no lleva idalmacen

entonces aqui si puedo aplicar la lógica mas elaborado.

espero te sirva.

saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar