firebed / aade-mydata
Implementation of requests for AADE myDATA.
Installs: 2 115
Dependents: 2
Suggesters: 0
Security: 0
Stars: 64
Watchers: 10
Forks: 21
Open Issues: 1
Type:package
Requires
- php: ^8.1
- ext-dom: *
- ext-libxml: *
- guzzlehttp/guzzle: ^7.0.1
Requires (Dev)
- fakerphp/faker: ^1.23
- phpunit/phpunit: ^10.0
- roave/security-advisories: dev-latest
- symfony/var-dumper: ^6.0
This package is auto-updated.
Last update: 2024-11-20 12:03:31 UTC
README
Support This Project
If you find this project useful, you can show your appreciation and support by giving it a ⭐. Your support motivates us to work harder and make even better and more useful tools!
Introduction
This package provides an expressive, fluent interface to ΑΑΔΕ myDATA invoicing REST API. It handles almost all the boilerplate code for sending, cancelling and requesting invoices.
Official Documentation
All documentation is available 👉 on our documentation site
Upgrade Guide
If you are upgrading from a previous version, please see upgrade guide.
v5 Features
Ability to "squash" invoice rows
Ο Πάροχος ηλεκτρονικής τιμολόγησης και τα ERP διαβιβάζουν υποχρεωτικά μόνο τη σύνοψη γραμμών και χαρακτηρισμών των παραστατικών και όχι αναλυτικά τις γραμμές.
$invoice->squashInvoiceRows()
See Invoice Row Squashing for more details.
Ability to validate invoices
$invoice->validate()
Ability to preview invoice xml
$invoice->toXml()
Classification combinations
See Classification Combinations for more details.
use Firebed\AadeMyData\Enums\InvoiceType; use Firebed\AadeMyData\Services\Classifications; dump(Classifications::incomeClassifications(InvoiceType::TYPE_1_1));
Classification combinations with labels
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())
Classification combination validation
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');
Added labels to all enum types
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: Βέλγιο
Enum helper methods
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
New enum types
- CountryCode
- CurrencyCode
Ability to populate model attributes within constructor
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' ] ] ])
Fluent model setters (chainable)
$invoice->setIssuer(...)->setCounterpart(...)
New methods
- Invoice::setTaxesTotals
- Invoice::setOtherTransportDetails
add_
methods to top up an amount to
$row->addNetValue(5); $row->addVatAmount(1.2);
Implemented endpoints for electronic invoice providers (Πάροχοι Ηλεκτρονικής Τιμολόγησης).
Requirements
- guzzlehttp/guzzle >= 7.0
Installation
To install through Composer, run the following command:
composer require firebed/aade-mydata
Documentation
Official myDATA webpage: AADE myDATA
Official myDATA documentation: AADE myDATA REST API v1.0.9
In order to use this package, you will need first a user id and a subscription key. You can get these credentials by signing up to mydata rest api.
Development: Sign up to mydata development api
Production: Sign up to mydata production api
Setup
Once you have the user id and the subscription key use the following code to set the environment and the credentials:
$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);
For development, you may need to disable client verification if you are not using https:
MyDataRequest::verifyClient(false);
Available methods
Testing
composer test
Contributing
Please see CONTRIBUTING for details.
Licence
AADE myDATA is licenced under the MIT License.
Copyright 2022 © Okan Giritli