From 26d553385f0722eb44089fd8909a79127dee95bd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mathias=20Gla=CC=88ser?= Date: Tue, 16 Jun 2026 18:43:33 +0200 Subject: [PATCH] Send only order number to Excel webhook --- modules/erp/import-integration/service.php | 100 +-------------------- 1 file changed, 2 insertions(+), 98 deletions(-) diff --git a/modules/erp/import-integration/service.php b/modules/erp/import-integration/service.php index 6e00d14..49d13fe 100644 --- a/modules/erp/import-integration/service.php +++ b/modules/erp/import-integration/service.php @@ -110,76 +110,6 @@ function build_n8n_webhook_headers(array $localEnv): array return $headers; } -function load_excel_order_payload(PDO $pdo, int $orderId): array -{ - $stmt = $pdo->prepare( - "SELECT - so.external_ref, - so.order_date, - so.order_source, - so.order_status, - so.payment_status, - p.name AS party_name, - p.email AS party_email, - a.first_name, - a.last_name, - a.company_name, - a.street, - a.house_number, - a.zip, - a.city, - a.country_name, - a.country_iso2 - FROM sales_order so - LEFT JOIN party p ON p.id = so.party_id - LEFT JOIN LATERAL ( - SELECT * - FROM address - WHERE party_id = so.party_id - AND type = 'billing' - ORDER BY id DESC - LIMIT 1 - ) a ON TRUE - WHERE so.id = :order_id - LIMIT 1" - ); - $stmt->execute([':order_id' => $orderId]); - $row = $stmt->fetch(PDO::FETCH_ASSOC); - if (!is_array($row)) { - return []; - } - - $firstName = trim((string) ($row['first_name'] ?? '')); - $lastName = trim((string) ($row['last_name'] ?? '')); - $companyName = trim((string) ($row['company_name'] ?? '')); - $partyName = trim((string) ($row['party_name'] ?? '')); - $fullName = trim($firstName . ' ' . $lastName); - if ($fullName === '') { - $fullName = $partyName !== '' ? $partyName : $companyName; - } - - return [ - 'Bestellnummer' => (string) ($row['external_ref'] ?? ''), - 'Name' => $fullName, - 'Vorname' => $firstName, - 'Nachname' => $lastName, - 'Firmenname' => $companyName !== '' ? $companyName : $partyName, - 'Email' => trim((string) ($row['party_email'] ?? '')), - 'Rechnungsadresse' => [ - 'Vorname' => $firstName, - 'Nachname' => $lastName, - 'Firmenname' => $companyName !== '' ? $companyName : $partyName, - 'Strasse' => trim((string) ($row['street'] ?? '')), - 'Hausnummer' => trim((string) ($row['house_number'] ?? '')), - 'PLZ' => trim((string) ($row['zip'] ?? '')), - 'Ort' => trim((string) ($row['city'] ?? '')), - 'Land' => trim((string) ($row['country_name'] ?? '')), - 'LandIso2' => trim((string) ($row['country_iso2'] ?? '')), - 'Email' => trim((string) ($row['party_email'] ?? '')), - ], - ]; -} - function trigger_shipping_label_flow(array $order, array $localEnv): array { $url = derive_label_webhook_url($localEnv); @@ -241,7 +171,7 @@ function dispatch_order_import_webhooks(PDO $pdo, array $localEnv, int $limit = $pdo->beginTransaction(); $stmt = $pdo->query( - "SELECT id, aggregate_id, payload, attempt_count + "SELECT id, payload, attempt_count FROM outbound_webhook_event WHERE event_type = 'order.imported' AND status IN ('pending', 'failed') @@ -297,33 +227,7 @@ function dispatch_order_import_webhooks(PDO $pdo, array $localEnv, int $limit = } throttle_webhook_channel('excel', 5); - $payload = load_excel_order_payload($pdo, (int) $event['aggregate_id']); - if ($payload === []) { - $update = $pdo->prepare( - "UPDATE outbound_webhook_event - SET status = 'dead_letter', - last_attempt_at = NOW(), - last_error = :last_error, - next_attempt_at = NOW(), - attempt_count = :attempt_count - WHERE id = :id" - ); - $update->execute([ - ':last_error' => 'Could not build Excel payload from order data', - ':attempt_count' => $attemptCount, - ':id' => $eventId, - ]); - - $pdo->commit(); - $summary['processed']++; - $summary['failed']++; - $summary['deadLetter']++; - $summary['ok'] = false; - $summary['message'] = 'Could not build Excel payload from order data'; - continue; - } - - $result = post_json($url, $payload, $headers, 20); + $result = post_json($url, ['Bestellnummer' => $externalRef], $headers, 20); $summary['processed']++; $summary['status'] = $result['status'];