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

> A sikertelen fizetések naplója, a licencellenőrzés, a gyakori hibák megoldása, az átvitel visszaállítása é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 fizetések naplója

Ha egy rendelés átvitele nem sikerül (sérült rekord, hiányzó vásárlóhivatkozás, hibás tételek, átjáróadat-ellentmondás), a hiba a `_fluent_edd_failed_payment_logs` WordPress-beállításba kerül, a futás megszakítása helyett.

### Hibák megtekintése a CLI-ből

```bash
wp fluent_cart_migrator migrate_from_edd --log
```

Minden bejegyzés mutatja:

| Mező | Jelentése |
|---|---|
| `edd_id` | A hibás EDD-rendelés azonosítója |
| `message` | Emberi nyelvű hibaüzenet |
| `error_type` | Rövid kód a hibakategóriáról |
| `stage` | Hol történt a hiba a folyamatban (`data_setup`, `validation`, `migration`) |

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

Az átvitel befejező képernyője kinyitható hibanapló-szakaszt mutat. Kattints rá, és ugyanazt az adatot látod, mint a CLI `--log` kimenetében.

### Mit tegyél egy hibás bejegyzéssel

1. Nyisd meg az eredeti EDD-rendelést a WordPress adminban (az EDD felületén a rendelések között).
2. Vesd össze a hibaüzenettel. Az ok általában kézenfekvő (hiányzó vásárlói e-mail-cím, törölt termékhivatkozás, törött metaadat).
3. Javítsd ki a forrásadatot az EDD-ben.
4. Futtasd újra a fizetések szakaszát: `wp fluent_cart_migrator migrate_from_edd --payments`. A Migrator csak azokat a rendeléseket veszi fel, amelyek még nem kerültek át sikeresen.

## A licencek épségének ellenőrzése

Ha a boltod EDD Software Licensinget használ, az átvitel után futtasd az ellenőrző parancsot:

```bash
wp fluent_cart_migrator migrate_from_edd --verify_license
```

Összeveti az EDD licencrekordjait a FluentCart licencrekordjaival, és jelzi:

- az EDD-ben meglévő, de a FluentCartból hiányzó licenceket;
- az állapoteltéréseket (aktív az EDD-ben, de inaktív a FluentCartban, vagy fordítva).

Minden eltérésnél vizsgáld meg, hogy a forráslicenc rendellenes-e (szülőrendelés nélküli licenc, törölt webhelyre mutató aktiválás), vagy az átvitel valóban kihagyta. Ha valóban kihagyta, a fizetések szakaszának újrafuttatása általában megoldja, mert a licencek a rendelések feldolgozásának részeként kerülnek át.

## Gyakori hibák

### „EDD 3.0 or later required” üzenet

Az összeférhetőségi ellenőrzés megállítja az átvitelt, ha EDD 2.x-et talál a régi, bejegyzéstípus-alapú adatmodellel. A Migrator csak az EDD 3.x v3 táblaszerkezetét támogatja.

**Megoldás:** frissítsd az Easy Digital Downloadst 3.x-re. Az EDD 3.0 beépített átviteli eszközzel konvertálja a régi adatot a v3 táblákba. Futtasd le ezt előbb, majd térj vissza a FluentCart Migratorhoz.

### Az átvitel félúton megakad

A megakadt átvitel szinte mindig szerveroldali időtúllépés: a PHP `max_execution_time` megszakította a kérést, vagy a tárhely folyamatfelügyelője leállította a hosszú szkriptet.

**Megoldás a varázslóból:** egyszerűen frissítsd az oldalt. A varázsló az utolsó befejezett kötegtől folytatja. Ha újra megakad, csökkentsd a **Köteg mérete** legördülő lista értékét (próbáld 50-nel vagy 25-tel), hogy minden köteg bőven beleférjen a tárhely időkorlátjába.

**Megoldás a CLI-ből:** a CLI teljesen megkerüli a HTTP-időtúllépést. Ha a varázsló folyton megakad, válts a CLI-re:

```bash
wp fluent_cart_migrator migrate_from_edd --all
```

### Elfogyó memória

Nagy boltoknál a PHP-nak elfogyhat a memóriája a fizetések szakaszában.

**Megoldás:** ideiglenesen adj a PHP-nak több mozgásteret az átvitel futtatásához:

```bash
php -d memory_limit=1024M $(which wp) fluent_cart_migrator migrate_from_edd --all
```

Ha így is eléred a korlátot, az `--all` helyett futtasd külön a szakaszokat:

```bash
wp fluent_cart_migrator migrate_from_edd --products
wp fluent_cart_migrator migrate_from_edd --payments
wp fluent_cart_migrator migrate_from_edd --recount
```

Minden hívás saját memóriakörnyezetet kap.

### „Customer not found” hibák

Ha a hibák „customer not found” üzenetet mutatnak, az EDD-rendelés olyan vásárlórekordra hivatkozik, amelyet töröltek az `edd_customers` táblából, de a rendelés metaadatában még megvan.

**Megoldás:** ha az elsődleges keresés elbukik, a Migrator a rendelés e-mail-címéből és címmetaadatából hoz létre vásárlót. Ha a rendelésnek egyáltalán nincs használható e-mail-címe, a fizetések szakaszának újrafuttatása előtt kézzel kell javítanod a rendelést az EDD-ben.

### Az előfizetések számlázásszámai rosszak

Az újraszámolási szakasz után néha egy előfizetés számlázásszáma nem egyezik azzal, amit vártál.

**Megoldás:** ez általában azt jelenti, hogy a megújító rendeléseket az EDD-ben sosem kapcsolták a szülőelőfizetéshez (hiányzik a `subscription_id`). Az újraszámolás a `parent_order_id` alapján automatikusan összekapcsolja az árván maradt megújításokat, de csak akkor, ha van felderíthető kapcsolat. Futtasd újra kézzel az újraszámolást:

```bash
wp fluent_cart_migrator migrate_from_edd --recount
```

Ha a számok még mindig eltérnek, nézd meg a megújító rendeléseket a FluentCartban, és ellenőrizd, hogy a `parent_id` mezőjük megegyezik-e az eredeti előfizetés szülőrendelésének azonosítójával.

### A licenc-webhelyaktiválások nem maradtak meg

Ha egy vásárló azt jelzi, hogy a licence hirtelen érvénytelen egy korábban aktivált webhelyen, ellenőrizd, hogy a webhely URL-je megmaradt-e az átvitelkor.

**Megoldás:** a Migrator normalizálja a webhely-URL-eket (kisbetű, protokoll nélkül, záró perjel nélkül). Ha a vásárló webhely-URL-jét szokatlanul tárolta az EDD (portszámmal, `:` karakterrel, nem ASCII karakterekkel), előfordulhat, hogy a normalizálás után nem egyezett. Nézd meg közvetlenül a FluentCart-licencrekord webhelyaktiválásait, és szükség esetén add hozzá kézzel a webhelyet.

### Hiányzó előfizetés-UUID-k

Néhány előfizetés UUID nélkül maradhat az átvitel után, ha a forrásrekord részben sérült volt. Futtasd a dedikált javítást:

```bash
wp fluent_cart_migrator fix_subs_uuid
```

Ez pótolja a hiányzó UUID-ket anélkül, hogy máshoz nyúlna.

## Átvitel visszaállítása

Ha egy tesztkörnyezeti átvitel problémás, és elölről szeretnéd kezdeni, a Migrator tiszta visszaállítási útvonalakat ad. Mindegyik a [fejlesztői módhoz](https://hub.hellowp.io/hu/plugins/fluent-cart-pro/migracio-fejlesztoi-mod/) kötött: a `wp-config.php`-ban meg kell adnod a `FLUENT_CART_DEV_MODE` állandót, különben egyik útvonal sem működik. Ez szándékos: a visszaállítás pusztító, és az állandóhoz kötés lehetetlenné teszi, hogy véletlenül az admin felületről indítsd el.

> **Élesben soha ne futtass visszaállítást.** A visszaállítás eldobja a FluentCart tábláit, és törli az átvitt bejegyzésadatot. Csak tesztelő, helyi vagy más módon elszigetelt környezetben használd.

### A visszaállítás gombja a varázslóban

Ha a fejlesztői mód aktív, és a varázsló korábbi átvitelt észlel az oldalon, az átvitel előtti áttekintő képernyőn az „előző átvitel észlelve” értesítésben megjelenik egy átvitel-visszaállító hivatkozás. Rákattintva megerősítést kér, majd lefuttatja a visszaállítást. Éles oldalon (fejlesztői mód nélkül) ez a hivatkozás teljesen rejtett: az értesítés ettől még megjelenik, és megerősíti, hogy az előző futás befejeződött, csak a visszaállítási lehetőség nélkül.

### 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 indulhass.

**Adatbázisséma:**

- eldobja a FluentCart tábláit a `DBMigrator::refresh()` hívással.

**Törölt WordPress-beállítások:**

- `__fluent_cart_edd3_migration_steps` (a szakaszok haladása);
- `_fluent_edd_failed_payment_logs` (rendelésenkénti hibarekordok);
- `__fluent_cart_migration_summary` (összesítő számok).

**Átvitt bejegyzésadat:**

- törli az átvitel által létrehozott FluentCart-termékbejegyzéseket;
- eltávolítja az átviteli metaadatot az EDD-bejegyzésekről (`_fcart_migrated_id`, `__edd_migrated_variation_maps`).

Az eredeti EDD-adatodhoz sosem nyúl. Csak a FluentCart-oldali rekordokat és a kétirányú leképezési metaadatot érinti.

### `reset` és `migrate_fresh`

Mindkettő pusztító, de különböző szinten működnek.

| Parancs | Hatókör | Mikor használd |
|---|---|---|
| `wp fluent_cart_migrator migrate_from_edd --reset` | Törli az átvitt adatokat és az átviteli állapotot | Gyors visszaállítás a próbafuttatások között |
| `wp fluent_cart_migrator reset` | Ugyanaz, mint a `--reset`, önálló parancsként | Ugyanaz a helyzet, másik belépési pont |
| `wp fluent_cart_migrator migrate_fresh` | Visszaállítás és sémafrissítés | Ha maga a FluentCart-séma megváltozott (bővítményfrissítéskor vagy fejlesztés közben) |

A legtöbb tesztkörnyezeti munkafolyamathoz elég a `--reset` vagy a `reset`. A `migrate_fresh`-hez akkor nyúlj, ha a FluentCart adatbázissémája frissült, és garantáltan tiszta lapot szeretnél.

### Próbafuttatási munkafolyamat tesztkörnyezetben

Egy tipikus próbahurok:

1. Klónozd az éles oldalt a tesztkörnyezetbe, az EDD 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 bővítményt.
4. Futtasd le a teljes átvitelt a varázslóval vagy a CLI-vel.
5. Nézd át a termékeket, rendeléseket, előfizetéseket, licenceket és kuponokat.
6. Jegyezd fel, mit kell a forrásadatban kitakarítani az éles futás előtt (duplikált vásárlók, törött termékek, régi rekordok).
7. Állítsd vissza az átvitelt: `wp fluent_cart_migrator migrate_from_edd --reset`.
8. Takarítsd ki a forrásadatot.
9. Futtasd újra a teljes átvitelt.
10. Ha a tesztkörnyezetben az eredmény megfelelő, ismételd meg az éles oldalon (kikapcsolt fejlesztői móddal).

A következmények nélküli ismétlés az egyszeri átvitelt szabályozott, nyomon követhető folyamattá teszi.

### Megerősítő kérdések

Minden visszaállítási útvonal megerősítést kér az adatok törlése előtt, a CLI-ben és a varázslóban is. A CLI-kérdést a szokásos WP-CLI `--yes` kapcsolóval kihagyhatod:

```bash
wp fluent_cart_migrator migrate_from_edd --reset --yes
```

Ezt csak átnézett szkriptekben tedd. A megerősítés okkal van.

## Gyakori kérdések

### A meglévő vásárlóknak kell tenniük valamit?

Nem. A fiókjaik, rendelési előzményeik, előfizetéseik és licenceik mind átkerülnek. A meglévő WordPress-belépési adataikkal lépnek be, és mindent ott találnak, ahol várják, csak most a FluentCartban az EDD helyett.

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

Igen. Az előfizetési rekordok az átjáró előfizetés-azonosítóival (Stripe, PayPal) kerülnek át. Amíg ugyanazokat az átjáró-fiókokat kötöd újra a FluentCartban, a megújítások fennakadás nélkül folytatódnak. A PayPal Standard előfizetéseket a Migrator [visszafelé kompatibilitási rétege](https://hub.hellowp.io/hu/plugins/fluent-cart-pro/migracio-edd-visszafele-kompatibilitas/) kezeli.

### A vásárlók szoftverlicencei tovább működnek?

Igen. A Migrator elfogja az EDD-formátumú licenc-API hívásokat (aktiválás, kikapcsolás, érvényesség-ellenőrzés, frissítésellenőrzés), és a FluentCarton át irányítja őket. A vásárlóknak nem kell semmit frissíteniük vagy újrakonfigurálniuk.

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

Soha. A Migrator csak olvassa az EDD adatbázistábláit. Az eredeti adatod érintetlen. Az egész átvitelt ellenőrizheted az EDD-áruházad ellen, mielőtt bármit átállítanál.

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

Egyszerűen indítsd újra. A Migrator követi a saját haladását, kihagyja a kész szakaszokat, és a fizetések szakaszát pontosan abból a kötegből folytatja, ahol megállt. Nem keletkezik duplikált adat.

### 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 perctől pár óráig.

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 oda-vissza kéréseket.

### 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 újrafuttatása kód alapján frissíti a meglévő kuponokat. Az újraszámolás mindig az aktuális adatokból számol újra. Az újrafuttatás nem okoz duplikált rekordot.

### Mi a helyzet a WooCommerce vagy a SureCart átvitellel?

A WooCommerce támogatott, a saját útmutatóját lásd az [Átköltözés WooCommerce-ből](https://hub.hellowp.io/hu/plugins/fluent-cart-pro/migracio-woocommerce-attekintes/) fejezetben. A SureCart a forrásválasztóban még „hamarosan” jelzéssel látszik.

### Hol kérhetek segítséget, ha elakadok?

- Nézd meg a sikertelen fizetések naplóját: `wp fluent_cart_migrator migrate_from_edd --log`.
- Futtasd a licencellenőrzést: `wp fluent_cart_migrator migrate_from_edd --verify_license`.
- Ha egy vásárló az átvitel után problémát jelez, olvasd el a [Visszafelé kompatibilitás](https://hub.hellowp.io/hu/plugins/fluent-cart-pro/migracio-edd-visszafele-kompatibilitas/) fejezetet.
- Nyiss támogatási jegyet a FluentCart-fiókodon keresztül.
