- Este debate tiene 6 respuestas, 2 mensajes y ha sido actualizado por última vez el hace 3 años, 4 meses por
administracion@riversa.es.
Sumar valores columna página filtrada
-
administracion@riversa.esParticipanteadministracion@riversa.esBuenas 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,
9 julio 2020 a las 00:35 #1017466
JokerParticipanteJokerNo 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.
9 julio 2020 a las 19:41 #1017484
administracion@riversa.esParticipanteadministracion@riversa.esBuenas 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,
12 julio 2020 a las 23:49 #1017518
JokerParticipanteJokerBuenas, 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
13 julio 2020 a las 22:32 #1017527
administracion@riversa.esParticipanteadministracion@riversa.esBuenas 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,
14 julio 2020 a las 00:54 #1017528
JokerParticipanteJokerBuenas,
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
14 julio 2020 a las 22:53 #1017533
administracion@riversa.esParticipanteadministracion@riversa.esBuenas 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 aplicamosif 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.
15 julio 2020 a las 00:14 #1017534
Debe iniciar sesión para responder a este tema.