Map order payload to addresses
This commit is contained in:
@@ -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'),
|
||||||
],
|
],
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user