Module: Einvoicing::Validators::Peppol
- Defined in:
- lib/einvoicing/validators/peppol.rb
Overview
Validates UBL 2.1 invoices against Peppol BIS Billing 3.0 Schematron rules using Saxon-HE via the system Java runtime.
Requirements:
- Java in PATH
- Saxon-HE 12 CLI jar (auto-downloaded to /tmp/saxon-he.jar on first use)
- Peppol XSLT (bundled at lib/einvoicing/data/; auto-downloaded on first use)
Constant Summary collapse
- XSLT_URL =
"https://github.com/OpenPEPPOL/peppol-bis-invoice-3/releases/download/3.0.21/PEPPOL-EN16931-UBL.xslt"- SAXON_URL =
"https://repo1.maven.org/maven2/net/sf/saxon/Saxon-HE/10.9/Saxon-HE-10.9.jar"- SAXON_JAR =
"/tmp/saxon-he.jar"- XSLT_PATH =
File.("../data/PEPPOL-EN16931-UBL.xslt", __dir__)
Class Method Summary collapse
- .java_available? ⇒ Boolean
-
.validate_ubl(xml_string) ⇒ Array<Hash>
Validate a UBL 2.1 XML string against Peppol BIS 3.0 rules.
Class Method Details
.java_available? ⇒ Boolean
42 43 44 45 |
# File 'lib/einvoicing/validators/peppol.rb', line 42 def self.java_available? _, _, status = Open3.capture3("java -version") status.success? end |
.validate_ubl(xml_string) ⇒ Array<Hash>
Validate a UBL 2.1 XML string against Peppol BIS 3.0 rules.
33 34 35 36 37 38 39 40 |
# File 'lib/einvoicing/validators/peppol.rb', line 33 def self.validate_ubl(xml_string) ensure_java! ensure_saxon! ensure_xslt! svrl = run_saxon(xml_string) parse_svrl(svrl) end |