Το SoftOne Integration είναι μια ολοκληρωμένη σουίτα αρχιτεκτονικών διασύνδεσης, διαγνωστικών εργαλείων Node.js, τοπικών SQLite caches και ενός εξειδικευμένου PrestaShop 8 module που αυτοματοποιεί τον αμφίδρομο συγχρονισμό αποθέματος, τιμών, πελατών και παραγγελιών με το SoftOne ERP (s1services REST API) για ηλεκτρονικά καταστήματα με πάνω από 77.000 κωδικούς.

Ο διαδραστικός διαγνωστικός server (server.js) για ζωντανό έλεγχο αυθεντικοποίησης, συγχρονισμού ειδών και υποβολής παραγγελιών SALDOC.
Αρχιτεκτονική Μηδενικής Καθυστέρησης & Αποφυγής Timeouts
Σε εμπορικές επιχειρήσεις με δεκάδες χιλιάδες κωδικούς ανταλλακτικών ή εμπορευμάτων, η απευθείας ανάγνωση από το web service του ERP κατά την πλοήγηση των επισκεπτών οδηγεί αναπόφευκτα σε καθυστερήσεις και gateway timeouts. Η αρχιτεκτονική του έργου αποδεσμεύει πλήρως την εμπειρία του χρήστη από την ταχύτητα απόκρισης του ERP, εισάγοντας ανεξάρτητους background synchronizers, διαχωρισμένες τοπικές βάσεις δεδομένων node:sqlite και staging πίνακες στο PrestaShop.
Κύρια Υποσυστήματα & Δυνατότητες
- Interactive Node.js Diagnostic Server (
server.js): Ενσωματωμένο web dashboard που εκτελεί μεμονωμένα ή μαζικά (Run All) 6 διαγνωστικά σενάρια: αυθεντικοποίηση δύο βημάτων (login και authenticate), λήψη μητρώου κατασκευαστών (getMtrManfctr), ημερήσιο delta sync προϊόντων (getProductUpdates), ανάκτηση πελατών (CUSTOMER browser) και ασφαλή εγγραφή δοκιμαστικών παραγγελιών (SALDOC) αξίας 0,01 €.
- Database Partitioning με Native SQLite (
node:sqlite): Πλήρης φυσικός διαχωρισμός της τοπικής μνήμης cache σε δύο ανεξάρτητα αρχεία βάσης δεδομένων: erp_products.db για τον κατάλογο προϊόντων και erp_customers.db για το πελατολόγιο. Έτσι, οι βαριές εγγραφές χιλιάδων ειδών δεν κλειδώνουν ποτέ τις αναζητήσεις πελατών ή ΑΦΜ κατά την ολοκλήρωση της παραγγελίας (Zero Write-Lock Contention).
- Chunked Delta Sync & Paginated Browser Workers: Το
safe_product_sync.js κατακερματίζει τα ερωτήματα ενημέρωσης προϊόντων σε ασφαλή χρονικά παράθυρα (π.χ. blocks 1 ημέρας), συγκρίνοντας το UPDDATE κάθε είδους και υπολογίζοντας το πραγματικό διαθέσιμο απόθεμα (BALANCE - RESERVED). Παράλληλα, το pull_products_full.js αξιοποιεί τα getBrowserInfo και getBrowserData του αντικειμένου ITEM σε σελίδες των 200 εγγραφών για πλήρη αρχικό συγχρονισμό 77.000+ κωδικών χωρίς χρονικά όρια.
- PrestaShop 8 ERP Integration Module (
erpintegration.php): Πλήρες πρόσθετο διαχείρισης στο Back Office του PrestaShop με staging πίνακες (ps_erp_tmp_product_stock, ps_erp_tmp_manufacturers), ασφαλή Cron endpoints προστατευμένα με hash_equals token, αυτόματη ενημέρωση 500 κωδικών ανά εκτέλεση και ενσωματωμένο Debug Log (erp_logs) με αυτόματη εκκαθάριση 7 ημερών.
- Πολυκαναλική Δρομολόγηση Παραγγελιών (SALDOC Write-Back): Μέσω του hook
actionOrderStatusPostUpdate, το module αναγνωρίζει αυτόματα αν η παραγγελία προέρχεται από το e-shop ή το Skroutz (μέσω skroutzpayment, carrier reference 132 ή αριθμητικού reference), ελέγχει αν πρόκειται για απόδειξη λιανικής (b2cr) ή τιμολόγιο B2B (b2cw με αναζήτηση CUSTOMER.AFM), αντιστοιχίζει τους τρόπους πληρωμής (Κάρτα Stripe/Modirum 1007, Αντικαταβολή 1006, Κατάθεση 1002, Skroutz 1005) και τους κωδικούς μεταφορικών (ACS 106, ΕΛΤΑ 111, Πρακτορείο 103, Παραλαβή από κατάστημα 101 με πρόθεμα ΠΑΓΚΟ -) και καταχωρεί τις γραμμές ειδών (ITELINES) και εξόδων (EXPANAL).
- Αυτοματοποιημένοι Excel Compilers (Python &
openpyxl): Τα σενάρια convert_products_to_excel.py και convert_customers_to_excel.py μετατρέπουν αυτόματα τα δεδομένα των SQLite caches σε επαγγελματικά φύλλα εργασίας .xlsx με μορφοποίηση κεφαλίδων, εναλλασσόμενες γραμμές (zebra striping), γραμματοσειρά Consolas για κωδικούς MTRL/SKU και αυτόματη προσαρμογή πλάτους στηλών.
Οι οθόνες της εφαρμογής σε desktop και mobile
Σημείωση προστασίας δεδομένων: Όλες οι οθόνες, οι κωδικοί παραγγελιών, τα ΑΦΜ και τα στοιχεία πελατών που απεικονίζονται παρακάτω αποτελούν συνθετικά / δοκιμαστικά δεδομένα.
Επιφάνεια Εργασίας (Desktop Screens)

Database Partitioning Inspector: Ανεξάρτητες βάσεις SQLite (erp_products.db & erp_customers.db) για μηδενικά database locks μεταξύ ενημερώσεων αποθέματος και checkout.

Background Sync Workers: Εκτέλεση του safe_product_sync.js (κατάτμηση ανά ημέρα) και του pull_products_full.js (σελιδοποίηση 200 ειδών ανά παρτίδα για 77.420 SKUs).

SALDOC Write-Back Inspector: Δομή του JSON payload (SALDOC, ITELINES, EXPANAL) και πίνακας λογιστικής αντιστοίχισης καναλιών, πληρωμών και μεταφορικών.

Python OpenPyXL Compiler: Αυτόματη παραγωγή του αρχείου products_sync_delta.xlsx με υπολογισμό διαθέσιμου αποθέματος (BALANCE - RESERVED) και zebra striping.

PrestaShop 8 Module (Μέρος 1): Διαχείριση παραμέτρων σύνδεσης SoftOne Web Services, ελέγχου πιστοποιητικού SSL και λειτουργίας καταγραφής Debug.

PrestaShop 8 Module (Μέρος 2): Παρακολούθηση συγχρονισμού δύο βημάτων, προστατευμένα Cron URLs και πίνακας ιστορικού κλήσεων (erp_logs).

Συνολική αρχιτεκτονική του συστήματος και των developer blueprints (Node.js, SQLite, Python openpyxl, Postman Collections, PrestaShop 8).
Κινητές Συσκευές (Mobile Responsive Views)

Responsive προβολή του διαγνωστικού πίνακα ελέγχου σε smartphone για άμεσο έλεγχο διαθεσιμότητας του ERP gateway.

Mobile προβολή της κατάστασης συγχρονισμού και των χειροκίνητων ενεργειών λήψης/εισαγωγής προϊόντων στο PrestaShop Back Office.
Στο παρασκήνιο (Τεχνική Αρχιτεκτονική)
- Διαχείριση Κωδικοποίησης Ελληνικών Χαρακτήρων: Επειδή το SoftOne Web Services επιστρέφει απαντήσεις κωδικοποιημένες σε
ISO-8859-7, ο Node.js server χρησιμοποιεί ArrayBuffer σε συνδυασμό με new TextDecoder('iso-8859-7'), ενώ το PHP module εφαρμόζει mb_convert_encoding($response, 'UTF-8', 'iso-8859-7') και iconv("UTF-8", "UTF-8//TRANSLIT", ...), εξασφαλίζοντας αλάνθαστη μεταφορά ελληνικών επωνυμιών και περιγραφών.
- In-Memory Session Caching: Ο διαγνωστικός server αποθηκεύει στη μνήμη το
cachedClientID που προκύπτει από την αλυσίδα login → authenticate, αποφεύγοντας περιττά handshakes σε διαδοχικά ερωτήματα.
- Idempotent Πίνακες Αντιστοίχισης (Mapping Tables): Το PrestaShop module δημιουργεί αυτόματα τους πίνακες
erp_settings, erp_product_map, erp_customer_map, erp_order_map, erp_logs, ps_erp_tmp_manufacturers και ps_erp_tmp_product_stock, διασφαλίζοντας ότι καμία παραγγελία ή καρτέλα πελάτη δεν καταχωρείται διπλή στο ERP.
- Ασφάλεια Cron Endpoints: Τα scripts
erpintegration-getProductsByDateFromErp-cron.php και erpintegration-importProductsToEshopFromTmpTable-cron.php επαληθεύουν το κρυπτογραφημένο token σε σταθερό χρόνο μέσω της συνάρτησης hash_equals(), αποτρέποντας μη εξουσιοδοτημένες εκτελέσεις.