Skip to content

[Event Request] Codeunit 7324 "Whse.-Activity-Post" - OnInitSourceDocumentOnBeforeReopenReleaseSalesHeader #12549

Description

@eknraw

Hello,
I need a way to selectively skip and/or alter the behavior of the code that Reopens, sets the posting date and then releases the sales document. Thanks!

Codeunit 7324:

local procedure InitSourceDocument()
    var
        SalesLine: Record "Sales Line";
        SalesRelease: Codeunit "Release Sales Document";
        PurchRelease: Codeunit "Release Purchase Document";
        ModifyHeader: Boolean;
    begin
        OnBeforeInitSourceDocument(WhseActivHeader);

        with WhseActivHeader do
            case "Source Type" of
                DATABASE::"Purchase Line":
                    begin
                        PurchHeader.Get("Source Subtype", "Source No.");
                        PurchLine.SetRange("Document Type", "Source Subtype");
                        PurchLine.SetRange("Document No.", "Source No.");
                        if PurchLine.Find('-') then
                            repeat
                                if "Source Document" = "Source Document"::"Purchase Order" then
                                    PurchLine.Validate("Qty. to Receive", 0)
                                else
                                    PurchLine.Validate("Return Qty. to Ship", 0);
                                PurchLine.Validate("Qty. to Invoice", 0);
                                ModifyPurchaseLine(PurchLine);
                                OnAfterPurchLineModify(PurchLine);
                            until PurchLine.Next() = 0;

                        if (PurchHeader."Posting Date" <> "Posting Date") and ("Posting Date" <> 0D) then begin
                            PurchRelease.Reopen(PurchHeader);
                            PurchRelease.SetSkipCheckReleaseRestrictions;
                            PurchHeader.SetHideValidationDialog(true);
                            PurchHeader.Validate("Posting Date", "Posting Date");
                            PurchRelease.Run(PurchHeader);
                            ModifyHeader := true;
                        end;
                        if "External Document No." <> '' then begin
                            PurchHeader."Vendor Shipment No." := "External Document No.";
                            ModifyHeader := true;
                        end;
                        if "External Document No.2" <> '' then begin
                            if "Source Document" = "Source Document"::"Purchase Order" then
                                PurchHeader."Vendor Invoice No." := "External Document No.2"
                            else
                                PurchHeader."Vendor Cr. Memo No." := "External Document No.2";
                            ModifyHeader := true;
                        end;
                        ModifyPurchaseHeader(PurchHeader, WhseActivHeader, ModifyHeader);
                    end;
                DATABASE::"Sales Line":
                    begin
                        SalesHeader.Get("Source Subtype", "Source No.");
                        SalesLine.SetRange("Document Type", "Source Subtype");
                        SalesLine.SetRange("Document No.", "Source No.");
                        if SalesHeader."Shipping Advice" = SalesHeader."Shipping Advice"::Complete then
                            SalesLine.SetRange(Type, SalesLine.Type::Item);
                        if SalesLine.Find('-') then
                            repeat
                                if "Source Document" = "Source Document"::"Sales Order" then
                                    SalesLine.Validate("Qty. to Ship", 0)
                                else
                                    SalesLine.Validate("Return Qty. to Receive", 0);
                                SalesLine.Validate("Qty. to Invoice", 0);
                                ModifySalesLine(SalesLine);
                                OnAfterSalesLineModify(SalesLine);
                            until SalesLine.Next() = 0;
                        
                        IsHandled := false;
                        OnInitSourceDocumentOnBeforeReopenReleaseSalesHeader(SalesHeader, WhseActivHeader, ModifyHeader, IsHandled); 
                        if not IsHandled then
                            if (SalesHeader."Posting Date" <> "Posting Date") and ("Posting Date" <> 0D) then begin
                                SalesRelease.Reopen(SalesHeader);
                                SalesRelease.SetSkipCheckReleaseRestrictions;
                                SalesHeader.SetHideValidationDialog(true);
                                SalesHeader.Validate("Posting Date", "Posting Date");
                                SalesRelease.Run(SalesHeader);
                                ModifyHeader := true;
                            end;
                        if "External Document No." <> '' then begin
                            SalesHeader."External Document No." := "External Document No.";
                            ModifyHeader := true;
                        end;
                        ModifySalesHeader(SalesHeader, WhseActivHeader, ModifyHeader);
                    end;
                DATABASE::"Transfer Line":
                    begin
                        TransHeader.Get("Source No.");
                        TransLine.SetRange("Document No.", TransHeader."No.");
                        TransLine.SetRange("Derived From Line No.", 0);
                        TransLine.SetFilter("Item No.", '<>%1', '');
                        if TransLine.Find('-') then
                            repeat
                                TransLine.Validate("Qty. to Ship", 0);
                                TransLine.Validate("Qty. to Receive", 0);
                                ModifyTransferLine(TransLine);
                                OnAfterTransLineModify(TransLine);
                            until TransLine.Next() = 0;

                        if (TransHeader."Posting Date" <> "Posting Date") and ("Posting Date" <> 0D) then begin
                            TransHeader.CalledFromWarehouse(true);
                            TransHeader.Validate("Posting Date", "Posting Date");
                            ModifyHeader := true;
                        end;
                        if "External Document No." <> '' then begin
                            TransHeader."External Document No." := "External Document No.";
                            ModifyHeader := true;
                        end;
                        ModifyTransferHeader(TransHeader, WhseActivHeader, ModifyHeader);
                    end;
            end;

        OnAfterInitSourceDocument(WhseActivHeader);
    end;
[IntegrationEvent(false, false)]
    local procedure OnInitSourceDocumentOnBeforeReopenReleaseSalesHeader( varSalesHeader: Record "Sales Header";  WhseActivHeader: Record "Warehouse Activity Header"; var ModifyHeader Boolean; var IsHandled: Boolean)
    begin
    end;

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions