# WooCommerce-átvitel: hibaelhárítás

> A sikertelen rendelések naplója, a gyakori hibák megoldása, az átvitel visszaállítása, a tesztkörnyezeti próba és a gyakori kérdések.

A Migrator tűri a rossz adatot: az egyes rekordok hibáját rögzíti, és nem állítja le a futást. Ez a fejezet megmutatja, hogyan találod meg ezeket a hibákat, hogyan ellenőrizheted az épséget az átvitel után, és hogyan állsz helyre a gyakori problémákból.

## A sikertelen rendelések naplója

Ha egy rendelés átvitele elbukik (sérült rekord, hiányzó vásárlói e-mail-cím, hibás rendelési tételek), a hiba a `_fluent_cart_woocommerce_failed_logs` WordPress-beállításba kerül, a futás pedig nem áll le. A termékeknél ugyanez igaz: egyetlen olvashatatlan termék rögzítésre kerül, a katalógus-szakasz pedig folytatódik.

### Hibák megtekintése parancssorból

```bash
wp fluent_cart_migrator migrate_from_woo --log
```

Minden bejegyzés a WooCommerce-rendelés azonosítóját és a hibaüzenetet mutatja. A hibák a CLI-futás közben figyelmeztetésként is megjelennek, így menet közben látod őket, nem csak a végén.

### Hibák megtekintése a varázslóban

A befejező képernyő egy lenyitható **Hibanapló** szakaszt mutat. Kattints rá: ugyanazt az adatot látod, mint a CLI `--log` kimenetében.

### Mit tegyél egy sikertelen bejegyzéssel

1. Nyisd meg az eredeti rendelést a WooCommerce-ben (**WooCommerce → Rendelések**).
2. Hasonlítsd össze a hibaüzenettel. Az ok általában egyértelmű: hiányzó számlázási e-mail-cím, törölt termékhivatkozás, vagy olyan rendelés, amelynek nincs használható tétele.
3. Javítsd ki a forrásadatot a WooCommerce-ben.
4. Futtasd újra a rendelések szakaszát: `wp fluent_cart_migrator migrate_from_woo --payments`. Az már átvitt rendeléseket kihagyja.

### Rendelések nem regisztrált egyedi állapotban

A naplóban egy bejegyzéstípus nem adathiba. A WooCommerce csak azokat a rendeléseket tudja visszaadni, amelyek állapota jelenleg regisztrált, tehát ha egy egyedi rendelési állapotokat hozzáadó bővítményt kikapcsoltak, a rendelései egyáltalán nem kérdezhetők le. Hogy ne maradjanak elszámolatlanul, a Migrator mindegyiket felsorolja a rendelésszámával, állapotával, dátumával, végösszegével, a vásárló e-mail-címével és egy szerkesztési linkkel.

Megoldás: kapcsold vissza az állapotot regisztráló bővítményt, majd futtasd újra a rendelések szakaszát. A rendelések újra lekérdezhetők lesznek, és rendesen átkerülnek.

## Gyakori problémák

### „WooCommerce is not active”

Minden szakasz ellenőrzi, hogy a WooCommerce be van-e töltve. Ha ezt látod a CLI-ben vagy a varázslóban, a WooCommerce ki van kapcsolva: aktiváld, és futtasd újra. A WooCommerce-nek az egész átvitel alatt aktívnak kell maradnia, mert a Migrator az API-ján át olvas.

### „Migration requires WooCommerce 3.0 or later”

Az összeférhetőségi ellenőrzés a régebbi verziókat blokkolja. A WooCommerce 3.0-ban jelent meg a CRUD API (`wc_get_products`, `wc_get_orders`), amelyre a Migrator épít, hogy független maradjon a tárolástól.

Megoldás: frissítsd a WooCommerce-t, majd térj vissza a varázslóhoz.

### „No WooCommerce products found. Nothing to migrate.”

A Migrator üres katalóguson nem hajlandó futni. Ha valóban vannak termékeid, ellenőrizd, hogy nincsenek-e mind a kukában: az átvitel a `publish`, `private` és `draft` állapotú termékeket olvassa.

### Az átvitel félúton leáll

A leállás szinte mindig szerveroldali időtúllépés: a PHP `max_execution_time` értéke megszakította a kérést, vagy a tárhely folyamatfelügyelője leállított egy hosszan futó szkriptet.

Megoldás a varázslóból: frissítsd az oldalt, és indítsd újra az átvitelt. Az utolsó befejezett oldaltól folytatja, és a kész lépéseket kihagyja.

Megoldás parancssorból: a CLI teljesen megkerüli a HTTP-időtúllépéseket. Ha a varázsló újra és újra elakad, váltsd át:

```bash
wp fluent_cart_migrator migrate_from_woo --all
```

### Elfogy a memória

Nagy boltoknál a PHP-nak elfogyhat a memóriája a termékek vagy a rendelések szakaszában. A Migrator a kötegek között már üríti a WordPress futásidejű gyorsítótárát, és leállítja a köteget, ha a memóriahasználat eléri a korlát nagyjából 70%-át, de egy nagyon alacsony korlát egyetlen köteg alatt is kimerülhet.

Megoldás: adj a PHP-nak több mozgásteret az átvitel idejére:

```bash
wp --exec='ini_set("memory_limit","1G");' fluent_cart_migrator migrate_from_woo --all
```

Ha még így is eléred a korlátot, az `--all` helyett futtasd külön a szakaszokat, hogy minden hívás saját memóriakörnyezetet kapjon.

### A termékszám nem egyezik

A FluentCart termékszáma nem mindig egyenlő a WooCommerce-ével, és ez többnyire helyes:

- **A változatok nem külön termékek.** A WooCommerce-változatok FluentCart-változatokká válnak a szülőtermékben, nem önálló tételek.
- **A kukában lévő termékek nem kerülnek át.** Csak a `publish`, `private` és `draft` állapotúak.
- **A sikertelen termékek naplózva vannak.** Ha a különbség nagyobb, mint amit az előző kettő megmagyaráz, nézd meg a hibanaplót.

### A rendelési tételek a semmire mutatnak

Ez akkor történik, ha a rendelések szakasza a termékek előtt futott. A rendelési tételek a termékeket a termékek lépése által írt azonosítótérképen át oldják fel.

Megoldás: futtasd előbb a `--products` kapcsolót, majd a `--payments`-et újra. Ha a termékek már átkerültek, a rendelések újrafuttatása biztonságos: a rendelési rekordok idempotensek.

### Egy rendelés végösszege nem egyezik a WooCommerce-szel

Mindig egyeznie kell. A Migrator a rendelés végösszegét az összetevőiből (tételek, adó, szállítás, szállítási adó, díjak, mínusz kedvezmények) újraépíti, és egyezteti a WooCommerce rögzített összegével: a pozitív különbség kézi kedvezményként, a negatív díjként kerül rögzítésre. Ha egy végösszeg valóban eltér, nézd meg, hogy egy harmadik fél bővítmény nem a megjelenítéskor adott-e hozzá összeget ahelyett, hogy a rendelésen tárolta volna: annak az értéknek nincs mit átvinni.

### A kuponkorlátozások üresen jöttek át

A kupon termék- és kategóriakorlátozásai átképezve vannak, nem másolva. Az a korlátozott termék, amely nem került át (mert a kukában volt, vagy a termékek szakasza még nem futott), kikerül a listából, nem marad nem létező azonosítóra mutatva.

Megoldás: futtasd előbb a `--products` kapcsolót, majd a `--coupons`-t újra. A kuponok kód alapján frissülnek, ezért az újrafuttatás biztonságos.

### Az átvitt rendeléseken hiányzik az adó

Az adóátvitel attól függ, hogy a WooCommerce-ben be voltak-e kapcsolva az adók. Ha ki voltak kapcsolva, az adólépés figyelmeztetéssel kimarad, és a rendelések adósorainak nincs FluentCart-kulcsa, amelyre kapcsolódjanak.

Megoldás: kapcsold be az adókat a WooCommerce-ben, futtasd a `--tax_rates` kapcsolót, majd a `--payments`-et újra, hogy az adósorok feloldódjanak.

### Az előfizetések számlázásszámai furcsának tűnnek

Az újraszámolási lépés után néha egy előfizetés számlázásszáma nem azt mutatja, amit vártál. Ez általában azt jelenti, hogy a megújító rendelések a szülő előfizetésük előtt kerültek át, ezért a kapcsolat utólag készült.

Megoldás: futtasd újra az újraszámolást:

```bash
wp fluent_cart_migrator migrate_from_woo --recount
```

Az újraszámolás az árván maradt megújítási tranzakciókat visszakapcsolja, mielőtt újraépíti a számlázásszámokat, ezért mindig az utolsó szakasznak kell lennie.

### Az előfizetésnél „Kézi” beszedés áll, pedig automatikus terhelést vártál

Ez szándékos döntés, nem hiba. A FluentCart csak akkor jelöl egy átvitt előfizetést automatikusan terhelődőnek, ha valóban terhelhető tokent örököl. A pontos szabályokat és a teendőket az [előfizetések és megújítások](https://hub.hellowp.io/hu/plugins/fluent-cart-pro/migracio-woocommerce-elofizetesek/) fejezet írja le.

### A Stripe-előfizetések az átvitel után nem terhelhetők

Szinte mindig a rendelés módja nem egyezik. A WooCommerce nem rögzít rendelésenként teszt/éles jelölőt, ezért a Migrator a módot az átjáró aktuális beállításából következteti ki. Ha a Stripe-beállításaid a múltban átkapcsolódtak, egyes rendelések rossz módba kerülnek, a FluentCart pedig az API-kulcsokat mód szerint választja, így a token elérhetetlenné válik.

Megoldás: ellenőrizd a módot az átvitt rendelések egy mintáján. Ha az egész futásra korrigálni szeretnéd a következtetést, az átvitel előtt adj hozzá egy szűrőt:

```php
add_filter('fluentcart_migrator_woo_order_mode', function ($mode, $context) {
    // $context['order'] és $context['gateway'] elérhető
    return $mode;
}, 10, 2);
```

Ezután (tesztkörnyezetben) állítsd vissza az átvitelt, és futtasd újra.

### A vásárlók megvannak a WooCommerce-ben, de a FluentCartban nem

A vásárlók a rendelésekből jönnek létre. Az olyan regisztrált fiókokhoz, amelyek sosem rendeltek, külön lépés kell:

```bash
wp fluent_cart_migrator migrate_from_woo --missing-customers
```

A varázslóban a **Hiányzó vásárlók** jelölőnégyzet csak akkor jelenik meg, ha ilyen fiókokat talál.

### A letölthető fájlok nem töltődnek le

A helyi fájlok az átvitel közben a FluentCart tárhelykönyvtárába másolódnak. A távolról tárolt fájlok megtartják az eredeti URL-jüket.

Megoldás: nyisd meg a terméket a FluentCartban, és nézd meg a **Letölthető anyag(ok)** mezőt. Ha egy távoli URL már nem elérhető, vagy egy helyi fájl a feltöltési könyvtáradon kívül volt, csatold újra kézzel.

### Az átvitt rendeléseken egyes IP-címek üresek

Ez szándékos. Amikor a rendelések szakasza befejeződik, minden IP-cím, amely több mint 30 átvitt rendelésen szerepel, törlődik: egy ennyire gyakori cím átjáróé vagy proxyé, nem vásárlóé.

## Az átvitel visszaállítása

Ha egy tesztkörnyezeti átvitel rosszul sikerült, és tiszta lappal akarsz kezdeni, a Migrator tisztán visszaállít. Ez a [fejlesztői módhoz](https://hub.hellowp.io/hu/plugins/fluent-cart-pro/migracio-fejlesztoi-mod/) kötött: a visszaállítás működéséhez definiálnod kell a `FLUENT_CART_DEV_MODE` állandót a `wp-config.php`-ban. Ez szándékos: a visszaállítás romboló, és az állandó mögé zárása lehetetlenné teszi, hogy véletlenül kiváltsd a WordPress-adminból.

> **Éles oldalon soha ne futtasd a visszaállítást.** A visszaállítás eldobja és újra létrehozza a FluentCart adatbázis-tábláit, és törli az átvitt termékbejegyzéseket. Csak tesztkörnyezetben, helyi vagy más elszigetelt környezetben használd.

### Parancssorból

```bash
wp fluent_cart_migrator migrate_from_woo --reset
```

Megerősítést kér, mielőtt bármit megsemmisítene. Átnézett szkriptekben a WP-CLI szokásos `--yes` kapcsolójával kihagyhatod a kérdést.

### A varázslóból

Ha a fejlesztői mód aktív, és a varázsló korábbi átvitelt észlel, az átvitel előtti áttekintő képernyőn az „Előző átvitel észlelve” értesítésben megjelenik egy **Átvitel visszaállítása** link. Rákattintva megerősítést kér, majd ugyanazt a visszaállítást futtatja.

### Mit töröl a visszaállítás

A visszaállítás alapos: mindent visszagörget, amit az átvitel létrehozott, hogy tiszta lappal kezdhess.

WordPress-beállítások, amelyek törlődnek:

- `__fluent_cart_woocommerce_migration_steps` (a lépések és oldalak előrehaladása),
- `_fluent_cart_woocommerce_failed_logs` (rendelésenkénti hibarekordok),
- az átviteli összesítő.

Adatbázis-séma:

- A FluentCart minden táblája eldobódik és újra létrejön.

Átvitt bejegyzésadatok:

- A FluentCart-termékbejegyzések és a segédadataik törlődnek.
- Az azonosítótérkép-segédadatok mindkét oldalról eltűnnek (`_fct_migrated_id`, `_wc_migrated_from`, `__wc_migrated_variation_maps`).

Az eredeti WooCommerce-adataidhoz soha nem nyúl. Csak a FluentCart-oldali rekordok és a leképezési segédadatok érintettek.

> **A visszaállítás minden FluentCart-adatot töröl, nem csak a WooCommerce-importot.** Mivel a visszaállítás újra létrehozza a FluentCart sémáját, minden más is odavész, ami azon az oldalon a FluentCartban él. Tesztkörnyezeti másolaton pontosan ezt akarod. Valódi FluentCart-adatot tartalmazó oldalon nem.

Ha a visszaállítás azt jelzi, hogy a táblákat eldobta, de nem tudta újra létrehozni, aktiváld újra a FluentCartot (vagy futtasd az adatbázis-migrációját) a séma helyreállításához, mielőtt újra próbálod. A Migrator ezt kifejezetten ellenőrzi, és jelzi, nem jelent hamis sikert.

### Tesztkörnyezeti próba menete

Egy tipikus próbaciklus így néz ki:

1. Klónozd az éles oldalt a tesztkörnyezetbe, a WooCommerce-adatbázissal együtt.
2. Kapcsold be a [fejlesztői módot](https://hub.hellowp.io/hu/plugins/fluent-cart-pro/migracio-fejlesztoi-mod/) a tesztkörnyezet `wp-config.php` fájljában.
3. Telepítsd a FluentCartot és a Migrator kiegészítőt.
4. Futtasd le a teljes átvitelt a varázslóval vagy a CLI-vel.
5. Ellenőrizd szúrópróbaszerűen a termékeket, kategóriákat, változatokat, rendeléseket, előfizetéseket és kuponokat.
6. Jegyezd fel, mi igényel forrásadat-tisztítást az éles futás előtt (ismétlődő cikkszámok, hibás termékek, törölt termékekre hivatkozó rendelések).
7. Állítsd vissza az átvitelt: `wp fluent_cart_migrator migrate_from_woo --reset`.
8. Tisztítsd meg a forrásadatot.
9. Futtasd újra a teljes átvitelt.
10. Ha az eredmény a tesztkörnyezetben jó, ismételd meg az éles oldalon (kikapcsolt fejlesztői móddal).

A következmények nélküli ismétlés az egyszeri átvitelből szabályozott, követhető folyamatot csinál.

## Gyakori kérdések

### Módosítja vagy törli az átvitel a WooCommerce-adataimat?

Soha. A Migrator csak olvas a WooCommerce-ből. Az eredeti adataid érintetlenek, ezért a teljes átvitelt az éles WooCommerce-boltoddal összevetve ellenőrizheted, mielőtt bármit átállítanál.

### Működik HPOS-sal?

Igen. A Migrator a WooCommerce CRUD API-ján át olvas, nem közvetlenül a táblákat kérdezi, ezért a HPOS-szal és a régi bejegyzéstáblákkal ugyanúgy viselkedik. Nem kell tudnod, melyiket használod.

### Mi van, ha az átvitel félúton megszakad?

Egyszerűen indítsd újra. A Migrator követi a saját előrehaladását: kihagyja a kész szakaszokat, a termékeket az utolsó befejezett oldaltól, a rendeléseket az utolsó befejezett kötegtől folytatja. Duplikált adat nem keletkezik.

### Futtathatom többször az átvitelt?

Igen. Minden szakasz idempotens. A termékek újrafuttatása az azonosítótérkép alapján frissíti a már átvitt termékeket, a kuponoké kód alapján a meglévő kuponokat, az újraszámolás pedig mindig az aktuális adatokból számol újra. Az újrafuttatás nem hoz létre duplikált rekordot.

### Kell valamit tennie a meglévő vásárlóimnak?

A fiókjaik, rendelési előzményeik, címeik és előfizetéseik mind átkerülnek, és ugyanazokkal a WordPress-adatokkal lépnek be. Az egyetlen csoport, amely változást vehet észre, azok az előfizetők, akiknek a megújítása kézi beszedésre kerül: lásd az [előfizetések és megújítások](https://hub.hellowp.io/hu/plugins/fluent-cart-pro/migracio-woocommerce-elofizetesek/) fejezetet.

### Az aktív előfizetések automatikusan megújulnak tovább?

Egyesek igen, másoknak a vásárlónak kell kifizetnie minden megújítást. A WooCommerce Subscriptions saját ütemtervet vezet, amelyhez nincs átjáró oldali előfizetés, amit örökölni lehetne, ezért az ütemtervet a FluentCart veszi át. Hogy automatikusan is terhelhető-e, az a mentett fizetési tokentől függ. Élesítés előtt olvasd el teljesen az [előfizetések és megújítások](https://hub.hellowp.io/hu/plugins/fluent-cart-pro/migracio-woocommerce-elofizetesek/) fejezetet.

### Kell hozzá a FluentCart Pro?

A WooCommerce-átvitelhez magához nem. A WooCommerce magjában nincs licenckezelő modul, így a csak Pro-ban elérhető licencátvitel itt nem érvényes.

### Mennyi ideig tart az átvitel?

A bolt méretétől függ:

- Kis boltok (néhány száz rendelés): két-öt perc.
- Közepes boltok (több ezer rendelés): tíz-harminc perc.
- Nagy boltok (több tízezer rendelés): harminc perc és pár óra között.

A CLI közepes és nagy boltoknál következetesen gyorsabb a varázslónál, mert elkerüli a HTTP-időtúllépéseket és a kötegenkénti körutakat.

### Maradjon aktív a Migrator bővítmény utána?

WooCommerce-átvitelnél nincs fenntartandó kompatibilitási réteg, tehát a kiegészítő a kész és ellenőrzött átvitel után nem csinál semmit. Tartsd aktívan, amíg ellenőrzöl, és szükséged lehet a naplókra vagy egy újrafuttatásra, utána kikapcsolhatod.

### Mikor kapcsolhatom ki a WooCommerce-t?

Ha ellenőrizted az átvitelt, újrakötötted az átjárókat, és a WooCommerce-oldalakat, rövidkódokat és blokkokat lecserélted a FluentCart megfelelőire. Ha előfizetéseket árulsz, a WooCommerce-t a következő megújítási dátum előtt kapcsold ki, hogy ne két számlázómotor működjön ugyanazon az ütemtervön. A WooCommerce-adatbázistáblákat hagyd a helyükön egy ideig tartaléknak: szinte semmibe nem kerülnek, és a Migrator nem módosította őket.

### Hol kapok segítséget, ha elakadok?

- Nézd meg a sikertelen rendelések naplóját: `wp fluent_cart_migrator migrate_from_woo --log`.
- Nézd meg előre a forrásadatot: `wp fluent_cart_migrator migrate_from_woo --stats`.
- Próbáld ki tesztkörnyezetben bekapcsolt [fejlesztői móddal](https://hub.hellowp.io/hu/plugins/fluent-cart-pro/migracio-fejlesztoi-mod/).
- Nyiss támogatási jegyet a FluentCart-fiókodon át.

További fejezetek: [a varázsló lépései](https://hub.hellowp.io/hu/plugins/fluent-cart-pro/migracio-woocommerce-varazslo/), [mi kerül át, és mi nem](https://hub.hellowp.io/hu/plugins/fluent-cart-pro/migracio-woocommerce-atvitt-adatok/), [előfizetések és megújítások](https://hub.hellowp.io/hu/plugins/fluent-cart-pro/migracio-woocommerce-elofizetesek/), [WP-CLI](https://hub.hellowp.io/hu/plugins/fluent-cart-pro/migracio-woocommerce-wpcli/).
