facturaereader
v1.1.1
Published
A npm package to read Facturae XML files and extract relevant information to a JSON object.
Maintainers
Readme
FacturaeReader
A JavaScript library for parsing Spanish electronic invoices in Facturae format (versions 3.1, 3.2.1, and 3.2.2).
Installation
npm install facturaereaderExample
You can check a live example of using this package in https://facturae-reader-example.vercel.app/
Features
- Supports Facturae versions 3.1, 3.2.1, and 3.2.2
- Automatic version detection
- Type definitions included
- Browser compatible
- Zero dependencies
Usage
Basic Example
import { readFacturae } from 'factureareader';
const input = document.getElementById('facturaeInput');
input.addEventListener('change', async (event) => {
try {
const file = event.target.files[0];
const facturaData = await readFacturae(file);
console.log(facturaData);
} catch (error) {
console.error('Error reading invoice:', error.message);
}
});Return Type Structure
The readFacturae function returns a Promise that resolves to an object with the following structure:
interface FacturaeResult {
invoice: {
number: string;
date: string;
total: string;
taxPrice: string;
taxRate: string;
priceWithoutTax: string;
};
seller: {
name: string;
address: string;
town: string;
province: string;
postal_code: string;
};
buyer: {
name: string;
address: string;
town: string;
province: string;
postal_code: string;
};
products: Array<{
product: string;
quantity: string;
price: string;
}>;
version: string; // "3.1" | "3.2.1" | "3.2.2"
}Error Handling
The library throws errors in the following cases:
// Invalid or missing file
if (!file) {
throw new Error('Invalid input: File is required');
}
// Invalid XML format
if (xmlDoc.getElementsByTagName("parsererror").length > 0) {
throw new Error('Invalid XML format');
}Complete Example
<!DOCTYPE html>
<html>
<head>
<title>Facturae Reader Example</title>
</head>
<body>
<input type="file" id="facturaeInput" accept=".xml" />
<pre id="output"></pre>
<script type="module">
import { readFacturae } from 'factureareader';
const input = document.getElementById('facturaeInput');
const output = document.getElementById('output');
input.addEventListener('change', async (event) => {
try {
const file = event.target.files[0];
const facturaData = await readFacturae(file);
output.textContent = JSON.stringify(facturaData, null, 2);
} catch (error) {
output.textContent = `Error: ${error.message}`;
}
});
</script>
</body>
</html>Development
- Clone the repository
- Run
npm install - Link the package locally:
npm link- In your project:
npm link factureareaderSupported Formats
The library automatically detects and supports the following Facturae versions:
- Facturae 3.1
- Facturae 3.2.1 (namespace: http://www.facturae.es/Facturae/2009/v3.2.1/Facturae)
- Facturae 3.2.2 (namespace: http://www.facturae.gob.es/formato/Versiones/Facturaev3_2_2.xml)
License
MIT
