Hi, Readers.
Today I would like to talk about a basic requirement, how to add new fields to Total Area on the Document Subform page.
Let’s take a look at Sales Order. The totals fields under the lines are automatically updated as you create or modify lines to display the amounts that will be posted to the ledgers. However, the standard Business Central only provides fields related to the amount. If we want to view such as total quantity and number of lines, can we customize it?
Yes, of course. First of all, we need to note that this Total Area is not on the Sales Order page, but on the Sales Order Subform (46, ListPart) page.
Let’s see a specific example. Add Total Quantity and Number of Lines on the Sales Order, and need to be updated automatically just like other totals fields.
The following is just a situation, for reference only.
1. Add new fields to the page, only the variables is needed here.
2. Add logic for automatic calculation.
3. Execute the automatic calculation logic in the required trigger.
Publish to the environment.
Test Video:
Source Code:
pageextension 50114 ZYSalesOrderSubformExt extends "Sales Order Subform"
{
layout
{
addlast(Control28)
{
field(TotalQuantity; TotalQuantity)
{
Caption = 'Total Quantity';
ApplicationArea = All;
Editable = false;
}
field(NumberOfLines; NumberOfLines)
{
Caption = 'Number Of Lines';
ApplicationArea = All;
Editable = false;
}
}
modify(Quantity)
{
trigger OnAfterValidate()
begin
UpdateTotalQtyAndNumberOfLines();
end;
}
}
trigger OnAfterGetCurrRecord()
begin
UpdateTotalQtyAndNumberOfLines();
end;
trigger OnInsertRecord(BelowxRec: Boolean): Boolean
begin
UpdateTotalQtyAndNumberOfLines();
end;
trigger OnDeleteRecord(): Boolean
begin
UpdateTotalQtyAndNumberOfLines();
end;
var
TotalQuantity: Decimal;
NumberOfLines: Integer;
procedure UpdateTotalQtyAndNumberOfLines()
var
SalesLine: Record "Sales Line";
begin
TotalQuantity := 0;
NumberOfLines := 0;
SalesLine.Reset();
SalesLine.CopyFilters(Rec);
SalesLine.CalcSums(Quantity);
TotalQuantity := SalesLine.Quantity;
NumberOfLines := SalesLine.Count;
end;
}
PS: We also discussed how to calculate and display the total amount or quantity of selected lines on the list page before.
END
Hope this will help.
Thanks for reading.
ZHU
コメント