WooCommerce
Termék adatok
Készlet
eVIR: „Nem látszik a webshopban” (hidden)
eVIR: „Végtelen mennyiség” (vegtelen)
manage_stock → „false”
stock_status → „instock”
eVIR: „Rendelhető” (rendelheto)
eVIR: „Kifutó”(kifuto)
manage_stock → „true”
stock_status → „instock” ha van raktáron. Ha nincs, akkor a termék láthatóságát kell kikapcsolni
stock_quantity → a raktáron levő mennyiség
backorders → „no”
eVIR: „Csak készleten levő” (Csak készleten)
manage_stock → „true”
stock_status → „instock” vagy „outofstock” attól függően, hogy van-e készleten
stock_quantity → a raktáron levő mennyiség
backorders → „no”
eVIR: „Mennyiség mutatása” (rakt_menny)
Termék tulajdonságok
Termék kategóriák
Woo mezők:
id → kötelező mező kategória termékhez rendeléséhez.
name → a kategória neve. (Levágja a szóközöket, ha több jön egymás után)
slug → a kategória neve (nincs ékezet, szóközből '-' )
parent → a szülő kategória
description → a kategória neve
display → „default”
Kategóriák kapcsolótáblába rendezése:
woocommerce_product_categories:
Tervezve van hogy ha tobb webshop lesz, akkor ez bovul vagy lecserelesre kerul.
Termék képek
Nem a WooCommerce, hanem a Wordpress mediatár tartalmazza a képeket. A feltöltéséhez wordpress felhasználó szükséges.
-
WP mezők:
title → a kép neve
description → a kép neve
alt_text → a kép neve
Woo mezők:
id →
date_created →
-
name → megegyezik a wp.title-vel → a kép neve, ami a cikk megnevezése
alt → megegyezik a wp.alt_text-el → a cikk megnevezése
Ugyan ide ugyan ilyen módon kell feltölteni a termékhez rendelt dokumentumokat is, csak ott értelemszerűen nem képekről van szó
Rendelés
Rendelés adatok
Mezők: (default woo-ban)
id → Webshop id
parent_id
number → hivatkozás
order_key
created_via
version
status
currency → pénznem
date_created
date_created_gmt → Rendelés dátuma (rend_datum)
date_modified
date_modified_gmt
discount_total → Teljes engedmény (bruttó)
discount_tax
shipping_total → Teljes szállítási költség (bruttó)
shipping_tax
cart_tax
total
total_tax
prices_include_tax
customer_id
customer_ip_address
customer_user_agent
customer_note
billing → Partner elsődleges címe (ld. lentebb)
shipping → Partner szállítási címe (ld. lentebb)
payment_method → Fizetési mód
payment_method_title
transaction_id
date_paid
date_paid_gmt
date_completed
date_completed_gmt
cart_hash
meta_data:
evir_rendeles → Evir rendelés szám. Mi írjuk bele, rendelés sikeres letöltése után.
HuCommerce plugin esetén:
line_items
tax_lines
shipping_lines
fee_lines → Extra költségek. Az extra költségnek beállított cikszámot rárakjuk a rendelésre
coupon_lines
refunds
set_paid
Partner adatok rendelésen
Billing, elsődleges cím
Személy:
first_name → Keresztnév
last_name → Vezetéknév
Cég:
address_1 → cím első sora
address_2 → cím második sora
city → Város
state
postcode → Irányítószám
country → országkód
email → emailcím, csak egy van (regisztrációs adat)
phone → telefonszám
Megjegyzés:
Ha van cégnév, akkor a vezeték és keresztnevet nem vesszük figyelembe, és cégként rögzítjük a partnert.
A cím sorait egymás után fűzzük szóközzel. Max 60 karakter, ha több vágunk.
Ha van HuCommerce plugin felrakva, ami ad adószám mezőt a címhez, akkor elsőször az alapján próbáljuk meg beazonosítani a partnert.
Utána, vagy ha nincs adoszám mező, akkor email-cím alapján keressük meg a partnert.
Ha nincs, akkor rögzítünk egy új partnert.
Shipping, szállítási cím
Megjegyzés:
Csak akkor foglalkozunk a 'shipping address'-el, ha ki lett töltve rendeléskor.
Megpróbáljuk beazonosítani a szállítási címet a partnerhez.
Ha nincs akkor létrehozzuk, mint szállítási cím.
Használjuk a rendeléshez, mint szállítási címként.
Adatoknak a kategorizálása
Az adatokat kategóriákba lehet sorolni:
alapadatok:
készletkezelés
ár mezők:
kategória
tulajdonságok
Ami a cikk tulajdonságok, ide értendőek a descriptionok is
A cikk egyebb adatai, ami nem alapadat, mint meret, suly, stb.
milyen elsődleges (és majd további másodlagos) termékkategóriákba van besorolva,
képek
dokumentumok
Minden egyes kategóriának kell lennie:
műveleteknek, amelyeket a felületről el kell tudni érni, valamint biztosítani kell az időzített futtathatóságot. Ez egyelőre cron-ból hívott tokenes lekérés lesz, de a jövőben változik.
Szinkronizálás
A szinkronizálás célja az utolsó szinkronizálás óta változott adatok gyors felküldése a shopba. Ezek a műveletek akár pár percenként is lefuthatnak, ezért kritikus a leggyorsabb futásra és a legkevesebb erőforrás használatra való optimalizálás. Amennyiben a szinkronizáció nem végzett a termékekkel 1 percen belül, úgy háttérben folytatja a műveletet.
Előfordulhat, hogy mondjuk napi időzítéssel (de külön-külön) mehetnek a képek és dokumentumok, cikk kategóriák szinkronizálása is. Ebben az esetben nem lesz gyors, mivel csak összehasonlítás alapon lehet megcsinálni, azaz le kell tölteni a teljes listát Woo-ból, összehasonlítani az eVIR-ben levővel, és csak a változásokat feltölteni.
Feltöltés
A feltöltés célja kettős:
A rendszer indulásakor feltölteni az eVIR-ből a webshopba az adatokat
Az üzemeltetés során bármikor „alaphelyzetbe” hozni az adatokat, azaz a webshopban történt elállítgatásokat helyrehozni, visszaállítani abba az állapotba, amiről az eVIR tud. Feltöltés esetén NEM vizsgálunk semmit, nem függ semmitől semmi, egyszerűen fel kell tölteni az adatokat a webshopba. Ha szükséges az ütközés miatt, akkor lehet előtte törölni, vagy bármit csinálni, de akkor is feltétel nélkül az eVIR-ben levő állapotra kell beállnia minden mező minden értékének. Ez a művelet jellemzően egyszer vagy nagyon ritkán (hetente, havonta?) fog lefutni. Nem az a lényeg, hogy mennyi idő alatt fut le, hanem hogy lefusson és erről visszajelzés érkezzen.
A feltöltést jelenleg a cikkek esetében a módosítási dátum legkorábbira állítása, és egy szinkronizáció futtatásával érjük el.
Egyedi szinkronizálás
Az egyedi szinkronizálás esetében a felhasználó maga rakja össze, hogy mely adatok kerüljenek szinkronizálásra a webshopba. Ez jelenleg a cikkekre van megírva.
A Szinkronizálások/Szinkron beállítás
menüpontban aHozzáad
gomb megnyomásával lehet új egyedi szinrkonizálást létrehozni. A cikkhez tartozó szinkronizálható mezők fel vannak sorolva, mindegyikhez egy legördülő tartozik. Két féle mező fajta van:
Igen/Nem: Vagyis szinkronizálni akarom a mezőt vagy sem.
Az adott mezőhöz egy termék tulajdonság rendelhető hozzá, mely ha be van állítva a cikkhez, akkor az nem mint tulajdonság, hanem a kiválasztott mezőhöz kerül feltöltésre.
FONTOS:
Ha egy tulajdonság mezőként be van állítva egy szinkronizálásban, akkor az a tulajdonság nem kerül Woocommerce attribute-ként feltöltésre semelyik másik esetben sem.
Ha van új cikk, amely még nem szerepel a webshopban, akkor az feltöltésre kerül. A név ebben az esetben mindenképp feltöltésre kerül, bármi is legyen beállítva az egyedi szinkronizálásban.
Ezeket a szinkronizálásokat ugyan itt lehet futtatni a Szinkronizálások/Szinkron beállítás
menüpont alatt, ahol az összes egyedi szinkronizálás megtalálható és látható mikor volt utoljára futtatva (note: Ez itt téves infó. Nem az látható mikor volt utoljára futtatva, noha azt is látni kéne, hanem azt, hogy meddig jutott el a szinkron, a termék módosítási ideje). A Szinkronizálás
gombbal az összes utolsó szinkronizálási időpont után modósult terméket szinkronizálja, míg az Összes termék szinkronizálása
gomb megnyomásával beállítja ezt az időpontot a legkorábbira, és az összes cikket szinkronizálja.
A Szerkesztés
gombbal módosítani tudjuk a szinkronizálandó mezőket.
A Cikk alapértelmezett szinkronizálás
menüpont a Woocommerce beállítások-ban beállított egyedi szinkronizálást fogja lefuttatni, a fentiek alapján leírt módon.
Több WooCommerce shop támogatása
Távlati terv lett volna, de akkor hozzuk előre: több webshop (benne akár több woocommerce) támogatása. Ez azt jelenti, hogy multiplicitást kell adni azoknak a mezőknek, amelyek shoponként különbözőek lehetnek:
A jelenlegi beállítások akár madahatnak is a helyükön és azok dedikáltan az eVIR saját webshopjára vonatkozzanak, és ezek az extrák legyenek külön feltüntetve, külön állítgathatóan.
Összes termékkategória törlése
DELETE a,c FROM wp_terms AS a
LEFT JOIN wp_term_taxonomy AS c ON a.term_id = c.term_id
LEFT JOIN wp_term_relationships AS b ON b.term_taxonomy_id = c.term_taxonomy_id
WHERE c.taxonomy = 'product_cat'
Összes termék törlése mindenestül
DELETE relations.*, taxes.*, terms.*
FROM wp_term_relationships AS relations
INNER JOIN wp_term_taxonomy AS taxes
ON relations.term_taxonomy_id=taxes.term_taxonomy_id
INNER JOIN wp_terms AS terms
ON taxes.term_id=terms.term_id
WHERE object_id IN (SELECT ID FROM wp_posts WHERE post_type='product');
DELETE FROM wp_postmeta WHERE post_id IN (SELECT ID FROM wp_posts WHERE post_type = 'product');
DELETE FROM wp_posts WHERE post_type = 'product';