Codeunit 5992 Purchases Warehouse Mgt., source in 29
Source29
src/Layers/W1/BaseApp/Purchases/Document/PurchasesWarehouseMgt.Codeunit.al518 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.Document;
using Microsoft.Inventory.Tracking;
using Microsoft.Purchases.History;
using Microsoft.Warehouse.Activity;
using Microsoft.Warehouse.Document;
using Microsoft.Warehouse.Journal;
using Microsoft.Warehouse.Request;
using Microsoft.Warehouse.Worksheet;
codeunit 5992 "Purchases Warehouse Mgt."
{
var
WhseManagement: Codeunit "Whse. Management";
WhseValidateSourceLine: Codeunit "Whse. Validate Source Line";
WhseCreateSourceDocument: Codeunit "Whse.-Create Source Document";
[EventSubscriber(ObjectType::Codeunit, Codeunit::"WMS Management", 'OnShowSourceDocLine', '', false, false)]
local procedure OnShowSourceDocLine(SourceType: Integer; SourceSubType: Option; SourceNo: Code[20]; SourceLineNo: Integer; SourceSubLineNo: Integer)
var
PurchaseLine: Record "Purchase Line";
IsHandled: Boolean;
begin
if SourceType = Database::"Purchase Line" then begin
PurchaseLine.Reset();
PurchaseLine.SetRange("Document Type", SourceSubType);
PurchaseLine.SetRange("Document No.", SourceNo);
PurchaseLine.SetRange("Line No.", SourceLineNo);
IsHandled := false;
OnBeforeShowPurchaseLines(PurchaseLine, SourceSubType, SourceNo, SourceLineNo, IsHandled);
if not IsHandled then
ShowPurchaseLines(PurchaseLine);
end;
end;
[EventSubscriber(ObjectType::Codeunit, Codeunit::"WMS Management", 'OnShowSourceDocAttachedLines', '', false, false)]
local procedure OnShowSourceDocAttachedLines(SourceType: Integer; SourceSubType: Option; SourceNo: Code[20]; SourceLineNo: Integer)
var
PurchaseLine: Record "Purchase Line";
IsHandled: Boolean;
begin
if SourceType = Database::"Purchase Line" then begin
PurchaseLine.Reset();
PurchaseLine.SetRange("Document Type", SourceSubType);
PurchaseLine.SetRange("Document No.", SourceNo);
PurchaseLine.SetRange("Attached to Line No.", SourceLineNo);
IsHandled := false;
OnBeforeShowAttachedPurchaseLines(PurchaseLine, SourceSubType, SourceNo, SourceLineNo, IsHandled);
if not IsHandled then
ShowPurchaseLines(PurchaseLine);
end;
end;
local procedure ShowPurchaseLines(var PurchaseLine: Record "Purchase Line")
begin
Page.Run(Page::"Purchase Lines", PurchaseLine);
end;
[EventSubscriber(ObjectType::Codeunit, Codeunit::"WMS Management", 'OnShowSourceDocCard', '', false, false)]
local procedure OnShowSourceDocCard(SourceType: Integer; SourceSubType: Option; SourceNo: Code[20])
var
PurchaseHeader: Record "Purchase Header";
begin
if SourceType = DATABASE::"Purchase Line" then begin
PurchaseHeader.Reset();
PurchaseHeader.SetRange("Document Type", SourceSubType);
if PurchaseHeader.Get(SourceSubType, SourceNo) then
if PurchaseHeader."Document Type" = PurchaseHeader."Document Type"::Order then
PAGE.RunModal(PAGE::"Purchase Order", PurchaseHeader)
else
PAGE.RunModal(PAGE::"Purchase Return Order", PurchaseHeader);
end;
end;
[EventSubscriber(ObjectType::Codeunit, Codeunit::"WMS Management", 'OnShowPostedSourceDoc', '', false, false)]
local procedure OnShowPostedSourceDoc(PostedSourceDoc: Option; PostedSourceNo: Code[20])
var
PurchRcptHeader: Record "Purch. Rcpt. Header";
ReturnShipmentHeader: Record "Return Shipment Header";
PostedSourceDocEnum: Enum "Warehouse Shipment Posted Source Document";
begin
PostedSourceDocEnum := Enum::"Warehouse Shipment Posted Source Document".FromInteger(PostedSourceDoc);
case PostedSourceDocEnum of
PostedSourceDocEnum::"Posted Receipt":
begin
PurchRcptHeader.Reset();
PurchRcptHeader.SetRange("No.", PostedSourceNo);
PAGE.RunModal(PAGE::"Posted Purchase Receipt", PurchRcptHeader);
end;
PostedSourceDocEnum::"Posted Return Shipment":
begin
ReturnShipmentHeader.Reset();
ReturnShipmentHeader.SetRange("No.", PostedSourceNo);
PAGE.RunModal(PAGE::"Posted Return Shipment", ReturnShipmentHeader);
end;
end;
end;
[IntegrationEvent(false, false)]
local procedure OnBeforeShowPurchaseLines(var PurchaseLine: Record "Purchase Line"; SourceSubType: Integer; SourceNo: Code[20]; SourceLineNo: Integer; var IsHandled: Boolean)
begin
end;
[IntegrationEvent(false, false)]
local procedure OnBeforeShowAttachedPurchaseLines(var PurchaseLine: Record "Purchase Line"; SourceSubType: Integer; SourceNo: Code[20]; SourceLineNo: Integer; var IsHandled: Boolean)
begin
end;
procedure PurchaseLineVerifyChange(var NewPurchaseLine: Record "Purchase Line"; var OldPurchaseLine: Record "Purchase Line")
var
OverReceiptMgt: Codeunit "Over-Receipt Mgt.";
NewRecordRef: RecordRef;
OldRecordRef: RecordRef;
IsHandled: Boolean;
ShouldVerifyChange: Boolean;
begin
IsHandled := false;
OnBeforePurchaseLineVerifyChange(NewPurchaseLine, OldPurchaseLine, IsHandled);
if IsHandled then
exit;
if not WhseValidateSourceLine.WhseLinesExist(
DATABASE::"Purchase Line", NewPurchaseLine."Document Type".AsInteger(), NewPurchaseLine."Document No.",
NewPurchaseLine."Line No.", 0, NewPurchaseLine.Quantity)
then
exit;
NewRecordRef.GetTable(NewPurchaseLine);
OldRecordRef.GetTable(OldPurchaseLine);
WhseValidateSourceLine.VerifyFieldNotChanged(NewRecordRef, OldRecordRef, NewPurchaseLine.FieldNo(Type));
WhseValidateSourceLine.VerifyFieldNotChanged(NewRecordRef, OldRecordRef, NewPurchaseLine.FieldNo("No."));
WhseValidateSourceLine.VerifyFieldNotChanged(NewRecordRef, OldRecordRef, NewPurchaseLine.FieldNo("Variant Code"));
WhseValidateSourceLine.VerifyFieldNotChanged(NewRecordRef, OldRecordRef, NewPurchaseLine.FieldNo("Location Code"));
WhseValidateSourceLine.VerifyFieldNotChanged(NewRecordRef, OldRecordRef, NewPurchaseLine.FieldNo("Unit of Measure Code"));
WhseValidateSourceLine.VerifyFieldNotChanged(NewRecordRef, OldRecordRef, NewPurchaseLine.FieldNo("Drop Shipment"));
WhseValidateSourceLine.VerifyFieldNotChanged(NewRecordRef, OldRecordRef, NewPurchaseLine.FieldNo("Sales Order No."));
WhseValidateSourceLine.VerifyFieldNotChanged(NewRecordRef, OldRecordRef, NewPurchaseLine.FieldNo("Sales Order Line No."));
WhseValidateSourceLine.VerifyFieldNotChanged(NewRecordRef, OldRecordRef, NewPurchaseLine.FieldNo("Special Order"));
WhseValidateSourceLine.VerifyFieldNotChanged(NewRecordRef, OldRecordRef, NewPurchaseLine.FieldNo("Special Order Sales No."));
WhseValidateSourceLine.VerifyFieldNotChanged(NewRecordRef, OldRecordRef, NewPurchaseLine.FieldNo("Special Order Sales Line No."));
WhseValidateSourceLine.VerifyFieldNotChanged(NewRecordRef, OldRecordRef, NewPurchaseLine.FieldNo("Job No."));
WhseValidateSourceLine.VerifyFieldNotChanged(NewRecordRef, OldRecordRef, NewPurchaseLine.FieldNo("Job Task No."));
ShouldVerifyChange := false;
ShouldVerifyChange := not OverReceiptMgt.IsQuantityUpdatedFromInvtPutAwayOverReceipt(NewPurchaseLine);
if not ShouldVerifyChange then
ShouldVerifyChange := CheckQuantityReducedToZero(NewPurchaseLine, OldPurchaseLine);
if ShouldVerifyChange then begin
if not OverReceiptMgt.IsQuantityUpdatedFromWarehouseOverReceipt(NewPurchaseLine) then
WhseValidateSourceLine.VerifyFieldNotChanged(NewRecordRef, OldRecordRef, NewPurchaseLine.FieldNo(Quantity));
WhseValidateSourceLine.VerifyFieldNotChanged(NewRecordRef, OldRecordRef, NewPurchaseLine.FieldNo("Qty. to Receive"));
end;
OnAfterPurchaseLineVerifyChange(NewPurchaseLine, OldPurchaseLine, NewRecordRef, OldRecordRef);
end;
procedure PurchaseLineDelete(var PurchaseLine: Record "Purchase Line")
begin
if WhseValidateSourceLine.WhseLinesExist(
DATABASE::"Purchase Line", PurchaseLine."Document Type".AsInteger(), PurchaseLine."Document No.", PurchaseLine."Line No.", 0, PurchaseLine.Quantity)
then
WhseValidateSourceLine.RaiseCannotBeDeletedErr(PurchaseLine.TableCaption());
OnAfterPurchaseLineDelete(PurchaseLine);
end;
[EventSubscriber(ObjectType::Codeunit, Codeunit::"Whse. Validate Source Line", 'OnWhseLineExistOnBeforeCheckReceipt', '', false, false)]
local procedure OnWhseLineExistOnBeforeCheckReceipt(SourceType: Integer; SourceSubType: Option; SourceQty: Decimal; var CheckReceipt: Boolean)
begin
CheckReceipt := CheckReceipt or
((SourceType = DATABASE::"Purchase Line") and (SourceSubType = 1) and (SourceQty >= 0)) or
((SourceType = DATABASE::"Purchase Line") and (SourceSubType = 5) and (SourceQty < 0));
end;
[EventSubscriber(ObjectType::Codeunit, Codeunit::"Whse. Validate Source Line", 'OnWhseLineExistOnBeforeCheckShipment', '', false, false)]
local procedure OnWhseLineExistOnBeforeCheckShipment(SourceType: Integer; SourceSubType: Option; SourceQty: Decimal; var CheckShipment: Boolean)
begin
CheckShipment := CheckShipment or
((SourceType = DATABASE::"Purchase Line") and (SourceSubType = 1) and (SourceQty < 0)) or
((SourceType = DATABASE::"Purchase Line") and (SourceSubType = 5) and (SourceQty >= 0));
end;
[IntegrationEvent(false, false)]
local procedure OnAfterPurchaseLineVerifyChange(var NewPurchaseLine: Record "Purchase Line"; var OldPurchaseLine: Record "Purchase Line"; var NewRecordRef: RecordRef; var OldRecordRef: RecordRef)
begin
end;
[IntegrationEvent(false, false)]
local procedure OnAfterPurchaseLineDelete(var PurchaseLine: Record "Purchase Line")
begin
end;
[IntegrationEvent(false, false)]
local procedure OnBeforePurchaseLineVerifyChange(var NewPurchaseLine: Record "Purchase Line"; var OldPurchaseLine: Record "Purchase Line"; var IsHandled: Boolean)
begin
end;
[EventSubscriber(ObjectType::Table, Database::"Warehouse Request", 'OnShowSourceDocumentCard', '', false, false)]
local procedure OnShowSourceDocumentCard(var WarehouseRequest: Record "Warehouse Request")
var
PurchaseHeader: Record "Purchase Header";
begin
case WarehouseRequest."Source Document" of
Enum::"Warehouse Request Source Document"::"Purchase Order":
begin
PurchaseHeader.Get(WarehouseRequest."Source Subtype", WarehouseRequest."Source No.");
PAGE.Run(PAGE::"Purchase Order", PurchaseHeader);
end;
Enum::"Warehouse Request Source Document"::"Purchase Return Order":
begin
PurchaseHeader.Get(WarehouseRequest."Source Subtype", WarehouseRequest."Source No.");
PAGE.Run(PAGE::"Purchase Return Order", PurchaseHeader);
end;
end;
end;
[EventSubscriber(ObjectType::Table, Database::"Warehouse Source Filter", 'OnSetFiltersOnSourceTables', '', false, false)]
local procedure OnSetFiltersOnSourceTables(var WarehouseSourceFilter: Record "Warehouse Source Filter"; var GetSourceDocuments: Report "Get Source Documents"; var WarehouseRequest: Record "Warehouse Request")
var
PurchaseHeader: Record "Purchase Header";
PurchaseLine: Record "Purchase Line";
begin
PurchaseHeader.SetFilter("Buy-from Vendor No.", WarehouseSourceFilter."Buy-from Vendor No. Filter");
PurchaseLine.SetFilter("No.", WarehouseSourceFilter."Item No. Filter");
PurchaseLine.SetFilter("Variant Code", WarehouseSourceFilter."Variant Code Filter");
PurchaseLine.SetFilter("Unit of Measure Code", WarehouseSourceFilter."Unit of Measure Filter");
PurchaseLine.SetFilter("Buy-from Vendor No.", WarehouseSourceFilter."Buy-from Vendor No. Filter");
PurchaseLine.SetFilter("Expected Receipt Date", WarehouseSourceFilter."Expected Receipt Date");
PurchaseLine.SetFilter("Planned Receipt Date", WarehouseSourceFilter."Planned Receipt Date");
OnSetFiltersOnSourceTablesOnBeforeSetPurchaseTableView(WarehouseSourceFilter, WarehouseRequest, PurchaseHeader, PurchaseLine);
GetSourceDocuments.SetTableView(PurchaseHeader);
GetSourceDocuments.SetTableView(PurchaseLine);
end;
procedure FromPurchLine2ShptLine(WarehouseShipmentHeader: Record "Warehouse Shipment Header"; PurchaseLine: Record "Purchase Line") Result: Boolean
var
WarehouseShipmentLine: Record "Warehouse Shipment Line";
IsHandled: Boolean;
begin
IsHandled := false;
OnBeforeFromPurchLine2ShptLine(PurchaseLine, Result, IsHandled, WarehouseShipmentHeader);
if IsHandled then
exit(Result);
WarehouseShipmentLine.InitNewLine(WarehouseShipmentHeader."No.");
WarehouseShipmentLine.SetSource(DATABASE::"Purchase Line", PurchaseLine."Document Type".AsInteger(), PurchaseLine."Document No.", PurchaseLine."Line No.");
PurchaseLine.TestField("Unit of Measure Code");
WarehouseShipmentLine.SetItemData(
PurchaseLine."No.", PurchaseLine.Description, PurchaseLine."Description 2", PurchaseLine."Location Code",
PurchaseLine."Variant Code", PurchaseLine."Unit of Measure Code", PurchaseLine."Qty. per Unit of Measure",
PurchaseLine."Qty. Rounding Precision", PurchaseLine."Qty. Rounding Precision (Base)");
OnFromPurchLine2ShptLineOnAfterInitNewLine(WarehouseShipmentLine, WarehouseShipmentHeader, PurchaseLine);
WhseCreateSourceDocument.SetQtysOnShptLine(WarehouseShipmentLine, Abs(PurchaseLine."Outstanding Quantity"), Abs(PurchaseLine."Outstanding Qty. (Base)"));
if PurchaseLine."Document Type" = PurchaseLine."Document Type"::Order then
WarehouseShipmentLine."Due Date" := PurchaseLine."Expected Receipt Date";
if PurchaseLine."Document Type" = PurchaseLine."Document Type"::"Return Order" then
WarehouseShipmentLine."Due Date" := WorkDate();
if WarehouseShipmentHeader."Shipment Date" = 0D then
WarehouseShipmentLine."Shipment Date" := PurchaseLine."Planned Receipt Date"
else
WarehouseShipmentLine."Shipment Date" := WarehouseShipmentHeader."Shipment Date";
WarehouseShipmentLine."Destination Type" := WarehouseShipmentLine."Destination Type"::Vendor;
WarehouseShipmentLine."Destination No." := PurchaseLine."Buy-from Vendor No.";
if WarehouseShipmentLine."Location Code" = WarehouseShipmentHeader."Location Code" then
WarehouseShipmentLine."Bin Code" := WarehouseShipmentHeader."Bin Code";
if WarehouseShipmentLine."Bin Code" = '' then
WarehouseShipmentLine."Bin Code" := PurchaseLine."Bin Code";
WhseCreateSourceDocument.UpdateShipmentLine(WarehouseShipmentLine, WarehouseShipmentHeader);
OnFromPurchLine2ShptLineOnBeforeCreateShptLine(WarehouseShipmentLine, WarehouseShipmentHeader, PurchaseLine);
WhseCreateSourceDocument.CreateShipmentLine(WarehouseShipmentLine);
OnAfterCreateShptLineFromPurchLine(WarehouseShipmentLine, WarehouseShipmentHeader, PurchaseLine);
exit(not WarehouseShipmentLine.HasErrorOccured());
end;
procedure PurchLine2ReceiptLine(WarehouseReceiptHeader: Record "Warehouse Receipt Header"; PurchaseLine: Record "Purchase Line"): Boolean
var
WarehouseReceiptLine: Record "Warehouse Receipt Line";
IsHandled: Boolean;
Result: Boolean;
QtyPerUoM: Decimal;
QtyBasePurchaseLine: Decimal;
begin
IsHandled := false;
OnBeforePurchLine2ReceiptLine(WarehouseReceiptHeader, PurchaseLine, IsHandled, Result);
if IsHandled then
exit(Result);
WarehouseReceiptLine.InitNewLine(WarehouseReceiptHeader."No.");
WarehouseReceiptLine.SetSource(DATABASE::"Purchase Line", PurchaseLine."Document Type".AsInteger(), PurchaseLine."Document No.", PurchaseLine."Line No.");
PurchaseLine.TestField("Unit of Measure Code");
GetQuantityRelatedParameter(PurchaseLine, QtyPerUoM, QtyBasePurchaseLine);
WarehouseReceiptLine.SetItemData(
PurchaseLine."No.", PurchaseLine.Description, PurchaseLine."Description 2", PurchaseLine."Location Code",
PurchaseLine."Variant Code", PurchaseLine."Unit of Measure Code", QtyPerUoM,
PurchaseLine."Qty. Rounding Precision", PurchaseLine."Qty. Rounding Precision (Base)");
WarehouseReceiptLine."Over-Receipt Code" := PurchaseLine."Over-Receipt Code";
IsHandled := false;
OnPurchLine2ReceiptLineOnAfterInitNewLine(WarehouseReceiptLine, WarehouseReceiptHeader, PurchaseLine, IsHandled);
if not IsHandled then begin
case PurchaseLine."Document Type" of
PurchaseLine."Document Type"::Order:
begin
WarehouseReceiptLine.Validate("Qty. Received", Abs(PurchaseLine."Quantity Received"));
WarehouseReceiptLine."Due Date" := PurchaseLine."Expected Receipt Date";
end;
PurchaseLine."Document Type"::"Return Order":
begin
WarehouseReceiptLine.Validate("Qty. Received", Abs(PurchaseLine."Return Qty. Shipped"));
WarehouseReceiptLine."Due Date" := WorkDate();
end;
end;
WhseCreateSourceDocument.SetQtysOnRcptLine(WarehouseReceiptLine, Abs(PurchaseLine.Quantity), Abs(QtyBasePurchaseLine));
end;
OnPurchLine2ReceiptLineOnAfterSetQtysOnRcptLine(WarehouseReceiptLine, PurchaseLine);
WarehouseReceiptLine."Starting Date" := PurchaseLine."Planned Receipt Date";
if WarehouseReceiptLine."Location Code" = WarehouseReceiptHeader."Location Code" then
WarehouseReceiptLine."Bin Code" := WarehouseReceiptHeader."Bin Code";
if WarehouseReceiptLine."Bin Code" = '' then
WarehouseReceiptLine."Bin Code" := PurchaseLine."Bin Code";
WhseCreateSourceDocument.UpdateReceiptLine(WarehouseReceiptLine, WarehouseReceiptHeader);
OnPurchLine2ReceiptLineOnAfterUpdateReceiptLine(WarehouseReceiptLine, WarehouseReceiptHeader, PurchaseLine);
WhseCreateSourceDocument.CreateReceiptLine(WarehouseReceiptLine);
OnAfterCreateRcptLineFromPurchLine(WarehouseReceiptLine, WarehouseReceiptHeader, PurchaseLine);
exit(not WarehouseReceiptLine.HasErrorOccured());
end;
procedure CheckIfFromPurchLine2ShptLine(PurchaseLine: Record "Purchase Line"): Boolean
begin
exit(CheckIfFromPurchLine2ShptLine(PurchaseLine, "Reservation From Stock"::" "));
end;
procedure CheckIfFromPurchLine2ShptLine(PurchaseLine: Record "Purchase Line"; ReservedFromStock: Enum "Reservation From Stock"): Boolean
var
WarehouseShipmentLine: Record "Warehouse Shipment Line";
IsHandled: Boolean;
ReturnValue: Boolean;
begin
IsHandled := false;
ReturnValue := false;
OnBeforeCheckIfPurchLine2ShptLine(PurchaseLine, ReturnValue, IsHandled);
if IsHandled then
exit(ReturnValue);
if PurchaseLine.IsNonInventoriableItem() then
exit(false);
if not PurchaseLine.CheckIfPurchaseLineMeetsReservedFromStockSetting(Abs(PurchaseLine."Outstanding Qty. (Base)"), ReservedFromStock) then
exit(false);
WarehouseShipmentLine.SetSourceFilter(DATABASE::"Purchase Line", PurchaseLine."Document Type".AsInteger(), PurchaseLine."Document No.", PurchaseLine."Line No.", false);
WarehouseShipmentLine.CalcSums("Qty. Outstanding (Base)");
exit(Abs(PurchaseLine."Outstanding Qty. (Base)") > WarehouseShipmentLine."Qty. Outstanding (Base)");
end;
procedure CheckIfPurchLine2ReceiptLine(PurchaseLine: Record "Purchase Line"): Boolean
var
ReturnValue: Boolean;
IsHandled: Boolean;
begin
IsHandled := false;
ReturnValue := false;
OnBeforeCheckIfPurchLine2ReceiptLine(PurchaseLine, ReturnValue, IsHandled);
if IsHandled then
exit(ReturnValue);
if PurchaseLine.IsNonInventoriableItem() then
exit(false);
PurchaseLine.CalcFields("Whse. Outstanding Qty. (Base)");
exit(Abs(PurchaseLine."Outstanding Qty. (Base)") > Abs(PurchaseLine."Whse. Outstanding Qty. (Base)"));
end;
local procedure CheckQuantityReducedToZero(NewPurchaseLine: Record "Purchase Line"; OldPurchaseLine: Record "Purchase Line"): Boolean
begin
exit((OldPurchaseLine.Quantity <> 0) and (NewPurchaseLine.Quantity = 0));
end;
local procedure GetQuantityRelatedParameter(PurchaseLine: Record "Purchase Line"; var QtyPerUoM: Decimal; var QtyBasePurchaseLine: Decimal)
begin
QtyPerUoM := PurchaseLine."Qty. per Unit of Measure";
QtyBasePurchaseLine := PurchaseLine."Quantity (Base)";
OnAfterGetQuantityRelatedParameter(PurchaseLine, QtyPerUoM, QtyBasePurchaseLine);
end;
[IntegrationEvent(false, false)]
local procedure OnBeforeFromPurchLine2ShptLine(var PurchaseLine: Record "Purchase Line"; var Result: Boolean; var IsHandled: Boolean; WarehouseShipmentHeader: Record "Warehouse Shipment Header")
begin
end;
[IntegrationEvent(false, false)]
local procedure OnFromPurchLine2ShptLineOnAfterInitNewLine(var WarehouseShipmentLine: Record "Warehouse Shipment Line"; WarehouseShipmentHeader: Record "Warehouse Shipment Header"; PurchaseLine: Record "Purchase Line")
begin
end;
[IntegrationEvent(false, false)]
local procedure OnFromPurchLine2ShptLineOnBeforeCreateShptLine(var WarehouseShipmentLine: Record "Warehouse Shipment Line"; WarehouseShipmentHeader: Record "Warehouse Shipment Header"; PurchaseLine: Record "Purchase Line")
begin
end;
[IntegrationEvent(false, false)]
local procedure OnAfterCreateShptLineFromPurchLine(var WarehouseShipmentLine: Record "Warehouse Shipment Line"; WarehouseShipmentHeader: Record "Warehouse Shipment Header"; PurchaseLine: Record "Purchase Line")
begin
end;
[IntegrationEvent(false, false)]
local procedure OnBeforePurchLine2ReceiptLine(WarehouseReceiptHeader: Record "Warehouse Receipt Header"; var PurchaseLine: Record "Purchase Line"; var IsHandled: Boolean; var Result: Boolean)
begin
end;
[IntegrationEvent(false, false)]
local procedure OnPurchLine2ReceiptLineOnAfterInitNewLine(var WarehouseReceiptLine: Record "Warehouse Receipt Line"; WarehouseReceiptHeader: Record "Warehouse Receipt Header"; PurchaseLine: Record "Purchase Line"; var IsHandled: Boolean)
begin
end;
[IntegrationEvent(false, false)]
local procedure OnPurchLine2ReceiptLineOnAfterSetQtysOnRcptLine(var WarehouseReceiptLine: Record "Warehouse Receipt Line"; PurchaseLine: Record "Purchase Line")
begin
end;
[IntegrationEvent(false, false)]
local procedure OnPurchLine2ReceiptLineOnAfterUpdateReceiptLine(var WarehouseReceiptLine: Record "Warehouse Receipt Line"; var WhseReceiptHeader: Record "Warehouse Receipt Header"; PurchaseLine: Record "Purchase Line")
begin
end;
[IntegrationEvent(false, false)]
local procedure OnAfterCreateRcptLineFromPurchLine(var WarehouseReceiptLine: Record "Warehouse Receipt Line"; WarehouseReceiptHeader: Record "Warehouse Receipt Header"; PurchaseLine: Record "Purchase Line")
begin
end;
[IntegrationEvent(false, false)]
local procedure OnBeforeCheckIfPurchLine2ReceiptLine(var PurchaseLine: Record "Purchase Line"; var ReturnValue: Boolean; var IsHandled: Boolean)
begin
end;
[IntegrationEvent(false, false)]
local procedure OnBeforeCheckIfPurchLine2ShptLine(var PurchaseLine: Record "Purchase Line"; var ReturnValue: Boolean; var IsHandled: Boolean)
begin
end;
[IntegrationEvent(false, false)]
local procedure OnSetFiltersOnSourceTablesOnBeforeSetPurchaseTableView(var WarehouseSourceFilter: Record "Warehouse Source Filter"; var WarehouseRequest: Record "Warehouse Request"; var PurchaseHeader: Record "Purchase Header"; var PurchaseLine: Record "Purchase Line")
begin
end;
[IntegrationEvent(false, false)]
local procedure OnAfterGetQuantityRelatedParameter(PurchaseLine: Record "Purchase Line"; var QtyPerUoM: Decimal; var QtyBasePurchaseLine: Decimal)
begin
end;
[EventSubscriber(ObjectType::Codeunit, Codeunit::"Whse. Management", 'OnAfterGetSrcDocLineQtyOutstanding', '', false, false)]
local procedure OnAfterGetSrcDocLineQtyOutstanding(SourceType: Integer; SourceSubType: Integer; SourceNo: Code[20]; SourceLineNo: Integer; var QtyBaseOutstanding: Decimal; var QtyOutstanding: Decimal)
var
PurchaseLine: Record "Purchase Line";
begin
if SourceType = Database::"Purchase Line" then
if PurchaseLine.Get(SourceSubType, SourceNo, SourceLineNo) then begin
QtyOutstanding := PurchaseLine."Outstanding Quantity";
QtyBaseOutstanding := PurchaseLine."Outstanding Qty. (Base)";
end;
end;
[EventSubscriber(ObjectType::Codeunit, Codeunit::"Whse. Management", 'OnAfterGetSourceDocumentType', '', false, false)]
local procedure WhseManagementGetSourceDocumentType(SourceType: Integer; SourceSubType: Integer; var SourceDocument: Enum "Warehouse Journal Source Document"; var IsHandled: Boolean)
begin
if SourceType = Database::"Purchase Line" then begin
case SourceSubtype of
1:
SourceDocument := "Warehouse Journal Source Document"::"P. Order";
2:
SourceDocument := "Warehouse Journal Source Document"::"P. Invoice";
3:
SourceDocument := "Warehouse Journal Source Document"::"P. Credit Memo";
5:
SourceDocument := "Warehouse Journal Source Document"::"P. Return Order";
end;
IsHandled := true;
end;
end;
[EventSubscriber(ObjectType::Codeunit, Codeunit::"Whse. Management", 'OnAfterGetJournalSourceDocument', '', false, false)]
local procedure WhseManagementGetJournalSourceDocument(SourceType: Integer; SourceSubType: Integer; var SourceDocument: Enum "Warehouse Journal Source Document"; var IsHandled: Boolean)
begin
if SourceType = Database::"Purchase Line" then begin
case SourceSubtype of
1:
SourceDocument := SourceDocument::"P. Order";
2:
SourceDocument := SourceDocument::"P. Invoice";
3:
SourceDocument := SourceDocument::"P. Credit Memo";
5:
SourceDocument := SourceDocument::"P. Return Order";
end;
IsHandled := true;
end;
end;
[EventSubscriber(ObjectType::Report, Report::"Create Pick", 'OnCheckSourceDocument', '', false, false)]
local procedure CreatePickOnCheckSourceDocument(var PickWhseWkshLine: Record "Whse. Worksheet Line")
var
PurchLine: Record "Purchase Line";
begin
if PickWhseWkshLine."Source Type" = Database::"Purchase Line" then begin
PurchLine.SetRange("Document Type", PickWhseWkshLine."Source Subtype");
PurchLine.SetRange("Document No.", PickWhseWkshLine."Source No.");
PurchLine.SetRange("Line No.", PickWhseWkshLine."Source Line No.");
if PurchLine.IsEmpty() then
Error(WhseManagement.GetSourceDocumentDoesNotExistErr(), PurchLine.TableCaption(), PurchLine.GetFilters());
end;
end;
}