Codeunit 1260 Imp. SEPA CAMT Gen. Jnl.

App
Base Application
Namespace
Microsoft.Bank.DirectDebit
Versions
17-28

Versions171819202122232425262728

Source29

Source in 29

src/Layers/W1/BaseApp/Bank/DirectDebit/ImpSEPACAMTGenJnl.Codeunit.al55 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.Bank.DirectDebit;

using Microsoft.Finance.GeneralLedger.Journal;
using System.IO;

/// <summary>
/// Imports SEPA CAMT (Customer Account Management) bank statement files into general journal lines.
/// Processes XML-formatted bank statements, extracts transaction details, and populates journal entries
/// for automated bank reconciliation and payment processing.
/// </summary>
codeunit 1260 "Imp. SEPA CAMT Gen. Jnl."
{
    TableNo = "Gen. Journal Line";

    trigger OnRun()
    var
        DataExch: Record "Data Exch.";
        ProcessDataExch: Codeunit "Process Data Exch.";
        RecRef: RecordRef;
    begin
        DataExch.Get(Rec."Data Exch. Entry No.");
        PreProcess(Rec);
        RecRef.GetTable(Rec);
        ProcessDataExch.ProcessAllLinesColumnMapping(DataExch, RecRef);
    end;

    var
        StatementIDTxt: Label '/Document/BkToCstmrStmt/Stmt/Id', Locked = true;
        IBANTxt: Label '/Document/BkToCstmrStmt/Stmt/Acct/Id/IBAN', Locked = true;
        BankIDTxt: Label '/Document/BkToCstmrStmt/Stmt/Acct/Id/Othr/Id', Locked = true;
        CurrencyTxt: Label '/Document/BkToCstmrStmt/Stmt/Bal/Amt[@Ccy]', Locked = true;

    local procedure PreProcess(var GenJnlLine: Record "Gen. Journal Line")
    var
        DataExch: Record "Data Exch.";
        GenJnlBatch: Record "Gen. Journal Batch";
        PrePostProcessXMLImport: Codeunit "Pre & Post Process XML Import";
    begin
        GenJnlBatch.Get(GenJnlLine."Journal Template Name", GenJnlLine."Journal Batch Name");
        DataExch.Get(GenJnlLine."Data Exch. Entry No.");
        PrePostProcessXMLImport.PreProcessFile(DataExch, StatementIDTxt);
        case GenJnlLine."Bal. Account Type" of
            GenJnlLine."Bal. Account Type"::"Bank Account":
                PrePostProcessXMLImport.PreProcessBankAccount(DataExch, GenJnlLine."Bal. Account No.", IBANTxt, BankIDTxt, CurrencyTxt);
            GenJnlLine."Bal. Account Type"::"G/L Account":
                PrePostProcessXMLImport.PreProcessGLAccount(DataExch, GenJnlLine, CurrencyTxt);
        end;
    end;
}