sumar 2 campos flowfields

Viendo 6 entradas - de la 1 a la 6 (de un total de 6)
  • Autor
    Entradas
  • #5560
    Sol Gómez Nardinelli
    Participante

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

    #5561
    Cristina Nicolàs
    Superadministrador

    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

    #5562
    Sol Gómez Nardinelli
    Participante

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

    #5563
    Cristina Nicolàs
    Superadministrador

    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

    #5564
    Sol Gómez Nardinelli
    Participante

    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

    #5566
    Cristina Nicolàs
    Superadministrador

    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

Viendo 6 entradas - de la 1 a la 6 (de un total de 6)
  • Debes estar registrado para responder a este debate.

10 cursos gratis, sin tarjeta

Accede a los cursos Gratis de Business Central

Instalación, ventas, fabricación y Power BI.

Acceso inmediato, sin límite de tiempo.