Skip to content

Commit

Permalink
Upgrading to myDATA version 1.0.7
Browse files Browse the repository at this point in the history
Corrected correlatedInvoices type from string to array of integers.
  • Loading branch information
firebed committed Dec 20, 2023
1 parent 304d29f commit f319476
Show file tree
Hide file tree
Showing 9 changed files with 311 additions and 50 deletions.
16 changes: 11 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ This package provides an expressive, fluent interface to ΑΑΔΕ myDATA invoici

| Version | PHP | myDATA |
|---------|-----|--------|
| ^v.3.x | 8.1 | v1.0.6 |
| ^v.3.x | 8.1 | v1.0.7 |
| ^v.2.x | 8.1 | v1.0.5 |
| ^v.1.x | 8.0 | v1.0.3 |

Expand All @@ -29,7 +29,7 @@ By default, the package's classes are loaded automatically. There is nothing for
## Documentation

<p>Official myDATA webpage: <a href="https://www.aade.gr/mydata">AADE myDATA</a></p>
<p>Official documentation: <a href="https://www.aade.gr/sites/default/files/2022-09/myDATA%20API%20Documentation%20v1.0.6_official_erp.pdf">AADE myDATA REST API v1.0.6.</a></p>
<p>Official documentation: <a href="https://www.aade.gr/sites/default/files/2023-10/myDATA%20API%20Documentation%20v1.0.7_official_erp.pdf">AADE myDATA REST API v1.0.7.</a></p>
<p>In order to use this package, you will need first a <b>user id</b> and a <b>subscription key</b>. You can get these credentials by signing up to mydata rest api.</p>
<div>Development: <a href="https://mydata-dev-register.azurewebsites.net/">Sign up to mydata development api</a></div>
<div>Production: <a href="https://www.aade.gr/mydata">Sign up to mydata production api</a></div>
Expand All @@ -56,6 +56,11 @@ MyDataRequest::setEnvironment($env);
MyDataRequest::setCredentials($user_id, $subscription_key);
```

For development, you may need to disable client verification if you are not using https:
```php
MyDataRequest::verifyClient(false);
```

### SendInvoices

<p>You can refer to the official or this package's documentation to see the details about the parameters.</p>
Expand Down Expand Up @@ -87,14 +92,15 @@ foreach ($response as $responseType) {
// own and an invoice reference from myDATA, and you will have to relate these together.
// Each responseType has an index value which corresponds to the index of the invoice in
// the $invoicesDoc object, you can use this index value to find the invoice it is referred to.
// Afterwards, get the invoice's uid and mark values from the responseType,
// relate them with your local invoice and save them in your database.
// Retrieve the invoice's uid, mark, qr and other values from the responseType,
// then establish the correlation with your local invoice and persist these details in your database.
$index = $responseType->getIndex();
$uid = $responseType->getInvoiceUid();
$mark = $responseType->getInvoiceMark();
$cancelledByMark = $responseType->getCancellationMark();
$qrUrl = $responseType->getQrUrl();

dd(compact('index', 'uid', 'mark', 'cancelledByMark'));
dd(compact('index', 'uid', 'mark', 'cancelledByMark', 'qrUrl'));
} else {
// There were some errors for this specific invoice. See errors for details.
foreach ($responseType->getErrors() as $error) {
Expand Down
6 changes: 6 additions & 0 deletions config/class_map.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
use Firebed\AadeMyData\Models\CancelledInvoicesDoc;
use Firebed\AadeMyData\Models\ContinuationToken;
use Firebed\AadeMyData\Models\Counterpart;
use Firebed\AadeMyData\Models\EntityType;
use Firebed\AadeMyData\Models\Error;
use Firebed\AadeMyData\Models\Errors;
use Firebed\AadeMyData\Models\ExpensesClassification;
Expand All @@ -18,6 +19,7 @@
use Firebed\AadeMyData\Models\InvoicesDoc;
use Firebed\AadeMyData\Models\InvoiceSummary;
use Firebed\AadeMyData\Models\Issuer;
use Firebed\AadeMyData\Models\Party;
use Firebed\AadeMyData\Models\PaymentMethodDetail;
use Firebed\AadeMyData\Models\PaymentMethods;
use Firebed\AadeMyData\Models\RequestedBookInfo;
Expand All @@ -27,6 +29,7 @@
use Firebed\AadeMyData\Models\Ship;
use Firebed\AadeMyData\Models\TaxesTotals;
use Firebed\AadeMyData\Models\TaxTotals;
use Firebed\AadeMyData\Models\TransportDetailType;

return [
'InvoicesDoc' => InvoicesDoc::class,
Expand Down Expand Up @@ -57,4 +60,7 @@
'response' => Response::class,
'taxes' => TaxTotals::class,
'taxesTotals' => TaxesTotals::class,
'otherTransportDetails' => TransportDetailType::class, // v1.0.7
'otherCorrelatedEntities' => EntityType::class, // v1.0.7
'entityData' => Party::class // v1.0.7
];
67 changes: 59 additions & 8 deletions src/Enums/SpecialInvoiceCategory.php
Original file line number Diff line number Diff line change
Expand Up @@ -8,22 +8,73 @@ enum SpecialInvoiceCategory: int
* Επιδοτήσεις – Επιχορηγήσεις
*/
case TYPE_1 = 1;


/**
* Έσοδα Λιανικής Ξενοδοχείων – Χρεώσεις Δωματίου
* Έσοδα Λιανικής Ξενοδοχείων
*/
case TYPE_2 = 2;


/**
* Λογιστική Εγγραφή
*/
case TYPE_3 = 3;


/**
* Tax Free Έγκυρη τιμή μόνο για διαβίβαση μέσω erp ή έκδοση μέσω παρόχου ή timologio
* Tax Free
* Έγκυρη τιμή μόνο για διαβίβαση μέσω erp ή έκδοση μέσω παρόχου ή timologio
*/
case TYPE_4 = 4;


/**
* Σύνθετες συναλλαγές ημεδαπής – αλλοδαπής
*
* @version 1.0.7
*/
case TYPE_5 = 5;


/**
* Δικαιούχοι του άρθρου 3 της υπό στοιχεία 139818 ΕΞ2022/28.09.2022 (Β’5083) κοινής υπουργικής απόφασης
*
* @version 1.0.7
*/
case TYPE_6 = 6;


/**
* Αγορά αγροτικών αγαθών υπηρεσιών Άρθρο 41 του Κώδικα ΦΠΑ
*
* @version 1.0.7
*/
case TYPE_7 = 7;


/**
* Έσοδα Λιανικών ΦΗΜ ΑΑΔΕ_1
* Μόνο για ανάγνωση – μη έγκυρη τιμή για αποστολή μέσω ERP / Πάροχο
*
* @version 1.0.7
*/
case TYPE_8 = 8;


/**
* Έσοδα Λιανικών ΦΗΜ ΑΑΔΕ_2
* Μόνο για ανάγνωση – μη έγκυρη τιμή για αποστολή μέσω ERP / Πάροχο
*
* @version 1.0.7
*/
case TYPE_9 = 9;


/**
* Έσοδα Λιανικών ΦΗΜ Επιχείρησης Απόκλιση
*
* @version 1.0.7
*/
case TYPE_10 = 10;
}
55 changes: 55 additions & 0 deletions src/Models/EntityType.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
<?php

namespace Firebed\AadeMyData\Models;

/**
* @version 1.0.7
*/
class EntityType extends Type
{
/**
* @return int Κατηγορία Οντότητας
*
* @version 1.0.7
*/
public function getType(): int
{
return $this->get('type');
}

/**
* Κατηγορία Οντότητας
* <ol>
* <li>Φορολογικός Εκπρόσωπος</li>
* <li>Διαμεσολαβητής</li>
* </ol>
*
* @param int $type Κατηγορία Οντότητας
*
* @version 1.0.7
*/
public function setType(int $type): void
{
$this->put('type', $type);
}

/**
* @return Party
*
* @version 1.0.7
*/
public function getEntityData(): Party
{
return $this->get('entityData');
}

/**
* @param Party $entityData
*
* @version 1.0.7
*/
public function setEntityData(Party $entityData): void
{
$this->put('entityData', $entityData);
}
}
65 changes: 50 additions & 15 deletions src/Models/Invoice.php
Original file line number Diff line number Diff line change
Expand Up @@ -60,8 +60,8 @@ public function getTransmissionFailure(): ?int
* <li>Στην περίπτωση αδυναμίας επικοινωνίας του παρόχου με το myDATA κατά την έκδοση / διαβίβαση παραστατικού</li>
* <li>Στην περίπτωση αδυναμίας επικοινωνίας του ERP με το myDATA κατά την έκδοση / διαβίβαση παραστατικού</li>
* </ol>
*
* @param int $transmissionFailure Κωδικός αδυναμίας επικοινωνίας παρόχου
*
* @param int $transmissionFailure Κωδικός αδυναμίας επικοινωνίας παρόχου
*/
public function setTransmissionFailure(int $transmissionFailure): void
{
Expand All @@ -77,7 +77,7 @@ public function getIssuer(): ?Issuer
}

/**
* @param Issuer $issuer Εκδότης Παραστατικού
* @param Issuer $issuer Εκδότης Παραστατικού
*/
public function setIssuer(Issuer $issuer): void
{
Expand All @@ -93,7 +93,7 @@ public function getCounterpart(): ?Counterpart
}

/**
* @param Counterpart $counterpart Λήπτης Παραστατικού
* @param Counterpart $counterpart Λήπτης Παραστατικού
*/
public function setCounterpart(Counterpart $counterpart): void
{
Expand All @@ -110,8 +110,8 @@ public function getPaymentMethods(): ?PaymentMethods

/**
* Προσθήκη τρόπου πληρωμής.
*
* @param PaymentMethodDetail $paymentMethod Τρόπος Πληρωμής
*
* @param PaymentMethodDetail $paymentMethod Τρόπος Πληρωμής
*/
public function addPaymentMethod(PaymentMethodDetail $paymentMethod): void
{
Expand All @@ -129,7 +129,7 @@ public function getInvoiceHeader(): ?InvoiceHeader
}

/**
* @param InvoiceHeader $invoiceHeader Επικεφαλίδα Παραστατικού
* @param InvoiceHeader $invoiceHeader Επικεφαλίδα Παραστατικού
*/
public function setInvoiceHeader(InvoiceHeader $invoiceHeader): void
{
Expand All @@ -146,8 +146,8 @@ public function getInvoiceDetails(): ?array

/**
* Προσθήκη γραμμής παραστατικού.
*
* @param InvoiceDetails $invoiceDetails Γραμμή Παραστατικού
*
* @param InvoiceDetails $invoiceDetails Γραμμή Παραστατικού
*/
public function addInvoiceDetails(InvoiceDetails $invoiceDetails): void
{
Expand All @@ -163,7 +163,7 @@ public function getInvoiceSummary(): ?InvoiceSummary
}

/**
* @param InvoiceSummary $invoiceSummary Περίληψη Παραστατικού
* @param InvoiceSummary $invoiceSummary Περίληψη Παραστατικού
*/
public function setInvoiceSummary(InvoiceSummary $invoiceSummary): void
{
Expand All @@ -175,14 +175,14 @@ public function setInvoiceSummary(InvoiceSummary $invoiceSummary): void
* του ΦΠΑ, οι οποίοι αφορούν όλο το παραστατικό σαν σύνολο. Σε περίπτωση που ο
* χρήστης κάνει χρήση αυτού του στοιχείου, δε θα μπορεί να εισάγει φόρους εκτός
* του ΦΠΑ σε κάθε γραμμή του παραστατικού ξεχωριστά.
*
*
* @return TaxesTotals|null
*/
public function getTaxesTotals(): ?TaxesTotals
{
return $this->get('taxesTotals');
}

/**
* Προσθήκη συνόλου φόρων.
*/
Expand All @@ -193,13 +193,48 @@ public function addTaxesTotals(TaxTotals $taxTotalsType): void
$this->put('taxesTotals', $taxesTotals);
}

/**
* Συμπληρώνεται από την Υπηρεσία.
*
* Κωδικοποιημένο αλφαριθμητικό για να χρησιμοποιηθεί από τα
* προγράμματα για τη δημιουργία QR Code τύπου Url.
*
* @version 1.0.7
*/
public function getQrCodeUrl(): ?string
{
return $this->get('qrCodeUrl');
}

/**
* @return TransportDetailType[]|null Λοιπές Λεπτομέρειες Διακίνησης (Ορισμός - Αλλαγή Μτφ Μέσων)
*
* @version 1.0.7
*/
public function getOtherTransportDetails(): ?array
{
return $this->get('otherTransportDetails');
}

/**
* Προσθήκη Λεπτομέρειες Διακίνησης (Ορισμός - Αλλαγή Μτφ Μέσων).
*
* @param TransportDetailType $transportDetailType Λεπτομέρειες Διακίνησης
*
* @version 1.0.7
*/
public function addOtherTransportDetail(TransportDetailType $transportDetailType): void
{
$this->push('otherTransportDetails', $transportDetailType);
}

public function put($key, $value): void
{
if ($key === 'invoiceDetails') {
$this->addInvoiceDetails($value);
if ($key === 'invoiceDetails' || $key === 'otherTransportDetails') {
$this->push($key, $value);
return;
}

parent::put($key, $value);
}
}
Loading

0 comments on commit f319476

Please sign in to comment.