Codeunit 1325 Cancel PstdPurchInv (Yes/No)

App
Base Application
Namespace
Microsoft.Purchases.History
Versions
17-28

Procedures, 1Events, 2

Versions171819202122232425262728

Source29

Source in 29

src/Layers/W1/BaseApp/Purchases/History/CancelPstdPurchInvYesNo.Codeunit.al69 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.Purchases.History;

using Microsoft.Utilities;

codeunit 1325 "Cancel PstdPurchInv (Yes/No)"
{
    Permissions = TableData "Purch. Inv. Header" = rm,
                  TableData "Purch. Cr. Memo Hdr." = rm;
    TableNo = "Purch. Inv. Header";

    trigger OnRun()
    begin
        CancelInvoice(Rec);
    end;

    var
        CancelPostedInvoiceFromOrderQst: Label 'This invoice was posted from a purchase order. To cancel it, a purchase credit memo will be created and posted. The quantities from the original purchase order will be restored, provided the purchase order still exists.\ \Do you want to continue?';
        CancelPostedInvoiceQst: Label 'The posted purchase invoice will be canceled, and a purchase credit memo will be created and posted.\ \Do you want to continue?';
        OpenPostedCreditMemoQst: Label 'A credit memo was successfully created. Do you want to open the posted credit memo?';

    procedure CancelInvoice(var PurchInvHeader: Record "Purch. Inv. Header"): Boolean
    var
        PurchCrMemoHdr: Record "Purch. Cr. Memo Hdr.";
        CancelledDocument: Record "Cancelled Document";
        CorrectPostedPurchInvoice: Codeunit "Correct Posted Purch. Invoice";
        IsHandled: Boolean;
    begin
        IsHandled := false;
        OnCancelInvoiceOnBeforeTestCorrectInvoiceIsAllowed(PurchInvHeader, IsHandled);
        if not IsHandled then
            CorrectPostedPurchInvoice.TestCorrectInvoiceIsAllowed(PurchInvHeader, true);
        if Confirm(GetCancelPostedInvoiceQst(PurchInvHeader)) then
            if CorrectPostedPurchInvoice.CancelPostedInvoice(PurchInvHeader) then
                if Confirm(OpenPostedCreditMemoQst) then begin
                    CancelledDocument.FindPurchCancelledInvoice(PurchInvHeader."No.");
                    PurchCrMemoHdr.Get(CancelledDocument."Cancelled By Doc. No.");
                    IsHandled := false;
                    OnBeforeShowPostedPurchaseCreditMemo(PurchCrMemoHdr, IsHandled);
                    if not IsHandled then
                        PAGE.Run(PAGE::"Posted Purchase Credit Memo", PurchCrMemoHdr);
                    exit(true);
                end;

        exit(false);
    end;

    local procedure GetCancelPostedInvoiceQst(PurchInvHeader: Record "Purch. Inv. Header"): Text
    begin
        if PurchInvHeader."Order No." <> '' then
            exit(CancelPostedInvoiceFromOrderQst);
        exit(CancelPostedInvoiceQst);
    end;

    [IntegrationEvent(false, false)]
    local procedure OnBeforeShowPostedPurchaseCreditMemo(var PurchCrMemoHdr: Record "Purch. Cr. Memo Hdr."; var IsHandled: Boolean)
    begin
    end;

    [IntegrationEvent(false, false)]
    local procedure OnCancelInvoiceOnBeforeTestCorrectInvoiceIsAllowed(var PurchInvHeader: Record "Purch. Inv. Header"; var IsHandled: Boolean)
    begin
    end;
}