Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

29 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Λήψη Παραστατικών myDATA

Μαζική λήψη παραστατικών myDATA (ΑΑΔΕ) για πολλούς πελάτες. Καλεί RequestDocs / RequestTransmittedDocs και για κάθε παραστατικό κατεβάζει το πραγματικό PDF από τον πάροχο. Δείχνει επίσης, μέσω RequestE3Info, ποια παραστατικά είναι αχαρακτήριστα.

Όλες οι αναλυτικές οδηγίες βρίσκονται εκεί. Το ίδιο εγχειρίδιο ανοίγει και μέσα από την εφαρμογή: μενού → Εγχειρίδιο PDF.


Εγκατάσταση

⬇ Κατεβάστε τον installer και τρέξτε τον. Δεν χρειάζεται Python ούτε δικαιώματα διαχειριστή — η εγκατάσταση γίνεται στον λογαριασμό του χρήστη, χωρίς UAC.

Ο installer ρωτά πώς θα χρησιμοποιηθεί ο υπολογιστής:

Ρόλος Φάκελος δεδομένων Πότε
Αυτόνομος Έγγραφα\Παραστατικά myDATA ένας υπολογιστής, χωρίς δίκτυο
Server τοπικός φάκελος, τον μοιράζεστε μετά το μηχάνημα που κρατά τη βάση
Τερματικό \\SERVER\ΚΟΙΝΟΧΡΗΣΤΟΣ οι υπόλοιποι του γραφείου

Για γραφείο με δίκτυο:

  1. Εγκατάσταση Server στο μηχάνημα που κρατά τα δεδομένα.
  2. Στην εφαρμογή: μενού → ΣΥΣΤΗΜΑ → Πίνακας ελέγχουΚοινή χρήση φακέλου…. Ρυθμίζει κοινή χρήση, δικαιώματα εγγραφής και τείχος προστασίας με ένα κλικ (με έγκριση διαχειριστή) και σας δίνει τη διαδρομή, έτοιμη για αντιγραφή.
  3. Εγκατάσταση Τερματικό στα υπόλοιπα, επικολλώντας αυτή τη διαδρομή δικτύου (\\ΟΝΟΜΑ-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.

CLI

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.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages