diff --git a/app/Console/Commands/ProductUpdateGm.php b/app/Console/Commands/ProductUpdateGm.php index 01dd1c20..e4785fe3 100644 --- a/app/Console/Commands/ProductUpdateGm.php +++ b/app/Console/Commands/ProductUpdateGm.php @@ -1044,7 +1044,7 @@ class ProductUpdateGm extends Command if ($preorder) { // Controlla se è in preordine - $inprevendita = isArticleInPrevendita($article->IdArticolo); + $inprevendita = isArticleInPrevendita($article->IdArticolo, true); if ($inprevendita) { setPreOrder($article->IdArticolo, true, false); $log4 .= ' SEtTATO IN PREVENDITA !
'; diff --git a/app/Console/Commands/ProductUpdateQta.php b/app/Console/Commands/ProductUpdateQta.php index 041bfa86..7e72e601 100644 --- a/app/Console/Commands/ProductUpdateQta.php +++ b/app/Console/Commands/ProductUpdateQta.php @@ -87,34 +87,46 @@ class ProductUpdateQta extends Command $productsku = Product::where('sku', $stock->Codice)->first(); if ($productsku->count() > 0) { - $data1 = [ + $aggiorna = true; - 'stock_quantity' => $stock->QtaDisponibile, - - ]; - $idprodotto = $productsku['parent_id']; - if ($idprodotto > 0) { - $variation = Variation::update($idprodotto, $productsku['id'], $data1); - } else { - Product::update($productsku['id'], $data1); - } - - $log .= ' *** ' . $stock->Codice . ' QTA=' . $stock->QtaDisponibile . "\n"; - - $inprevendita = isArticleInPrevendita($stock->Codice); - if ($inprevendita) { - setPreOrder($stock->Codice, true, false); - $log .= ' SEtTATO IN PREVENDITA !
'; + $inprevendita = isArticleInPrevendita($stock->Codice, false); + $inprevendita_qtaneg = isArticleInPrevendita($stock->Codice, true); + $qtyinstock = intval($productsku['stock_quantity']); + $titolo = $productsku['title']; + // Se il libro è ancora in Prevendita e la quantità è QTA_IN_PREVENDITA, allora non aggiornare la QTA + // deve rimanere a QTA_IN_PREVENDITA per poter vedere "In Preordine" + if ($inprevendita && $qtyinstock == QTA_IN_PREVENDITA) { + $aggiorna = false; } - $aggiornato = true; + if ($aggiorna) { + $data1 = [ + + 'stock_quantity' => $stock->QtaDisponibile, + + ]; + $idprodotto = $productsku['parent_id']; + if ($idprodotto > 0) { + $variation = Variation::update($idprodotto, $productsku['id'], $data1); + } else { + Product::update($productsku['id'], $data1); + } + + $log .= ' *** ' . $stock->Codice . ' ' . $titolo . ' QTA=' . $stock->QtaDisponibile . "\n"; + + if ($inprevendita_qtaneg && ($qtyinstock != QTA_IN_PREVENDITA)) { + setPreOrder($stock->Codice, true, false); + $log .= ' SEtTATO IN PREVENDITA !
'; + } + + $aggiornato = true; + } } - + if ($log) { Log::channel('updateproductsqta')->notice($log); $log = ""; } - } catch (\Exception $e) { //code error } diff --git a/app/CustomFuncPao.php b/app/CustomFuncPao.php index bc21a4b9..68b34e77 100644 --- a/app/CustomFuncPao.php +++ b/app/CustomFuncPao.php @@ -197,13 +197,13 @@ function setPreOrder($sku, $aggiornapreordine, $debug) } } -function isArticleInPrevendita($id) +function isArticleInPrevendita($id, $checkqtanegativa) { return loadArticleByIdArticle($id, true); } -function loadArticleByIdArticle($id, $checkprevendita = false) +function loadArticleByIdArticle($id, $checkprevendita = false, $checkqtanegativa = false) { try { @@ -225,8 +225,10 @@ function loadArticleByIdArticle($id, $checkprevendita = false) $qtaneg = $article->QtaDisponibile < 0; $inprevendita = false; if ($article) { - $inprevendita = $qtaneg - && ($article->DescrizioneStatoProdotto === 'In prevendita'); + $inprevendita = ($article->DescrizioneStatoProdotto === 'In prevendita'); + if ($checkqtanegativa) { + $inprevendita = $inprevendita && $qtaneg; + } } if ($inprevendita) { return true; diff --git a/routes/web.php b/routes/web.php index 13efe568..3d364f5b 100644 --- a/routes/web.php +++ b/routes/web.php @@ -6195,7 +6195,7 @@ Route::get('/handle-article-action-pao/{id}/{action}', function ($id, $action) { setPreOrder($id, "1", true); } elseif ($action == 'checkPrevendita') { // Logica per verificare se l'articolo è in preordine - $inprevendita = isArticleInPrevendita($id); + $inprevendita = isArticleInPrevendita($id, false); if ($inprevendita) { return "L'articolo è in prevendita"; } else {