Με το
- POST /api/v1/transactions/cancelDocument
, η ακύρωση μιας συναλλαγής διαβιβάζεται στη φορολογική υπηρεσία και αποθηκεύεται εκεί. Χρησιμοποιείται για την ακύρωση μιας συναλλαγής πριν από την ολοκλήρωσή της. Για παράδειγμα:
- ο πελάτης επιθυμεί να αγοράσει κάποια είδη στο κατάστημα
- ο ταμίας αρχίζει να σαρώνει τα είδη (το POS στέλνει PUT /api/v1/transactions/createDocument)
- ο πελάτης αντιλαμβάνεται ότι έχει χάσει το πορτοφόλι του και δεν μπορεί να πραγματοποιήσει την αγορά
- ο ταμίας διακόπτει τη συναλλαγή και διαγράφει όλα τα προϊόντα που έχουν σαρωθεί (το POS στέλνει POST /api/v1/transactions/cancelDocument για να κλείσει τη συναλλαγή που είχε ανοιχτεί με τη χρήση του PUT /api/v1/transactions/createDocument)
Αποτέλεσμα
Εάν η επεξεργασία είναι επιτυχής (200), ο αντίστοιχος πελάτης της φορολογικής υπηρεσίας απαντά με ένα fiscalResponse και αποθηκεύει την ακύρωση της συναλλαγής.
Χρήση
- Κάθε φορά που ένα έγγραφο κλείνεται στο σύστημα ηλεκτρονικής καταγραφής (ταμειακή μηχανή) μέσω ακύρωσης.
Προϋποθέσεις
-
Η κλήση της συνάρτησης cancelDocument πρέπει να προηγείται της κλήσης του τελικού σημείου PUT /api/v1/transactions/createDocument
- Τα δεδομένα από την απόκριση του createDocument πρέπει να ενσωματωθούν στη δομή JSON του cancelDocument. Βλ. την ακόλουθη ενότητα.
Διαδικασία διαβίβασης
Όπως περιγράφεται, η εντολή cancelDocument απαιτεί προηγούμενη εντολή createDocument. Η απόκριση fiscalResponse της εντολής createDocument περιέχει τα πεδία:
"fiscalisationDocumentNumber": 0,
"fiscalisationDocumentRevision": 0,
"fiscalDocumentStartTime": 0,
Οι πληροφορίες σε αυτά τα πεδία πρέπει να περιλαμβάνονται στη δομή JSON που διαβιβάζεται με το cancelDocument. Αυτά τα πεδία περιέχουν τιμές που δημιουργούνται από απαιτούμενο φορολογικό υλικό (τεχνική συσκευή ασφαλείας «TSE» στη Γερμανία) και χρησιμοποιούνται για την αλυσιδωτή σύνδεση συναλλαγών.
Προσοχή: Παρακαλούμε λάβετε υπόψη τα ακόλουθα ειδικά χαρακτηριστικά:
Το fiscalResponse της createDocument επιστρέφει τα πεδία fiscalisationDocumentNumber και fiscalisationDocumentRevision. Στην cancelDocument, ωστόσο, αυτά τα πεδία πρέπει να μεταβιβάζονται με
"fiscalDocumentNumber": 24,
"fiscalDocumentRevision": 1,
χωρίς το «isation»! Σημειώστε επίσης: Δεν έχει ξεκινήσει η συγκεκριμένη συναλλαγή
Παράδειγμα:
Το παρακάτω παράδειγμα παρουσιάζει μια απλή απόδειξη για τη Γερμανία (documentType = [0] = απόδειξη), η οποία αποστέλλεται στο τελικό σημείο POST /api/v1/transactions/cancelDocument.
{
"uniqueClientId": "c1062c55-57c4-4ed2-9c53-aff1762326a4",
"documentGuid": "7d4a7761-e9e9-4759-8591-ed147a581da4",
"documentId": "HAM01-00010329",
"documentNumber": "00010329",
"createDate": "2023-04-18T21:34:45",
"bookDate": "2023-04-18T21:34:46",
"cancellationDocument": false,
"isTraining": false,
"documentType": 0,
"user": {
"id": "1234",
"caption": "1234"
},
"fiscalDocumentNumber": 2853,
"fiscalDocumentStartTime": 1681803100,
"fiscalDocumentRevision": 1,
"Positions": [
{
"positionNumber": 0,
"netValue": 10.66,
"grossvalue": 12.90,
"taxValue": 2.24,
"quantity": 1,
"itemId": "1101202930050",
"itemCaption": "Pizza Margherita",
"cancellationPosition": "false",
"type": "0",
"businessTransactionType": 0,
"vatPercent": 19,
"vatIdentification": 1,
}
],
"Payments": [
{
"Amount": 12.90,
"paymentType": "cash",
"uniqueReadablePaymentIdentifier": "Cash",
"caption": "Bar+Euro",
"currencyIsoCode": "EUR"
}
]
}
Παράδειγμα ελάχιστων πληροφοριών για το cancelDocument:
{
"uniqueClientId": "c1062c55-57c4-4ed2-9c53-aff1762326a4",
"documentGuid": "{bdf8b5e9-5634-4c02-afad-543a7c480111}",
"documentId": "100001",
"documentNumber": "00002",
"createDate": "2022-12-22T10:06:03",
"bookDate": "2022-12-22T10:06:03",
"user": {
"id": "1234",
"caption": "1234"
},
"fiscalDocumentNumber": 2938,
"fiscalDocumentStartTime": "1671699962",
"fiscalDocumentRevision": 1
}
}
fiscalResponse
Το fiscalResponse για ένα cancelDocument πρέπει να αποθηκεύεται στη βάση δεδομένων του POS για λόγους αναφοράς.
Το fiscalResponse περιέχει:
- γενικές πληροφορίες
- πληροφορίες ειδικές για κάθε χώρα
Παράδειγμα fiscalResponse:
{
"fiscalCountry": "[0] = Germany",
"fiscalisationDocumentNumber": 52,
"fiscalisationDocumentRevision": 2,
"fiscalDocumentStartTime": 1674819139,
"processStartTime": 0,
"errorDescription": null,
"cashRegisterId": "00345-00345",
"signature": "pCeGi98gNNhshcGJkbw0DwtSzuJkaawON8l5QwsFDEaDHOyYK2aNVO4ZAlpkYYnub7oxM/2R1/KB36UzmOQwew==",
"userMessage": null,
"printMessage": "***Test***",
"requestTime": "2023-01-27T12:34:21.3088836+01:00",
"requestCompletionTime": "2023-01-27T12:34:22.4379009+01:00",
"AdditionalFields": {
"QrCodeDataString": "V0;00345-00345;Kassenbeleg-V1;Beleg^13.90_0.00_0.00_0.00_0.00^13.90:Unbar;52;197;2023-01-27T11:32:19.000Z;2023-01-27T11:34:20.000Z;ecdsa-plain-SHA256;unixTime;pCeGi98gNNhshcGJkbw0DwtSzuJkaawON8l5QwsFDEaDHOyYK2aNVO4ZAlpkYYnub7oxM/2R1/KB36UzmOQwew==;BNHckCuXF2fEktIp8qwtnMLLgvpJDX6wEOqFENlHXZpekBHxHniQh9gbigjWS9UbCwZSrOTJTMK7WiV5owAfXkk=",
"TransactionStartTime": 1674819139,
"TransactionEndTime": 1674819260,
"ProcessData": "Beleg^13.90_0.00_0.00_0.00_0.00^13.90:Unbar",
"ProcessType": "Kassenbeleg-V1",
"TseSerial": "e5f5836a57c50c526d4bed37f18823608f2f44e2c98cab73278a7676c5ea0885",
"TseTimeFormat": "unixTime",
"TseHashAlgorithm": "ecdsa-plain-SHA256",
"TsePublicKey": "BNHckCuXF2fEktIp8qwtnMLLgvpJDX6wEOqFENlHXZpekBHxHniQh9gbigjWS9UbCwZSrOTJTMK7WiV5owAfXkk=",
"TseSignatureCounter": 197,
"TseCertificate": "MIIB0jCCAVmgAwIBAgIhAOX1g2pXxQxSbUvtN/GII2CPL0TiyYyrcyeKdnbF6giFMAoGCCqGSM49BAMDMDExFTATBgNVBAoTDGZpc2thbHkgR21iSDEYMBYGA1UEAxMPZmlza2FseSBUZXN0IENBMB4XDTIyMTAzMDEyMjgzMloXDTIzMTAzMDEyMjgzMlowMjEVMBMGA1UEChMMZmlza2FseSBHbWJIMRkwFwYDVQQDExBmaXNrYWx5IFRlc3QgVFNFMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE0dyQK5cXZ8SS0inyrC2cwsuC+kkNfrAQ6oUQ2Uddml6QEfEeeJCH2BuKCNZL1RsLBlKs5MlMwrtaJXmjAB9eSaNBMD8wDgYDVR0PAQH/BAQDAgeAMAwGA1UdEwEB/wQCMAAwHwYDVR0jBBgwFoAUlllBymQBup6ldKGojZVpZtWG5tQwCgYIKoZIzj0EAwMDZwAwZAIwEFsoSON9cIBqA5d9vsGI2jSjDlZxHokDvJ4yBmayvigrDbdhMYe3hw3HyQbO2B/FAjBXSVNbYR6Wg2TVzL9BhCla+tewRDGcs6vnetJ4i3VRtya1+ejt+vRjWnb/RUyo0Uw="
}
}
Γενικές πληροφορίες
Αυτές βρίσκονται στην περιοχή της header του fiscalResponse.
Σημείωση:
- Το περιεχόμενο του πεδίου «fiscalisationDocumentNumber» πρέπει να αναγράφεται στο έγγραφο (DE).
- Το περιεχόμενο του πεδίου «PrintMessage» πρέπει να αναγράφεται στην απόδειξη.
Πληροφορίες ανά χώρα
Οι πληροφορίες για κάθε χώρα παρέχονται στην περιοχή «AdditionalFields» και περιλαμβάνουν στοιχεία που πρέπει να αναγράφονται στην απόδειξη (π.χ. κωδικός QR ή, εναλλακτικά, δεδομένα TSE στη Γερμανία).
Ανατρέξτε στα παραδείγματα εγγράφων της εκάστοτε χώρας.
Σημείωση: Εάν η τιμή «-1» επιστρέφεται στο fiscalResponse της εντολής cancelDocument στο πεδίο
"fiscalDocumentNumber": -1,
ο πελάτης έχει αναγνωρίσει το αντίστοιχο έγγραφο ως μη φορολογικό.
Απόκριση
Πιθανές απαντήσεις:
| Κωδικός | Περιγραφή | Παράδειγμα |
| 200 |
Το έγγραφο ακύρωσης μεταδόθηκε με επιτυχία και χωρίς σφάλματα και αποθηκεύτηκε στο documentStore. |
fiscalResponse |
| 404 |
Γερμανία: δεν ήταν δυνατή η εύρεση του καθορισμένου fiscalDocumentNumber. Η συναλλαγή με τον καθορισμένο fiscalDocumentNumber δεν έχει ακόμη δημιουργηθεί (ξεκινήσει). Αντιμετώπιση προβλημάτων:
|
- |
| 406 |
Ο τύπος του εγγράφου που μεταδόθηκε δεν υποστηρίζεται Αντιμετώπιση προβλημάτων:
|
- |
| 422 |
Το περιεχόμενο του εγγράφου είναι κενό ή λανθασμένο Αντιμετώπιση προβλημάτων:
|
- |
Αυτό το άρθρο μεταφράστηκε αυτόματα.
Σχόλια
0 σχόλια
Πραγματοποιήστε είσοδο για να αφήσετε ένα σχόλιο.