Jump to content
SeBeN682

Dodawanie nowych produktów przez własny moduł

Recommended Posts

Witam mam problem z użyciem funkcji add() lub save() w pętli we własnym module

Po krótce :

 

Presta 1.6.1.7

Zaciągam produkty z innej bazy i sprawdzam czy są już dodane w sklepie po indeksie ('reference')

jeśli ich nie ma to chce je dodawać w petli

.
.
.
foreach ($products as $product){
    $indeks = str_replace(' ', '', $product['indeks']);
    $cena_netto = $product['cena_netto'];
    $waga = $product['waga'];
    $stawka_vat = str_replace(' ', '', $product['stawka_vat']);
    $stan_mag = $product['stan_mag'];
    $nazwa = $product['artykul'];

    $check = array_search($indeks, array_column($products_in_shop, 'reference'));
    if($check == '' && !is_integer($check)){

      switch ($stawka_vat)
      {
        case 0:$stawka_vat = 0;break;
        case 23:$stawka_vat = 1;break;
        case 8:$stawka_vat = 2;break;
        case 5:$stawka_vat = 3;break;
      }

      $id_lang = (int)(Configuration::get('PS_LANG_DEFAULT')); 


      $object = new Product();
      $object->description = array($id_lang => '');
      $object->description_short = array($id_lang => '');
      $object->link_rewrite = array($id_lang => '');
      $object->name = array($id_lang => $nazwa);
      $object->id_shop_default = 1;
      $object->price = (float)$cena_netto;
      $object->id_tax_rules_group = (int)$stawka_vat;
      $object->reference = $indeks;
      $object->quantity = (int)$stan_mag;
      $object->id_manufacturer = 0;
      $object->id_supplier = 0;
      $object->additional_shipping_cost = 0;
      $object->wholesale_price = 0;
      $object->ecotax = 0;
      $object->width = 0;
      $object->height = 0;
      $object->depth = 0;
      $object->weight = (float)$waga;
      $object->out_of_stock = 0;
      $object->active = 1;
      $object->available_for_order = 0;
      $object->show_price = 1;
      $object->on_sale = 0;
      $object->online_only = 1;

      if (!isset($object->date_add) || empty($object->date_add))
        $object->date_add = date('Y-m-d H:i:s');
      $object->date_upd = date('Y-m-d H:i:s');

      $ajax = true;

      $object->add();
    }
  }
.
.
.

ogólnie skrypt działa lecz dodaje tylko jeden product i koniec tak jakby return false;

 

Jeśli macie jakieś pomysły to proszę o pomoc

z góry THX
 

Edited by SeBeN682

Share this post


Link to post
Share on other sites

po pierwsze wlacz sobie wyswietlanie bledow, po drugie sprawdz var_dump-em co w calej pentli zwraca $object i porownaj dla poszczegolnych produktow. a tak jeszcze dodatkowe pytanie, jak ukladaja ci sie ID wprowadzanych produktow? po kazdej wrzucie masz ID +1 czy przeskakuje o +X wrzucanych produktow?

Share this post


Link to post
Share on other sites

po pierwsze wlacz sobie wyswietlanie bledow, po drugie sprawdz var_dump-em co w calej pentli zwraca $object i porownaj dla poszczegolnych produktow. a tak jeszcze dodatkowe pytanie, jak ukladaja ci sie ID wprowadzanych produktow? po kazdej wrzucie masz ID +1 czy przeskakuje o +X wrzucanych produktow?

 

Problem rozwiązany

Po włączeniu debugowania pojawiały się komunikaty ze pole $object->link_rewrite posiadało nie prawidłowe znaki typu #?!* itp co wywalalo błąd

 

Teraz wszystko działa prawidłowo

 

THX

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×

Important Information

Cookies ensure the smooth running of our services. Using these, you accept the use of cookies. Learn More