ACC SHELL

Path : /srv/www/vhosts/centrumlb/administrace/
File Upload :
Current File : /srv/www/vhosts/centrumlb/administrace/sklady.php

<?php
include_once('config/config.php');
include_once('include/secure.php');
include_once('libs/funkcephp.php');

include_once(TEMPLATES . '/header.tpl');
?>


<div id="obsah1">

    <table>

        <tr>

            <td>&nbsp;&nbsp; | &nbsp;&nbsp;<a href="sklady.php" title="Skladové zásoby">Skladové zásoby</a>
                &nbsp;&nbsp; | &nbsp;&nbsp;<a href="javascript:history.back(-1)" title="">Zpět na předchozí stranu</a>
                &nbsp;&nbsp; | &nbsp;&nbsp;<span id="drobecky">Kde se nacházíte: &nbsp;&nbsp;<a href="index.php" title="Úvodní strana">Úvodní strana</a>
                    &nbsp;&nbsp;/&nbsp;&nbsp; <a href="sklady.php" title="Skladové zásoby">Skladové zásoby</a>
                </span>

            </td>

        </tr>

    </table>
    <br /><br />
    <!-- zacatek panelu 1 -->
    <div class="content-box" id="Item61">

        <!-- nadpis panelu start -->

        <div class="content-box-header">

            <h3 style="cursor: s-resize;">Skladové zásoby</h3>

        </div>

        <!-- nadpis panelu end -->

        <!-- obsah panelu start -->

        <div class="content-box-content">
            <br />
            <fieldset class="column-left"> <!-- Set class to "column-left" or "column-right" on fieldsets to divide the form into columns -->
                <form method="post" action="" enctype="multipart/form-data">
                    <p>
                        <label>Skladové zásoby</label>
                        <input type="file" name="file" id="file" class="medium-input" />
                        <a class="help" title="XML soubor se skladovými zásobami."><img src="images/iko/help.png" alt="" /></a>
                    </p><br /><br />
                    <input class="button" type="submit" name="odeslat" value="Zpracovat" />
                </form>
                <br /><br />
		<?php

		class Skladovka
		{

		    private $skladovka = false;
		    public $message = false;

		    public function __construct($file = null)
		    {
			$this->message = $_SESSION['msg'];
			unset($this->message);
			//$this->skladovka = $file;
			if ($this->isValid($file))
			{
			    $this->skladovka = simplexml_load_file($file['tmp_name']);
			    if (!isset($this->skladovka) || !isset($this->skladovka->product))
			    {
				Tools::message('Zpracování skladových zásob selhalo.', 'ERR');
				return false;
			    }
			}

			NDebugger::dump($file);
			NDebugger::dump($this->message);
			exit;
			return false;
		    }

		    private function isValid($file)
		    {
			if (!$file)
			{
			    Tools::message('Pro zpracování skladových zásob je nutné vložit soubor.', 'INFO');
			    return false;
			}
			if ($file['error'] == 4)
			{
			    Tools::message('Zpracování skladových zásob selhalo.', 'ERR');
			    return false;
			}
		    }

		}

		unset($_SESSION['msg']);
		$_SESSION['msg']['error'] = array();
		$_SESSION['msg']['info'] = array();
		$_SESSION['msg']['success'] = array();
		$_SESSION['msg']['counter'] = 0;
		if (isset($_POST['odeslat']))
		{
		    //$skladovka = new Skladovka($_FILES['file']);
		}


		if (isset($_POST['odeslat']))
		{
		    if (isset($_FILES['file']) && !empty($_FILES['file']))
		    {
			if ($_FILES['file']['error'] !== 4)
			{
			    unset($_SESSION['msg']);
			    $_SESSION['msg']['error'] = array();
			    $_SESSION['msg']['info'] = array();
			    $_SESSION['msg']['success'] = array();
			    $_SESSION['msg']['counter'] = 0;
			    $xml = simplexml_load_file($_FILES['file']['tmp_name']);
			    $masterProdukt = array();
			    if (!isset($xml) || !isset($xml->product))
			    {
				Tools::message('Zpracování skladových zásob selhalo.', 'ERR');
			    } else
			    {
				$Parametry = new Parametry();
				$parametry = $Parametry->getHodnotaParametru();
				foreach ($xml->product as $product)
				{
				    $_SESSION['msg']['counter']++;
				    $parametr = null;
				    //pokud je ve skladovce parametr KS(PA), tak update master produkt
//                                    if ($product->paramValue == 'KS(PA)')
//                                    {
//                                        
//                                    } else
//                                    {
				    foreach ($parametry as $p)
				    {
					if ($p->nazev == $product->paramValue || $p->popis == $product->paramValue)
					{
					    $parametr[] = $p->id;
					    //break;
					}
				    }


				    // NDebugger::dump($product->paramValue);
//				      NDebugger::dump($parametry);
////				      myDebug($product);
//				      NDebugger::dump($parametr);
//				      //myDebug($parametr->id);
//				      exit;
				    /*
				     * 
				     */
				    //attribute are accessted by
				    $produkt = $product['articleCode'];

				    if (empty($parametr) && $product->paramValue != 'KS(PA)')
				    {
					$_SESSION['msg']['error'][] = $product['articleCode'] . ' parametr NENALEZEN (' . $product->paramValue . ')';
					continue;
				    }

				    if ($product->paramValue == 'KS(PA)')
				    {
					//Budu updatovat pouze master produkt
					$query = "SELECT a.id_produktu, a.sklad "
						. "FROM katalog_popis a"
						. "WHERE a.cislo=$produkt AND varianta=0)";
					$p = dibi::query($query)->fetch();
				    } else
				    {
					//Pres hodnotu parametru a cislo artiklu si najdu ten spravny vyrobek
					$query = "SELECT b.id_katalog, a.id_produktu, a.sklad "
						. "FROM katalog_popis a, katalog_parametry b "
						. "WHERE a.id = b.id_katalog AND a.cislo=$produkt AND b.id_hodnoty_parametru IN (%i)";   //$parametr";
					$p = dibi::query($query, $parametr)->fetch();
				    }

				    //exit;

				    $message = $product['articleCode'] . ' (' . $product->paramValue . ')';

				    if (!$p)
				    {
					$_SESSION['msg']['error'][] = $message . ' - <strong>Nenalezeno</strong>';
				    } else
				    {
					if (!isset($masterProdukt[$p->id_produktu]))
					{
					    $masterProdukt[$p->id_produktu] = 0;
					} else
					{
					    $masterProdukt[$p->id_produktu] += $product->stock;
					}

					//exit;
					//Pokud se sklad != $product->stock hodnote v xml, update
					if ($product->stock != $p->sklad)
					{
					    dibi::query('UPDATE katalog_popis SET sklad=%i', (int) $product->stock, 'WHERE id=%i', (int) $p->id_katalog);
					    $_SESSION['msg']['success'][] = $message . " - <strong>Update skladové zásoby (původní: $p->sklad, nová: $product->stock)</strong>";
					} else
					{
					    $_SESSION['msg']['info'][] = $message . " - <strong>Není potřeba upravit skladové zásoby (původní: $p->sklad, nová: $product->stock)</strong>";
					}
				    }
				    if (!empty($p->id_produktu))
				    {
					$seznamProduktu[] = $p->id_produktu;
				    }
				    //}
				}
			    }

			    //NDebugger::dump($masterProdukt);NDebugger::dump(array_unique($seznamProduktu));exit;
			    foreach ($masterProdukt as $masterProdukt => $value)
			    {
				try {
				    dibi::query('UPDATE katalog_popis SET sklad=%i', $value, ' WHERE id=%i', $masterProdukt);
				} catch (Exception $e) {
				    Tools::message('Problém při úpravě skladové zásoby.', 'ERR');
				}
			    }
			} else
			{
			    Tools::message('Zpracování skladových zásob selhalo.', 'ERR');
			}
		    } else
		    {
			Tools::message('Pro zpracování skladových zásob je nutné vložit soubor.', 'INFO');
		    }
		}
		include_once('messages.php');
		?>
                <script>
		    $(document).ready(function() {
			$('.loggerContent').hide();
			$('.logger').click(function() {
			    $(this).next('p').slideToggle("slow");
			    return false;
			});
		    });
                </script>
		<?php
		if (isset($_SESSION['msg']))
		{
		    echo 'Celkem zpracováno ' . $_SESSION['msg']['counter'] . ' položek<br /><br />';
		    echo '<a href="#" class="logger">Chyba (' . count($_SESSION['msg']['error']) . ' položek)</a>';
		    echo '<p class="loggerContent">';
		    foreach ($_SESSION['msg']['error'] as $err)
		    {
			echo $err . '<br />';
		    }
		    echo '</p><br /><br />';

		    echo '<a href="#" class="logger">Info (' . count($_SESSION['msg']['info']) . ' položek)</a>';
		    echo '<p class="loggerContent">';
		    foreach ($_SESSION['msg']['info'] as $info)
		    {
			echo $info . '<br />';
		    }
		    echo '</p><br /><br />';
		    echo '<a href="#" class="logger">Úspěch (' . count($_SESSION['msg']['success']) . ' položek)</a>';
		    echo '<p class="loggerContent">';
		    foreach ($_SESSION['msg']['success'] as $success)
		    {
			echo $success . '<br />';
		    }
		    echo '</p><br /><br />';
		}
		?>
            </fieldset>
            <div class="clear"></div>

        </div>

    </div>



</div>


<?php include_once(TEMPLATES . '/footer.tpl'); ?>


ACC SHELL 2018