Table 5504 Tax Area Buffer

App
Base Application
Namespace
Microsoft.Integration.Entity
Versions
17-28

Fields, 5Keys, 1Procedures, 5

Versions171819202122232425262728

Source29

Source in 29

src/Layers/W1/BaseApp/Integration/Entity/TaxAreaBuffer.Table.al212 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.Integration.Entity;

using Microsoft.Finance.GeneralLedger.Setup;
using Microsoft.Finance.SalesTax;
using Microsoft.Finance.VAT.Setup;

table 5504 "Tax Area Buffer"
{
    Caption = 'Tax Area Buffer';
    ReplicateData = false;
    DataClassification = CustomerContent;

    fields
    {
        field(1; "Code"; Code[20])
        {
            Caption = 'Code';
            DataClassification = SystemMetadata;
            NotBlank = true;
        }
        field(2; Description; Text[100])
        {
            Caption = 'Description';
            DataClassification = SystemMetadata;
        }
        field(10; "Last Modified Date Time"; DateTime)
        {
            Caption = 'Last Modified Date Time';
            DataClassification = SystemMetadata;
            Editable = false;
        }
        field(8000; Id; Guid)
        {
            Caption = 'Id';
            DataClassification = SystemMetadata;
        }
        field(9600; Type; Enum "Tax Buffer Type")
        {
            Caption = 'Type';
            DataClassification = SystemMetadata;
        }
    }

    keys
    {
        key(Key1; Id)
        {
            Clustered = true;
        }
    }

    fieldgroups
    {
    }

    trigger OnRename()
    begin
        Error(CannotChangeIDErr);
    end;

    var
        CannotChangeIDErr: Label 'The id cannot be changed.', Locked = true;
        RecordMustBeTemporaryErr: Label 'Tax Group Entity must be used as a temporary record.';

    procedure PropagateInsert()
    begin
        PropagateUpdate(true);
    end;

    procedure PropagateModify()
    begin
        PropagateUpdate(false);
    end;

    local procedure PropagateUpdate(InsertRec: Boolean)
    var
        GeneralLedgerSetup: Record "General Ledger Setup";
        VATBusinessPostingGroup: Record "VAT Business Posting Group";
        TaxArea: Record "Tax Area";
    begin
        if not IsTemporary then
            Error(RecordMustBeTemporaryErr);

        if GeneralLedgerSetup.UseVat() then begin
            if InsertRec then begin
                VATBusinessPostingGroup.TransferFields(Rec, true);
                VATBusinessPostingGroup.Insert(true)
            end else begin
                if xRec.Code <> Code then begin
                    VATBusinessPostingGroup.Get(xRec.Code);
                    VATBusinessPostingGroup.Rename(Code)
                end;

                VATBusinessPostingGroup.TransferFields(Rec, true);
                VATBusinessPostingGroup.Modify(true);
            end;

            UpdateFromVATBusinessPostingGroup(VATBusinessPostingGroup);
        end else begin
            if InsertRec then begin
                TaxArea.TransferFields(Rec, true);
                TaxArea.Insert(true)
            end else begin
                if xRec.Code <> Code then begin
                    TaxArea.Get(xRec.Code);
                    TaxArea.Rename(Code);
                end;

                TaxArea.TransferFields(Rec, true);
                TaxArea.Modify(true);
            end;

            UpdateFromTaxArea(TaxArea);
        end;
    end;

    procedure PropagateDelete()
    var
        GeneralLedgerSetup: Record "General Ledger Setup";
        VATBusinessPostingGroup: Record "VAT Business Posting Group";
        TaxArea: Record "Tax Area";
    begin
        if GeneralLedgerSetup.UseVat() then begin
            VATBusinessPostingGroup.Get(Code);
            VATBusinessPostingGroup.Delete(true);
        end else begin
            TaxArea.Get(Code);
            TaxArea.Delete(true);
        end;
    end;

    procedure LoadRecords(): Boolean
    var
        GeneralLedgerSetup: Record "General Ledger Setup";
    begin
        if not IsTemporary then
            Error(RecordMustBeTemporaryErr);

        if GeneralLedgerSetup.UseVat() then
            LoadFromVATBusinessPostingGroup()
        else
            LoadFromTaxArea();

        exit(FindFirst());
    end;

    local procedure LoadFromTaxArea()
    var
        TaxArea: Record "Tax Area";
    begin
        if not TaxArea.FindSet() then
            exit;

        repeat
            UpdateFromTaxArea(TaxArea);
            Insert();
        until TaxArea.Next() = 0;
    end;

    local procedure LoadFromVATBusinessPostingGroup()
    var
        VATBusinessPostingGroup: Record "VAT Business Posting Group";
    begin
        if not VATBusinessPostingGroup.FindSet() then
            exit;

        repeat
            UpdateFromVATBusinessPostingGroup(VATBusinessPostingGroup);
            Insert();
        until VATBusinessPostingGroup.Next() = 0;
    end;

    local procedure UpdateFromVATBusinessPostingGroup(var VATBusinessPostingGroup: Record "VAT Business Posting Group")
    begin
        TransferFields(VATBusinessPostingGroup, true);
        Type := Type::VAT;
        Id := VATBusinessPostingGroup.SystemId;
    end;

    local procedure UpdateFromTaxArea(var TaxArea: Record "Tax Area")
    begin
        TransferFields(TaxArea, true);
        Type := Type::"Sales Tax";
        Id := TaxArea.SystemId;
        Description := TaxArea.GetDescriptionInCurrentLanguageFullLength();
    end;

    procedure GetTaxAreaDisplayName(TaxAreaId: Guid): Text
    var
        GeneralLedgerSetup: Record "General Ledger Setup";
        VATBusinessPostingGroup: Record "VAT Business Posting Group";
        TaxArea: Record "Tax Area";
    begin
        if IsNullGuid(TaxAreaId) then
            exit('');

        if GeneralLedgerSetup.UseVat() then begin
            if VATBusinessPostingGroup.GetBySystemId(TaxAreaId) then
                exit(VATBusinessPostingGroup.Description);
        end else
            if TaxArea.GetBySystemId(TaxAreaId) then
                exit(TaxArea.GetDescriptionInCurrentLanguageFullLength());

        exit('');
    end;
}