• Este debate tiene 6 respuestas, 2 mensajes y ha sido actualizado por última vez el hace 3 meses, 1 semana por Avataradministracion@riversa.es.
Viendo 7 entradas - de la 1 a la 7 (de un total de 7)

Respuestas del foro


  • administracion@riversa.es

    Buenas noches:

    Tengo una pagina que se abre aplicando una serie de filtros, montrando determinada información. Y he creado un grupo en la misma para mostrar el sumatorio de los valores de una columna en concreto. El valor de esta columna es un valor que calculo directamente al definir el campo

    field(«Total to Bill»; («Qty. Shipped Not Invoiced» * «Unit Price») – ((«Qty. Shipped Not Invoiced» * «Unit Price» * «Line Discount %») / 100))

    Es posible realizar el sumatorio directamente solo de las líneas que se muestran?? o alguna forma de obtener los filtros que tiene aplicada la página abierta?? o hacer un repeat solo de las líneas mostradas en la página?? sin tener que volver a aplicar los filtros que he utilizado para abrir la página.

    No se si me explico.

    Gracias,

     

    #1017466
    Avatar
    Joker
    Participante
    Joker

    No sé si te entiendo bien. Entiendo que tienes un repeater al que le has añadido una columna que has llamado «Total to Bill». Debajo de este repeater tienes otra página (no grupo) ¿que suma los valores de la columna «Total to Bill»? Con un pantallazo se entendrá mejor 🙂

    Los filtros la página los deberías de tener en el Rec.

    #1017484
    administracion@riversa.es

    Buenas noches:

    No me deja subir la imagen, he probado un png y jpg el tamaño no llega a 200kb pero da error.

    Intento explicarlo, la página que abro (filtrada) contiene varias columnas  y una de ellas es Total a facturar de cada línea. En la propia página he creado un grupo con un campo que es donde quiero mostrar la suma de los datos que se muestran en la página en la columna Total a facturar (es similar a páginas como las de diarios que están las líneas y al final tienes donde van sumando los saldos para ver si está cuadrada, o de un pedido donde tienes la líneas y al final está el importe de la base, iva y total)

    group(Control)
    {
    ShowCaption = false;
    field(«Sum Total to Bill»; SumLinesFields)
    {
    ApplicationArea = Basic, Suite;
    AutoFormatExpression = «Currency Code»;
    AutoFormatType = 1;
    Caption = ‘Total To Bill’;
    Editable = false;
    ToolTip = ‘Specifies the sum of the value in the Line Total to Bill field on all lines in the page.’, Comment = ‘ESP=»Especifica la suma del valor del campo Total a facturar de todas las líneas de la página.»‘;
    }
    }

     

    Lo de que los filtros los tengo en el Rec no lo entiendo bien.

    Ya podía haber una función que fuese sumar columna X y que se pudiera poner con valor del campo donde se quisiera mostrar 🙂

    Gracias,

    #1017518
    Avatar
    Joker
    Participante
    Joker

    Buenas, ahora ya te entiendo mejor 🙂

    Efectivamente el foro sigue sin ir bien, fallan cosas al querer insertar imágenes o links. Si te fijas tu post se corta algo a la derecha.

    Para abrir esa página con filtros me imagino que harás algo así:

    Record.SetRange(Id, 1);

    Page50100.SetRecord(Record);

    Page50100.SetView(Record);

    Page50100.Run(50150, Record);

    Por tanto, desde la función que tienes SumLinesFields puedes acceder a los filtros que tenga «la página» (el Rec es el que los tiene realmente) mediante Rec.GETFILTER o REC.GETFILTERS.

    Saludos

    #1017527
    administracion@riversa.es

    Buenas noches:

    Lo que no tengo claro es como hago para que cuando se abra la página me muestre el total en el campo del sumatorio.

    He probado a poner en el OnAfterGetRecord() el calculo

    SumLinesFields += (Rec.»Qty. Shipped Not Invoiced» * Rec.»Unit Price») – ((Rec.»Qty. Shipped Not Invoiced» * Rec.»Unit Price» * Rec.»Line Discount %») / 100);

    Pero me hace un calculo muy raro y recorre los registros y vuelve al primero, es decir, que si tengo 5 registros pasa por esos registros más otra vez el primero. Si pongo un message de la formular que utilizo me va mostrando los valores de cada línea (5 líneas) + nuevamente el de la primera línea.

    También tengo el problema de que si actualizo la página sigue sumando (mal), es decir, va incrementando el importe.

    He probado también en OnAfterGetCurrRecord(), pero aqui no consigo recorrer todos los registros. Si por ejemplo hay un Rec.count() me indica que tengo 5 registros, pero si en un for pongo un message(Rec.»Document No.») me repite varias veces el mismo número de documento.

    Gracias,

    #1017528
    Avatar
    Joker
    Participante
    Joker

    Buenas,

    Como yo lo haría sería algo así:

    SalesShipmentLine: Record «Sales Shipment Line»;

    SalesShipmentLine.CopyFilters(Rec);

    SalesShipmentLine.CalcSums(«Qty Shipped not invoiced», etc.);

    SumLinesFields := (SalesShipmentLine.»Qty shipped not invoiced» * SalesShipmentLine.»Unit price») – ….

    La función la deberías de tener en la tabla y llamarla desde la página.

    Saludos

    #1017533
    administracion@riversa.es

    Buenas noches:

    Después de muchas pruebas y de los comentarios que me has ido haciendo he conseguido hacerlo funcionar directamente en la página.

    En el OnAfterGetCurrRecord() he puesto el código que indico por si puede ayudar a alguien y por las pruebas que he realizado funciona correctamente y aunque se actualice la página el calculo se realiza correctamente.

    var
    SalesShipmentLine: Record «Sales Shipment Line»;

    begin
    //Función para calcular el total de la página
    SumLinesFields := 0;
    SalesShipmentLine.Reset();
    SalesShipmentLine.CopyFilters(Rec); // Copiamos los filtros de la página y los aplicamos

    if SalesShipmentLine.Find(‘-‘) then
    repeat
    SumLinesFields += (SalesShipmentLine.»Qty. Shipped Not Invoiced» * SalesShipmentLine.»Unit Price») – ((SalesShipmentLine.»Qty. Shipped Not Invoiced» * SalesShipmentLine.»Unit Price» * SalesShipmentLine.»Line Discount %») / 100);
    until SalesShipmentLine.Next() = 0;

    end;

    Gracias por la ayuda.

    #1017534
Viendo 7 entradas - de la 1 a la 7 (de un total de 7)

Debe iniciar sesión para responder a este tema.