Skip to content

Commit ed63548

Browse files
authored
Update README.md
1 parent b056959 commit ed63548

File tree

1 file changed

+30
-16
lines changed

1 file changed

+30
-16
lines changed

README.md

Lines changed: 30 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -72,22 +72,36 @@ GREEK VERSION
7272
2. Έπειτα ο χρήστης θα πρέπει να πατήσει το κουμπί «Αποστολή», ώστε να ξεκινήσει η διαδικασία εκτέλεσης του αλγορίθμου.
7373
3. Μετά το πάτημα του κουμπιού «Αποστολή», το πρόγραμμα ζητάει από τον χρήστη να πληκτρολογήσει το θέμα και το κυρίως κείμενο του e-mail που θα αποσταλεί.
7474
4. Αφού πληκτρολογήσει τα παραπάνω, τότε το πρόγραμμα θα εκτελέσει τον αλγόριθμο του, όπου λειτουργεί ως εξής:
75-
a. Το πρόγραμμα θα δημιουργήσει έναν φάκελο στον τοπικό δίσκο C: του συστήματος του χρήστη, με όνομα «temp_pdf_page_by_page».
76-
b. Έπειτα, θα διαβάσει το αρχείο PDF με τα τιμολόγια, και θα χωρίσει ανάλογα με τις σελίδες του, σε άλλα PDF με το όνομα «document-pagei.pdf», όπου i, ο αριθμός της σελίδας του αρχικού PDF. Δηλαδή για κάθε μια σελίδα του αρχείου PDF, θα δημιουργήσει ένα μονοσέλιδο αρχείο PDF μέσα στο παραπάνω φάκελο, με το παραπάνω όνομα.
77-
c. Αφού έχει χωρίσει το αρχικό αρχείο PDF σε πολλά μονοσέλιδα αρχεία PDF, τότε για κάθε μια σελίδα, για κάθε ένα μονοσέλιδο αρχείο PDF, θα δημιουργήσει αρχεία JPG, δηλαδή φωτογραφίες από το κάθε PDF.
78-
d. Αυτές τις φωτογραφίες θα τις ανατροφοδοτήσει στο σύστημα OCR που έχει ενσωματωθεί στο πρόγραμμα. Το οποίο θα δημιουργήσει μια λίστα για κάθε σελίδα του αρχείου PDF, με τα περιεχόμενα της σελίδας, δηλαδή τα «αντικείμενα» που έχει αποκωδικοποιήσει το OCR του προγράμματος.
79-
e. Αφού έχει δημιουργήσει μια λίστα η οποία περιέχει τόσες λίστες όσες οι σελίδες του αρχικού PDF μας, τότε το πρόγραμμα κάνει μια προσπάθεια να «ανοίξει» το αρχείο Excel (.xlsx).
80-
f. Αφού λοιπόν το πρόγραμμα έχει φορτώσει το αρχείο Excel (.xlsx), τότε διαβάζει και αποθηκεύει σε μια λίστα, όλα τα ΑΦΜ από την λίστα Q του Excel (.xlsx).
81-
g. Έπειτα, το πρόγραμμα κάνει πολλαπλούς ελέγχους με στόχο να βρει αν κάποιο από τα ΑΦΜ που έχει διαβάσει στο ακριβώς παραπάνω βήμα, αντιστοιχεί σε κάποιο από τα περιεχόμενα της λίστας που έχει εξάγει το OCR του προγράμματος.
82-
i. Αν υπάρχει κάποιο από τα ΑΦΜ της λίστας του βήματος f. στην λίστα που έχει εξάγει το OCR του προγράμματος, τότε δημιουργεί και προσθέτει δεδομένα σε 3 παράλληλες λίστες. Τα περιεχόμενα αυτών των λιστών θα είναι ως εξής. Η πρώτη λίστα περιέχει τα e-mail των πελατών. Η δεύτερη λίστα θα περιέχει τον αριθμό της σελίδας που θα πρέπει να στείλει το πρόγραμμα. Η τρίτη λίστα, θα περιέχει τα ΑΦΜ.
83-
ii. Αν δεν υπάρχει κάποιο από τα ΑΦΜ της λίστας του βήματος f. στην λίστα που έχει εξάγει το OCR, τότε το πρόγραμμα δεν προσθέτει δεδομένα σε καμία από τις 3 παράλληλες λίστες, και προχωράει στην επόμενη σύγκριση. Στην περίπτωση που δεν υπάρχουν άλλες συγκρίσεις να κάνει, δηλαδή έχει προσπελάσει όλα τα στοιχεία της λίστας των ΑΦΜ του βήματος f., τότε οι 3 παράλληλες λίστες μένουν κενές.
84-
h. Αφού έχουν δημιουργηθεί οι παράλληλες λίστες με τα δεδομένα σε μια σειρά, τότε το πρόγραμμα εκτελεί μια επανάληψη με αριθμό επαναλήψεων όσο και το πλήθος της λίστας που έχει καταχωρημένα τα e-mail των πελατών. Στην επανάληψη, το πρόγραμμα καλεί μια συνάρτηση, με όνομα «send_email», στην οποία θα περάσει τα δεδομένα μας, με την εξής σειρά, e-mail πελάτη, θέμα του e-mail, κυρίως κείμενο του e-mail, τοποθεσία του επισυναπτόμενου αρχείου. Το e-mail του πελάτη, υπάρχει στην 1η παράλληλη λίστα του προγράμματος (βλέπε βήμα g.). Το θέμα και το κυρίως κείμενο του e-mail, όπου το έχει πληκτρολογήσει το χρήστης του προγράμματος στα αρχικά βήματα. Η τοποθεσία του επισυναπτόμενου αρχείου, δημιουργείται από την προκαθορισμένη θέση της σελίδας του αρχείου PDF, (βλέπε βήμα b.) όπου στο «i», το πρόγραμμα θα βάλει τον αριθμό που βρίσκεται στην 2η παράλληλη λίστα (βλέπε βήμα g.) μειωμένο κατά μία μονάδα.
85-
i. Στην συνάρτηση «send_email», δημιουργείτε η απευθείας σύνδεση με τον SMTP Server της Microsoft, διότι το e-mail του αποστολέα είναι βασισμένο σε e-mail με κατάληξη «Hotmail». Αφού επιτευχθεί η σύνδεση με τον SMTP Server με τα κατάλληλα Credentials του αποστολέα, τότε γίνεται αποστολή των δεδομένων που θα πρέπει να αποσταλούν στον πελάτη, αυτά είναι, το θέμα του e-mail, το κυρίως κείμενο του e-mail, και σαν επισυναπτόμενο, η κατάλληλη σελίδα του τιμολογίου που αντιστοιχεί σε κάθε πελάτη.
86-
Στην περίπτωση που δεν καταφέρει να κάνει κάτι από τα παραπάνω, η αποστολή του e-mail στον πελάτη θεωρείται αποτυχημένη, και άρα θα δημιουργήσει και θα προσθέσει σε μια ανεξάρτητη λίστα, όλες τις τοποθεσίες των επισυναπτόμενων που δεν κατάφερε να η συνάρτηση να στείλει.
87-
j. Αφότου ολοκληρωθούν οι επαναλήψεις του βήματος h., τότε το πρόγραμμα θα αναζητήσει αν υπάρχουν περιεχόμενα στην λίστα που δημιουργεί η συνάρτηση «send_email» στην περίπτωση που δεν αποσταλεί κάποιο e-mail.
88-
i. Αν υπάρχουν περιεχόμενα στην λίστα αυτή, τότε το πρόγραμμα θα δημιουργήσει έναν φάκελο στον τοπικό δίσκο C: του συστήματος του χρήστη, με όνομα «INVOICES_NOT_SEND». Μέσα σε αυτόν τον φάκελο, θα δημιουργήσει ένα αρχείο κειμένου (.txt) όπου σαν περιεχόμενα θα έχει τα περιεχόμενα της λίστα που δημιουργεί η συνάρτηση «send_email» στην περίπτωση που δεν αποσταλεί κάποιο e-mail, δηλαδή, τις τοποθεσίες των επισυναπτόμενων που δεν κατάφερε το πρόγραμμα να στείλει.
89-
ii. Αν δεν υπάρχουν περιεχόμενα στην λίστα αυτή, τότε το πρόγραμμα δεν θα δημιουργήσει κανέναν φάκελο, και θα ολοκληρωθεί η λειτουργία του.
90-
k. Το πρόγραμμα αφότου εκτελέσει όλα τα παραπάνω βήματα, τότε θα επιστρέψει ένα μήνυμα επιτυχία στον χρήστη, όπου με την βοήθεια της γραφικής διεπαφής του χρήστη, θα εμφανιστεί το παραπάνω μήνυμα, σε ένα «πλαίσιο μηνυμάτων – πληροφοριών».
75+
76+
a. Το πρόγραμμα θα δημιουργήσει έναν φάκελο στον τοπικό δίσκο C: του συστήματος του χρήστη, με όνομα «temp_pdf_page_by_page».
77+
78+
b. Έπειτα, θα διαβάσει το αρχείο PDF με τα τιμολόγια, και θα χωρίσει ανάλογα με τις σελίδες του, σε άλλα PDF με το όνομα «document-pagei.pdf», όπου i, ο αριθμός της σελίδας του αρχικού PDF. Δηλαδή για κάθε μια σελίδα του αρχείου PDF, θα δημιουργήσει ένα μονοσέλιδο αρχείο PDF μέσα στο παραπάνω φάκελο, με το παραπάνω όνομα.
79+
80+
c. Αφού έχει χωρίσει το αρχικό αρχείο PDF σε πολλά μονοσέλιδα αρχεία PDF, τότε για κάθε μια σελίδα, για κάθε ένα μονοσέλιδο αρχείο PDF, θα δημιουργήσει αρχεία JPG, δηλαδή φωτογραφίες από το κάθε PDF.
81+
82+
d. Αυτές τις φωτογραφίες θα τις ανατροφοδοτήσει στο σύστημα OCR που έχει ενσωματωθεί στο πρόγραμμα. Το οποίο θα δημιουργήσει μια λίστα για κάθε σελίδα του αρχείου PDF, με τα περιεχόμενα της σελίδας, δηλαδή τα «αντικείμενα» που έχει αποκωδικοποιήσει το OCR του προγράμματος.
83+
84+
e. Αφού έχει δημιουργήσει μια λίστα η οποία περιέχει τόσες λίστες όσες οι σελίδες του αρχικού PDF μας, τότε το πρόγραμμα κάνει μια προσπάθεια να «ανοίξει» το αρχείο Excel (.xlsx).
85+
86+
f. Αφού λοιπόν το πρόγραμμα έχει φορτώσει το αρχείο Excel (.xlsx), τότε διαβάζει και αποθηκεύει σε μια λίστα, όλα τα ΑΦΜ από την λίστα Q του Excel (.xlsx).
87+
88+
g. Έπειτα, το πρόγραμμα κάνει πολλαπλούς ελέγχους με στόχο να βρει αν κάποιο από τα ΑΦΜ που έχει διαβάσει στο ακριβώς παραπάνω βήμα, αντιστοιχεί σε κάποιο από τα περιεχόμενα της λίστας που έχει εξάγει το OCR του προγράμματος.
89+
90+
i. Αν υπάρχει κάποιο από τα ΑΦΜ της λίστας του βήματος f. στην λίστα που έχει εξάγει το OCR του προγράμματος, τότε δημιουργεί και προσθέτει δεδομένα σε 3 παράλληλες λίστες. Τα περιεχόμενα αυτών των λιστών θα είναι ως εξής. Η πρώτη λίστα περιέχει τα e-mail των πελατών. Η δεύτερη λίστα θα περιέχει τον αριθμό της σελίδας που θα πρέπει να στείλει το πρόγραμμα. Η τρίτη λίστα, θα περιέχει τα ΑΦΜ.
91+
92+
ii. Αν δεν υπάρχει κάποιο από τα ΑΦΜ της λίστας του βήματος f. στην λίστα που έχει εξάγει το OCR, τότε το πρόγραμμα δεν προσθέτει δεδομένα σε καμία από τις 3 παράλληλες λίστες, και προχωράει στην επόμενη σύγκριση. Στην περίπτωση που δεν υπάρχουν άλλες συγκρίσεις να κάνει, δηλαδή έχει προσπελάσει όλα τα στοιχεία της λίστας των ΑΦΜ του βήματος f., τότε οι 3 παράλληλες λίστες μένουν κενές.
93+
94+
h. Αφού έχουν δημιουργηθεί οι παράλληλες λίστες με τα δεδομένα σε μια σειρά, τότε το πρόγραμμα εκτελεί μια επανάληψη με αριθμό επαναλήψεων όσο και το πλήθος της λίστας που έχει καταχωρημένα τα e-mail των πελατών. Στην επανάληψη, το πρόγραμμα καλεί μια συνάρτηση, με όνομα «send_email», στην οποία θα περάσει τα δεδομένα μας, με την εξής σειρά, e-mail πελάτη, θέμα του e-mail, κυρίως κείμενο του e-mail, τοποθεσία του επισυναπτόμενου αρχείου. Το e-mail του πελάτη, υπάρχει στην 1η παράλληλη λίστα του προγράμματος (βλέπε βήμα g.). Το θέμα και το κυρίως κείμενο του e-mail, όπου το έχει πληκτρολογήσει το χρήστης του προγράμματος στα αρχικά βήματα. Η τοποθεσία του επισυναπτόμενου αρχείου, δημιουργείται από την προκαθορισμένη θέση της σελίδας του αρχείου PDF, (βλέπε βήμα b.) όπου στο «i», το πρόγραμμα θα βάλει τον αριθμό που βρίσκεται στην 2η παράλληλη λίστα (βλέπε βήμα g.) μειωμένο κατά μία μονάδα.
95+
96+
i. Στην συνάρτηση «send_email», δημιουργείτε η απευθείας σύνδεση με τον SMTP Server της Microsoft, διότι το e-mail του αποστολέα είναι βασισμένο σε e-mail με κατάληξη «Hotmail». Αφού επιτευχθεί η σύνδεση με τον SMTP Server με τα κατάλληλα Credentials του αποστολέα, τότε γίνεται αποστολή των δεδομένων που θα πρέπει να αποσταλούν στον πελάτη, αυτά είναι, το θέμα του e-mail, το κυρίως κείμενο του e-mail, και σαν επισυναπτόμενο, η κατάλληλη σελίδα του τιμολογίου που αντιστοιχεί σε κάθε πελάτη. Στην περίπτωση που δεν καταφέρει να κάνει κάτι από τα παραπάνω, η αποστολή του e-mail στον πελάτη θεωρείται αποτυχημένη, και άρα θα δημιουργήσει και θα προσθέσει σε μια ανεξάρτητη λίστα, όλες τις τοποθεσίες των επισυναπτόμενων που δεν κατάφερε να η συνάρτηση να στείλει.
97+
98+
j. Αφότου ολοκληρωθούν οι επαναλήψεις του βήματος h., τότε το πρόγραμμα θα αναζητήσει αν υπάρχουν περιεχόμενα στην λίστα που δημιουργεί η συνάρτηση «send_email» στην περίπτωση που δεν αποσταλεί κάποιο e-mail.
99+
100+
i. Αν υπάρχουν περιεχόμενα στην λίστα αυτή, τότε το πρόγραμμα θα δημιουργήσει έναν φάκελο στον τοπικό δίσκο C: του συστήματος του χρήστη, με όνομα «INVOICES_NOT_SEND». Μέσα σε αυτόν τον φάκελο, θα δημιουργήσει ένα αρχείο κειμένου (.txt) όπου σαν περιεχόμενα θα έχει τα περιεχόμενα της λίστα που δημιουργεί η συνάρτηση «send_email» στην περίπτωση που δεν αποσταλεί κάποιο e-mail, δηλαδή, τις τοποθεσίες των επισυναπτόμενων που δεν κατάφερε το πρόγραμμα να στείλει.
101+
102+
ii. Αν δεν υπάρχουν περιεχόμενα στην λίστα αυτή, τότε το πρόγραμμα δεν θα δημιουργήσει κανέναν φάκελο, και θα ολοκληρωθεί η λειτουργία του.
103+
104+
k. Το πρόγραμμα αφότου εκτελέσει όλα τα παραπάνω βήματα, τότε θα επιστρέψει ένα μήνυμα επιτυχία στον χρήστη, όπου με την βοήθεια της γραφικής διεπαφής του χρήστη, θα εμφανιστεί το παραπάνω μήνυμα, σε ένα «πλαίσιο μηνυμάτων – πληροφοριών».
91105

92106
Γλώσσα προγραμματισμού : Python v.3.8.5
93107

0 commit comments

Comments
 (0)