Documentation
¶
Overview ¶
Package facturx manipule des factures Factur-X — le format hybride franco-allemand de facturation électronique (PDF/A-3 avec XML CII embarqué comme fichier associé, conforme EN 16931).
Cette bibliothèque comble l'absence de lib Go mature pour Factur-X (les implémentations de référence sont en Python, Node, PHP et .NET).
Statut : WIP. Ne pas utiliser en production tant qu'une release n'est pas taggée sur https://github.com/surfeur5/facturx-go.
Index ¶
Constants ¶
This section is empty.
Variables ¶
var ErrNotImplemented = errors.New("facturx: not implemented yet — see roadmap")
ErrNotImplemented indique qu'une fonction n'est pas encore implémentée dans la version actuelle. Suivre la roadmap dans README.md.
Functions ¶
func Attach ¶
func Attach(pdfBytes, xmlBytes []byte, opts AttachOptions) ([]byte, error)
Attach embarque un XML CII dans un PDF existant en tant que fichier associé Factur-X. Le PDF de sortie contient les markers /AF (catalog) et /AFRelationship (filespec) requis par la spec PDF/A-3 § 6.8.
pdfBytes : bytes du PDF de base (généré par gofpdf, unipdf, chromedp…). xmlBytes : XML CII conforme EN 16931 (généré par l'appelant).
Si le PDF de base contient déjà un attachment du même nom, il est remplacé. Le PDF résultant n'est pas garanti PDF/A-3 stricte (XMP metadata, OutputIntent, fonts embarquées) — c'est la roadmap v0.3.0.
Types ¶
type AttachOptions ¶
type AttachOptions struct {
// Filename du fichier embarqué. Défaut : "factur-x.xml".
Filename string
// Description humaine de l'attachment. Défaut : "Factur-X invoice".
Description string
// Relationship = /AFRelationship du filespec. Défaut : Alternative
// (recommandation Factur-X : le XML et le PDF sont équivalents).
Relationship Relationship
// ConformanceLevel du XML CII. Utilisé pour les métadonnées XMP quand
// PDF/A-3 sera pleinement supporté (roadmap). Défaut : LevelEN16931.
ConformanceLevel ConformanceLevel
// MimeType du fichier. Défaut : "application/xml" (Factur-X exige text/xml
// ou application/xml selon les versions).
MimeType string
}
AttachOptions paramètre l'opération Attach.
type ConformanceLevel ¶
type ConformanceLevel string
ConformanceLevel indique le profil Factur-X du XML CII embarqué. Voir FNFE-MPE Factur-X spec §2.2.
const ( // LevelMinimum — profil minimal (comptable simplifié, non EN 16931). LevelMinimum ConformanceLevel = "MINIMUM" // LevelBasicWL — Basic sans lignes (WL = Without Lines). LevelBasicWL ConformanceLevel = "BASIC WL" // LevelBasic — Basic avec lignes (subset EN 16931). LevelBasic ConformanceLevel = "BASIC" // LevelEN16931 — conforme EN 16931 (norme européenne). Niveau visé par // défaut pour la facturation électronique française B2B. LevelEN16931 ConformanceLevel = "EN 16931" // LevelExtended — EN 16931 + extensions françaises. LevelExtended ConformanceLevel = "EXTENDED" )
type Relationship ¶
type Relationship string
Relationship est le type de relation entre le PDF et le fichier associé (attribut /AFRelationship du filespec dans le catalog PDF). Voir ISO 14289-1 (PDF/A-3) et FNFE-MPE Factur-X spec.
const ( // RelationshipAlternative — le fichier associé est une représentation // alternative du contenu (cas normal pour Factur-X : le XML CII et le PDF // représentent la même facture). RelationshipAlternative Relationship = "Alternative" // RelationshipData — le fichier contient des données référencées par le PDF. RelationshipData Relationship = "Data" // RelationshipSource — le fichier est la source à partir de laquelle le PDF // a été généré. RelationshipSource Relationship = "Source" // RelationshipSupplement — le fichier complète le contenu du PDF. RelationshipSupplement Relationship = "Supplement" // RelationshipUnspecified — relation non spécifiée. RelationshipUnspecified Relationship = "Unspecified" )
type ValidationFailure ¶
type ValidationFailure struct {
Validator string // nom du validator (XSD, EN16931, BR-FR)
Location string // XPath ou emplacement dans le document
Message string
Raw string
}
ValidationFailure est un échec de validation (règle non respectée).
type ValidationMessage ¶
type ValidationMessage = ValidationFailure
ValidationMessage est un message informatif (warning, info).
type ValidationReport ¶
type ValidationReport struct {
IsValid bool
Format string // ex: "urn:un:unece:uncefact:data:standard:CrossIndustryInvoice:100"
Failures []ValidationFailure
Messages []ValidationMessage
}
ValidationReport est le résultat d'une validation Factur-X.
func Validate ¶
func Validate(pdfBytes []byte) (*ValidationReport, error)
Validate vérifie qu'un Factur-X est conforme :
- XSD Cross-Industry Invoice
- Schematron EN 16931
- Règles françaises BR-FR (PPF/Flux2)
Statut : WIP.