%PDF- %PDF-
Direktori : /www/varak.net/shop.varak.net/import/ |
Current File : /www/varak.net/shop.varak.net/import/Albatros.php |
<?php /** * Created by PhpStorm. * User: Ludek * Date: 19. 10. 2016 * Time: 15:19 */ class Albatros extends Nakladatel { public $zanryPrevod = array(); public $pocitadloKolikZpracuji; /* Popis struktury souboru s položkami obchodu . NAME - název titulu . EAN - EAN kód TYPE - druh titulu SUBTITLE - podtitul . VAT - sazba DPH . PRICEVAT - doporučená cena . AVAILABILITY - dostupnost (1 = skladem) AVAILABILITY_DETAIL - skladová zásoba (ks) . AUTHOR - autor . DATEEXP - datum vydání (rrrr-mm-dd) . ANNOTATION - krátká anotace . PUBLISHING - nakladatelství IMAGE - cesta k obrázku . IMAGE_LARGE - cesta k obrázku s vyšším rozlišením . PAGES - počet stran . BOOKBINDING - vazba . DIMENSION - rozměry RELEASE – pořadí vydání v nakladatelství EDITION - edice vydání . LANGUAGE - jazyk vydání . GENRE - žánr . REPRINTING_DATE - datum dotisku */ public function __construct($timestamp) { // Nacti veci z Albatrosu } function zpracujData() { $this->nactiZanry(); $this->pocitadloKolikZpracuji = 0; $tituly = simplexml_load_file('https://www.distri.cz/XmlFeed/Full/fa9ea46195214f0d89a61002dd0404b4'); // Novinky $nazev = "/www/varak.net/shop.varak.net/import/vstupy/Albatros_".date("Ymd").".xml"; file_put_contents($nazev, $tituly->asXML()); foreach ($tituly->ITEM as $titul) { $this->zpracujTitul($titul); // if ($this->pocitadloKolikZpracuji > 3) // break; } echo " Zpracoval celkem " . (string)$this->pocitadloKolikZpracuji . " " . date('Y-m-d h:i:s') . " \n"; } function zpracujTitul($titul) { $ean = (string)$titul->EAN; if ($ean == "") return; // neimportovat, nema ean // vazba, vylouceni zakazanych druhu, muze byt i vice vazeb u jednoho zbozi $vazba = $titul->BOOKBINDING; $jazyk = $titul->LANGUAGE; if ($jazyk <> "čeština" and $jazyk <> "angličtina") // zpracovat pouze CZE a eng return; $dostupnost = $titul->AVAILABILITY; $datumDotisku = $titul->REPRINTING_DATE; $dnesniDatum = time(); $vydaniTimestamp = strtotime($datumDotisku); if ($vydaniTimestamp + 30*24*60*60 < $dnesniDatum) $datumDotisku = ""; // reprinting date uz bylo if ($dostupnost <> 1 and $datumDotisku == "") return; // nezpracovavat nedostupne $datumVydani = $titul->DATEEXP; $vydaniTimestamp = strtotime($datumVydani); $dnesniDatum = time(); if ($datumVydani == "") $datumVydani = $datumDotisku; if($vydaniTimestamp < $dnesniDatum-60*24*60*60 or $datumVydani == "") // Timestamp z http://www.unixtimestamp.com/index.php return; // nacist a nastavit kategorii $kodZanru = $titul->GENRE; $zanryVRadkuAlbatros = explode(",", $kodZanru); $nacteneZanry = array(); $zanrMonami = ""; foreach($zanryVRadkuAlbatros as $zanrAlbatros) { $zanrAlbatros = trim($zanrAlbatros); if ($zanrAlbatros == "love story" or $zanrAlbatros == "vzdělání" or $zanrAlbatros == "tablety") continue; // preskoci zanr za carkou if ($zanrAlbatros == "romantika") $zanrAlbatros = "romantika, love story"; if ($zanrAlbatros == "poznání") $zanrAlbatros = "poznání, vzdělání"; if ($zanrAlbatros == "mobily") $zanrAlbatros = "mobily, tablety"; if (array_key_exists($zanrAlbatros, $this->zanryPrevod)) $zanrMonami = $this->zanryPrevod[$zanrAlbatros]; $zanryVRadku = explode("/", $zanrMonami); foreach($zanryVRadku as $z1) { if (! in_array($z1, $nacteneZanry)) $nacteneZanry[] = $z1; } } // echo $kodZanru . " - kod z xml - " . $zanrMonami . " monami - " . $zanrAlbatros . " Alba \n"; // print_r($nacteneZanry); $knizka = null; $prestaId = $this->eanToId($ean); if(!$prestaId) { // Nova kniha $update = false; $knizka = new Kniha(false); } elseif(strstr($prestaId->importId, 'alba-')) { // Update $update = True; // $knizka = new Kniha($prestaId->id); } else return; // Nastav data knihy $nazev = trim((string)$titul->NAME); $rozmer = (string)$titul->DIMENSION; $sirka = substr($rozmer,0,3); $vyska = substr($rozmer,6,3); $isbn = substr($ean,0,3) . "-" . substr($ean,3,2) . "-" . substr($ean,5,3) . "-" . substr($ean,8,4) . "-" . substr($ean,12,1); $dataKnihyImport['name'] = $nazev; $dataKnihyImport['meta_title'] = $nazev; $dataKnihyImport['author'] = (string)$titul->AUTHOR; $procen = intval((string)$titul->PRICEVAT)/(1+intval(substr((string)$titul->VAT,0,2))/100); $dataKnihyImport['price'] = $procen; $dph = substr((string)$titul->VAT,0,2); $kodDPH = $dph == '10' ? 5 : ($dph == '21' ? 1 : ($dph == '15' ? 2 : 3)); $nakcen = sprintf("%0.2f", $procen / 1.3); $dataKnihyImport['id_tax_rules_group'] = $kodDPH; $nakcen = sprintf("%0.2f", ((double)$titul->{'dpc-aktualni'}) * (100 - ((double)$titul->rabat)) / 100); $dataKnihyImport['wholesale_price'] = $nakcen; $dataKnihyImport['width'] = (int)$sirka; $dataKnihyImport['height'] = (int)$vyska; $dataKnihyImport['depth'] = 0; $dataKnihyImport['weight'] = 0; $dataKnihyImport['meta_description'] = $isbn; $dataKnihyImport['binding'] = $vazba; $dataKnihyImport['pages'] = (int)$titul->PAGES; $dataKnihyImport['publisher'] = trim((string)$titul->PUBLISHING); $dataKnihyImport['ean'] = $ean; $dataKnihyImport['importId'] = "alba-".$ean; $dataKnihyImport['active'] = 1; $dataKnihyImport['meta_keywords'] = ""; $dataKnihyImport['genres'] = $nacteneZanry; $dataKnihyImport['Kde_dostupne'] = "A"; if ($kodZanru <> "") $anotace = (string)$kodZanru . " - " . (string)$titul->ANNOTATION; else $anotace = (string)$titul->ANNOTATION; if ((string)$titul->AUTHOR <> "") $anotace = $anotace . " / " . $titul->AUTHOR; $dataKnihyImport['description'] = $anotace; // dostupnost, novinka, dotisk if ($dostupnost <> "") if ($dostupnost = 1) $textDostupnosti = 'Skladem u dodavatele'; if ($datumDotisku <> "") $textDostupnosti = 'Dotisk - Novinka'; if ($datumVydani <> "") $dataKnihyImport['published'] = $datumVydani; $dataKnihyImport['available_later'] = $textDostupnosti; $dataKnihyImport['available_date'] = $datumDotisku; $url = (string)$titul->IMAGE_LARGE; if ($url <> "") $dataKnihyImport['image_link'] = $url; $necoNesedi = False; if (!$update) { $knizka->nastavDataImportu($dataKnihyImport); $knizka->uloz(); } else // update zapisem polozek primo na SQL server { $dataKnihySQL = $this->nactiDataSQL($ean); if (!$dataKnihySQL) { echo "nemohu nacist data o knize ze serveru " . $ean . " \n"; $this->pocitadloKolikZpracuji++; return; } // print_r ($dataKnihySQL); $necoNesedi = $this->PorovnejAZapisPamametryKnihy($dataKnihyImport,$dataKnihySQL); } if (!$update or $necoNesedi) { $this->pocitadloKolikZpracuji++; echo (string)$this->pocitadloKolikZpracuji . " " . date('Y-m-d h:i:s') . " " . $nazev . " ----- " . $ean . " ----- \n"; } } function nactiZanry() { if (($handle = fopen(__DIR__ . '/genresalb.csv', 'r')) !== FALSE) { while (($radek = fgetcsv($handle, 0, ";")) !== FALSE) { $zanr = iconv('CP1250', 'utf-8', (string)$radek[3]); $this->zanryPrevod[$zanr] = (string)$radek[4]; } fclose($handle); // print_r($this->zanryPrevod); } } function zpracujDostupnost() { $this->pocitadloKolikZpracuji = 0; $kdeDostupne = "A"; $tituly = simplexml_load_file('https://www.distri.cz/XmlFeed/Compact/fa9ea46195214f0d89a61002dd0404b4'); // Dostupnost $nazev = "/www/varak.net/shop.varak.net/import/vstupy/Albatros_d_".date("Ymd").".xml"; file_put_contents($nazev, $tituly->asXML()); if($tituly === false) echo "Nemohu nacist soubor z Albatrosu \n"; else { foreach ($tituly->ITEM as $titul) { $ean = (string)$titul->EAN; if ($ean == "") continue; // neimportovat, nema ean $hodnotyDostupnosti = $this->zjistiDostupnost($ean); if (!$hodnotyDostupnosti) continue; // neni v eshopu $dostupnost = (string)$titul->AVAILABILITY; if ($dostupnost == "1") $textDostupnosti = 'Skladem u dodavatele'; elseif ($dostupnost == "0") $textDostupnosti = 'NEDOSTUPNÉ'; else continue; // $textDostupnosti = 'Dotisk - Novinka'; if ($hodnotyDostupnosti->available_later == "Dotisk - Novinka" and $dostupnost == "0") continue; // Novinka, ktera jeste neni dostupna if ($ean == "8594063858453") echo "dostupnost v souboru: $textDostupnosti , stav dostupnosti na eshopu: $hodnotyDostupnosti->available_later , kde dostupne soubor: $kdeDostupne , kde dostupne na eshopu: $hodnotyDostupnosti->Kde_dostupne \n"; if ($textDostupnosti <> trim($hodnotyDostupnosti->available_later) and ($kdeDostupne == $hodnotyDostupnosti->Kde_dostupne or $hodnotyDostupnosti->Kde_dostupne == "N" or $hodnotyDostupnosti->Kde_dostupne == "0" or $textDostupnosti <> 'NEDOSTUPNÉ')) { $this->pocitadloKolikZpracuji++; // if (!($this->pocitadloKolikZpracuji % 10)) // Hlaska pouze kazde desate vety echo 'A ' . $this->pocitadloKolikZpracuji . "zapsat novou dostupnost pro: " . $ean . " - stavajici: $hodnotyDostupnosti->available_later nova: $textDostupnosti \n"; dibi::update("ps_product_lang", array('available_later' => $textDostupnosti, 'Kde_dostupne' => $kdeDostupne))->where("id_product = %i", $hodnotyDostupnosti->idKnihy)->execute(); } $cena = $this->zjistiCenu($ean); // doplni cenu a aktivuje polozku if ($cena == 0) { $novaCena = floatval((string)$titul->PRICEVAT); $sazbaDph = floatval(substr((string)$titul->DPH,0,2)); $aktivni = 1; if ($sazbaDph == 10) $dph = 5; elseif ($sazbaDph == 21) $dph = 1; elseif ($sazbaDph == 15) $dph = 2; else $dph = 3; if ($novaCena < 10) continue; // neimportovat, male polozky $updateData = array( 'price' => $novaCena, 'id_tax_rules_group' => $dph, 'active' => $aktivni ); dibi::update("ps_product", $updateData)->where("id_product = %i", $hodnotyDostupnosti->idKnihy)->execute(); dibi::update("ps_product_shop", $updateData)->where("id_product = %i", $hodnotyDostupnosti->idKnihy)->execute(); } } echo $this->pocitadloKolikZpracuji . " celkovy pocet zapsanych zmen \n"; } } }