Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -208,6 +208,35 @@ codeunit 137404 "SCM Manufacturing"
CopyProductionOrder(ProductionOrder.Status::Released);
end;

[Test]
[HandlerFunctions('CopyProdOrderDocLookupRequestPageHandler,ProductionOrderListModalPageHandler')]
[Scope('OnPrem')]
procedure CopyProductionOrderDocumentLookupExcludesTargetOrder()
var
TargetProductionOrder: Record "Production Order";
SourceProductionOrder: Record "Production Order";
CopyProductionOrderDocument: Report "Copy Production Order Document";
begin
// [FEATURE] [Copy Production Order]
// [SCENARIO 641331] The Copy Production Order Document lookup does not list the target production order itself.
Initialize();

// [GIVEN] A target Released production order and another Released production order to copy from
CreateReleasedProductionOrder(TargetProductionOrder);
CreateReleasedProductionOrder(SourceProductionOrder);

// [WHEN] Opening the Document No. lookup for the target with status Released
LibraryVariableStorage.Enqueue("Production Order Status"::Released);
LibraryVariableStorage.Enqueue(TargetProductionOrder."No.");
LibraryVariableStorage.Enqueue(SourceProductionOrder."No.");
Clear(CopyProductionOrderDocument);
CopyProductionOrderDocument.SetProdOrder(TargetProductionOrder);
CopyProductionOrderDocument.Run();

// [THEN] The target is absent from the lookup and the source can be selected (verified in the handlers)
LibraryVariableStorage.AssertEmpty();
end;

local procedure CopyProductionOrder(Status: Enum "Production Order Status")
var
ProductionOrder: Record "Production Order";
Expand Down Expand Up @@ -7354,6 +7383,35 @@ codeunit 137404 "SCM Manufacturing"
CopyProductionOrderDocument.OK().Invoke();
end;

[RequestPageHandler]
[Scope('OnPrem')]
procedure CopyProdOrderDocLookupRequestPageHandler(var CopyProductionOrderDocument: TestRequestPage "Copy Production Order Document")
begin
CopyProductionOrderDocument.Status.SetValue(LibraryVariableStorage.DequeueInteger());
CopyProductionOrderDocument.DocumentNo.Lookup();
CopyProductionOrderDocument.Cancel().Invoke();
end;

[ModalPageHandler]
[Scope('OnPrem')]
procedure ProductionOrderListModalPageHandler(var ProductionOrderList: TestPage "Production Order List")
var
TargetNo: Code[20];
SourceNo: Code[20];
begin
TargetNo := CopyStr(LibraryVariableStorage.DequeueText(), 1, MaxStrLen(TargetNo));
SourceNo := CopyStr(LibraryVariableStorage.DequeueText(), 1, MaxStrLen(SourceNo));

// The target production order must not appear in the lookup.
ProductionOrderList.Filter.SetFilter("No.", TargetNo);
Assert.IsFalse(ProductionOrderList.First(), 'The target production order must not appear in the Copy Production Order Document lookup.');

// The source production order can be selected.
ProductionOrderList.Filter.SetFilter("No.", SourceNo);
Assert.IsTrue(ProductionOrderList.First(), 'The source production order should be selectable in the lookup.');
ProductionOrderList.OK().Invoke();
end;

[RequestPageHandler]
[Scope('OnPrem')]
procedure ImplementRegisteredAbsenceHandler(var ImplementRegisteredAbsence: TestRequestPage "Implement Registered Absence")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -129,6 +129,8 @@ report 99003802 "Copy Production Order Document"
local procedure LookupDocNo()
begin
FromProdOrder.SetRange(Status, StatusType);
if ToProdOrder.Status = StatusType then
FromProdOrder.SetFilter("No.", '<>%1', ToProdOrder."No.");
FromProdOrder."No." := DocNo;
if PAGE.RunModal(0, FromProdOrder) = ACTION::LookupOK then
DocNo := FromProdOrder."No.";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -208,6 +208,35 @@ codeunit 137404 "SCM Manufacturing"
CopyProductionOrder(ProductionOrder.Status::Released);
end;

[Test]
[HandlerFunctions('CopyProdOrderDocLookupRequestPageHandler,ProductionOrderListModalPageHandler')]
[Scope('OnPrem')]
procedure CopyProductionOrderDocumentLookupExcludesTargetOrder()
var
TargetProductionOrder: Record "Production Order";
SourceProductionOrder: Record "Production Order";
CopyProductionOrderDocument: Report "Copy Production Order Document";
begin
// [FEATURE] [Copy Production Order]
// [SCENARIO 641331] The Copy Production Order Document lookup does not list the target production order itself.
Initialize();

// [GIVEN] A target Released production order and another Released production order to copy from
CreateReleasedProductionOrder(TargetProductionOrder);
CreateReleasedProductionOrder(SourceProductionOrder);

// [WHEN] Opening the Document No. lookup for the target with status Released
LibraryVariableStorage.Enqueue("Production Order Status"::Released);
LibraryVariableStorage.Enqueue(TargetProductionOrder."No.");
LibraryVariableStorage.Enqueue(SourceProductionOrder."No.");
Clear(CopyProductionOrderDocument);
CopyProductionOrderDocument.SetProdOrder(TargetProductionOrder);
CopyProductionOrderDocument.Run();

// [THEN] The target is absent from the lookup and the source can be selected (verified in the handlers)
LibraryVariableStorage.AssertEmpty();
end;

local procedure CopyProductionOrder(Status: Enum "Production Order Status")
var
ProductionOrder: Record "Production Order";
Expand Down Expand Up @@ -7350,6 +7379,35 @@ codeunit 137404 "SCM Manufacturing"
CopyProductionOrderDocument.OK().Invoke();
end;

[RequestPageHandler]
[Scope('OnPrem')]
procedure CopyProdOrderDocLookupRequestPageHandler(var CopyProductionOrderDocument: TestRequestPage "Copy Production Order Document")
begin
CopyProductionOrderDocument.Status.SetValue(LibraryVariableStorage.DequeueInteger());
CopyProductionOrderDocument.DocumentNo.Lookup();
CopyProductionOrderDocument.Cancel().Invoke();
end;

[ModalPageHandler]
[Scope('OnPrem')]
procedure ProductionOrderListModalPageHandler(var ProductionOrderList: TestPage "Production Order List")
var
TargetNo: Code[20];
SourceNo: Code[20];
begin
TargetNo := CopyStr(LibraryVariableStorage.DequeueText(), 1, MaxStrLen(TargetNo));
SourceNo := CopyStr(LibraryVariableStorage.DequeueText(), 1, MaxStrLen(SourceNo));

// The target production order must not appear in the lookup.
ProductionOrderList.Filter.SetFilter("No.", TargetNo);
Assert.IsFalse(ProductionOrderList.First(), 'The target production order must not appear in the Copy Production Order Document lookup.');

// The source production order can be selected.
ProductionOrderList.Filter.SetFilter("No.", SourceNo);
Assert.IsTrue(ProductionOrderList.First(), 'The source production order should be selectable in the lookup.');
ProductionOrderList.OK().Invoke();
end;

[RequestPageHandler]
[Scope('OnPrem')]
procedure ImplementRegisteredAbsenceHandler(var ImplementRegisteredAbsence: TestRequestPage "Implement Registered Absence")
Expand Down
Loading