Table 187 VAT Posting Parameters
- App
- Base Application
- Namespace
- Microsoft.Finance.VAT.Calculation
- Versions
- 22-28
Fields, 11Keys, 1Procedures, 1Events, 1
Versions171819202122232425262728
Source29
Source in 29
src/Layers/W1/BaseApp/Finance/VAT/Calculation/VATPostingParameters.Table.al187 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.Calculation;
using Microsoft.Finance.GeneralLedger.Journal;
using Microsoft.Finance.GeneralLedger.Setup;
using Microsoft.Finance.VAT.Setup;
/// <summary>
/// Temporary table storing VAT posting parameters for VAT entry creation during journal line posting.
/// Contains calculated VAT amounts, currency information, and non-deductible VAT details for posting operations.
/// </summary>
/// <remarks>
/// Used internally during posting processes to transfer VAT calculation results.
/// Key integrations: General journal posting, VAT entry creation, non-deductible VAT processing.
/// </remarks>
table 187 "VAT Posting Parameters"
{
TableType = Temporary;
DataClassification = CustomerContent;
fields
{
/// <summary>
/// Primary key field for the temporary table record identification.
/// </summary>
field(1; "Primary Key"; Code[10])
{
DataClassification = SystemMetadata;
}
/// <summary>
/// Total VAT amount including both deductible and non-deductible portions.
/// </summary>
field(2; "Full VAT Amount"; Decimal)
{
AutoFormatType = 1;
AutoFormatExpression = '';
DataClassification = SystemMetadata;
}
/// <summary>
/// Total VAT amount in additional currency including both deductible and non-deductible portions.
/// </summary>
field(3; "Full VAT Amount ACY"; Decimal)
{
AutoFormatExpression = GetAdditionalReportingCurrencyCode();
AutoFormatType = 1;
DataClassification = SystemMetadata;
}
/// <summary>
/// Currency code of the source transaction for currency conversion tracking.
/// </summary>
field(4; "Source Currency Code"; Code[10])
{
DataClassification = SystemMetadata;
}
/// <summary>
/// Indicates whether the VAT transaction involves unrealized VAT processing.
/// </summary>
field(5; "Unrealized VAT"; Boolean)
{
DataClassification = SystemMetadata;
}
/// <summary>
/// VAT amount that is deductible and can be claimed from tax authorities.
/// </summary>
field(6; "Deductible VAT Amount"; Decimal)
{
AutoFormatType = 1;
AutoFormatExpression = '';
DataClassification = SystemMetadata;
}
/// <summary>
/// Deductible VAT amount in additional currency.
/// </summary>
field(7; "Deductible VAT Amount ACY"; Decimal)
{
AutoFormatExpression = GetAdditionalReportingCurrencyCode();
AutoFormatType = 1;
DataClassification = SystemMetadata;
}
/// <summary>
/// VAT amount that is non-deductible and will be added to expense or asset cost.
/// </summary>
field(8; "Non-Deductible VAT Amount"; Decimal)
{
AutoFormatType = 1;
AutoFormatExpression = '';
DataClassification = SystemMetadata;
}
/// <summary>
/// Non-deductible VAT amount in additional currency.
/// </summary>
field(9; "Non-Deductible VAT Amount ACY"; Decimal)
{
AutoFormatExpression = GetAdditionalReportingCurrencyCode();
AutoFormatType = 1;
DataClassification = SystemMetadata;
}
/// <summary>
/// Percentage of VAT that is non-deductible for this transaction.
/// </summary>
field(10; "Non-Deductible VAT %"; Decimal)
{
AutoFormatType = 0;
DataClassification = SystemMetadata;
}
/// <summary>
/// G/L account for posting non-deductible purchase VAT amounts.
/// </summary>
field(11; "Non-Ded. Purchase VAT Account"; Code[20])
{
DataClassification = SystemMetadata;
}
}
keys
{
key(PK; "Primary Key")
{
Clustered = true;
}
}
/// <summary>
/// Initializes and inserts VAT posting parameters record with calculated VAT amounts and posting setup information.
/// </summary>
/// <param name="GenJournalLine">Source general journal line</param>
/// <param name="VATPostingSetup">VAT posting setup for the transaction</param>
/// <param name="FullVATAmount">Complete VAT amount for the transaction</param>
/// <param name="FullVATAmountACY">Complete VAT amount in additional currency</param>
/// <param name="SrcCurrCode">Source currency code</param>
/// <param name="UnrealizedVAT">Whether transaction uses unrealized VAT</param>
/// <param name="DeductibleVATAmount">Deductible portion of VAT amount</param>
/// <param name="DeductibleVATAmountACY">Deductible VAT amount in additional currency</param>
/// <param name="NonDeductibleVATAmount">Non-deductible portion of VAT amount</param>
/// <param name="NonDeductibleVATAmountACY">Non-deductible VAT amount in additional currency</param>
procedure InsertRecord(GenJournalLine: Record "Gen. Journal Line"; VATPostingSetup: Record "VAT Posting Setup"; FullVATAmount: Decimal; FullVATAmountACY: Decimal; SrcCurrCode: Code[10]; UnrealizedVAT: Boolean; DeductibleVATAmount: Decimal; DeductibleVATAmountACY: Decimal; NonDeductibleVATAmount: Decimal; NonDeductibleVATAmountACY: Decimal)
var
IsHandled: Boolean;
begin
OnBeforeInsertVATPostingBuffer(Rec, GenJournalLine, VATPostingSetup, FullVATAmount, FullVATAmountACY, SrcCurrCode, UnrealizedVAT, DeductibleVATAmount, DeductibleVATAmountACY, NonDeductibleVATAmount, NonDeductibleVATAmountACY, IsHandled);
if IsHandled then
exit;
Init();
"Full VAT Amount" := FullVATAmount;
"Full VAT Amount ACY" := FullVATAmountACY;
"Source Currency Code" := SrcCurrCode;
"Unrealized VAT" := UnrealizedVAT;
"Deductible VAT Amount" := DeductibleVATAmount;
"Deductible VAT Amount ACY" := DeductibleVATAmountACY;
"Non-Deductible VAT Amount" := NonDeductibleVATAmount;
"Non-Deductible VAT Amount ACY" := NonDeductibleVATAmountACY;
"Non-Deductible VAT %" := GenJournalLine."Non-Deductible VAT %";
"Non-Ded. Purchase VAT Account" := VATPostingSetup."Non-Ded. Purchase VAT Account";
end;
/// <summary>
/// Integration event raised before inserting VAT posting buffer record during VAT posting process.
/// Enables custom validation and modification of VAT posting parameters.
/// </summary>
/// <param name="VATPostingParameters">VAT posting parameters being processed</param>
/// <param name="GenJournalLine">Source general journal line</param>
/// <param name="VATPostingSetup">VAT posting setup for the transaction</param>
/// <param name="FullVATAmount">Complete VAT amount for the transaction</param>
/// <param name="FullVATAmountACY">Complete VAT amount in additional currency</param>
/// <param name="SrcCurrCode">Source currency code</param>
/// <param name="UnrealizedVAT">Whether transaction uses unrealized VAT</param>
/// <param name="DeductibleVATAmount">Deductible portion of VAT amount</param>
/// <param name="DeductibleVATAmountACY">Deductible VAT amount in additional currency</param>
/// <param name="NonDeductibleVATAmount">Non-deductible portion of VAT amount</param>
/// <param name="NonDeductibleVATAmountACY">Non-deductible VAT amount in additional currency</param>
/// <param name="IsHandled">Set to true to skip standard VAT posting buffer insertion</param>
[IntegrationEvent(false, false)]
procedure OnBeforeInsertVATPostingBuffer(var VATPostingParameters: Record "VAT Posting Parameters"; GenJournalLine: Record "Gen. Journal Line"; VATPostingSetup: Record "VAT Posting Setup"; FullVATAmount: Decimal; FullVATAmountACY: Decimal; SrcCurrCode: Code[10]; UnrealizedVAT: Boolean; DeductibleVATAmount: Decimal; DeductibleVATAmountACY: Decimal; NonDeductibleVATAmount: Decimal; NonDeductibleVATAmountACY: Decimal; var IsHandled: Boolean)
begin
end;
local procedure GetAdditionalReportingCurrencyCode(): Code[10]
var
GLSetup: Record "General Ledger Setup";
begin
GLSetup.GetRecordOnce();
exit(GLSetup."Additional Reporting Currency");
end;
}