microsoft / ALAppExtensions

Repository for collaboration on Microsoft AL application add-on and localization extensions for Microsoft Dynamics 365 Business Central.
MIT License
749 stars 600 forks source link

New Event to codeunit 31022 "Purch.-Post Handler CZZ" #26743

Open DanielSmutek opened 2 weeks ago

DanielSmutek commented 2 weeks ago

Describe the request

Please add Event OnAfterPurchPostOnAfterFinalizePostingOnBeforeCommit to codeunit 31022 "Purch.-Post Handler CZZ"

    [EventSubscriber(ObjectType::Codeunit, Codeunit::"Purch.-Post", 'OnAfterFinalizePostingOnBeforeCommit', '', false, false)]
    local procedure PurchPostOnAfterFinalizePostingOnBeforeCommit(var PurchHeader: Record "Purchase Header"; var PurchInvHeader: Record "Purch. Inv. Header"; var GenJnlPostLine: Codeunit "Gen. Jnl.-Post Line")
    var
        AdvanceLetterApplicationCZZ: Record "Advance Letter Application CZZ";
        VendorLedgerEntry: Record "Vendor Ledger Entry";
        GetLastGLEntryNoCZZ: Codeunit "Get Last G/L Entry No. CZZ";
        PurchAdvLetterManagementCZZ: Codeunit "PurchAdvLetterManagement CZZ";
        AdvLetterUsageDocTypeCZZ: Enum "Adv. Letter Usage Doc.Type CZZ";
    begin
        if (not PurchHeader.Invoice) or (not PurchHeader.IsAdvanceLetterDocTypeCZZ()) then
            exit;

        AdvLetterUsageDocTypeCZZ := PurchHeader.GetAdvLetterUsageDocTypeCZZ();

        VendorLedgerEntry.Get(PurchInvHeader."Vendor Ledger Entry No.");
        BindSubscription(GetLastGLEntryNoCZZ);
        PurchAdvLetterManagementCZZ.PostAdvancePaymentUsage(AdvLetterUsageDocTypeCZZ, PurchHeader."No.", PurchInvHeader, VendorLedgerEntry, GenJnlPostLine, false);
        UnbindSubscription(GetLastGLEntryNoCZZ);

        if not PurchHeader.Get(PurchHeader."Document Type", PurchHeader."No.") then begin
            AdvanceLetterApplicationCZZ.SetRange("Advance Letter Type", AdvanceLetterApplicationCZZ."Advance Letter Type"::Purchase);
            AdvanceLetterApplicationCZZ.SetRange("Document Type", AdvLetterUsageDocTypeCZZ);
            AdvanceLetterApplicationCZZ.SetRange("Document No.", PurchHeader."No.");
            AdvanceLetterApplicationCZZ.DeleteAll(true);
        end;

        // NEW EVENT >>
        OnAfterPurchPostOnAfterFinalizePostingOnBeforeCommit(PurchHeader, PurchInvHeader, GenJnlPostLine);
        // NEW EVENT <<
    end;

    // EVENT CALL >>
    [IntegrationEvent(false, false)]
    local procedure OnAfterPurchPostOnAfterFinalizePostingOnBeforeCommit(var PurchHeader: Record "Purchase Header"; var PurchInvHeader: Record "Purch. Inv. Header"; var GenJnlPostLine: Codeunit "Gen. Jnl.-Post Line")
    begin
    end;
    // EVENT CALL >>

Additional context

We need this Event to be sure that our code will run after the procedure PurchPostOnAfterFinalizePostingOnBeforeCommit

Thanks! Internal work item: AB#539583