• Resolved treska.eu

    (@treskaeu)


    Na jednom eshope mame problem, ide o madarsky eshop, a pri exporte objednavky nam pise hlasku “COD purpose must be numeric value”. Pritom objednavka je cele cislo:

    a eshop celkovo nema desatinne cisla nastavene…

    • This topic was modified 7 months ago by treska.eu.
    • This topic was modified 7 months ago by treska.eu.
Viewing 1 replies (of 1 total)
  • Thread Starter treska.eu

    (@treskaeu)

    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.
Viewing 1 replies (of 1 total)

The topic ‘COD purpose must be numeric value’ is closed to new replies.