简单存档/zugferd

将 ZUGFeRD XML 转换为 PHP 对象

v3.0.0 2024-06-22 23:09 UTC

This package is auto-updated.

Last update: 2024-09-22 23:42:27 UTC


README

Software License

此包提供了一种简单的方法将 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)。请参阅 许可文件 了解更多信息。