%PDF- %PDF-
Direktori : /www/varak.net/shop.varak.net/import/ |
Current File : /www/varak.net/shop.varak.net/import/Pemik.php |
<?php /** * Created by PhpStorm. * User: Ludek * Date: 7. 10. 2016 * Time: 13:40 */ class Pemik extends Nakladatel { public $ceny = array(); public $nacetl; public $zanryPrevod = array(); public $zakazaneKateg = array(); public $pocitadloKolikZpracuji; // public $AlbatrosNakladatele = array("26737515", "64797724", "28377141", "27411826", "65410602"); public function __construct() { // Nacti veci z PEMIKU a rozbal je // system("/bin/bash import/pemik.sh"); // $urlKatalog = "http://www.pemic-books.cz/PemicCatalog/Default.aspx?guid=68C310F5-3C1E-4A7C-A58E-ACEE81A29662&file=catalogue_full"; // $souborKatalog = "Catalogue_full_68C310F5-3C1E-4A7C-A58E-ACEE81A29662.zip"; $urlKatalog = "http://www.pemic-books.cz/PemicCatalog/Default.aspx?guid=68C310F5-3C1E-4A7C-A58E-ACEE81A29662&file=catalogue"; $souborKatalog = "Catalogue_68C310F5-3C1E-4A7C-A58E-ACEE81A29662.zip"; $urlCeny = "http://www.pemic-books.cz/PemicCatalog/Default.aspx?guid=68C310F5-3C1E-4A7C-A58E-ACEE81A29662&file=price"; $souborCeny = "Price_68C310F5-3C1E-4A7C-A58E-ACEE81A29662.zip"; $this->nacetl = True; $this->NactiARozbal($urlKatalog,$souborKatalog); $this->NactiARozbal($urlCeny,$souborCeny); } function NactiARozbal($url,$soubor) { if($this->downloadZipFile($url, $soubor)) echo "nacetl $soubor \n"; $path = "/tmp"; $zip = new ZipArchive; $res = $zip->open($soubor); if ($res === TRUE) { $zip->extractTo($path); $zip->close(); echo "povedlo se $soubor rozbalit do $path \n"; } else { system("unzip $path/$soubor", $returnValue); if($returnValue) { echo "Nemohu otevrit soubor $soubor \n"; $this->nacetl = false; } } } function zpracujData() { $nazev = "/www/varak.net/shop.varak.net/import/vstupy/Pemik_".date("Ymd").".txt"; $katalog = "/tmp/Catalogue_68C310F5-3C1E-4A7C-A58E-ACEE81A29662.txt"; // $katalog = "/tmp/Catalogue_full_68C310F5-3C1E-4A7C-A58E-ACEE81A29662.txt"; copy($katalog, $nazev); // if (!$this->nacetl) // $katalog = "https://shop.varak.net/import/Catalogue_68C310F5-3C1E-4A7C-A58E-ACEE81A29662.txt"; // return; $this->nactiZanry(); $this->nactiCeny(); $this->pocitadloKolikZpracuji = 0; if (($handle = fopen($katalog, "r")) !== FALSE) // if (($handle = fopen('import/Catalogue_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" */ 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" or (string)$kniha[10]=="EN" or (string)$kniha[10]=="FR" or (string)$kniha[10]=="ES") continue; // Slovensko - nezpracovavat $rok = floatval(substr((string)$kniha[8],0,4)); $rokDotisk = floatval(substr((string)$kniha[9],0,4)); if ($rokDotisk > $rok) $rok = $rokDotisk; if (((string)$kniha[15]=="02030000" or (string)$kniha[15]=="02060000" or (string)$kniha[15]=="02060000") and $rok <> 2019) continue; // Kalendare jine nez pristi rok nezpracovavat if($rok < 2015) continue; // starsi 2016 - 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 <= 59) 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->pocitadloKolikZpracuji > 1) break; } fclose($handle); } } function zpracujTitul($kniha) { $kdeDostupne = "P"; $dataKnihyImport = array(); $id = (string)$kniha[0]; $ean = (string)$kniha[18]; if (!isset($this->ceny[$id])) return; $cena = $this->ceny[$id]; $dph = substr((string)$cena[2],0,2); $kodDPH = $dph == '10' ? 5 : ($dph == '21' ? 1 : ($dph == '15' ? 2 : 3)); $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 $update = false; $knizka = new Kniha(false); } else if(strstr($prestaId->importId, 'pemik-')) { // Update $update = true; // $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" */ $dataKnihyImport['importId'] = "pemik-" . $id; $dataKnihyImport['active'] = 1; $nazev = trim((string)$kniha[1]); $dataKnihyImport['name'] = $nazev; $dataKnihyImport['meta_title'] = $nazev; $dataKnihyImport['width'] = (int)$kniha[23]; $dataKnihyImport['height'] = (int)$kniha[22]; $dataKnihyImport['depth'] = (int)$kniha[24]; $dataKnihyImport['weight'] = (double)$kniha[25] / 1000; $dataKnihyImport['meta_description'] = trim((string)$kniha[19]); // ISBN $dataKnihyImport['binding'] = trim((string)$kniha[17]); $dataKnihyImport['pages'] = (int)$kniha[20]; $dataKnihyImport['author'] = trim((string)$kniha[5]); $dataKnihyImport['publisher'] = trim((string)$kniha[12]); $dataKnihyImport['ean'] = $ean; $dataKnihyImport['meta_keywords'] = (string)$kniha[15]; $dataKnihyImport['image_link'] = (string)$kniha[27]; $dataKnihyImport['Kde_dostupne'] = "P"; if ($akcecena < $prodcena and $akcecena <> 0) { if (!$update) $knizka->nastavAkci(); $prodcena = $akcecena; } $nakcen = round($prodcena/(1+(floatval($cena[1])/100)),2); $dataKnihyImport['wholesale_price'] = $nakcen; $dataKnihyImport['id_tax_rules_group'] = $kodDPH; $dataKnihyImport['price'] = $prodcena; // 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"; $textDostupnosti = "NEDOSTUPNÉ"; $dostupnost = (string)$kniha[6]; if ($dostupnost == "S" or (string)$kniha[6]=="Z") $textDostupnosti = "Skladem u dodavatele"; if ($dostupnost == "N" or (string)$kniha[6]=="n") $textDostupnosti = "Novinka"; if ($dostupnost == "D") $textDostupnosti = "Připravovaný Dotisk"; if ($dostupnost == "Z") $textDostupnosti = "Zajišťujeme u nakladatele"; if ($dostupnost == "R") $textDostupnosti = "NEDOSTUPNÉ"; $den = floatval(strftime("%d", time())); $mesic = floatval(strftime("%m", time())); $rok = floatval(strftime("%Y", time())); $dnesniDatum = $rok * 10000 + $mesic * 100 + $den; // echo $den . " - den " . $mesic . " - mesic " . $rok . " - rok \n"; $datumDostupnosti = $datumVydani; $datumDotisku = substr((string)$kniha[9],0,8); if ($dostupnost == "D" and $datumDotisku <> "") { if (substr($datumDotisku,6,1) <> "") $datumDotisku = substr($datumDotisku,0,4) . "-" . substr((string)$kniha[9],4,2) . "-" . substr((string)$kniha[9],6,2); elseif (substr($datumDotisku,4,1) <> "") $datumDotisku = substr($datumDotisku,0,4) . "-" . substr((string)$kniha[9],4,2) . "-28"; else $datumDotisku = substr($datumDotisku,0,4) . "-12-20"; $denDotisku = floatval(substr($datumDotisku,8,2)); $mesicDotisku = floatval(substr($datumDotisku,5,2)); $rokDotisku = floatval(substr($datumDotisku,0,4)); $datumDotiskuKPorovnani = $rokDotisku * 10000 + $mesicDotisku * 100 + $denDotisku; /* if ($datumDotiskuKPorovnani < $dnesniDatum) { $datumDostupnosti = $datumDotisku; if ($dostupnost == "D") { $textDostupnosti = "NEDOSTUPNÉ"; } } */ } if ($dostupnost == "D") $datumDostupnosti = $datumDotisku; $dataKnihyImport['published'] = $datumVydani; $dataKnihyImport['available_later'] = $textDostupnosti; $dataKnihyImport['available_date'] = $datumDostupnosti; // nacist a nastavit kategorii $kodZanru = (string)$kniha[15]; $nacteneZanry = array(); if (isset($this->zanryPrevod[$kodZanru])) { $zanrMonami = $this->zanryPrevod[$kodZanru]; $zanryVRadku = explode("/", $zanrMonami); foreach($zanryVRadku as $z1) { $nacteneZanry[] = $z1; } } $dataKnihyImport['genres'] = $nacteneZanry; // anotace $anotace = ""; if ((string)$kniha[26] <> "") { $anotace = file_get_contents((string)$kniha[26]); if ((string)$kniha[16]<> "") $anotace = $kniha[16] . " - " . trim($anotace); if ((string)$kniha[5] <> "") $anotace = trim($anotace) . " / " . $kniha[5]; } $dataKnihyImport['description'] = $anotace; $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- " . $ean . " -dph- " . $dph . " -kod- " . $kodDPH . " -datadph- " .$dataKnihyImport['id_tax_rules_group'] . " -- \n"; } } function nactiCeny() { $ceny = "/tmp/Price_68C310F5-3C1E-4A7C-A58E-ACEE81A29662.txt"; $nazev = "/www/varak.net/shop.varak.net/import/vstupy/Pemik_ceny_".date("Ymd").".txt"; copy($ceny, $nazev); if (($handle = fopen('/tmp/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(__DIR__ . '/genrespem.csv', 'r')) !== FALSE) { while (($radek = fgetcsv($handle, 0, ";")) !== FALSE) { if ((string)$radek[1] == "NE") $this->zakazaneKateg[]=(string)$radek[0]; else $this->zanryPrevod[(string)$radek[0]] = (string)$radek[1]; } fclose($handle); } } function nactiCenyEan() { if (($handle = fopen('/tmp/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[1]]=$cena; } fclose($handle); } } function opravdph() { $this->nactiCenyEan(); foreach ($this->ceny as $ean => $cena) { $kodDPH = $this->ZjistiKodDPH($ean); if ($kodDPH == 3) { $dph = substr((string)$cena[2],0,2); $novyKodDPH = $dph == '10' ? 5 : ($dph == '21' ? 1 : ($dph == '15' ? 2 : 3)); $updateData = array('id_tax_rules_group' => $novyKodDPH); dibi::update("ps_product", $updateData)->where("id_product = %i", $this->idKnihy)->execute(); dibi::update("ps_product_shop", $updateData)->where("id_product = %i", $this->idKnihy)->execute(); } } return; } }