Vyriesene, problem bol v tom ze variabilny symbol (cislo objednavky) moze byt iba cislo, ale u nas to bol kod krajiny + cislo (HU125885). Pomohol filter:
add_filter('wc_dpd_export_data', function($data, $order) {
// Helpery pre čítanie a zápis hlbokých polí
$get = function(array $a, array $path, $default = null) {
foreach ($path as $key) {
if (!is_array($a) || !array_key_exists($key, $a)) return $default;
$a = $a[$key];
}
return $a;
};
$set = function(array &$a, array $path, $value) {
$ref =& $a;
foreach ($path as $key) {
if (!isset($ref[$key]) || !is_array($ref[$key])) $ref[$key] = [];
$ref =& $ref[$key];
}
$ref = $value;
};
// Cesta k variableSymbol v tvojej štruktúre
$p_varsym = ['params','shipment',0,'services','cod','variableSymbol'];
// Oprava COD variableSymbol -> len číslice
$orig_varsym = (string) $get($data, $p_varsym, '');
$clean_varsym = preg_replace('/\D+/', '', $orig_varsym ?? '');
if ($clean_varsym === '' && is_a($order, 'WC_Order')) {
$clean_varsym = (string) $order->get_id(); // fallback
}
$set($data, $p_varsym, $clean_varsym);
return $data;
}, 10, 2);
-
This reply was modified 7 months ago by
treska.eu.