Buenos dias, a ver si podeis ayudarme con esto porque me esta volviendo loco, he creado 3 campos en la tabla VTA FAC para controlar cuando esta la factura totalmente pagada para sacar las comisiones del comercial,
uno es booleano y se pone a 1 cuando el total de la factura es igual al importe total cobrado, y funciona correctamente.
los otros dos campos controlo el total cobrado y la cantidad de vencimientos,
estos dos ultimos campos se actualizan desde la tabla de vencimientos con una actualizacion, para ambos campos tienen como condicion que el #EST=“C” y el campo de num vto me acumula 1 y el del total cobrado me acumula el campo #IMP_COB, OK todo funciona correctamente me pone el booleano a 1 cuando todo esta cobrado y todo perfecto.
PEEEEROOOOOO si por el motivo que sea elimino la operacion de cobro del vencimiento en el campo que he creado en la tabla de facturas #IMP_COB_VTO no me funciona correctamente.
por ejemplo una factura de 150 € con 3 vencimientos
cobro 2 vencimientos y quedaria con IMP_COB_VTO = 100
elimino 1 cobro de vencimiento para que quede sin cobrar y deberia de quedar IMP_COB_VTO = 50 NO¿? pues no se pone a 0 y si elimino el otro cobro se va a IMP_COB_VTO= -100 o sea cuando actualiza lo hace bien y cuando en teoria se elimina esa actualizacion me quita el doble SIEMPRE.
y solo en ese campo, el campo de #NUM_VTO funciona correctamente +1 y -1
Gracias
Idem de lienzo con vERP.
A mi me acumula el doble del importe cobrado / anulado en la factura de venta.
En la tabla VTA_FAC_G he creado un el campo IMP_COB como tu campo IMP_COB_VTO.
En la tabla VTO_COB_C una actualización hacia VTA_FAC_G que acumula el campo IMP_COB de esta tabla sobre aquella. Pero acumula el doble y resta el doble. Estaba por dividir entre dos pero lo mismo se me lía con los decimales y sin conocer porqué sucede sería una locura.
También estaba pensando que lo mismo hay que lanzar la actualización desde la tabla COB_C (operaciones de cobro). Pero tendría que añadirle enlace a la tabla VTA_FAC_G.
Como condición para acumular he puesto (! #VTA_FAC_G:IsEmpty).
También probé sin condición pero dobla igual el importe. Y es curioso que si la condición se cumple suma pero si no se cumple resta.
Creía que sólo sumaba bajo la condición al crear el registro o al darlo de baja pero me parece que no es esa la idea. Si el registro de VTO_COB_C se actualiza dos veces desde la tabla de COB_C o una vez desde COB_C y otra por otro camino, sumará el importe cada ocasión porque la condición no lo impide.
Voy a consultar la larga lista de ejemplos que a buen seguro ofrece la documentación de Velneo, pues este tema es muy importante.
¿Lo solucionaste?
En la documentación de Velneo dice:
“Por ejemplo si condicionamos una actualización del nº de líneas recibidas de un pedido a que la línea esté recibida o cancelada, cuando se cumple la condición se suma 1 al campo de la tabla maestra, sin embargo, al cambiar la condición si ya no se cumple se resta 1.”
Pues no sé qué significa porque en las tablas de vERP hay una condición para actualizar las estadísticas de importes de vencimientos cobrados (EST_COB_PAG) por meses con la condición #MES=01 para acumular a Enero el importe cobrado y según esa explicación, restaría el importe a los demás campos, es decir sería un desastre, y eso no sucede.
Símplemente suma bajo esa condición pero … no sé cual será la circunstancia que cambia el signo de la operación durante la actualización.
Buenos dias Carlos, yo lo intente de todas las formas por actualizacion y da igual, a mi me hacia algo parecido como puedes ver arriba,
yo lo logre solucionar por codigo,
en el altenador VTO_COB_C_VTA_FAC - insertado en el formulario de cobros de la factura VTA_FAC_G_COB - modifique el codigo del manejador de eventos COB quedando de la siguiente manera,
VTO_COB_C_VTA_FAC.pdf (27,8 KB)
en mi caso cree una variable que se llama ZZZ_IMP_COB_VTO en la que capturo el campo IMP_PDT_COB, Y modifico la ficha de maestro VTA_FAC.
hay que hacer exactamente lo mismo con el altenador VTO_COB_C en el formulario VTO_COB_C_MEN
te adjunto el codigo del manejador COB
VTO_COB_C.pdf (27,8 KB)
con esto me actualiza el campo en VTA FAC cuando realizo el cobro por cualquiera de los dos lados, tanto desde facturas pestaña cobros, como desde los vencimientos a cobrar en tesoreria.
para descontar lo cobrado cuando elimino una operacion de cobro lo hice tambien desde codigo en el manejador de evento BTN_SUP en el formulario COB_C de las operaciones de cobro.
adjunto codigo
COB_C.pdf (20,0 KB)
Espero te sirva de ayuda para realizar lo que quieres seguro hay mejores formas pero esta a mi me funciona bien.
un saludo
por comentar tambien que en mi caso y por ACTUALIZACION me suma 1 en cantidad de vencimientos cobrados cada vez que realizo un cobro y me lo resta si elimino la operacion de cobro. y ese campo que tambien esta en la tabla de VTA FAC igual que el otro si que me funciona correctamente y sin errores ni negativos ni duplicidades como en el caso del total cobrado.
Stranger Things in Velneo
“Stranger Things” aunque … “poca broma” con el colesterol del Life=Soft cuando se atasca.
Gracias por compartir tu solución.
Acostumbro a desarrollar las formas más complicadas de programación que me permite mi cerebro y, aunque no es mucho, me ponen muy nervioso los trozos de código repetidos en diferentes lugares: cuando puedo los unifico y cuando no puedo, trato de REMark carlos.
Dicho eso, que no sé pa’qué lo digo, reconozco haberlo solucionado ayer a lo mecagüen. Cada vez que se modifica un registro de VTO_COB_C, cambio un booleano en VTA_FAC_G (que me costó hacerlo cambiar porque no quiere el lenguaje nativo según qué cosas). Eso dispara el trigger de modificaciones de VTA_FAC_G que recorre todos los vencimientos existentes sumando los importes y a continuación en función de ellos decido si está o no pendiente la factura.
Eso sí lo pone la documentación: No hacer actualizaciones encadenadas largas.
Pues no he hecho caso: COB_C a VTO_COB_C y VTO_COB_C a VTA_FAC_G. ya veremos qué pasa y si no me toca hacer un “Regreso al futuro” .
(Status line updated: td2010 code files downloaded, for if the flys)
Pregunta, ¿Este comportamiento es reciente? mi aplicación hace poco me acaba de hacer algo similar, por un momento pensé que fue por unas modificaciones que había hecho al rededor, pero ahora que leo esto me ha entrado un miedo a que sea culpa de Velneo y vaya a comenzar a dar problemas.
Pero … ¿ a ti se te cierra vDevelop o vClient ?
Es decir
¿ Mientras ejecutas la aplicación se te cierra vClient o mientras editas se te cierra vDevelop. ?
Y no. No es reciente que vDevelop se cierra en determinadas circunstancias. Como dice td2010 casi siempre, sino siempre, es al borrar un trozo de código o un objeto u objetos.
Creo que se nos cruzaron los cables, en cuanto a lo del vDevelop que se cierra, pues eso, es en vDevelop, que aunque no me pasa tan seguido si he visto que me ha pasado más desde que instalé la versión 30.1.
Y con respecto a lo de la actualización de campos, pues ahí si es al ejecutar la aplicación con el vClient…