diff --git a/modules/erp/kontakte/service.php b/modules/erp/kontakte/service.php index fbeab54..a606dce 100644 --- a/modules/erp/kontakte/service.php +++ b/modules/erp/kontakte/service.php @@ -1,9 +1,21 @@ 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'), ], ];