Külső webshoppal való kommunikáció és fontosabb infók
Webshop egyedi szinkron:
Egyedi szinkronizálás a termékek evir oldalon megtalálható, és a webshopban egy (ritka esetben több) api hívással módosítható, feltölthető. Az egyedi szinkronizáció szolgál a termékek feltöltésére is.
A szinkront futtatja a my[webshop].pm
: egy dok.pm alapú objektum, mely a [webshop]_common.pm ből összerakott $self→{Data}→{Mezok} -el dolgozik.
Ezeket a mezoket a kovetkezo modon lehet testreszabni, két fő csoportra lehet osztani:
Egyertelmű az evir oldalon az adat, és egyértelműen van helye a webshop oldalon.
peldaul:
az {options}
értékei:
eVIR oldalaról nem egyértelmű az adat beazonosítása, vagy nem létezik ilyen adat, akkor megengedjük a termék tulajdonság feltöltését is.
például
leírás mezők,
súly
megjegyzés mezők
slug
az option ertekei:
0: nem visszuk at a webshopba
default: Valami általunk választott cikkparam érték
mas általunk választott cikkparam érték,
Termék tulajdonságok felsorolva.
Az árat és a készletet külön kezeljük, mert volt, mikor nem engedtük, hogy egyedi szinkronizálásban szerepeljenek. Ez viszont XXX.
torzs_webshop::sync_product:
torzs_webshop::sync_setup:
Form, melyet az egyedi szinkron listabol lehet elerni. Egy egyedi szinkron letrehozasa/modositasara szolgal.
itt lehet beallitani a [webshop]_sync_mezok erteket valamint a sync nevet.
Webshop folyamata:
Altalanos info:
torzs_webshop::common -t haszalom a cikkeknek az evirre vonatkozo adatok osszeszedesehez.
torzs_webshop::webshop_log*.pm logolashoz es log listahoz.
'webshop_log_fej' es 'webshop_log_tetel' tablakban van a log
elib::error_notifyer hasznalata a notifyolashoz.
[webshop]_variables tablaban vannak olyan ertekek, melyekre szuksegunk van ket api muvelet kozott, de nem annyira nagyok, hogy teljes tablat kapjanak
Termek szinkronizalas folyamatas:
A lefuttatott szinkronizalasnak(mely lehet egyedi de lehet ar/keszlet is) vesszuk az last_sync es a last_cikkszam rekordjait
ezekkel szurunk a termekekre, hogy csak azokat szinkronizaljuk, mely a last_sync ota valtozott. Ha a modify_time=last_sync akkor a last_cikkszammal hasonlitjuk ossze.
(altalaban) 50 darab cikkre szurunk, es ezt egy darab api hivassal frissitjuk miutan osszeszedtuk a szukseges adatokat.
Mielott az api hivast megtesszuk, frissitjuk a last_sync es last_cikkszam-ot, hogy ne akadjon be a szinkronizalas hiba eseten.
Ez utan megnezzuk, hogy van-e meg idonk lefuttatni egy ujabb hivast (az elozo futasi idot felhasznalva a becsleshez).
Ar es keszlet szinkronizalasakor nem toltunk fol uj cikket, csak a meglevoket frissitjuk a gyorsasag miatt.
keszlet szinkronizalaskor nem a modositasi datumot vesszuk alapul a cikkek szuresere, hanem, hogy last_sync ota megjelent-e az aruslot_log tablaban bejegyzes raktarkeszlet valtozasra.
sync_product_by_id megjegyzesek
— Csesznák Tamás 2022/08/26 11:32
A megjegyzések nagyrésze lehet, hogy a source_browserben is megtalálható, és sokat átlehet oda költöztetni.
a $id
az egyedi szinkronizalasok evires id-je.
sub _sync_products_init
: Inicializalja azokat a {Mezok}-et amiket szinkronizalni lehet
set_value hogy mely mezoket akarom szinkronizalni
while ciklusban amig lehet:
sub calc_product_sync_infos:
Elsődlegesen eVIR oldali cikk adatok összeszedése, a következő 50 darabra.
Másodlagosan (shoppoktól eltérően ez változhat), itt állapítom meg, hogy mely cikk van feltöltve, és mely nincsen.
sub calc_product_sync_infos_ar:
gyors megoldas a sale arkategoria megszerzesehez
Ronda, és javítani kéne, költöztetni a torzs_webshop::common-ba
sub sync_products_felvesz
vegigmegy a cikkeken, es megnezi, hogy az adott cikket update-elni vagy create-elni kell.
sub sync_update_product:
Keszit egy rekordot, amit oda lehet adni az apinak.
shopify esetén itt végzi el a szinkronizálást is.
visszater a sikerek szamaval (jó esetben ez az elvárt működés).
keszlet szinkronizacio:
Keszleteknel annyi valtozas van, hogy a termekeket nem a modify datum alapjan, hanem az aruslot log-ban torteno valtozas alapjan szedem ossze.
Webshop specifikus infok:
woocommerce:
tulajdonsag kategoria es cimkenek van metaadata amit fel kell toltenni szinkron elott.
vannak kapcsolotablak. A woocommerce_common.pm-ben vannak az utasitasok hogy berakjuk a tablaba a termeket.
minden metaadatnak, a media adatoknak es a termekeknek van tablaja.
A kepek feltolteset a wordpress intezi
A kepeket nem lehet webshop oldali batchkent feltolteni, csak 1-esevel.
Shoprenter:
Mindig lekerjuk a shopbol a termekeket. Nincs kapcsolotabla
kapcsolotabla van:
kepek
A nyelv adatokat lekerjuk minden hivasnal, hogy a description-nek megtudjuk mondani a nyelvet .
Api kisokos:
A maximálisan indítható requestek limitje 3/alkalmazás/bolt/másodperc.
Outer ID-t nem használunk, mert nem támogatott, helyette az extended resource-ot használjuk.
Minden olyan mező, ami leírást/szöveget tartalmaz 2 részből áll: 1 fej részből, és egy description részből. Például a text tulajdonságok, vagy a termék megnevezése.
Az id mezok base64 kodolasuaki, kibontva ezt kapjuk:
pl: productCategory-product_id=534&category_id=146
UNAS:
XML-ben komunikalunk.
unas_data.pm alakitja pxml adatszerkezette.
Nincs adat, amit külön kellene feltölteni.
max 20 darab sikertelen hivas, es max 128 mb.
agusztus 9 ota a megrendelés státusz is lekérdezhető apin keresztül
Shopify:
graphQL-t is hasznalunk pl keszletnel.
nincs shop oldali batchelt hivas
Nincsenek termék tuladjonságok:
Csak options van, amiből 3 választható
— Csesznák Tamás 2022/08/26 11:12