Jump to content

Dodawanie nowych produktów przez własny moduł


SeBeN682

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 (see edit history)
Link to comment
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?

  • Like 1
Link to comment
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

Link to comment
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
×
×
  • Create New...