Ροές Εργασίας
Όλα εδώ χρησιμοποιούν ένα endpoint: POST /Documents/WRKCardSE. Η διαφορά
ανάμεσα στις ροές εργασίας είναι τι βάζετε στο σώμα του request, όχι το
endpoint. Αν δεν έχετε διαβάσει τις Βασικές Έννοιες, κάντε
το πρώτα — εξηγεί την προσέλευση/αποχώρηση, τις ημερομηνίες αναφοράς, και το
παράθυρο εμπρόθεσμης υποβολής στο οποίο αναφερόμαστε παρακάτω.
Όλα τα παραδείγματα προϋποθέτουν ότι έχετε ήδη ένα έγκυρο accessToken —
δείτε Αυθεντικοποίηση.
Προσέλευση
Τι θα κάνετε
Καταγράψτε ότι ένας εργαζόμενος έφτασε. Στείλτε μία εγγραφή CardDetails με
f_type: "0".
Request
curl -s -X POST \
"https://trialv2eservices.yeka.gr/WebservicesAPI/Api/Documents/WRKCardSE" \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"Cards": {
"Card": [
{
"f_afm_ergodoti": "094187530",
"f_aa": "0",
"f_comments": null,
"Details": {
"CardDetails": [
{
"f_afm": "028233026",
"f_eponymo": "ΚΑΠΟΙΟΣ",
"f_onoma": "ΛΑΜΠΡΟΣ",
"f_type": "0",
"f_reference_date": "2024-05-06",
"f_date": "2024-05-06T08:55:00+03:00",
"f_aitiologia": null
}
]
}
}
]
}
}'
await fetch('https://trialv2eservices.yeka.gr/WebservicesAPI/Api/Documents/WRKCardSE', {
method: 'POST',
headers: {
Authorization: `Bearer ${accessToken}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
Cards: {
Card: [
{
f_afm_ergodoti: '094187530',
f_aa: '0',
f_comments: null,
Details: {
CardDetails: [
{
f_afm: '028233026',
f_eponymo: 'ΚΑΠΟΙΟΣ',
f_onoma: 'ΛΑΜΠΡΟΣ',
f_type: '0',
f_reference_date: '2024-05-06',
f_date: '2024-05-06T08:55:00+03:00',
f_aitiologia: null,
},
],
},
},
],
},
}),
});
<?php
$payload = [
"Cards" => ["Card" => [[
"f_afm_ergodoti" => "094187530",
"f_aa" => "0",
"f_comments" => null,
"Details" => ["CardDetails" => [[
"f_afm" => "028233026",
"f_eponymo" => "ΚΑΠΟΙΟΣ",
"f_onoma" => "ΛΑΜΠΡΟΣ",
"f_type" => "0",
"f_reference_date" => "2024-05-06",
"f_date" => "2024-05-06T08:55:00+03:00",
"f_aitiologia" => null,
]]],
]]],
];
$ch = curl_init("https://trialv2eservices.yeka.gr/WebservicesAPI/Api/Documents/WRKCardSE");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"Authorization: Bearer $accessToken",
"Content-Type: application/json",
]);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($payload));
$result = json_decode(curl_exec($ch), true);
curl_close($ch);
Response
[{ "id": "101", "protocol": "ΕΥΣ101", "submitDate": "06/05/2024 08:55" }]
Τι μπορεί να πάει στραβά
Δείτε Διαχείριση Σφαλμάτων — η πιο συνηθισμένη αιτία σε αυτό
το βήμα είναι το f_afm_ergodoti να μην ταιριάζει με τον συνδεδεμένο
εργοδότη, ή το f_date να είναι περισσότερο από 15 λεπτά πριν τη στιγμή
υποβολής (δείτε
Εκπρόθεσμες & δικαιολογημένες υποβολές).
Επόμενο βήμα
Υποβάλετε την αντίστοιχη αποχώρηση στο τέλος της ημέρας.
Αποχώρηση
Τι θα κάνετε
Καταγράψτε ότι ο ίδιος εργαζόμενος έφυγε. Ίδια δομή με την προσέλευση, με
f_type: "1".
Request
Εμφανίζονται μόνο τα πεδία που αλλάζουν — όλα τα άλλα είναι τα ίδια με την προσέλευση.
{
"f_afm": "028233026",
"f_eponymo": "ΚΑΠΟΙΟΣ",
"f_onoma": "ΛΑΜΠΡΟΣ",
"f_type": "1",
"f_reference_date": "2024-05-06",
"f_date": "2024-05-06T17:02:00+03:00",
"f_aitiologia": null
}
Στείλτε αυτή την εγγραφή CardDetails μέσα στον ίδιο φάκελο
Cards.Card[].Details με την προσέλευση, με τα πραγματικά σας
f_afm_ergodoti και f_aa.
Response
[{ "id": "104", "protocol": "ΕΥΣ104", "submitDate": "06/05/2024 17:02" }]
Τι μπορεί να πάει στραβά
Μια αποχώρηση απορρίπτεται αν το f_reference_date δεν ταιριάζει με
υπάρχουσα προσέλευση για αυτόν τον εργαζόμενο, ή αν δεν τηρούνται οι κανόνες
ημερομηνίας/ώρας στην Αναφορά API Κάρτας Εργασίας
(π.χ. αποχώρηση νυχτερινής βάρδιας μετά τις 11:00 την επόμενη ημέρα).
Επόμενο βήμα
Αν ο εργαζόμενος έφυγε και επέστρεψε (διακεκομμένο ωράριο), δείτε Μαζικές υποβολές και Διακεκομμένα ωράρια. Αν υποβάλατε λάθος ώρα, δείτε Διορθώσεις.
Διορθώσεις
Τι θα κάνετε
Διορθώστε μια προσέλευση ή αποχώρηση που έχετε ήδη υποβάλει — χωρίς
endpoint επεξεργασίας ή διαγραφής. Υποβάλετε ένα νέο γεγονός του ίδιου
τύπου, για τον ίδιο εργαζόμενο και f_reference_date, με το διορθωμένο
f_date.
Το Εργάνη θεωρεί πάντα το πιο πρόσφατα υποβληθέν γεγονός ενός δεδομένου
f_type για ένα δεδομένο f_afm + f_reference_date ως έγκυρο. Η διόρθωσή
σας αντικαθιστά την προηγούμενη τιμή· η προηγούμενη υποβολή δεν διαγράφεται,
απλά παρακάμπτεται.
Request
Παράδειγμα: υποβάλατε προσέλευση στις 08:55 αλλά ο εργαζόμενος έφτασε
στην πραγματικότητα στις 08:47. Υποβάλετε ξανά:
{
"f_afm": "028233026",
"f_eponymo": "ΚΑΠΟΙΟΣ",
"f_onoma": "ΛΑΜΠΡΟΣ",
"f_type": "0",
"f_reference_date": "2024-05-06",
"f_date": "2024-05-06T08:47:00+03:00",
"f_aitiologia": null
}
Response
[{ "id": "102", "protocol": "ΕΥΣ102", "submitDate": "06/05/2024 09:10" }]
Νέο protocol — αυτή είναι μια ξεχωριστή, επιτυχημένη υποβολή. Το
Ημερολόγιο Πραγματικής Απασχόλησης θα δείξει πλέον 08:47 ως ώρα
προσέλευσης για αυτή την ημέρα.
Αν διορθώνετε μια προσέλευση από προηγούμενη ώρα της ημέρας, είναι πιθανό να
έχουν περάσει περισσότερα από 15 λεπτά από το f_date. Αυτό κάνει την
υποβολή εκπρόθεσμη — δείτε
Εκπρόθεσμες & δικαιολογημένες υποβολές.
Οι περισσότερες διορθώσεις προηγούμενων γεγονότων δεν μπορούν να
χρησιμοποιήσουν κωδικό αιτιολόγησης (οι κωδικοί 001–003 είναι μόνο για
ανωτέρα βία) — δείτε
Εκπρόθεσμη διόρθωση για το πώς να το
διαχειριστείτε με ειλικρίνεια.
Τι μπορεί να πάει στραβά
Όπως στην προσέλευση/αποχώρηση — δείτε Διαχείριση Σφαλμάτων.
Επόμενο βήμα
Αν αυτή η διόρθωση είναι η ίδια εκτός του παραθύρου 15 λεπτών, διαβάστε Εκπρόθεσμες & δικαιολογημένες υποβολές πριν την υποβάλετε.
Εκπρόθεσμες & δικαιολογημένες υποβολές
Τι θα κάνετε
Υποβάλετε ένα γεγονός περισσότερο από 15 λεπτά μετά την πραγματοποίησή του, με κωδικό αιτιολόγησης, όταν (και μόνο όταν) η καθυστέρηση προκλήθηκε από μία από τρεις περιπτώσεις ανωτέρας βίας.
Οι κωδικοί f_aitiologia 001–003 καλύπτουν διακοπές
ρεύματος/τηλεπικοινωνιών, βλάβες στα συστήματα του εργοδότη, και προβλήματα
σύνδεσης με τον Εργάνη — καταστάσεις εκτός του ελέγχου σας. Δεν
καλύπτουν "το ξεχάσαμε", "η συσκευή ήταν κλειστή", ή "κάνουμε batch
αποστολή μία φορά την ημέρα". Αν η καθυστέρησή σας δεν ταιριάζει με κανέναν
από τους τρεις κωδικούς, δείτε
Ο εργαζόμενος ξέχασε να κάνει αποχώρηση
για την ειλικρινή απάντηση.
Request
{
"f_afm": "028233026",
"f_eponymo": "ΚΑΠΟΙΟΣ",
"f_onoma": "ΛΑΜΠΡΟΣ",
"f_type": "1",
"f_reference_date": "2024-05-06",
"f_date": "2024-05-06T17:02:00+03:00",
"f_aitiologia": "003"
}
f_aitiologia | Χρήση όταν |
|---|---|
"001" | Διακοπή ρεύματος ή τηλεπικοινωνιών εμπόδισε την υποβολή. |
"002" | Μια βλάβη στα δικά σας συστήματα εμπόδισε την υποβολή. |
"003" | Το σύστημά σας δεν μπόρεσε να συνδεθεί με τον Εργάνη. |
Response
[{ "id": "105", "protocol": "ΕΥΣ105", "submitDate": "06/05/2024 18:30" }]
Το γεγονός καταγράφεται ως εκπρόθεσμο (Εμπρόθεσμη: Όχι) αλλά γίνεται δεκτό.
Τι μπορεί να πάει στραβά
Απόρριψη f_aitiologia → η τιμή δεν είναι μία από τις "001", "002",
"003", ή null.
Επόμενο βήμα
Σύμφωνα με το Άρθρο 2 της Υ.Α. 49758/31.05.2022, αν χρησιμοποιήσατε κωδικό αιτιολόγησης, πρέπει επίσης να έχετε ενημερώσει την αρμόδια Επιθεώρηση Εργασίας για τη διακοπή, τόσο όταν ξεκίνησε όσο και όταν τελείωσε — αυτή είναι μια νομική υποχρέωση ξεχωριστή από την κλήση του API.
Μαζικές υποβολές
Τι θα κάνετε
Υποβάλετε πολλαπλά γεγονότα προσέλευσης/αποχώρησης σε ένα request — πολλούς εργαζομένους, πολλά παραρτήματα, ή και τα δύο.
Πολλοί εργαζόμενοι, ίδιο παράρτημα
Προσθέστε περισσότερες εγγραφές στο CardDetails:
{
"Cards": {
"Card": [
{
"f_afm_ergodoti": "094187530",
"f_aa": "0",
"f_comments": null,
"Details": {
"CardDetails": [
{
"f_afm": "028233026",
"f_eponymo": "ΚΑΠΟΙΟΣ",
"f_onoma": "ΛΑΜΠΡΟΣ",
"f_type": "0",
"f_reference_date": "2024-05-06",
"f_date": "2024-05-06T08:55:00+03:00",
"f_aitiologia": null
},
{
"f_afm": "017453982",
"f_eponymo": "ΠΑΠΑΔΟΠΟΥΛΟΥ",
"f_onoma": "ΕΛΕΝΗ",
"f_type": "0",
"f_reference_date": "2024-05-06",
"f_date": "2024-05-06T08:59:00+03:00",
"f_aitiologia": null
}
]
}
}
]
}
}
Πολλά παραρτήματα
Προσθέστε περισσότερες εγγραφές στο Cards.Card, κάθε μία με δικό της
f_aa και CardDetails:
{
"Cards": {
"Card": [
{
"f_afm_ergodoti": "094187530",
"f_aa": "0",
"f_comments": null,
"Details": {
"CardDetails": [
/* γεγονότα παραρτήματος 0 */
]
}
},
{
"f_afm_ergodoti": "094187530",
"f_aa": "1",
"f_comments": null,
"Details": {
"CardDetails": [
/* γεγονότα παραρτήματος 1 */
]
}
}
]
}
}
Response
Μία εγγραφή απάντησης ανά υποβληθέν γεγονός, με την ίδια σειρά:
[
{ "id": "106", "protocol": "ΕΥΣ106", "submitDate": "06/05/2024 09:00" },
{ "id": "107", "protocol": "ΕΥΣ107", "submitDate": "06/05/2024 09:00" }
]
Τι μπορεί να πάει στραβά
Ένα 400 Bad Request για ένα μη έγκυρο γεγονός στο batch απορρίπτει όλο
το request — δεν υπάρχει μερική επιτυχία. Επικυρώστε κάθε γεγονός στην
πλευρά του πελάτη πριν την αποστολή (δείτε Γλωσσάρι
και Αναφορά API Κάρτας Εργασίας για τους κανόνες
πεδίων).
Επόμενο βήμα
Διαβάστε τον Οδηγό Παραγωγικής Χρήσης για batching, καταγραφή, και στρατηγική επανάληψης πριν στείλετε μαζικά requests σε παραγωγή.