简单存档 / zugferd
将 ZUGFeRD XML 转换为 PHP 对象
v3.0.0
2024-06-22 23:09 UTC
Requires
- php: ^7.0 || ^8.0
- nesbot/carbon: ~1.25|~2.0
README
此包提供了一种简单的方法将 ZUGFeRD-invoice.xml 转换为 PHP 对象。
您可以使用 unpack-pdf-attachments 包 从 PDF 中提取 ZUGFeRD-invoice.xml。
我们在我们的德国 SaaS 产品 einfachArchiv 中使用了这两个包。
要求
PHP 7.0 及以上。
安装
您可以通过 Composer 安装此包。运行以下命令
composer require einfacharchiv/zugferd
用法
将 ZUGFeRD XML 转换为对象非常简单。
如果某个元素不存在,该方法将返回 null
。
$xml = file_get_contents('path/to/ZUGFeRD-invoice.xml'); // Validates the XML against the ZUGFeRD XSD. if (Validator::isValid($xml)) { $reader = new Reader($xml); // Available methods // Context $reader->getType(); // Header $reader->getId(); $reader->getName(); $reader->getTypeCode(); $reader->getIssueDate()->toDateTimeString(); foreach ($reader->getNotes() as $note) { $note->getNote(); } // Seller $reader->getSeller()->getName(); $reader->getSeller()->getLineOne(); $reader->getSeller()->getLineTwo(); $reader->getSeller()->getZip(); $reader->getSeller()->getCity(); $reader->getSeller()->getCountry(); foreach ($reader->getSeller()->getTaxNumbers() as $taxNumber) { $taxNumber->getNumber(); $taxNumber->getType(); } // Buyer $reader->getBuyer()->getId(); $reader->getBuyer()->getName(); $reader->getBuyer()->getLineOne(); $reader->getBuyer()->getLineTwo(); $reader->getBuyer()->getZip(); $reader->getBuyer()->getCity(); $reader->getBuyer()->getCountry(); foreach ($reader->getBuyer()->getTaxNumbers() as $taxNumber) { $taxNumber->getNumber(); $taxNumber->getType(); } // Delivery $reader->getOccurrenceDate()->toDateTimeString(); // Settlement $reader->getPaymentReference(); $reader->getCurrency(); foreach ($reader->getPaymentMethods() as $paymentMethod) { $paymentMethod->getTypeCode(); $paymentMethod->getInformation(); $paymentMethod->getFinancialAccount()->getIban(); $paymentMethod->getFinancialAccount()->getName(); $paymentMethod->getFinancialAccount()->getId(); $paymentMethod->getFinancialInstitution()->getBic(); $paymentMethod->getFinancialInstitution()->getName(); } foreach ($reader->getTaxes() as $tax) { $tax->getTax()->getAmount(); $tax->getTax()->getCurrency(); $tax->getTypeCode(); $tax->getBasisAmount()->getAmount(); $tax->getBasisAmount()->getCurrency(); $tax->getCategoryCode(); $tax->getPercentage(); } $reader->getLineTotal()->getAmount(); $reader->getLineTotal()->getCurrency(); $reader->getChargeTotal()->getAmount(); $reader->getChargeTotal()->getCurrency(); $reader->getAllowanceTotal()->getAmount(); $reader->getAllowanceTotal()->getCurrency(); $reader->getTaxBasisTotal()->getAmount(); $reader->getTaxBasisTotal()->getCurrency(); $reader->getTaxTotal()->getAmount(); $reader->getTaxTotal()->getCurrency(); $reader->getGrandTotal()->getAmount(); $reader->getGrandTotal()->getCurrency(); $reader->getTotalPrepaid()->getAmount(); $reader->getTotalPrepaid()->getCurrency(); $reader->getTotalAllowanceCharge()->getAmount(); $reader->getTotalAllowanceCharge()->getCurrency(); $reader->getDuePayable()->getAmount(); $reader->getDuePayable()->getCurrency(); foreach ($reader->getPaymentTerms() as $paymentTerms) { $paymentTerms->getDescription(); $paymentTerms->getDueDate()->toDateTimeString(); } }
贡献
贡献是 欢迎 的。
我们通过 Github 上的拉取请求接受贡献。
在使用此包时遇到困难?发现了一个错误?您有任何一般性问题或改进建议?请随时在 GitHub 上创建问题,我们将尽快解决。
如果您发现了一个安全问题,请通过 support@einfacharchiv.com 发送电子邮件,而不是使用问题跟踪器。
编码愉快!
致谢
许可
MIT 许可证 (MIT)。请参阅 许可文件 了解更多信息。