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;
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: