getDhlConfig(); } $resolver = new DhlProductResolver; $destinationCountryCode = $shippingAddress['country']?->code; if (! $destinationCountryCode) { throw new \Exception('shipping_address.country is required'); } $resolvedDhlProduct = $resolver->resolveForShipment( $destinationCountryCode, $options['product_code'] ?? null, $dhlConfig['default_product'] ?? 'V01PAK' ); $dimensions = $dhlConfig['dimensions'][$resolvedDhlProduct['product_code']] ?? $dhlConfig['dimensions']['default']; return [ 'order_id' => $order->id, 'weight_kg' => $weight, 'product_code' => $resolvedDhlProduct['product_code'], 'label_format' => $options['label_format'] ?? $dhlConfig['label_format'] ?? 'PDF', 'print_format' => $options['print_format'] ?? $dhlConfig['print_format'] ?? null, 'retoure_print_format' => $options['retoure_print_format'] ?? $dhlConfig['retoure_print_format'] ?? null, 'print_only_if_codeable' => (bool) ($options['print_only_if_codeable'] ?? $dhlConfig['print_only_if_codeable'] ?? config('dhl.print_only_if_codeable', true)), // Shipper data (sender) - from admin settings 'shipper' => [ 'name' => $dhlConfig['sender']['company'] ?? 'mivita care gmbh', 'name2' => $dhlConfig['sender']['name'] ?? '', 'street' => $dhlConfig['sender']['street'] ?? 'Leinfeld', 'houseNumber' => $dhlConfig['sender']['house_number'] ?? '2', 'postalCode' => $dhlConfig['sender']['postalCode'] ?? '87755', 'city' => $dhlConfig['sender']['city'] ?? 'Kirchhaslach', 'country' => $dhlConfig['sender']['country'] ?? 'DE', 'email' => $dhlConfig['sender']['email'] ?? 'versand@mivita.care', 'phone' => $dhlConfig['sender']['phone'] ?? '+49 123 456789', ], // Consignee data (recipient) - from modal form (can be modified) 'consignee' => [ 'name' => trim(($shippingAddress['firstname'] ?? '').' '.($shippingAddress['lastname'] ?? '')), 'name2' => $shippingAddress['company'] ?? '', 'street' => $shippingAddress['address'] ?? '', 'houseNumber' => $shippingAddress['houseNumber'] ?? '', 'postalCode' => $shippingAddress['zipcode'] ?? '', 'city' => $shippingAddress['city'] ?? '', 'country' => $resolvedDhlProduct['country_code'], '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'] ?? '', ], // Package dimensions from options or defaults 'dimensions' => $dimensions, // Additional services 'services' => $options['services'] ?? [], // Custom reference for tracking 'reference' => self::normalizeReference($options['reference'] ?? $options['shipment_reference'] ?? null, $order), ]; } private static function normalizeReference(?string $reference, ShoppingOrder $order): string { $reference = trim((string) $reference); if ($reference === '') { return 'Order-'.$order->id; } return mb_substr(preg_replace('/\s+/', ' ', $reference), 0, 35); } }