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!