From 727025da888a637e8f897eb544f8cb3e0ed06f9d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mathias=20Gla=CC=88ser?= Date: Wed, 12 Aug 2026 17:53:26 +0200 Subject: [PATCH] Enforce Shopify order identifier handoff --- modules/erp/bestellungen/shopify-projection.php | 9 +++++++-- modules/erp/import-integration/shopify-delta-run.php | 9 +++++++-- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/modules/erp/bestellungen/shopify-projection.php b/modules/erp/bestellungen/shopify-projection.php index d737dc2..03f5f5f 100644 --- a/modules/erp/bestellungen/shopify-projection.php +++ b/modules/erp/bestellungen/shopify-projection.php @@ -171,13 +171,18 @@ function shopify_projection_stock_check(PDO $pdo, array $resolvedLines): void } } -function project_shopify_order(PDO $pdo, array $order, array $env, bool $dryRun = true): array +function project_shopify_order(PDO $pdo, string $orderGid, callable $orderLoader, bool $dryRun = true): array { - $orderGid = trim((string) ($order['id'] ?? '')); + $orderGid = trim($orderGid); if ($orderGid === '') { throw new RuntimeException('Shopify Order-GID fehlt'); } + $order = $orderLoader($orderGid); + if (!is_array($order) || (string) ($order['id'] ?? '') !== $orderGid) { + throw new RuntimeException("Shopify order {$orderGid} konnte nicht geladen werden"); + } + $existingStmt = $pdo->prepare('SELECT id FROM sales_order WHERE shopify_order_gid = :shopify_order_gid LIMIT 1'); $existingStmt->execute([':shopify_order_gid' => $orderGid]); $existingId = $existingStmt->fetchColumn(); diff --git a/modules/erp/import-integration/shopify-delta-run.php b/modules/erp/import-integration/shopify-delta-run.php index 8d2763d..04b9fd9 100644 --- a/modules/erp/import-integration/shopify-delta-run.php +++ b/modules/erp/import-integration/shopify-delta-run.php @@ -126,8 +126,13 @@ function run_shopify_delta(array $env, PDO $pdo, string $cutoff, bool $dryRun): } try { - $order = shopify_delta_load_order($env, (string) $summaryOrder['id']); - $result = project_shopify_order($pdo, $order, $env, $dryRun); + $orderGid = (string) $summaryOrder['id']; + $result = project_shopify_order( + $pdo, + $orderGid, + static fn (string $gid): array => shopify_delta_load_order($env, $gid), + $dryRun + ); if (($result['status'] ?? '') === 'already_imported') { $counters['already_imported']++; } else {