• Resolved sonnic

    (@ikozlik)


    Oprosti jer ponovo pitam istu temu, ali nikako mi nije jasno na koji nacin mozemo dodijeliti proizvodu jedinicu mjere, a da ista bude poslana u Solo i prikazana na racunu?

    Znam da solo ima predefinirane jedinice mjere i da se preko API-ja mora slati ID jedinice to je sve ok, ali postoji li nacin da se umijesto svaki puta defaultne 1 posalje neki drugi ID po proizvodu?

    Npr. mogu u ACF kreirati polje SOLO unit measure i dodijeliti iste vrijednosti kao iz API dokumentacije, ali kako onda tu vrijednost povuci da se posalje do SOLO-a?

    Thx

Viewing 11 replies - 1 through 11 (of 11 total)
  • Plugin Author Denis ?oljom

    (@dingo_d)

    Pozdrav!

    Postoji filter woo_solo_api_modify_request_body koji prima 2 argumenta: $requestBody i $order.

    Svaki put kad se napravi request, tu se mogu onda mijenjati jedinicne mjere tako da se izmjeni

    $requestBody["jed_mjera_{$itemNo}"] = CUSTOM_MJERA; za svaki item (ovaj $itemNo oznacava svaki element u narudzbi).

    Neki proto kod bi izgledao ovako:

    
    add_filter('woo_solo_api_modify_request_body', 'custom_prefix_modify_request');
    
    function custom_prefix_modify_request($requestBody, $order) {
    
        if(!function_exists('get_field')) {
            // No ACF!
            return $requestBody;
        }
    
        $acfMeasure = get_field('custom_measure_for_order') ?? 1;
    
        // Filter by order (ID, or some other identifier).
    
        // Need to see which jedinicna mjera needs to be changed.
        $requestBody['jed_mjera_1'] = $acfMeasure;
    
        return $requestBody;
    }
    
    Thread Starter sonnic

    (@ikozlik)

    Muchas gracias Se?or.
    To bude radilo, prilagodim, ali sad mi je jasnije.

    Plugin Author Denis ?oljom

    (@dingo_d)

    Drago mi je da sam uspio pomoci ??

    Thread Starter sonnic

    (@ikozlik)

    Pokusavam ali mi ne ide.
    Stalno dobivam ovaj error message u Solo API logu:

    Too few arguments to function custom_prefix_modify_request(), 1 passed in /home/veggiehr/public_html/new/wp-includes/class-wp-hook.php on line 309 and exactly 2 expected

    Nisam bas ziher kak prebrojati koliko ima $itemNo i onda za svaki izmjeniti brojku. ??

    Plugin Author Denis ?oljom

    (@dingo_d)

    A moj bed, add_filter('woo_solo_api_modify_request_body', 'custom_prefix_modify_request', 10, 2);

    Treba dodat prioritet i broj argumenata.

    > Nisam bas ziher kak prebrojati koliko ima $itemNo i onda za svaki izmjeniti brojku. ??

    Ja bih probao kopat po requestBody arrayju i onda gledati tamo iteme pa rucno mijenjati. Ili sa strpos funkcijom (gledati array keyjeve da li imaju broj i koji je) ili preko regexa.

    Thread Starter sonnic

    (@ikozlik)

    Ok, that’s way out of my league ??

    Nis, thx.

    Thread Starter sonnic

    (@ikozlik)

    Nesto i dalje nema smisla, jer ako stavim samo ovo u functions.php

    add_filter('woo_solo_api_modify_request_body', 'filter_solo_requestbody', 10, 2);
    
    function filter_solo_requestbody($requestBody, $order) {
      // (maybe) modify $requestBody.
      return $requestBody;
    }

    I dalje mi izbacuje:

    Too few arguments to function custom_prefix_modify_request(), 1 passed in /home/veggiehr/public_html/new/wp-includes/class-wp-hook.php on line 309 and exactly 2 expected

    Thread Starter sonnic

    (@ikozlik)

    Aha cool, cijelo vrijeme krivi fajl editiram. ??

    Thread Starter sonnic

    (@ikozlik)

    Evo, nakon 10-ak neuspjelih pokusaja, dobio sam nesto sto za sada funkcionira.

    Pretpostavit cu da ovo nije bulletproof pa ako moze neki programerski review bio bih zahvalan.

    add_filter('woo_solo_api_modify_request_body', 'custom_prefix_modify_request', 10, 2);
    
    function custom_prefix_modify_request($requestBody, $order) {
    
        if(!function_exists('get_field')) {
            // No ACF!
            return $requestBody;
        }
    
        $total_quantity = 0;
        foreach ( $order->get_items() as &$item ) { 
            $total_quantity += $item->get_quantity(); 
            $requestBody["jed_mjera_$total_quantity"] = get_field( 'solo_measuring_unit', $item->get_product_id() );
        }
    
        return $requestBody;
    }
    • This reply was modified 2 years, 1 month ago by sonnic.
    Plugin Author Denis ?oljom

    (@dingo_d)

    Ako $order->get_items() vraca sve iteme u narudzbi, onda ne treba raditi ovaj $item->get_quantity() poziv. Samo nas zanima koji item u naruzbi editiramo.

    Npr, ako u narudzbi imamo dvije jakne i jedan sal, get_items bi nam trebao vratiti array ili objekt koji sadrzi 2 elementa.

    Ja bih ovako napisao:

    
    function custom_prefix_modify_request($requestBody, $order) {
    
        if(!function_exists('get_field')) {
            // No ACF!
            return $requestBody;
        }
    
        $total_quantity = 0;
        foreach ( $order->get_items() as $item ) { 
            $total_quantity++; 
            $requestBody["jed_mjera_$total_quantity"] = get_field( 'solo_measuring_unit', $item->get_product_id() );
        }
    
        return $requestBody;
    }
    

    To bi trebalo raditi.

    Thread Starter sonnic

    (@ikozlik)

    Ok, testirat cu i ovu verziju.

    Ali barem sam bio blizu. haha

Viewing 11 replies - 1 through 11 (of 11 total)
  • The topic ‘Jedinica mjere’ is closed to new replies.