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 @@ -272,7 +272,7 @@ page 6181 "E-Document Purchase Draft"
}
part(ErrorMessagesFactBox; "Error Messages Part")
{
Visible = false;
Visible = HasErrorsOrWarnings;
ShowFilter = false;
UpdatePropagation = Both;
}
Expand Down Expand Up @@ -524,7 +524,7 @@ page 6181 "E-Document Purchase Draft"
SetPageCaption();

Rec.CalcFields("Import Processing Status");
ShowFinalizeDraftAction := Rec."Import Processing Status" = Enum::"Import E-Doc. Proc. Status"::"Draft Ready";
ShowFinalizeDraftAction := Rec."Import Processing Status" in [Enum::"Import E-Doc. Proc. Status"::"Ready for draft", Enum::"Import E-Doc. Proc. Status"::"Draft Ready"];
ShowAnalyzeDocumentAction :=
(Rec."Import Processing Status" = Enum::"Import E-Document Steps"::"Structure received data") and
(Rec.Status = Enum::"E-Document Status"::Error);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -332,6 +332,60 @@ codeunit 139883 "E-Doc Process Test"
Assert.RecordIsEmpty(PurchaseHeader);
end;

[Test]
procedure FinishDraftFromReadyForDraftStateSucceeds()
var
EDocument: Record "E-Document";
EDocImportParameters: Record "E-Doc. Import Parameters";
PurchaseHeader: Record "Purchase Header";
EDocLogRecord: Record "E-Document Log";
EDocumentPurchaseHeader: Record "E-Document Purchase Header";
EDocumentPurchaseLine: Record "E-Document Purchase Line";
EDocImport: Codeunit "E-Doc. Import";
EDocumentLog: Codeunit "E-Document Log";
EDocumentProcessing: Codeunit "E-Document Processing";
begin
// [SCENARIO] When finalize action is invoked from Ready for draft state, the system should automatically run Prepare draft first and then Finish draft
Initialize(Enum::"Service Integration"::"Mock");
LibraryEDoc.CreateInboundEDocument(EDocument, EDocumentService);
EDocument."Document Type" := "E-Document Type"::"Purchase Invoice";
EDocument.Modify();
EDocumentService."Import Process" := "E-Document Import Process"::"Version 2.0";
EDocumentService.Modify();

EDocumentPurchaseHeader."E-Document Entry No." := EDocument."Entry No";
EDocumentPurchaseHeader."Vendor VAT Id" := Vendor."VAT Registration No.";
EDocumentPurchaseHeader.Insert();
EDocumentPurchaseLine."E-Document Entry No." := EDocument."Entry No";
EDocumentPurchaseLine."Product Code" := '1234';
EDocumentPurchaseLine.Description := 'Test description';
EDocumentPurchaseLine.Insert();

EDocumentLog.SetBlob('Test', Enum::"E-Doc. File Format"::XML, 'Data');
EDocumentLog.SetFields(EDocument, EDocumentService);
EDocLogRecord := EDocumentLog.InsertLog(Enum::"E-Document Service Status"::Imported, Enum::"Import E-Doc. Proc. Status"::Readable);

EDocument."Structured Data Entry No." := EDocLogRecord."E-Doc. Data Storage Entry No.";
EDocument.Modify();

// [GIVEN] E-Document is in Ready for draft state
EDocumentProcessing.ModifyEDocumentProcessingStatus(EDocument, "Import E-Doc. Proc. Status"::"Ready for draft");
EDocument.CalcFields("Import Processing Status");
Assert.AreEqual(Enum::"Import E-Doc. Proc. Status"::"Ready for draft", EDocument."Import Processing Status", 'The status should be Ready for draft before processing.');

// [WHEN] Finish draft step is executed (simulating finalize action)
EDocImportParameters."Step to Run" := "Import E-Document Steps"::"Finish draft";
EDocImportParameters."Processing Customizations" := "E-Doc. Proc. Customizations"::"Mock Create Purchase Invoice";
EDocImport.ProcessIncomingEDocument(EDocument, EDocImportParameters);

// [THEN] The document is processed (the system ran Prepare draft automatically and then Finish draft)
EDocument.CalcFields("Import Processing Status");
Assert.AreEqual(Enum::"Import E-Doc. Proc. Status"::Processed, EDocument."Import Processing Status", 'The status should be Processed after finalize action from Ready for draft state.');

PurchaseHeader.SetRange("E-Document Link", EDocument.SystemId);
Assert.IsTrue(PurchaseHeader.FindFirst(), 'The purchase header should be created.');
end;

#region HistoricalMatchingTest

[Test]
Expand Down
Loading