FIX: aktualizacja produktu

This commit is contained in:
2025-12-15 10:59:02 +01:00
parent dabfcfca0b
commit a8909692f1

View File

@@ -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)