• Este debate tiene 5 respuestas, 2 mensajes y ha sido actualizado por última vez el hace 2 años, 1 mes por AvatarCristina Nicolàs.
Viendo 6 entradas - de la 1 a la 6 (de un total de 6)

Respuestas del foro


  • Javier Téllez Martín

    Buenos 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!!!!

    #5560
    Avatar
    Cristina Nicolàs
    Superadministrador
    Cristina Nicolàs

    Hola 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às

    #5561
    Javier Téllez Martín

    Buenas 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!!!

    #5562
    Avatar
    Cristina Nicolàs
    Superadministrador
    Cristina Nicolàs

    Hola 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às

    #5563
    Javier Téllez Martín

    Buenas 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

    #5564
    Avatar
    Cristina Nicolàs
    Superadministrador
    Cristina Nicolàs

    Hola 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

    #5566
Viendo 6 entradas - de la 1 a la 6 (de un total de 6)

Debe iniciar sesión para responder a este tema.