Acasă » Blog » Modificarea prețurilor la produsele Woocommerce din fișier Excell (.CSV)

Modificarea prețurilor la produsele Woocommerce din fișier Excell (.CSV)

Share this post on social!
Dezvoltare web custom

O sarcină frecventă pentru întreținerea magazinelor virtuale este cea de modificare a prețurilor tuturor produselor din magazin.

De regulă aceste prețuri și tarife noi vin într-un fișier excell sau csv.

Sarcina unui program de rutină ca cel dezvoltat de noi la Sector web este să aplice noile prețuri prezente în fișierul de intrare .csv în câteva secunde pentru sute și mii de produse.

Modificarea automată a prețurilor produselor din magazinul online Woocommerce

Programul încarcă în primul rând fișierul cu noile tarife undeva pe serverul pe care este găzduit magazinul online.

Apoi citește fișierul .csv și salvează într-o matrice (vector) aceste prețuri cu/fără discount pentru fiecare produs și variație de produs.

Ne rămâne de parcurs prin program toată baza de produse și variații de produse și pentru fiecare să modificăm/setăm prețul standard și prețul de vânzare (cel obținut după aplicarea discount-ului).

În exemplul următor, prețurile produselor Woocommerce sunt păstrate în baza de date cu TVA (includ TVA).

Funcția de aplicare de noi tarife este similară cu cea prezentată de noi cu ceva timp în urmă în articolul Modificare prețuri produse Woocommerce prin program..

Funcția de parcurgere a fișierului csv

/**
* @return array
*/
function import_csv_tarife_noi()
{

    $file_to_read = fopen('/cale-catre-fisier-tarife/data.csv', 'r');

    $tarife = [];

    if ($file_to_read !== FALSE) {

        $r = 1;

        while (($data = fgetcsv($file_to_read, 0, ';')) !== FALSE) {

            $tarife[$r] = [];

            for ($i = 0; $i < count($data); $i++) {

                if ($i == 0) {
                    $tarife[$r][$i] = $data[$i];
                } else {

                    $tarife[$r][$i] = $data[$i];

                    $data[$i] = str_replace(".", "", $data[$i]);//eliminam separatorul de mii

                    $data[$i] = str_replace(",", ".", $data[$i]);//inlocuim separatorul de zecimale "," cu "."

                    $tarife[$r][$i] = $data[$i];
 
                }
            }

            $r++;
        }


        fclose($file_to_read);
    }

    return $tarife;
}

    $tarife_noi = import_csv_tarife_noi();
/**
 * Setarea preturilor pentru tarife functie de numarul de zile: pret normal, pret de vanzare
 * Este o functie care se aplica doar la modificarea tarifelor de vanzare rezervare loc parcare
 *
 * @param [array] $tarife_noi
 * @return void
 */
function modific_preturi_per_zile_din_csv($tarife_noi)
{

    //produsul unic rezervare loc parcare
    $product_id = 17730; 

    $product = wc_get_product($product_id);

    $atribute = $product->get_attributes();

    $terms = $atribute['pa_numar-zile']->get_slugs();

    $data_store   = WC_Data_Store::load('product');

    foreach ($terms as $t => $t_slug) {

        $match_attributes =  array(
            "attribute_pa_numar-zile" => $t_slug
        );

        $variation_id = $data_store->find_matching_product_variation(
            $product,
            $match_attributes
        );


        if ($variation_id) {

            $nrz = (int) $t_slug;

            $variable_product = wc_get_product($variation_id);

            $regular_price = $tarife_noi[$nrz][1];

            $sale_price = $tarife_noi[$nrz][2];

            $variable_product->set_regular_price($regular_price);

            //set discount incepand cu ziua a doua
            if ($nrz >= 2) {

                $variable_product->set_sale_price($sale_price);
            }

            $variable_product->set_price($sale_price);

            $variable_product->save();
        }
    }

Modificarea prețurilor în masă la toate variațiile de produs Woocommerce prin program

Modificarea prețurilor prin import de fișier .csv a fost modificată recent la parcareautopeni.ro.

Tabelele de prețuri afișate utilizatorilor în front-end pe site-ul parcareautopeni.ro sunt generate automat după parcurgerea bazei de date de produse/variații de produse și preluarea prețurilor.

Modificarea prețurilor în masă pe baza unui fișier de tarife noi .csv. Aplicabil magazinelor online bazate pe pluginul Woocommerce

Lasă un răspuns

Traian Constantin Predan

Traian Constantin Predan

Inginer absolvent al Politehnicii București proiectează și construiește sisteme online. Lucrează proiecte extrem de diverse, îi plac viziunile noi care provoacă la dezvoltarea unor soluții tehnice eficiente și stabile.