Table 250 Gen. Business Posting Group, source in 29
Source29
src/Layers/W1/BaseApp/Finance/GeneralLedger/Setup/GenBusinessPostingGroup.Table.al154 lines, Copyright (c) Microsoft Corporation. MIT
// ------------------------------------------------------------------------------------------------
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License. See License.txt in the project root for license information.
// ------------------------------------------------------------------------------------------------
namespace Microsoft.Finance.GeneralLedger.Setup;
using Microsoft.Finance.GeneralLedger.Account;
using Microsoft.Finance.VAT.Setup;
using Microsoft.Purchases.Vendor;
using Microsoft.Sales.Customer;
/// <summary>
/// Defines general business posting groups for transaction classification and G/L account assignment automation.
/// Controls default VAT business posting group assignment and automatic general posting setup creation.
/// </summary>
/// <remarks>
/// Used with general product posting groups to determine G/L account assignments through General Posting Setup matrix.
/// Integrates with customer, vendor, and G/L account master data for consistent posting group assignment.
/// Extensibility: OnValidateDefVATBusPostingGroupOnBeforeModifyGLAccount event for custom validation logic.
/// </remarks>
table 250 "Gen. Business Posting Group"
{
Caption = 'Gen. Business Posting Group';
DataCaptionFields = "Code", Description;
LookupPageID = "Gen. Business Posting Groups";
Permissions = tabledata "Gen. Business Posting Group" = r;
DataClassification = CustomerContent;
fields
{
/// <summary>
/// Unique identifier for the general business posting group used in transaction classification.
/// </summary>
field(1; "Code"; Code[20])
{
Caption = 'Code';
ToolTip = 'Specifies a code for the business group.';
NotBlank = true;
}
/// <summary>
/// Descriptive name for the general business posting group explaining its business purpose.
/// </summary>
field(2; Description; Text[100])
{
Caption = 'Description';
ToolTip = 'Specifies a description for the general business posting group.';
}
/// <summary>
/// Default VAT business posting group automatically assigned to customers, vendors, and G/L accounts using this general business posting group.
/// </summary>
field(3; "Def. VAT Bus. Posting Group"; Code[20])
{
Caption = 'Def. VAT Bus. Posting Group';
ToolTip = 'Specifies a default VAT business group code.';
TableRelation = "VAT Business Posting Group";
trigger OnValidate()
begin
if "Def. VAT Bus. Posting Group" <> xRec."Def. VAT Bus. Posting Group" then begin
GLAcc.SetCurrentKey("Gen. Bus. Posting Group");
GLAcc.SetRange("Gen. Bus. Posting Group", Code);
GLAcc.SetRange("VAT Bus. Posting Group", xRec."Def. VAT Bus. Posting Group");
if GLAcc.Find('-') then
repeat
GLAcc2 := GLAcc;
GLAcc2."VAT Bus. Posting Group" := "Def. VAT Bus. Posting Group";
OnValidateDefVATBusPostingGroupOnBeforeModifyGLAccount(Rec, GLAcc2);
GLAcc2.Modify();
until GLAcc.Next() = 0;
Cust.SetCurrentKey("Gen. Bus. Posting Group");
Cust.SetRange("Gen. Bus. Posting Group", Code);
Cust.SetRange("VAT Bus. Posting Group", xRec."Def. VAT Bus. Posting Group");
if Cust.Find('-') then
repeat
Cust2 := Cust;
Cust2."VAT Bus. Posting Group" := "Def. VAT Bus. Posting Group";
Cust2.Modify();
until Cust.Next() = 0;
Vend.SetCurrentKey("Gen. Bus. Posting Group");
Vend.SetRange("Gen. Bus. Posting Group", Code);
Vend.SetRange("VAT Bus. Posting Group", xRec."Def. VAT Bus. Posting Group");
if Vend.Find('-') then
repeat
Vend2 := Vend;
Vend2."VAT Bus. Posting Group" := "Def. VAT Bus. Posting Group";
Vend2.Modify();
until Vend.Next() = 0;
end;
end;
}
/// <summary>
/// Controls automatic creation of general posting setup records when this business posting group is combined with product posting groups.
/// </summary>
field(4; "Auto Insert Default"; Boolean)
{
Caption = 'Auto Insert Default';
ToolTip = 'Specifies whether to automatically insert the Def. VAT Bus. Posting Group when the corresponding Code is inserted on new customer and vendor cards.';
InitValue = true;
}
}
keys
{
key(Key1; "Code")
{
Clustered = true;
}
}
fieldgroups
{
fieldgroup(Brick; "Code", Description, "Def. VAT Bus. Posting Group")
{
}
}
var
GLAcc: Record "G/L Account";
GLAcc2: Record "G/L Account";
Cust: Record Customer;
Cust2: Record Customer;
Vend: Record Vendor;
Vend2: Record Vendor;
/// <summary>
/// Validates and retrieves general business posting group configuration for automatic posting setup creation.
/// </summary>
/// <param name="GenBusPostingGrp">General business posting group record to validate and populate</param>
/// <param name="EnteredGenBusPostingGroup">Business posting group code to validate</param>
/// <returns>True if auto insert default is enabled for the posting group, false otherwise</returns>
procedure ValidateVatBusPostingGroup(var GenBusPostingGrp: Record "Gen. Business Posting Group"; EnteredGenBusPostingGroup: Code[20]): Boolean
begin
if EnteredGenBusPostingGroup <> '' then
GenBusPostingGrp.Get(EnteredGenBusPostingGroup)
else
GenBusPostingGrp.Init();
exit(GenBusPostingGrp."Auto Insert Default");
end;
/// <summary>
/// Integration event raised before modifying G/L account VAT business posting group during default VAT posting group update.
/// Enables custom validation or modification logic for G/L account VAT posting group changes.
/// </summary>
/// <param name="Rec">General business posting group record being processed</param>
/// <param name="GLAccount">G/L account record being modified</param>
[IntegrationEvent(false, false)]
local procedure OnValidateDefVATBusPostingGroupOnBeforeModifyGLAccount(var Rec: Record "Gen. Business Posting Group"; var GLAccount: Record "G/L Account")
begin
end;
}