Ez a dokumentum egy előző változata!
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
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.
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.
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.
alapadatok esetében a cikk modify_date-je alapján lehet
készlet esetén az eVIR belső auditja alapján érintett termékeknél
árak esetén is a modify_date esetén
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.
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, melyet a Szinkronizálások/Cikk szinkronizálás beállítások
menüpontban lehet elérni.
Itt egy új név
megadásával lehet új szinkronizálást létrehozni, vagy pedig a legördülőből kiválasztva, és a Frissít
gombra kattintva egy már meglévőt módosítani. 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 lehet futtatni a Szinkronizálások/Cikk szinkronizálás
menüpont alatt, ahol látható mikor volt utoljára futtatva az egyes szinkronizálások. Ha be van pipálva az Összes termék szinkronizálása
akkor figyelmen kívűl hagyja ezt az időpontot, és az összes cikket szinkronizálja a webshop termékeivel.
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';