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:

megnevezés,

ar,

készlet

kategoria

tulajdonságok

kapcsolódó és helyettesítő termékek

az {options} értékei:

0: nem visszük at a webshopba

default: Átvisszük a webshopba

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

pl Bruttó súly

mas általunk választott cikkparam érték,

pl Netto súly

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:

abstract

lista az egyedi szinkronizálásokról.

Ezen listából lehet futtatni is őket, vagy módosítani.

Összes termék szinkronizálása azt jelenti, hogy a last_sync a legkorábbi időpontra lesz állítva, a last_cikkszam pedig üres string lesz.

[webshop]_sync tablaban vannak a fej adatok tarolva

last_sync es a last_cikkszam a batchesitest szolgaljak, ahol a last_sync a last_cikkszam modify_time-ja.

id: azonositja a szinkront

[webshop]_sync_mezok tablaban vannak, hogy mely termek rekordokat kell szinkronizalni, es milyen ertekkel.

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

webshop_log_fej:muvelet: pl termekek szinkronizalasa

webshop_log_tetel: amikkel a muvelet vegrehajtodott. pl termekek

elib::error_notifyer hasznalata a notifyolashoz.

jelenleg emailt kuldok ki

[webshop]_variables tablaban vannak olyan ertekek, melyekre szuksegunk van ket api muvelet kozott, de nem annyira nagyok, hogy teljes tablat kapjanak

mint az utolso rendeles id, ar szinkronizalas

Termek szinkronizalas folyamatas:

A lefuttatott szinkronizalasnak(mely lehet egyedi de lehet ar/keszlet is) vesszuk az last_sync es a last_cikkszam rekordjait

last_sync: utoljara felszinkronizalt termek modositasi timestamp-je

last_cikkszam: utoljara felszinkronizalt termek cikkszama.

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.

oka: woocommerce: Kiszamoltuk, hogy noha 100 a batch merete, de 50-el fut le emberi idon belul.

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).

Ha van akkor megcsinaljuk

Ha nincs akkor a hatterben fog futni tovabb, batchjobkent.

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

ettol fuggoen metadaadatok lekerese

Vagy eVIR oldalon kapcsolotablabol

Vagy webshop api hivassal

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

parameterek:

do_update⇒frissitunk

do_create⇒letrehozunk

sync_name⇒'szinkron neve'

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