Problema con actualización


([N4] gontorre) #1

Buenos días a todos

Tengo un problema con una actualización y por más vueltas que le doy no logro ver el problema. Os cuento el caso para ver si me podéis echar una mano.

Tengo una tabla ARTICULO y otra EXISTENCIA en donde se guardan los stocks del artículo en cada almacén. En la tabla EXISTENCIA tengo una actualización para acumular el stock total de algunos almacenes (por ejemplo, el almacén del servicio técnico no quiero acumularlo).

Desde la tabla de DETALLE actualizo el stock en EXISTENCIA cuando sirvo un documento. Esto funciona. Pero en algunos casos no me actualiza el acumulado en ARTICULO. En concreto, no me lo actualiza cuando es una entrada de material. Cuando es una salida de material o si modifico desde vDataClient hace la actualización de forma correcta.


([N4] gontorre) #2

Como no sube las imagenes a la primera, las subo ahora.

El problema se produce cuando se pasa por el if(#DOCUMENTO.TIPODOC.TIPO=“S”)

Gracias de antemano




([N3] pacosatu) #3

Hola gontorre.

Ver código así a lo bruto y sin tener más detalles es dificil de dar con el problema.

A falta de otra cosa, no creo que sea difícil de detectar el fallo si pones un Log en el Trigger de las tablas afectadas para comprobar los datos antes y después de la Actualización.

Saludos
Paco Satué


([N4] gontorre) #4

Después de probar todo lo que se me ocurría creo que he detectado el problema.

Resulta que la tabla DETALLE también hace una actualización en ARTICULO (en un campo distinto al que me daba el problema). Así que DETALLE actualiza ARTICULO y DETALLE actualiza EXISTENCIA que a su vez actualiza ARTICULO.

Si elimino la actualización de DETALLE a ARTICULO, funciona todo.

¿Puede ser que una actualización bloquee a otra?

Gracias


([N1] aztecmexico) #5

Hola, más que bloquear puedes duplicar, hay que tener mucho cuidado y no actualizar lo mismo más de una vez desde distintos puntos, me ha sucedido eso y pues es un descuido de mi parte que me saco un buen susto.

Tengo muchas actualizaciones que parten de una misma, con diferentes componentes hacia distintos campos y funcionan perfecto, no he tenido problemas de bloqueos entre ellas.

Saludos.


([N4] gontorre) #6

Buenas tardes aztecmexico,

Lo que me extraña es que lo que actualizo son campos distintos. Desde DETALLE actualizo la cantidad pendiente de llegar y desde EXISTENCIA el stock total. En teoría debería funcionar, ya que son campos distintos, pero el caso es que haciendo pruebas si mantengo las dos actualizaciones no me lo hace bien.

Haré alguna prueba más y si no doy con ello haré todas las actualizaciones pasando por EXISTENCIA. Así DETALLE actualiza EXISTENCIA y EXISTENCIA actualiza ARTICULO.

Gracias a todos por las pistas.


([N1] wikan) #7

Buenas @gontorre,
a mi me pasaba exactamente lo mismo. En las compras también, desde las líneas actualizaba el coste del artículo y desde existencias acumulaba el stock global.
Si te fijas en la trasacción del vAdmin verás que modifica dos veces el artículo, pero la segunda…no modifica.


([N4] gontorre) #8

Hola wikan,

Efectivamente, en la transacción de vAdmin veo que modifica el artículo, pero en realidad no hace nada. ¿Lograste solucionarlo de alguna forma en tu caso?

Voy a pasar la consulta a soporte a ver que me dicen

Un saludo


([N1] wikan) #9

@gontorre de memoria ahora te mentiría, creo que al final, como era una acumulado de todas las existencias de cada almacén. Meti en el trigger posterior a alta/modificación, cargar los plurales de existencias del artículo y modificar la ficha del artículo desde ese trigger.


([N4] gontorre) #10

Copia la respuesta de soporte por si le puede servir a alguien:

Estimado cliente:
Debe tener en cuenta que al efectuar la actualización de EXISTENCIA a ARTICULO estará bloqueada la ficha del artículo cuando se ejecute la actualización DETALLE a EXISTENCIA, de ahí que no se realice.
Podría probar a hacer una actualización de DETALLE a ARTICULO, o incluso hacerlo mediante un trigger consultando el artículo e incrementar su valor.
Le recomendaría la lectura de por si existe la posibilidad de que fuese otra causa.
Si tienes dudas o quieres realizar cualquier otra consulta, estaremos encantados de atenderte.