Zaktualizuj skrypty importu produktów, poprawiając logikę aktualizacji stanu magazynowego oraz dostosowując komunikaty wyjściowe.
12
.vscode/ftp-kr.sync.cache.json
vendored
@@ -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": {
|
||||
|
||||
@@ -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.';
|
||||
?>
|
||||
|
After Width: | Height: | Size: 242 KiB |
|
After Width: | Height: | Size: 57 KiB |
|
After Width: | Height: | Size: 244 KiB |
|
After Width: | Height: | Size: 61 KiB |
|
After Width: | Height: | Size: 505 KiB |
|
After Width: | Height: | Size: 69 KiB |
|
After Width: | Height: | Size: 190 KiB |
|
After Width: | Height: | Size: 47 KiB |