- Este debate tiene 5 respuestas, 2 mensajes y ha sido actualizado por última vez el hace 8 años, 3 meses por
Cristina Nicolàs.
-
AutorEntradas
-
26 abril 2018 a las 10:19 #5560
Sol Gómez Nardinelli
ParticipanteBuenos días,
Tengo 2 campos calculados en la tabla 122 “hist cab fact venta”.
Estos campos son Importe Coste Base e Importe Descuento Factura.
En el caso de que el Importe Descuento Factura sea distinto de cero, quiero que se lo sume al campo Importe Coste Base.
Tengo varias dudas. La primera es si se pueden sumar 2 flowfields. Si es así, ¿Dónde debería crear está condición?
Ahora mismo he puesto el siguiente código en el ONInsert():
IF “Invoice Discount Amount” <> 0 THEN
“Importe Coste Base” := “Importe Coste Base” + ABS(“Invoice Discount Amount”);Muchas gracias!!!!
26 abril 2018 a las 10:28 #5561
Cristina NicolàsSuperadministradorHola Javier,
Si puedes sumar dos campos FlowField.
Pero precisamente porque son FlowFields, antes de hacer la suma recuerda calcularlos con la instrucción CALCFIELDS.Lo que no puedes hacer es asignar el resultado de esta suma al propio FlowField.
Se lo tendrías que asignar a otro campo o a una variable o a lo que sea en función de lo que quieras conseguir. Pero no al propio campo calculado.Un saludo,
Cristina Nicolàs26 abril 2018 a las 10:54 #5562Sol Gómez Nardinelli
ParticipanteBuenas de nuevo Cristina,
Mis 2 campos flowfields tienen una Calcformula creada en sus propiedades.
Por lo que me estás comentando, debería quitar la calcformula del campo “Importe Coste Base” y hacer el cálculo en código, no?
o asignar el valor que tiene ahora el importe coste base a una nueva variable y ya hacer la suma:
vNuevaImporteCosteBase := CALCFIELDS(“Importe Coste Base”);
VInvoiceDiscountAmount := CALCFIELDS(“Invoice Discount Amount”);IF “Invoice Discount Amount” <> 0 THEN
“Importe Coste Base” := vNuevaImporteCosteBase + ABS(vInvoiceDiscountAmount);
Muchas gracias!!!
26 abril 2018 a las 11:09 #5563
Cristina NicolàsSuperadministradorHola Javier,
No. Si “Importe Coste Base” es un flowfield no podrás asignarle un valor.
Tendría que ser:
CALCFIELDS(“Importe Coste Base”,Invoice Discount Amount”);
“Nuevo campo” := “Importe Coste Base” + ABS(“Invoice Discount Amount”);o
CALCFIELDS(“Importe Coste Base”,Invoice Discount Amount”);
variable := “Importe Coste Base” + ABS(“Invoice Discount Amount”);Un saludo,
Cristina Nicolàs26 abril 2018 a las 12:08 #5564Sol Gómez Nardinelli
ParticipanteBuenas Cristina,
Entendido.
Y para que me haga el cálculo y lo pueda ver en el histórico de facturas de compra, ¿tengo que poner el código en el ONInsert()?
Muchas gracias y perdona por ser tan pesado,
Javier
26 abril 2018 a las 13:35 #5566
Cristina NicolàsSuperadministradorHola Javier,
Depende… en el OnInsert() de la cabecera es posible que aun no existan las líneas y por tanto el FlowField devuelva 0 (si es que el FlowField es una suma de las líneas, que supongo que si).
Habría que revisar en qué orden se insertan los registros en la BBDD cuando se registra, porque tu cálculo lo quieres hacer cuando esté la cabecera y también las líneas.Y otra cosa que deberías tener en cuenta:
El resultado del FlowField puede cambiar en algún momento? Porque en este caso tendrás que actualizar tu suma.Un saludo,
Cristina Nicolàs -
AutorEntradas
- Debes estar registrado para responder a este debate.