Map order payload to addresses
This commit is contained in:
@@ -1,9 +1,21 @@
|
||||
<?php
|
||||
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
|
||||
{
|
||||
$email = trim((string) ($data['E-Mail'] ?? $data['email'] ?? ''));
|
||||
$email = payload_first_non_empty($data, ['E-Mail', 'email', 'EmailKunde']);
|
||||
if ($email !== '') {
|
||||
$stmt = $pdo->prepare('SELECT id FROM party WHERE email = :email LIMIT 1');
|
||||
$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);
|
||||
if ($name === '') {
|
||||
$name = trim((string) ($data['Firmenname'] ?? $data['company'] ?? ''));
|
||||
$name = payload_first_non_empty($data, ['Firmenname', 'company']);
|
||||
}
|
||||
if ($name === '') {
|
||||
$name = 'Unbekannter Kontakt';
|
||||
@@ -44,13 +59,22 @@ function upsert_addresses(PDO $pdo, int $partyId, array $data): void
|
||||
{
|
||||
$addressData = [
|
||||
'billing' => [
|
||||
'first_name' => trim((string) ($data['Vorname'] ?? $data['firstName'] ?? '')),
|
||||
'last_name' => trim((string) ($data['Nachname'] ?? $data['lastName'] ?? '')),
|
||||
'street' => trim((string) ($data['Strasse'] ?? $data['street'] ?? '')),
|
||||
'house_number' => trim((string) ($data['Hausnummer'] ?? $data['houseNumber'] ?? '')),
|
||||
'zip' => trim((string) ($data['PLZ'] ?? $data['zip'] ?? '')),
|
||||
'city' => trim((string) ($data['Ort'] ?? $data['city'] ?? '')),
|
||||
'country_name' => trim((string) ($data['Land'] ?? $data['country'] ?? 'Switzerland')),
|
||||
'first_name' => payload_first_non_empty($data, ['Vorname', 'firstName', 'Vorname_RgAdr']),
|
||||
'last_name' => payload_first_non_empty($data, ['Nachname', 'lastName', 'Nachname_RgAdr']),
|
||||
'street' => payload_first_non_empty($data, ['Strasse', 'street', 'Strasse_RgAdr']),
|
||||
'house_number' => payload_first_non_empty($data, ['Hausnummer', 'houseNumber', 'Hausnummer_RgAdr']),
|
||||
'zip' => payload_first_non_empty($data, ['PLZ', 'zip', 'PLZ_RgAdr']),
|
||||
'city' => payload_first_non_empty($data, ['Ort', 'city', 'Stadt_RgAdr']),
|
||||
'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'),
|
||||
],
|
||||
];
|
||||
|
||||
|
||||
Reference in New Issue
Block a user