first(); $fromtime = str_replace('-', '', $settingora->value); $loginizio = 'Inizio da ' . $ora_update . "\n"; Log::channel('updateproductsqta')->notice($loginizio); /* $stocks = Stock::join(DB::raw('(SELECT Codice, MAX(DataOra) as data1 from T_WEB_Disponibile GROUP BY Codice ) b'), function($join) { $join->on('T_WEB_Disponibile.Codice', '=', 'b.Codice') ->on('T_WEB_Disponibile.DataOra', '=', 'b.data1'); } ) ->where('data1','>=',$fromtime) ->orderBy('DataOra') ->get(); */ $stocks = Stock::select('Codice', 'QtaDisponibile', DB::raw('MAX(DataOra) as data_recente')) ->where('DataOra', '>=', $fromtime) ->groupBy('Codice', 'QtaDisponibile') ->get(); $nrprodotti = $stocks->count(); $log = ""; foreach ($stocks as $stock) { try { $productsku = Product::where('sku', $stock->Codice)->first(); if ($productsku->count() > 0) { $aggiorna = true; $inprevendita = isArticleInPrevendita($stock->Codice, false); $inprevendita_qtaneg = isArticleInPrevendita($stock->Codice, true); $qtyinstock = intval($productsku['stock_quantity']); if (isset($productsku['name'])) { $titolo = $productsku['name']; } else { $titolo = ''; } // Se il libro è ancora in Prevendita e la quantità è > MyConfig::$qtaMinima, allora non aggiornare la QTA // deve rimanere a > MyConfig::$qtaMinima per poter vedere "In Preordine" if ($inprevendita && $qtyinstock > MyConfig::$qtaInPrevendita) { $aggiorna = false; } 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 < MyConfig::$qtaMinima)) { setPreOrder($stock->Codice, "1", false); $log .= ' SETTATO IN PREVENDITA !
'; } $aggiornato = true; } } if ($log) { Log::channel('updateproductsqta')->notice($log); $log = ""; } } catch (\Exception $e) { $log = "Errore: " . $e->getMessage() . "\n"; Log::channel('updateproductsqta')->error($log); $log = ""; } } $ora_fine = Carbon::now(); $lognrprodotti = ' Prodotti qta aggiornati ' . $nrprodotti . "\n"; $logfine = 'Terminato il ' . $ora_fine . "\n"; $settingora->value = $ora_update; $settingora->save(); if ($aggiornato) { Log::channel('updateproductsqta')->notice($lognrprodotti . $logfine); Mail::raw($loginizio . $lognrprodotti . $logfine, function ($message) { $message->to(Mylog::getEmail()); $message->subject(Mylog::getSubjectEmail("Aggiornam. Qtà Prodotti:")); }); } } }