Repascentrum
Repascentrum: e-shop s katalógom TecDoc napojený obojsmerne na ERP
- 126 123
- dielov v katalógu z TecDoc
- 51 229
- vozidiel, ku ktorým sa dá diel dohľadať
- 16 500
- položiek katalógu v synchronizácii s ERP
- 631 → 0
- nefunkčných 301 presmerovaní po migrácii
Repascentrum riadi sklad, ceny aj objednávky v ERP systéme APSi, e-shop bol od neho odrezaný a diely sa nedali hľadať podľa auta. Postavili sme WooCommerce na Bedrocku s obojsmernou synchronizáciou do ERP a vlastné katalógové API nad dátami TecDoc, takže zákazník nájde diel podľa vozidla, OE alebo EAN čísla.
Ako je to zapojené
- WordPress
- Bedrock
- WooCommerce
- APSi ERP
- Laravel 13
- TecDoc TAF
- Meilisearch
- Redis
- MariaDB
- Vite
- Tailwind
- Docker
- Meta Conversions API
-
TecDoc katalóg dielov, OE čísel a väzieb na vozidlá (TAF dáta)
- Do Katalógové API (Laravel): 126 123 dielov a 1,39 mil. väzieb na vozidlá, nová verzia sa prepne naraz
-
Katalógové API (Laravel) vyhľadávanie podľa auta, OE, EAN aj textu
- Do WooCommerce: diely, väzby na vozidlá a ceny na požiadanie e-shopu
-
WooCommerce e-shop, košík a objednávky
- Do APSi ERP: objednávky a zmeny produktov
- Späť do WooCommerce: ceny a stavy kariet, každú noc
-
APSi ERP sklad, ceny a objednávky
- Klient
- Repascentrum
- Web
- repascentrum.sk
Východisko
Repascentrum predáva repasované autodiely - turbodúchadlá, servoriadenia, vstrekovacie trysky, palivové čerpadlá, prevodovky. Celú prevádzku má v ERP systéme APSi: tam vznikajú skladové karty, tam sa tvoria ceny, tam sa spracúvajú objednávky a evidujú odberatelia. E-shop bol od toho odrezaný, katalóg sa udržiaval ručne a všetko, čo sa zmenilo v sklade, muselo niekto prepísať aj na webe.
K tomu dve špecifiká, ktoré bežné e-shopové riešenie nevyrieši. Pri repasovanom diele sa účtuje záloha za starý diel a v ERP je to samostatná skladová karta, teda po synchronizácii samostatný produkt. A existujúci katalóg bolo treba presťahovať na novú doménu bez toho, aby sa rozsypali pozície vo vyhľadávaní.
Čo sme postavili
WordPress na Bedrocku s WooCommerce, vlastnou témou postavenou na Vite a Tailwinde, a tromi pluginmi napísanými na mieru. Žiadny page builder, žiadna univerzálna synchronizačná krabica z trhu.

Obojsmerná synchronizácia s APSi ERP
Plugin repas-erp-integration sa pripája priamo na databázu ERP cez MySQLi a drží obe smery:
- ERP → e-shop. Nočný cron prejde celý katalóg a aktualizuje ceny a stavy kariet. Beh je kurzorovo stránkovaný a priebežne si ukladá pozíciu, takže reštart kontajnera alebo timeout stratí maximálne jednu dávku a ďalšie volanie pokračuje tam, kde skončilo. Produkt zmiznutý zo skladu sa skryje alebo presunie do koša, nikdy sa nemaže natvrdo.
- E-shop → ERP. Objednávka sa pri prechode do stavu spracovanej zapíše do tabuliek
objednavky_hlaobjednavky, vrátane založenia odberateľa v adresári a rezervácie čísla dokladu pod databázovým zámkom, aby dva súbežné exporty nedostali rovnaké číslo. Zápis je idempotentný a v administrácii objednávky je tlačidlo na ručný re-export. - Zmeny produktu v administrácii sa tlačia späť do skladovej karty, vrátane stavu zásob. Mazanie sa propaguje ako zmena stavu karty, nikdy ako fyzický DELETE.
Celý zápisový smer má na úrovni databázovej vrstvy vypínač, takže staging - ktorý beží nad klonom produkčnej databázy a teda s platnými prihlasovacími údajmi do živého ERP - nikdy nezapíše do ostrej prevádzky.
Záloha za starý diel
V ERP sú diel a jeho záloha dve samostatné karty. Na webe to musí vyzerať ako jedna položka. Synchronizácia obom kartám nastaví párovací kód, záloha ostane skrytá mimo katalógu a v košíku sa k dielu pridá automaticky v rovnakom množstve. Keď zákazník zmení množstvo alebo diel odstráni, záloha sa posunie s ním. V košíku aj v rekapitulácii objednávky sú obe položky vizuálne zviazané do jedného bloku a na detaile produktu vidieť rozpad ceny na diel, zálohu a súčet.
Migrácia katalógu a SEO
Pri prechode na novú doménu sme prešli existujúce presmerovania a 631 nefunkčných 301 sme dotiahli na nulu - časť precielením na spárovaný produkt, zvyšok na najbližšiu kategóriu. Základ URL kategórií ostal zámerne nezmenený, pretože naň mieria staré odkazy.
Meranie, výkon a zákonné povinnosti
woo-meta-pixel-plusposiela Meta Pixel aj Conversions API s deduplikáciou cez zdieľané ID udalosti, takže sa jedna objednávka nezapočíta dvakrát. Produktový XML feed sa generuje po dávkach a cachuje, pretože katalóg má okolo 16 500 položiek a jeden dopyt bez limitu by server položil. Skripty sa aktivujú až po súhlase s cookies.repas-wc-admin-toolsdopĺňa AI generovanie popisov produktov a kategórií a automatické zaraďovanie do kategórií, s frontou a odstupmi medzi volaniami kvôli limitom API.- Formulár na odstúpenie od zmluvy podľa zákona 108/2024 s evidenciou v administrácii, predvyplnením z objednávky a odkazom v objednávkových e-mailoch.
- Prevádzka beží na vlastnom VPS s automatickým nasadením z gitu, objektovou cache v Redise, cache stránok na úrovni nginxu a nočnou zálohou databázy.
Katalóg dielov TecDoc
Nad e-shopom beží katalóg náhradných dielov z TecDoc: výber podľa značky, modelu a motora a vyhľadávanie podľa čísla dielu, OE čísla, EAN aj textom. Katalóg drží samostatná Laravel aplikácia, ktorá e-shopu servuje JSON a nie je zvonku dostupná; WordPress si ho obalí do témy, takže detail dielu je normálna HTML stránka, ktorú vie prečítať aj vyhľadávač.

TecDoc nečítame cez webservice. Natívne TAF dáta sa importujú do vlastnej databázy cez dočasné tabuľky a atómové prehodenie, takže katalóg počas aktualizácie ani na chvíľu nevypadne. Po importe 25 značiek má 126 123 dielov, 1,39 mil. väzieb na 51 229 vozidiel a 1,6 mil. vyhľadávacích čísel.

Diel, ktorý nie je na sklade, sa stane produktom WooCommerce až pri vložení do košíka a cena sa pritom overí na serveri. Synchronizácia s ERP takéto produkty preskakuje, takže sa do skladu nedostanú. Vlastné repasované diely sa na katalóg napájajú cez OE číslo a preberajú z neho kompatibilitu s vozidlami.



