Zaktualizuj skrypty importu produktów, poprawiając logikę aktualizacji stanu magazynowego oraz dostosowując komunikaty wyjściowe.

This commit is contained in:
2025-03-24 11:51:42 +01:00
parent 662acf74e4
commit 338ce2b7ce
10 changed files with 36 additions and 57 deletions

View File

@@ -4036,13 +4036,13 @@
},
"google-merchant_id-1.xml": {
"type": "-",
"size": 73827768,
"size": 73985727,
"lmtime": 0,
"modified": true
},
"google-merchant_id-2.xml": {
"type": "-",
"size": 2956284,
"size": 2954405,
"lmtime": 0,
"modified": true
},
@@ -4074,8 +4074,8 @@
},
"import-product.php": {
"type": "-",
"size": 22080,
"lmtime": 0,
"size": 23703,
"lmtime": 1742503757666,
"modified": false
},
"index.php": {
@@ -4158,8 +4158,8 @@
"script.php": {
"type": "-",
"size": 534,
"lmtime": 0,
"modified": false
"lmtime": 1742503199844,
"modified": true
},
"sitemaps": {},
"sitemap_shop_2.xml": {

View File

@@ -1,15 +1,16 @@
<?php
// Dołącz plik konfiguracyjny PrestaShop
// Dołącz pliki konfiguracyjne PrestaShop
include(dirname(__FILE__) . '/config/config.inc.php');
include(dirname(__FILE__) . '/init.php');
use PrestaShop\PrestaShop\Adapter\ServiceLocator;
use PrestaShop\PrestaShop\Adapter\Entity\Product;
use StockAvailable;
// ID sklepu, dla którego mają być aktualizowane produkty
$id_shop = 2;
// Pobierz produkty, których nazwa zawiera "AMZ" i należą do sklepu o id_shop = 2
// Pobierz produkty zawierające "AMZ" w nazwie i należące do sklepu o id_shop = 2
$sql = new DbQuery();
$sql->select('p.id_product');
$sql->from('product', 'p');
@@ -23,25 +24,43 @@ $products = Db::getInstance()->executeS($sql);
if (!$products) {
echo "Nie znaleziono produktów zawierających 'AMZ' w nazwie dla sklepu ID $id_shop.";
echo '<hr>';
exit;
}
echo count( $products ) . " produktów do aktualizacji.\n";
echo count($products) . " produktów do aktualizacji.<br><hr>";
foreach ($products as $product) {
$id_product = (int) $product['id_product'];
// Zaktualizuj wartość out_of_stock na 2 tylko dla id_shop = 2
$updateSql = "UPDATE " . _DB_PREFIX_ . "stock_available
SET out_of_stock = 2
WHERE id_product = $id_product AND id_shop = $id_shop";
// Aktualizuj out_of_stock = 2 dla głównego rekordu (bez kombinacji) w sklepie
$sql_main = "UPDATE " . _DB_PREFIX_ . "stock_available
SET out_of_stock = 2
WHERE id_product = $id_product AND id_shop = $id_shop AND id_product_attribute = 0";
Db::getInstance()->execute($sql_main);
Db::getInstance()->execute($updateSql);
echo "Zaktualizowano produkt ID $id_product: out_of_stock ustawione na 2.\n";
// Aktualizuj out_of_stock = 2 dla kombinacji w tym sklepie
$sql_attrs = "UPDATE " . _DB_PREFIX_ . "stock_available
SET out_of_stock = 2
WHERE id_product = $id_product AND id_shop = $id_shop AND id_product_attribute > 0";
Db::getInstance()->execute($sql_attrs);
// Aktualizuj globalne ustawienia (jeśli istnieją)
$sql_global = "UPDATE " . _DB_PREFIX_ . "stock_available
SET out_of_stock = 2
WHERE id_product = $id_product AND id_shop = 0";
Db::getInstance()->execute($sql_global);
// Synchronizacja stanu magazynowego
StockAvailable::synchronize($id_product);
echo "✔ Zaktualizowano produkt ID $id_product (out_of_stock = 2, sklep ID $id_shop + globalne).<br>";
}
echo "Aktualizacja zakończona. Wszystkie produkty z 'AMZ' w nazwie mają ustawione out_of_stock na 2 dla sklepu ID $id_shop.";
echo "<hr>Zakończono aktualizację.";
?>
// echo "Aktualizacja zakończona. Wszystkie produkty z 'AMZ' w nazwie mają ustawione out_of_stock na 2 dla sklepu ID $id_shop.";
// https://pacyga.pl/wp-content/uploads/woo-feed/custom/xml/komplet-produktow-3.xml
// Include PrestaShop configuration
@@ -539,44 +558,4 @@ echo "Aktualizacja zakończona. Wszystkie produkty z 'AMZ' w nazwie mają ustawi
// if ($productAdded || $combinationAdded) {
// echo "<script>setTimeout(function(){location.reload();}, 250);</script>";
// }
require_once dirname(__FILE__) . '/config/config.inc.php';
require_once dirname(__FILE__) . '/init.php';
// Pobranie ID produktów zawierających "AMZ" w nazwie i bez uzupełnionego EAN
$products = Db::getInstance()->executeS(
'SELECT p.id_product FROM ' . _DB_PREFIX_ . 'product p
JOIN ' . _DB_PREFIX_ . 'product_lang pl ON p.id_product = pl.id_product
WHERE pl.name LIKE "%AMZ%"'
);
if (!$products) {
die('Nie znaleziono produktów zawierających "AMZ".');
}
foreach ($products as $product) {
$id_product = (int)$product['id_product'];
// Pobranie kombinacji produktu bez uzupełnionego EAN
$combinations = Db::getInstance()->executeS(
'SELECT id_product_attribute, reference FROM ' . _DB_PREFIX_ . 'product_attribute
WHERE id_product = ' . $id_product . ' AND (ean13 IS NULL OR ean13 = "")'
);
if (!$combinations) {
continue;
}
foreach ($combinations as $combination) {
$id_product_attribute = (int)$combination['id_product_attribute'];
$sku = pSQL($combination['reference']); // SKU
// Aktualizacja pola EAN (wstawienie wartości SKU)
Db::getInstance()->execute(
'UPDATE ' . _DB_PREFIX_ . 'product_attribute SET ean13 = "' . $sku . '" WHERE id_product_attribute = ' . $id_product_attribute
);
}
}
echo 'Zaktualizowano SKU do EAN dla wszystkich odpowiednich kombinacji produktów zawierających "AMZ" w nazwie.';
?>

Binary file not shown.

After

Width:  |  Height:  |  Size: 242 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 244 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 61 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 505 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 69 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 190 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 47 KiB