Commit graph

7 commits

Author SHA1 Message Date
7da49e2027 Warenwirtschaft: AP-38 dokumentiert — Plan-Abschnitt + Connector-README (Cron)
Shop-Diagnose 28.08. (SSH): Warteliste leer ([]), alles abgearbeitet, Ampel grün.
- Plan V7.0: eigener AP-38-Abschnitt (Diagnose/Ursache/Behebung); Statustabelle
  auf „alle APs erledigt" aktualisiert (nur noch Connector-Rollout v1.6.0 offen).
- Neu: dev/partnercenter-api/README.md — Status-Ampel, Cron einrichten/prüfen
  (wp cron event list/schedule/run), Fehlersuche (Auth/curl), v1.6.0-Änderungen,
  Rollout-Checkliste.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-28 11:14:53 +00:00
b6ca33288c Warenwirtschaft: AP-38 — Status-Cron selbstheilend einplanen (Ursache Ampel-Bug)
Shopseitige Diagnose (SSH, 28.08.): der Hook partnercenter_api_fetch_orders_status
war in WP-Cron GAR NICHT eingeplant (grep leer), obwohl WP-Cron läuft (System-Cron
trifft wp-cron.php alle 5 Min, DISABLE_WP_CRON=1 korrekt kompensiert). Damit pollte
nichts /api/wp/status → jede abgeschlossene Bestellung blieb auf 'open' = orange.

Ursache: Der Event wurde nur im register_activation_hook eingeplant und im
Deaktivierungs-Hook gelöscht. Ein In-Place-Update (ohne Reaktivierung) ließ ihn
dauerhaft verschwinden.

Fix (Connector v1.6.0): partnercenter_api_ensure_cron() auf 'init' — plant den
stündlichen Event nach, falls er fehlt (wp_next_scheduled-Guard). Selbstheilend,
übersteht künftige Updates.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-28 11:07:09 +00:00
0c8d321f66 Warenwirtschaft: AP-38 — ERP-/Connector-Status-Mapping vervollständigt
Die orange Ampel bei abgeschlossenen Bestellungen ist KEIN ERP-Fehler: der
Endpoint /api/wp/status liefert für versendete Bestellungen bereits sent/close
(Live-DB: 111× shipped=2, 1× shipped=3). Ursache liegt shopseitig (Cron/Auth) —
wird per SSH geprüft. Unabhängig davon die latenten Mapping-Lücken geschlossen:

ERP (ShoppingOrder::$apiShippedTypes):
- Status 5 (Wartestellung) fehlte und lieferte den Default 'free' (im Shop gar
  kein Licht). Jetzt 5 => 'process' (Shop-Ampel orange = in Bearbeitung).

Connector (partnercenter-api, Teil von v1.6.0 — noch nicht ausgerollt):
- admin/post-list.php: Ampel-Switch deckt jetzt 'pick_up' (Abholung ⇒ grün) und
  'cancel' (storniert ⇒ neue rote Kugel) ab; vorher fielen beide auf ⚠️.
- woocommerce/order-status.php: 'pick_up' und 'cancel' gelten jetzt als
  Endzustände und fallen aus der stündlichen Nachfrage-Liste
  (_partnercenter_api_unclear_order_ids) — vorher wurden 12 stornierte
  Bestellungen dauerhaft weiter gepollt.

Test: AP-38-Mapping prüft alle shipped-Werte (kein stiller 'free'-Fallback mehr).
Suite 338 grün.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-28 11:01:25 +00:00
8c938eed0a Warenwirtschaft: AP-34 — Varianten-Artikelnummer korrekt zuordnen
Bestellungen mit Produktvarianten (z. B. Deocreme MINI) wurden im Versand nicht
automatisch zugeordnet und mussten manuell nachgepflegt werden. Zwei
zusammenwirkende Fehler:

1. Connector (partnercenter-api v1.6.0): compose_cart_content() las per
   get_product_id() das Elternprodukt und sendete dessen SKU — nie die eigene
   Artikel-Nr. der Variation. Jetzt liest get_product() (variations-aware) die
   Variations-SKU, Fallback auf Eltern-SKU nur wenn leer. Plugin muss neu in den
   Shop ausgerollt werden.

2. Importer (ShoppingUserController::prepareOrder): matchte nur den Teil vor dem
   ersten „-" gegen wp_number. In der Live-DB ist jede Variante eine eigene
   products-Zeile mit eigener wp_number (kein main_product_id, keine „-"-Suffixe).
   Jetzt Zuordnung primär über die VOLLE SKU gegen wp_number; der „-"-Split bleibt
   nur Legacy-Fallback für alte Variations-SKUs „basisnr-suffix".

Tests: neue AP-34-Prüfung (MINI 100026 landet beim MINI-Produkt, nicht beim
50-ml-Basisprodukt 100006) + Legacy-Fallback-Test. Suite 327 grün.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-28 09:32:51 +00:00
1b9b6adc44 Warenwirtschaft: Review-Fix — AP-32-Label als Base64 übertragen (Connector 1.5.0)
Die Brücke hätte live nicht funktioniert: Connector 1.4.0 sendete die
label_url aus dem per 'deny from all' geschützten DHL-Ordner (403), dazu
SSRF-Risiko durch serverseitigen Abruf einer Client-URL und Timeout-
Mismatch (20 s Download vs. 5 s WordPress-Default). Der Connector liest
die PDF jetzt vom Shop-Dateisystem (realpath-Pinning auf wp-uploads) und
sendet sie Base64; storeWpLabel() validiert und speichert ohne Http::get;
tote Shop-Link-Fallbacks aus den Views entfernt; Connector-Timeout 30 s.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-20 10:06:39 +00:00
4f9dca88de Connector-Plugin 1.4.0: DHL-Label an das Partnercenter übertragen
compose_label_data() liest das Meta-Feld _pr_shipment_dhl_label_tracking
(DHL for WooCommerce); write_order_items() schickt Label-URL + Sendungsnummer
beim wp/order-Transfer mit. Neuer Listener auf pr_save_dhl_label_tracking
reicht Labels nach, die erst nach der Übertragung erstellt werden (nur bei
bereits übertragenen Bestellungen, via neuem wp/label-Endpoint).
Connector-Doku auf die konkrete Umsetzung aktualisiert.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-17 11:42:30 +00:00
592b03ace5 Partnercenter-API: WooCommerce-Plugin (v1.3.3) als Referenz eingecheckt
Der in den Partner-Shops installierte WooCommerce-Connector, der Bestellungen
per REST an /api/wp/* uebertraegt (Kunde anlegen, Warenkorb, Status-Abgleich).
Grundlage fuer AP-13 (Shop-Bestandsabzug beim Versand).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-15 15:46:16 +00:00