DHL Modul v0.5 Shipping Label ok
This commit is contained in:
parent
480fdc65ed
commit
8fdaa0ba1d
122 changed files with 17938 additions and 2239 deletions
89
app/Services/DhlDataHelper.php
Normal file
89
app/Services/DhlDataHelper.php
Normal file
|
|
@ -0,0 +1,89 @@
|
|||
<?php
|
||||
|
||||
namespace App\Services;
|
||||
|
||||
use App\Models\ShoppingOrder;
|
||||
use App\Http\Controllers\SettingController;
|
||||
|
||||
/**
|
||||
* DHL Data Helper
|
||||
*
|
||||
* Central class for preparing DHL API data structures
|
||||
* Prevents code duplication between DhlShipmentService and CreateShipmentJob
|
||||
*/
|
||||
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
|
||||
*/
|
||||
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'])) {
|
||||
throw new \Exception('shipping_address is required');
|
||||
}
|
||||
$shippingAddress = $options['shipping_address'];
|
||||
|
||||
// Get DHL configuration for shipper data
|
||||
if ($dhlConfig === null) {
|
||||
$settingController = new SettingController();
|
||||
$dhlConfig = $settingController->getDhlConfig();
|
||||
}
|
||||
return [
|
||||
'order_id' => $order->id,
|
||||
'weight_kg' => $weight,
|
||||
'product_code' => $options['product_code'] ?? 'V01PAK',
|
||||
'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,
|
||||
|
||||
// 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 order
|
||||
'consignee' => [
|
||||
'name' => $shippingAddress['firstname'] ?? '' . ' ' . $shippingAddress['lastname'] ?? '',
|
||||
'name2' => $shippingAddress['company'] ?? '',
|
||||
'street' => $shippingAddress['address'] ?? '',
|
||||
'houseNumber' => $shippingAddress['houseNumber'] ?? '',
|
||||
'postalCode' => $shippingAddress['zipcode'] ?? '',
|
||||
'city' => $shippingAddress['city'] ?? '',
|
||||
'country' => $shippingAddress['country']?->code ?? 'DE',
|
||||
'email' => $shippingAddress['email'] ?? '',
|
||||
'phone' => $shippingAddress['phone'] ?? '',
|
||||
],
|
||||
// Package dimensions from options or defaults
|
||||
'dimensions' => [
|
||||
'length' => $options['length'] ?? 30,
|
||||
'width' => $options['width'] ?? 25,
|
||||
'height' => $options['height'] ?? 10,
|
||||
],
|
||||
|
||||
// Additional services
|
||||
'services' => $options['services'] ?? [],
|
||||
|
||||
// Custom reference for tracking
|
||||
'reference' => 'Order-' . $order->id,
|
||||
];
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue