ความสอดคล้องของ 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 หรือหน่วยงานภาษีผู้รับเอกสารเป็นผู้ตัดสินความถูกต้องทางภาษี
การติดตั้ง
หัวข้อที่มีชื่อว่า “การติดตั้ง”composer require nextpdf/core:^3 # EInvoice contracts onlycomposer require nextpdf/pro # Factur-X 1.08 embedder engineCore มาพร้อม 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 ระดับชาติใด ๆ
ส่วนติดต่อ API
หัวข้อที่มีชื่อว่า “ส่วนติดต่อ API”| สัญลักษณ์ | ผล |
|---|---|
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 นี้ถูกฝังไว้ ไม่ได้ถูกเข้ารหัสลับ การรักษาความลับของใบแจ้งหนี้เป็นความรับผิดชอบของผู้ผสานระบบ
ถิ่นที่อยู่ของข้อมูลและมาตรการบรรเทา PII
หัวข้อที่มีชื่อว่า “ถิ่นที่อยู่ของข้อมูลและมาตรการบรรเทา PII”XML ของใบแจ้งหนี้บรรจุ PII ของคู่สัญญาและข้อมูลทางการเงิน การฝังทำงานภายในกระบวนการ ไม่มีข้อมูลออกจากกระบวนการระหว่างการฝัง การส่งไปยังหน่วยงานผู้รับเอกสารอยู่นอกขอบเขต และเป็นความรับผิดชอบของผู้ผสานระบบด้านถิ่นที่อยู่ของข้อมูล
เทเลเมทรีที่ปลอดภัยและการล้างข้อมูลในบันทึก
หัวข้อที่มีชื่อว่า “เทเลเมทรีที่ปลอดภัยและการล้างข้อมูลในบันทึก”ห้ามบันทึก CII XML หรือไบต์ของ PDF แบบฝังโดยเด็ดขาด — เนื่องจากบรรจุ PII ของใบแจ้งหนี้ ให้บันทึกเฉพาะชื่อโปรไฟล์และคำตัดสินเชิงโครงสร้างเท่านั้น
แบบจำลองภัยคุกคาม
หัวข้อที่มีชื่อว่า “แบบจำลองภัยคุกคาม”ไฟล์ Factur-X ไม่มีการควบคุมการเข้าถึง ทุกคนที่มีไฟล์สามารถอ่าน XML แบบฝังได้ รูปแบบไฮบริดรับประกันว่าใบแจ้งหนี้อ่านได้ด้วยเครื่อง แต่ไม่รับประกันการรักษาความลับหรือการยอมรับทางภาษีของใบแจ้งหนี้นั้น
พฤติกรรมในโหมด FIPS
หัวข้อที่มีชื่อว่า “พฤติกรรมในโหมด FIPS”การฝังไม่ดำเนินการเข้ารหัสลับใด ๆ ใบแจ้งหนี้ 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.08 | Basic | |
| XML แบบฝังอยู่ในฐานสำหรับการเก็บถาวรแบบ PDF/A (คีย์ F/UF ของไฟล์ฝัง) | ISO 19005-4 | §6.7.5 |
การอ้างอิงใช้ตัวชี้แบบ clause-id + reference_id เข้าสู่คลังข้อมูลสำหรับการตรวจสอบ ไม่มีการนำข้อความจากมาตรฐานมาทำซ้ำ อนุมาตราต่าง ๆ ถูกสรุปด้วยถ้อยคำของ NextPDF เอง