WooCommerce

https://woocommerce.github.io/woocommerce-rest-api-docs

Termék adatok

https://woocommerce.github.io/woocommerce-rest-api-docs/#product-properties

Woo→eVIR mező megfeleltetések: (WP/Woo → eVIR)

Mezők: (default woo-ban)

name → megnevezes

slug →

date_created(read-only) →

date_modified(read-only) →

type → „simple” (simple)

status → „publish” (publish)

catalog_visibility → „visible” (visible)

description → termék tulajdonságból a leírás, valamint a többi terméktulajdonság is név:érték formában, HTML formázással, valamint a cikkszám is.

short_description → termék tulajdonságból csak a leírás

sku → cikkszam

price (Read only) → beállított árkategória szerinti ár

regular_price → beállított árkategória szerinti ár

sale_price → beállított árkategóriához tartozó akciós árkategória szerinti ár

on_sale(read-only)→ webshop akcios

virtual → termék esetén false, szolgáltatás esetén true (false)

tax_status → „taxable” (taxable)

manage_stock → webshop beállítás szerint (false)

stock_quantity → webshop beállítás szerint

stock_status → webshop beállítás és készlet infó szerint (instock)

sold_individually → „true” (false)

weight → cikktörzsben a bruttó súly

dimensions → cikktörzsben:

length → hosszusag

width → szelesseg

height → magassag

upsell_ids → a kapcsolódó termékek

cross_sell_ids → a helyettesítő termékek

categories → cikktörzsből a kategória

tags → termék tulajdonság, címkék (még nincs evirben, de legyen létrehozva)

images → termék fő kép

attributes → termék tulajdonságok

Készlet

eVIR: „Nem látszik a webshopban” (hidden)

Nincs tennivaló, az ilyen terméket nem is szinkronizáljuk

eVIR: „Végtelen mennyiség” (vegtelen)

manage_stock → „false”

stock_status → „instock”

eVIR: „Rendelhető” (rendelheto)

manage_stock → „false”

stock_status → „instock”

stock_quantity → a raktáron levő mennyiség

backorders → „yes”

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)

manage_stock → „false”

stock_status → „instock” vagy „outofstock” készlettől függően

stock_quantity → a raktáron levő mennyiség

Termék tulajdonságok

Woo mezők:

name → a tulajdonság neve

visible → „true”

variation → „false”

options → a tulajdonság értéke

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:

cikk_kategoria_id → evir oldali id

product_category_id → woocommerce oldali id

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.

https://developer.wordpress.com/docs/api/

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 →

src → WP URL

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:

_billing_tax_number→ adószám.

line_items

tax_lines

shipping_lines

method_title→Szállítási költség megjegyzésbe rakjuk.

fee_lines → Extra költségek. Az extra költségnek beállított cikszámot rárakjuk a rendelésre

total→ szolgáltatás.netto

name→ szolgáltatás.megjegyés

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:

company → Cégnév

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

HuCommerce plugin megléte esetén:

order

metadata

_billing_tax_number → adoszá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

Személy:

first_name → Keresztnév

last_name → Vezetéknév

Cég:

company → Cégnév

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

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:

ez a cikkszám, megnevezés, áfa, tipus

készletkezelés

kezelés módja (manage_stock és kapcsolódó mezők)

ár mezők:

price mezők, on_vale

kategória

cikk kategóriák és a hierarchiája

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:

feltöltés

szinkronizálás

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.

alapadatok és árak esetében a cikk modify_date-je alapján lehet

készlet esetén az eVIR belső auditja alapján érintett termékeknél

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:

webshop beállítás

webshop akciós

webshop árkategória

webshop raktár

webshoponként a termék kategóriák beállítása

webshoponként az alapadatok (URL, user, pass, stb.)

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';