Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
18 commits
Select commit Hold shift + click to select a range
c741a99
Adds Factura-E format support for e-document processing
AndriusAndrulevicius Jul 30, 2025
39ac06a
Fix E-Document Purchase Header modification to prevent unintended cha…
AndriusAndrulevicius Jul 30, 2025
2abb838
Improves Factura-E handler with documentation and code optimization
AndriusAndrulevicius Jul 30, 2025
e02cb79
Add PINT A-NZ E-Document Read Draft Handler and Enum Extension
AndriusAndrulevicius Jul 24, 2025
e9b40b1
Update EDocumentFacturaEHandler.Codeunit.al
AndriusAndrulevicius Jul 31, 2025
351e442
Merge branch 'dev/aan/FacturaE-v2' of https://github.com/GMatuleviciu…
AndriusAndrulevicius Aug 4, 2025
f8f6058
Delete Apps/APAC/EDocumentFormats/PINT A-NZ/app/src/Core/PINTANZReadD…
GMatuleviciute Aug 6, 2025
fd96311
Delete Apps/APAC/EDocumentFormats/PINT A-NZ/app/src/Core/PINTANZEDocR…
GMatuleviciute Aug 6, 2025
e34a0df
merge main into dev/aan/FacturaE-v2
AndriusAndrulevicius Aug 6, 2025
a20245b
Removes PINT A-NZ format dependency from app manifest
AndriusAndrulevicius Aug 6, 2025
cd21437
Update Apps/ES/EDocumentFormats/FacturaE/app/src/Core/EDocumentFactur…
AndriusAndrulevicius Aug 6, 2025
7953ae7
Update Apps/ES/EDocumentFormats/FacturaE/app/src/Core/EDocumentFactur…
AndriusAndrulevicius Aug 6, 2025
985cc17
Reorganizes imports and locks namespace labels
AndriusAndrulevicius Aug 6, 2025
1085d7e
Renames label constants to use 'Tok' suffix convention
AndriusAndrulevicius Aug 6, 2025
84d6539
Add Factura-E test suite and draft reset support
AndriusAndrulevicius Aug 26, 2025
53cb6c9
missing codeunit added
AndriusAndrulevicius Aug 27, 2025
37de8db
Optimize FacturaE tests; drop OnPrem target
AndriusAndrulevicius Aug 27, 2025
f916797
Normalizes EOF whitespace in tests
AndriusAndrulevicius Aug 27, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
namespace Microsoft.eServices.EDocument.Format.FacturaE;

using Microsoft.eServices.EDocument.Processing.Import;
using Microsoft.eServices.EDocument.Processing.Interfaces;

enumextension 10773 "Factura-E EDoc Read into Draft" extends "E-Doc. Read into Draft"
{
value(10773; "Factura-E")
{
Caption = 'Factura-E';
Implementation = IStructuredFormatReader = "E-Document Factura-E Handler";
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,146 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<namespace:Facturae xmlns:namespace2="http://uri.etsi.org/01903/v1.2.2#" xmlns:namespace3="http://www.w3.org/2000/09/xmldsig#" xmlns:namespace="http://www.facturae.gob.es/formato/Versiones/Facturaev3_2_2.xml">
<FileHeader>
<SchemaVersion>3.2.2</SchemaVersion>
<Modality>I</Modality>
<InvoiceIssuerType>EM</InvoiceIssuerType>
<Batch>
<BatchIdentifier>103033</BatchIdentifier>
<InvoicesCount>1</InvoicesCount>
<TotalInvoicesAmount>
<TotalAmount>14140</TotalAmount>
</TotalInvoicesAmount>
<TotalOutstandingAmount>
<TotalAmount>14140</TotalAmount>
</TotalOutstandingAmount>
<TotalExecutableAmount>
<TotalAmount>14140</TotalAmount>
</TotalExecutableAmount>
<InvoiceCurrencyCode>XYZ</InvoiceCurrencyCode>
</Batch>
</FileHeader>
<Parties>
<SellerParty>
<TaxIdentification>
<PersonTypeCode>J</PersonTypeCode>
<ResidenceTypeCode>R</ResidenceTypeCode>
<TaxIdentificationNumber>GB123456789</TaxIdentificationNumber>
</TaxIdentification>
<LegalEntity>
<CorporateName>CRONUS International</CorporateName>
<AddressInSpain>
<Address>Main Street, 14</Address>
<PostCode>B27 4KT</PostCode>
<Town>Birmingham</Town>
<Province>Birmingham</Province>
<CountryCode>ESP</CountryCode>
</AddressInSpain>
<ContactDetails>
<Telephone></Telephone>
<ElectronicMail>JO@contoso.com</ElectronicMail>
</ContactDetails>
</LegalEntity>
</SellerParty>
<BuyerParty>
<TaxIdentification>
<PersonTypeCode>J</PersonTypeCode>
<ResidenceTypeCode>R</ResidenceTypeCode>
<TaxIdentificationNumber>GB789456278</TaxIdentificationNumber>
</TaxIdentification>
<LegalEntity>
<CorporateName>The Cannon Group PLC</CorporateName>
<AddressInSpain>
<Address>192 Market Square</Address>
<PostCode>B27 4KT</PostCode>
<Town>Birmingham</Town>
<Province>Birmingham</Province>
<CountryCode>ESP</CountryCode>
</AddressInSpain>
<ContactDetails>
<Telephone></Telephone>
<ElectronicMail>mr.andy.teal@cannongroup.com</ElectronicMail>
</ContactDetails>
</LegalEntity>
</BuyerParty>
</Parties>
<Invoices>
<Invoice>
<InvoiceHeader>
<InvoiceNumber>103033</InvoiceNumber>
<InvoiceDocumentType>FC</InvoiceDocumentType>
<InvoiceClass>OO</InvoiceClass>
</InvoiceHeader>
<InvoiceIssueData>
<IssueDate>2026-01-22</IssueDate>
<InvoiceCurrencyCode>XYZ</InvoiceCurrencyCode>
<TaxCurrencyCode>XYZ</TaxCurrencyCode>
<LanguageName>es</LanguageName>
</InvoiceIssueData>
<TaxesOutputs>
<Tax>
<TaxTypeCode>01</TaxTypeCode>
<TaxRate>25</TaxRate>
<TaxableBase>
<TotalAmount>14000</TotalAmount>
</TaxableBase>
<TaxAmount>
<TotalAmount>1000</TotalAmount>
</TaxAmount>
</Tax>
</TaxesOutputs>
<InvoiceTotals>
<TotalGrossAmount>14000</TotalGrossAmount>
<TotalGrossAmountBeforeTaxes>14000</TotalGrossAmountBeforeTaxes>
<TotalTaxOutputs>1000</TotalTaxOutputs>
<TotalTaxesWithheld>0</TotalTaxesWithheld>
<InvoiceTotal>14140</InvoiceTotal>
<TotalOutstandingAmount>14140</TotalOutstandingAmount>
<TotalExecutableAmount>14140</TotalExecutableAmount>
</InvoiceTotals>
<Items>
<InvoiceLine>
<ItemDescription>Bicycle</ItemDescription>
<Quantity>1</Quantity>
<UnitOfMeasure>01</UnitOfMeasure>
<UnitPriceWithoutTax>4000.00</UnitPriceWithoutTax>
<TotalCost>4000</TotalCost>
<GrossAmount>4000</GrossAmount>
<TaxesOutputs>
<Tax>
<TaxTypeCode>01</TaxTypeCode>
<TaxRate>25</TaxRate>
<TaxableBase>
<TotalAmount>4000</TotalAmount>
</TaxableBase>
<TaxAmount>
<TotalAmount>1000</TotalAmount>
</TaxAmount>
</Tax>
</TaxesOutputs>
<ArticleCode>1000</ArticleCode>
</InvoiceLine>
<InvoiceLine>
<ItemDescription>Bicycle v2</ItemDescription>
<Quantity>2</Quantity>
<UnitOfMeasure>01</UnitOfMeasure>
<UnitPriceWithoutTax>5000.00</UnitPriceWithoutTax>
<TotalCost>10000</TotalCost>
<GrossAmount>10000</GrossAmount>
<TaxesOutputs>
<Tax>
<TaxTypeCode>01</TaxTypeCode>
<TaxRate>25</TaxRate>
<TaxableBase>
<TotalAmount>10000</TotalAmount>
</TaxableBase>
<TaxAmount>
<TotalAmount>0</TotalAmount>
</TaxAmount>
</Tax>
</TaxesOutputs>
<ArticleCode>2000</ArticleCode>
</InvoiceLine>
</Items>
</Invoice>
</Invoices>
</namespace:Facturae>
7 changes: 5 additions & 2 deletions Apps/ES/EDocumentFormats/FacturaE/test/app.json
Original file line number Diff line number Diff line change
Expand Up @@ -51,13 +51,16 @@
"idRanges": [
{
"from": 148001,
"to": 148002
"to": 148005
}
],
"resourceExposurePolicy": {
"allowDebugging": true,
"allowDownloadingSource": true,
"includeSourceInSymbolFile": true
},
"application": "27.0.0.0"
"application": "27.0.0.0",
"resourceFolders": [
".resources"
]
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
codeunit 148004 "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;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
enumextension 148001 "E-Doc. Format Mock" extends "E-Document Format"
{
value(6160; "Mock")
{
Implementation = "E-Document" = "E-Doc. Format Mock";
}
}
Loading
Loading