23-01-2026

This commit is contained in:
Kevin Adametz 2026-01-23 17:35:23 +01:00
parent a939cd51ef
commit a8b395e20d
248 changed files with 29342 additions and 4805 deletions

View file

@ -2,12 +2,12 @@
namespace App\Services;
use App\Models\ShoppingOrder;
use App\Http\Controllers\SettingController;
use App\Models\ShoppingOrder;
/**
* DHL Data Helper
*
*
* Central class for preparing DHL API data structures
* Prevents code duplication between DhlShipmentService and CreateShipmentJob
*/
@ -15,31 +15,28 @@ class DhlDataHelper
{
/**
* Prepare order data for DHL API v2
*
*
* Structure matches official DHL API v2 createOrders endpoint:
* https://developer.dhl.com/api-reference/parcel-de-shipping-post-parcel-germany-v2
*
* @param ShoppingOrder $order
* @param float $weight
* @param array $options
* @param array|null $dhlConfig Optional pre-loaded config (for queue jobs)
* @return array
* @param array|null $dhlConfig Optional pre-loaded config (for queue jobs)
*/
public static function prepareOrderData(ShoppingOrder $order, float $weight, array $options = [], ?array $dhlConfig = null): array
{
\Log::info('prepareOrderData', $options);
//die daten für das versandlabel werden immer aus dem Formular genommen, damit anpassungen möglich sind
if (!isset($options['shipping_address'])) {
// die daten für das versandlabel werden immer aus dem Formular genommen, damit anpassungen möglich sind
if (! isset($options['shipping_address'])) {
throw new \Exception('shipping_address is required');
}
$shippingAddress = $options['shipping_address'];
// Get DHL configuration for shipper data
if ($dhlConfig === null) {
$settingController = new SettingController();
$settingController = new SettingController;
$dhlConfig = $settingController->getDhlConfig();
}
$dimensions = isset($dhlConfig['dimensions'][$options['product_code']]) ? $dhlConfig['dimensions'][$options['product_code']] : $dhlConfig['dimensions']['default'];
return [
'order_id' => $order->id,
'weight_kg' => $weight,
@ -63,7 +60,7 @@ class DhlDataHelper
// Consignee data (recipient) - from modal form (can be modified)
'consignee' => [
'name' => trim(($shippingAddress['firstname'] ?? '') . ' ' . ($shippingAddress['lastname'] ?? '')),
'name' => trim(($shippingAddress['firstname'] ?? '').' '.($shippingAddress['lastname'] ?? '')),
'name2' => $shippingAddress['company'] ?? '',
'street' => $shippingAddress['address'] ?? '',
'houseNumber' => $shippingAddress['houseNumber'] ?? '',
@ -72,6 +69,8 @@ class DhlDataHelper
'country' => $shippingAddress['country']?->code ?? 'DE',
'email' => $shippingAddress['email'] ?? '',
'phone' => $shippingAddress['phone'] ?? '',
// DHL Postnummer für Packstation/Paketbox
'postNumber' => $shippingAddress['postnumber'] ?? null,
// Store individual fields for easier access
'firstname' => $shippingAddress['firstname'] ?? '',
'lastname' => $shippingAddress['lastname'] ?? '',
@ -83,7 +82,7 @@ class DhlDataHelper
'services' => $options['services'] ?? [],
// Custom reference for tracking
'reference' => 'Order-' . $order->id,
'reference' => 'Order-'.$order->id,
];
}
}