À l'aide de la méthode
- fonction POST /api/v1/transactions/cancelDocument
, l’annulation d’une transaction est transmise au service fiscal et y est enregistrée. Elle permet d’interrompre une transaction avant qu’elle ne soit finalisée. Par exemple :
- un client souhaite acheter des articles en magasin
- le caissier commence à scanner les articles (le TPV envoie une requête PUT /api/v1/transactions/createDocument)
- le client s'aperçoit qu'il a perdu son portefeuille et ne peut pas effectuer l'achat
- le caissier interrompt la transaction et supprime tous les articles scannés (le TPV envoie une requête POST /api/v1/transactions/cancelDocument pour clôturer la transaction qui avait été ouverte lors de l’utilisation de la requête PUT /api/v1/transactions/createDocument)
Résultat
Si le traitement aboutit (code 200), le client du service fiscal concerné répond par une « fiscalResponse » et enregistre l’abandon de la transaction.
Utilisation
- Chaque fois qu’un document est clôturé dans le système d’enregistrement électronique (caisse enregistreuse) par annulation.
Conditions préalables
-
L’appel de la méthode `cancelDocument` doit être précédé de l’appel du point de terminaison PUT /api/v1/transactions/createDocument
- Les données issues de la réponse de createDocument doivent être intégrées dans la structure JSON de cancelDocument. Voir la section suivante.
Processus de transmission
Comme décrit précédemment, une requête `cancelDocument` nécessite qu’une requête `createDocument` l’ait précédée. La réponse `fiscalResponse` de `createDocument` contient les champs suivants :
"fiscalisationDocumentNumber": 0,
"fiscalisationDocumentRevision": 0,
"fiscalDocumentStartTime": 0,
Les informations contenues dans ces champs doivent figurer dans la structure JSON transmise avec `cancelDocument`. Ces champs contiennent des valeurs générées par un matériel fiscal obligatoire (dispositif technique de sécurité « TSE » en Allemagne) et sont utilisées pour le chaînage des transactions.
Attention : veuillez noter les particularités suivantes :
La réponse « fiscalResponse » de la fonction « createDocument » renvoie les champs « fiscalisationDocumentNumber » et « fiscalisationDocumentRevision ». Dans la fonction « cancelDocument », ces champs doivent toutefois être transmis avec
"fiscalDocumentNumber": 24,
"fiscalDocumentRevision": 1,
sans le suffixe « -isation » ! Veuillez également noter : si la transaction n’a pas été initiée
Exemple :
L’exemple suivant présente un simple ticket de caisse pour l’Allemagne (documentType = [0] = ticket de caisse), qui est envoyé au point de terminaison 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"
}
]
}
Exemple d’informations minimales pour `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
La fiscalResponse d’une opération « cancelDocument » doit être enregistrée dans la base de données du point de vente à des fins de référence.
La fiscalResponse contient :
- des informations génériques
- des informations spécifiques au pays
Exemple 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="
}
}
Informations génériques
Celles-ci figurent dans l'en-tête de la « fiscalResponse ».
Remarque :
- Le contenu du champ « fiscalisationDocumentNumber » doit être imprimé sur le document (DE).
- Le contenu du champ « PrintMessage » doit figurer sur le reçu.
Informations spécifiques au pays
Les informations spécifiques à chaque pays sont fournies dans la zone « AdditionalFields » et contiennent des données devant être imprimées sur le ticket de caisse (par exemple, un code QR ou, en Allemagne, les données TSE).
Veuillez vous reporter aux exemples de documents du pays concerné.
Remarque : si la valeur « -1 » est renvoyée dans la fiscalResponse de la fonction « cancelDocument » dans le champ
"fiscalDocumentNumber": -1,
le client a identifié le document correspondant comme n’étant pas fiscal.
Réponse
Réponses possibles :
| Code | Description | Exemple |
| 200 |
Le document d'annulation a été transmis avec succès et sans erreur, puis enregistré dans le documentStore. |
fiscalResponse |
| 404 |
Allemagne : le fiscalDocumentNumber indiqué est introuvable. La transaction associée au fiscalDocumentNumber indiqué n’a pas encore été créée (lancée). Dépannage :
|
- |
| 406 |
Le type de document transmis n’est pas pris en charge Dépannage :
|
- |
| 422 |
Le contenu du document est vide ou incorrect Dépannage :
|
- |
Cet article a été traduit automatiquement.
Commentaires
0 commentaire
Vous devez vous connecter pour laisser un commentaire.