...
UpdateOrderTracking(TempSurplusEntry);
END ELSE
CloseReservEntry(ReservEntry,TRUE,FALSE);
END;
// Delete the following lines.
PROCEDURE CloseReservEntry@20(ReservEntry@1000 : Record 337;ReTrack@1001 : Boolean;DeleteAll@1002 : Boolean);
VAR
ReservEntry2@1003 : Record 337;
SurplusReservEntry@1004 : Record 337;
DummyReservEntry@1005 : Record 337;
TotalQty@1006 : Decimal;
AvailabilityDate@1007 : Date;
BEGIN
ReservEntry.DELETE;
GetItem(ReservEntry."Item No.");
IF ReservEntry."Reservation Status" = ReservEntry."Reservation Status"::Prospect THEN
EXIT;
IF ReservEntry."Reservation Status" = ReservEntry."Reservation Status"::Surplus THEN BEGIN
IF Item."Order Tracking Policy" = Item."Order Tracking Policy"::"Tracking & Action Msg." THEN
ReservMgt.ModifyActionMessage(ReservEntry."Entry No.",0,TRUE); // Delete related action messages
END ELSE BEGIN
IF ReservEntry.Binding = ReservEntry.Binding::"Order-to-Order" THEN
IF Item."Order Tracking Policy" = Item."Order Tracking Policy"::"Tracking & Action Msg." THEN
ReservMgt.ModifyActionMessage(ReservEntry."Entry No.",0,TRUE); // Delete related action messages
ReservEntry2.GET(ReservEntry."Entry No.",NOT ReservEntry.Positive);
IF (Item."Order Tracking Policy" = Item."Order Tracking Policy"::None) AND
(((ReservEntry.Binding = ReservEntry.Binding::"Order-to-Order") AND ReservEntry2.Positive )OR
((ReservEntry2."Serial No." = '') AND (ReservEntry2."Lot No." = ''))) THEN
ReservEntry2.DELETE
ELSE BEGIN
ReservEntry2."Reservation Status" := ReservEntry2."Reservation Status"::Surplus;
IF ReservEntry2.Positive THEN BEGIN
AvailabilityDate := ReservEntry2."Expected Receipt Date";
ReservEntry2."Shipment Date" := 0D
END ELSE BEGIN
AvailabilityDate := ReservEntry2."Shipment Date";
ReservEntry2."Expected Receipt Date" := 0D;
END;
ReservEntry2.MODIFY;
ReservEntry2."Quantity (Base)" :=
ReservMgt.MatchSurplus(ReservEntry2,SurplusReservEntry,ReservEntry2."Quantity (Base)",NOT ReservEntry2.Positive,
AvailabilityDate,Item."Order Tracking Policy");
IF ReservEntry2."Quantity (Base)" = 0 THEN BEGIN
ReservEntry2.DELETE(TRUE);
END ELSE BEGIN
ReservEntry2.MODIFY;
IF Item."Order Tracking Policy" = Item."Order Tracking Policy"::"Tracking & Action Msg." THEN BEGIN
ModifyActionMessageDating(ReservEntry2);
IF DeleteAll THEN
ReservMgt.IssueActionMessage(ReservEntry2,FALSE,ReservEntry)
ELSE
ReservMgt.IssueActionMessage(ReservEntry2,FALSE,DummyReservEntry);
END;
END;
END;
END;
IF ReTrack THEN BEGIN
TotalQty := ReservMgt.SourceQuantity(ReservEntry,TRUE);
ReservMgt.AutoTrack(TotalQty);
END;
END;
PROCEDURE ModifyReservEntry@68(ReservEntry@1000 : Record 337;NewQuantity@1001 : Decimal;NewDescription@1002 : Text[50];ModifyReserved@1003 : Boolean);
VAR
TotalQty@1004 : Decimal;
BEGIN
ReservEntry.TESTFIELD("Reservation Status",ReservEntry."Reservation Status"::Reservation);
IF NewQuantity * ReservEntry."Quantity (Base)" < 0 THEN
IF NewQuantity < 0 THEN
ERROR(Text000,ReservEntry.FIELDCAPTION("Quantity (Base)"))
ELSE
ERROR(Text001,ReservEntry.FIELDCAPTION("Quantity (Base)"));
IF NewQuantity = 0 THEN
ERROR(Text002);
IF ABS(NewQuantity) > ABS(ReservEntry."Quantity (Base)") THEN
ERROR(Text003,ReservEntry.FIELDCAPTION("Quantity (Base)"));
IF ModifyReserved THEN BEGIN
IF ReservEntry."Item No." <> Item."No." THEN
GetItem(ReservEntry."Item No.");
ReservEntry.GET(ReservEntry."Entry No.",ReservEntry.Positive); // Get existing entry
ReservEntry.VALIDATE("Quantity (Base)",NewQuantity);
ReservEntry.Description := NewDescription;
ReservEntry."Changed By" := USERID;
ReservEntry.MODIFY;
IF Item."Order Tracking Policy" > Item."Order Tracking Policy"::None THEN BEGIN
TotalQty := ReservMgt.SourceQuantity(ReservEntry,TRUE);
ReservMgt.AutoTrack(TotalQty);
END;
IF ReservEntry.GET(ReservEntry."Entry No.",NOT ReservEntry.Positive) THEN BEGIN // Get related entry
ReservEntry.VALIDATE("Quantity (Base)",-NewQuantity);
ReservEntry.Description := NewDescription;
ReservEntry."Changed By" := USERID;
ReservEntry.MODIFY;
IF Item."Order Tracking Policy" > Item."Order Tracking Policy"::None THEN BEGIN
TotalQty := ReservMgt.SourceQuantity(ReservEntry,TRUE);
ReservMgt.AutoTrack(TotalQty);
END;
// End of the lines.
END;
END;
END;
...
...
UpdateOrderTracking(TempSurplusEntry);
END ELSE
CloseReservEntry(ReservEntry,TRUE,FALSE);
END;
// Add the following lines.
LOCAL PROCEDURE RevertDateToSourceDate@49(VAR ReservEntry@1000 : Record 337);
VAR
SalesLine@1002 : Record 37;
PurchaseLine@1003 : Record 39;
TransferLine@1004 : Record 5741;
ServiceLine@1005 : Record 5902;
ProdOrderLine@1006 : Record 5406;
RequisitionLine@1007 : Record 246;
ProdOrderComponent@1008 : Record 5407;
PlanningComponent@1009 : Record 99000829;
JobJournalLine@1010 : Record 210;
ItemJournalLine@1011 : Record 83;
BOMJournalLine@1012 : Record 89;
ItemLedgerEntry@1013 : Record 32;
BEGIN
WITH ReservEntry DO BEGIN
CASE "Source Type" OF
DATABASE::"Sales Line":
BEGIN
SalesLine.GET("Source Subtype","Source ID","Source Ref. No.");
IF SalesLine.Quantity < 0 THEN
ChangeDateFieldOnResEntry(ReservEntry,ReservEntry."Expected Receipt Date",TRUE)
ELSE
ChangeDateFieldOnResEntry(ReservEntry,SalesLine."Shipment Date",FALSE);
END;
DATABASE::"Purchase Line":
BEGIN
PurchaseLine.GET("Source Subtype","Source ID","Source Ref. No.");
IF PurchaseLine.Quantity < 0 THEN
ChangeDateFieldOnResEntry(ReservEntry,"Shipment Date",TRUE)
ELSE
ChangeDateFieldOnResEntry(ReservEntry,PurchaseLine."Expected Receipt Date",FALSE);
END;
DATABASE::"Requisition Line":
BEGIN
RequisitionLine.GET("Source ID","Source Batch Name","Source Ref. No.");
ChangeDateFieldOnResEntry(ReservEntry,RequisitionLine."Due Date",FALSE);
END;
DATABASE::"Planning Component":
BEGIN
PlanningComponent.GET("Source ID","Source Batch Name","Source Prod. Order Line","Source Ref. No.");
ChangeDateFieldOnResEntry(ReservEntry,PlanningComponent."Due Date",FALSE);
END;
DATABASE::"BOM Journal Line":
BEGIN
BOMJournalLine.GET("Source ID","Source Batch Name","Source Ref. No.");
ChangeDateFieldOnResEntry(ReservEntry,BOMJournalLine."Posting Date",FALSE);
END;
DATABASE::"Item Journal Line":
BEGIN
ItemJournalLine.GET("Source ID","Source Batch Name","Source Ref. No.");
ChangeDateFieldOnResEntry(ReservEntry,ItemJournalLine."Posting Date",FALSE);
END;
DATABASE::"Job Journal Line":
BEGIN
JobJournalLine.GET("Source ID","Source Batch Name","Source Ref. No.");
ChangeDateFieldOnResEntry(ReservEntry,JobJournalLine."Posting Date",FALSE);
END;
DATABASE::"Item Ledger Entry":
BEGIN
ItemLedgerEntry.GET("Source Ref. No.");
ChangeDateFieldOnResEntry(ReservEntry,ItemLedgerEntry."Posting Date",FALSE);
END;
DATABASE::"Prod. Order Line":
BEGIN
ProdOrderLine.GET("Source Subtype","Source ID","Source Prod. Order Line");
ChangeDateFieldOnResEntry(ReservEntry,ProdOrderLine."Due Date",FALSE);
END;
DATABASE::"Prod. Order Component":
BEGIN
ProdOrderComponent.GET("Source Subtype","Source ID","Source Prod. Order Line","Source Ref. No.");
ChangeDateFieldOnResEntry(ReservEntry,ProdOrderComponent."Due Date",FALSE);
EXIT;
END;
DATABASE::"Transfer Line":
BEGIN
TransferLine.GET("Source ID","Source Ref. No.");
IF ReservEntry.Positive THEN
ChangeDateFieldOnResEntry(ReservEntry,TransferLine."Receipt Date",FALSE)
ELSE
ChangeDateFieldOnResEntry(ReservEntry,TransferLine."Shipment Date",FALSE);
END;
DATABASE::"Service Line":
BEGIN
ServiceLine.GET("Source Subtype","Source ID","Source Ref. No.");
ChangeDateFieldOnResEntry(ReservEntry,ServiceLine."Posting Date",FALSE);
END;
// End of the lines.
END;
END;
END;
...