Report 32 VAT Registration No. Check
- App
- Base Application
- Namespace
- Microsoft.Finance.VAT.Registration
- Versions
- 17-28
Versions171819202122232425262728
Source29
Source in 29
src/Layers/W1/BaseApp/Finance/VAT/Registration/VATRegistrationNoCheck.Report.al457 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.Registration;
using Microsoft.CRM.Contact;
using Microsoft.Foundation.Company;
using Microsoft.Purchases.Vendor;
using Microsoft.Sales.Customer;
using System.Utilities;
/// <summary>
/// Batch validation report for VAT registration numbers across customers, vendors, and contacts.
/// Verifies format compliance and checks for duplicates using country-specific validation rules.
/// </summary>
report 32 "VAT Registration No. Check"
{
ApplicationArea = Basic, Suite;
Caption = 'Batch VAT Registration No. Check';
UsageCategory = ReportsAndAnalysis;
DefaultRenderingLayout = RDLCLayout;
dataset
{
dataitem("Integer"; "Integer")
{
DataItemTableView = sorting(Number) where(Number = const(1));
column(COMPANYNAME; COMPANYPROPERTY.DisplayName())
{
}
column(VAT_Registration_No__CheckCaption; VAT_Registration_No__CheckCaptionLbl)
{
}
column(CurrReport_PAGENOCaption; CurrReport_PAGENOCaptionLbl)
{
}
dataitem(Integer2; "Integer")
{
DataItemTableView = sorting(Number) where(Number = const(1));
column(Format_ErrorsCaption; Format_ErrorsCaptionLbl)
{
}
dataitem(Customer; Customer)
{
DataItemTableView = sorting("No.") where("VAT Registration No." = filter(<> ''));
column(Customer__No__; "No.")
{
}
column(Customer_Name; Name)
{
}
column(Customer__Country_Region_Code_; "Country/Region Code")
{
}
column(Customer__VAT_Registration_No__; "VAT Registration No.")
{
}
column(CustomersCaption; CustomersCaptionLbl)
{
}
column(Customer__No__Caption; FieldCaption("No."))
{
}
column(Customer_NameCaption; FieldCaption(Name))
{
}
column(Customer__Country_Region_Code_Caption; FieldCaption("Country/Region Code"))
{
}
column(Customer__VAT_Registration_No__Caption; FieldCaption("VAT Registration No."))
{
}
trigger OnAfterGetRecord()
begin
CheckFormat("VAT Registration No.", "Country/Region Code");
end;
}
dataitem(Vendor; Vendor)
{
DataItemTableView = sorting("No.") where("VAT Registration No." = filter(<> ''));
column(Vendor__No__; "No.")
{
}
column(Vendor_Name; Name)
{
}
column(Vendor__Country_Region_Code_; "Country/Region Code")
{
}
column(Vendor__VAT_Registration_No__; "VAT Registration No.")
{
}
column(VendorsCaption; VendorsCaptionLbl)
{
}
column(Vendor__No__Caption; FieldCaption("No."))
{
}
column(Vendor_NameCaption; FieldCaption(Name))
{
}
column(Vendor__Country_Region_Code_Caption; FieldCaption("Country/Region Code"))
{
}
column(Vendor__VAT_Registration_No__Caption; FieldCaption("VAT Registration No."))
{
}
trigger OnAfterGetRecord()
begin
CheckFormat("VAT Registration No.", "Country/Region Code");
end;
}
dataitem(Contact; Contact)
{
DataItemTableView = sorting("No.") where("VAT Registration No." = filter(<> ''));
column(Contact__No__; "No.")
{
}
column(Contact_Name; Name)
{
}
column(Contact__Country_Region_Code_; "Country/Region Code")
{
}
column(Contact__VAT_Registration_No__; "VAT Registration No.")
{
}
column(Contact__No__Caption; FieldCaption("No."))
{
}
column(Contact_NameCaption; FieldCaption(Name))
{
}
column(Contact__Country_Region_Code_Caption; FieldCaption("Country/Region Code"))
{
}
column(Contact__VAT_Registration_No__Caption; FieldCaption("VAT Registration No."))
{
}
column(ContactsCaption; ContactsCaptionLbl)
{
}
trigger OnAfterGetRecord()
begin
CheckFormat("VAT Registration No.", "Country/Region Code");
end;
}
trigger OnAfterGetRecord()
begin
if not FormatCheck
then
CurrReport.Break();
end;
}
dataitem(Integer3; "Integer")
{
DataItemTableView = sorting(Number) where(Number = const(1));
column(DuplicatesCaption; DuplicatesCaptionLbl)
{
}
dataitem(Customer2; Customer)
{
DataItemTableView = sorting("No.") where("VAT Registration No." = filter(<> ''));
PrintOnlyIfDetail = true;
column(Customer2__No__; "No.")
{
}
column(Customer2_Name; Name)
{
}
column(Customer2__Country_Region_Code_; "Country/Region Code")
{
}
column(Customer2__VAT_Registration_No__; "VAT Registration No.")
{
}
column(VAT_Registration_No_Caption; VAT_Registration_No_CaptionLbl)
{
}
column(Customer2__Country_Region_Code_Caption; FieldCaption("Country/Region Code"))
{
}
column(NameCaption; NameCaptionLbl)
{
}
column(No_Caption; No_CaptionLbl)
{
}
column(CustomersCaption_Control50; CustomersCaption_Control50Lbl)
{
}
dataitem(Customer3; Customer)
{
DataItemLink = "VAT Registration No." = field("VAT Registration No.");
DataItemTableView = sorting("VAT Registration No.") where("VAT Registration No." = filter(<> ''));
column(Customer3__No__; "No.")
{
}
column(Customer3_Name; Name)
{
}
column(Customer3__Country_Region_Code_; "Country/Region Code")
{
}
column(Customer3__VAT_Registration_No__; "VAT Registration No.")
{
}
trigger OnAfterGetRecord()
begin
if Customer2."No." = "No." then
CurrReport.Skip();
if Customer2."No." > "No." then
CurrReport.Break();
end;
}
trigger OnPreDataItem()
begin
CopyFilters(Customer);
end;
}
dataitem(Vendor2; Vendor)
{
DataItemTableView = sorting("No.") where("VAT Registration No." = filter(<> ''));
PrintOnlyIfDetail = true;
column(Vendor2__No__; "No.")
{
}
column(Vendor2_Name; Name)
{
}
column(Vendor2__Country_Region_Code_; "Country/Region Code")
{
}
column(Vendor2__VAT_Registration_No__; "VAT Registration No.")
{
}
column(VendorsCaption_Control51; VendorsCaption_Control51Lbl)
{
}
column(Vendor2__No__Caption; FieldCaption("No."))
{
}
column(Vendor2_NameCaption; FieldCaption(Name))
{
}
column(Vendor2__Country_Region_Code_Caption; FieldCaption("Country/Region Code"))
{
}
column(Vendor2__VAT_Registration_No__Caption; FieldCaption("VAT Registration No."))
{
}
dataitem(Vendor3; Vendor)
{
DataItemLink = "VAT Registration No." = field("VAT Registration No.");
DataItemTableView = sorting("VAT Registration No.") where("VAT Registration No." = filter(<> ''));
column(Vendor3__No__; "No.")
{
}
column(Vendor3_Name; Name)
{
}
column(Vendor3__Country_Region_Code_; "Country/Region Code")
{
}
column(Vendor3__VAT_Registration_No__; "VAT Registration No.")
{
}
trigger OnAfterGetRecord()
begin
if Vendor2."No." = "No." then
CurrReport.Skip();
if Vendor2."No." > "No." then
CurrReport.Break();
end;
}
trigger OnPreDataItem()
begin
CopyFilters(Vendor);
end;
}
dataitem(Contact2; Contact)
{
DataItemTableView = sorting("No.") where("VAT Registration No." = filter(<> ''));
PrintOnlyIfDetail = true;
column(Contact2__No__; "No.")
{
}
column(Contact2_Name; Name)
{
}
column(Contact2__Country_Region_Code_; "Country/Region Code")
{
}
column(Contact2__VAT_Registration_No__; "VAT Registration No.")
{
}
column(ContactsCaption_Control68; ContactsCaption_Control68Lbl)
{
}
column(Contact2__No__Caption; FieldCaption("No."))
{
}
column(Contact2_NameCaption; FieldCaption(Name))
{
}
column(Contact2__Country_Region_Code_Caption; FieldCaption("Country/Region Code"))
{
}
column(Contact2__VAT_Registration_No__Caption; FieldCaption("VAT Registration No."))
{
}
dataitem(Contact3; Contact)
{
DataItemLink = "VAT Registration No." = field("VAT Registration No.");
DataItemTableView = sorting("VAT Registration No.") where("VAT Registration No." = filter(<> ''));
column(Contact3__No__; "No.")
{
}
column(Contact3_Name; Name)
{
}
column(Contact3__Country_Region_Code_; "Country/Region Code")
{
}
column(Contact3__VAT_Registration_No__; "VAT Registration No.")
{
}
trigger OnAfterGetRecord()
begin
if Contact2."No." = "No." then
CurrReport.Skip();
if Contact2."No." > "No." then
CurrReport.Break();
end;
}
trigger OnPreDataItem()
begin
CopyFilters(Contact);
end;
}
trigger OnAfterGetRecord()
begin
if not DuplicateCheck then
CurrReport.Break();
end;
}
}
}
requestpage
{
AboutTitle = 'About VAT Registration No. Check';
AboutText = 'The **VAT Registration No. Check** report verifies the validity of VAT numbers for customers and vendors by cross-checking them against the EU VAT Information Exchange System (VIES). Use it for validating VAT registration numbers before submitting EU sales reports to ensure compliance and avoid issues with cross-border transactions.';
SaveValues = true;
layout
{
area(content)
{
group(Options)
{
Caption = 'Options';
field(FormatCheck; FormatCheck)
{
ApplicationArea = Basic, Suite;
Caption = 'Format Check';
ToolTip = 'Specifies that you want to print a list of all customers, vendors, and contacts whose VAT registration numbers do not correspond to the prescribed VAT registration number format for the country/region of origin.';
}
field(DuplicateCheck; DuplicateCheck)
{
ApplicationArea = Basic, Suite;
Caption = 'Duplicate Check';
ToolTip = 'Specifies that you want to print all customers, vendors, and contacts whose VAT registration number has been duplicated for more than one customer, vendor, or contact.';
}
}
}
}
actions
{
}
}
rendering
{
layout(RDLCLayout)
{
Type = RDLC;
LayoutFile = './Finance/VAT/Registration/VATRegistrationNoCheck.rdlc';
Summary = 'Report layout made in the legacy RDLC format. Use an RDLC editor to modify the layout.';
}
}
labels
{
}
trigger OnInitReport()
begin
if not FormatCheck and not DuplicateCheck then begin
FormatCheck := true;
DuplicateCheck := true;
end;
end;
var
FormatCheck: Boolean;
DuplicateCheck: Boolean;
VAT_Registration_No__CheckCaptionLbl: Label 'VAT Registration No. Check';
CurrReport_PAGENOCaptionLbl: Label 'Page';
Format_ErrorsCaptionLbl: Label 'Format Errors';
CustomersCaptionLbl: Label 'Customers';
VendorsCaptionLbl: Label 'Vendors';
ContactsCaptionLbl: Label 'Contacts';
DuplicatesCaptionLbl: Label 'Duplicates';
VAT_Registration_No_CaptionLbl: Label 'VAT Registration No.';
NameCaptionLbl: Label 'Name';
No_CaptionLbl: Label 'No.';
CustomersCaption_Control50Lbl: Label 'Customers';
VendorsCaption_Control51Lbl: Label 'Vendors';
ContactsCaption_Control68Lbl: Label 'Contacts';
local procedure CheckFormat(VATRegNo: Text[20]; CountryCode: Code[10])
var
CompanyInfo: Record "Company Information";
VATRegNoFormat: Record "VAT Registration No. Format";
Check: Boolean;
begin
if CountryCode = '' then begin
CompanyInfo.Get();
VATRegNoFormat.SetRange("Country/Region Code", CompanyInfo."Country/Region Code");
end else
VATRegNoFormat.SetRange("Country/Region Code", CountryCode);
VATRegNoFormat.SetFilter(Format, '<>%1', '');
if VATRegNoFormat.Find('-') then
repeat
if VATRegNoFormat.Compare(VATRegNo, VATRegNoFormat.Format) = true then
CurrReport.Skip();
until Check or (VATRegNoFormat.Next() = 0)
else
CurrReport.Skip();
end;
}