Μαζική λήψη παραστατικών myDATA (ΑΑΔΕ) για πολλούς πελάτες. Καλεί
RequestDocs / RequestTransmittedDocs και για κάθε παραστατικό κατεβάζει το
πραγματικό PDF από τον πάροχο. Δείχνει επίσης, μέσω RequestE3Info, ποια
παραστατικά είναι αχαρακτήριστα.
Όλες οι αναλυτικές οδηγίες βρίσκονται εκεί. Το ίδιο εγχειρίδιο ανοίγει και μέσα από την εφαρμογή: μενού → Εγχειρίδιο PDF.
⬇ Κατεβάστε τον installer και τρέξτε τον. Δεν χρειάζεται Python ούτε δικαιώματα διαχειριστή — η εγκατάσταση γίνεται στον λογαριασμό του χρήστη, χωρίς UAC.
Ο installer ρωτά πώς θα χρησιμοποιηθεί ο υπολογιστής:
| Ρόλος | Φάκελος δεδομένων | Πότε |
|---|---|---|
| Αυτόνομος | Έγγραφα\Παραστατικά myDATA |
ένας υπολογιστής, χωρίς δίκτυο |
| Server | τοπικός φάκελος, τον μοιράζεστε μετά | το μηχάνημα που κρατά τη βάση |
| Τερματικό | \\SERVER\ΚΟΙΝΟΧΡΗΣΤΟΣ |
οι υπόλοιποι του γραφείου |
Για γραφείο με δίκτυο:
- Εγκατάσταση Server στο μηχάνημα που κρατά τα δεδομένα.
- Στην εφαρμογή: μενού → ΣΥΣΤΗΜΑ → Πίνακας ελέγχου → Κοινή χρήση φακέλου…. Ρυθμίζει κοινή χρήση, δικαιώματα εγγραφής και τείχος προστασίας με ένα κλικ (με έγκριση διαχειριστή) και σας δίνει τη διαδρομή, έτοιμη για αντιγραφή.
- Εγκατάσταση Τερματικό στα υπόλοιπα, επικολλώντας αυτή τη διαδρομή δικτύου
(
\\ΟΝΟΜΑ-SERVER\ΚΟΙΝΟΧΡΗΣΤΟΣ) — όχι γράμμα δίσκου.
Ορίστε κύριο κωδικό πριν μοιράσετε τον φάκελο: χωρίς αυτόν, όποιος φτάνει στον φάκελο παίρνει μαζί και το κλειδί κρυπτογράφησης.
Μόνο ένας υπολογιστής κατεβάζει κάθε φορά. Αν πατήσετε «Λήψη» ενώ τρέχει ήδη αλλού, θα δείτε ποιος την τρέχει. Η προβολή, η ανάλυση και οι αναφορές δουλεύουν κανονικά ταυτόχρονα από όλους.
Στον server επιλέξτε «Εκκίνηση μαζεμένη στο tray»: η εφαρμογή μένει ανοιχτή δίπλα στο ρολόι και το ✕ τη μαζεύει αντί να την κλείνει. Ο Πίνακας ελέγχου (μενού → ΣΥΣΤΗΜΑ) δείχνει ποιοι υπολογιστές είναι συνδεδεμένοι, αν τρέχει λήψη και από ποιον, και ελέγχει τη σύνδεση με τη βάση βήμα προς βήμα. Στα τερματικά ο έλεγχος γίνεται και αυτόματα στην εκκίνηση.
Για μαζική εγκατάσταση σε πολλά μηχανήματα:
setup.exe /VERYSILENT /ROLE=server /TRAY=1
setup.exe /VERYSILENT /ROLE=terminal /DATADIR="\\SERVER\Παραστατικά myDATA"
Στην πρώτη εκκίνηση η εφαρμογή ανοίγει με φανταστικά δεδομένα επίδειξης και την ξενάγηση. Μόλις ολοκληρώσετε την ξενάγηση, τα δείγματα διαγράφονται και βάζετε τους δικούς σας πελάτες.
- Πελάτες — ένας-ένας (το ΑΦΜ φέρνει μόνο του την επωνυμία) ή μαζική εισαγωγή από τα Excel της ΑΑΔΕ.
- Λήψη — περίοδος με ένα κλικ, έσοδα/έξοδα ξεχωριστά, συνέχεια από εκεί που έμεινε. Το δεύτερο τρέξιμο δεν ξανακατεβάζει τίποτα.
- Παραστατικά — συνδυαστικά φίλτρα, άνοιγμα του PDF, εξαγωγή σε ZIP/CSV.
- Ανάλυση — έσοδα/έξοδα, χαρακτηρισμός, κενά ημερομηνιών με κουμπί «Λήψη κενού», κορυφαίοι προμηθευτές.
- Ασφάλεια — αυτόματα αντίγραφα βάσης πριν από κάθε επικίνδυνη ενέργεια.
Τα αρχεία αποθηκεύονται ως
<φάκελος>\data\<ΑΦΜ>\<έτος>\<μήνας>\ΠΡΟΜΗΘΕΥΤΗΣ_ΑΦΜ_ΗΜΕΡΟΜΗΝΙΑ_ΣΕΙΡΑ_ΑΑ_ΑΞΙΑ.pdf.
Κατά την απεγκατάσταση ερωτάστε ξεχωριστά αν θέλετε να διαγραφούν και τα
δεδομένα (δύο επιβεβαιώσεις, προεπιλογή «Όχι»). Σε ρόλο Τερματικό η ερώτηση
δεν εμφανίζεται ποτέ — ο φάκελος ανήκει στον server.
- Τα credentials αποθηκεύονται κρυπτογραφημένα (Fernet: AES-128-CBC +
HMAC-SHA256). Το κλειδί είναι μοναδικό ανά εγκατάσταση — παράγεται τυχαία
την πρώτη φορά και ζει στο
.enckeyδίπλα στη βάση. Αν χαθεί, ξανακάντε import το Excel. - Προαιρετικός κύριος κωδικός (μενού → Κύριος κωδικός): το κλειδί
αποθηκεύεται τυλιγμένο με κλειδί παραγόμενο μέσω Argon2id (64 MiB,
3 περάσματα· scrypt όπου δεν υποστηρίζεται) και δεν υπάρχει σε αναγνώσιμη
μορφή στον δίσκο. Αντίγραφο του φακέλου χωρίς τον κωδικό δεν αποδίδει τίποτα.
Δεν υπάρχει ανάκτηση. Για headless χρήση:
TIMOLOGIO_MASTER_PASSWORD. - Τα διαπιστευτήρια ΑΑΔΕ στέλνονται μόνο στο
mydatapi.aade.gr. Τα URL των παρόχων κατεβαίνουν από ξεχωριστό session χωρίς auth headers. - Τα logs περνούν από φίλτρο που κόβει κλειδιά.
uv run --extra gui python -m timologio.gui # το GUI
uv run --group dev pytest tests/ -q # tests
powershell -ExecutionPolicy Bypass -File installer\build.ps1 # exe + installerΤο build χρειάζεται Inno Setup
(winget install JRSoftware.InnoSetup) και παράγει
dist\installer\TimologioDownloader-<έκδοση>-setup.exe.
uv run timologio import "Κωδικοί_Υπόχρεων.xlsx" --dry-run
uv run timologio sync --date-from 01/01/2026 --date-to 31/12/2026
uv run timologio names # συμπλήρωση επωνυμιών από VIES
uv run timologio rename # μετονομασία στο τρέχον σχήμα
uv run timologio report missing-keys
uv run timologio backup --listΟ φάκελος δεδομένων παρακάμπτεται με TIMOLOGIO_DATA_DIR. Τα tests που θέλουν
πραγματικά δείγματα Excel παρακάμπτονται εκτός αν οριστεί TIMOLOGIO_SAMPLE_DIR.
Το /pdf είναι υποχρεωτικό. Το επίσημο myDATA API Documentation v2.0.2
(σελ. 31) λέει ότι το downloadingInvoiceUrl χωρίς παράμετρο επιστρέφει PDF.
Δεν ισχύει: δοκιμασμένα, πάροχοι επιστρέφουν HTML σελίδα προβολής. Η
εφαρμογή προσθέτει πάντα /pdf και επαληθεύει τα magic bytes %PDF.
Η απουσία εγγραφής E3 δεν σημαίνει αχαρακτήριστο — σημαίνει ότι το
παραστατικό δεν υπόκειται σε χαρακτηρισμό εξόδων. Το «αχαρακτήριστο» το λέει
ρητά η ΑΑΔΕ με V_Class_Category = «ΜΗ ΧΑΡΑΚΤΗΡΙΣΜΕΝΑ ΕΞΟΔΑ».
Τα Excel της ΑΑΔΕ σπάνε το openpyxl («could not read stylesheet»), γι' αυτό τα διαβάζουμε ξεζιπάροντας το xlsx και παρσάροντας το sheet XML.
Σε δικτυακό φάκελο η βάση γυρίζει σε journal_mode=TRUNCATE. Το WAL απαιτεί
shared memory που δεν λειτουργεί πάνω από SMB — η SQLite το τεκμηριώνει ρητά και
το αποτέλεσμα είναι φθορά βάσης, όχι απλώς αργή λειτουργία.
Δείτε το LICENSE.