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