%PDF- %PDF-
Direktori : /home/waritko/import-presta/ |
Current File : //home/waritko/import-presta/PemikDostVse.php |
<?php /** * Created by PhpStorm. * User: Ludek * Date: 7. 10. 2016 * Time: 13:40 */ class PemikDostVse 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"; $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() { $katalog = "/tmp/Catalogue_full_68C310F5-3C1E-4A7C-A58E-ACEE81A29662.txt"; if (!$this->nacetl) // $katalog = "https://shop.varak.net/import/Catalogue_68C310F5-3C1E-4A7C-A58E-ACEE81A29662.txt"; return; $this->nactiCeny(); $this->pocitadloKolikZpracuji = 0; if (($handle = fopen($katalog, "r")) !== FALSE) { while (($kniha = fgetcsv($handle, 0, ",", '"')) !== FALSE) $this->zpracujTitul($kniha); fclose($handle); } } function zpracujTitul($kniha) { $kdeDostupne = "P"; $dataKnihyImport = array(); $ean = (string)$kniha[18]; $hodnotyDostupnosti = $this->zjistiDostupnost($ean); if (!$hodnotyDostupnosti) return; // neni v eshopu /* 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" */ // 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[8],4,2) . "-" . substr((string)$kniha[8],6,2); elseif (substr($datumDotisku,4,1) <> "") $datumDotisku = substr($datumDotisku,0,4) . "-" . substr((string)$kniha[8],4,2) . "-01"; else $datumDotisku = substr($datumDotisku,0,4) . "-01-01"; $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 ($textDostupnosti <> trim($hodnotyDostupnosti->available_later) and $hodnotyDostupnosti->idKnihy > 0) { $this->pocitadloKolikZpracuji++; echo 'K ' . $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(); } if ($datumDostupnosti <> "" and $datumDostupnosti <> $hodnotyDostupnosti->available_date and $hodnotyDostupnosti->idKnihy > 0) { dibi::update("ps_product", array('available_date' => $datumDostupnosti))->where("id_product = %i", $hodnotyDostupnosti->idKnihy)->execute(); dibi::update("ps_product_shop", array('available_date' => $datumDostupnosti))->where("id_product = %i", $hodnotyDostupnosti->idKnihy)->execute(); } $cena = $this->zjistiCenu($ean); if ($cena == 0) { $id = (string)$kniha[0]; 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 ($akcecena < $prodcena and $akcecena <> 0) $prodcena = $akcecena; $nakcen = round($prodcena/(1+(floatval($cena[1])/100)),2); $jedna = 1; $updateData = array('active' => $jedna,'wholesale_price' => $nakcen, 'id_tax_rules_group' => $kodDPH, 'price' => $prodcena); dibi::update("ps_product_shop", $updateData)->where("id_product = %i",$hodnotyDostupnosti->idKnihy)->execute(); dibi::update("ps_product", $updateData)->where("id_product = %i",$hodnotyDostupnosti->idKnihy)->execute(); } $obrazek = $this->zjistiObrazek($ean); if ($obrazek == "") { $novyObrazek = (string)$kniha[27]; $jedna = 1; $updateData = array('active' => $jedna,'image_link' => $novyObrazek); dibi::update("ps_product_shop", $updateData)->where("id_product = %i",$hodnotyDostupnosti->idKnihy)->execute(); dibi::update("ps_product", $updateData)->where("id_product = %i",$hodnotyDostupnosti->idKnihy)->execute(); } } function zjistiObrazek($ean) { return dibi::query("SELECT [image_link] FROM [ps_product] WHERE [ean13]=%s", $ean)->fetchSingle(); } function nactiCeny() { 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); } } }