firebed/aade-mydata

AADE myDATA请求的实现。

v5.1.2 2024-09-28 18:07 UTC

README

Latest Version on Packagist Total Downloads GitHub Workflow Status PHP Version Require License

支持此项目

如果您觉得这个项目有用,可以通过给它一个 ⭐ 来表达您的感谢和支持。您的支持激励我们更加努力工作,制作出更好、更有用的工具!

简介

此包提供了一个表达性强、流畅的接口,用于ΑΑΔΕ myDATA发票REST API。它处理了发送、取消和请求发票的几乎所有样板代码。

官方文档

所有文档可在👉 我们的文档网站上找到

升级指南

如果您是从旧版本升级的,请参阅升级指南

v5功能

能够“压缩”发票行

电子发票供应商和ERP系统必须强制提供发票行和特性的摘要,而不是详细行。

$invoice->squashInvoiceRows()

有关更多详细信息,请参阅发票行压缩

能够验证发票

$invoice->validate()

能够预览发票xml

$invoice->toXml()

分类组合

有关更多详细信息,请参阅分类组合

use Firebed\AadeMyData\Enums\InvoiceType;
use Firebed\AadeMyData\Services\Classifications;

dump(Classifications::incomeClassifications(InvoiceType::TYPE_1_1));

带有标签的分类组合

use Firebed\AadeMyData\Enums\InvoiceType;
use Firebed\AadeMyData\Services\Classifications;

dump(Classifications::incomeClassifications(InvoiceType::TYPE_1_1)->toKeyLabel());
dump(Classifications::incomeClassifications(InvoiceType::TYPE_1_1)->toKeyLabels())
dump(Classifications::incomeClassifications(InvoiceType::TYPE_1_1, IncomeClassificationCategory::CATEGORY_1_1)->toKeyLabel())

分类组合验证

use Firebed\AadeMyData\Enums\InvoiceType;
use Firebed\AadeMyData\Enums\IncomeClassificationCategory;
use Firebed\AadeMyData\Enums\IncomeClassificationType;
use Firebed\AadeMyData\Services\Classifications;

Classifications::incomeClassificationExists('1.1', 'category1_1', 'E3_561_001');
// or
Classifications::incomeClassificationExists(InvoiceType::TYPE_1_1, IncomeClassificationCategory::CATEGORY_1_1, IncomeClassificationType::E3_561_001);
// Outputs: true

// Same for expense classifications
Classifications::expenseClassificationExists('1.1', 'category2_1', 'E3_102_001');

为所有枚举类型添加了标签

use Firebed\AadeMyData\Enums\InvoiceType;
use Firebed\AadeMyData\Enums\PaymentMethod;
use Firebed\AadeMyData\Enums\VatCategory;
use Firebed\AadeMyData\Enums\CountryCode;

echo InvoiceType::TYPE_1_1->label();
// Outputs: Τιμολόγιο Πώλησης

echo InvoiceType::TYPE_1_2->label();
// Outputs: Τιμολόγιο Πώλησης / Ενδοκοινοτικές Παραδόσεις

echo PaymentMethod::METHOD_5->label();
// Outputs: Επί Πιστώσει

echo VatCategory::VAT_1->label();
// Outputs: ΦΠΑ συντελεστής 24%

echo CountryCode::BE->label();
// Outputs: Βέλγιο

枚举辅助方法

use Firebed\AadeMyData\Enums\InvoiceType;
use Firebed\AadeMyData\Enums\CountryCode;
use Firebed\AadeMyData\Enums\ExpenseClassificationType;

$invoiceType = InvoiceType::TYPE_1_1;
$invoiceType->supportsFuelInvoice();
$invoiceType->hasCounterpart();
$invoiceType->supportsDeliveryNote();
$invoiceType->supportsSelfPricing();
$invoiceType->supportsTaxFree();

var_dump(CountryCode::europeanUnionCountries());
// Outputs: All countries in the European Union

echo CountryCode::BE->isInEuropeanUnion()
// Outputs: true

echo CountryCode::US->isInEuropeanUnion()
// Outputs: false

$type = ExpenseClassificationType::VAT_361;
echo $type->isVatClassification(); // true

var_dump(ExpenseClassificationType::vatClassifications()); // Array of all vat classifications

新增枚举类型

  • CountryCode
  • CurrencyCode

能够在构造函数中填充模型属性

use Firebed\AadeMyData\Models\InvoiceDetails;
use Firebed\AadeMyData\Enums\RecType;
use Firebed\AadeMyData\Enums\IncomeClassificationType;
use Firebed\AadeMyData\Enums\IncomeClassificationCategory;

new InvoiceDetails([
  'lineNumber' => 1,
  'netValue' => 5,
  'recType' => RecType::TYPE_2,
  'incomeClassification' => [
      [
          'classificationType' => IncomeClassificationType::E3_561_001,
          'classificationCategory' => IncomeClassificationCategory::CATEGORY_1_1,
          'amount' => '5'
      ]
  ]
])

流畅的模型设置器(链式)

$invoice->setIssuer(...)->setCounterpart(...)

新方法

  • Invoice::setTaxesTotals
  • Invoice::setOtherTransportDetails

使用add_方法将金额增加至

$row->addNetValue(5);
$row->addVatAmount(1.2);

实现了电子发票供应商的端点。

需求

  • guzzlehttp/guzzle >= 7.0

安装

要通过Composer安装,请运行以下命令

composer require firebed/aade-mydata

文档

官方myDATA网页: AADE myDATA

官方myDATA文档: AADE myDATA REST API v1.0.9

为了使用此包,您首先需要一个用户ID和一个订阅密钥。您可以通过注册mydata rest api来获取这些凭据。

开发: 注册mydata开发API

生产: 注册mydata生产API

设置

一旦您拥有了用户ID和订阅密钥,请使用以下代码来设置环境和凭据

$env = "dev"; // For production use "prod"
$user_id = "your-user-id";
$subscription_key = "your-subscription-key";

MyDataRequest::setEnvironment($env);
MyDataRequest::setCredentials($user_id, $subscription_key);

如果您不使用https,您可能需要禁用客户端验证

MyDataRequest::verifyClient(false);

可用方法

测试

composer test

贡献

有关详细信息,请参阅CONTRIBUTING

许可证

AADE myDATA根据MIT许可证授权。

版权 2022 © Okan Giritli