%PDF- %PDF-
Direktori : /home/waritko/import-prestashop/ |
Current File : //home/waritko/import-prestashop/Pemik.php |
<?php /** * Created by PhpStorm. * User: Ludek * Date: 7. 10. 2016 * Time: 13:40 */ class Pemik extends Nakladatel { public $ceny = array(); public $zanryPrevod = array(); public $zakazaneKateg = array(); public $pocitadlo; public $pocitadloKolikZpracuji; public function __construct($timestamp) { // Nacti veci z PEMIKU a rozbal je } function zpracujData() { $this->nactiZanry(); $this->nactiCeny(); $this->pocitadlo = 0; $this->pocitadloKolikZpracuji = 0; if (($handle = fopen('import/Catalogue_full_68C310F5-3C1E-4A7C-A58E-ACEE81A29662.txt', "r")) !== FALSE) { while (($kniha = fgetcsv($handle, 0, ",", '"')) !== FALSE) { /* 0 - "SORTKOD",1 - "SORTNAZEV",2 - "SORTZKNAZEV",3 - "SORTPODNAZEV",4 - "EDICE",5 - "SORTAUTOR",6 - "DOSTUPNOST",7 - "DATPLVYD", 8 -"RMVYDANI",9 - "RMDOTISK",10 - "SORTJAZYK",11 - "SORTZNACKA",12 - "VYROBCE",13 - "VYROBCEICO",14 - "SORTDRUH",15 - "SKUPKOD", 16 - "SKUPNAZEV",17 - "VAZBA",18 - "EAN",19 - "ISBN",20 - "POCSTRAN",21 - "POCKSBAL",22 - "VYSKA",23 - "SIRKA",24 - "TLOUSTKA", 25 - "HMOTNOST",26 - "ANOTACE",27 - "PICTURE",28 - "PICTURE_SMALL",29 - "SORTAUTOR2",30 - "SORT_FORMA" */ $this->pocitadlo = $this->pocitadlo + 1; // echo (string)$this->pocitadlo . " " . date('Y-m-d h:i:s') . " " . (string)$kniha[1] . " --------- \n"; if ($kniha[12]=="EUROMEDIA GROUP a.s." or $kniha[0]=="SORTKOD") continue; // Euromedia - nezpracovavat, nebo prvni radek nezpracovavat if ((string)$kniha[6]=="R") continue; // Nedostupne - nezpracovavat if ((string)$kniha[10]=="SK") continue; // Slovensko - nezpracovavat $rok = floatval(substr((string)$kniha[8],0,4)); if (((string)$kniha[15]=="02030000" or (string)$kniha[15]=="02060000" or (string)$kniha[15]=="02060000") and $rok <> 2017) continue; // Kalendare jine nez pristi rok nezpracovavat // echo (string)$kniha[8] . " " . (string)$rok . " \n"; if($rok < 2010) continue; // starsi 2013 - nezpracovavat if(in_array((string)$kniha[14], $this->zakazaneKateg)) continue; // Je v zakazanych kategoriich - nezpracovavat $ean = (string)$kniha[18]; $cena = $this->zjistiCenu($ean); if ($cena <= 2) continue; $kniha[1] = iconv('CP1250', 'utf-8', $kniha[1]); // sortnazev $kniha[2] = iconv('CP1250','utf-8', $kniha[2]); // sortzknazev $kniha[3] = iconv('CP1250','utf-8', $kniha[3]); // sortpodnazev $kniha[4] = iconv('CP1250','utf-8', $kniha[4]); // edice $kniha[5] = iconv('CP1250','utf-8', $kniha[5]); // sortautor $kniha[11] = iconv('CP1250','utf-8', $kniha[11]); // sortznacka $kniha[12] = iconv('CP1250','utf-8', $kniha[12]); // vyrobce $kniha[16] = iconv('CP1250','utf-8', $kniha[16]); // skupnazev $kniha[17] = iconv('CP1250','utf-8', $kniha[17]); // vazba $kniha[29] = iconv('CP1250','utf-8', $kniha[29]); // sortautor2 $this->zpracujTitul($kniha); // if ($this->pocitadlo > 1000) // break; $this->pocitadloKolikZpracuji = $this->pocitadloKolikZpracuji + 1; echo (string)$this->pocitadloKolikZpracuji . " " . date('Y-m-d h:i:s') . " " . (string)$kniha[1] . " ---------- \n"; } fclose($handle); } } function zpracujTitul($kniha) { $id = (string)$kniha[0]; $ean = (string)$kniha[18]; if (!isset($ceny[$id])) return; $cena = $this->ceny[$id]; $dph = substr((string)$cena[2],0,2); $akcecena = floatval($cena[3]) / (1+(floatval($dph)/100)); $prodcena = floatval($cena[0]) / (1+(floatval($dph)/100)); if ($prodcena == 0) return; $knizka = null; $prestaId = $this->eanToId($ean); if(!$prestaId) { // Nova kniha $knizka = new Kniha(false); } else if(strstr($prestaId->importId, 'pemik-')) { // return; // Update $knizka = new Kniha($prestaId->id); } else return; /* Nastav data knihy 0 - "SORTKOD",1 - "SORTNAZEV",2 - "SORTZKNAZEV",3 - "SORTPODNAZEV",4 - "EDICE",5 - "SORTAUTOR",6 - "DOSTUPNOST",7 - "DATPLVYD", 8 -"RMVYDANI",9 - "RMDOTISK",10 - "SORTJAZYK",11 - "SORTZNACKA",12 - "VYROBCE",13 - "VYROBCEICO",14 - "SORTDRUH",15 - "SKUPKOD", 16 - "SKUPNAZEV",17 - "VAZBA",18 - "EAN",19 - "ISBN",20 - "POCSTRAN",21 - "POCKSBAL",22 - "VYSKA",23 - "SIRKA",24 - "TLOUSTKA", 25 - "HMOTNOST",26 - "ANOTACE",27 - "PICTURE",28 - "PICTURE_SMALL",29 - "SORTAUTOR2",30 - "SORT_FORMA" */ $knizka->nastavNazev((string)$kniha[1]); $knizka->nastavSirku((int)$kniha[23]); $knizka->nastavVysku((int)$kniha[22]); $knizka->nastavHloubku((int)$kniha[24]); $knizka->nastavHmotnost((double)$kniha[25] / 1000); $knizka->nastavISBN((string)$kniha[19]); $knizka->nastavVazbu((string)$kniha[17]); $knizka->nastavStran((string)$kniha[20]); $knizka->nastavAutor((string)$kniha[5]); $knizka->nastavNakladatel((string)$kniha[12]); $knizka->nastavEAN((string)$kniha[18]); $knizka->nastavPuvodniKodKategorie((string)$kniha[15]); if ($akcecena < $prodcena and $akcecena <> 0) { $knizka->nastavAkci(); $prodcena = $akcecena; } $nakcen = round($prodcena/(1+(floatval($cena[1])/100)),2); $knizka->nastavNakupniCenu((string)$nakcen); $knizka->nastavDph($dph); $knizka->nastavCenu((string)$prodcena); $knizka->nastavImportId("pemik-" . $id); // dostupnost, novinka, dotisk $datumVydani = substr((string)$kniha[7],0,10); if (substr($datumVydani,0,4) == "1900") if (substr((string)$kniha[8],0,4)<>"" and substr((string)$kniha[8],0,4)<>"0000") if (substr((string)$kniha[8],4,2) <> "") $datumVydani = substr((string)$kniha[8],0,4) . "-" . substr((string)$kniha[8],4,2) . "-01"; else $datumVydani = substr((string)$kniha[8],0,4) . "-01-01"; else $datumVydani = "1990-01-01"; $dostupnost = (string)$kniha[6]; if ($dostupnost == "R") $knizka->nastavDostupnostPozdeji('NEDOSTUPNÉ'); if ($dostupnost == "S" or (string)$kniha[6]=="Z") $knizka->nastavDostupnostPozdeji('Skladem u dodavatele'); if ($dostupnost == "N" or (string)$kniha[6]=="n") $knizka->nastavDostupnostPozdeji('Novinka'); if ($dostupnost == "D") $knizka->nastavDostupnostPozdeji('Připravovaný Dotisk'); $aktivni = True; $knizka->nastavKdyVydano($datumVydani); $knizka->nastavJeliAktivni($aktivni); $knizka->nastavDostupnost($datumVydani); // nacist a nastavit kategorii $kodZanru = (string)$kniha[15]; $zanrMonami = $this->zanryPrevod[$kodZanru]; $zanryVRadku = explode("/", $zanrMonami); foreach($zanryVRadku as $z1) { $nacteneZanry[] = $z1; } $knizka->nastavKategorii($nacteneZanry); // anotace, obrazek $anotace = file_get_contents((string)$kniha[26]); $knizka->nastavAnotaci($anotace); $url = (string)$kniha[27]; $knizka->nastavURLObrazku($url); // Uloz knizku $knizka->uloz(); } function nactiCeny() { if (($handle = fopen('import/Price_68C310F5-3C1E-4A7C-A58E-ACEE81A29662.txt', "r")) !== FALSE) { while (($radek = fgetcsv($handle, 0, ",", '"')) !== FALSE) { /* 0 - "SORTKOD",1 - "EAN",2 - "PARTNERKOD",3 - "PRODCENA",4 - "MENA",5 - "RABAT",6 - "PLATNOSTOD",7 - "PLATNOSTDO", 8 -"AKCECENA",9 - "AKCNIRABAT",10 - "AKCEOD",11 - "AKCEDO",12 - "DPH",13 - "PREDBEYNACENA",14 - "SORTFORMA",15 - "MOC" */ $cena = array((string)$radek[3], (string)$radek[5], (string)$radek[12], (string)$radek[8]); // prodcena, rabat, dph, akcnirabat $this->ceny[(string)$radek[0]]=$cena; } fclose($handle); } } function nactiZanry() { if (($handle = fopen('genrespem.csv', 'r')) !== FALSE) { while (($radek = fgetcsv($handle, 0, ";")) !== FALSE) { if ((string)$radek[1] == "NE") $this->zakazaneKateg[]=(string)$radek[1]; else $this->zanryPrevod[(string)$radek[0]] = (string)$radek[1]; } fclose($handle); } } function zjistiCenu($ean) { return dibi::query("SELECT [price] FROM [ps_product] WHERE [ean13]=%s", $ean)->fetchSingle(); /*if(count($result) == 0) return false; $row = $result->fetch(); $retVal = new stdClass(); $retVal->importId = $row->import_id; $retVal->id = $row->id_product; return $retVal;*/ } }