%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /www/varak.net/shop.varak.net/import/
Upload File :
Create Path :
Current File : /www/varak.net/shop.varak.net/import/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);
        }
    }

}

Zerion Mini Shell 1.0