bcquality/custom/knowledge/architecture/cmfrt-buffer-table-api-pattern.good.al

33 lines
1.3 KiB
AL

page 55035 "CMFRT AQ FS JJL API"
{
PageType = API;
SourceTable = "CMFRT AQ FS JJL Buffer"; // buffer table, not Job Journal Line
trigger OnInsertRecord(BelowxRec: Boolean): Boolean
begin
// Side effects only; framework performs the default insert.
Rec.CMFRTAQFSLogIncomingRequest();
end;
}
codeunit 55038 "CMFRT AQ FS JJL Proc"
{
procedure CMFRTAQProcessPendingEntries()
var
JJLBuffer: Record "CMFRT AQ FS JJL Buffer";
JJLCreator: Codeunit "CMFRT AQ FS JJL Creator";
begin
JJLBuffer.SetRange("CMFRT AQ Status", "CMFRT AQ Buffer Status"::"CMFRT AQ Pending");
if JJLBuffer.FindSet(true) then
repeat
// Proc owns the error boundary: one bad row does not abort the batch.
if Codeunit.Run(Codeunit::"CMFRT AQ FS JJL Creator", JJLBuffer) then
JJLBuffer."CMFRT AQ Status" := "CMFRT AQ Buffer Status"::"CMFRT AQ Processed"
else begin
JJLBuffer."CMFRT AQ Status" := "CMFRT AQ Buffer Status"::"CMFRT AQ Error";
JJLBuffer."CMFRT AQ Error Message" := CopyStr(GetLastErrorText(), 1, MaxStrLen(JJLBuffer."CMFRT AQ Error Message"));
end;
JJLBuffer.Modify(true);
until JJLBuffer.Next() = 0;
end;
}