Additional Grouping Identifier

This is one of those blog posts that might mostly be for the hive mind and Googling.

When posting an invoice, Business Central will aggregate the sales G/L post based on identifiers. So if two sales lines generates the same G/L sales post, it will just be aggregated into one G/L Journal Line (and one G/L Ledger Entry)

In some cases, we’ll want to suspress that behavoir and in the old days, that would be a change to table 49, but now Microsoft have added a new field:


The Additional Grouping Identifier

The Additional Group Identifier is just a simple field, but part of the primary key, so if we add a unique value to that field, we’ll have disabled the aggregation.

Thankfully, there’s also an Event on table 49 we can subscribe to, called OnAfterInvPostBufferPrepareSales.

codeunit 50107 "Demo - Sales Buffer"
{
    [EventSubscriber(ObjectType::Table, 
                     Database::"Invoice Post. Buffer", 
                     'OnAfterInvPostBufferPrepareSales', 
                     '', true, true)]
    procedure MakeBufferUnique(var InvoicePostBuffer: 
                               Record "Invoice Post. Buffer";
                               var SalesLine: 
                               Record "Sales Line")
    begin
        // Use Sales Line line number to make buffer unique
        InvoicePostBuffer."Additional Grouping Identifier" := 
            format(SalesLine."Line No.", 0, 2);
    end;
}

What we’re doing is simple: Use the line number from the sales line as the Additional Group Identifier. This results in no aggregation in the G/L at all – Mission Completed!