%PDF- %PDF-
| Direktori : /mnt/tnb2/git/import-prestashop/ |
| Current File : //mnt/tnb2/git/import-prestashop/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)
{
$prodId = $this->eanToIdSafe($ean);
return dibi::query("SELECT [image_link] FROM [ps_product] WHERE [id_product]=%s", $prodId)->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);
}
}
}