diff --git a/import-drewmax.php b/import-drewmax.php index 301dec2c..862c5d89 100644 --- a/import-drewmax.php +++ b/import-drewmax.php @@ -298,6 +298,18 @@ function getTaxRulesGroupIdForRate($rate, $id_country = null) { return $id ? (int)$id : 0; } +// Zwraca główny produkt z grupy – pierwszy, którego SKU istnieje w PrestaShop +function findMainProductDataFromGroup($products) { + foreach ($products as $p) { + $ref = (string)$p->sku; + if ($ref !== '' && findProductByReference($ref)) { + return $p; // to główny produkt + } + } + return null; +} + + // === GRUPOWANIE PRODUKTÓW PO SYMBOLU === $productsBySymbol = []; foreach ($xml->product as $productData) { @@ -337,13 +349,20 @@ if ($modeUpdate) { $updatedSomething = false; + foreach ($productsBySymbol as $symbol => $products) { if (empty($products)) { continue; } // Główny produkt – referencja z pierwszego elementu grupy - $mainProductData = $products[0]; + // $mainProductData = $products[0]; + // $reference = (string)$mainProductData->sku; + // $key = 'product_'.$reference; + $mainProductData = findMainProductDataFromGroup($products); + if (!$mainProductData) { + continue; // w grupie nie ma produktu, który istnieje w Presta + } $reference = (string)$mainProductData->sku; $key = 'product_'.$reference; @@ -502,7 +521,12 @@ foreach ($productsBySymbol as $symbol => $products) { } // Główny produkt – dane z pierwszego w grupie - $mainProductData = $products[0]; + // $mainProductData = $products[0]; + // $mainProduct = findProductByReference((string)$mainProductData->sku); + $mainProductData = findMainProductDataFromGroup($products); + if (!$mainProductData) { + $mainProductData = $products[0]; // fallback na etapie dodawania + } $mainProduct = findProductByReference((string)$mainProductData->sku); // BAZA: najtańszy wariant w grupie (brutto i netto)