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 {