ข้ามไปยังเนื้อหา

ความสอดคล้องของ ZUGFeRD / Factur-X: โปรไฟล์ใบแจ้งหนี้ EN 16931 แบบฝัง

คำชี้แจงขอบเขต NextPDF สร้างโปรไฟล์ XML แบบฝัง ส่วนความถูกต้อง ทางภาษีและทางกฎหมายให้หน่วยงานผู้รับเอกสารเป็นผู้ตัดสิน ไม่ใช่ ไลบรารี

ZUGFeRD / Factur-X คือใบแจ้งหนี้แบบไฮบริด: ไฟล์ PDF ที่มนุษย์อ่านได้ (ใช้เป็นฐานสำหรับการเก็บถาวรแบบ PDF/A-3) พร้อม XML แบบ Cross-Industry-Invoice (CII) ที่เครื่องอ่านได้และฝังอยู่ภายใน โดยสอดคล้องกับแบบจำลองข้อมูลเชิงความหมายของ EN 16931 NextPDF Core มาพร้อมสัญญาตัวฝัง (NextPDF\Contracts\EInvoice) ส่วนเอนจิน Factur-X 1.08 ที่นำไปใช้จริงมาพร้อมในแพ็กเกจ Premium nextpdf/pro ไลบรารีสร้าง XML แบบฝังและโครงสร้างไฟล์แนบ PDF/A-3 ส่วนตัวตรวจสอบความถูกต้องแบบ EN 16931 / Schematron หรือหน่วยงานภาษีผู้รับเอกสารเป็นผู้ตัดสินความถูกต้องทางภาษี

Terminal window
composer require nextpdf/core:^3 # EInvoice contracts only
composer require nextpdf/pro # Factur-X 1.08 embedder engine

Core มาพร้อม EmbedderInterface, ProfileInterface, ProfileType, ValidatorInterface และ ValidationResult ใน NextPDF\Contracts\EInvoice docblock ของอินเทอร์เฟซระบุไว้อย่างชัดเจนว่า ระดับ Pro (เอนจินเขียนไบต์ใหม่ Factur-X 1.08) และระดับ Enterprise (ตัวสร้างที่จัดการ PDF/A) เป็นผู้นำสัญญานี้ไปใช้จริง Core เพียงลำพังไม่ฝังใบแจ้งหนี้ Core กำหนดสัญญาแบบ byte-in/byte-out ที่ระดับเหล่านั้นต้องปฏิบัติตาม

NextPDF\Contracts\EInvoice\ProfileType เป็นตัวจำแนกความสอดคล้องตาม EN 16931 ได้แก่ MINIMUM, BASIC_WL, BASIC, EN16931, EXTENDED และ XRECHNUNG isEn16931Conformant() ของตัวจำแนกนี้เข้ารหัสกฎโดยตรงจาก EN 16931-1 MINIMUM และ BASIC_WL ไม่สอดคล้องตาม EN 16931 (ไม่ผ่านพหุภาวะของตัวระบุข้อกำหนด BT-24 และข้อกำหนดด้านรายการสินค้า) BASIC, EN16931, EXTENDED และ XRECHNUNG สอดคล้องตาม EN 16931

ตัวฝัง (EmbedderInterface) มีหน้าที่ตามสัญญาดังนี้:

  • แยกวิเคราะห์ CII XML ที่ส่งเข้ามาผ่าน XmlGuard (ปลอดภัยจาก XXE)
  • แทรกสกีมาส่วนขยาย XMP ของ Factur-X สำหรับโปรไฟล์ที่ประกาศไว้
  • แนบ XML เป็นไฟล์ฝังพร้อม AFRelationship ที่ถูกต้อง (Data / Alternative) เพื่อให้ฐานสำหรับการเก็บถาวรแบบ PDF/A-3 (§6.7.5 ข้อกำหนดไฟล์ฝัง — คีย์ F/UF) มี XML นั้นอยู่ภายใน

NextPDF สร้างโครงสร้างนี้ออกมา แต่ไม่ได้ยืนยันว่าใบแจ้งหนี้ถูกต้องทางภาษี หน่วยงานผู้รับเอกสารเป็นผู้ชี้ขาดเรื่องนั้นโดยเทียบกับกฎทางธุรกิจ EN 16931 §7 และ CIUS ระดับชาติใด ๆ

สัญลักษณ์ผล
Contracts\EInvoice\EmbedderInterfaceสัญญาแบบ byte-in/byte-out; Pro/Enterprise เป็นผู้นำไปใช้
Contracts\EInvoice\ProfileType (enum)ตัวจำแนกโปรไฟล์ EN 16931
ProfileType::isEn16931Conformant(): boolเป็น false สำหรับ MINIMUM/BASIC_WL; เป็น true สำหรับ BASIC/EN16931/EXTENDED/XRECHNUNG
Contracts\EInvoice\ValidatorInterfaceสัญญาการตรวจสอบความถูกต้องที่คืนค่า ValidationResult ซึ่งระบุการละเมิดกฎ
<?php
declare(strict_types=1);
require_once __DIR__ . '/vendor/autoload.php';
use NextPDF\Contracts\EInvoice\ProfileType;
// Core: choose and check the profile before delegating embedding to Pro.
$profile = ProfileType::EN16931;
if (!$profile->isEn16931Conformant()) {
fwrite(STDERR, "Profile {$profile->value} is not EN 16931 conformant.\n");
exit(1);
}
// The concrete embedder is provided by nextpdf/pro:
// $embedder = /* the Factur-X embedder from nextpdf/pro; see the Premium docs */;
// $pdfWithInvoice = $embedder->embed($basePdfBytes, $ciiXml, $options);
echo "Profile {$profile->value} selected (embedding requires nextpdf/pro).\n";

ในไปป์ไลน์สำหรับใช้งานจริง (ระดับ Pro) ระบบจะฝัง CII XML ลงในฐาน PDF/A-3 จากนั้นรันตัวตรวจสอบความถูกต้องแบบ EN 16931 Schematron หรือส่งให้หน่วยงานผู้รับเอกสาร และถือผลรายงานนั้นเป็นด่านชี้ขาด NextPDF สร้าง XML แบบฝังและไฟล์แนบ PDF/A-3 ออกมา ส่วนตัวตรวจสอบความถูกต้องหรือหน่วยงานเป็นผู้ตัดสินความถูกต้องทางภาษี Core เพียงลำพังไม่สามารถรันไปป์ไลน์นี้ได้ ต้องมี nextpdf/pro สำหรับเอนจินตัวฝัง

  • Core มีเฉพาะสัญญาเท่านั้น หากไม่มี nextpdf/pro ก็จะไม่มีตัวฝังที่นำไปใช้จริง โค้ดที่เรียกใช้ต้องพึ่งพาอินเทอร์เฟซ และลดระดับการทำงานอย่างชัดเจนเมื่อไม่มีการนำไปใช้จริงของ Pro
  • MINIMUM / BASIC_WL ไม่ใช่ EN 16931 isEn16931Conformant() คืนค่า false สำหรับโปรไฟล์เหล่านี้ อย่าโฆษณาว่าเป็นใบแจ้งหนี้ EN 16931 เมื่อใช้โปรไฟล์เหล่านี้
  • ฐาน PDF/A-3 XML แบบฝังอยู่ในคอนเทนเนอร์สำหรับการเก็บถาวรแบบ PDF/A-3 คีย์ F/UF ของไฟล์ฝัง (PDF/A §6.7.5) ต้องมีอยู่
  • XML ถูกแยกวิเคราะห์อย่างปลอดภัยจาก XXE สัญญากำหนดให้แยกวิเคราะห์ด้วย XmlGuard ตัวฝังที่กำหนดเองต้องไม่เปิดช่องทาง XXE
  • ความถูกต้องไม่ใช่คำตัดสินของไลบรารี การสร้างไฟล์ Factur-X ที่ถูกต้องตามโครงสร้างไม่ได้หมายความว่าหน่วยงานภาษีจะยอมรับไฟล์นั้น

การฝังจะเขียน PDF ใหม่เพื่อเพิ่มไฟล์แนบ XML และสกีมาส่วนขยาย XMP กำหนดงบไว้ที่เวลาตามนาฬิกาจริง ≤ 1500 ms และหน่วยความจำสูงสุด ≤ 128 MB สำหรับใบแจ้งหนี้ทั่วไป

XML แบบฝังถูกแยกวิเคราะห์อย่างปลอดภัยจาก XXE ผ่าน XmlGuard XML ของใบแจ้งหนี้มีข้อมูลเชิงพาณิชย์ที่ระบุตัวบุคคลได้ (PII) รวมถึงคู่สัญญาและจำนวนเงิน XML นี้ถูกฝังไว้ ไม่ได้ถูกเข้ารหัสลับ การรักษาความลับของใบแจ้งหนี้เป็นความรับผิดชอบของผู้ผสานระบบ

XML ของใบแจ้งหนี้บรรจุ PII ของคู่สัญญาและข้อมูลทางการเงิน การฝังทำงานภายในกระบวนการ ไม่มีข้อมูลออกจากกระบวนการระหว่างการฝัง การส่งไปยังหน่วยงานผู้รับเอกสารอยู่นอกขอบเขต และเป็นความรับผิดชอบของผู้ผสานระบบด้านถิ่นที่อยู่ของข้อมูล

เทเลเมทรีที่ปลอดภัยและการล้างข้อมูลในบันทึก

หัวข้อที่มีชื่อว่า “เทเลเมทรีที่ปลอดภัยและการล้างข้อมูลในบันทึก”

ห้ามบันทึก CII XML หรือไบต์ของ PDF แบบฝังโดยเด็ดขาด — เนื่องจากบรรจุ PII ของใบแจ้งหนี้ ให้บันทึกเฉพาะชื่อโปรไฟล์และคำตัดสินเชิงโครงสร้างเท่านั้น

ไฟล์ Factur-X ไม่มีการควบคุมการเข้าถึง ทุกคนที่มีไฟล์สามารถอ่าน XML แบบฝังได้ รูปแบบไฮบริดรับประกันว่าใบแจ้งหนี้อ่านได้ด้วยเครื่อง แต่ไม่รับประกันการรักษาความลับหรือการยอมรับทางภาษีของใบแจ้งหนี้นั้น

การฝังไม่ดำเนินการเข้ารหัสลับใด ๆ ใบแจ้งหนี้ Factur-X ที่ลงลายเซ็นเป็นเรื่องของสูตรลายเซ็นต่างหาก และสืบทอดสถานะ FIPS ของสูตรนั้น หน้านี้ไม่ได้กล่าวอ้างเรื่องการลงลายเซ็น

ข้อกล่าวอ้างข้อกำหนดอนุมาตรารหัสอ้างอิง (reference_id)
ใบแจ้งหนี้ EN 16931 มีคำศัพท์ทางธุรกิจของแบบจำลองข้อมูลเชิงความหมายEN 16931-1§6.4
ความสอดคล้องตาม EN 16931 ถูกกำกับด้วยพหุภาวะของกฎทางธุรกิจที่ใบแจ้งหนี้ที่สอดคล้องต้องปฏิบัติตามEN 16931-1§7
โปรไฟล์ Factur-X EN 16931 กำหนดให้ CII-XML สอดคล้องกับกฎทางธุรกิจFactur-X 1.08โปรไฟล์ EN 16931
โปรไฟล์ Factur-X EN 16931 กำหนดเนื้อหาใบแจ้งหนี้ที่ต้องมีFactur-X 1.08โปรไฟล์ EN 16931
Factur-X เป็นแบบไฮบริด คือ XML ที่เครื่องอ่านได้ฝังอยู่ควบคู่กับ PDF ที่มนุษย์อ่านได้Factur-X 1.08Basic
XML แบบฝังอยู่ในฐานสำหรับการเก็บถาวรแบบ PDF/A (คีย์ F/UF ของไฟล์ฝัง)ISO 19005-4§6.7.5

การอ้างอิงใช้ตัวชี้แบบ clause-id + reference_id เข้าสู่คลังข้อมูลสำหรับการตรวจสอบ ไม่มีการนำข้อความจากมาตรฐานมาทำซ้ำ อนุมาตราต่าง ๆ ถูกสรุปด้วยถ้อยคำของ NextPDF เอง