diff --git a/Apps/APAC/EDocumentFormats/PINT A-NZ/app/src/Core/EDocumentPINTANZHandler.Codeunit.al b/Apps/APAC/EDocumentFormats/PINT A-NZ/app/src/Core/EDocumentPINTANZHandler.Codeunit.al
new file mode 100644
index 0000000000..7f5213a426
--- /dev/null
+++ b/Apps/APAC/EDocumentFormats/PINT A-NZ/app/src/Core/EDocumentPINTANZHandler.Codeunit.al
@@ -0,0 +1,291 @@
+namespace Microsoft.eServices.EDocument.Format;
+
+using Microsoft.eServices.EDocument;
+using Microsoft.eServices.EDocument.Helpers;
+using Microsoft.eServices.EDocument.Processing.Import;
+using Microsoft.eServices.EDocument.Processing.Import.Purchase;
+using Microsoft.eServices.EDocument.Processing.Interfaces;
+using Microsoft.eServices.EDocument.Service.Participant;
+using Microsoft.Purchases.Vendor;
+using System.Utilities;
+
+codeunit 28008 "E-Document PINT A-NZ Handler" implements IStructuredFormatReader
+{
+ Access = Internal;
+ InherentEntitlements = X;
+ InherentPermissions = X;
+
+ var
+ EDocumentImportHelper: Codeunit "E-Document Import Helper";
+ GLNSchemeIdTok: Label '0088', Locked = true;
+
+ ///
+ /// Reads a PINT A-NZ format XML document and converts it into a draft purchase document.
+ /// This procedure processes both Invoice and CreditNote document types and populates the E-Document Purchase Header with the extracted data.
+ ///
+ /// The E-Document record that contains the document metadata and information.
+ /// A temporary blob containing the XML document stream to be processed.
+ /// Returns an enum indicating that the process resulted in a purchase document draft.
+ internal procedure ReadIntoDraft(EDocument: Record "E-Document"; TempBlob: Codeunit "Temp Blob"): Enum "E-Doc. Process Draft"
+ var
+ EDocumentPurchaseHeader: Record "E-Document Purchase Header";
+ PINTANZXml: XmlDocument;
+ XmlNamespaces: XmlNamespaceManager;
+ XmlElement: XmlElement;
+ CommonAggregateComponentsTok: Label 'urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2', Locked = true;
+ CommonBasicComponentsTok: Label 'urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2', Locked = true;
+ DefaultInvoiceTok: Label 'urn:oasis:names:specification:ubl:schema:xsd:Invoice-2', Locked = true;
+ DefaultCreditNoteTok: Label 'urn:oasis:names:specification:ubl:schema:xsd:CreditNote-2', Locked = true;
+ begin
+ EDocumentPurchaseHeader.InsertForEDocument(EDocument);
+
+ XmlDocument.ReadFrom(TempBlob.CreateInStream(TextEncoding::UTF8), PINTANZXml);
+ XmlNamespaces.AddNamespace('cac', CommonAggregateComponentsTok);
+ XmlNamespaces.AddNamespace('cbc', CommonBasicComponentsTok);
+ XmlNamespaces.AddNamespace('inv', DefaultInvoiceTok);
+ XmlNamespaces.AddNamespace('cn', DefaultCreditNoteTok);
+
+ PINTANZXml.GetRoot(XmlElement);
+ case UpperCase(XmlElement.LocalName()) of
+ 'INVOICE':
+ PopulateEDocumentForInvoice(PINTANZXml, XmlNamespaces, EDocumentPurchaseHeader, EDocument);
+ 'CREDITNOTE':
+ PopulateEDocumentForCreditNote(PINTANZXml, XmlNamespaces, EDocumentPurchaseHeader, EDocument);
+ end;
+
+ EDocumentPurchaseHeader.Modify(false);
+ EDocument.Direction := EDocument.Direction::Incoming;
+ exit(Enum::"E-Doc. Process Draft"::"Purchase Document");
+ end;
+
+ ///
+ /// Displays a readable view of the processed E-Document purchase information.
+ /// This procedure opens a page showing the purchase header and lines in a user-friendly format for review.
+ ///
+ /// The E-Document record that contains the document to be displayed.
+ /// A temporary blob containing the document data (not used in current implementation).
+ internal procedure View(EDocument: Record "E-Document"; TempBlob: Codeunit "Temp Blob")
+ var
+ EDocPurchaseHeader: Record "E-Document Purchase Header";
+ EDocPurchaseLine: Record "E-Document Purchase Line";
+ EDocReadablePurchaseDoc: Page "E-Doc. Readable Purchase Doc.";
+ begin
+ EDocPurchaseHeader.GetFromEDocument(EDocument);
+ EDocPurchaseLine.SetRange("E-Document Entry No.", EDocPurchaseHeader."E-Document Entry No.");
+ EDocReadablePurchaseDoc.SetBuffer(EDocPurchaseHeader, EDocPurchaseLine);
+ EDocReadablePurchaseDoc.Run();
+ end;
+
+#pragma warning disable AA0139 // false positive: overflow handled by SetStringValueInField
+ local procedure PopulateEDocumentForInvoice(PINTANZXml: XmlDocument; XmlNamespaces: XmlNamespaceManager; var EDocumentPurchaseHeader: Record "E-Document Purchase Header"; var EDocument: Record "E-Document")
+ var
+ EDocumentXMLHelper: Codeunit "EDocument XML Helper";
+ VendorNo: Code[20];
+ begin
+ EDocumentPurchaseHeader."E-Document Type" := "E-Document Type"::"Purchase Invoice";
+ EDocumentXMLHelper.SetStringValueInField(PINTANZXml, XmlNamespaces, '/inv:Invoice/cbc:ID', MaxStrLen(EDocumentPurchaseHeader."Sales Invoice No."), EDocumentPurchaseHeader."Sales Invoice No.");
+ EDocumentXMLHelper.SetStringValueInField(PINTANZXml, XmlNamespaces, '/inv:Invoice/cac:OrderReference/cbc:ID', MaxStrLen(EDocumentPurchaseHeader."Purchase Order No."), EDocumentPurchaseHeader."Purchase Order No.");
+ EDocumentXMLHelper.SetDateValueInField(PINTANZXml, XmlNamespaces, '/inv:Invoice/cbc:IssueDate', EDocumentPurchaseHeader."Document Date");
+ EDocumentXMLHelper.SetDateValueInField(PINTANZXml, XmlNamespaces, '/inv:Invoice/cbc:DueDate', EDocumentPurchaseHeader."Due Date");
+ EDocumentXMLHelper.SetCurrencyValueInField(PINTANZXml, XmlNamespaces, '/inv:Invoice/cbc:DocumentCurrencyCode', MaxStrLen(EDocumentPurchaseHeader."Currency Code"), EDocumentPurchaseHeader."Currency Code");
+ EDocumentXMLHelper.SetNumberValueInField(PINTANZXml, XmlNamespaces, '/inv:Invoice/cac:LegalMonetaryTotal/cbc:TaxExclusiveAmount', EDocumentPurchaseHeader."Sub Total");
+ EDocumentXMLHelper.SetNumberValueInField(PINTANZXml, XmlNamespaces, '/inv:Invoice/cac:LegalMonetaryTotal/cbc:PayableAmount', EDocumentPurchaseHeader.Total);
+ EDocumentPurchaseHeader."Amount Due" := EDocumentPurchaseHeader.Total;
+ VendorNo := ParseAccountingSupplierPartyForPurchaseHeader(PINTANZXml, XmlNamespaces, EDocumentPurchaseHeader, EDocument, 'inv:Invoice');
+ ParseAccountingCustomerPartyForPurchaseHeader(PINTANZXml, XmlNamespaces, EDocumentPurchaseHeader, 'inv:Invoice');
+ if VendorNo <> '' then
+ EDocumentPurchaseHeader."[BC] Vendor No." := VendorNo;
+ InsertPINTANZPurchaseInvoiceLines(PINTANZXml, XmlNamespaces, EDocumentPurchaseHeader."E-Document Entry No.");
+ end;
+
+ local procedure PopulateEDocumentForCreditNote(PINTANZXml: XmlDocument; XmlNamespaces: XmlNamespaceManager; var EDocumentPurchaseHeader: Record "E-Document Purchase Header"; var EDocument: Record "E-Document")
+ var
+ EDocumentXMLHelper: Codeunit "EDocument XML Helper";
+ VendorNo: Code[20];
+ begin
+ EDocumentPurchaseHeader."E-Document Type" := "E-Document Type"::"Purchase Credit Memo";
+ EDocumentXMLHelper.SetStringValueInField(PINTANZXml, XmlNamespaces, '/cn:CreditNote/cbc:ID', MaxStrLen(EDocumentPurchaseHeader."Sales Invoice No."), EDocumentPurchaseHeader."Sales Invoice No.");
+ EDocumentXMLHelper.SetStringValueInField(PINTANZXml, XmlNamespaces, '/cn:CreditNote/cac:OrderReference/cbc:ID', MaxStrLen(EDocumentPurchaseHeader."Purchase Order No."), EDocumentPurchaseHeader."Purchase Order No.");
+ EDocumentXMLHelper.SetDateValueInField(PINTANZXml, XmlNamespaces, '/cn:CreditNote/cbc:IssueDate', EDocumentPurchaseHeader."Document Date");
+ EDocumentXMLHelper.SetDateValueInField(PINTANZXml, XmlNamespaces, '/cn:CreditNote/cac:PaymentMeans/cbc:PaymentDueDate', EDocumentPurchaseHeader."Due Date");
+ EDocumentXMLHelper.SetCurrencyValueInField(PINTANZXml, XmlNamespaces, '/cn:CreditNote/cbc:DocumentCurrencyCode', MaxStrLen(EDocumentPurchaseHeader."Currency Code"), EDocumentPurchaseHeader."Currency Code");
+ EDocumentXMLHelper.SetNumberValueInField(PINTANZXml, XmlNamespaces, '/cn:CreditNote/cac:LegalMonetaryTotal/cbc:TaxExclusiveAmount', EDocumentPurchaseHeader."Sub Total");
+ EDocumentXMLHelper.SetNumberValueInField(PINTANZXml, XmlNamespaces, '/cn:CreditNote/cac:LegalMonetaryTotal/cbc:PayableAmount', EDocumentPurchaseHeader.Total);
+ EDocumentPurchaseHeader."Amount Due" := EDocumentPurchaseHeader.Total;
+ VendorNo := ParseAccountingSupplierPartyForPurchaseHeader(PINTANZXml, XmlNamespaces, EDocumentPurchaseHeader, EDocument, 'cn:CreditNote');
+ ParseAccountingCustomerPartyForPurchaseHeader(PINTANZXml, XmlNamespaces, EDocumentPurchaseHeader, 'cn:CreditNote');
+ if VendorNo <> '' then
+ EDocumentPurchaseHeader."[BC] Vendor No." := VendorNo;
+ InsertPINTANZPurchaseInvoiceLines(PINTANZXml, XmlNamespaces, EDocumentPurchaseHeader."E-Document Entry No.");
+ end;
+#pragma warning disable AA0139 // false positive: overflow handled by SetStringValueInField
+
+ local procedure ParseAccountingSupplierPartyForPurchaseHeader(PINTANZXml: XmlDocument; XmlNamespaces: XmlNamespaceManager; var EDocumentPurchaseHeader: Record "E-Document Purchase Header"; var EDocument: Record "E-Document"; DocumentType: Text) VendorNo: Code[20]
+ var
+ EDocumentXMLHelper: Codeunit "EDocument XML Helper";
+ VendorName, VendorAddress, VendorParticipantId : Text;
+ VATRegistrationNo: Text[20];
+ GLN: Code[13];
+ ABN: Code[11];
+ XMLNode: XmlNode;
+ ABNSchemeIdTok: Label '0151', Locked = true;
+ BasePathTxt: Text;
+ begin
+ BasePathTxt := '/' + DocumentType + '/cac:AccountingSupplierParty/cac:Party';
+ EDocumentXMLHelper.SetStringValueInField(PINTANZXml, XmlNamespaces, BasePathTxt + '/cac:PartyName/cbc:Name', MaxStrLen(EDocumentPurchaseHeader."Vendor Company Name"), EDocumentPurchaseHeader."Vendor Company Name");
+ EDocumentXMLHelper.SetStringValueInField(PINTANZXml, XmlNamespaces, BasePathTxt + '/cac:PostalAddress/cbc:StreetName', MaxStrLen(EDocumentPurchaseHeader."Vendor Address"), EDocumentPurchaseHeader."Vendor Address");
+ EDocumentXMLHelper.SetStringValueInField(PINTANZXml, XmlNamespaces, BasePathTxt + '/cac:PartyTaxScheme/cbc:CompanyID', MaxStrLen(EDocumentPurchaseHeader."Vendor VAT Id"), EDocumentPurchaseHeader."Vendor VAT Id");
+ EDocumentXMLHelper.SetStringValueInField(PINTANZXml, XmlNamespaces, BasePathTxt + '/cac:Contact/cbc:Name', MaxStrLen(EDocumentPurchaseHeader."Vendor Contact Name"), EDocumentPurchaseHeader."Vendor Contact Name");
+ if PINTANZXml.SelectSingleNode(BasePathTxt + '/cbc:EndpointID/@schemeID', XmlNamespaces, XMLNode) then begin
+ if XMLNode.AsXmlAttribute().Value() = ABNSchemeIdTok then
+ ABN := CopyStr(EDocumentXMLHelper.GetNodeValue(PINTANZXml, XmlNamespaces, BasePathTxt + '/cbc:EndpointID'), 1, MaxStrLen(ABN));
+ if XMLNode.AsXmlAttribute().Value() = GLNSchemeIdTok then begin
+ GLN := CopyStr(EDocumentXMLHelper.GetNodeValue(PINTANZXml, XmlNamespaces, BasePathTxt + '/cbc:EndpointID'), 1, MaxStrLen(GLN));
+ EDocumentPurchaseHeader."Vendor GLN" := GLN;
+ end;
+ VendorParticipantId := XMLNode.AsXmlAttribute().Value() + ':' + EDocumentXMLHelper.GetNodeValue(PINTANZXml, XmlNamespaces, BasePathTxt + '/cbc:EndpointID');
+ end;
+ VATRegistrationNo := EDocumentPurchaseHeader."Vendor VAT Id";
+ VendorName := EDocumentPurchaseHeader."Vendor Company Name";
+ VendorAddress := EDocumentPurchaseHeader."Vendor Address";
+ if not FindVendorByABN(VendorNo, ABN) then
+ if not FindVendorByVATRegNoOrGLN(VendorNo, VATRegistrationNo, GLN) then
+ if not FindVendorByParticipantId(VendorNo, EDocument, VendorParticipantId) then
+ VendorNo := EDocumentImportHelper.FindVendorByNameAndAddress(VendorName, VendorAddress);
+ end;
+
+ local procedure ParseAccountingCustomerPartyForPurchaseHeader(PINTANZXml: XmlDocument; XmlNamespaces: XmlNamespaceManager; var EDocumentPurchaseHeader: Record "E-Document Purchase Header"; DocumentType: Text)
+ var
+ EDocumentXMLHelper: Codeunit "EDocument XML Helper";
+ ReceivingId: Text[250];
+ SchemaId, CompanyIdentifierValue : Text;
+ BasePathTxt: Text;
+ XMLNode: XmlNode;
+ begin
+ BasePathTxt := '/' + DocumentType + '/cac:AccountingCustomerParty/cac:Party';
+ EDocumentXMLHelper.SetStringValueInField(PINTANZXml, XmlNamespaces, BasePathTxt + '/cac:PartyName/cbc:Name', MaxStrLen(EDocumentPurchaseHeader."Customer Company Name"), EDocumentPurchaseHeader."Customer Company Name");
+ EDocumentXMLHelper.SetStringValueInField(PINTANZXml, XmlNamespaces, BasePathTxt + '/cac:PostalAddress/cbc:StreetName', MaxStrLen(EDocumentPurchaseHeader."Customer Address"), EDocumentPurchaseHeader."Customer Address");
+ EDocumentXMLHelper.SetStringValueInField(PINTANZXml, XmlNamespaces, BasePathTxt + '/cac:PartyTaxScheme/cbc:CompanyID', MaxStrLen(EDocumentPurchaseHeader."Customer VAT Id"), EDocumentPurchaseHeader."Customer VAT Id");
+ if PINTANZXml.SelectSingleNode(BasePathTxt + '/cbc:EndpointID/@schemeID', XmlNamespaces, XMLNode) then begin
+ SchemaId := XMLNode.AsXmlAttribute().Value();
+ CompanyIdentifierValue := EDocumentXMLHelper.GetNodeValue(PINTANZXml, XmlNamespaces, BasePathTxt + '/cbc:EndpointID');
+ if SchemaId = GLNSchemeIdTok then
+ EDocumentPurchaseHeader."Customer GLN" := CopyStr(CompanyIdentifierValue, 1, MaxStrLen(EDocumentPurchaseHeader."Customer GLN"));
+ ReceivingId := CopyStr(SchemaId, 1, (MaxStrLen(EDocumentPurchaseHeader."Customer Company Id") - 1)) + ':';
+ ReceivingId += CopyStr(CompanyIdentifierValue, 1, MaxStrLen(EDocumentPurchaseHeader."Customer Company Id") - StrLen(ReceivingId));
+ EDocumentPurchaseHeader."Customer Company Id" := ReceivingId;
+ end;
+ if (EDocumentPurchaseHeader."Customer GLN" = '') and PINTANZXml.SelectSingleNode(BasePathTxt + '/cac:PartyIdentification/cbc:ID/@schemeID', XmlNamespaces, XMLNode) then begin
+ SchemaId := XMLNode.AsXmlAttribute().Value();
+ CompanyIdentifierValue := EDocumentXMLHelper.GetNodeValue(PINTANZXml, XmlNamespaces, BasePathTxt + '/cac:PartyIdentification/cbc:ID');
+ if SchemaId = GLNSchemeIdTok then
+ EDocumentPurchaseHeader."Customer GLN" := CopyStr(CompanyIdentifierValue, 1, MaxStrLen(EDocumentPurchaseHeader."Customer GLN"));
+ end;
+ end;
+
+ local procedure InsertPINTANZPurchaseInvoiceLines(PINTANZXml: XmlDocument; XmlNamespaces: XmlNamespaceManager; EDocumentEntryNo: Integer)
+ var
+ EDocumentPurchaseLine: Record "E-Document Purchase Line";
+ NewLineXML: XmlDocument;
+ LineXMLList: XmlNodeList;
+ LineXMLNode: XmlNode;
+ i: Integer;
+ InvoiceLinePathTok: Label '/inv:Invoice/cac:InvoiceLine', Locked = true;
+ CreditNoteLinePathTok: Label '/cn:CreditNote/cac:CreditNoteLine', Locked = true;
+ begin
+ if not PINTANZXml.SelectNodes(InvoiceLinePathTok, XmlNamespaces, LineXMLList) then
+ if not PINTANZXml.SelectNodes(CreditNoteLinePathTok, XmlNamespaces, LineXMLList) then
+ exit;
+
+ i := 0;
+ foreach LineXMLNode in LineXMLList do begin
+ i += 1;
+ Clear(EDocumentPurchaseLine);
+ EDocumentPurchaseLine.Init();
+ EDocumentPurchaseLine."E-Document Entry No." := EDocumentEntryNo;
+ EDocumentPurchaseLine."Line No." := i * 10000;
+ Clear(NewLineXML);
+ NewLineXML := XmlDocument.Create();
+ NewLineXML.Add(LineXMLNode.AsXmlElement());
+ PopulatePINTANZPurchaseLine(NewLineXML, XmlNamespaces, EDocumentPurchaseLine);
+ EDocumentPurchaseLine.Insert(false);
+ end;
+ end;
+
+ local procedure PopulatePINTANZPurchaseLine(LineXML: XmlDocument; XmlNamespaces: XmlNamespaceManager; var EDocumentPurchaseLine: Record "E-Document Purchase Line")
+ var
+ EDocumentXMLHelper: Codeunit "EDocument XML Helper";
+ begin
+ EDocumentXMLHelper.SetStringValueInField(LineXML, XmlNamespaces, 'cac:InvoiceLine/cac:Item/cac:SellersItemIdentification/cbc:ID', MaxStrLen(EDocumentPurchaseLine."Product Code"), EDocumentPurchaseLine."Product Code");
+ if EDocumentPurchaseLine."Product Code" = '' then
+ EDocumentXMLHelper.SetStringValueInField(LineXML, XmlNamespaces, 'cac:CreditNoteLine/cac:Item/cac:SellersItemIdentification/cbc:ID', MaxStrLen(EDocumentPurchaseLine."Product Code"), EDocumentPurchaseLine."Product Code");
+ EDocumentXMLHelper.SetStringValueInField(LineXML, XmlNamespaces, 'cac:InvoiceLine/cac:Item/cbc:Name', MaxStrLen(EDocumentPurchaseLine.Description), EDocumentPurchaseLine.Description);
+ if EDocumentPurchaseLine.Description = '' then
+ EDocumentXMLHelper.SetStringValueInField(LineXML, XmlNamespaces, 'cac:CreditNoteLine/cac:Item/cbc:Name', MaxStrLen(EDocumentPurchaseLine.Description), EDocumentPurchaseLine.Description);
+ EDocumentXMLHelper.SetNumberValueInField(LineXML, XmlNamespaces, 'cac:InvoiceLine/cbc:InvoicedQuantity', EDocumentPurchaseLine.Quantity);
+ if EDocumentPurchaseLine.Quantity = 0 then
+ EDocumentXMLHelper.SetNumberValueInField(LineXML, XmlNamespaces, 'cac:CreditNoteLine/cbc:CreditedQuantity', EDocumentPurchaseLine.Quantity);
+ EDocumentXMLHelper.SetStringValueInField(LineXML, XmlNamespaces, 'cac:InvoiceLine/cbc:InvoicedQuantity/@unitCode', MaxStrLen(EDocumentPurchaseLine."Unit of Measure"), EDocumentPurchaseLine."Unit of Measure");
+ if EDocumentPurchaseLine."Unit of Measure" = '' then
+ EDocumentXMLHelper.SetStringValueInField(LineXML, XmlNamespaces, 'cac:CreditNoteLine/cbc:CreditedQuantity/@unitCode', MaxStrLen(EDocumentPurchaseLine."Unit of Measure"), EDocumentPurchaseLine."Unit of Measure");
+ EDocumentXMLHelper.SetNumberValueInField(LineXML, XmlNamespaces, 'cac:InvoiceLine/cac:Price/cbc:PriceAmount', EDocumentPurchaseLine."Unit Price");
+ if EDocumentPurchaseLine."Unit Price" = 0 then
+ EDocumentXMLHelper.SetNumberValueInField(LineXML, XmlNamespaces, 'cac:CreditNoteLine/cac:Price/cbc:PriceAmount', EDocumentPurchaseLine."Unit Price");
+ EDocumentXMLHelper.SetNumberValueInField(LineXML, XmlNamespaces, 'cac:InvoiceLine/cbc:LineExtensionAmount', EDocumentPurchaseLine."Sub Total");
+ if EDocumentPurchaseLine."Sub Total" = 0 then
+ EDocumentXMLHelper.SetNumberValueInField(LineXML, XmlNamespaces, 'cac:CreditNoteLine/cbc:LineExtensionAmount', EDocumentPurchaseLine."Sub Total");
+ EDocumentXMLHelper.SetCurrencyValueInField(LineXML, XmlNamespaces, 'cac:InvoiceLine/cbc:LineExtensionAmount/@currencyID', MaxStrLen(EDocumentPurchaseLine."Currency Code"), EDocumentPurchaseLine."Currency Code");
+ if EDocumentPurchaseLine."Currency Code" = '' then
+ EDocumentXMLHelper.SetCurrencyValueInField(LineXML, XmlNamespaces, 'cac:CreditNoteLine/cbc:LineExtensionAmount/@currencyID', MaxStrLen(EDocumentPurchaseLine."Currency Code"), EDocumentPurchaseLine."Currency Code");
+ end;
+
+ local procedure FindVendorByABN(var VendorNo: Code[20]; InputABN: Code[11]): Boolean
+ var
+ Vendor: Record Vendor;
+ begin
+ if InputABN = '' then
+ exit(false);
+
+ Vendor.SetLoadFields(ABN);
+ Vendor.SetRange(ABN, InputABN);
+ if Vendor.FindFirst() then
+ VendorNo := Vendor."No.";
+ exit(VendorNo <> '');
+ end;
+
+ local procedure FindVendorByVATRegNoOrGLN(var VendorNo: Code[20]; VATRegistrationNo: Text[20]; InputGLN: Code[13]): Boolean
+ begin
+ VendorNo := EDocumentImportHelper.FindVendor('', InputGLN, VATRegistrationNo);
+ exit(VendorNo <> '');
+ end;
+
+ local procedure FindVendorByParticipantId(var VendorNo: Code[20]; EDocument: Record "E-Document"; VendorParticipantId: Text): Boolean
+ var
+ EDocumentService: Record "E-Document Service";
+ ServiceParticipant: Record "Service Participant";
+ EDocumentHelper: Codeunit "E-Document Helper";
+ begin
+ if VendorParticipantId = '' then
+ exit(false);
+
+ EDocumentHelper.GetEdocumentService(EDocument, EDocumentService);
+ ServiceParticipant.SetRange("Participant Type", ServiceParticipant."Participant Type"::Vendor);
+ ServiceParticipant.SetRange("Participant Identifier", VendorParticipantId);
+ ServiceParticipant.SetRange(Service, EDocumentService.Code);
+ if not ServiceParticipant.FindFirst() then begin
+ ServiceParticipant.SetRange(Service);
+ if ServiceParticipant.FindFirst() then;
+ end;
+
+ VendorNo := ServiceParticipant.Participant;
+ exit(VendorNo <> '');
+ end;
+
+ procedure ResetDraft(EDocument: Record "E-Document")
+ var
+ EDocPurchaseHeader: Record "E-Document Purchase Header";
+ begin
+ EDocPurchaseHeader.GetFromEDocument(EDocument);
+ EDocPurchaseHeader.Delete(true);
+ end;
+}
\ No newline at end of file
diff --git a/Apps/APAC/EDocumentFormats/PINT A-NZ/app/src/Core/PINTANZEDocReadintoDraft.EnumExt.al b/Apps/APAC/EDocumentFormats/PINT A-NZ/app/src/Core/PINTANZEDocReadintoDraft.EnumExt.al
new file mode 100644
index 0000000000..5073ad2f76
--- /dev/null
+++ b/Apps/APAC/EDocumentFormats/PINT A-NZ/app/src/Core/PINTANZEDocReadintoDraft.EnumExt.al
@@ -0,0 +1,13 @@
+namespace Microsoft.eServices.EDocument.Format;
+
+using Microsoft.eServices.EDocument.Processing.Import;
+using Microsoft.eServices.EDocument.Processing.Interfaces;
+
+enumextension 28006 "PINT A-NZ EDoc Read into Draft" extends "E-Doc. Read into Draft"
+{
+ value(28005; "PINT A-NZ")
+ {
+ Caption = 'PINT A-NZ';
+ Implementation = IStructuredFormatReader = "E-Document PINT A-NZ Handler";
+ }
+}
\ No newline at end of file
diff --git a/Apps/APAC/EDocumentFormats/PINT A-NZ/test/.resources/pint_a-nz/pint_a-nz-invoice-0.xml b/Apps/APAC/EDocumentFormats/PINT A-NZ/test/.resources/pint_a-nz/pint_a-nz-invoice-0.xml
new file mode 100644
index 0000000000..0944d97eca
--- /dev/null
+++ b/Apps/APAC/EDocumentFormats/PINT A-NZ/test/.resources/pint_a-nz/pint_a-nz-invoice-0.xml
@@ -0,0 +1,207 @@
+
+
+ urn:cen.eu:en16931:2017#compliant#urn:fdc:peppol.eu:2017:poacc:billing:3.0
+ urn:fdc:peppol.eu:2017:poacc:billing:01:1.0
+ 103033
+ 2026-01-22
+ 2026-02-22
+ 380
+ XYZ
+ 1
+
+ 2
+
+
+ 103033
+
+
+ 103033
+
+
+
+ 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MzAxMjE5MDBaKS9Nb2REYXRlKEQ6MjAyMjA2MTUxMzEzMDBaKT4+DQplbmRvYmoNCjIgMCBvYmoNCjw8L1R5cGUvQ2F0YWxvZy9QYWdlcyAzIDAgUi9MYW5nKGVuLVVTKS9NZXRhZGF0YSA0IDAgUj4+DQplbmRvYmoNCjMgMCBvYmoNCjw8L1R5cGUvUGFnZXMvQ291bnQgMS9LaWRzWzUgMCBSXT4+DQplbmRvYmoNCjQgMCBvYmoNCjw8L1R5cGUvTWV0YWRhdGEvU3VidHlwZS9YTUwvTGVuZ3RoIDIxIDAgUj4+c3RyZWFtDQo8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/Pgo8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJQREZOZXQiPgo8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgo8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iPgo8eG1wOkNyZWF0ZURhdGU+MjAxNy0wMS0zMFQxMjoxOTowMFo8L3htcDpDcmVhdGVEYXRlPgo8eG1wOk1vZGlmeURhdGU+MjAyMi0wNi0xNVQxMzoxMzowMFo8L3htcDpNb2RpZnlEYXRlPgo8eG1wOkNyZWF0b3JUb29sPk1pY3Jvc29mdCBPZmZpY2UgV29yZDwveG1wOkNyZWF0b3JUb29sPgo8L3JkZjpEZXNjcmlwdGlvbj4KPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIj4KPGRjOmZvcm1hdD5hcHBsaWNhdGlvbi9wZGY8L2RjOmZvcm1hdD4KPGRjOnRpdGxlPgo8cmRmOkFsdD4KPHJkZjpsaSB4bWw6bGFuZz0ieC1kZWZhdWx0Ij5TYWxlcyAtIEludm9pY2U8L3JkZjpsaT4KPC9yZGY6QWx0Pgo8L2RjOnRpdGxlPgo8L3JkZjpEZXNjcmlwdGlvbj4KPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6cGRmPSJodHRwOi8vbnMuYWRvYmUuY29tL3BkZi8xLjMvIj4KPHBkZjpQcm9kdWNlcj5Bc3Bvc2UuV29yZHMgZm9yIC5ORVQgMjMuOS4wPC9wZGY6UHJvZHVjZXI+CjwvcmRmOkRlc2NyaXB0aW9uPgo8L3JkZjpSREY+CjwveDp4bXBtZXRhPgo8P3hwYWNrZXQgZW5kPSJ3Ij8+Cg0KZW5kc3RyZWFtDQplbmRvYmoNCjIxIDAgb2JqDQo4NTQNCmVuZG9iag0KMTYgMCBvYmoNCjw8L1R5cGUvRm9udC9TdWJ0eXBlL1RydWVUeXBlL0Jhc2VGb250L0ZBQUFCRytTZWdvZVVJLUJvbGQvRW5jb2RpbmcvV2luQW5zaUVuY29kaW5nL0ZpcnN0Q2hhciAzMi9MYXN0Q2hhciAxNjMvV2lkdGhzIDE3IDAgUi9Gb250RGVzY3JpcHRvciAxOCAwIFI+Pg0KZW5kb2JqDQoxNyAwIG9iag0KWzI3NiAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMjcxIDAgMjcxIDAgNTc1IDU3NSA1NzUgMCA1NzUgNTc1IDAgNTc1IDAgNTc1IDAgMCAwIDAgMCAwIDAgNzAzIDY0MSA2MjQgMCAwIDAgNzExIDAgMCAwIDY0OSA1MTEgOTU3IDAgMCA2MTQgMCAwIDU2MSA1ODYgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgNTM4IDAgMCA2MTkgNTQxIDAgNjE5IDYwMiAyODQgMCA1NTkgMjg0IDkxNiA2MDUgNjExIDYyMCA2MTkgMzk4IDAgMzg5IDYwNSAwIDAgMCA1MzggMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDU3NV0NCmVuZG9iag0KMTggMCBvYmoNCjw8L1R5cGUvRm9udERlc2NyaXB0b3IvRm9udE5hbWUvRkFBQUJHK1NlZ29lVUktQm9sZC9TdGVtViA4MC9EZXNjZW50IC0yNTEvQXNjZW50IDEwNzkvQ2FwSGVpZ2h0IDcwMC9GbGFncyAyNjIxNzYvSXRhbGljQW5nbGUgMC9Gb250QkJveFstNTczIC00MzEgMTk5OSAxMjk4XS9Gb250RmlsZTIgMTUgMCBSPj4NCmVuZG9iag0KMTIgMCBvYmoNCjw8L1R5cGUvRm9udC9TdWJ0eXBlL1RydWVUeXBlL0Jhc2VGb250L0ZBQUFCQytTZWdvZVVJLUxpZ2h0L0VuY29kaW5nL1dpbkFuc2lFbmNvZGluZy9GaXJzdENoYXIgMzIvTGFzdENoYXIgMTE4L1dpZHRocyAxMyAwIFIvRm9udERlc2NyaXB0b3IgMTQgMCBSPj4NCmVuZG9iag0KMTMgMCBvYmoNClsyNzQgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDIyMiAwIDIyMiAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCA2MjkgNTQ0IDYyMSAwIDAgMCAwIDAgMjI4IDAgMCAwIDAgNzA5IDc2MSAwIDAgNTU1IDQ5NyAwIDY0OCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgNDk0IDAgNDQ0IDAgNTA1IDAgNTYwIDUzNSAyMDUgMCAwIDAgODIyIDUzNSA1NjEgMCAwIDMzMCAwIDAgMCA0NTNdDQplbmRvYmoNCjE0IDAgb2JqDQo8PC9UeXBlL0ZvbnREZXNjcmlwdG9yL0ZvbnROYW1lL0ZBQUFCQytTZWdvZVVJLUxpZ2h0L1N0ZW1WIDgwL0Rlc2NlbnQgLTI1MS9Bc2NlbnQgMTA3OS9DYXBIZWlnaHQgNzAwL0ZsYWdzIDMyL0l0YWxpY0FuZ2xlIDAvRm9udEJCb3hbLTU4NyAtMzk2IDE5OTkgMTI5OV0vRm9udEZpbGUyIDExIDAgUj4+DQplbmRvYmoNCjggMCBvYmoNCjw8L1R5cGUvRm9udC9TdWJ0eXBlL1RydWVUeXBlL0Jhc2VGb250L0ZBQUFBSStTZWdvZVVJL0VuY29kaW5nL1dpbkFuc2lFbmNvZGluZy9GaXJzdENoYXIgMzIvTGFzdENoYXIgMTIxL1dpZHRocyA5IDAgUi9Gb250RGVzY3JpcHRvciAxMCAwIFI+Pg0KZW5kb2JqDQo5IDAgb2JqDQpbMjc0IDAgMCAwIDAgODE4IDAgMCAwIDAgMCA2ODQgMjE3IDQwMCAyMTcgMzkwIDUzOSA1MzkgNTM5IDUzOSA1MzkgNTM5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MODW9nYEFJ/+03vN/EfC/wC1cf8ACIPH+01vN/EfCv7Vx/wiC9HFLTNYMWxuxVMjJqiy2qjoJ5oteR76aBkTnN1AOhLdRqEGNd+9i8S6h9v59vcxrLjbrca2G5UdwtckcdRDV07ZGRP+VjkY5ukjgWlvEd4PFBULn/lQbnWuaon243CsOW0DdXQ0d4jntNby6ahg8MVUL3Ds1L2A9ug7EEart5fvVtaJSx21Elxi1+TqaC62qoY7QAk8ravnHbp7TRr3IOtUvRP1U1kvhQ7LX1jg0u5pzTQN0H5807G6+rVBlPFvLW6qMhkjF0xuzYVBIW/9zervTPAaeOpZbjWvGnoLdfUgnPtB5VeB49U0l33izCpz2ohIe7F7Sx9ttpcO1k1Rzmpmb62GE/1haTjuOWDEbLb8cxay0WPWG1R+DbrPb4GU9NCzUnRkcYDRqSSeHE8TxQc0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIP/2Q0KZW5kc3RyZWFtDQplbmRvYmoNCjIyIDAgb2JqDQoxNTE2OA0KZW5kb2JqDQoxNSAwIG9iag0KPDwvTGVuZ3RoMSAyMyAwIFIvTGVuZ3RoIDI0IDAgUi9GaWx0ZXIvRmxhdGVEZWNvZGU+PnN0cmVhbQ0KeJzsfAl4VFWW8LlvqX1PVVJJBfIqlbAVppJUAokgKcjCEoghCZgCgilIQgKBBBJAVBaHIBpXRFRwaVptRntorWCPHVFbnHZp/XXcp8Vuu22l3RqQ7kb0Q/Jqzr3vVVJhcfz7m+lv5vt4lXffufeee+/Z7jnnPqoAAgBm2AI8VF9eG8hvvDX0Abb8Du/GpSsjnbpb9Q4AMhnvuqXruqWNk9paALjbAQw5LZ3LVs6seX8ZgOkQ1hcta9/Q8tD8f3oMICUdwHWktTnSdB9kcACX4HQwoRUbnBbdp1gvwnpW68ruqx5/0erF+iKs39fesTQC5KHrsf4t1veujFzVyT9t/hAg5x6sS6siK5s/tq57A+v9AGOyOju6umNzYT3AfEqv1LmmuXPFX9J1WD8DIFwCvNDPPQMi6MQ9YhA58ChP/i1o4Rw6kTPqOAE/HH8EcmKH4MhmnEVPSZ1TK0kggTk2IL4jzyVm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
+
+
+
+
+
+
+ 103033
+
+
+
+ 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MzAxMjE5MDBaKS9Nb2REYXRlKEQ6MjAyMjA2MTUxMzEzMDBaKT4+DQplbmRvYmoNCjIgMCBvYmoNCjw8L1R5cGUvQ2F0YWxvZy9QYWdlcyAzIDAgUi9MYW5nKGVuLVVTKS9NZXRhZGF0YSA0IDAgUj4+DQplbmRvYmoNCjMgMCBvYmoNCjw8L1R5cGUvUGFnZXMvQ291bnQgMS9LaWRzWzUgMCBSXT4+DQplbmRvYmoNCjQgMCBvYmoNCjw8L1R5cGUvTWV0YWRhdGEvU3VidHlwZS9YTUwvTGVuZ3RoIDIxIDAgUj4+c3RyZWFtDQo8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/Pgo8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJQREZOZXQiPgo8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgo8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iPgo8eG1wOkNyZWF0ZURhdGU+MjAxNy0wMS0zMFQxMjoxOTowMFo8L3htcDpDcmVhdGVEYXRlPgo8eG1wOk1vZGlmeURhdGU+MjAyMi0wNi0xNVQxMzoxMzowMFo8L3htcDpNb2RpZnlEYXRlPgo8eG1wOkNyZWF0b3JUb29sPk1pY3Jvc29mdCBPZmZpY2UgV29yZDwveG1wOkNyZWF0b3JUb29sPgo8L3JkZjpEZXNjcmlwdGlvbj4KPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIj4KPGRjOmZvcm1hdD5hcHBsaWNhdGlvbi9wZGY8L2RjOmZvcm1hdD4KPGRjOnRpdGxlPgo8cmRmOkFsdD4KPHJkZjpsaSB4bWw6bGFuZz0ieC1kZWZhdWx0Ij5TYWxlcyAtIEludm9pY2U8L3JkZjpsaT4KPC9yZGY6QWx0Pgo8L2RjOnRpdGxlPgo8L3JkZjpEZXNjcmlwdGlvbj4KPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6cGRmPSJodHRwOi8vbnMuYWRvYmUuY29tL3BkZi8xLjMvIj4KPHBkZjpQcm9kdWNlcj5Bc3Bvc2UuV29yZHMgZm9yIC5ORVQgMjMuOS4wPC9wZGY6UHJvZHVjZXI+CjwvcmRmOkRlc2NyaXB0aW9uPgo8L3JkZjpSREY+CjwveDp4bXBtZXRhPgo8P3hwYWNrZXQgZW5kPSJ3Ij8+Cg0KZW5kc3RyZWFtDQplbmRvYmoNCjIxIDAgb2JqDQo4NTQNCmVuZG9iag0KMTYgMCBvYmoNCjw8L1R5cGUvRm9udC9TdWJ0eXBlL1RydWVUeXBlL0Jhc2VGb250L0ZBQUFCRytTZWdvZVVJLUJvbGQvRW5jb2RpbmcvV2luQW5zaUVuY29kaW5nL0ZpcnN0Q2hhciAzMi9MYXN0Q2hhciAxNjMvV2lkdGhzIDE3IDAgUi9Gb250RGVzY3JpcHRvciAxOCAwIFI+Pg0KZW5kb2JqDQoxNyAwIG9iag0KWzI3NiAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMjcxIDAgMjcxIDAgNTc1IDU3NSA1NzUgMCA1NzUgNTc1IDAgNTc1IDAgNTc1IDAgMCAwIDAgMCAwIDAgNzAzIDY0MSA2MjQgMCAwIDAgNzExIDAgMCAwIDY0OSA1MTEgOTU3IDAgMCA2MTQgMCAwIDU2MSA1ODYgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgNTM4IDAgMCA2MTkgNTQxIDAgNjE5IDYwMiAyODQgMCA1NTkgMjg0IDkxNiA2MDUgNjExIDYyMCA2MTkgMzk4IDAgMzg5IDYwNSAwIDAgMCA1MzggMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDU3NV0NCmVuZG9iag0KMTggMCBvYmoNCjw8L1R5cGUvRm9udERlc2NyaXB0b3IvRm9udE5hbWUvRkFBQUJHK1NlZ29lVUktQm9sZC9TdGVtViA4MC9EZXNjZW50IC0yNTEvQXNjZW50IDEwNzkvQ2FwSGVpZ2h0IDcwMC9GbGFncyAyNjIxNzYvSXRhbGljQW5nbGUgMC9Gb250QkJveFstNTczIC00MzEgMTk5OSAxMjk4XS9Gb250RmlsZTIgMTUgMCBSPj4NCmVuZG9iag0KMTIgMCBvYmoNCjw8L1R5cGUvRm9udC9TdWJ0eXBlL1RydWVUeXBlL0Jhc2VGb250L0ZBQUFCQytTZWdvZVVJLUxpZ2h0L0VuY29kaW5nL1dpbkFuc2lFbmNvZGluZy9GaXJzdENoYXIgMzIvTGFzdENoYXIgMTE4L1dpZHRocyAxMyAwIFIvRm9udERlc2NyaXB0b3IgMTQgMCBSPj4NCmVuZG9iag0KMTMgMCBvYmoNClsyNzQgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDIyMiAwIDIyMiAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCA2MjkgNTQ0IDYyMSAwIDAgMCAwIDAgMjI4IDAgMCAwIDAgNzA5IDc2MSAwIDAgNTU1IDQ5NyAwIDY0OCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgNDk0IDAgNDQ0IDAgNTA1IDAgNTYwIDUzNSAyMDUgMCAwIDAgODIyIDUzNSA1NjEgMCAwIDMzMCAwIDAgMCA0NTNdDQplbmRvYmoNCjE0IDAgb2JqDQo8PC9UeXBlL0ZvbnREZXNjcmlwdG9yL0ZvbnROYW1lL0ZBQUFCQytTZWdvZVVJLUxpZ2h0L1N0ZW1WIDgwL0Rlc2NlbnQgLTI1MS9Bc2NlbnQgMTA3OS9DYXBIZWlnaHQgNzAwL0ZsYWdzIDMyL0l0YWxpY0FuZ2xlIDAvRm9udEJCb3hbLTU4NyAtMzk2IDE5OTkgMTI5OV0vRm9udEZpbGUyIDExIDAgUj4+DQplbmRvYmoNCjggMCBvYmoNCjw8L1R5cGUvRm9udC9TdWJ0eXBlL1RydWVUeXBlL0Jhc2VGb250L0ZBQUFBSStTZWdvZVVJL0VuY29kaW5nL1dpbkFuc2lFbmNvZGluZy9GaXJzdENoYXIgMzIvTGFzdENoYXIgMTIxL1dpZHRocyA5IDAgUi9Gb250RGVzY3JpcHRvciAxMCAwIFI+Pg0KZW5kb2JqDQo5IDAgb2JqDQpbMjc0IDAgMCAwIDAgODE4IDAgMCAwIDAgMCA2ODQgMjE3IDQwMCAyMTcgMzkwIDUzOSA1MzkgNTM5IDUzOSA1MzkgNTM5IDUzOSA1MzkgNTM5IDUzOSAwIDAgMCAwIDAgMCAwIDY0NSA1NzMgMCA3MDEgNTA2IDQ4OCA2ODYgMCAwIDM1NyA1ODAgNDcxIDg5OCA3NDggMCA1NjAgNzU0IDU5OCA1MzEgNTI0IDY4NyA2MjEgOTM0IDAgMCAwIDAgMCAwIDAgMCAwIDUwOSA1ODggNDYyIDU4OSA1MjMgMCA1ODkgNTY2IDI0MiAwIDQ5NyAyNDIgODYxIDU2NiA1ODYgNTg4IDAgMzQ4IDQyNCAzMzkgNTY2IDAgMCA0NTkgNDg0XQ0KZW5kb2JqDQoxMCAwIG9iag0KPDwvVHlwZS9Gb250RGVzY3JpcHRvci9Gb250TmFtZS9GQUFBQUkrU2Vnb2VVSS9TdGVtViA4MC9EZXNjZW50IC0yNTEvQXNjZW50IDEwNzkvQ2FwSGVpZ2h0IDcwMC9GbGFncyAzMi9JdGFsaWNBbmdsZSAwL0ZvbnRCQm94Wy01NzMgLTQxMSAxOTk5IDEyOThdL0ZvbnRGaWxlMiA3IDAgUj4+DQplbmRvYmoNCjE5IDAgb2JqDQo8PC9UeXBlL1hPYmplY3QvU3VidHlwZS9JbWFnZS9XaWR0aCA2MDAvSGVpZ2h0IDMwMC9Db2xvclNwYWNlL0RldmljZVJHQi9CaXRzUGVyQ29tcG9uZW50IDgvTGVuZ3RoIDIyIDAgUi9GaWx0ZXIvRENURGVjb2RlPj5zdHJlYW0NCv/Y/+AAEEpGSUYAAQEBAAAAAAAA/+4ADkFkb2JlAGQAAAAAAf/bAEMAAgICAgICAgICAgMCAgIDBAMCAgMEBQQEBAQEBQYFBQUFBQUGBgcHCAcHBgkJCgoJCQwMDAwMDAwMDAwMDAwMDP/bAEMBAwMDBQQFCQYGCQ0LCQsNDw4ODg4PDwwMDAwMDw8MDAwMDAwPDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDP/AABEIASwCWAMBEQACEQEDEQH/xAAeAAEAAgICAwEAAAAAAAAAAAAACAkHCgUGAQIEA//EAFMQAAEDAwIDBAQICQoEAgsAAAEAAgMEBQYRByESCDFBEwlRYSJ2gTIjsxS0NzhxQlJiFbUWNleRobHBktPUdRgZ8DOTJHKC0kNTg6OUVWUmRhf/xAAUAQEAAAAAAAAAAAAAAAAAAAAA/8QAFBEBAAAAAAAAAAAAAAAAAAAAAP/aAAwDAQACEQMRAD8Av8QEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAJ04ngB2lBg/IeobbPHq+W3OuVReKincWVD7bD40THDgW+K5zGO/wDISEHbsJ3RwzcASMx66c9dCzxJ7VUsMNSxgIBdyHg4DUalpIHegyEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICCPGY9SWE4xX1Frt1PU5NW0rnR1EtIWMpWvbwLRM4nmIPaWtI9aDkMD6g8Lza4QWaSOox68VbuSjp6zkdDM89jI5mHTmPcHBuvYNTwQZ3QYG6jsluGObbTttsr6ee/10NqkqIzo5kMscssoB/ObEWH1FBW3xQcvYb3ccbvFuvtpnNNcLZM2amlBPa08Wu001a4ahw7wSEFvdvq23Cgoq9jDGytp46hsbuJaJGhwB/Bqg4nKsps+G2OtyG+1BgoKFo5gwc0kj3HRkcbdRzOceAGvrJABKCGd26scokrXGxY1a6W3hxDI68z1Ezm68CXRSQtaSO7Q6ekoM27T782vcOrFiudC2xZIWF9NA2QyQVQYOZ/hOIBa5oGpadeHEE8dAkAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgxTvbfK3HtsMquFve+KrfDFSRzs7YxVTMge7UfFIY86H06IKuP50Hs1zmOa9jix7CHMcDoQRxBBQWy7b3mryHA8TvNe8yV1dbYHVkx7XytbyPefW4tJQcLu/gsu4WEV1kpC1t1ppGV1nLzysNRCHAMce7nY9zNT2a6oKwLlbLjZ62ott1oprdX0jyyppKhhZIwj0goO77bbcXrcW/U1voaeVlqilab1d+UiKnh1BcOY8C9w4Nb2k+rUgLU4IYqaGGngYIoKdjY4Y29jWMGjQPwAIIhdW9TVtt+D0bHO+gT1FfNUt/FM0TIGxE+sNkfp8KCEn9aDsmG1VVRZdi9VQvcyshutG6nLOLubxmaDQduvYR3oLeUBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEHW8vxqkzDGbzjVc8x093pzD4wHMY5AQ+OQA9pY9odp6kFXeZ7fZVglxnob9bJooY3kU10jY51JOzXQPjl0048OB0I7wEHIYFtflef3Gmp7XbpYbY6Rorr7MwtpoY9fadzHQPdp2NadT6hxAWjWe1UditNsstvYY6G1UsVJSMPE+HCwMbqe86DiUHJIOLuNjst3MZu1noroYhpEaunjnLR6vEa7RB9lLSUlDAyloqaKjpohpHTwMbGxo9TWgAIPoQY83N29oNyMZlsdTN9DrIZBU2m48vMYZ2ggajgS1wJa4a+vtAQQAu2xe6Vpq3UjsVqLg0PLIqygc2eGQdzgWnVoOn44afUgzzst0/wB4tF7ocuziCOjfbHie02IPbLJ444xzTOYS1vIfaa0Enm01000ITJQcTdb/AGKwxslvl6oLNFKdI5K6pip2uPoBlc0FB5tV9sl9ifPZLzQ3mCM8sk1DURVDGn0F0TnAIOVQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQcfdrpRWS13C8XGXwaC108lVVy9pEcTS52g7zoOA70Fbuc78Z3llzqZLdeKvGbKHEUNst8xge1nYDLNHyve4jt48voCD0wjfXPcSuMElZearJLOXNFZa7lK6cuj4A+FLIS+NwHZoeX0tKCyOzXahv1pt16tsvjUF0p46qkkI0JZI0OGo7iNdCO4oOSQEBAQEBAQEBAQdXzXJI8QxS/ZLJEJ/0RSPmigJ0D5fixMJHYHPIBQVSZBkV5ym7VV6vtdLcK+rcXSTSEkNHcxjexrW9gaOAQe2OZJesTu1Le7DXSUFwpHAskYfZe3XiyRvY5ruwg8Cgtbw3I4cuxaxZJDH4LbvSMnkgB1EcnxZGA94a8EaoOzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgxpvHQVly2xzKkoWOkqTQGURs15nMge2WQADidWMPDvQVW/AgILUNmqCstu2GG0lfG6GpFB4xjd2hk8j5YwQew8jxw7kGTUBAQEBAQEBAQEHRdzMbny7A8nx6k0NZX0ZNEw6AOnhc2aJpJ4DmewDXuQVRVFPUUdRNS1UMlNU0z3RVFPK0sex7Do5rmkAggjQgoFPT1FZPBS0sElTVVL2xU9PE0vfI95Aa1rRqSSToAEFsO2+O1OJ4LjOP1hH023UTRWtBBDZpCZZGgjtDXPIBQd2QEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAI14HiD2hBFTN+l6z3q4T3PE7uMdNS4vmtEsJlpQ9x1cYi1zXRt/N0cPRoOCD1wjpdtFluUF0yy7tyH6K8SQ2iGHwqZzm8QZnOc50jdfxdGj06jgglaAAAANAOwICAgICAgICAgICAgxll+z+AZvVOuF7sjRdH6eJc6R7qeZ4AAHiFhDX8ABq4EgdhQecP2gwDCKoV9ksgNzbqI7nVyOqJmA8Pky8lrOB01aAdO0oMmICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDi7xerTj1vnut7uEFst1MNZquoeGNGvYB3knuA4nuQYab1JbUuqhT/pasbEX8n000U3haflacvPp/5dfUgzRabvbL7QU90s9fDcrdVN5qesp3h7HAcDxHeDwIPEHtQcigICAgICAgICAgICAgICAgICAg4d+Q2CJ745L5b45I3FskbqmIOa4HQggu4EIOQpaukrYhPRVUVXASWiaF7ZGajtHM0kcEH0ICAgICAgICAgICAg+OsuNvt4Ya+up6ESkiI1ErIg4jt05yNdNUHzwXyyVUzKelvFDUzyHSOCKoje9xA14Na4k8EHKICAgICAgICAgIOKmvtjppXwVF5oaeeI8skMlREx7T6C0uBCDkopY5o45oZGywytD4pWEOa5rhqHNI4EEdhQe6AgICAgICAgICAgICAgICD1c5rGue9wYxgLnOcdAAO0koOH/aTHf/r9u/8Amof/AEkHLRTRVEUc8ErJoZWh0U0bg5rmnsII1BCD9EBAQEBAQV79TuV11zzn9l/Gc22YzBCRSgnldU1MTZnSuHYSGPa0ejj6SgjUglD0u5XX0GYVOJumc+1X2llnZTHUtZVU7Q8SN9HNGHB3p9n0BBPxAQEBAQEBAQEBAQEBAQEBBhbe3qA2w6f8cGRbjX5tC6qD22WwUwE1yuMjBqWU1OCCQNQHPcWsbqOZw1CClneHzPt58xqKug2uoaLa3HjzMp6sRx3G8SsPDmknqGGCPUDgI4uZup+UdwKCBGW7p7l55LLNmu4GRZW6UkvbdblVVTBr3NZLI5rR6AAAg6H6uxByNrvF2slUK6y3SrtFawaNq6KeSnlA9AfG5p/nQS/2c64upXAb3ZLc3cSrzGxz1lPBUWXKtbqx8bpGtIbUyn6UzRp0AZMB6uxBs5IKwfMt3h3N2jse0lRttmdww+a+V14ju0lA5rTOyCKkMQfzNd8Uvdp+FBUv/rO6pf42ZH/1Yv7tBNToE6jd8dzOoa24tnu5V4yjH5bHdKmS1VsjHRGWGNpjeQ1gOrSeHFBNjrH63bH060/7G4hTUuUbtXGAStt07iaOzwSt1jqK4MIc97wQY4Q5pI9txa3lDwoe3E6iN7d1bhUV+cblX27NnfzttUdW+lt8Wh1AioqcxwM04cQzU95KDqON7n7kYfcYbvi2e5Bj9yhe17KuguNTA4lmugdySAOHEgtdqCCQRoUG4Sg+asrKO3UlTX3CrhoaGiifPWVtRI2KGKKMFz3yPeQ1rWgakk6BBVP1A+aBieI1dfjOxtlgzy70rjFLmlyMjLKx7eDvo0Mbo5qoA6jm5o2d7S9vFBVduB1d9R+5c07sk3ZvtPR1BINms05tFEGHXSN0FD4LZABw+U5j6SSgjtU1VTXTyVVZUy1dTKdZaiZ7pJHEDQFznEk8Bog/BBlbC99d5dupIH4TufkuOxU5BZQ01xnNIe/R9K9zoXj1OYQgsm2J803JqCsobFv7YoL9aZC2KTObHA2mr4ST/wA2pomkQTDjx8ERkDsa88EF0GHZniu4OOWvLsKv1JkmN3mLxbdd6KTnieNdHNPYWPY4Fr2OAc1wLXAEEIOzICCoLzJ99N3Npc320t22+e3TEKK72OrqblTUD2NbNKypDGvdzNdxDeCCtb/Wd1SfxsyP/qxf3aCxTy3d+t4t2N086s2424F0y61W7FXVtDRV72OZFUfTqaPxG8rW8eV5HwoJFdWnXriewVRV4NhVHTZvuoxg+mUcj3fo2zlwBb9OfGQ6SUg6iFjgdOL3M9kOCj3c7qb313erKmozbci8VVFO4lmP0VQ6htkbTwDWUdMY4joDpzODnHvcUGB0HdMO3H3A28rWXDBc1veIVbXBxltNdPSB/qkbE9rXg9hDgQe8ILdulPzKa663a2bf9RElMH3GRlLZ9zqaJlM0TPcGsZdIIw2JrXE6eNEGtbw52ac0jQuXBDgCCCCNQR2EIPKCC3mF7j5xtdsLR5Lt9k1Zil9kyu3UT7pQua2U08sFW58erg4aEsaT+BBSF/rO6pf42ZH/ANWL+7QSA6V+qfqFzPqF2nxbKN2L5e8fvd8jprraqmSMxTxGN5LHgMB01HpQbEyAgIMf7sXOvsm1m5d5tVU+huloxW81ttrYuD4ainoZpIpG668WuaCEGsz/AKzuqX+NmR/9WL+7QP8AWd1SfxsyPT0+LH/doNnzBK2quWD4bca6d1TW19jt1TWVL/jSSy00b3vd6y4klB2pBg7fXqI2x6eMaZkO4V4dFUVoe2w41RNE1yuUkYHM2mhLmjRuo5nvc1jdQC4EtBCkfeHzL99s9qKuiwB1NtPjMnMyGO3tZV3WRh/9rXTs9g8NR4EcZHZzFBBPJ8+zrNqh9XmWZXzK6mR3M+e73CorXa/hnkfog6l/Sg5my5HkON1Aq8dv1xsNWHBzaq3VU1LIHN4tPPC5p1HdxQWA9JPWD1EHeLbLb287j1+W4plmQUFputDkAbcZhBUSiNzoqycGpa4AnT5TT0goNihAQEBAQQh6m9uLqbwzP7VSSVluqaeOC/eE0vdBLCORkzwOxjmBrde4jj2hBEBBMrpk23ulNcKjPbxRyUVKKZ1Nj8UzSx8xm08ScNIB5A32WnsdqdOxBNNAQEBAQEBAQEBAQEBAQEEcup3qMxnpr25qMuu8bLpkNze6iwrFw/lkr63l5tXacWwwgh0r+4aNHtvYCGsNuVubm+7uXXPOM/vs1+yG6OHiTv0ZHDE3hHBTxN0ZFGwcA1oA7zqSSQ6H6kHcML2+znce6/oTAsRu2X3Xg6SjtNJLVOja46B8pjaRG3gfacQPWgl7ZvLe6rrtSNqqjDbXYXPAcyluN5ovFId3ltPJOG/gcQR6EHAZh5f3VVh9LLXybbOySigGssuP11LcJezXRtKyQVLz/wCCI/0IIs2613OyZja7TebdVWi6UN0pYq221sL6eoheJWEtkikDXNPHsIQbjSCnjzc/3d2P/wAxvvzNEgpD9SCWHR1ujbdl9zsi3MucbaiPFsLvc9DRPdyiprZWRw0dOTqCBLPIxhI7ASe5BHDLMpv2cZNfcvyi4yXbIckrZrhd7hKfaknncXOIHY1o7GtHBoAAAA0QflaMayO/iV1hx+5XpsB0nNBSTVIYfzvCa7T4UHyXO0Xay1Bo7zbKu1VYAJpayGSCTQ9h5JGtP8yDcwe9kTHySPbHHG0ukkcQGtaBqSSewBBrsdcvWhdd6cguO2+3d3lo9oLHOYaiemc6M5DUwu41ExafapmubrDGeDuEjxzcgYFcwQfbbbbcbxX0trtFvqbrc6+UQ0NupInzzzSO4NZHFGHOc4nsAGqCZGJeXv1VZZRRXD/+eMxulnYHwG/XClopna9zqbxHzxn1SRtQfbkfl1dVuPUUlfFgtHkUULS+eGz3Wjmna0AnhDLJE954cBGHH1IIa3/Hr9il3rbBk9lrsdvluf4dws9yp5KWphf6JIpWtc09/EIOHKCXXSJ1UZF02Z3DJUTVFz20yKaOHNcZDi4NYSGivpWE6NqIRx7hI3VjvxXMDZ3s93tmQWm2X2yV0N0s95pYa61XKncHw1FNUMEkUsbhwLXtcCCg5FBRT5tn2ibR+7lb9bCCpP4EElOnTqBuHT03dK/Y9EXZjleL/s/idWWh8dHUT1kEslY8O4HwYo3FgIOr+TUFvMgwXbbXlOd5GygtFvuWXZXkVU98dJSRS1tdWVMpMkjgxgfJI5xJc46E9pKCZNg8uTqrvlDHXzYXb8fEoDoqS63ajjnLSO10cL5iz8D9D6kGKN2ekfqB2WoZrznG31VHjkLiJcmtksNyoY2g6c80lK+R0DSeAMzWa9iCNqDwg2LfLd36q91dn6nBskrnVmW7TyQW9tTM/mlqbPO1xoJHE6EmLw3wH81jCTzOQWLIK4PNJ+7RQe+lq+rVqDXc9GiCTnRj96XZL3ji+akQbUyAgIMY72/Yzu57l3/9XToNQv8AmQeNO1BuH7bfZ3gPu5avqkSD03Kz6ybW4Dlu4eROcLPiNtnuNXFH/wAyYxt+Tgj14c8ry2NuvDmcNUGqJvFu7mO+GfXrcDNq91VcrpIRRUTXONPQUjXEw0dMwk8kcQOg7ydXO1c5xIYuQS12S6J9/N97bT5BjOO09gxGrJ+h5dkUzqGjqADoXU7GslqJm9vtxxFmoI5tRoglpD5Sm5RjjM+7GMxzFoMscdJWPaHd4DiGkj16BBirN/LF6k8Xp6issAxzcCCFvO2ms9e6CrLQNXfJXCKlYSOOgbI4nu48EGD+nnEcowfqw2WxzMceuOL36izW0fSrRdKaSlqGA1LdHckrWktdpq1w4EcQSg2n0BAQEBAI14HiD2hB1cYRhbaz9INxCyC4c3P9OFvpvG5vyvE8Pm19eqDtAAAAA0A7AgICAgICAgICAgICAgICDwSGgkkAAaknsAQatPWTvvV7973ZHe6esM+HY1NLY8DgYT4X0Cmkc01QB/Gqngyk6a8pa0/FCCKmvrQTC6QOk+99TWYzirnmse2+MPjfmGRRAeK8v4soaPmBaZpQCS4gtjb7TgTyMeGyLt1tngu0+M0eIbe41R4zYqMD/tqVntzSaaGaoldrJNI7ve9xcfSg72gIMJbw9PO1G+VHTR55jMFTeLa5j7NldIGwXSjdG8PaIqkNJLNRxjeHMPe3XQoM2oKePNz/AHd2P/zG+/M0SCkPtKD2BLQQCRzDQ+sdvH+RBa90I9DFs3OttLvJvJQST4VLK79jMOe58X6VMLtHVlUWlrvowcC1jAQZSCXfJgCQLz7NZLLjttprPj9oorFaKJvJR2q3U8dLTRN9EcMTWsaPUAg4DO9usG3NsVTjOf4rbsrslUxzH0VwhbJyc2mr4ZOD4njQEPjc1wIBBBQQg8yXfCp2u2Uhwqw1rqPKN255rUJoyWyRWeBjXXJ7XDsMgkjg/wDDI4jiEGufog5rG8dvOXZBZcWxy3yXS/ZDWwW+z26HTnnqah4jjYNdANXEcSdB2ngg2culbpLwjptxWlLKWmvm5dzp2nLM1fGHSc7wC+koi4c0VOw8ABoZNOZ/4rWhLZAQRu6lOmXA+pLDaiy5DSxW3K6CJxxHN4YmmsoJuJaxzuDpKd7j8pETofjDleGuAau+cYZkG3mX5Hg+U0Rochxavmt90p9SW+JC7TnY4gczHjRzHae00g96DqyC/bytt5KjLtsMj2mvNYai6baVTKmwGR2rjZ7iXuETdSXOFPUNk1PYGyRtHAILTEFFXm2faJtH7uV31sIKkvwIOUsdlumSXq0Y9Y6OS5Xq+1sFvtNBENXz1NTI2KGNo9LnuACDaE6VulrD+m3CaOkp6Smum4l2pmOzXMuTmlmmdo91NTvdxZTxO4NaNOfTneOY8AlUg/Gop6erp56WqgjqaWpjdFU00rQ+OSN4LXMe1wIcHA6EHtQaz/Xp0927YXeZ5xek+h4HuBTPveMUbG6RUUokLKyhj/NieWvYANGxyMbx01QQi7OxBYf5Y2YTY71NUePCQimz7HrpapIPxTJSxi5sf+FraN4B9Dj6UGxogrg80n7tNB76Wr6tWoNdxBJzox+9Lsn7xxfNSINqZAQEGMd7fsZ3c9y7/wDq6dBqF/0IPH/BQbh+232dYD7uWr6pEghT5nN3q7b0vV1FTPLYcgye0UFwb+VCx0tYAf8A3lMwoNcdBmfp1xCw59vrtRh2UaOx7IMloKW707jyiohMoc6mJBaR4+nh6g6+1w4oNtWmpqeip6ejo6eOkpKSNkNLSwsEccccYDWMYxoAa1oAAAGgCD9kBB1PJMEw7L6zHrjkuOUN4uWJ3CG64zcqiIGpoayneJGS08w0ezi0cwB0cODgRwQdsQEBAQEHQb9ujt9jNY633vK6GkroyRNRtc6aSMjukbC15YfU7RB2GwZPj2U0prcdvNJeKdh0kfTSB5YT2B7fjNPqcAg51AQEBAQEBAQEBAQEBAQEEcerrPZttum7dvKaSoNLcWWN9stVQ348dVdpGW+GRn5zHVAePwangg1S9EHsyN8r2RxxukkkIbHG0aucTwAAHaSg2zem7aC37G7M4Tt9SU8cVyoaFlXlNSwDWpu9U0SVsrnD4wEh5Ga9kbWN7GhBnNAQEBAQU8ebn+7ux/8AmV9+ZokFIf8ASgyTs9t9U7q7p4Dt1SvfGcuvdJb6moj0LoaV8gNTMAddfChD3/Ag25rHZbXjdltGO2Ojjt1lsVFBb7TQRDRkFNTRtiijaPQ1jQAg5RAQa6HmdZtNknUpNjImcaLbywW62sptTyNqKxhuUsgH5TmVMbSfzQO5BXZ+FBaT5Vu2NNk27mW7lXCm8aDbW0shtDnAcrLjefFhbICe0tp4p28PywfwhfygICAgoX81vbmlsW5+BblUNN4P7fWee33mRg4SVlldE1srz+U6nqY2DU8RHw7CgqlQT88tPL5ca6pLDaPF8Omzuy3WyVQc4NZrHB+kotdeGpfRBo79Xad6DZGQUU+bZ9om0fu5XfWwgqTQWDeWdglJl/UvR3iugbNT7e2CvyCBr2ksNUXRUEHq5mmrMjde9mvaEGx4gICCqnzZMcgq9n9t8r5C6rsOXm2McBrywXOhnlkJOnAc9FGO1BQkglP0SVb6Lqq2Wmja17n3x0BDtdOWopZ4XHh6A8kINpxBXB5pP3aaD30tf1atQa7n/GiCTfRjp/ql2T944vmpEG1OgICDGO9v2M7ue5d//V06DUK70HlBuHbb/Z3gXu5avqkSCNnXtt/Xbh9L+4VJaqY1d1xltNklFTtGrnMtkokquXv1FKZiAOJPDvQawf8Axog5C03W42K6W292eslt13s9XDXWu4QOLZYKmneJIpY3dzmPaCD6UF+PT15mG2mZ2y32Het427zOKNkM+QCKSSyV8nZ4gdGHvpXO7XNkHhjuk/FAWVWLIbBlFsp71jN8t+RWerGtLdrZUxVdNIB+RNC57HfAUHMICAgICAgwpv5m1dhWAzz2qV1Pdb3UsttHVsOj4BI175JWntBDGEAjsJB7kFZ7nue5z3uL3vJL3E6kk8SST6UHbMIzG64LkduyG1TOa6lkArKUEhlRATpJE8dhDh2eg6EcQEFtNPPFVU8FVA7nhqY2ywv9LXgOaf5Cg/ZAQEBAQEBAQEBAQEBAQVy+aLdnW7pmp6Nsvhi/5jaqB7NHHxAyGrq+Xhw7aYHjw4enRBrr69iDMPT1Y4sl342ZsVRH4tJc82sUNdHqBrTmvhMw4gjXwwdOCDbhQEBAQEBBTv5uf7u7H/5jffmaJBSIgnj5bdpprl1XYfVVADn2O1XqvpQRqPFNDJTa9vc2cnjrx/lQbKSAgINVjrMuH6U6pN7anxTN4eSTUnORykfRI2U3Lpw+L4emvfogjGgvu8pq1Nh2c3JvfhgOuGZ/QTLqPaFHb6WUN07eH0rX4UFqqAgICCqLzZ6OB+0u2Fe5mtVTZdJTwv8ARHPQTvePhMLUFDSCUPRZNLT9U+yb4ZDG91/EbnDvZJBKx4+FriEG1Cgoq82z7RNo/dyu+thBUigtT8pr7Ztx/ct36xpEF+CAgIK4PNJ+7TQe+lr+rVqDXc7EEnOjH70myfvHF81Ig2pkFcHmk/dpoPfS1fVq1BrtoJO9GP3pNk/eOL5qRBtTICAgxjvZ9jO7nuXf/wBXToNQtB4Qbh+232d4D7uWr6pEg7jLFHNHJDNG2WGVpZLE8BzXNcNC1wPAgjtCDXx60+hLIdq7xd9ydprNUX3au4SSVlys9Iwy1OOve7mfGYm6vfSDUlkgB8No5ZOwPeFZ3qQP6kHdsG3Jz/bO6svW3+Y3bEbk1wc+e2VUkDZQ08GzRtPJK30teC094QWk7FeafkFulobDv5jkd/t/sROzqwxNgrox2GSqodRDN26kwmPQDhG8oLksD3Awzc7GaDMMCyKjyfHLkP8At7lRv5gHgAuilYdHxSM1HMx4Dm94CDuKAgICDCe/mFV+a4FNBaYTU3Wy1LLlSUrBq+YRseySNgAOrix5IHeQAgrPIcxxa4FrmnRzTwII9KDteFYfdc5yO349aYXOkqpAauqDdWU0AI8SaQ9gDR/KdAOJCC2ungipaeClgbyQ00bYoWehrAGtH8gQfsgICAgICAgICAgICAgIK2vNOtr67pss9Uzm0s2cWusk5ezR1HX03terWcfDog14UGWthL/Di2+Oz2RVM30ejs2aWKqr5vRTx18Jn11B7Y+YINulAQEBAQEFO/m5/u7sf/mN9+ZokFIqCwTyyvvSWn3cvHzTEGx8gICDVc60rWbP1Tb2UjofB8XIX1wZqTqK6GKrDuP5Xi83w8EEYPwIL3vKWvsNRthurjLZi6e0ZTT3OSDmPssuNEyFjuXTQcxonDXXjp6kFsiAgICCpTza7xTwbb7S2Bxb9KueSVlwhaT7Xh0NH4UhA9GtW3VBRQglj0MWqa89V+zNLBrzQXWprnkafEoaCpqn9pHDSI/1angg2kUFFPm1/aLtH7uV31sIKk/6kFqflN/bNuP7lu/WNIgvvQEBBXB5pP3aaD30tf1atQa7aCTvRj96TZP3ji+akQbUyCuDzSfu00Hvpavq1ag12/60EnejH70uyfD/APY4vmpEG1MgICDFu+MscOym8E00jYoYsJyB8sryGta1ttnJLieAAHaUGocg8+pBuHbbfZ3gPu5avqkSDuiAghBvh0A7C7yyV15pLQ/bjMqxzpZMjx1rY4Z5XakuqqB3yEmpJc5zBHI49siCqjdfy1OoLADU12IQUO61ih1c2azPFPcRHroDJb6hwcXH8mGSUoIDXmyXnHLnV2TIbRW2G829/hV9puNPJS1UDxxLJYZmtew+ohBxnBBIvpp6kMy6b88pMjsVRNW4xcJoos1xFzyKe40gJBIaSA2eIOc6J/c7gdWFzSG01i+S2bMsbsOWY9WNuFiySgp7laK1nZJT1MbZY3adx5XDUdx4IOdQEBAQdAvu1m3uS1j7hesUoauulPNNVta6GSRx/GkdC5hefW7VBz+PYrjmKUz6PHLLS2eCQgzCnjDXSEcAZH8XPI9LiUHYEBAQEBAQEBAQEBAQEBAQRd60MBm3H6Zd2LBRwma5UNqF8tjWjV5ls8rK8sYOOrpI4XRgd/Mg1XkHkEggtJaQdQexBtX9J29tBvzsliOXCsbPklBTMtGb0pfzSxXWjY1kz3jtAnHLO38147wUEk0BAQEBBTx5uf7u7H/5jffmaJBSIgsE8sv70tp93Lx80xBsfICAg15vNGwCoxvqBt2bMp+W27j2Cln+lAaB9dagKKdh9JZC2nOvocPQgrV7tUFhfltbyUe2e/H7K3usbR4/uvRssZle7ljZdYpPEtrnkn8dzpIG/nShBscICAgINdnzNd2qTPt96TC7TUNqbTtRbja6mRjuZhutW8T13KewcjWwxOHc9jvgCuNBaR5VW3s193ky7cOeEOtuA2A0lPMR2XC8P8OLlJHdTwzg6ekelBf0goq82z7RNo/dyu+thBUkgtT8pv7Ztx/ct36xpEF96AgIK4PNJ+7TQe+lr+rVqDXb7kEnejH70uyfvHF81Ig2pkFfPmbWp1w6XLnWNDiLFklnrnlpAAD5H0ntAjiNagdnfp3INcNBk/ZTL6fAN4Nr81rHiOgxfKbVcbk891LBVxuqP/hcyDbxa5r2texwex4DmuadQQewgoPZAQQ369NyaPbjpk3CD6hsd1zmm/ZOyU3MA6Z90BjqgO/RtIJnH8Gneg1hUBBuHbb/AGd4F7uWv6pEg7ogICAgwXvr07bY9QeMz2HPLHFJcooHssGW07GsudskcDyvgnA1LQ46uidrG78ZvYQGrfunt7dtqNxMx24vkrKi54fc5rfNVxgtjqGRnWKdjXcQ2WMteAeOhQdAQbJnlr5NWZD0tY9R1kr5jid6utlppH6a+CJRWMaDqSQ0VXKNewDTsAQT3QRx6g91bjgltt9ix2UU1+vrHyyV+gc6lpWHlLmA6+3I7g06cAHd+hAV+1VyuNdVuuFbX1NZXucHOrZ5XyTEjsPO4l2vwoJbdPW8V7qL3S4Jk9dLdKW4MeLFcal5fNDLGwv8F73cXMc1pDdTqDoBwPAJtICAgICAgICAgICAgICAgICD1exkrHxyMbJHI0tkjcAWuaRoQQe0FBqw9X2wVd0+7zX/ABuGmeMOv0kl3wGuLdGSW6d5P0fUcOeleTC7vPK1+gD2oIuoJD9N3UjnHTXm37T4uRcrJdBHBl+IVEhZS3OmjJLQXAO8OWLmcYpQCWkkEOY5zXBsN7KdYGxW+dFRjHMwpbJk84a2owi+yR0NzZKRxZCyR3JUj86Bzx6eU8EEoEHBZFlGM4hbZrzlmQ23GbRTgme6XWrho6dgA1Oss7mNH8qCsjfTzL8MtNdBhew0LcxvtdWQ0dVnNZC+O1UjZJGse6likDJKqQakAuDYgdHAyt9khaogp483P93dj/8AMb78zRIKQ0Fg3ll/eltXf/8Ajl4+aYg2PUBAQQr67tgKjffZKvbYKM1ed4DI++4lBGCZaoMZy1lCwDUkzxDVgA4yMjHAaoNZEgtOjgQR2g8D60HsyR8T2yRvdHJG4OjkaSHNcOIII7CCgvW6SfMYxa+2a0bfb/3ZuOZXboo6S3biVTiaC6NYOVrq+Xj9Hn0A5pH/ACbzq4uYfZIWt2y6Wy9UNPc7NcaW7W2rbz0lwopmTwSt/KZJGXNcPWCg+ipqaejglqquojpaaBpfPUzPDI2NHa5znEAAekoKzuq7zDcF2+sd0w7ZW90mbbi10b6X9oaFwqLVZ+YcrpvHb8nUzAH5NkZcwO4yH2eR4a/tXV1Vwq6qurqiWsra2V89ZVzOL5JZZHFz3ve4klziSST2lB601NUVtTT0dHTyVdXVyMhpaWFhkkkkkIaxjGNBLnOJ0AA4lBtIdGuwh6fdkrJjNziY3MsgkN9zeQaEsrqqNgFKHAnUU0TGRcDylwe9vxkErEFFXm2faJtH7uV31sIKkvUgtT8pv7Ztx/ct36xpEF96AgIK4PNJ+7TQe+lq+rVqDXc7UEnOjL70uyXvHF83Ig2pkGB+p/AKjc/p+3YwmipxV3K62Cee0Uumvi11AW1tIwet00DAD3FBqaoCC/Loa638OyfDMf2l3YyKmxrOsYp4rZj99ucrYKS8UUIEdM01DyGNqY2hsZa8gyaBzS5xcAFpzXNe1r2OD2PAc1zTqCD2EFBjfc3eDbXZyxTZDuPl9vxmhjjc+ngqJA6rqi38SlpWc007tT2RtOnadBxQa3XV11R3rqbzyG5R001kwHGWvp8KxuZwMjGycvjVdTyktM85aNQ3g1oawE6F7giYg8fAg3D9tvs6wH3ctX1SJBgnq/35yDpz2ysm4uP2mivsjcpoLbdbPXF7GVFFUQVLpWMlZxifrG0tfo4Aji1w1BD8djOs/YvfaCkpLLk0eL5hM1onwi/vZR1vinQFtM9zvCqhrrp4Ti7Ti5jexBLBAQdVzXOMS25xu5Zfm9/o8axy0xmStudbII2DQEhjB8aSR+mjGMBc48Ggngg1RN/Nyo94N5NxNyIKd9JRZTeJai100gAkZRxNbBSiQDhz+DGzm9evagxF+FBsseXLiFZinSziVRXQup58vuNyv7YXfGEM830eBx4nhJFTteNO5w70E6kEF+rGx1keQ41kojc6gqrd+jDKB7LJqeaSYNce4ubNw9PKfQgiUgy/sTYq297nY0aRj/BtE/6Rr52dkcUALhzH0Pdys+FBZ8gICAgICAgICAgICAgICAgICCPvUl074j1I7fVGHZE79G3eic6rxHKYo2vnttby6BwB054pNA2WPUcze8Oa1zQ1kd39mtwNjswrcK3CsklruNO5zqCuaC+jr6cHRtTRz6ASRu+BzT7L2tcC0BixAQd2s+5W4uPRNp7Bn2R2OBjPDjht91rKZgZ28obFK0aepB1y6Xq8XyoFXertW3iqDeUVVbPJUSADu5pHOOnwoPoxv94rAP8A7jS/PNQblCCnjzc/3d2O/wAyvvzNEgpD/m9KCwXyy/vS2r3cvHzTEGx8gICAgpf67OhGvrK+8727JWeSvlrpJK7PsBo2c0viu1fLcLfE3i/nOrpYWgu5jzsB1LWhS6QWktI0cOBHo0QP+Ag5+x5XlGMSOlxrJLrj0r3B7pLZWT0ji4aaOJhew6j0oP3v2a5llP7z5becj4h2l0r6is9oAAH5aR/EAAIOs/1oP2p6aoraiCjo6eSrq6uRsNLSwsMkkskhDWMY1oJc5xIAA7SgvQ6FOhOrwKstm9G89s8HMIAKjCMIqA1xtZc3VtbWtOoFSAfk4/8A1PxnfK6CMLbEBBRV5tn2ibR+7ld9bCCpL4UFqflN/bNuP7lu/WNIgvvQEBBXB5pP3aKH30tX1atQa7aCTvRj96XZP3ji+bkQbUyAg1r+vTpmuWyG6Nxy2x2552w3DrJq+w1kLCYbfXTEy1NtkIGjC13M+EHtj4DUxv0CBqAg7hZ9ws/x6kdb8fzjILHQOYY3UVvudVSwlju1pjika3Q+jRB1uvuNwutVJXXSuqLlWzf86sqpXzSvP5z3kuPwlBOHpa6UrnuLh25G9eaWt9Pt3hOK36qxhlQzRt4u9PQz+EY2u+NBSvHO93YZGtjHNpIGhBLVAQbh22/2d4F7uWr6pEggp5pPDppoPfS1fVq1BruIMyYj1Eb7YHBFR4lu5ldmt8A0gtcdzqJKRg0I9mnle+Idvc3+gIMhVXW31VVkEdNLvTfGRxN5WugZSwSEacvtSRQMe46d5Pr7UGB8v3AzrcCuFyznMr3mFcwnwqm819RWuj1/FjM738g9AboAg6igl10ldKWVdSOa0XjUlVatr7LUtdmmWhvK0sj0eaGke4aPqJQQOGojaedwPsteGzxaLTbbDarZY7PRx260WakhobVb4RpHBTU0bYoYmDuaxjQB6kHIIOGv+P2fKLVVWW/UEdxttYAJqeTXtHFrmuBBa4HiCDqEEbKrpPxSWrdLSZLdKWjc4kUjmQyuaCfiiTlb2dnFpQZ0wbbzF9vbfJQY5RujdUEGtuE7hJU1Bbry+JJoBoNToAAB3BB3hAQEBAQEBAQEBAQEBAQEBAQEBBj7crarb3d/HJsU3HxWiymyyEvihqmkS08hHL4tNPGWywSaHTnjc06cNdEFTe63lOzmoqbjstuLC2nkc58OMZYx7TGO3lZcaSN/MO5odTju5nniUEN775enVlY5/Cj2zZfYCeVlda7tbZWE8fxJKmOUdnaWAfCg6hSdE3VVWyOih2VvjHNaXazupadugIHB007Gk8ewHVBl7EPLN6oMiqImX20WLA6Zx1lqbvdoKhzW68eWO2fTSXadgOnrIQWCbJ+WHtZgVbbsh3Lv9XuZfrfLHU09rYw2+0Ryxu5280THvmn5SB8aRrXae1GQdEFnSCC/W50sZh1PWvbyhxHIrPj8mH1Vxnrn3c1AbK2tZTtYI/Ail4gwnXXRBXv/ALTe8/8AEfC/7Vx/wiCTfSR0FbjdPe8NFuNk2Y43erXTWquoHUNsNZ9IL6pga1w8anjboNOPtILVUBAQEBBC7fvoS2P32qqzIJrdNgmc1fM+fK8fEcX0qV2p566kc0wzkk6ueAyR3fJogrBz3yst+Menlkwe+47uHbQSKcCd1przp3vgquaBvwVDkEfrl0L9WFpLhVbM3SUteGH6HVW+tGpHNqDS1Uuo4dvZ3dqD6LV0H9WV4dAKfZ6vpWz66SV1dbaMMAOhLxUVTHD06aanuBQSR2/8qjeK9ywz7h5lj+CW55+VpaLxbxcG6doMbBBTjXuInd+D0haTsL0Z7I9PzobpjdjkyHMmM0fm1+LKquYSPa+itDGRUw7RrGwP04Oe5BK5AQEFdHWx0b511N5ThF9xLKLDYKbGLVUUFXDdzVB8j5pxKHM8CGUaAcDqQghN/tN7z/xHwv8AtXH/AAiCZXRX0V570z57lWWZZlVgv1HfrAbTTU1pNUZWSmqgn53+PBEOXSIjgddUFkyAgIIq9YewuR9Rm01Nt/i94ttjuUN/o7s6tupmEBipoqiNzPkI5HcxMw04aIKuv9pveb+I+F/2rj/hEGXNhPLd3T2n3i2/3GvOdYrcrXiN1ZX1tDRGu+kSsaxzS2PxKZjdfa7yEFyaAg6vmeFYpuHjV0w/NrFS5JjV6i8K5WmsbzRvAIc1wIIcx7HAOa9pDmuAc0ggFBTlvJ5U14iray7bGZpS1dtlLpI8RydzoaiHjr4cFfDG9ko46NErGaAe09x4oIX3roM6srG+RtRtBW1rGaFs1urrdWteC4tBAp6p7u7sIBA4kIP3sHQN1Y5DLCyLaiotMEpPPWXWvt9GyMAkauZJUiXtHY1hPfppxQT22J8rC3Wqtosg38yaDIDTPbKzBMffKyjeRx5ayve2KV446OZExnEcJSOCC0nKsHpbhtfk+3OL0tFj9JcsYr8esNJFGIaOjbUUclLA0RxN9mNnMODW9nYEFJ/+03vN/EfC/wC1cf8ACIPH+01vN/EfCv7Vx/wiC9HFLTNYMWxuxVMjJqiy2qjoJ5oteR76aBkTnN1AOhLdRqEGNd+9i8S6h9v59vcxrLjbrca2G5UdwtckcdRDV07ZGRP+VjkY5ukjgWlvEd4PFBULn/lQbnWuaon243CsOW0DdXQ0d4jntNby6ahg8MVUL3Ds1L2A9ug7EEart5fvVtaJSx21Elxi1+TqaC62qoY7QAk8ravnHbp7TRr3IOtUvRP1U1kvhQ7LX1jg0u5pzTQN0H5807G6+rVBlPFvLW6qMhkjF0xuzYVBIW/9zervTPAaeOpZbjWvGnoLdfUgnPtB5VeB49U0l33izCpz2ohIe7F7Sx9ttpcO1k1Rzmpmb62GE/1haTjuOWDEbLb8cxay0WPWG1R+DbrPb4GU9NCzUnRkcYDRqSSeHE8TxQc0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIP/2Q0KZW5kc3RyZWFtDQplbmRvYmoNCjIyIDAgb2JqDQoxNTE2OA0KZW5kb2JqDQoxNSAwIG9iag0KPDwvTGVuZ3RoMSAyMyAwIFIvTGVuZ3RoIDI0IDAgUi9GaWx0ZXIvRmxhdGVEZWNvZGU+PnN0cmVhbQ0KeJzsfAl4VFWW8LlvqX1PVVJJBfIqlbAVppJUAokgKcjCEoghCZgCgilIQgKBBBJAVBaHIBpXRFRwaVptRntorWCPHVFbnHZp/XXcp8Vuu22l3RqQ7kb0Q/Jqzr3vVVJhcfz7m+lv5vt4lXffufeee+/Z7jnnPqoAAgBm2AI8VF9eG8hvvDX0Abb8Du/GpSsjnbpb9Q4AMhnvuqXruqWNk9paALjbAQw5LZ3LVs6seX8ZgOkQ1hcta9/Q8tD8f3oMICUdwHWktTnSdB9kcACX4HQwoRUbnBbdp1gvwnpW68ruqx5/0erF+iKs39fesTQC5KHrsf4t1veujFzVyT9t/hAg5x6sS6siK5s/tq57A+v9AGOyOju6umNzYT3AfEqv1LmmuXPFX9J1WD8DIFwCvNDPPQMi6MQ9YhA58ChP/i1o4Rw6kTPqOAE/HH8EcmKH4MhmnEVPSZ1TK0kggTk2IL4jzyVm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
+
+
+
+
+
+
+
+ 1234567890128
+
+ CRONUS International
+
+
+ Main Street, 14
+ Birmingham
+ B27 4KT
+
+ GB
+
+
+
+ GB123456789
+
+ VAT
+
+
+
+ CRONUS International
+ 123456789
+
+
+ Jim Olive
+ JO@contoso.com
+
+
+
+
+
+ 789456278
+
+ 8712345000004
+
+
+ The Cannon Group PLC
+
+
+ 192 Market Square
+ Birmingham
+ B27 4KT
+
+ GB
+
+
+
+ GB789456278
+
+ VAT
+
+
+
+ The Cannon Group PLC
+ 789456278
+
+
+ Mr. Andy Teal
+
+
+
+
+ 2026-01-22
+
+ 8712345000004
+
+ 192 Market Square
+ Birmingham
+ B27 4KT
+
+ GB
+
+
+
+
+
+ 31
+
+ GB12CPBK08929965044991
+
+ BG99999
+
+
+
+
+ 1 Month/2% 8 days
+
+
+ 1000
+
+ 4000
+ 1000
+
+ S
+ 25
+
+ VAT
+
+
+
+
+
+ 14000
+ 14000
+ 14140
+ 0
+ 0.00
+ 0
+ 14140
+
+
+ 10000
+ Item
+ 1
+ 4000
+
+ Bicycle
+
+ 1000
+
+
+ 1000
+
+
+ S
+ 25
+
+ VAT
+
+
+
+
+ 4000.00
+ 1
+
+
+
+ 20000
+ Item
+ 2
+ 10000
+
+ Bicycle v2
+
+ 2000
+
+
+ 2000
+
+
+ S
+ 25
+
+ VAT
+
+
+
+
+ 5000.00
+ 2
+
+
+
\ No newline at end of file
diff --git a/Apps/APAC/EDocumentFormats/PINT A-NZ/test/app.json b/Apps/APAC/EDocumentFormats/PINT A-NZ/test/app.json
index b9f2419391..e2ebcd43be 100644
--- a/Apps/APAC/EDocumentFormats/PINT A-NZ/test/app.json
+++ b/Apps/APAC/EDocumentFormats/PINT A-NZ/test/app.json
@@ -51,7 +51,7 @@
"idRanges": [
{
"from": 148003,
- "to": 148004
+ "to": 148007
}
],
"resourceExposurePolicy": {
@@ -59,5 +59,8 @@
"allowDownloadingSource": true,
"includeSourceInSymbolFile": true
},
- "application": "27.0.0.0"
-}
+ "application": "27.0.0.0",
+ "resourceFolders": [
+ ".resources"
+ ]
+}
\ No newline at end of file
diff --git a/Apps/APAC/EDocumentFormats/PINT A-NZ/test/src/EDocFormatMock.Codeunit.al b/Apps/APAC/EDocumentFormats/PINT A-NZ/test/src/EDocFormatMock.Codeunit.al
new file mode 100644
index 0000000000..72ba56b3cf
--- /dev/null
+++ b/Apps/APAC/EDocumentFormats/PINT A-NZ/test/src/EDocFormatMock.Codeunit.al
@@ -0,0 +1,54 @@
+codeunit 148007 "E-Doc. Format Mock" implements "E-Document"
+{
+ SingleInstance = true;
+
+ procedure Check(var SourceDocumentHeader: RecordRef; EDocService: Record "E-Document Service"; EDocumentProcessingPhase: enum "E-Document Processing Phase");
+ begin
+ OnCheck(SourceDocumentHeader, EDocService, EDocumentProcessingPhase);
+ end;
+
+ procedure Create(EDocService: Record "E-Document Service"; var EDocument: Record "E-Document"; var SourceDocumentHeader: RecordRef; var SourceDocumentLines: RecordRef; var TempBlob: codeunit "Temp Blob");
+ begin
+ OnCreate(EDocService, EDocument, SourceDocumentHeader, SourceDocumentLines, TempBlob);
+ end;
+
+ procedure CreateBatch(EDocService: Record "E-Document Service"; var EDocuments: Record "E-Document"; var SourceDocumentHeaders: RecordRef; var SourceDocumentsLines: RecordRef; var TempBlob: codeunit "Temp Blob");
+ begin
+ OnCreateBatch(EDocService, EDocuments, SourceDocumentHeaders, SourceDocumentsLines, TempBlob);
+ end;
+
+ procedure GetBasicInfoFromReceivedDocument(var EDocument: Record "E-Document"; var TempBlob: codeunit "Temp Blob");
+ begin
+ OnGetBasicInfoFromReceivedDocument(EDocument, TempBlob);
+ end;
+
+ procedure GetCompleteInfoFromReceivedDocument(var EDocument: Record "E-Document"; var CreatedDocumentHeader: RecordRef; var CreatedDocumentLines: RecordRef; var TempBlob: codeunit "Temp Blob");
+ begin
+ OnGetCompleteInfoFromReceivedDocument(EDocument, CreatedDocumentHeader, CreatedDocumentLines, TempBlob);
+ end;
+
+ [IntegrationEvent(false, false)]
+ local procedure OnCheck(var SourceDocumentHeader: RecordRef; EDocService: Record "E-Document Service"; EDocumentProcessingPhase: enum "E-Document Processing Phase")
+ begin
+ end;
+
+ [IntegrationEvent(false, false)]
+ local procedure OnCreate(EDocService: Record "E-Document Service"; var EDocument: Record "E-Document"; var SourceDocumentHeader: RecordRef; var SourceDocumentLines: RecordRef; var TempBlob: codeunit "Temp Blob");
+ begin
+ end;
+
+ [IntegrationEvent(false, false)]
+ local procedure OnCreateBatch(EDocService: Record "E-Document Service"; var EDocuments: Record "E-Document"; var SourceDocumentHeaders: RecordRef; var SourceDocumentsLines: RecordRef; var TempBlob: codeunit "Temp Blob");
+ begin
+ end;
+
+ [IntegrationEvent(false, false)]
+ local procedure OnGetBasicInfoFromReceivedDocument(var EDocument: Record "E-Document"; var TempBlob: codeunit "Temp Blob");
+ begin
+ end;
+
+ [IntegrationEvent(false, false)]
+ local procedure OnGetCompleteInfoFromReceivedDocument(var EDocument: Record "E-Document"; var CreatedDocumentHeader: RecordRef; var CreatedDocumentLines: RecordRef; var TempBlob: codeunit "Temp Blob");
+ begin
+ end;
+}
\ No newline at end of file
diff --git a/Apps/APAC/EDocumentFormats/PINT A-NZ/test/src/EDocFormatMock.EnumExt.al b/Apps/APAC/EDocumentFormats/PINT A-NZ/test/src/EDocFormatMock.EnumExt.al
new file mode 100644
index 0000000000..7005a06f86
--- /dev/null
+++ b/Apps/APAC/EDocumentFormats/PINT A-NZ/test/src/EDocFormatMock.EnumExt.al
@@ -0,0 +1,7 @@
+enumextension 148003 "E-Doc. Format Mock" extends "E-Document Format"
+{
+ value(6160; "Mock")
+ {
+ Implementation = "E-Document" = "E-Doc. Format Mock";
+ }
+}
\ No newline at end of file
diff --git a/Apps/APAC/EDocumentFormats/PINT A-NZ/test/src/EDocumentStructuredTests.Codeunit.al b/Apps/APAC/EDocumentFormats/PINT A-NZ/test/src/EDocumentStructuredTests.Codeunit.al
new file mode 100644
index 0000000000..8856740919
--- /dev/null
+++ b/Apps/APAC/EDocumentFormats/PINT A-NZ/test/src/EDocumentStructuredTests.Codeunit.al
@@ -0,0 +1,268 @@
+codeunit 148005 "E-Document Structured Tests"
+{
+ Subtype = Test;
+ TestType = IntegrationTest;
+
+ var
+ Customer: Record Customer;
+ Vendor: Record Vendor;
+ EDocumentService: Record "E-Document Service";
+ Assert: Codeunit Assert;
+ LibraryVariableStorage: Codeunit "Library - Variable Storage";
+ LibraryEDoc: Codeunit "Library - E-Document";
+ LibraryLowerPermission: Codeunit "Library - Lower Permissions";
+ PINTANZStructuredValidations: Codeunit "PINTANZ Structured Validations";
+ IsInitialized: Boolean;
+ EDocumentStatusNotUpdatedErr: Label 'The status of the EDocument was not updated to the expected status after the step was executed.';
+ TestFileTok: Label 'pint_a-nz/pint_a-nz-invoice-0.xml', Locked = true;
+ MockCurrencyCode: Code[10];
+ MockDate: Date;
+
+ #region PINT A-NZ XML
+ [Test]
+ procedure TestPINTANZInvoice_ValidDocument()
+ var
+ EDocument: Record "E-Document";
+ begin
+ // [FEATURE] [E-Document] [PINTANZ] [Import]
+ // [SCENARIO] Import and process a valid PINTANZ invoice document
+
+ // [GIVEN] A valid PINTANZ XML invoice document is imported
+ Initialize(Enum::"Service Integration"::"No Integration");
+ SetupPINTANZEDocumentService();
+ CreateInboundEDocumentFromXML(EDocument, TestFileTok);
+
+ // [WHEN] The document is processed to draft status
+ if ProcessEDocumentToStep(EDocument, "Import E-Document Steps"::"Read into Draft") then begin
+ PINTANZStructuredValidations.SetMockCurrencyCode(MockCurrencyCode);
+ PINTANZStructuredValidations.SetMockDate(MockDate);
+
+ // [THEN] The full E-Document content is correctly extracted
+ PINTANZStructuredValidations.AssertFullEDocumentContentExtracted(EDocument."Entry No");
+ end else
+ Assert.Fail(EDocumentStatusNotUpdatedErr);
+ end;
+
+ [Test]
+ [HandlerFunctions('EDocumentPurchaseHeaderPageHandler')]
+ procedure TestPINTANZInvoice_ValidDocument_ViewExtractedData()
+ var
+ EDocument: Record "E-Document";
+ EDocImport: Codeunit "E-Doc. Import";
+ begin
+ // [FEATURE] [E-Document] [PINTANZ] [View Data]
+ // [SCENARIO] View extracted data from a valid PINTANZ invoice document
+
+ // [GIVEN] A valid PINTANZ XML invoice document is imported
+ Initialize(Enum::"Service Integration"::"No Integration");
+ SetupPINTANZEDocumentService();
+ CreateInboundEDocumentFromXML(EDocument, TestFileTok);
+
+ // [WHEN] The document is processed to draft status
+ ProcessEDocumentToStep(EDocument, "Import E-Document Steps"::"Read into Draft");
+ EDocument.Get(EDocument."Entry No");
+
+ // [WHEN] View extracted data is called
+ EDocImport.ViewExtractedData(EDocument);
+
+ // [THEN] The extracted data page opens and can be handled properly (verified by page handler)
+ // EDocumentPurchaseHeaderPageHandler
+ end;
+
+ [Test]
+ procedure TestPINTANZInvoice_ValidDocument_PurchaseInvoiceCreated()
+ var
+ EDocument: Record "E-Document";
+ PurchaseHeader: Record "Purchase Header";
+ DummyItem: Record Item;
+ EDocumentProcessing: Codeunit "E-Document Processing";
+ DataTypeManagement: Codeunit "Data Type Management";
+ RecRef: RecordRef;
+ VariantRecord: Variant;
+ begin
+ // [FEATURE] [E-Document] [PINTANZ] [Purchase Invoice Creation]
+ // [SCENARIO] Create a purchase invoice from a valid PINTANZ invoice document
+
+ // [GIVEN] A valid PINTANZ XML invoice document is imported
+ Initialize(Enum::"Service Integration"::"No Integration");
+ SetupPINTANZEDocumentService();
+ CreateInboundEDocumentFromXML(EDocument, TestFileTok);
+
+ // [WHEN] The document is processed through finish draft step
+ ProcessEDocumentToStep(EDocument, "Import E-Document Steps"::"Finish draft");
+ EDocument.Get(EDocument."Entry No");
+
+ // [WHEN] The created purchase record is retrieved
+ EDocumentProcessing.GetRecord(EDocument, VariantRecord);
+ DataTypeManagement.GetRecordRef(VariantRecord, RecRef);
+ RecRef.SetTable(PurchaseHeader);
+
+ // [THEN] The purchase header is correctly created with PINTANZ data
+ PINTANZStructuredValidations.SetMockCurrencyCode(MockCurrencyCode);
+ PINTANZStructuredValidations.SetMockDate(MockDate);
+ PINTANZStructuredValidations.AssertPurchaseDocument(Vendor."No.", PurchaseHeader, DummyItem);
+ end;
+
+ [Test]
+ procedure TestPINTANZInvoice_ValidDocument_UpdateDraftAndFinalize()
+ var
+ EDocument: Record "E-Document";
+ PurchaseHeader: Record "Purchase Header";
+ Item: Record Item;
+ EDocImportParameters: Record "E-Doc. Import Parameters";
+ EDocImport: Codeunit "E-Doc. Import";
+ EDocumentProcessing: Codeunit "E-Document Processing";
+ DataTypeManagement: Codeunit "Data Type Management";
+ RecRef: RecordRef;
+ EDocPurchaseDraft: TestPage "E-Document Purchase Draft";
+ VariantRecord: Variant;
+ begin
+ // [FEATURE] [E-Document] [PINTANZ] [Draft Update]
+ // [SCENARIO] Update draft purchase document data and finalize processing
+
+ // [GIVEN] A valid PINTANZ XML invoice document is imported and processed to draft preparation
+ Initialize(Enum::"Service Integration"::"No Integration");
+ SetupPINTANZEDocumentService();
+ CreateInboundEDocumentFromXML(EDocument, TestFileTok);
+ ProcessEDocumentToStep(EDocument, "Import E-Document Steps"::"Prepare draft");
+
+ // [GIVEN] A generic item is created for manual assignment
+ LibraryEDoc.CreateGenericItem(Item, '');
+
+ // [WHEN] The draft document is opened and modified through UI
+ EDocPurchaseDraft.OpenEdit();
+ EDocPurchaseDraft.GoToRecord(EDocument);
+ EDocPurchaseDraft.Lines.First();
+ EDocPurchaseDraft.Lines."No.".SetValue(Item."No.");
+ EDocPurchaseDraft.Lines.Next();
+
+ // [WHEN] The processing is completed to finish draft step
+ EDocImportParameters."Step to Run" := "Import E-Document Steps"::"Finish draft";
+ EDocImport.ProcessIncomingEDocument(EDocument, EDocImportParameters);
+ EDocument.Get(EDocument."Entry No");
+
+ // [WHEN] The final purchase record is retrieved
+ EDocumentProcessing.GetRecord(EDocument, VariantRecord);
+ DataTypeManagement.GetRecordRef(VariantRecord, RecRef);
+ RecRef.SetTable(PurchaseHeader);
+
+ // [THEN] The purchase header contains both imported PINTANZ data and manual updates
+ PINTANZStructuredValidations.SetMockCurrencyCode(MockCurrencyCode);
+ PINTANZStructuredValidations.SetMockDate(MockDate);
+ PINTANZStructuredValidations.AssertPurchaseDocument(Vendor."No.", PurchaseHeader, Item);
+ end;
+
+ [PageHandler]
+ procedure EDocumentPurchaseHeaderPageHandler(var EDocReadablePurchaseDoc: TestPage "E-Doc. Readable Purchase Doc.")
+ begin
+ EDocReadablePurchaseDoc.Close();
+ end;
+ #endregion
+
+ local procedure Initialize(Integration: Enum "Service Integration")
+ var
+ TransformationRule: Record "Transformation Rule";
+ EDocument: Record "E-Document";
+ EDocDataStorage: Record "E-Doc. Data Storage";
+ EDocumentsSetup: Record "E-Documents Setup";
+ EDocumentServiceStatus: Record "E-Document Service Status";
+ EDocumentPurchaseHeader: Record "E-Document Purchase Header";
+ EDocumentPurchaseLine: Record "E-Document Purchase Line";
+ DocumentAttachment: Record "Document Attachment";
+ Currency: Record Currency;
+ begin
+ LibraryLowerPermission.SetOutsideO365Scope();
+ LibraryVariableStorage.Clear();
+ Clear(LibraryVariableStorage);
+
+ if IsInitialized then
+ exit;
+
+ EDocument.DeleteAll(false);
+ EDocumentServiceStatus.DeleteAll(false);
+ EDocumentService.DeleteAll(false);
+ EDocDataStorage.DeleteAll(false);
+ EDocumentPurchaseHeader.DeleteAll(false);
+ EDocumentPurchaseLine.DeleteAll(false);
+ DocumentAttachment.DeleteAll(false);
+
+ LibraryEDoc.SetupStandardVAT();
+ LibraryEDoc.SetupStandardSalesScenario(Customer, EDocumentService, Enum::"E-Document Format"::"PINT A-NZ", Integration);
+ LibraryEDoc.SetupStandardPurchaseScenario(Vendor, EDocumentService, Enum::"E-Document Format"::"PINT A-NZ", Integration);
+ EDocumentService."Import Process" := "E-Document Import Process"::"Version 2.0";
+ EDocumentService."Read into Draft Impl." := "E-Doc. Read into Draft"::"PINT A-NZ";
+ EDocumentService.Modify();
+ EDocumentsSetup.InsertNewExperienceSetup();
+
+ // Set a currency that can be used across all localizations
+ MockCurrencyCode := 'XYZ';
+ Currency.Init();
+ Currency.Validate(Code, MockCurrencyCode);
+ if Currency.Insert(true) then;
+ CreateCurrencyExchangeRate();
+
+ MockDate := DMY2Date(22, 01, 2026);
+
+ TransformationRule.DeleteAll(false);
+ TransformationRule.CreateDefaultTransformations();
+
+ IsInitialized := true;
+ end;
+
+ local procedure SetupPINTANZEDocumentService()
+ begin
+ EDocumentService."Read into Draft Impl." := "E-Doc. Read into Draft"::"PINT A-NZ";
+ EDocumentService.Modify(false);
+ end;
+
+ local procedure CreateInboundEDocumentFromXML(var EDocument: Record "E-Document"; FilePath: Text)
+ var
+ EDocLogRecord: Record "E-Document Log";
+ EDocumentLog: Codeunit "E-Document Log";
+ begin
+ LibraryEDoc.CreateInboundEDocument(EDocument, EDocumentService);
+
+ EDocumentLog.SetBlob('Test', Enum::"E-Doc. File Format"::XML, NavApp.GetResourceAsText(FilePath));
+ 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(false);
+ end;
+
+ local procedure ProcessEDocumentToStep(var EDocument: Record "E-Document"; ProcessingStep: Enum "Import E-Document Steps"): Boolean
+ var
+ EDocImportParameters: Record "E-Doc. Import Parameters";
+ EDocImport: Codeunit "E-Doc. Import";
+ EDocumentProcessing: Codeunit "E-Document Processing";
+ begin
+ EDocumentProcessing.ModifyEDocumentProcessingStatus(EDocument, "Import E-Doc. Proc. Status"::Readable);
+ EDocImportParameters."Step to Run" := ProcessingStep;
+ EDocImport.ProcessIncomingEDocument(EDocument, EDocImportParameters);
+ EDocument.CalcFields("Import Processing Status");
+
+ // Update the exit condition to handle different processing steps
+ case ProcessingStep of
+ "Import E-Document Steps"::"Read into Draft":
+ exit(EDocument."Import Processing Status" = Enum::"Import E-Doc. Proc. Status"::"Ready for draft");
+ "Import E-Document Steps"::"Finish draft":
+ exit(EDocument."Import Processing Status" = Enum::"Import E-Doc. Proc. Status"::Processed);
+ "Import E-Document Steps"::"Prepare draft":
+ exit(EDocument."Import Processing Status" = Enum::"Import E-Doc. Proc. Status"::"Draft Ready");
+ else
+ exit(EDocument."Import Processing Status" = Enum::"Import E-Doc. Proc. Status"::"Ready for draft");
+ end;
+ end;
+
+ local procedure CreateCurrencyExchangeRate()
+ var
+ CurrencyExchangeRate: Record "Currency Exchange Rate";
+ begin
+ CurrencyExchangeRate.Init();
+ CurrencyExchangeRate."Currency Code" := MockCurrencyCode;
+ CurrencyExchangeRate."Starting Date" := WorkDate();
+ CurrencyExchangeRate."Exchange Rate Amount" := 10;
+ CurrencyExchangeRate."Relational Exch. Rate Amount" := 1.23;
+ CurrencyExchangeRate.Insert(true);
+ end;
+}
\ No newline at end of file
diff --git a/Apps/APAC/EDocumentFormats/PINT A-NZ/test/src/LibraryEDocument.Codeunit.al b/Apps/APAC/EDocumentFormats/PINT A-NZ/test/src/LibraryEDocument.Codeunit.al
new file mode 100644
index 0000000000..2a6011bcfd
--- /dev/null
+++ b/Apps/APAC/EDocumentFormats/PINT A-NZ/test/src/LibraryEDocument.Codeunit.al
@@ -0,0 +1,1112 @@
+codeunit 148006 "Library - E-Document"
+{
+ EventSubscriberInstance = Manual;
+ Permissions = tabledata "E-Document Service" = rimd,
+ tabledata "E-Doc. Service Supported Type" = rimd,
+ tabledata "E-Doc. Mapping" = rimd;
+
+ var
+ StandardItem: Record Item;
+ VATPostingSetup: Record "VAT Posting Setup";
+ Assert: Codeunit Assert;
+ LibraryUtility: Codeunit "Library - Utility";
+ LibraryWorkflow: Codeunit "Library - Workflow";
+ LibrarySales: Codeunit "Library - Sales";
+ LibraryPurchase: Codeunit "Library - Purchase";
+ LibraryERM: Codeunit "Library - ERM";
+ LibraryRandom: Codeunit "Library - Random";
+ LibraryInvt: Codeunit "Library - Inventory";
+ LibraryJobQueue: Codeunit "Library - Job Queue";
+ LibraryVariableStorage: Codeunit "Library - Variable Storage";
+ LibraryFinChargeMemo: Codeunit "Library - Finance Charge Memo";
+ LibraryInventory: Codeunit "Library - Inventory";
+
+ procedure SetupStandardVAT()
+ begin
+ if (VATPostingSetup."VAT Bus. Posting Group" = '') and (VATPostingSetup."VAT Prod. Posting Group" = '') then
+ LibraryERM.CreateVATPostingSetupWithAccounts(VATPostingSetup, Enum::"Tax Calculation Type"::"Normal VAT", 1);
+ end;
+
+#if not CLEAN26
+#pragma warning disable AL0432
+ [Obsolete('Use SetupStandardSalesScenario(var Customer: Record Customer; var EDocService: Record "E-Document Service"; EDocDocumentFormat: Enum "E-Document Format"; EDocIntegration: Enum "Service Integration") instead', '26.0')]
+ procedure SetupStandardSalesScenario(var Customer: Record Customer; var EDocService: Record "E-Document Service"; EDocDocumentFormat: Enum "E-Document Format"; EDocIntegration: Enum "E-Document Integration")
+ var
+ ServiceCode: Code[20];
+ begin
+ // Create standard service and simple workflow
+ ServiceCode := CreateService(EDocDocumentFormat, EDocIntegration);
+ EDocService.Get(ServiceCode);
+ SetupStandardSalesScenario(Customer, EDocService);
+ end;
+#pragma warning restore AL0432
+#endif
+
+ procedure SetupStandardSalesScenario(var Customer: Record Customer; var EDocService: Record "E-Document Service"; EDocDocumentFormat: Enum "E-Document Format"; EDocIntegration: Enum "Service Integration")
+ var
+ ServiceCode: Code[20];
+ begin
+ // Create standard service and simple workflow
+ ServiceCode := CreateService(EDocDocumentFormat, EDocIntegration);
+ EDocService.Get(ServiceCode);
+ SetupStandardSalesScenario(Customer, EDocService);
+ end;
+
+ procedure SetupStandardSalesScenario(var Customer: Record Customer; var EDocService: Record "E-Document Service")
+ var
+ CountryRegion: Record "Country/Region";
+ DocumentSendingProfile: Record "Document Sending Profile";
+ SalesSetup: Record "Sales & Receivables Setup";
+ WorkflowSetup: Codeunit "Workflow Setup";
+ WorkflowCode: Code[20];
+ begin
+ LibraryWorkflow.DeleteAllExistingWorkflows();
+ WorkflowSetup.InitWorkflow();
+ SetupCompanyInfo();
+
+ CreateDocSendingProfile(DocumentSendingProfile);
+ WorkflowCode := CreateSimpleFlow(DocumentSendingProfile.Code, EDocService.Code);
+ DocumentSendingProfile."Electronic Document" := DocumentSendingProfile."Electronic Document"::"Extended E-Document Service Flow";
+ DocumentSendingProfile."Electronic Service Flow" := WorkflowCode;
+ DocumentSendingProfile.Modify();
+
+ // Create Customer for sales scenario
+ LibrarySales.CreateCustomer(Customer);
+ LibraryERM.FindCountryRegion(CountryRegion);
+ Customer.Validate(Address, LibraryUtility.GenerateRandomCode(Customer.FieldNo(Address), DATABASE::Customer));
+ Customer.Validate("Country/Region Code", CountryRegion.Code);
+ Customer.Validate(City, LibraryUtility.GenerateRandomCode(Customer.FieldNo(City), DATABASE::Customer));
+ Customer.Validate("Post Code", LibraryUtility.GenerateRandomCode(Customer.FieldNo("Post Code"), DATABASE::Customer));
+ Customer.Validate("VAT Bus. Posting Group", VATPostingSetup."VAT Bus. Posting Group");
+ Customer."VAT Registration No." := LibraryERM.GenerateVATRegistrationNo(CountryRegion.Code);
+ Customer.Validate(GLN, '1234567890128');
+ Customer."Document Sending Profile" := DocumentSendingProfile.Code;
+ Customer.Modify(true);
+
+ // Create Item
+ if StandardItem."No." = '' then begin
+ VATPostingSetup.TestField("VAT Prod. Posting Group");
+ CreateGenericItem(StandardItem);
+ StandardItem."VAT Prod. Posting Group" := VATPostingSetup."VAT Prod. Posting Group";
+ StandardItem.Modify();
+ end;
+
+ SalesSetup.Get();
+ SalesSetup."Invoice Rounding" := false;
+ SalesSetup.Modify();
+ end;
+
+ procedure GetGenericItem(var Item: Record Item)
+ begin
+ if StandardItem."No." = '' then
+ CreateGenericItem(StandardItem);
+ Item.Get(StandardItem."No.");
+ end;
+
+#if not CLEAN26
+#pragma warning disable AL0432
+ [Obsolete('Use SetupStandardPurchaseScenario(var Vendor: Record Vendor; var EDocService: Record "E-Document Service"; EDocDocumentFormat: Enum "E-Document Format"; EDocIntegration: Enum "Service Integration") instead', '26.0')]
+ procedure SetupStandardPurchaseScenario(var Vendor: Record Vendor; var EDocService: Record "E-Document Service"; EDocDocumentFormat: Enum "E-Document Format"; EDocIntegration: Enum "E-Document Integration")
+ var
+ ServiceCode: Code[20];
+ begin
+ // Create standard service and simple workflow
+ if EDocService.Code = '' then begin
+ ServiceCode := CreateService(EDocDocumentFormat, EDocIntegration);
+ EDocService.Get(ServiceCode);
+ end;
+ SetupStandardPurchaseScenario(Vendor, EDocService);
+ end;
+#pragma warning restore AL0432
+#endif
+
+ procedure SetupStandardPurchaseScenario(var Vendor: Record Vendor; var EDocService: Record "E-Document Service"; EDocDocumentFormat: Enum "E-Document Format"; EDocIntegration: Enum "Service Integration")
+ var
+ ServiceCode: Code[20];
+ begin
+ // Create standard service and simple workflow
+ if EDocService.Code = '' then begin
+ ServiceCode := CreateService(EDocDocumentFormat, EDocIntegration);
+ EDocService.Get(ServiceCode);
+ end;
+ SetupStandardPurchaseScenario(Vendor, EDocService);
+ end;
+
+
+ procedure SetupStandardPurchaseScenario(var Vendor: Record Vendor; var EDocService: Record "E-Document Service")
+ var
+ CountryRegion: Record "Country/Region";
+ ItemReference: Record "Item Reference";
+ UnitOfMeasure: Record "Unit of Measure";
+ ExtraItem: Record "Item";
+ WorkflowSetup: Codeunit "Workflow Setup";
+ LibraryItemReference: Codeunit "Library - Item Reference";
+ begin
+ WorkflowSetup.InitWorkflow();
+ SetupCompanyInfo();
+
+ // Create Customer for sales scenario
+ LibraryPurchase.CreateVendor(Vendor);
+ LibraryERM.FindCountryRegion(CountryRegion);
+ Vendor.Validate(Address, LibraryUtility.GenerateRandomCode(Vendor.FieldNo(Address), DATABASE::Vendor));
+ Vendor.Validate("Country/Region Code", CountryRegion.Code);
+ Vendor.Validate(City, LibraryUtility.GenerateRandomCode(Vendor.FieldNo(City), DATABASE::Vendor));
+ Vendor.Validate("Post Code", LibraryUtility.GenerateRandomCode(Vendor.FieldNo("Post Code"), DATABASE::Vendor));
+ Vendor.Validate("VAT Bus. Posting Group", VATPostingSetup."VAT Bus. Posting Group");
+ Vendor."VAT Registration No." := LibraryERM.GenerateVATRegistrationNo(CountryRegion.Code);
+ Vendor."Receive E-Document To" := Enum::"E-Document Type"::"Purchase Invoice";
+ Vendor.Validate(GLN, '1234567890128');
+ Vendor.Modify(true);
+
+ // Create Item
+ if StandardItem."No." = '' then begin
+ VATPostingSetup.TestField("VAT Prod. Posting Group");
+ CreateGenericItem(StandardItem, VATPostingSetup."VAT Prod. Posting Group");
+ end;
+
+ UnitOfMeasure.Init();
+ UnitOfMeasure."International Standard Code" := 'PCS';
+ UnitOfMeasure.Code := 'PCS';
+ if UnitOfMeasure.Insert() then;
+
+ CreateItemUnitOfMeasure(StandardItem."No.", UnitOfMeasure.Code);
+ LibraryItemReference.CreateItemReference(ItemReference, StandardItem."No.", '', 'PCS', Enum::"Item Reference Type"::Vendor, Vendor."No.", '1000');
+
+ CreateGenericItem(ExtraItem, VATPostingSetup."VAT Prod. Posting Group");
+ CreateItemUnitOfMeasure(ExtraItem."No.", UnitOfMeasure.Code);
+ LibraryItemReference.CreateItemReference(ItemReference, ExtraItem."No.", '', 'PCS', Enum::"Item Reference Type"::Vendor, Vendor."No.", '2000');
+ end;
+
+ procedure PostInvoice(var Customer: Record Customer) SalesInvHeader: Record "Sales Invoice Header";
+ var
+ SalesHeader: Record "Sales Header";
+ begin
+ LibraryJobQueue.SetDoNotHandleCodeunitJobQueueEnqueueEvent(true);
+ CreateSalesHeaderWithItem(Customer, SalesHeader, Enum::"Sales Document Type"::Invoice);
+ PostSalesDocument(SalesHeader, SalesInvHeader);
+ end;
+
+ procedure PostSalesDocument(var Customer: Record Customer; Ship: Boolean) SalesInvHeader: Record "Sales Invoice Header";
+ var
+ SalesHeader: Record "Sales Header";
+ begin
+ LibraryJobQueue.SetDoNotHandleCodeunitJobQueueEnqueueEvent(true);
+ CreateSalesHeaderWithItem(Customer, SalesHeader, Enum::"Sales Document Type"::Invoice);
+ PostSalesDocument(SalesHeader, SalesInvHeader, Ship);
+ end;
+
+ procedure PostSalesShipment(var Customer: Record Customer) SalesShipmentHeader: Record "Sales Shipment Header";
+ var
+ SalesHeader: Record "Sales Header";
+ begin
+ this.CreateSalesHeaderWithItem(Customer, SalesHeader, Enum::"Sales Document Type"::Order);
+ SalesShipmentHeader.Get(this.LibrarySales.PostSalesDocument(SalesHeader, true, false));
+ end;
+
+ procedure RunEDocumentJobQueue(var EDocument: Record "E-Document")
+ begin
+ LibraryJobQueue.FindAndRunJobQueueEntryByRecordId(EDocument.RecordId);
+ end;
+
+ procedure RunImportJob()
+ var
+ JobQueueEntry: Record "Job Queue Entry";
+ begin
+ JobQueueEntry.FindJobQueueEntry(JobQueueEntry."Object Type to Run"::Codeunit, Codeunit::"E-Document Import Job");
+ LibraryJobQueue.RunJobQueueDispatcher(JobQueueEntry);
+ end;
+
+ procedure CreateInboundEDocument(var EDocument: Record "E-Document"; EDocService: Record "E-Document Service")
+ var
+ EDocumentServiceStatus: Record "E-Document Service Status";
+ begin
+ EDocument.Insert();
+ EDocumentServiceStatus."E-Document Entry No" := EDocument."Entry No";
+ EDocumentServiceStatus."E-Document Service Code" := EDocService.Code;
+ EDocumentServiceStatus.Insert();
+ end;
+
+ procedure MockPurchaseDraftPrepared(EDocument: Record "E-Document")
+ var
+ EDocumentPurchaseHeader: Record "E-Document Purchase Header";
+ EDocumentProcessing: Codeunit "E-Document Processing";
+ begin
+ EDocumentPurchaseHeader.InsertForEDocument(EDocument);
+ EDocumentPurchaseHeader."Sub Total" := 1000;
+ EDocumentPurchaseHeader."Total VAT" := 100;
+ EDocumentPurchaseHeader.Total := 1100;
+ EDocumentPurchaseHeader.Modify();
+ EDocumentProcessing.ModifyEDocumentProcessingStatus(EDocument, "Import E-Doc. Proc. Status"::"Draft Ready");
+ EDocument."Document Type" := "E-Document Type"::"Purchase Invoice";
+ EDocument.Modify();
+ end;
+
+ procedure CreateInboundPEPPOLDocumentToState(var EDocument: Record "E-Document"; EDocumentService: Record "E-Document Service"; FileName: Text; EDocImportParams: Record "E-Doc. Import Parameters"): Boolean
+ var
+ EDocImport: Codeunit "E-Doc. Import";
+ InStream: InStream;
+ begin
+ NavApp.GetResource(FileName, InStream, TextEncoding::UTF8);
+ EDocImport.CreateFromType(EDocument, EDocumentService, Enum::"E-Doc. File Format"::XML, 'TestFile', InStream);
+ exit(EDocImport.ProcessIncomingEDocument(EDocument, EDocImportParams));
+ end;
+
+ ///
+ /// Given a purchase header with purchase lines created from an e-document, it modifies the required fields to make it ready for posting.
+ ///
+ procedure EditPurchaseDocumentFromEDocumentForPosting(var PurchaseHeader: Record "Purchase Header"; var EDocument: Record "E-Document")
+ var
+ PurchaseLine: Record "Purchase Line";
+ GLAccount: Record "G/L Account";
+ GeneralPostingSetup: Record "General Posting Setup";
+ GenBusinessPostingGroup: Record "Gen. Business Posting Group";
+ GenProductPostingGroup: Record "Gen. Product Posting Group";
+ VATBusinessPostingGroup: Record "VAT Business Posting Group";
+ VATProductPostingGroup: Record "VAT Product Posting Group";
+ LocalVATPostingSetup: Record "VAT Posting Setup";
+ begin
+ Assert.AreEqual(EDocument.SystemId, PurchaseHeader."E-Document Link", 'The purchase header has no link to the e-document.');
+ LibraryERM.CreateGenBusPostingGroup(GenBusinessPostingGroup);
+ LibraryERM.CreateGenProdPostingGroup(GenProductPostingGroup);
+ LibraryERM.CreateGeneralPostingSetup(GeneralPostingSetup, GenBusinessPostingGroup.Code, GenProductPostingGroup.Code);
+ LibraryERM.CreateVATBusinessPostingGroup(VATBusinessPostingGroup);
+ LibraryERM.CreateVATProductPostingGroup(VATProductPostingGroup);
+ LibraryERM.CreateVATPostingSetup(LocalVATPostingSetup, VATBusinessPostingGroup.Code, VATProductPostingGroup.Code);
+ LibraryERM.CreateGLAccount(GLAccount);
+ LocalVATPostingSetup."Purchase VAT Account" := GLAccount."No.";
+ LocalVATPostingSetup.Modify();
+ LibraryERM.CreateGLAccount(GLAccount);
+ PurchaseLine.SetRange("Document Type", PurchaseHeader."Document Type");
+ PurchaseLine.SetRange("Document No.", PurchaseHeader."No.");
+ PurchaseLine.FindSet();
+ repeat
+ PurchaseLine.Type := PurchaseLine.Type::"G/L Account";
+ PurchaseLine."No." := GLAccount."No.";
+ PurchaseLine."Gen. Bus. Posting Group" := GenBusinessPostingGroup.Code;
+ PurchaseLine."Gen. Prod. Posting Group" := GenProductPostingGroup.Code;
+ PurchaseLine."VAT Bus. Posting Group" := VATBusinessPostingGroup.Code;
+ PurchaseLine."VAT Prod. Posting Group" := VATProductPostingGroup.Code;
+ PurchaseLine.UpdateAmounts();
+ PurchaseLine.Modify();
+ until PurchaseLine.Next() = 0;
+ PurchaseHeader.CalcFields("Amount Including VAT");
+ EDocument."Amount Incl. VAT" := PurchaseHeader."Amount Including VAT";
+ EDocument.Modify();
+ end;
+
+ procedure CreateDocSendingProfile(var DocumentSendingProfile: Record "Document Sending Profile")
+ begin
+ DocumentSendingProfile.Init();
+ DocumentSendingProfile.Code := LibraryUtility.GenerateRandomCode(DocumentSendingProfile.FieldNo(Code), DATABASE::"Document Sending Profile");
+ DocumentSendingProfile.Insert();
+ end;
+
+
+ procedure CreateSimpleFlow(DocSendingProfileCode: Code[20]; ServiceCode: Code[20]): Code[20]
+ var
+ Workflow: Record Workflow;
+ WorkflowStepResponse: Record "Workflow Step";
+ WorkflowStepArgument: Record "Workflow Step Argument";
+ WorkflowStep: Record "Workflow Step";
+ EDocWorkflowSetup: Codeunit "E-Document Workflow Setup";
+ EDocCreatedEventID, SendEDocResponseEventID : Integer;
+ begin
+ // Create a simple workflow
+ // Send to Service 'ServiceCode' when using Document Sending Profile 'DocSendingProfile'
+ WorkflowStep.SetRange("Function Name", EDocWorkflowSetup.EDocCreated());
+ WorkflowStep.SetRange("Entry Point", true);
+ if WorkflowStep.FindSet() then
+ repeat
+ Workflow.Get(WorkflowStep."Workflow Code");
+ if not Workflow.Template then
+ exit;
+ until WorkflowStep.Next() = 0;
+
+ LibraryWorkflow.CreateWorkflow(Workflow);
+ EDocCreatedEventID := LibraryWorkflow.InsertEntryPointEventStep(Workflow, EDocWorkflowSetup.EDocCreated());
+ SendEDocResponseEventID := LibraryWorkflow.InsertResponseStep(Workflow, EDocWorkflowSetup.EDocSendEDocResponseCode(), EDocCreatedEventID);
+
+ WorkflowStepResponse.Get(Workflow.Code, SendEDocResponseEventID);
+ WorkflowStepArgument.Get(WorkflowStepResponse.Argument);
+
+ WorkflowStepArgument."E-Document Service" := ServiceCode;
+ WorkflowStepArgument.Modify();
+
+ LibraryWorkflow.EnableWorkflow(Workflow);
+ exit(Workflow.Code);
+ end;
+
+ procedure CreateCustomerNoWithEDocSendingProfile(var DocumentSendingProfile: Code[20]): Code[20]
+ var
+ CustomerNo: Code[20];
+ begin
+ CustomerNo := LibrarySales.CreateCustomerNo();
+ DocumentSendingProfile := CreateDocumentSendingProfileForWorkflow(CustomerNo, '');
+ exit(CustomerNo);
+ end;
+
+ procedure CreateEDocumentFromSales(var EDocument: Record "E-Document")
+ begin
+ CreateEDocumentFromSales(EDocument, LibrarySales.CreateCustomerNo());
+ end;
+
+ procedure CreateEDocumentFromSales(var EDocument: Record "E-Document"; CustomerNo: Code[20])
+ var
+ SalesInvHeader: Record "Sales Invoice Header";
+ SalesHeader: Record "Sales Header";
+ begin
+ LibrarySales.CreateSalesInvoiceForCustomerNo(SalesHeader, CustomerNo);
+ SalesInvHeader.Get(LibrarySales.PostSalesDocument(SalesHeader, true, true));
+ EDocument.FindLast();
+ end;
+
+ local procedure CreateGenericSalesHeader(var Cust: Record Customer; var SalesHeader: Record "Sales Header"; DocumentType: Enum "Sales Document Type")
+ begin
+ LibrarySales.CreateSalesHeader(SalesHeader, DocumentType, Cust."No.");
+ SalesHeader.Validate("Your Reference", LibraryUtility.GenerateRandomCode(SalesHeader.FieldNo("Your Reference"), DATABASE::"Sales Header"));
+
+ if DocumentType = SalesHeader."Document Type"::"Credit Memo" then
+ SalesHeader.Validate("Shipment Date", WorkDate());
+
+ SalesHeader.Modify(true);
+ end;
+
+ procedure CreateGenericItem(var Item: Record Item; VATProdPostingGroupCode: Code[20])
+ begin
+ CreateGenericItem(Item);
+ Item."VAT Prod. Posting Group" := VATPostingSetup."VAT Prod. Posting Group";
+ Item.Modify();
+ end;
+
+ procedure CreateGenericItem(var Item: Record Item)
+ var
+ UOM: Record "Unit of Measure";
+ ItemUOM: Record "Item Unit of Measure";
+ QtyPerUnit: Integer;
+ begin
+ QtyPerUnit := LibraryRandom.RandInt(10);
+
+ LibraryInvt.CreateUnitOfMeasureCode(UOM);
+ UOM.Validate("International Standard Code",
+ LibraryUtility.GenerateRandomCode(UOM.FieldNo("International Standard Code"), DATABASE::"Unit of Measure"));
+ UOM.Modify(true);
+
+ CreateItemWithPrice(Item, LibraryRandom.RandInt(10));
+
+ LibraryInvt.CreateItemUnitOfMeasure(ItemUOM, Item."No.", UOM.Code, QtyPerUnit);
+
+ Item.Validate("Sales Unit of Measure", UOM.Code);
+ Item.Modify(true);
+ end;
+
+ local procedure CreateItemWithPrice(var Item: Record Item; UnitPrice: Decimal)
+ begin
+ LibraryInvt.CreateItem(Item);
+ Item."Unit Price" := UnitPrice;
+ Item.Modify();
+ end;
+
+ procedure SetupCompanyInfo()
+ var
+ CompanyInfo: Record "Company Information";
+ CountryRegion: Record "Country/Region";
+ begin
+ LibraryERM.FindCountryRegion(CountryRegion);
+
+ CompanyInfo.Get();
+ CompanyInfo.Validate(IBAN, 'GB33BUKB20201555555555');
+ CompanyInfo.Validate("SWIFT Code", 'MIDLGB22Z0K');
+ CompanyInfo.Validate("Bank Branch No.", '1234');
+ CompanyInfo.Validate(Address, CopyStr(LibraryUtility.GenerateRandomXMLText(MaxStrLen(CompanyInfo.Address)), 1, MaxStrLen(CompanyInfo.Address)));
+ CompanyInfo.Validate("Post Code", CopyStr(LibraryUtility.GenerateRandomXMLText(MaxStrLen(CompanyInfo."Post Code")), 1, MaxStrLen(CompanyInfo."Post Code")));
+ CompanyInfo.Validate("City", CopyStr(LibraryUtility.GenerateRandomXMLText(MaxStrLen(CompanyInfo."City")), 1, MaxStrLen(CompanyInfo."Post Code")));
+ CompanyInfo."Country/Region Code" := CountryRegion.Code;
+
+ if CompanyInfo."VAT Registration No." = '' then
+ CompanyInfo."VAT Registration No." := LibraryERM.GenerateVATRegistrationNo(CompanyInfo."Country/Region Code");
+
+ CompanyInfo.Modify(true);
+ end;
+
+ procedure CreateSalesHeaderWithItem(Customer: Record Customer; var SalesHeader: Record "Sales Header"; DocumentType: Enum "Sales Document Type")
+ var
+ SalesLine: Record "Sales Line";
+ begin
+ CreateGenericSalesHeader(Customer, SalesHeader, DocumentType);
+
+ if StandardItem."No." = '' then
+ CreateGenericItem(StandardItem);
+
+ LibrarySales.CreateSalesLine(SalesLine, SalesHeader, SalesLine.Type::Item, StandardItem."No.", 1);
+ end;
+
+ procedure CreatePurchaseOrderWithLine(var Vendor: Record Vendor; var PurchaseHeader: Record "Purchase Header"; var PurchaseLine: Record "Purchase Line"; Quantity: Decimal)
+ begin
+ LibraryPurchase.CreatePurchHeader(PurchaseHeader, Enum::"Purchase Document Type"::Order, Vendor."No.");
+ if StandardItem."No." = '' then
+ CreateGenericItem(StandardItem);
+ LibraryPurchase.CreatePurchaseLine(PurchaseLine, PurchaseHeader, PurchaseLine.Type::Item, StandardItem."No.", Quantity);
+ end;
+
+ procedure PostSalesDocument(var SalesHeader: Record "Sales Header"; var SalesInvHeader: Record "Sales Invoice Header")
+ begin
+ SalesInvHeader.Get(LibrarySales.PostSalesDocument(SalesHeader, true, true));
+ end;
+
+ procedure PostSalesDocument(var SalesHeader: Record "Sales Header"; var SalesInvHeader: Record "Sales Invoice Header"; Ship: Boolean)
+ begin
+ SalesInvHeader.Get(LibrarySales.PostSalesDocument(SalesHeader, Ship, true));
+ end;
+
+ procedure CreateReminderWithLine(Customer: Record Customer; var ReminderHeader: Record "Reminder Header")
+ var
+ ReminderLine: Record "Reminder Line";
+ begin
+ LibraryERM.CreateReminderHeader(ReminderHeader);
+ ReminderHeader.Validate("Customer No.", Customer."No.");
+ ReminderHeader."Your Reference" := LibraryRandom.RandText(35);
+ ReminderHeader.Modify(false);
+
+ LibraryERM.CreateReminderLine(ReminderLine, ReminderHeader."No.", Enum::"Reminder Source Type"::"G/L Account");
+ ReminderLine.Validate("Remaining Amount", this.LibraryRandom.RandInt(100));
+ ReminderLine.Description := LibraryRandom.RandText(100);
+ ReminderLine.Modify(false);
+ end;
+
+ procedure CreateFinChargeMemoWithLine(Customer: Record Customer; var FinChargeMemoHeader: Record "Finance Charge Memo Header")
+ var
+ FinChargeMemoLine: Record "Finance Charge Memo Line";
+ FinanceChargeTerms: Record "Finance Charge Terms";
+ begin
+ LibraryERM.CreateFinanceChargeMemoHeader(FinChargeMemoHeader, Customer."No.");
+ LibraryFinChargeMemo.CreateFinanceChargeTermAndText(FinanceChargeTerms);
+ FinChargeMemoHeader.Validate("Fin. Charge Terms Code", FinanceChargeTerms.Code);
+ FinChargeMemoHeader."Your Reference" := LibraryRandom.RandText(35);
+ FinChargeMemoHeader.Modify(false);
+
+ LibraryERM.CreateFinanceChargeMemoLine(FinChargeMemoLine, FinChargeMemoHeader."No.", FinChargeMemoLine.Type::"G/L Account");
+ FinChargeMemoLine.Validate("Remaining Amount", this.LibraryRandom.RandInt(100));
+ FinChargeMemoLine.Description := LibraryRandom.RandText(100);
+ FinChargeMemoLine.Modify(false);
+ end;
+
+ procedure IssueReminder(Customer: Record Customer) IssuedReminderHeader: Record "Issued Reminder Header"
+ var
+ ReminderHeader: Record "Reminder Header";
+ ReminderIssue: Codeunit "Reminder-Issue";
+ begin
+ CreateReminderWithLine(Customer, ReminderHeader);
+
+ ReminderHeader.SetRange("No.", ReminderHeader."No.");
+ ReminderIssue.Set(ReminderHeader, false, 0D);
+ ReminderIssue.Run();
+
+ ReminderIssue.GetIssuedReminder(IssuedReminderHeader);
+ end;
+
+ procedure IssueFinChargeMemo(Customer: Record Customer) IssuedFinChargeMemoHeader: Record "Issued Fin. Charge Memo Header"
+ var
+ FinChargeMemoHeader: Record "Finance Charge Memo Header";
+ FinChargeMemoIssue: Codeunit "FinChrgMemo-Issue";
+ begin
+ CreateFinChargeMemoWithLine(Customer, FinChargeMemoHeader);
+
+ FinChargeMemoHeader.SetRange("No.", FinChargeMemoHeader."No.");
+ FinChargeMemoIssue.Set(FinChargeMemoHeader, false, 0D);
+ FinChargeMemoIssue.Run();
+
+ FinChargeMemoIssue.GetIssuedFinChrgMemo(IssuedFinChargeMemoHeader);
+ end;
+
+ procedure SetupReminderNoSeries()
+ var
+ SalesSetup: Record "Sales & Receivables Setup";
+ begin
+ SalesSetup.Get();
+ SalesSetup.Validate("Reminder Nos.", this.LibraryERM.CreateNoSeriesCode());
+ SalesSetup.Validate("Issued Reminder Nos.", this.LibraryERM.CreateNoSeriesCode());
+ SalesSetup.Modify(false);
+ end;
+
+ procedure SetupFinChargeMemoNoSeries()
+ var
+ SalesSetup: Record "Sales & Receivables Setup";
+ begin
+ SalesSetup.Get();
+ SalesSetup.Validate("Fin. Chrg. Memo Nos.", this.LibraryERM.CreateNoSeriesCode());
+ SalesSetup.Validate("Issued Fin. Chrg. M. Nos.", this.LibraryERM.CreateNoSeriesCode());
+ SalesSetup.Modify(false);
+ end;
+
+ procedure Initialize()
+ var
+ DocumentSendingProfile: Record "Document Sending Profile";
+ EDocService: Record "E-Document Service";
+ EDocServiceStatus: Record "E-Document Service Status";
+ EDocServiceSupportedType: Record "E-Doc. Service Supported Type";
+ EDocMapping: Record "E-Doc. Mapping";
+ EDocLogs: Record "E-Document Log";
+ EDocMappingLogs: Record "E-Doc. Mapping Log";
+ EDocDataStorage: Record "E-Doc. Data Storage";
+ EDocument: Record "E-Document";
+ WorkflowSetup: Codeunit "Workflow Setup";
+ begin
+ LibraryWorkflow.DeleteAllExistingWorkflows();
+ WorkflowSetup.InitWorkflow();
+ DocumentSendingProfile.DeleteAll();
+ EDocService.DeleteAll();
+ EDocServiceSupportedType.DeleteAll();
+ EDocument.DeleteAll();
+ EDocServiceStatus.DeleteAll();
+ EDocDataStorage.DeleteAll();
+ EDocMapping.DeleteAll();
+ EDocLogs.DeleteAll();
+ EDocMappingLogs.DeleteAll();
+ Commit();
+ end;
+
+ procedure PostSalesDocument(CustomerNo: Code[20]): Code[20]
+ var
+ SalesInvHeader: Record "Sales Invoice Header";
+ SalesHeader: Record "Sales Header";
+ begin
+ LibrarySales.CreateSalesInvoiceForCustomerNo(SalesHeader, CustomerNo);
+ SalesInvHeader.Get(LibrarySales.PostSalesDocument(SalesHeader, true, true));
+ exit(SalesInvHeader."No.");
+ end;
+
+ procedure PostSalesDocument(): Code[20]
+ begin
+ PostSalesDocument('');
+ end;
+
+ procedure CreateDocumentSendingProfileForWorkflow(CustomerNo: Code[20]; WorkflowCode: Code[20]): Code[20]
+ var
+ Customer: Record Customer;
+ DocumentSendingProfile: Record "Document Sending Profile";
+ begin
+ DocumentSendingProfile.Init();
+ DocumentSendingProfile.Code := LibraryUtility.GenerateRandomCode20(DocumentSendingProfile.FieldNo(Code), Database::"Document Sending Profile");
+ DocumentSendingProfile."Electronic Document" := Enum::"Doc. Sending Profile Elec.Doc."::"Extended E-Document Service Flow";
+ DocumentSendingProfile."Electronic Service Flow" := WorkflowCode;
+ DocumentSendingProfile.Insert();
+
+ Customer.Get(CustomerNo);
+ Customer.Validate("Document Sending Profile", DocumentSendingProfile.Code);
+ Customer.Modify();
+ exit(DocumentSendingProfile.Code);
+ end;
+
+ procedure UpdateWorkflowOnDocumentSendingProfile(DocSendingProfile: Code[20]; WorkflowCode: Code[20])
+ var
+ DocumentSendingProfile: Record "Document Sending Profile";
+ begin
+ DocumentSendingProfile.Get(DocSendingProfile);
+ DocumentSendingProfile.Validate("Electronic Service Flow", WorkflowCode);
+ DocumentSendingProfile.Modify();
+ end;
+
+ procedure CreateFlowWithService(DocSendingProfile: Code[20]; ServiceCode: Code[20]): Code[20]
+ var
+ Workflow: Record Workflow;
+ WorkflowStepResponse: Record "Workflow Step";
+ WorkflowStepArgument: Record "Workflow Step Argument";
+ EDocWorkflowSetup: Codeunit "E-Document Workflow Setup";
+ EDocCreatedEventID, SendEDocResponseEventID : Integer;
+ EventConditions: Text;
+ begin
+ LibraryWorkflow.CreateWorkflow(Workflow);
+ EventConditions := CreateWorkflowEventConditionDocSendingProfileFilter(DocSendingProfile);
+
+ EDocCreatedEventID := LibraryWorkflow.InsertEntryPointEventStep(Workflow, EDocWorkflowSetup.EDocCreated());
+ LibraryWorkflow.InsertEventArgument(EDocCreatedEventID, EventConditions);
+ SendEDocResponseEventID := LibraryWorkflow.InsertResponseStep(Workflow, EDocWorkflowSetup.EDocSendEDocResponseCode(), EDocCreatedEventID);
+
+ WorkflowStepResponse.Get(Workflow.Code, SendEDocResponseEventID);
+ WorkflowStepArgument.Get(WorkflowStepResponse.Argument);
+
+ WorkflowStepArgument.Validate("E-Document Service", ServiceCode);
+ WorkflowStepArgument.Modify();
+
+ LibraryWorkflow.EnableWorkflow(Workflow);
+ exit(Workflow.Code);
+ end;
+
+ procedure CreateEmptyFlow(): Code[20]
+ var
+ Workflow: Record Workflow;
+ EDocWorkflowSetup: Codeunit "E-Document Workflow Setup";
+ EDocCreatedEventID: Integer;
+ begin
+ LibraryWorkflow.CreateWorkflow(Workflow);
+ EDocCreatedEventID := LibraryWorkflow.InsertEntryPointEventStep(Workflow, EDocWorkflowSetup.EDocCreated());
+ LibraryWorkflow.InsertResponseStep(Workflow, EDocWorkflowSetup.EDocSendEDocResponseCode(), EDocCreatedEventID);
+
+ LibraryWorkflow.EnableWorkflow(Workflow);
+ exit(Workflow.Code);
+ end;
+
+ procedure CreateFlowWithServices(DocSendingProfile: Code[20]; ServiceCodeA: Code[20]; ServiceCodeB: Code[20]): Code[20]
+ var
+ Workflow: Record Workflow;
+ WorkflowStepResponse: Record "Workflow Step";
+ WorkflowStepArgument: Record "Workflow Step Argument";
+ EDocWorkflowSetup: Codeunit "E-Document Workflow Setup";
+ EDocCreatedEventID, SendEDocResponseEventIDA, SendEDocResponseEventIDB : Integer;
+ EventConditionsDocProfile, EventConditionsService : Text;
+ begin
+ LibraryWorkflow.CreateWorkflow(Workflow);
+ EventConditionsDocProfile := CreateWorkflowEventConditionDocSendingProfileFilter(DocSendingProfile);
+ EventConditionsService := CreateWorkflowEventConditionServiceFilter(ServiceCodeA);
+
+ EDocCreatedEventID := LibraryWorkflow.InsertEntryPointEventStep(Workflow, EDocWorkflowSetup.EDocCreated());
+ LibraryWorkflow.InsertEventArgument(EDocCreatedEventID, EventConditionsDocProfile);
+ SendEDocResponseEventIDA := LibraryWorkflow.InsertResponseStep(Workflow, EDocWorkflowSetup.EDocSendEDocResponseCode(), EDocCreatedEventID);
+ SendEDocResponseEventIDB := LibraryWorkflow.InsertResponseStep(Workflow, EDocWorkflowSetup.EDocSendEDocResponseCode(), SendEDocResponseEventIDA);
+
+ WorkflowStepResponse.Get(Workflow.Code, SendEDocResponseEventIDA);
+ WorkflowStepArgument.Get(WorkflowStepResponse.Argument);
+ WorkflowStepArgument."E-Document Service" := ServiceCodeA;
+ WorkflowStepArgument.Modify();
+
+ WorkflowStepResponse.Get(Workflow.Code, SendEDocResponseEventIDB);
+ WorkflowStepArgument.Get(WorkflowStepResponse.Argument);
+ WorkflowStepArgument."E-Document Service" := ServiceCodeB;
+ WorkflowStepArgument.Modify();
+
+ LibraryWorkflow.EnableWorkflow(Workflow);
+ exit(Workflow.Code);
+ end;
+
+ local procedure DeleteEDocumentRelatedEntities()
+ var
+ DynamicRequestPageEntity: Record "Dynamic Request Page Entity";
+ begin
+ DynamicRequestPageEntity.SetRange("Table ID", DATABASE::"E-Document");
+ DynamicRequestPageEntity.DeleteAll(true);
+ end;
+
+ local procedure CreateWorkflowEventConditionDocSendingProfileFilter(DocSendingProfile: Code[20]): Text
+ var
+ RequestPageParametersHelper: Codeunit "Request Page Parameters Helper";
+ FilterPageBuilder: FilterPageBuilder;
+ EntityName: Code[20];
+ begin
+ EntityName := CreateDynamicRequestPageEntity(DATABASE::"E-Document", Database::"Document Sending Profile");
+ CreateEDocumentDocSendingProfileDataItem(FilterPageBuilder, DocSendingProfile);
+ exit(RequestPageParametersHelper.GetViewFromDynamicRequestPage(FilterPageBuilder, EntityName, Database::"E-Document"));
+ end;
+
+ local procedure CreateWorkflowEventConditionServiceFilter(ServiceCode: Code[20]): Text
+ var
+ RequestPageParametersHelper: Codeunit "Request Page Parameters Helper";
+ FilterPageBuilder: FilterPageBuilder;
+ EntityName: Code[20];
+ begin
+ EntityName := CreateDynamicRequestPageEntity(DATABASE::"E-Document", Database::"E-Document Service");
+ CreateEDocServiceDataItem(FilterPageBuilder, ServiceCode);
+ exit(RequestPageParametersHelper.GetViewFromDynamicRequestPage(FilterPageBuilder, EntityName, Database::"E-Document Service"));
+ end;
+
+ local procedure CreateEDocumentDocSendingProfileDataItem(var FilterPageBuilder: FilterPageBuilder; DocumentSendingProfile: Code[20])
+ var
+ EDocument: Record "E-Document";
+ EDocumentDataItem: Text;
+ begin
+ EDocumentDataItem := FilterPageBuilder.AddTable(EDocument.TableCaption, DATABASE::"E-Document");
+ FilterPageBuilder.AddField(EDocumentDataItem, EDocument."Document Sending Profile", DocumentSendingProfile);
+ end;
+
+ local procedure CreateEDocServiceDataItem(var FilterPageBuilder: FilterPageBuilder; ServiceCode: Code[20])
+ var
+ EDocService: Record "E-Document Service";
+ EDocumentDataItem: Text;
+ begin
+ EDocumentDataItem := FilterPageBuilder.AddTable(EDocService.TableCaption, DATABASE::"E-Document Service");
+ FilterPageBuilder.AddField(EDocumentDataItem, EDocService.Code, ServiceCode);
+ end;
+
+ local procedure CreateDynamicRequestPageEntity(TableID: Integer; RelatedTable: Integer): Code[20]
+ var
+ EntityName: Code[20];
+ begin
+ DeleteEDocumentRelatedEntities();
+ EntityName := LibraryUtility.GenerateGUID();
+ LibraryWorkflow.CreateDynamicRequestPageEntity(EntityName, TableID, RelatedTable);
+ exit(EntityName);
+ end;
+
+#if not CLEAN26
+#pragma warning disable AL0432
+ [Obsolete('Use CreateService(EDocDocumentFormat: Enum "E-Document Format"; EDocIntegration: Enum "Service Integration") instead', '26.0')]
+ procedure CreateService(Integration: Enum "E-Document Integration"): Code[20]
+ var
+ EDocService: Record "E-Document Service";
+ begin
+ EDocService.Init();
+ EDocService.Code := LibraryUtility.GenerateRandomCode20(EDocService.FieldNo(Code), Database::"E-Document Service");
+ EDocService."Document Format" := "E-Document Format"::Mock;
+ EDocService."Service Integration" := Integration;
+ EDocService.Insert();
+
+ CreateSupportedDocTypes(EDocService);
+
+ exit(EDocService.Code);
+ end;
+#pragma warning restore AL0432
+#endif
+
+ procedure CreateService(Integration: Enum "Service Integration"): Code[20]
+ var
+ EDocService: Record "E-Document Service";
+ begin
+ EDocService.Init();
+ EDocService.Code := LibraryUtility.GenerateRandomCode20(EDocService.FieldNo(Code), Database::"E-Document Service");
+ EDocService."Document Format" := "E-Document Format"::Mock;
+ EDocService."Service Integration V2" := Integration;
+ EDocService.Insert();
+
+ CreateSupportedDocTypes(EDocService);
+
+ exit(EDocService.Code);
+ end;
+
+#if not CLEAN26
+#pragma warning disable AL0432
+ [Obsolete('Use CreateService(EDocDocumentFormat: Enum "E-Document Format"; EDocIntegration: Enum "Service Integration") instead', '26.0')]
+ procedure CreateService(EDocDocumentFormat: Enum "E-Document Format"; EDocIntegration: Enum "E-Document Integration"): Code[20]
+ var
+ EDocService: Record "E-Document Service";
+ begin
+ EDocService.Init();
+ EDocService.Code := LibraryUtility.GenerateRandomCode20(EDocService.FieldNo(Code), Database::"E-Document Service");
+ EDocService."Document Format" := EDocDocumentFormat;
+ EDocService."Service Integration" := EDocIntegration;
+ EDocService.Insert();
+
+ CreateSupportedDocTypes(EDocService);
+
+ exit(EDocService.Code);
+ end;
+#pragma warning restore AL0432
+#endif
+
+ procedure CreateService(EDocDocumentFormat: Enum "E-Document Format"; EDocIntegration: Enum "Service Integration"): Code[20]
+ var
+ EDocService: Record "E-Document Service";
+ begin
+ EDocService.Init();
+ EDocService.Code := LibraryUtility.GenerateRandomCode20(EDocService.FieldNo(Code), Database::"E-Document Service");
+ EDocService."Document Format" := EDocDocumentFormat;
+ EDocService."Service Integration V2" := EDocIntegration;
+ EDocService.Insert();
+
+ CreateSupportedDocTypes(EDocService);
+
+ exit(EDocService.Code);
+ end;
+
+
+ procedure CreateServiceMapping(EDocService: Record "E-Document Service")
+ var
+ TransformationRule: Record "Transformation Rule";
+ EDocMapping: Record "E-Doc. Mapping";
+ SalesInvHeader: Record "Sales Invoice Header";
+ begin
+ TransformationRule.Get(TransformationRule.GetLowercaseCode());
+ // Lower case mapping
+ CreateTransformationMapping(EDocMapping, TransformationRule, EDocService.Code);
+ EDocMapping."Table ID" := Database::"Sales Invoice Header";
+ EDocMapping."Field ID" := SalesInvHeader.FieldNo("Bill-to Name");
+ EDocMapping.Modify();
+ CreateTransformationMapping(EDocMapping, TransformationRule, EDocService.Code);
+ EDocMapping."Table ID" := Database::"Sales Invoice Header";
+ EDocMapping."Field ID" := SalesInvHeader.FieldNo("Bill-to Address");
+ EDocMapping.Modify();
+ end;
+
+ procedure DeleteServiceMapping(EDocService: Record "E-Document Service")
+ var
+ EDocMapping: Record "E-Doc. Mapping";
+ begin
+ EDocMapping.SetRange(Code, EDocService.Code);
+ EDocMapping.DeleteAll();
+ end;
+
+
+ // procedure CreateServiceWithMapping(var EDocMapping: Record "E-Doc. Mapping"; TransformationRule: Record "Transformation Rule"; Integration: Enum "E-Document Integration"): Code[20]
+ // begin
+ // exit(CreateServiceWithMapping(EDocMapping, TransformationRule, false, Integration));
+ // end;
+
+ // procedure CreateServiceWithMapping(var EDocMapping: Record "E-Doc. Mapping"; TransformationRule: Record "Transformation Rule"; UseBatching: Boolean; Integration: Enum "E-Document Integration"): Code[20]
+ // var
+ // SalesInvHeader: Record "Sales Invoice Header";
+ // EDocService: Record "E-Document Service";
+ // begin
+ // EDocService.Init();
+ // EDocService.Code := LibraryUtility.GenerateRandomCode20(EDocService.FieldNo(Code), Database::"E-Document Service");
+ // EDocService."Document Format" := "E-Document Format"::Mock;
+ // EDocService."Service Integration" := Integration;
+ // EDocService."Use Batch Processing" := UseBatching;
+ // EDocService.Insert();
+
+ // CreateSupportedDocTypes(EDocService);
+
+ // // Lower case mapping
+ // CreateTransformationMapping(EDocMapping, TransformationRule, EDocService.Code);
+ // EDocMapping."Table ID" := Database::"Sales Invoice Header";
+ // EDocMapping."Field ID" := SalesInvHeader.FieldNo("Bill-to Name");
+ // EDocMapping.Modify();
+ // CreateTransformationMapping(EDocMapping, TransformationRule, EDocService.Code);
+ // EDocMapping."Table ID" := Database::"Sales Invoice Header";
+ // EDocMapping."Field ID" := SalesInvHeader.FieldNo("Bill-to Address");
+ // EDocMapping.Modify();
+
+ // exit(EDocService.Code);
+ // end;
+
+ procedure CreateSupportedDocTypes(EDocService: Record "E-Document Service")
+ var
+ EDocServiceSupportedType: Record "E-Doc. Service Supported Type";
+ begin
+ EDocServiceSupportedType.Init();
+ EDocServiceSupportedType."E-Document Service Code" := EDocService.Code;
+ EDocServiceSupportedType."Source Document Type" := EDocServiceSupportedType."Source Document Type"::"Sales Invoice";
+ EDocServiceSupportedType.Insert();
+
+ EDocServiceSupportedType."Source Document Type" := EDocServiceSupportedType."Source Document Type"::"Sales Credit Memo";
+ EDocServiceSupportedType.Insert();
+
+ EDocServiceSupportedType."Source Document Type" := EDocServiceSupportedType."Source Document Type"::"Service Invoice";
+ EDocServiceSupportedType.Insert();
+
+ EDocServiceSupportedType."Source Document Type" := EDocServiceSupportedType."Source Document Type"::"Service Credit Memo";
+ EDocServiceSupportedType.Insert();
+
+ EDocServiceSupportedType."Source Document Type" := EDocServiceSupportedType."Source Document Type"::"Issued Finance Charge Memo";
+ EDocServiceSupportedType.Insert();
+
+ EDocServiceSupportedType."Source Document Type" := EDocServiceSupportedType."Source Document Type"::"Issued Reminder";
+ EDocServiceSupportedType.Insert();
+ end;
+
+ procedure AddEDocServiceSupportedType(EDocService: Record "E-Document Service"; EDocumentType: Enum "E-Document Type")
+ var
+ EDocServiceSupportedType: Record "E-Doc. Service Supported Type";
+ begin
+ if not EDocService.Get(EDocService.Code) then
+ exit;
+
+ EDocServiceSupportedType.Init();
+ EDocServiceSupportedType."E-Document Service Code" := EDocService.Code;
+ EDocServiceSupportedType."Source Document Type" := EDocumentType;
+ if EDocServiceSupportedType.Insert() then;
+ end;
+
+ procedure CreateTestReceiveServiceForEDoc(var EDocService: Record "E-Document Service"; Integration: Enum "Service Integration")
+ begin
+ if not EDocService.Get('TESTRECEIVE') then begin
+ EDocService.Init();
+ EDocService.Code := 'TESTRECEIVE';
+ EDocService."Document Format" := "E-Document Format"::Mock;
+ EDocService."Service Integration V2" := Integration;
+ EDocService.Insert();
+ end;
+ end;
+
+#if not CLEAN26
+#pragma warning disable AL0432
+ [Obsolete('Use CreateTestReceiveServiceForEDoc(var EDocService: Record "E-Document Service"; Integration: Enum "Service Integration") instead', '26.0')]
+ procedure CreateTestReceiveServiceForEDoc(var EDocService: Record "E-Document Service"; Integration: Enum "E-Document Integration")
+ begin
+ if not EDocService.Get('TESTRECEIVE') then begin
+ EDocService.Init();
+ EDocService.Code := 'TESTRECEIVE';
+ EDocService."Document Format" := "E-Document Format"::Mock;
+ EDocService."Service Integration" := Integration;
+ EDocService.Insert();
+ end;
+ end;
+#pragma warning restore AL0432
+#endif
+
+ procedure CreateGetBasicInfoErrorReceiveServiceForEDoc(var EDocService: Record "E-Document Service"; Integration: Enum "Service Integration")
+ begin
+ if not EDocService.Get('BIERRRECEIVE') then begin
+ EDocService.Init();
+ EDocService.Code := 'BIERRRECEIVE';
+ EDocService."Document Format" := "E-Document Format"::Mock;
+ EDocService."Service Integration V2" := Integration;
+ EDocService.Insert();
+ end;
+ end;
+
+#if not CLEAN26
+#pragma warning disable AL0432
+ [Obsolete('Use CreateGetBasicInfoErrorReceiveServiceForEDoc(var EDocService: Record "E-Document Service"; Integration: Enum "Service Integration") instead', '26.0')]
+ procedure CreateGetBasicInfoErrorReceiveServiceForEDoc(var EDocService: Record "E-Document Service"; Integration: Enum "E-Document Integration")
+ begin
+ if not EDocService.Get('BIERRRECEIVE') then begin
+ EDocService.Init();
+ EDocService.Code := 'BIERRRECEIVE';
+ EDocService."Document Format" := "E-Document Format"::Mock;
+ EDocService."Service Integration" := Integration;
+ EDocService.Insert();
+ end;
+ end;
+#pragma warning restore AL0432
+#endif
+
+ procedure CreateGetCompleteInfoErrorReceiveServiceForEDoc(var EDocService: Record "E-Document Service"; Integration: Enum "Service Integration")
+ begin
+ if not EDocService.Get('CIERRRECEIVE') then begin
+ EDocService.Init();
+ EDocService.Code := 'CIERRRECEIVE';
+ EDocService."Document Format" := "E-Document Format"::Mock;
+ EDocService."Service Integration V2" := Integration;
+ EDocService.Insert();
+ end;
+ end;
+
+#if not CLEAN26
+#pragma warning disable AL0432
+ [Obsolete('Use CreateGetCompleteInfoErrorReceiveServiceForEDoc(var EDocService: Record "E-Document Service"; Integration: Enum "Service Integration") instead', '26.0')]
+ procedure CreateGetCompleteInfoErrorReceiveServiceForEDoc(var EDocService: Record "E-Document Service"; Integration: Enum "E-Document Integration")
+ begin
+ if not EDocService.Get('CIERRRECEIVE') then begin
+ EDocService.Init();
+ EDocService.Code := 'CIERRRECEIVE';
+ EDocService."Document Format" := "E-Document Format"::Mock;
+ EDocService."Service Integration" := Integration;
+ EDocService.Insert();
+ end;
+ end;
+#pragma warning restore AL0432
+#endif
+
+ procedure CreateDirectMapping(var EDocMapping: Record "E-Doc. Mapping"; EDocService: Record "E-Document Service"; FindValue: Text; ReplaceValue: Text)
+ begin
+ CreateDirectMapping(EDocMapping, EDocService, FindValue, ReplaceValue, 0, 0);
+ end;
+
+ procedure CreateTransformationMapping(var EDocMapping: Record "E-Doc. Mapping"; TransformationRule: Record "Transformation Rule")
+ begin
+ CreateTransformationMapping(EDocMapping, TransformationRule, '');
+ end;
+
+ procedure CreateTransformationMapping(var EDocMapping: Record "E-Doc. Mapping"; TransformationRule: Record "Transformation Rule"; ServiceCode: Code[20])
+ begin
+ EDocMapping.Init();
+ EDocMapping.Code := ServiceCode;
+ EDocMapping."Entry No." := 0;
+ EDocMapping."Transformation Rule" := TransformationRule.Code;
+ EDocMapping.Insert();
+ end;
+
+ procedure CreateDirectMapping(var EDocMapping: Record "E-Doc. Mapping"; EDocService: Record "E-Document Service"; FindValue: Text; ReplaceValue: Text; TableId: Integer; FieldId: Integer)
+ begin
+ EDocMapping.Init();
+ EDocMapping."Entry No." := 0;
+ EDocMapping.Code := EDocService.Code;
+ EDocMapping."Table ID" := TableId;
+ EDocMapping."Field ID" := FieldId;
+ EDocMapping."Find Value" := CopyStr(FindValue, 1, LibraryUtility.GetFieldLength(DATABASE::"E-Doc. Mapping", EDocMapping.FieldNo("Find Value")));
+ EDocMapping."Replace Value" := CopyStr(ReplaceValue, 1, LibraryUtility.GetFieldLength(DATABASE::"E-Doc. Mapping", EDocMapping.FieldNo("Replace Value")));
+ EDocMapping.Insert();
+ end;
+
+ local procedure CreateItemUnitOfMeasure(ItemNo: Code[20]; UnitOfMeasureCode: Code[10])
+ var
+ ItemUnitOfMeasure: Record "Item Unit of Measure";
+ begin
+ ItemUnitOfMeasure.Init();
+ ItemUnitOfMeasure.Validate("Item No.", ItemNo);
+ ItemUnitOfMeasure.Validate(Code, UnitOfMeasureCode);
+ ItemUnitOfMeasure."Qty. per Unit of Measure" := 1;
+ if ItemUnitOfMeasure.Insert() then;
+ end;
+
+ procedure TempBlobToTxt(var TempBlob: Codeunit "Temp Blob"): Text
+ var
+ InStr: InStream;
+ Content: Text;
+ begin
+ TempBlob.CreateInStream(InStr);
+ InStr.Read(Content);
+ exit(Content);
+ end;
+
+ internal procedure CreateLocationsWithPostingSetups(
+ var FromLocation: Record Location;
+ var ToLocation: Record Location;
+ var InTransitLocation: Record Location;
+ var InventoryPostingGroup: Record "Inventory Posting Group")
+ var
+ InventoryPostingSetupFromLocation: Record "Inventory Posting Setup";
+ InventoryPostingSetupToLocation: Record "Inventory Posting Setup";
+ InventoryPostingSetupInTransitLocation: Record "Inventory Posting Setup";
+ LibraryWarehouse: Codeunit "Library - Warehouse";
+ begin
+ LibraryWarehouse.CreateLocation(FromLocation);
+ LibraryWarehouse.CreateLocation(ToLocation);
+ LibraryWarehouse.CreateInTransitLocation(InTransitLocation);
+
+ LibraryInventory.CreateInventoryPostingGroup(InventoryPostingGroup);
+ LibraryInventory.CreateInventoryPostingSetup(InventoryPostingSetupFromLocation, FromLocation.Code, InventoryPostingGroup.Code);
+ LibraryInventory.UpdateInventoryPostingSetup(FromLocation, InventoryPostingGroup.Code);
+
+ InventoryPostingSetupFromLocation.Get(FromLocation.Code, InventoryPostingGroup.Code);
+ InventoryPostingSetupToLocation := InventoryPostingSetupFromLocation;
+ InventoryPostingSetupToLocation."Location Code" := ToLocation.Code;
+ InventoryPostingSetupToLocation.Insert(false);
+
+ InventoryPostingSetupInTransitLocation := InventoryPostingSetupFromLocation;
+ InventoryPostingSetupInTransitLocation."Location Code" := InTransitLocation.Code;
+ InventoryPostingSetupInTransitLocation.Insert(false);
+ end;
+
+ internal procedure CreateItemWithInventoryPostingGroup(var Item: Record Item; InventoryPostingGroupCode: Code[20])
+ begin
+ LibraryInventory.CreateItem(Item);
+ Item."Inventory Posting Group" := InventoryPostingGroupCode;
+ Item.Modify(false);
+ end;
+
+ internal procedure CreateItemWIthInventoryStock(var Item: Record Item; var FromLocation: Record Location; var InventoryPostingGroup: Record "Inventory Posting Group")
+ var
+ ItemJournalLine: Record "Item Journal Line";
+ begin
+ CreateItemWithInventoryPostingGroup(Item, InventoryPostingGroup.Code);
+ LibraryInventory.CreateItemJournalLineInItemTemplate(
+ ItemJournalLine, Item."No.", FromLocation.Code, '', LibraryRandom.RandIntInRange(10, 20));
+ LibraryInventory.PostItemJournalLine(
+ ItemJournalLine."Journal Template Name", ItemJournalLine."Journal Batch Name");
+ end;
+
+ // Verify procedures
+
+ procedure AssertEDocumentLogs(EDocument: Record "E-Document"; EDocumentService: Record "E-Document Service"; EDocLogList: List of [Enum "E-Document Service Status"])
+ var
+ EDocLog: Record "E-Document Log";
+ Count: Integer;
+ begin
+ EDocLog.SetRange("E-Doc. Entry No", EDocument."Entry No");
+ EDocLog.SetRange("Service Code", EDocumentService.Code);
+ Assert.AreEqual(EDocLogList.Count(), EDocLog.Count(), 'Wrong number of logs');
+ Count := 1;
+ EDocLog.SetCurrentKey("Entry No.");
+ EDocLog.SetAscending("Entry No.", true);
+ if EDocLog.FindSet() then
+ repeat
+ Assert.AreEqual(EDocLogList.Get(Count), EDocLog.Status, 'Wrong status');
+ Count := Count + 1;
+ until EDocLog.Next() = 0;
+ end;
+
+ [EventSubscriber(ObjectType::Codeunit, Codeunit::"E-Doc. Export", 'OnAfterCreateEDocument', '', false, false)]
+ local procedure OnAfterCreateEDocument(var EDocument: Record "E-Document")
+ begin
+ LibraryVariableStorage.Enqueue(EDocument);
+ end;
+}
\ No newline at end of file
diff --git a/Apps/APAC/EDocumentFormats/PINT A-NZ/test/src/PINTANZStructuredValidations.Codeunit.al b/Apps/APAC/EDocumentFormats/PINT A-NZ/test/src/PINTANZStructuredValidations.Codeunit.al
new file mode 100644
index 0000000000..143cee663e
--- /dev/null
+++ b/Apps/APAC/EDocumentFormats/PINT A-NZ/test/src/PINTANZStructuredValidations.Codeunit.al
@@ -0,0 +1,105 @@
+codeunit 148003 "PINTANZ Structured Validations"
+{
+ var
+ Assert: Codeunit Assert;
+ UnitOfMeasureCodeTok: Label 'PCS', Locked = true;
+ SalesInvoiceNoTok: Label '103033', Locked = true;
+ PurchaseorderNoTok: Label '2', Locked = true;
+ MockDate: Date;
+ MockCurrencyCode: Code[10];
+ MockDataMismatchErr: Label 'The %1 in %2 does not align with the mock data. Expected: %3, Actual: %4', Locked = true, Comment = '%1 = Field caption, %2 = Table caption, %3 = Expected value, %4 = Actual value';
+
+
+ internal procedure AssertFullEDocumentContentExtracted(EDocumentEntryNo: Integer)
+ var
+ EDocumentPurchaseHeader: Record "E-Document Purchase Header";
+ EDocumentPurchaseLine: Record "E-Document Purchase Line";
+ begin
+ EDocumentPurchaseHeader.Get(EDocumentEntryNo);
+ Assert.AreEqual(SalesInvoiceNoTok, EDocumentPurchaseHeader."Sales Invoice No.", StrSubstNo(MockDataMismatchErr, EDocumentPurchaseHeader.FieldCaption("Sales Invoice No."), EDocumentPurchaseHeader.TableCaption(), SalesInvoiceNoTok, EDocumentPurchaseHeader."Sales Invoice No."));
+ Assert.AreEqual(MockDate, EDocumentPurchaseHeader."Document Date", StrSubstNo(MockDataMismatchErr, EDocumentPurchaseHeader.FieldCaption("Document Date"), EDocumentPurchaseHeader.TableCaption(), MockDate, EDocumentPurchaseHeader."Document Date"));
+ Assert.AreEqual(CalcDate('<+1M>', MockDate), EDocumentPurchaseHeader."Due Date", StrSubstNo(MockDataMismatchErr, EDocumentPurchaseHeader.FieldCaption("Due Date"), EDocumentPurchaseHeader.TableCaption(), CalcDate('<+1M>', MockDate), EDocumentPurchaseHeader."Due Date"));
+ Assert.AreEqual(MockCurrencyCode, EDocumentPurchaseHeader."Currency Code", StrSubstNo(MockDataMismatchErr, EDocumentPurchaseHeader.FieldCaption("Currency Code"), EDocumentPurchaseHeader.TableCaption(), MockCurrencyCode, EDocumentPurchaseHeader."Currency Code"));
+ Assert.AreEqual(PurchaseorderNoTok, EDocumentPurchaseHeader."Purchase Order No.", StrSubstNo(MockDataMismatchErr, EDocumentPurchaseHeader.FieldCaption("Purchase Order No."), EDocumentPurchaseHeader.TableCaption(), PurchaseorderNoTok, EDocumentPurchaseHeader."Purchase Order No."));
+ Assert.AreEqual('CRONUS International', EDocumentPurchaseHeader."Vendor Company Name", StrSubstNo(MockDataMismatchErr, EDocumentPurchaseHeader.FieldCaption("Vendor Company Name"), EDocumentPurchaseHeader.TableCaption(), 'CRONUS International', EDocumentPurchaseHeader."Vendor Company Name"));
+ Assert.AreEqual('Main Street, 14', EDocumentPurchaseHeader."Vendor Address", StrSubstNo(MockDataMismatchErr, EDocumentPurchaseHeader.FieldCaption("Vendor Address"), EDocumentPurchaseHeader.TableCaption(), 'Main Street, 14', EDocumentPurchaseHeader."Vendor Address"));
+ Assert.AreEqual('GB123456789', EDocumentPurchaseHeader."Vendor VAT Id", StrSubstNo(MockDataMismatchErr, EDocumentPurchaseHeader.FieldCaption("Vendor VAT Id"), EDocumentPurchaseHeader.TableCaption(), 'GB123456789', EDocumentPurchaseHeader."Vendor VAT Id"));
+ Assert.AreEqual('Jim Olive', EDocumentPurchaseHeader."Vendor Contact Name", StrSubstNo(MockDataMismatchErr, EDocumentPurchaseHeader.FieldCaption("Vendor Contact Name"), EDocumentPurchaseHeader.TableCaption(), 'Jim Olive', EDocumentPurchaseHeader."Vendor Contact Name"));
+ Assert.AreEqual('The Cannon Group PLC', EDocumentPurchaseHeader."Customer Company Name", StrSubstNo(MockDataMismatchErr, EDocumentPurchaseHeader.FieldCaption("Customer Company Name"), EDocumentPurchaseHeader.TableCaption(), 'The Cannon Group PLC', EDocumentPurchaseHeader."Customer Company Name"));
+ Assert.AreEqual('GB789456278', EDocumentPurchaseHeader."Customer VAT Id", StrSubstNo(MockDataMismatchErr, EDocumentPurchaseHeader.FieldCaption("Customer VAT Id"), EDocumentPurchaseHeader.TableCaption(), 'GB789456278', EDocumentPurchaseHeader."Customer VAT Id"));
+ Assert.AreEqual('192 Market Square', EDocumentPurchaseHeader."Customer Address", StrSubstNo(MockDataMismatchErr, EDocumentPurchaseHeader.FieldCaption("Customer Address"), EDocumentPurchaseHeader.TableCaption(), '192 Market Square', EDocumentPurchaseHeader."Customer Address"));
+
+ EDocumentPurchaseLine.SetRange("E-Document Entry No.", EDocumentEntryNo);
+ EDocumentPurchaseLine.FindSet();
+ Assert.AreEqual(1, EDocumentPurchaseLine."Quantity", StrSubstNo(MockDataMismatchErr, EDocumentPurchaseLine.FieldCaption("Quantity"), EDocumentPurchaseLine.TableCaption(), 1, EDocumentPurchaseLine."Quantity"));
+ Assert.AreEqual(UnitOfMeasureCodeTok, EDocumentPurchaseLine."Unit of Measure", StrSubstNo(MockDataMismatchErr, EDocumentPurchaseLine.FieldCaption("Unit of Measure"), EDocumentPurchaseLine.TableCaption(), UnitOfMeasureCodeTok, EDocumentPurchaseLine."Unit of Measure"));
+ Assert.AreEqual(4000, EDocumentPurchaseLine."Sub Total", StrSubstNo(MockDataMismatchErr, EDocumentPurchaseLine.FieldCaption("Sub Total"), EDocumentPurchaseLine.TableCaption(), 4000, EDocumentPurchaseLine."Sub Total"));
+ Assert.AreEqual(MockCurrencyCode, EDocumentPurchaseLine."Currency Code", StrSubstNo(MockDataMismatchErr, EDocumentPurchaseLine.FieldCaption("Currency Code"), EDocumentPurchaseLine.TableCaption(), MockCurrencyCode, EDocumentPurchaseLine."Currency Code"));
+ Assert.AreEqual(0, EDocumentPurchaseLine."Total Discount", StrSubstNo(MockDataMismatchErr, EDocumentPurchaseLine.FieldCaption("Total Discount"), EDocumentPurchaseLine.TableCaption(), 0, EDocumentPurchaseLine."Total Discount"));
+ Assert.AreEqual('Bicycle', EDocumentPurchaseLine.Description, StrSubstNo(MockDataMismatchErr, EDocumentPurchaseLine.FieldCaption(Description), EDocumentPurchaseLine.TableCaption(), 'Bicycle', EDocumentPurchaseLine.Description));
+ Assert.AreEqual('1000', EDocumentPurchaseLine."Product Code", StrSubstNo(MockDataMismatchErr, EDocumentPurchaseLine.FieldCaption("Product Code"), EDocumentPurchaseLine.TableCaption(), '1000', EDocumentPurchaseLine."Product Code"));
+ Assert.AreEqual(4000, EDocumentPurchaseLine."Unit Price", StrSubstNo(MockDataMismatchErr, EDocumentPurchaseLine.FieldCaption("Unit Price"), EDocumentPurchaseLine.TableCaption(), 4000, EDocumentPurchaseLine."Unit Price"));
+
+ EDocumentPurchaseLine.Next();
+ Assert.AreEqual(2, EDocumentPurchaseLine."Quantity", StrSubstNo(MockDataMismatchErr, EDocumentPurchaseLine.FieldCaption("Quantity"), EDocumentPurchaseLine.TableCaption(), 2, EDocumentPurchaseLine."Quantity"));
+ Assert.AreEqual(UnitOfMeasureCodeTok, EDocumentPurchaseLine."Unit of Measure", StrSubstNo(MockDataMismatchErr, EDocumentPurchaseLine.FieldCaption("Unit of Measure"), EDocumentPurchaseLine.TableCaption(), UnitOfMeasureCodeTok, EDocumentPurchaseLine."Unit of Measure"));
+ Assert.AreEqual(10000, EDocumentPurchaseLine."Sub Total", StrSubstNo(MockDataMismatchErr, EDocumentPurchaseLine.FieldCaption("Sub Total"), EDocumentPurchaseLine.TableCaption(), 10000, EDocumentPurchaseLine."Sub Total"));
+ Assert.AreEqual(MockCurrencyCode, EDocumentPurchaseLine."Currency Code", StrSubstNo(MockDataMismatchErr, EDocumentPurchaseLine.FieldCaption("Currency Code"), EDocumentPurchaseLine.TableCaption(), MockCurrencyCode, EDocumentPurchaseLine."Currency Code"));
+ Assert.AreEqual(0, EDocumentPurchaseLine."Total Discount", StrSubstNo(MockDataMismatchErr, EDocumentPurchaseLine.FieldCaption("Total Discount"), EDocumentPurchaseLine.TableCaption(), 0, EDocumentPurchaseLine."Total Discount"));
+ Assert.AreEqual('Bicycle v2', EDocumentPurchaseLine.Description, StrSubstNo(MockDataMismatchErr, EDocumentPurchaseLine.FieldCaption(Description), EDocumentPurchaseLine.TableCaption(), 'Bicycle v2', EDocumentPurchaseLine.Description));
+ Assert.AreEqual('2000', EDocumentPurchaseLine."Product Code", StrSubstNo(MockDataMismatchErr, EDocumentPurchaseLine.FieldCaption("Product Code"), EDocumentPurchaseLine.TableCaption(), '2000', EDocumentPurchaseLine."Product Code"));
+ Assert.AreEqual(5000, EDocumentPurchaseLine."Unit Price", StrSubstNo(MockDataMismatchErr, EDocumentPurchaseLine.FieldCaption("Unit Price"), EDocumentPurchaseLine.TableCaption(), 5000, EDocumentPurchaseLine."Unit Price"));
+ end;
+
+ internal procedure AssertPurchaseDocument(VendorNo: Code[20]; PurchaseHeader: Record "Purchase Header"; Item: Record Item)
+ var
+ PurchaseLine: Record "Purchase Line";
+ Item1NoTok: Label 'GL00000001', Locked = true;
+ Item2NoTok: Label 'GL00000003', Locked = true;
+ begin
+ Assert.AreEqual(SalesInvoiceNoTok, PurchaseHeader."Vendor Invoice No.", StrSubstNo(MockDataMismatchErr, PurchaseHeader.FieldCaption("Vendor Invoice No."), PurchaseHeader.TableCaption(), SalesInvoiceNoTok, PurchaseHeader."Vendor Invoice No."));
+ Assert.AreEqual(MockDate, PurchaseHeader."Document Date", StrSubstNo(MockDataMismatchErr, PurchaseHeader.FieldCaption("Document Date"), PurchaseHeader.TableCaption(), MockDate, PurchaseHeader."Document Date"));
+ Assert.AreEqual(CalcDate('<+1M>', MockDate), PurchaseHeader."Due Date", StrSubstNo(MockDataMismatchErr, PurchaseHeader.FieldCaption("Due Date"), PurchaseHeader.TableCaption(), CalcDate('<+1M>', MockDate), PurchaseHeader."Due Date"));
+ Assert.AreEqual(MockCurrencyCode, PurchaseHeader."Currency Code", StrSubstNo(MockDataMismatchErr, PurchaseHeader.FieldCaption("Currency Code"), PurchaseHeader.TableCaption(), MockCurrencyCode, PurchaseHeader."Currency Code"));
+ Assert.AreEqual(PurchaseorderNoTok, PurchaseHeader."Vendor Order No.", StrSubstNo(MockDataMismatchErr, PurchaseHeader.FieldCaption("Vendor Order No."), PurchaseHeader.TableCaption(), PurchaseorderNoTok, PurchaseHeader."Vendor Order No."));
+ Assert.AreEqual(VendorNo, PurchaseHeader."Buy-from Vendor No.", StrSubstNo(MockDataMismatchErr, PurchaseHeader.FieldCaption("Buy-from Vendor No."), PurchaseHeader.TableCaption(), VendorNo, PurchaseHeader."Buy-from Vendor No."));
+
+ PurchaseLine.SetRange("Document Type", PurchaseHeader."Document Type");
+ PurchaseLine.SetRange("Document No.", PurchaseHeader."No.");
+ PurchaseLine.FindSet();
+ Assert.AreEqual(1, PurchaseLine.Quantity, StrSubstNo(MockDataMismatchErr, PurchaseLine.FieldCaption(Quantity), PurchaseLine.TableCaption(), 1, PurchaseLine.Quantity));
+ Assert.AreEqual(4000, PurchaseLine."Direct Unit Cost", StrSubstNo(MockDataMismatchErr, PurchaseLine.FieldCaption("Direct Unit Cost"), PurchaseLine.TableCaption(), 4000, PurchaseLine."Direct Unit Cost"));
+ Assert.AreEqual(MockCurrencyCode, PurchaseLine."Currency Code", StrSubstNo(MockDataMismatchErr, PurchaseLine.FieldCaption("Currency Code"), PurchaseLine.TableCaption(), MockCurrencyCode, PurchaseLine."Currency Code"));
+ Assert.AreEqual(0, PurchaseLine."Line Discount Amount", StrSubstNo(MockDataMismatchErr, PurchaseLine.FieldCaption("Line Discount Amount"), PurchaseLine.TableCaption(), 0, PurchaseLine."Line Discount Amount"));
+ // In the import file we have a name 'Bicycle' but because of Item Cross Reference validation Item description is being used
+ if Item."No." <> '' then begin
+ Assert.AreEqual('Bicycle', PurchaseLine.Description, StrSubstNo(MockDataMismatchErr, PurchaseLine.FieldCaption(Description), PurchaseLine.TableCaption(), Item."No.", PurchaseLine.Description));
+ Assert.AreEqual(Item."No.", PurchaseLine."No.", StrSubstNo(MockDataMismatchErr, PurchaseLine.FieldCaption("No."), PurchaseLine.TableCaption(), Item."No.", PurchaseLine."No."));
+ Assert.AreEqual(Item."Purch. Unit of Measure", PurchaseLine."Unit of Measure Code", StrSubstNo(MockDataMismatchErr, PurchaseLine.FieldCaption("Unit of Measure Code"), PurchaseLine.TableCaption(), UnitOfMeasureCodeTok, PurchaseLine."Unit of Measure Code"));
+ end else begin
+ Assert.AreEqual(Item1NoTok, PurchaseLine.Description, StrSubstNo(MockDataMismatchErr, PurchaseLine.FieldCaption(Description), PurchaseLine.TableCaption(), Item1NoTok, PurchaseLine.Description));
+ Assert.AreEqual(Item1NoTok, PurchaseLine."No.", StrSubstNo(MockDataMismatchErr, PurchaseLine.FieldCaption("No."), PurchaseLine.TableCaption(), Item1NoTok, PurchaseLine."No."));
+ Assert.AreEqual(UnitOfMeasureCodeTok, PurchaseLine."Unit of Measure Code", StrSubstNo(MockDataMismatchErr, PurchaseLine.FieldCaption("Unit of Measure Code"), PurchaseLine.TableCaption(), UnitOfMeasureCodeTok, PurchaseLine."Unit of Measure Code"));
+ end;
+
+ PurchaseLine.Next();
+ Assert.AreEqual(2, PurchaseLine.Quantity, StrSubstNo(MockDataMismatchErr, PurchaseLine.FieldCaption(Quantity), PurchaseLine.TableCaption(), 2, PurchaseLine.Quantity));
+ Assert.AreEqual(UnitOfMeasureCodeTok, PurchaseLine."Unit of Measure Code", StrSubstNo(MockDataMismatchErr, PurchaseLine.FieldCaption("Unit of Measure Code"), PurchaseLine.TableCaption(), UnitOfMeasureCodeTok, PurchaseLine."Unit of Measure Code"));
+ Assert.AreEqual(5000, PurchaseLine."Direct Unit Cost", StrSubstNo(MockDataMismatchErr, PurchaseLine.FieldCaption("Direct Unit Cost"), PurchaseLine.TableCaption(), 5000, PurchaseLine."Direct Unit Cost"));
+ Assert.AreEqual(MockCurrencyCode, PurchaseLine."Currency Code", StrSubstNo(MockDataMismatchErr, PurchaseLine.FieldCaption("Currency Code"), PurchaseLine.TableCaption(), MockCurrencyCode, PurchaseLine."Currency Code"));
+ Assert.AreEqual(0, PurchaseLine."Line Discount Amount", StrSubstNo(MockDataMismatchErr, PurchaseLine.FieldCaption("Line Discount Amount"), PurchaseLine.TableCaption(), 0, PurchaseLine."Line Discount Amount"));
+ // In the import file we have a name 'Bicycle v2' but because of Item Cross Reference validation Item description is being used
+ Assert.AreEqual(Item2NoTok, PurchaseLine.Description, StrSubstNo(MockDataMismatchErr, PurchaseLine.FieldCaption(Description), PurchaseLine.TableCaption(), Item2NoTok, PurchaseLine.Description));
+ Assert.AreEqual(Item2NoTok, PurchaseLine."No.", StrSubstNo(MockDataMismatchErr, PurchaseLine.FieldCaption("No."), PurchaseLine.TableCaption(), Item2NoTok, PurchaseLine."No."));
+ end;
+
+ procedure SetMockDate(MockDate: Date)
+ begin
+ this.MockDate := MockDate;
+ end;
+
+ procedure SetMockCurrencyCode(MockCurrencyCode: Code[10])
+ begin
+ this.MockCurrencyCode := MockCurrencyCode;
+ end;
+}
\ No newline at end of file
diff --git a/Apps/W1/EDocument/app/app.json b/Apps/W1/EDocument/app/app.json
index 69bae72d52..7e0e9bdf14 100644
--- a/Apps/W1/EDocument/app/app.json
+++ b/Apps/W1/EDocument/app/app.json
@@ -37,6 +37,16 @@
"id": "967eceac-106e-4102-b76a-fe5dc3d799e5",
"name": "Payables Agent Tests",
"publisher": "Microsoft"
+ },
+ {
+ "id": "8238f99b-cbe5-4b9c-1234-7771145b7470",
+ "name": "E-Document Format for PINT A-NZ",
+ "publisher": "Microsoft"
+ },
+ {
+ "id": "8238f78b-cbe5-4339-b247-7771145b7470",
+ "name": "E-Document Format for PINT A-NZ Tests",
+ "publisher": "Microsoft"
}
],
"screenshots": [],