Map order payload to addresses

This commit is contained in:
2026-06-16 19:26:58 +02:00
parent c410fae2e9
commit c0f819fd3d
+34 -10
View File
@@ -1,9 +1,21 @@
<?php <?php
declare(strict_types=1); declare(strict_types=1);
function payload_first_non_empty(array $data, array $keys, string $default = ''): string
{
foreach ($keys as $key) {
$value = trim((string) ($data[$key] ?? ''));
if ($value !== '') {
return $value;
}
}
return $default;
}
function find_or_create_party(PDO $pdo, array $data): int function find_or_create_party(PDO $pdo, array $data): int
{ {
$email = trim((string) ($data['E-Mail'] ?? $data['email'] ?? '')); $email = payload_first_non_empty($data, ['E-Mail', 'email', 'EmailKunde']);
if ($email !== '') { if ($email !== '') {
$stmt = $pdo->prepare('SELECT id FROM party WHERE email = :email LIMIT 1'); $stmt = $pdo->prepare('SELECT id FROM party WHERE email = :email LIMIT 1');
$stmt->execute([':email' => $email]); $stmt->execute([':email' => $email]);
@@ -13,10 +25,13 @@ function find_or_create_party(PDO $pdo, array $data): int
} }
} }
$name = trim((string) ($data['Vorname'] ?? $data['firstName'] ?? '')) . ' ' . trim((string) ($data['Nachname'] ?? $data['lastName'] ?? '')); $name = trim(
payload_first_non_empty($data, ['Vorname', 'firstName', 'Vorname_RgAdr', 'Vorname_LfAdr']) . ' ' .
payload_first_non_empty($data, ['Nachname', 'lastName', 'Nachname_RgAdr', 'Nachname_LfAdr'])
);
$name = trim($name); $name = trim($name);
if ($name === '') { if ($name === '') {
$name = trim((string) ($data['Firmenname'] ?? $data['company'] ?? '')); $name = payload_first_non_empty($data, ['Firmenname', 'company']);
} }
if ($name === '') { if ($name === '') {
$name = 'Unbekannter Kontakt'; $name = 'Unbekannter Kontakt';
@@ -44,13 +59,22 @@ function upsert_addresses(PDO $pdo, int $partyId, array $data): void
{ {
$addressData = [ $addressData = [
'billing' => [ 'billing' => [
'first_name' => trim((string) ($data['Vorname'] ?? $data['firstName'] ?? '')), 'first_name' => payload_first_non_empty($data, ['Vorname', 'firstName', 'Vorname_RgAdr']),
'last_name' => trim((string) ($data['Nachname'] ?? $data['lastName'] ?? '')), 'last_name' => payload_first_non_empty($data, ['Nachname', 'lastName', 'Nachname_RgAdr']),
'street' => trim((string) ($data['Strasse'] ?? $data['street'] ?? '')), 'street' => payload_first_non_empty($data, ['Strasse', 'street', 'Strasse_RgAdr']),
'house_number' => trim((string) ($data['Hausnummer'] ?? $data['houseNumber'] ?? '')), 'house_number' => payload_first_non_empty($data, ['Hausnummer', 'houseNumber', 'Hausnummer_RgAdr']),
'zip' => trim((string) ($data['PLZ'] ?? $data['zip'] ?? '')), 'zip' => payload_first_non_empty($data, ['PLZ', 'zip', 'PLZ_RgAdr']),
'city' => trim((string) ($data['Ort'] ?? $data['city'] ?? '')), 'city' => payload_first_non_empty($data, ['Ort', 'city', 'Stadt_RgAdr']),
'country_name' => trim((string) ($data['Land'] ?? $data['country'] ?? 'Switzerland')), 'country_name' => payload_first_non_empty($data, ['Land', 'country', 'Land_RgAdr'], 'Switzerland'),
],
'shipping' => [
'first_name' => payload_first_non_empty($data, ['Vorname_LfAdr']),
'last_name' => payload_first_non_empty($data, ['Nachname_LfAdr']),
'street' => payload_first_non_empty($data, ['Strasse_LfAdr']),
'house_number' => payload_first_non_empty($data, ['Hausnummer_LfAdr']),
'zip' => payload_first_non_empty($data, ['PLZ_LfAdr']),
'city' => payload_first_non_empty($data, ['Stadt_LfAdr', 'Ort_LfAdr']),
'country_name' => payload_first_non_empty($data, ['Land_LfAdr'], 'Switzerland'),
], ],
]; ];