Skip to content

Xxamer/facturae-reader

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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 facturaereader

Example

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

  1. Clone the repository
  2. Run npm install
  3. Link the package locally:
npm link
  1. In your project:
npm link factureareader

Supported Formats

The library automatically detects and supports the following Facturae versions:

License

MIT

About

A npm package to convert Facturae, the standar format for electronic invoices in Spain, to JSON

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors