%PDF- %PDF-
Mini Shell

Mini Shell

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

<?php

/**
 * Created by PhpStorm.
 * User: Ludek
 * Date: 7. 10. 2016
 * Time: 13:40
 */
class Pemik 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";



        $urlKatalog = "http://www.pemic-books.cz/PemicCatalog/Default.aspx?guid=68C310F5-3C1E-4A7C-A58E-ACEE81A29662&file=catalogue";
        $souborKatalog = "Catalogue_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()
    {
        $nazev = "/www/varak.net/shop.varak.net/import/vstupy/Pemik_".date("Ymd").".txt";
        $katalog = "/tmp/Catalogue_68C310F5-3C1E-4A7C-A58E-ACEE81A29662.txt";
//        $katalog = "/tmp/Catalogue_full_68C310F5-3C1E-4A7C-A58E-ACEE81A29662.txt";
        copy($katalog, $nazev);
//        if (!$this->nacetl)
//            $katalog = "https://shop.varak.net/import/Catalogue_68C310F5-3C1E-4A7C-A58E-ACEE81A29662.txt";
//            return;
        $this->nactiZanry();
        $this->nactiCeny();
        $this->pocitadloKolikZpracuji = 0;

        if (($handle = fopen($katalog, "r")) !== FALSE)
//        if (($handle = fopen('import/Catalogue_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" */

                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" or (string)$kniha[10]=="EN" or (string)$kniha[10]=="FR" or (string)$kniha[10]=="ES")
                    continue; // Slovensko - nezpracovavat

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

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

                if($rok < 2015) continue;   // starsi 2016 - 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 <= 59) 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->pocitadloKolikZpracuji > 1) break;
            }
            fclose($handle);
        }
    }

    function zpracujTitul($kniha)
    {
        $kdeDostupne = "P";
        $dataKnihyImport = array();
        $id = (string)$kniha[0];
        $ean = (string)$kniha[18];
        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 ($prodcena == 0)
            return;

        $knizka = null;
        $prestaId = $this->eanToId($ean);
        if(!$prestaId)
        {
            // Nova kniha
            $update = false;
            $knizka = new Kniha(false);
        }
        else if(strstr($prestaId->importId, 'pemik-'))
        {
            // Update
            $update = true;
//            $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" */

        $dataKnihyImport['importId'] = "pemik-" . $id;
        $dataKnihyImport['active'] = 1;
        $nazev = trim((string)$kniha[1]);
        $dataKnihyImport['name'] = $nazev;
        $dataKnihyImport['meta_title'] = $nazev;
        $dataKnihyImport['width'] = (int)$kniha[23];
        $dataKnihyImport['height'] = (int)$kniha[22];
        $dataKnihyImport['depth'] = (int)$kniha[24];
        $dataKnihyImport['weight'] = (double)$kniha[25] / 1000;
        $dataKnihyImport['meta_description'] = trim((string)$kniha[19]);        // ISBN
        $dataKnihyImport['binding'] = trim((string)$kniha[17]);
        $dataKnihyImport['pages'] = (int)$kniha[20];
        $dataKnihyImport['author'] = trim((string)$kniha[5]);
        $dataKnihyImport['publisher'] = trim((string)$kniha[12]);
        $dataKnihyImport['ean'] = $ean;
        $dataKnihyImport['meta_keywords'] = (string)$kniha[15];
        $dataKnihyImport['image_link'] = (string)$kniha[27];
        $dataKnihyImport['Kde_dostupne'] = "P";

        if ($akcecena < $prodcena and $akcecena <> 0)
        {
            if (!$update)
                $knizka->nastavAkci();
            $prodcena = $akcecena;
        }
        $nakcen = round($prodcena/(1+(floatval($cena[1])/100)),2);
        $dataKnihyImport['wholesale_price'] = $nakcen;
        $dataKnihyImport['id_tax_rules_group'] = $kodDPH;
        $dataKnihyImport['price'] = $prodcena;

// 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[9],4,2) . "-" . substr((string)$kniha[9],6,2);
            elseif (substr($datumDotisku,4,1) <> "")
                $datumDotisku = substr($datumDotisku,0,4) . "-" . substr((string)$kniha[9],4,2) . "-28";
            else
                $datumDotisku = substr($datumDotisku,0,4) . "-12-20";
            $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 ($dostupnost == "D")
            $datumDostupnosti = $datumDotisku;
        $dataKnihyImport['published'] = $datumVydani;
        $dataKnihyImport['available_later'] = $textDostupnosti;
        $dataKnihyImport['available_date'] = $datumDostupnosti;

//      nacist a nastavit kategorii
        $kodZanru = (string)$kniha[15];
        $nacteneZanry = array();
        if (isset($this->zanryPrevod[$kodZanru]))
        {
            $zanrMonami = $this->zanryPrevod[$kodZanru];
            $zanryVRadku = explode("/", $zanrMonami);
            foreach($zanryVRadku as $z1)
            {
                $nacteneZanry[] = $z1;
            }
        }
        $dataKnihyImport['genres'] = $nacteneZanry;

//      anotace
        $anotace = "";
        if ((string)$kniha[26] <> "")
        {
            $anotace = file_get_contents((string)$kniha[26]);
            if ((string)$kniha[16]<> "")
                $anotace = $kniha[16] . " - " . trim($anotace);
            if ((string)$kniha[5] <> "")
                $anotace = trim($anotace) . " / " . $kniha[5];
        }
        $dataKnihyImport['description'] = $anotace;

        $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- " . $ean . " -dph- " . $dph . " -kod- "  . $kodDPH . " -datadph- " .$dataKnihyImport['id_tax_rules_group'] .  " -- \n";
        }
    }

    function nactiCeny()
    {
        $ceny = "/tmp/Price_68C310F5-3C1E-4A7C-A58E-ACEE81A29662.txt";
        $nazev = "/www/varak.net/shop.varak.net/import/vstupy/Pemik_ceny_".date("Ymd").".txt";
        copy($ceny, $nazev);
        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);
        }
    }

    function nactiZanry()
    {
        if (($handle = fopen(__DIR__ . '/genrespem.csv', 'r')) !== FALSE)
        {
            while (($radek = fgetcsv($handle, 0, ";")) !== FALSE)
            {
                if ((string)$radek[1] == "NE")
                    $this->zakazaneKateg[]=(string)$radek[0];
                else
                    $this->zanryPrevod[(string)$radek[0]] = (string)$radek[1];
            }
            fclose($handle);
        }
    }

    function nactiCenyEan()
    {
        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[1]]=$cena;
            }
            fclose($handle);
        }
    }
    function opravdph()
    {
                $this->nactiCenyEan();
                foreach ($this->ceny as $ean => $cena)
                {
                    $kodDPH = $this->ZjistiKodDPH($ean);
                    if ($kodDPH == 3)
                    {
                        $dph = substr((string)$cena[2],0,2);
                        $novyKodDPH = $dph == '10' ? 5 : ($dph == '21' ? 1 : ($dph == '15' ? 2 : 3));
                        $updateData = array('id_tax_rules_group' => $novyKodDPH);
                        dibi::update("ps_product", $updateData)->where("id_product = %i", $this->idKnihy)->execute();
                        dibi::update("ps_product_shop", $updateData)->where("id_product = %i", $this->idKnihy)->execute();
                    }
                }
                return;
    }

}

Zerion Mini Shell 1.0