Cu ajutorul comenzii
- funcției POST /api/v1/transactions/cancelDocument
, anularea unei tranzacții este transmisă către serviciul fiscal și stocată acolo. Aceasta este utilizată pentru a renunța la o tranzacție înainte de finalizare. De exemplu:
- clientul dorește să cumpere câteva articole din magazin
- casierul începe să scaneze articolele (POS-ul trimite PUT /api/v1/transactions/createDocument)
- clientul observă că și-a pierdut portofelul și nu poate efectua achiziția
- casierul oprește tranzacția și șterge toate articolele scanate (POS-ul trimite POST /api/v1/transactions/cancelDocument pentru a închide tranzacția care a fost deschisă prin utilizarea comenzii PUT /api/v1/transactions/createDocument)
Rezultat
Dacă procesarea are succes (200), clientul serviciului fiscal respectiv răspunde cu un „fiscalResponse” și înregistrează abandonarea tranzacției.
Utilizare
- De fiecare dată când un document este închis în sistemul de înregistrare electronică (casă de marcat) prin anularea acestuia.
Condiții prealabile
-
cancelDocument trebuie să fie precedat de apelul către punctul final PUT /api/v1/transactions/createDocument
- Datele din răspunsul createDocument trebuie integrate în structura JSON a cancelDocument. Consultați secțiunea următoare.
Procesul de transmitere
După cum s-a descris, o cerere cancelDocument necesită o cerere createDocument prealabilă. Răspunsul fiscalResponse al createDocument conține următoarele câmpuri:
"fiscalisationDocumentNumber": 0,
"fiscalisationDocumentRevision": 0,
"fiscalDocumentStartTime": 0,
Informațiile din aceste câmpuri trebuie să fie incluse în structura JSON transmisă împreună cu comanda „cancelDocument”. Aceste câmpuri conțin valori generate de un dispozitiv hardware fiscal obligatoriu (dispozitiv tehnic de securitate „TSE” în Germania) și sunt utilizate pentru lanțul de tranzacții.
Atenție: Vă rugăm să țineți cont de următoarele caracteristici speciale:
FiscalResponse-ul funcției createDocument returnează câmpurile fiscalisationDocumentNumber și fiscalisationDocumentRevision. În cazul funcției cancelDocument, însă, aceste câmpuri trebuie transmise cu
"fiscalDocumentNumber": 24,
"fiscalDocumentRevision": 1,
fără „isation”! Vă rugăm să rețineți, de asemenea: Tranzacția respectivă nu a fost inițiată
Exemplu:
Următorul exemplu prezintă o chitanță simplă pentru Germania (documentType = [0] = chitanță), care este trimisă la punctul final 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"
}
]
}
Exemplu de informații minime pentru `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 pentru un cancelDocument trebuie stocat în baza de date POS în scopuri de referință.
fiscalResponse conține:
- informații generice
- informații specifice fiecărei țări
Exemplu de 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="
}
}
Informații generice
Acestea se găsesc în zona header-ului fiscalResponse.
Vă rugăm să rețineți:
- Conținutul câmpului „fiscalisationDocumentNumber” trebuie tipărit pe document (DE).
- Conținutul câmpului „PrintMessage” trebuie tipărit pe chitanță.
Informații specifice fiecărei țări
Informațiile specifice fiecărei țări sunt furnizate în zona „AdditionalFields” și conțin informații care trebuie tipărite pe chitanță. (de exemplu, codul QR sau, alternativ, datele TSE în Germania).
Vă rugăm să consultați exemplele de documente ale țării respective.
Notă: Dacă valoarea „-1” este returnată în fiscalResponse al metodei cancelDocument în câmpul
"fiscalDocumentNumber": -1,
clientul a recunoscut documentul corespunzător ca fiind nefiscal.
Răspuns
Răspunsuri posibile:
| Cod | Descriere | Exemplu |
| 200 |
Documentul de anulare a fost transmis cu succes și fără erori și a fost salvat în documentStore. |
fiscalResponse |
| 404 |
Germania: nu s-a găsit fiscalDocumentNumber-ul specificat. Tranzacția cu fiscalDocumentNumber-ul specificat nu a fost încă creată (inițiată). Depanare:
|
- |
| 406 |
Tipul de document transmis nu este acceptat Depanare:
|
- |
| 422 |
Conținutul documentului este gol sau incorect Depanare:
|
- |
Acest articol a fost tradus automat.
Comentarii
0 comentarii
Vă rugăm să vă autentificați pentru a lăsa un comentariu.