=== OuiFacture – Facture électronique Factur-X for WooCommerce ===
Contributors: factureconforme
Tags: facture, factur-x, woocommerce, invoice, e-invoicing
Requires at least: 6.0
Tested up to: 7.0
Requires PHP: 7.4
Stable tag: 1.0.2
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Automatic Factur-X (EN 16931) electronic invoices for every WooCommerce order — ready for the French e-invoicing mandate.

== Description ==

**OuiFacture** turns your WooCommerce store into a compliant French electronic invoicing machine. Every order automatically gets a legally compliant PDF invoice with an embedded **Factur-X** XML file (PDF/A-3, profile **EN 16931**) — the format required by the French e-invoicing reform (réforme de la facturation électronique, échéances 2026–2027).

**Automatic. On every order.**

= Features =

* **Automatic generation** of a Factur-X invoice when the order reaches the status you choose (processing — the default — or completed) — no clicks needed. An order that jumps straight to completed is invoiced then; each order is invoiced exactly once.
* **PDF/A-3 with embedded EN 16931 CII XML**, validated against the official Factur-X XSD schemas at generation time.
* **French legal invoice layout**: seller block (raison sociale, forme juridique, capital, RCS, SIRET, TVA), buyer block, line items HT, VAT breakdown by rate, totals HT/TVA/TTC, payment terms, and the mandatory legal mentions (pénalités de retard, indemnité forfaitaire de 40 €, escompte).
* **Gap-free sequential numbering** (prefix + year + counter, optional yearly reset) — race-safe, numbers are immutable once issued, regeneration never changes the number.
* **B2B checkout fields**: optional SIRET and intra-community VAT number on the classic checkout, validated (Luhn / FR VAT key) and shown in the admin order screen and in the XML.
* **Customer access**: download link in My Account → Orders, on the order-received page, and optional PDF attachment to the "order completed" email.
* **Admin control**: metabox on every order with Generate / Regenerate / Download.
* **Secure storage**: invoices live in a protected uploads folder with unguessable file names and are only served through authenticated endpoints.
* **HPOS compatible** (High-Performance Order Storage).
* **No external calls, no tracking**: everything is generated locally on your server.

= Compliance notes =

* Invoices embed the CII XML at the **EN 16931** profile of Factur-X 1.x, validated against the official XSDs before the PDF is written.
* Invoice numbers are sequential and gap-free; a number is only consumed once the invoice files have been written successfully.
* On uninstall, the plugin removes its settings but **keeps generated invoices**: French law requires you to retain them for 10 years.

= Limitations of this version =

* The SIRET/VAT checkout fields are only added to the **classic (shortcode) checkout**. Stores using the block-based checkout still get automatic invoices, but the two B2B fields are not shown there yet — block checkout support is planned.
* Refunds do not produce credit notes (avoirs); the original invoice is kept unchanged, as required (an issued invoice is immutable).
* One VAT category per order line (standard/zero). Margin schemes, VAT exemption reasons and non-EUR specifics beyond currency code pass-through are not handled.
* PDF/A-3 conversion covers embedded file relationships, XMP metadata and output intents as produced by the bundled Factur-X writer; full ISO 19005-3 conformance of exotic source PDFs is not re-verified at runtime.

== Installation ==

1. Upload the plugin to `/wp-content/plugins/` or install it through the WordPress plugin screen.
2. Activate it (WooCommerce must be active).
3. Go to **WooCommerce → OuiFacture** and fill in your seller identity (raison sociale, SIRET, n° TVA, adresse…). These appear on every invoice.
4. Choose the trigger status (default: processing). Done — invoices now generate automatically.

== Frequently Asked Questions ==

= Is this the format required by the French reform? =

The plugin produces Factur-X PDF/A-3 invoices with an embedded EN 16931 CII XML — the mixed format retained by the French reform. Transmission through a Plateforme de Dématérialisation Partenaire (PDP) is not included in this version.

= Where are my invoices stored? =

In `wp-content/uploads/ouifacture/`, protected by an `.htaccess` deny rule and random file names. Downloads always go through authenticated endpoints. Note: the `.htaccess` rule only applies to Apache/LiteSpeed servers — on nginx, add a `location` deny rule for that folder to your server configuration (file names remain unguessable either way).

= Can I regenerate an invoice? =

Yes, from the order screen. The invoice number and date never change on regeneration (a French invoice number is immutable); only the document content is rebuilt.

== Screenshots ==

1. Settings: seller identity, legal mentions, numbering and generation trigger.
2. Order screen: OuiFacture metabox with the generated invoice and download button.
3. A generated Factur-X invoice (French legal layout, PDF/A-3 with embedded EN 16931 XML).
4. My Account → Orders: customer invoice download link.
5. Classic checkout: optional SIRET and intra-community VAT (B2B) fields.

== Changelog ==

= 1.0.2 =
* Translations are now served through translate.wordpress.org: the bundled .po/.mo files are no longer packaged and the obsolete `load_plugin_textdomain()` call has been removed (not needed since WordPress 4.6).
* Housekeeping following the plugin review; no change to invoice generation, numbering or output.

= 1.0.1 =
* Plugin display name now ends in "for WooCommerce" (WordPress.org trademark guidelines).
* The default generation trigger is now **processing** (was completed): invoices are issued as soon as payment is received. Orders that skip straight to completed are still invoiced there, exactly once per order.
* French translation updated.

= 1.0.0 =
* Initial release: automatic Factur-X (EN 16931) generation, gap-free numbering, B2B checkout fields, customer downloads, email attachment, HPOS support, French translation.

== Upgrade Notice ==

= 1.0.2 =
Translations now come from translate.wordpress.org. No functional change.

= 1.0.1 =
New default: invoices generate at "processing". Existing saved settings are not changed.

= 1.0.0 =
Initial release.
