GeneXus - Formulas que no recalculan hasta guardar los datos

   
Vista:

Formulas que no recalculan hasta guardar los datos

Publicado por Jose_ (8 intervenciones) el 04/09/2007 16:38:17
Hola, tengo la siguiente trn de 2 niveles (las formulas estan con *):

FacCod
FacFech
PacCod
PacNom
PacNif
FacUltACod
*FacBI16 sum(FacPVP, FacPIva = 16)
*FacBI7 sum(FacPVP, FacPIva = 7)
*FacBI4 sum(FacPVP, FacPIva = 4)
*FacIVA16 sum(FacIVA, FacPIva = 16)
*FacIVA7 sum(FacIVA, FacPIva = 7)
*FacIVA4 sum(FacIVA, FacPIva = 4)
*FacIVATotal FacIVA16+FacIVA7+FacIVA4
*FacBITotal FacBI16+FacBI7+FacBI4
*FacTotal FacBITotal + FacIVATotal
( ArtCod
ArtNom
FacPVP
FacPIVA
*FacIVA FacPVP * FacPIVA / 100
)

El problema, es que al introducir los datos, linea a linea en el
grid del nivel 2 (los artículos de la factura), no se van actualizando
las formulas del nivel 1, las BI y los IVA para los distintos tipos de IVA.
que son FacBI16, FacBI7, FacBI4 y FacIVA16, FacIVA7, FacIVA4. Las otras
tampoco se actualizan, pero supongo que dependerán de estas. Una vez
introducidos los datos, y guardados los cambios en la trn, al volver a abrirla
si calcula correctamente.

Resumiendo, que como puedo hacer, para que se vayan actualizando los totales
de la factura, segun se van metiendo las lineas de detalle.

Este esquema ya lo he usado con el generador de VB sin problemas.
Uso GX9 U4 y Java U3.

He probado a poner un refresh con un boton, pero no hace nada. Tampoco un
grid.refresh(). El atributo FacIVA del segundo nivel, si es redundante, pero
ninguno de los atributos formula del primer nivel lo es, porque no me lo
permite genexus.
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 Patricio Ojeda V

RE:Formulas que no recalculan hasta guardar los da

Publicado por Patricio Ojeda V (454 intervenciones) el 04/09/2007 20:34:23
Jose,

No me quedo claro si:

1.- ¿Las formulas las tienes definidas en la estructura de la Trn? o
2.- ¿Son formulas que estan en las reglas? o
3.- ¿Tienes formulas en la estructura y en las rules?
3.- ¿Estas entrando con algun modo a la Trn?

Saludos

Patricio Ojeda V
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

RE:Formulas que no recalculan hasta guardar los da

Publicado por Jose_ (8 intervenciones) el 05/09/2007 08:11:29
Patricio, muchas gracias por responder tan rapido.

Las formulas estan definidas en la trn, no quedo muy bien pasteado en el primer post:

Primer Nivel:

*FacBI16 -> sum(FacPVP, FacPIva = 16)
*FacBI7 -> sum(FacPVP, FacPIva = 7)
*FacBI4 -> sum(FacPVP, FacPIva = 4)
*FacIVA16 -> sum(FacIVA, FacPIva = 16)
*FacIVA7 -> sum(FacIVA, FacPIva = 7)
*FacIVA4 -> sum(FacIVA, FacPIva = 4)

*FacIVATotal -> FacIVA16+FacIVA7+FacIVA4
*FacBITotal -> FacBI16+FacBI7+FacBI4
*FacTotal -> FacBITotal + FacIVATotal

Segundo nivel:

*FacIVA -> FacPVP * FacPIVA / 100
FacPVP
FacPIva

Estan definidas en la trn, no estan definidas como reglas, porque como ves hay varias formulas sum.

En cuanto al modo, sucede lo mismo entrando con UPD o INS. El problema es que mientras voy insertando los datos en el grid, no se actualizan las formulas de la factura, solo cuando le doy a aceptar y vuelvo a entrar en la trn.

Saludos, y gracias.
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
Imágen de perfil de Patricio Ojeda V

RE:Formulas que no recalculan hasta guardar los da

Publicado por Patricio Ojeda V (454 intervenciones) el 05/09/2007 20:49:19
Jose,

A mi me ha pasado muchas veces lo mismo, he tenido formulas Sum(atributo) que no funcionan a la hora de entrar a la Trn a actualizar o insertar nuevos registros, y he perdido mucho tiempo buscando la solucion.

Sin embargo, con el paso del tiempo me he dado cuenta de variadas cosas, como por ejemplo:

* Tratar de defnir las formulas en las Rules y no en la estructura de la Trn (no siempre obviamente), ya que con ello consigues poder 'FORZAR' la formula a que se ejecute en un determinado momento o condicion, o al llenar o pasar por cierto atributo: Ej.:

FCNeto = round((FCTotalDetalle3 - FCExento)/(1+(PorIvaFC/100)),0) if FCImpto=1 and (after(FCImpto) or after(FCTotalDetalle3));

FCNeto = (FCTotalDetalle3 - FCExento) if FCImpto=0 or after(FCImpto) or after(FCTotalDetalle3);

---Si bien es cierto te ahorras un campo en la BD a la hora de definir una formula, esto a veces te limita ya que no puedes forzar a que la formula se ejecute cuando tu necesites con un simple if after(atributo).... tambien tienes que pensar que en los reportes cuando tienes formulas van a ser mas lentos, ya que todas estas formulas se calculan en tiempo de ejecucion, no asi cuando tienes el valor guardado en la BD, ya que solo se imprime el valor de este---

*Existen (a veces) formulas que no se ejecutan cuando uno de los atributos que se utiliza en la formula no tiene valor asignado, y éste esta definido que NO admita valores nulos en la Trn. O sea, si entras a la Trn con algun modo y ese atributo no tiene valor, la formula no se ejecuta ya que la aplicacion queda como esperando un valor para ese atributo, y al no tener valor, simplemente la formula no se ejecuta. En este caso es conveniente definir los atributos que SI admitan valores nulos para que la formula se ejecute.

Estas son tan solo algunas de las cosas que me he dado cuenta, y en conclusion, te recomendaria que replantearas la estructura de tu Trn, y ver en cuales atributos es recomendable tener la formula en las rules y no en la estructura ***Excepto los SUM(atributo)*** para poder manejar de mejor manera el refresco de estas....

Saludos y suerte...

Patricio Ojeda V
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

RE:Formulas que no recalculan hasta guardar los da

Publicado por Jose_ (8 intervenciones) el 05/09/2007 21:25:45
Hola Patricio,

Muchas gracias por tu respuesta tan completa, esta de 10. Ya anoto los consejos sobre null y las rules, y ahi voy a ver que puedo hacer. Esto de las formulas usando SUM, la verdad es que si es problemático, he leido en algun sitio que con Rocha, se ha avanzado mucho en el aspecto de las formulas, esperemos que nos quede poco por sufrir.

Saludos cordiales y gracias,

Jose Castillo.
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
Imágen de perfil de Patricio Ojeda V

RE:Formulas que no recalculan hasta guardar los da

Publicado por Patricio Ojeda V (454 intervenciones) el 05/09/2007 22:39:19
De nada,

Cualquier duda o problema que tengas lo comentas y aca te trataremos de ayudar...

Saludos

P.D.: Si estas muy complicado con este tema, si quieres agregas este mail a tu MSN para que te comente mejor lo que te dije en el punto anterior...
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

RE:Formulas que no recalculan hasta guardar los da

Publicado por Maria (1 intervención) el 08/04/2010 03:36:34
Hola Patricio, como estas?
Estoy teniendo el mismo problema que José y quisiera saber si en este tiempo pasado desde la consulta has encontrado alguna otra solución a este tipo de problema. Agradecida desde ya.
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

RE:Formulas que no recalculan hasta guardar los da

Publicado por fuan (13 intervenciones) el 10/05/2011 22:39:34
Hola Patricio, tengo el mismo problema pero preciso utilizar ""SUM(Attr)"" . si no puedo forzar a que la formula recalcule? de que otra forma lo puedo solucionar q no sea guardando los cambios de la trn?

Saludos y Gracias.
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

RE:Formulas que no recalculan hasta guardar los da

Publicado por Brian Andres (4 intervenciones) el 30/09/2016 06:56:49
Buena noche

Alguien me puede ayudar, lo que pasa es que tengo el mismo problema que los atributos tipo formula no me actualizan y pues leyendo la respuesta de patricio disidi utilizar variables que se actualizan correctamente y al confirmar la trn queda el valor en la variable no como los atributos tipo formula que al confirmar la TRN los valores calculados se borran.

Ahora el problema esta con la variable dado a que si ingreso el valor en una linea del detalle me actualiza la información pero lo que no hace es el SUM de todos los valores de la grilla sino que solo me muestra el valor del ultimo valor ingresado en el detalle. En el momento estoy utilizando el pattern WorkWithPlus y Genexus Ev3 U6.

la reglas que he utilizado para probar son estas


&TotalDebito = sum(CTASCOMPROBDDDr) If After(CTASCOMPROBDDDr);
&TotalDebito = sum(CTASCOMPROBDDDr) If After(CTASCOMPROBDDDr) or After(Confirm);
&TotalDebito = sum(CTASCOMPROBDDDr) on BeforeValidate level CTASCOMPROBDDDr;

Esto es de suma urgencia dado a que tengo poco tiempo para entregar la pantalla, adjunto imagen del problema

muchas gracias
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