Πίσω στο Portfolio

SoftOne Integration

Ολοκληρωμένη αρχιτεκτονική διασύνδεσης SoftOne ERP με PrestaShop 8, διαγνωστικός server Node.js, τοπική μνήμη cache με SQLite database partitioning και αυτόματος συγχρονισμός 77.000+ κωδικών χωρίς timeouts.

Κατηγορία
System Development
Πελάτης
Enterprise E-Commerce & B2B Infrastructure
Έτος
2025 - 2026
Διάρκεια
8 εβδομάδες
Ρόλος
Lead Systems & ERP Integration Architect
SoftOne Integration

Η πρόκληση

Οι απευθείας κλήσεις προς το SoftOne ERP κατά την πλοήγηση των χρηστών σε ηλεκτρονικό κατάστημα με εκτεταμένο κατάλογο (άνω των 77.000 κωδικών προϊόντων) προκαλούν σοβαρές καθυστερήσεις, σφάλματα gateway timeout και περιορισμούς rate limiting. Παράλληλα, η χρήση ενιαίας τοπικής βάσης δεδομένων κατά τις μαζικές ενημερώσεις αποθέματος προκαλεί εμπλοκές εγγραφής (database write-locks), παγώνοντας την αναζήτηση πελατών και την καταχώρηση παραγγελιών στο ταμείο.

Επιπλέον, η ετερογένεια των καναλιών πώλησης (παραγγελίες λιανικής e-shop, τιμολόγια B2B με έλεγχο ΑΦΜ, παραγγελίες Skroutz, αντικαταβολές ACS/ΕΛΤΑ και παραλαβές από το κατάστημα) απαιτεί αυστηρή λογιστική αντιστοίχιση σειρών παραστατικών, τρόπων πληρωμής και εξόδων αποστολής χωρίς ανθρώπινη παρέμβαση.

Τι φτιάχτηκε

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

Διαδραστικός διαγνωστικός server Node.js για έλεγχο κλήσεων SoftOne ERP API Ο διαδραστικός διαγνωστικός 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)

Διαχωρισμός βάσεων δεδομένων SQLite σε erp_products.db και erp_customers.db Database Partitioning Inspector: Ανεξάρτητες βάσεις SQLite (erp_products.db & erp_customers.db) για μηδενικά database locks μεταξύ ενημερώσεων αποθέματος και checkout. Τερματικό εκτέλεσης Chunked Delta Sync και Full Catalog Browser Sync για 77.420 προϊόντα Background Sync Workers: Εκτέλεση του safe_product_sync.js (κατάτμηση ανά ημέρα) και του pull_products_full.js (σελιδοποίηση 200 ειδών ανά παρτίδα για 77.420 SKUs). Επιθεωρητής υποβολής παραγγελίας SALDOC και κανόνων δρομολόγησης Skroutz και B2B στο SoftOne ERP SALDOC Write-Back Inspector: Δομή του JSON payload (SALDOC, ITELINES, EXPANAL) και πίνακας λογιστικής αντιστοίχισης καναλιών, πληρωμών και μεταφορικών. Αυτοματοποιημένη εξαγωγή καταλόγου προϊόντων SoftOne ERP σε Excel μέσω Python openpyxl Python OpenPyXL Compiler: Αυτόματη παραγωγή του αρχείου products_sync_delta.xlsx με υπολογισμό διαθέσιμου αποθέματος (BALANCE - RESERVED) και zebra striping. Πίνακας ρυθμίσεων σύνδεσης SoftOne ERP στο PrestaShop 8 Back Office PrestaShop 8 Module (Μέρος 1): Διαχείριση παραμέτρων σύνδεσης SoftOne Web Services, ελέγχου πιστοποιητικού SSL και λειτουργίας καταγραφής Debug. Διαχείριση Cron Jobs δύο βημάτων και Debug Log στο PrestaShop 8 ERP Integration module PrestaShop 8 Module (Μέρος 2): Παρακολούθηση συγχρονισμού δύο βημάτων, προστατευμένα Cron URLs και πίνακας ιστορικού κλήσεων (erp_logs). Αρχιτεκτονικό διάγραμμα διασύνδεσης SoftOne ERP, SQLite Middleware και PrestaShop 8 Συνολική αρχιτεκτονική του συστήματος και των developer blueprints (Node.js, SQLite, Python openpyxl, Postman Collections, PrestaShop 8).

Κινητές Συσκευές (Mobile Responsive Views)

Προβολή του SoftOne Modular Diagnostics Server σε κινητή συσκευή Responsive προβολή του διαγνωστικού πίνακα ελέγχου σε smartphone για άμεσο έλεγχο διαθεσιμότητας του ERP gateway. Διαχείριση συγχρονισμού PrestaShop και SoftOne ERP από κινητό τηλέφωνο 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(), αποτρέποντας μη εξουσιοδοτημένες εκτελέσεις.

Η λύση

Σχεδιάστηκε μια πολυεπίπεδη αρχιτεκτονική που συνδυάζει: (1) Database Partitioning μέσω native node:sqlite σε ξεχωριστές βάσεις erp_products.db και erp_customers.db για εξάλειψη των κλειδωμάτων εγγραφής, (2) Chunked Delta Sync και Paginated ITEM Browser workers που συγχρονίζουν 77.000+ κωδικούς σε ελεγχόμενα τμήματα χωρίς gateway timeouts, και (3) έναν διαδραστικό Node.js Diagnostic Server για live έλεγχο όλων των κλήσεων s1services.

Για την παραγωγική λειτουργία στο PrestaShop 8, αναπτύχθηκε custom module με staging πίνακες (ps_erp_tmp_product_stock), προστατευμένα Cron jobs δύο φάσεων και αυτόματο SALDOC order write-back που διαχειρίζεται δυναμικά παραγγελίες λιανικής, τιμολόγια B2B και παραγγελίες Skroutz.

Το αποτέλεσμα

Η πλατφόρμα ηλεκτρονικού εμπορίου συγχρονίζει πλέον πάνω από 77.000 κωδικούς προϊόντων και 14.800 καρτέλες πελατών με μηδενικά σφάλματα timeout και χωρίς καμία επιβάρυνση στην ταχύτητα πλοήγησης των επισκεπτών. Οι παραγγελίες από το e-shop και το Skroutz καταχωρούνται αυτόματα στο SoftOne ERP σε πραγματικό χρόνο, εξαλείφοντας πλήρως τη χειροκίνητη διπλοεγγραφή παραστατικών.

Γκαλερί