%PDF- %PDF-
| Direktori : /mnt/tnb2/git/import-prestashop/ |
| Current File : //mnt/tnb2/git/import-prestashop/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/xml-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 > 3100)
break;
}
echo " Zpracoval celkem Albatros" . (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;
if((int)substr((string)($datumVydani),0,4) < 2012) return; // starsi nez 2012 neimportovat
// 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);
if ($procen < 30) return; // neimportovat levne knihy pod 50 Kc
$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;
else
return;
$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/xml-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";
}
}
}