%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /home/waritko/import-prestashop/
Upload File :
Create Path :
Current File : //home/waritko/import-prestashop/Pemik.php

<?php

/**
 * Created by PhpStorm.
 * User: Ludek
 * Date: 7. 10. 2016
 * Time: 13:40
 */
class Pemik extends Nakladatel
{
    public $ceny = array();
    public $zanryPrevod = array();
    public $zakazaneKateg = array();
    public $pocitadlo;
    public $pocitadloKolikZpracuji;

    public function __construct($timestamp)
    {
        // Nacti veci z PEMIKU a rozbal je
    }

    function zpracujData()
    {
        $this->nactiZanry();
        $this->nactiCeny();

        $this->pocitadlo = 0;
        $this->pocitadloKolikZpracuji = 0;

        if (($handle = fopen('import/Catalogue_full_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" */

                $this->pocitadlo = $this->pocitadlo + 1;
//                echo (string)$this->pocitadlo . " " . date('Y-m-d h:i:s') . " " . (string)$kniha[1] . " --------- \n";
                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")
                    continue; // Slovensko - nezpracovavat

                $rok = floatval(substr((string)$kniha[8],0,4));

                if (((string)$kniha[15]=="02030000" or (string)$kniha[15]=="02060000" or (string)$kniha[15]=="02060000") and $rok <> 2017)
                    continue; // Kalendare jine nez pristi rok nezpracovavat

//                echo (string)$kniha[8] . " " . (string)$rok . " \n";
                if($rok < 2010)
                    continue;   // starsi 2013 - 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 <= 2)
                    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->pocitadlo > 1000)
//                    break;
                $this->pocitadloKolikZpracuji = $this->pocitadloKolikZpracuji + 1;
                echo (string)$this->pocitadloKolikZpracuji . " " . date('Y-m-d h:i:s') . " " . (string)$kniha[1] . " ---------- \n";
            }
            fclose($handle);
        }
    }

    function zpracujTitul($kniha)
    {
        $id = (string)$kniha[0];
        $ean = (string)$kniha[18];

        if (!isset($ceny[$id]))
            return;
        $cena = $this->ceny[$id];
        $dph = substr((string)$cena[2],0,2);
        $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
            $knizka = new Kniha(false);
        }
        else if(strstr($prestaId->importId, 'pemik-'))
        {
//            return;
            // Update
            $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" */

        $knizka->nastavNazev((string)$kniha[1]);
        $knizka->nastavSirku((int)$kniha[23]);
        $knizka->nastavVysku((int)$kniha[22]);
        $knizka->nastavHloubku((int)$kniha[24]);
        $knizka->nastavHmotnost((double)$kniha[25] / 1000);
        $knizka->nastavISBN((string)$kniha[19]);
        $knizka->nastavVazbu((string)$kniha[17]);
        $knizka->nastavStran((string)$kniha[20]);
        $knizka->nastavAutor((string)$kniha[5]);
        $knizka->nastavNakladatel((string)$kniha[12]);
        $knizka->nastavEAN((string)$kniha[18]);
        $knizka->nastavPuvodniKodKategorie((string)$kniha[15]);
        if ($akcecena < $prodcena and $akcecena <> 0)
        {
            $knizka->nastavAkci();
            $prodcena = $akcecena;
        }
        $nakcen = round($prodcena/(1+(floatval($cena[1])/100)),2);
        $knizka->nastavNakupniCenu((string)$nakcen);
        $knizka->nastavDph($dph);
        $knizka->nastavCenu((string)$prodcena);
        $knizka->nastavImportId("pemik-" . $id);

// 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";
        $dostupnost = (string)$kniha[6];
        if ($dostupnost == "R")
            $knizka->nastavDostupnostPozdeji('NEDOSTUPNÉ');
        if ($dostupnost == "S" or (string)$kniha[6]=="Z")
            $knizka->nastavDostupnostPozdeji('Skladem u dodavatele');
        if ($dostupnost == "N" or (string)$kniha[6]=="n")
            $knizka->nastavDostupnostPozdeji('Novinka');
        if ($dostupnost == "D")
            $knizka->nastavDostupnostPozdeji('Připravovaný Dotisk');
        $aktivni = True;
        $knizka->nastavKdyVydano($datumVydani);
        $knizka->nastavJeliAktivni($aktivni);
        $knizka->nastavDostupnost($datumVydani);

//      nacist a nastavit kategorii
        $kodZanru = (string)$kniha[15];
        $zanrMonami = $this->zanryPrevod[$kodZanru];
        $zanryVRadku = explode("/", $zanrMonami);
        foreach($zanryVRadku as $z1)
        {
            $nacteneZanry[] = $z1;
        }
        $knizka->nastavKategorii($nacteneZanry);

//      anotace, obrazek
        $anotace = file_get_contents((string)$kniha[26]);
        $knizka->nastavAnotaci($anotace);
        $url = (string)$kniha[27];
        $knizka->nastavURLObrazku($url);

// Uloz knizku
        $knizka->uloz();
    }

    function nactiCeny()
    {
        if (($handle = fopen('import/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('genrespem.csv', 'r')) !== FALSE)
        {
            while (($radek = fgetcsv($handle, 0, ";")) !== FALSE)
            {
                if ((string)$radek[1] == "NE")
                    $this->zakazaneKateg[]=(string)$radek[1];
                else
                    $this->zanryPrevod[(string)$radek[0]] = (string)$radek[1];
            }
            fclose($handle);
        }
    }

    function zjistiCenu($ean)
    {
        return dibi::query("SELECT [price] FROM [ps_product] WHERE [ean13]=%s", $ean)->fetchSingle();
        /*if(count($result) == 0)
            return false;
        $row = $result->fetch();
        $retVal = new stdClass();
        $retVal->importId = $row->import_id;
        $retVal->id = $row->id_product;
        return $retVal;*/

    }
}

Zerion Mini Shell 1.0