const POHODA_RESPONSE_PACK_PREFIX = "rsp";
const POHODA_STOCK_WRAPPER_PREFIX = "lStk";
const POHODA_STOCK_ITEM_PREFIX = "stk";
const POHODA_STORAGE_ITEM_PREFIX = "typ";
private function getStockData() {
if (!$this->stockData) return $this->loadStockData($this->xmlStream);
return $this->stockData;
}
private function processStockData() {
$products = [];
$productPrice = null;
$ean = null;
$productCode = null;
$manufacturer = null;
$productName = null;
$validStocks = array_flip($this->config["import"]["stocks"]);
foreach($this->getStockData()->children(self::POHODA_STOCK_WRAPPER_PREFIX, TRUE) as $stock) {
$child = $stock->children(self::POHODA_STOCK_ITEM_PREFIX, TRUE);
$stockHeader = $child->stockHeader;
//filtrujem sklady s pneu
//$stockInfo = $stockHeader->storage->children(self::POHODA_STORAGE_ITEM_PREFIX, TRUE);
// pokud by se mely importovane sklady omezit
//if (isset($validStocks[(int)$stockInfo->id])) {
$ean = trim((string
) $stockHeader->EAN); $productCode = trim((string
) $stockHeader->code); //$productPrice = $child->sellingPrice;
$manufacturer = "";
//najdeme vyrobce
foreach ($this->config["import"]["availableManufacturerNames"] as $manufacturerId => $availableManufacturerName) {
if (\
stristr($productName, $manufacturerId)) { $manufacturer = $availableManufacturerName;
break;
}
}
$stockPriceItem = $child->stockPriceItem;
//najdem korektni cenu dle configu
foreach ($stockPriceItem->stockPrice as $price) {
$priceInfo = $price->children(self::POHODA_STORAGE_ITEM_PREFIX, TRUE);
if ((int) $priceInfo->id === $this->config["import"]["price"]) {
$productPrice = (string) $priceInfo->price;
break;
}
}
//pokud existuje validni EAN and/or produkt_kod+vyrobce and productPrice pridame do seznamu importovanych produktu
if ($ean || ($productCode && $manufacturer)) {
$products[] = [
"b2bID" => null,
"pohodaID" => (int) $stockHeader->id,
"name" => $productName,
"productCode" => $productCode,
"manufacturer" => $manufacturer,
"ean" => $ean,
"productPrice" => $productPrice,
"productCount" => (int
) $stockHeader->count, ];
}
//}
}
return $products;
}
ICAgIGNvbnN0IFBPSE9EQV9SRVNQT05TRV9QQUNLX1BSRUZJWCA9ICJyc3AiOwogICAgY29uc3QgUE9IT0RBX1NUT0NLX1dSQVBQRVJfUFJFRklYID0gImxTdGsiOwogICAgY29uc3QgUE9IT0RBX1NUT0NLX0lURU1fUFJFRklYID0gInN0ayI7CiAgICBjb25zdCBQT0hPREFfU1RPUkFHRV9JVEVNX1BSRUZJWCA9ICJ0eXAiOwogICAgIAogICAgcHJpdmF0ZSBmdW5jdGlvbiBnZXRTdG9ja0RhdGEoKSB7CiAgICAgICAgaWYgKCEkdGhpcy0+c3RvY2tEYXRhKSByZXR1cm4gJHRoaXMtPmxvYWRTdG9ja0RhdGEoJHRoaXMtPnhtbFN0cmVhbSk7CiAgICAgICAgcmV0dXJuICR0aGlzLT5zdG9ja0RhdGE7CiAgICB9CiAgCiAgICAKICAgIAogICAgcHJpdmF0ZSBmdW5jdGlvbiBwcm9jZXNzU3RvY2tEYXRhKCkgewogICAgICAgICRwcm9kdWN0cyA9IFtdOwogICAgICAgICRwcm9kdWN0UHJpY2UgPSBudWxsOwogICAgICAgICRlYW4gPSBudWxsOwogICAgICAgICRwcm9kdWN0Q29kZSA9IG51bGw7CiAgICAgICAgJG1hbnVmYWN0dXJlciA9IG51bGw7CiAgICAgICAgJHByb2R1Y3ROYW1lID0gbnVsbDsKCiAgICAgICAgJHZhbGlkU3RvY2tzID0gYXJyYXlfZmxpcCgkdGhpcy0+Y29uZmlnWyJpbXBvcnQiXVsic3RvY2tzIl0pOwoKICAgICAgICBmb3JlYWNoKCR0aGlzLT5nZXRTdG9ja0RhdGEoKS0+Y2hpbGRyZW4oc2VsZjo6UE9IT0RBX1NUT0NLX1dSQVBQRVJfUFJFRklYLCBUUlVFKSBhcyAkc3RvY2spIHsKCiAgICAgICAgICAgICRjaGlsZCA9ICRzdG9jay0+Y2hpbGRyZW4oc2VsZjo6UE9IT0RBX1NUT0NLX0lURU1fUFJFRklYLCBUUlVFKTsKCiAgICAgICAgICAgICRzdG9ja0hlYWRlciA9ICRjaGlsZC0+c3RvY2tIZWFkZXI7CgogICAgICAgICAgICAvL2ZpbHRydWplbSBza2xhZHkgcyBwbmV1CiAgICAgICAgICAgIC8vJHN0b2NrSW5mbyA9ICRzdG9ja0hlYWRlci0+c3RvcmFnZS0+Y2hpbGRyZW4oc2VsZjo6UE9IT0RBX1NUT1JBR0VfSVRFTV9QUkVGSVgsIFRSVUUpOwoKICAgICAgICAgICAgLy8gcG9rdWQgYnkgc2UgbWVseSBpbXBvcnRvdmFuZSBza2xhZHkgb21leml0CiAgICAgICAgICAgIC8vaWYgKGlzc2V0KCR2YWxpZFN0b2Nrc1soaW50KSRzdG9ja0luZm8tPmlkXSkpIHsKCiAgICAgICAgICAgICAgICAkcHJvZHVjdE5hbWUgPSAoc3RyaW5nKXByZWdfcmVwbGFjZSgnL1xzXHMrLycsICcgJywgdHJpbSgkc3RvY2tIZWFkZXItPm5hbWUpKTsKICAgICAgICAgICAgICAgICRlYW4gPSB0cmltKChzdHJpbmcpICRzdG9ja0hlYWRlci0+RUFOKTsKICAgICAgICAgICAgICAgICRwcm9kdWN0Q29kZSA9IHRyaW0oKHN0cmluZykgJHN0b2NrSGVhZGVyLT5jb2RlKTsKICAgICAgICAgICAgICAgIC8vJHByb2R1Y3RQcmljZSA9ICRjaGlsZC0+c2VsbGluZ1ByaWNlOwogICAgICAgICAgICAgICAgJG1hbnVmYWN0dXJlciA9ICIiOwoKICAgICAgICAgICAgICAgIC8vbmFqZGVtZSB2eXJvYmNlCiAgICAgICAgICAgICAgICBmb3JlYWNoICgkdGhpcy0+Y29uZmlnWyJpbXBvcnQiXVsiYXZhaWxhYmxlTWFudWZhY3R1cmVyTmFtZXMiXSBhcyAkbWFudWZhY3R1cmVySWQgPT4gJGF2YWlsYWJsZU1hbnVmYWN0dXJlck5hbWUpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoXHN0cmlzdHIoJHByb2R1Y3ROYW1lLCAkbWFudWZhY3R1cmVySWQpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRtYW51ZmFjdHVyZXIgPSAkYXZhaWxhYmxlTWFudWZhY3R1cmVyTmFtZTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICRzdG9ja1ByaWNlSXRlbSA9ICRjaGlsZC0+c3RvY2tQcmljZUl0ZW07CiAgICAgICAgICAgICAgICAvL25hamRlbSBrb3Jla3RuaSBjZW51IGRsZSBjb25maWd1CiAgICAgICAgICAgICAgICBmb3JlYWNoICgkc3RvY2tQcmljZUl0ZW0tPnN0b2NrUHJpY2UgYXMgJHByaWNlKSB7CiAgICAgICAgICAgICAgICAgICAgJHByaWNlSW5mbyA9ICRwcmljZS0+Y2hpbGRyZW4oc2VsZjo6UE9IT0RBX1NUT1JBR0VfSVRFTV9QUkVGSVgsIFRSVUUpOwogICAgICAgICAgICAgICAgICAgIGlmICgoaW50KSAkcHJpY2VJbmZvLT5pZCA9PT0gJHRoaXMtPmNvbmZpZ1siaW1wb3J0Il1bInByaWNlIl0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgJHByb2R1Y3RQcmljZSA9IChzdHJpbmcpICRwcmljZUluZm8tPnByaWNlOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgLy9wb2t1ZCBleGlzdHVqZSB2YWxpZG5pIEVBTiBhbmQvb3IgcHJvZHVrdF9rb2Qrdnlyb2JjZSBhbmQgcHJvZHVjdFByaWNlIHByaWRhbWUgZG8gc2V6bmFtdSBpbXBvcnRvdmFueWNoIHByb2R1a3R1CiAgICAgICAgICAgICAgICBpZiAoJGVhbiB8fCAoJHByb2R1Y3RDb2RlICYmICRtYW51ZmFjdHVyZXIpKSB7CiAgICAgICAgICAgICAgICAgICAgICRwcm9kdWN0c1tdID0gWwogICAgICAgICAgICAgICAgICAgICAgICAiYjJiSUQiID0+IG51bGwsCiAgICAgICAgICAgICAgICAgICAgICAgICJwb2hvZGFJRCIgPT4gKGludCkgJHN0b2NrSGVhZGVyLT5pZCwKICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUiID0+ICRwcm9kdWN0TmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgInByb2R1Y3RDb2RlIiA9PiAkcHJvZHVjdENvZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICJtYW51ZmFjdHVyZXIiID0+ICRtYW51ZmFjdHVyZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICJlYW4iID0+ICRlYW4sCiAgICAgICAgICAgICAgICAgICAgICAgICJwcm9kdWN0UHJpY2UiID0+ICRwcm9kdWN0UHJpY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICJwcm9kdWN0Q291bnQiID0+IChpbnQpICRzdG9ja0hlYWRlci0+Y291bnQsCiAgICAgICAgICAgICAgICAgICAgXTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vfQoKICAgICAgICB9CgogICAgICAgIHJldHVybiAkcHJvZHVjdHM7CiAgICB9Cg==
const POHODA_RESPONSE_PACK_PREFIX = "rsp";
const POHODA_STOCK_WRAPPER_PREFIX = "lStk";
const POHODA_STOCK_ITEM_PREFIX = "stk";
const POHODA_STORAGE_ITEM_PREFIX = "typ";
private function getStockData() {
if (!$this->stockData) return $this->loadStockData($this->xmlStream);
return $this->stockData;
}
private function processStockData() {
$products = [];
$productPrice = null;
$ean = null;
$productCode = null;
$manufacturer = null;
$productName = null;
$validStocks = array_flip($this->config["import"]["stocks"]);
foreach($this->getStockData()->children(self::POHODA_STOCK_WRAPPER_PREFIX, TRUE) as $stock) {
$child = $stock->children(self::POHODA_STOCK_ITEM_PREFIX, TRUE);
$stockHeader = $child->stockHeader;
//filtrujem sklady s pneu
//$stockInfo = $stockHeader->storage->children(self::POHODA_STORAGE_ITEM_PREFIX, TRUE);
// pokud by se mely importovane sklady omezit
//if (isset($validStocks[(int)$stockInfo->id])) {
$productName = (string)preg_replace('/\s\s+/', ' ', trim($stockHeader->name));
$ean = trim((string) $stockHeader->EAN);
$productCode = trim((string) $stockHeader->code);
//$productPrice = $child->sellingPrice;
$manufacturer = "";
//najdeme vyrobce
foreach ($this->config["import"]["availableManufacturerNames"] as $manufacturerId => $availableManufacturerName) {
if (\stristr($productName, $manufacturerId)) {
$manufacturer = $availableManufacturerName;
break;
}
}
$stockPriceItem = $child->stockPriceItem;
//najdem korektni cenu dle configu
foreach ($stockPriceItem->stockPrice as $price) {
$priceInfo = $price->children(self::POHODA_STORAGE_ITEM_PREFIX, TRUE);
if ((int) $priceInfo->id === $this->config["import"]["price"]) {
$productPrice = (string) $priceInfo->price;
break;
}
}
//pokud existuje validni EAN and/or produkt_kod+vyrobce and productPrice pridame do seznamu importovanych produktu
if ($ean || ($productCode && $manufacturer)) {
$products[] = [
"b2bID" => null,
"pohodaID" => (int) $stockHeader->id,
"name" => $productName,
"productCode" => $productCode,
"manufacturer" => $manufacturer,
"ean" => $ean,
"productPrice" => $productPrice,
"productCount" => (int) $stockHeader->count,
];
}
//}
}
return $products;
}