Τύποι δεδομένων

Τύπος Invoice

Ο τύπος Invoice αντιπροσωπεύει ένα αντικείμενο που περιέχει πληροφορίες για τα παραστατικά που θα διαβιβαστούν ή έχουν διαβιβαστεί στο σύστημα του ΑΑΔΕ myDATA.

Πεδίο Υποχρεωτικό Περιγραφή
uid Όχι Αναγνωριστικό Παραστατικού
mark Όχι Μοναδικός Αριθμός Καταχώρησης Παραστατικού
cancelledByMark Όχι Μοναδικός Αριθμός Καταχώρησης Ακυρωτικού
authenticationCode Όχι Συμβολοσειρά Αυθεντικοποίησης
transmissionFailure Όχι Αδυναμία Επικοινωνίας Παρόχου ή Αδυναμία Διαβίβασης Δεδομένων από ERP
issuer Όχι Εκδότης Παραστατικού
counterpart Όχι Λήπτης Παραστατικού
paymentMethods[] Όχι Τρόποι Πληρωμής
invoiceHeader Ναι Επικεφαλίδα Παραστατικού
invoiceDetails[] Ναι Γραμμές Παραστατικού
taxesTotals[] Όχι Σύνολα Φόρων
invoiceSummary Ναι Περίληψη Παραστατικού
qrCodeUrl Όχι Κωδικοποιημένο αλφαριθμητικό για να χρησιμοποιηθεί από τα προγράμματα για τη δημιουργία QR Code τύπου Url
downloadingInvoiceUrl Όχι URL για λήψη παραστατικού (έγκυρο μόνο στην περίπτωση διαβίβασης μέσω παρόχου) v1.0.12
packingsDeclarations[] Όχι Δηλώσεις Συσκευασιών Διακίνησης (έγκυρο μόνο για παραστατικά διακίνησης) v2.0.1
invoiceDeliveryStatus Όχι Κατάσταση Παραστατικού Δελτίου Διακίνησης (read-only, παρέχεται από το myDATA κατά την ανάκτηση) v2.0.1
deliveryLifecycle Όχι Το σύνολο των γεγονότων του κύκλου ζωής του παραστατικού διακίνησης (read-only, παρέχεται από το myDATA κατά την ανάκτηση) v2.0.1

Τα πεδία uid, mark, cancelledByMark και authenticationCode συμπληρώνονται από την υπηρεσία.

Παρατηρήσεις

  • Το uid αποτελεί το αναγνωριστικό κάθε παραστατικού και συμπληρώνεται από την Υπηρεσία. Γενικά υπολογίζεται από το SHA-1 hash των ακόλουθων πεδίων του παραστατικού τα οποία είναι :
    • ΑΦΜ Eκδότη
    • Ημερομηνία Έκδοσης
    • Αριθμός Εγκατάστασης στο Μητρώο του Taxis
    • Τύπος Παραστατικού
    • Σειρά
    • ΑΑ
    • Τύπος Απόκλισης Παραστατικού (εφόσον υπάρχει) Ειδικά για τα παραστατικά των κατηγοριών Β1 (Μη Αντικριζόμενα Παραστατικά Λήπτη ημεδαπής / αλλοδαπής) και Β2 (Αντικριζόμενα Παραστατικά Λήπτη ημεδαπής / αλλοδαπής) στον υπολογισμό του uid συμμετέχει και το ΑΦΜ του λήπτη. Κατά τη χρήση του αλγόριθμου SHA-1 χρησιμοποιείται κωδικοποίηση ISO-8859-7.
  • Το mark αποτελεί τον Μοναδικό Αριθμό Καταχώρησης του παραστατικού (Μ.ΑΡ.Κ)
  • Στο στοιχείο taxesTotals θα περιλαμβάνονται φόροι όλων των κατηγοριών, εκτός του ΦΠΑ, οι οποίοι αφορούν όλο το παραστατικό σαν σύνολο. Σε περίπτωση που ο χρήστης κάνει χρήση αυτού του στοιχείου, δε θα μπορεί να εισάγει φόρους εκτός του ΦΠΑ σε κάθε γραμμή του παραστατικού ξεχωριστά.
  • Ο Μοναδικός Αριθμός Καταχώρησης Ακυρωτικού εμφανίζεται κατά τη λήψη μόνο εφόσον το εν λόγω παραστατικό έχει ακυρωθεί και συμπληρώνεται με το ΜΑΡΚ της ακύρωσης.
  • Το authenticationCode αποτελεί τη συμβολοσειρά αυθεντικοποίησης κάθε παραστατικού και συμπληρώνεται από την Υπηρεσία για την περίπτωση που η αποστολή γίνεται μέσω Παρόχου Ηλεκτρονικής Τιμολόγησης. Υπολογίζεται από το SHA-1 hash 8 πεδίων του παραστατικού τα οποία είναι :
    • ΑΦΜ Eκδότη
    • Ημερομηνία Έκδοσης
    • Αριθμός Εγκατάστασης στο Μητρώο του Taxis
    • Τύπος Παραστατικού
    • Σειρά
    • ΑΑ
    • Μ.ΑΡ.Κ Παραστατικού
    • Συνολική Αξία Παραστατικού
    • Σύνολο Αξίας Φ.Π.Α. Παραστατικού
    • ΑΦΜ Λήπτη
  • Το πεδίο qrCodeUrl περιέχει ένα url του οποίου το query string είναι κωδικοποιημένο, προκειμένου να χρησιμοποιηθεί από τις εφαρμογές για την παραγωγή/εισαγωγή στα παραστατικά QR Code τύπου url, το οποίο θα οδηγεί (κατά την ανάγνωση του) σε σελίδα της Υπηρεσίας για την επισκόπηση του παραστατικού.
  • Επιτρεπτές τιμές για το πεδίο transmissionFailure είναι:
    • 1. Στην περίπτωση αδυναμίας επικοινωνίας οντότητας με τον πάροχο κατά την έκδοση/διαβίβαση παραστατικού (μόνο για παρόχους).
    • 2. Στην περίπτωση αδυναμίας επικοινωνίας του παρόχου με το myDATA κατά την έκδοση/διαβίβαση παραστατικού (μόνο για παρόχους).
    • 3. Απώλεια διασύνδεσης (είναι επιτρεπτή μόνο για περίπτωση αποστολής από ERP).

Νέα Πεδία v2.0.1 - Ψηφιακή Διακίνηση Αγαθών

packingsDeclarations

Το πεδίο packingsDeclarations είναι λίστα από αντικείμενα PackagingDetail που περιέχει δηλώσεις συσκευασιών για παραστατικά διακίνησης.

use Firebed\AadeMyData\Models\DigitalGoodsMovement\PackagingDetail;
use Firebed\AadeMyData\Enums\DigitalGoodsMovement\PackagingType;

$invoice = new Invoice();

// Προσθήκη δήλωσης συσκευασίας
$invoice->addPackagingDeclaration(new PackagingDetail(PackagingType::PALLET, 10));
$invoice->addPackagingDeclaration(new PackagingDetail(PackagingType::BOX, 50));

// Ή ορισμός όλων μαζί
$invoice->setPackingsDeclarations([
    new PackagingDetail(PackagingType::CRATE, 5),
    new PackagingDetail(PackagingType::BARREL, 2),
]);

invoiceDeliveryStatus

Το πεδίο invoiceDeliveryStatus είναι read-only και επιστρέφεται από το myDATA κατά την ανάκτηση παραστατικών διακίνησης. Περιέχει την τρέχουσα κατάσταση του δελτίου αποστολής.

$invoice = $myData->requestDocs(...);

if ($invoice->getInvoiceDeliveryStatus()) {
    $status = $invoice->getInvoiceDeliveryStatus();
    echo "Delivery Status: " . $status->label();

    // Πιθανές τιμές:
    // - REGISTERED (1): Εκδόθηκε
    // - CANCELLED (2): Ακυρώθηκε
    // - IN_TRANSIT (3): Σε διακίνηση
    // - REJECTED (4): Απορρίφθηκε
    // - DELIVERED_BY_CARRIER (5): Παραδόθηκε από τον μεταφορέα
    // - FAILED_DELIVERY (7): Αποτυχία παράδοσης
    // - COMPLETED (8): Ολοκληρώθηκε
}

deliveryLifecycle

Το πεδίο deliveryLifecycle είναι read-only και επιστρέφεται από το myDATA κατά την ανάκτηση παραστατικών διακίνησης. Περιέχει το πλήρες ιστορικό γεγονότων του κύκλου ζωής του δελτίου αποστολής.

$invoice = $myData->requestDocs(...);

if ($invoice->getDeliveryLifecycle()) {
    $lifecycle = $invoice->getDeliveryLifecycle();

    foreach ($lifecycle as $event) {
        echo "Event: " . $event->getEventType()->label() . "\n";
        echo "Timestamp: " . $event->getEventTimestamp() . "\n";
        echo "Actor VAT: " . $event->getActorVat() . "\n";

        // Έλεγχος για λεπτομέρειες μεταφοράς
        if ($event->getTransportDetails()) {
            $transport = $event->getTransportDetails();
            echo "Vehicle: " . $transport->getVehicleNumber() . "\n";
        }

        // Έλεγχος για λεπτομέρειες παράδοσης
        if ($event->getOutcomeDetails()) {
            $outcome = $event->getOutcomeDetails();
            echo "Outcome: " . $outcome->getOutcome()->label() . "\n";
        }

        // Έλεγχος για λεπτομέρειες απόρριψης
        if ($event->getRejectionDetails()) {
            $rejection = $event->getRejectionDetails();
            echo "Rejection Reason: " . $rejection->getReason() . "\n";
        }
    }
}

Για περισσότερες πληροφορίες σχετικά με την Ψηφιακή Διακίνηση Αγαθών, δείτε την τεκμηρίωση Digital Goods Movement.

Προηγούμενο
Ολοκληρωμένο Παράδειγμα
Επόμενο
Party