Report 85 Copy - VAT Posting Setup, source in 29
Source29
src/Layers/W1/BaseApp/Finance/VAT/Setup/CopyVATPostingSetup.Report.al241 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.VAT.Setup;
using System.Utilities;
#pragma warning disable AS0106 // Protected variable Adv was removed before AS0106 was introduced.
/// <summary>
/// Copies VAT posting setup configuration from one setup combination to multiple target combinations.
/// Enables bulk configuration of VAT posting setups with consistent settings across multiple business/product posting groups.
/// </summary>
/// <remarks>
/// Key functionality: Copies VAT percentages, account assignments, and calculation settings between VAT posting setups.
/// Usage scenarios: Initial VAT setup, mass updates to VAT configuration, standardizing VAT settings.
/// Extensibility: Integration events for custom copy logic and validation rules.
/// </remarks>
report 85 "Copy - VAT Posting Setup"
#pragma warning restore AS0106
{
Caption = 'Copy - VAT Posting Setup';
ProcessingOnly = true;
dataset
{
dataitem("VAT Posting Setup"; "VAT Posting Setup")
{
DataItemTableView = sorting("VAT Bus. Posting Group", "VAT Prod. Posting Group");
trigger OnAfterGetRecord()
var
ConfirmManagement: Codeunit "Confirm Management";
IsHandled: Boolean;
begin
VATPostingSetup.Find();
if VATSetup then begin
"VAT Calculation Type" := VATPostingSetup."VAT Calculation Type";
IsHandled := false;
OnBeforeSetVatPercent("VAT Posting Setup", IsHandled);
if not IsHandled then
"VAT %" := VATPostingSetup."VAT %";
"Unrealized VAT Type" := VATPostingSetup."Unrealized VAT Type";
"Adjust for Payment Discount" := VATPostingSetup."Adjust for Payment Discount";
"VAT Identifier" := VATPostingSetup."VAT Identifier";
end;
if Sales then begin
"Sales VAT Account" := VATPostingSetup."Sales VAT Account";
"Sales VAT Unreal. Account" := VATPostingSetup."Sales VAT Unreal. Account";
end;
if Purch then begin
"Purchase VAT Account" := VATPostingSetup."Purchase VAT Account";
"Purch. VAT Unreal. Account" := VATPostingSetup."Purch. VAT Unreal. Account";
"Reverse Chrg. VAT Acc." := VATPostingSetup."Reverse Chrg. VAT Acc.";
"Reverse Chrg. VAT Unreal. Acc." := VATPostingSetup."Reverse Chrg. VAT Unreal. Acc.";
end;
OnAfterCopyVATPostingSetup("VAT Posting Setup", VATPostingSetup, Sales, Purch, VATSetup);
if ConfirmManagement.GetResponseOrDefault(Text000, true) then begin
OnBeforeModifyVatPostingSetup(VATPostingSetup, UseVATPostingSetup, VATSetup);
Modify();
end;
end;
trigger OnPreDataItem()
begin
SetRange("VAT Bus. Posting Group", UseVATPostingSetup."VAT Bus. Posting Group");
SetRange("VAT Prod. Posting Group", UseVATPostingSetup."VAT Prod. Posting Group");
end;
}
}
requestpage
{
SaveValues = true;
layout
{
area(content)
{
group(Options)
{
Caption = 'Options';
field(VATBusPostingGroup; VATPostingSetup."VAT Bus. Posting Group")
{
ApplicationArea = Basic, Suite;
Caption = 'VAT Bus. Posting Group';
TableRelation = "VAT Business Posting Group";
ToolTip = 'Specifies the VAT business posting group to copy from.';
}
field(VATProdPostingGroup; VATPostingSetup."VAT Prod. Posting Group")
{
ApplicationArea = Basic, Suite;
Caption = 'VAT Prod. Posting Group';
TableRelation = "VAT Product Posting Group";
ToolTip = 'Specifies the VAT product posting group to copy from.';
}
field(Copy; Selection)
{
ApplicationArea = Basic, Suite;
Caption = 'Copy';
OptionCaption = 'All fields,Selected fields';
ToolTip = 'Specifies if all fields or only selected fields are copied.';
trigger OnValidate()
begin
if Selection = Selection::"All fields" then
AllfieldsSelectionOnValidate();
end;
}
field(VATetc; VATSetup)
{
ApplicationArea = Basic, Suite;
Caption = 'VAT % etc.';
ToolTip = 'Specifies if you want to copy the VAT rate.';
trigger OnValidate()
begin
Selection := Selection::"Selected fields";
end;
}
field(SalesAccounts; Sales)
{
ApplicationArea = Basic, Suite;
Caption = 'Sales Accounts';
ToolTip = 'Specifies if you want to copy the sales VAT accounts.';
trigger OnValidate()
begin
Selection := Selection::"Selected fields";
end;
}
field(PurchaseAccounts; Purch)
{
ApplicationArea = Basic, Suite;
Caption = 'Purchase Accounts';
ToolTip = 'Specifies if you want to copy the purchase VAT accounts.';
trigger OnValidate()
begin
Selection := Selection::"Selected fields";
end;
}
}
}
}
actions
{
}
trigger OnOpenPage()
begin
if Selection = Selection::"All fields" then begin
VATSetup := true;
Sales := true;
Purch := true;
end;
end;
}
labels
{
}
var
#pragma warning disable AA0074
Text000: Label 'Copy VAT Posting Setup?';
#pragma warning restore AA0074
protected var
UseVATPostingSetup: Record "VAT Posting Setup";
VATPostingSetup: Record "VAT Posting Setup";
VATSetup: Boolean;
Sales: Boolean;
Purch: Boolean;
Selection: Option "All fields","Selected fields";
/// <summary>
/// Sets the source VAT posting setup record to copy settings from during the copy operation.
/// </summary>
/// <param name="VATPostingSetup2">Source VAT posting setup record containing settings to copy</param>
procedure SetVATSetup(VATPostingSetup2: Record "VAT Posting Setup")
begin
UseVATPostingSetup := VATPostingSetup2;
end;
local procedure AllfieldsSelectionOnPush()
begin
VATSetup := true;
Sales := true;
Purch := true;
end;
local procedure AllfieldsSelectionOnValidate()
begin
AllfieldsSelectionOnPush();
end;
/// <summary>
/// Integration event raised after copying VAT posting setup to allow custom field updates and validation.
/// Enables extensions to copy additional fields or perform post-copy processing logic.
/// </summary>
/// <param name="VATPostingSetup">Target VAT posting setup record after copy operation</param>
/// <param name="FromVATPostingSetup">Source VAT posting setup record that was copied from</param>
/// <param name="Sales">Whether sales VAT settings were copied</param>
/// <param name="Purch">Whether purchase VAT settings were copied</param>
/// <param name="VATSetup">Whether VAT calculation settings were copied</param>
[IntegrationEvent(false, false)]
local procedure OnAfterCopyVATPostingSetup(var VATPostingSetup: Record "VAT Posting Setup"; FromVATPostingSetup: Record "VAT Posting Setup"; Sales: Boolean; Purch: Boolean; VATSetup: Boolean)
begin
end;
/// <summary>
/// Integration event raised before setting VAT percentage to allow custom VAT percentage logic.
/// Enables extensions to override standard VAT percentage assignment during copy operations.
/// </summary>
/// <param name="VATPostingSetup">VAT posting setup record being updated</param>
/// <param name="IsHandled">Set to true to skip standard VAT percentage assignment</param>
[IntegrationEvent(false, false)]
local procedure OnBeforeSetVatPercent(var VATPostingSetup: Record "VAT Posting Setup"; var IsHandled: Boolean)
begin
end;
/// <summary>
/// Integration event raised before modifying VAT posting setup to allow custom validation and preprocessing.
/// Enables extensions to validate changes or modify fields before the record is updated.
/// </summary>
/// <param name="VATPostingSetup">VAT posting setup record being modified</param>
/// <param name="UseVATPostingSetup">Source VAT posting setup with values being copied</param>
/// <param name="VATSetup">Whether VAT calculation settings are being copied</param>
[IntegrationEvent(false, false)]
local procedure OnBeforeModifyVatPostingSetup(VATPostingSetup: Record "VAT Posting Setup"; UseVATPostingSetup: Record "VAT Posting Setup"; VATSetup: boolean)
begin
end;
}