data pubblicazione

This commit is contained in:
paoloar77
2024-06-21 13:19:35 +02:00
parent da8c6f1853
commit e31decc10b
5 changed files with 244 additions and 9 deletions

View File

@@ -0,0 +1,100 @@
<?php
namespace App\Console\Commands;
use Carbon\Carbon;
use Codexshaper\WooCommerce\Facades\Product;
use Illuminate\Console\Command;
use App\Setting;
use App\Article;
use App\Mylog;
use Codexshaper\WooCommerce\Models\Product as ModelsProduct;
use Codexshaper\WooCommerce\Facades\Variation;
use Codexshaper\WooCommerce\Facades\Category;
use Illuminate\Support\Facades\DB;
use App\Services\ProductLogger;
class ProductUpdateDataPubb extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'product:datepubb';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Aggiorna la Data di Pubblicazione';
/**
* Create a new command instance.
*
* @return void
*/
public function __construct()
{
parent::__construct();
}
/**
* Execute the console command.
*
* @return int
*/
public function handle()
{
try {
set_time_limit(0);
ini_set("memory_limit", "512M");
$productLogger = new ProductLogger(null, '', true);
$articles = Article::join(DB::raw('(SELECT IdArticolo, MAX(DataOra) AS data FROM T_WEB_Articoli GROUP BY IdArticolo) b'), function ($join) {
$join->on('T_WEB_Articoli.IdArticolo', '=', 'b.IdArticolo')
->on('T_WEB_Articoli.DataOra', '=', 'b.data');
})
->leftJoin(DB::raw('(SELECT e.IdStatoProdotto, e.Descrizione as DescrizioneStatoProdotto FROM T_WEB_StatiProdotto e JOIN (SELECT IdStatoProdotto, MAX(DataOra) as data1 from T_WEB_StatiProdotto GROUP BY IdStatoProdotto) c ON e.IdStatoProdotto = c.IdStatoProdotto AND e.DataOra = c.data1 ) f'), function ($join) {
$join->on('T_WEB_Articoli.IdStatoProdotto', '=', 'f.IdStatoProdotto');
})
->leftJoin(DB::raw('(SELECT g.IdTipologia, g.Descrizione as DescrizioneTipologia FROM T_WEB_Tipologie g JOIN (SELECT IdTipologia, MAX(DataOra) as data1 from T_WEB_Tipologie GROUP BY IdTipologia) h ON g.IdTipologia = h.IdTipologia AND g.DataOra = h.data1 ) i'), function ($join) {
$join->on('T_WEB_Articoli.IdTipologia', '=', 'i.IdTipologia');
})
->leftJoin(DB::raw('(SELECT l.IdTipoFormato, l.Descrizione as DescrizioneFormato FROM T_WEB_TipiFormato l JOIN (SELECT IdTipoFormato, MAX(DataOra) as data1 from T_WEB_TipiFormato GROUP BY IdTipoFormato) m ON l.IdTipoFormato = m.IdTipoFormato AND l.DataOra = m.data1 ) n'), function ($join) {
$join->on('T_WEB_Articoli.IdTipoFormato', '=', 'n.IdTipoFormato');
})
->where(function ($query) {
$query->where('DescrizioneStatoProdotto', 'In commercio')
->orWhere('DescrizioneStatoProdotto', 'In prevendita')
->orWhere('DescrizioneStatoProdotto', 'Prossima uscita');
})
->orderBy('Titolo')
->take(1)
->get();
foreach ($articles as $article) {
$aggiornato = setDataPubblicazione($article, false);
if ($aggiornato) {
$productLogger->setAggiornato(true);
}
}
$productLogger->setLogandSendEmail('Aggiornamento Data Pubblicazione');
echo "************** Finito **************";
} catch (\Exception $e) {
echo $e->getMessage();
if ($productLogger) {
$productLogger->addLog('Error', $e->getMessage());
$productLogger->setLogandSendEmail('Aggiornamento Prodotti');
}
}
}
}

View File

@@ -191,7 +191,11 @@ class ProductUpdateUsedGm extends Command
'key' => 'ristampa',
'value' => $article->Ristampa
],
[
'key' => 'DataPubblicazione',
'value' => $article->DataPubblicazione
],
]
];

View File

@@ -203,7 +203,11 @@ class TestPao extends Command
'key' => 'ristampa',
'value' => $article->Ristampa
],
[
'key' => 'DataPubblicazione',
'value' => $article->DataPubblicazione
],
]
];
if ($id == 0) {

View File

@@ -84,10 +84,6 @@ function updateValueByKeyArr(&$array, $key, $newValue)
$array[$key] = $newValue;
}
function setPreOrderByIdArticolo($idarticolo, $aggiornapreordine, $debug)
{
return setPreOrder($idarticolo, $aggiornapreordine, $debug);
}
function formatDateToItalian($date_string, $input_format = 'Y-m-d H:i:s.u')
{
@@ -288,6 +284,96 @@ function setPreOrder($sku, $aggiornapreordine, $debug)
}
}
function setDataPubblicazione($sku, $debug)
{
try {
// Aggiorna Preorder
$product = Product::where('sku', $sku)->first();
if ($debug) {
echo "Product: " . $sku;
showarray($product);
}
if ($product) {
$titolo = $product['name'];
if ($debug)
echo "Prodotto trovato: " . $titolo . " StockQty = " . $product['stock_quantity'] . "<br>";
$idprodotto = $product['parent_id'];
if (true) {
$data = [];
$article = getArticoloById($sku);
echo $article->titolo . " DataPubblicazione: " . $article->DataPubblicazione . "<br>";
$datepubblstr = "";
$datepubbl_ts = 0;
if ($article->DataPubblicazione) {
$datepubbl = DateTime::createFromFormat('Y-m-d H:i:s.u', $article->DataPubblicazione);
if ($datepubbl !== false) {
$datepubbl_ts = $datepubbl->getTimestamp();
$datepubblstr = $datepubbl->format('d/m/Y');
}
}
if ($idprodotto > 0) {
if ($debug) {
echo "Variazioni: " . $product['parent_id'] . "<br>";
echo "Data Pubblicazione: " . $datepubblstr . "<br>";
}
$variations = Variation::all($product['parent_id']);
if ($debug)
showarray($variations);
for ($i = 0; $i < count($variations); $i++) {
$variation = $variations[$i];
if ($variation->id == $product['id']) {
// convert object into array
$data = json_decode(json_encode($variation), true);
break;
}
}
$agg = true;
// $data['meta_data'] = $product['meta_data'];
if ($data) {
$dataPubbSaved = getValueByKey($product['meta_data'], 'DataPubblicazione');
if ($dataPubbSaved != $datepubbl_ts) {
updateValueByKey($data['meta_data'], 'DataPubblicazione', $datepubbl_ts);
updateValueByKey($data['meta_data'], 'DataPubbStr', $datepubblstr);
if ($debug) {
echo "<br>Dati da Salvare:";
showarray($data);
}
$variation = Variation::update($idprodotto, $product['id'], $data);
if ($variation) {
if ($debug)
echo "Aggiornato: [ParentId=" . $idprodotto . '] ProdId= ' . $product['id'] . ' ' . $variation['name'] . "<br>";
}
return true;
}
}
}
}
} else {
if ($debug)
echo "Il prodotto non esiste";
}
return false;
} catch (Exception $e) {
echo "Errore: " . $e->getMessage();
}
}
function isArticleInPrevendita($id, $checkqtanegativa)
{
return loadArticleByIdArticle($id, true);
@@ -483,6 +569,7 @@ function libriInPrevendita()
} else {
$myview .= '<a href="' . $article->permalink . '/apimacro/public/aggiornapreorder/' . $article->IdArticolo . '/-1/" target="_blank">Impostalo Non Disponibile</a>' . $sep;
}
$myview .= '<a href="' . $article->permalink . '/apimacro/public/aggiornadatapubblicazione/' . $article->IdArticolo . '/" target="_blank">Aggiorna Data Pubb</a>' . $sep;
echo $myview;
@@ -597,6 +684,10 @@ function setProductFromGM($article, $initlog, ProductLogger &$passproductLogger)
'key' => 'ristampa',
'value' => $article->Ristampa
],
[
'key' => 'DataPubblicazione',
'value' => $article->DataPubblicazione
],
]
];

View File

@@ -628,6 +628,10 @@ Route::get('/artlibronuovo', function () {
'value' => $article->Ristampa
],
[
'key' => 'DataPubblicazione',
'value' => $article->DataPubblicazione
],
[
'key' => 'misure',
'value' => $article->Misure
],
@@ -1242,6 +1246,10 @@ Route::get('/artlibroebook', function () {
'key' => 'ristampa',
'value' => $article->Ristampa
],
[
'key' => 'DataPubblicazione',
'value' => $article->DataPubblicazione
],
[
'key' => 'misure',
'value' => $article->Misure
@@ -2191,6 +2199,8 @@ Route::post('/updatecreate', function (Request $request) {
$codifica = true;
}
if ($codifica) {
$productLogger->addLog('', 'ORDINE LIBRO USATO !');
} else {
$orderdetail->CodArticoloGM = intval($prodotto['sku']);
$productLogger->addLog('', '$orderdetail->CodArticoloGM= ' . $orderdetail->CodArticoloGM);
@@ -2234,6 +2244,7 @@ Route::post('/updatecreate', function (Request $request) {
$productLogger->addLog('', 'Cliente:' . json_encode($cliente));
if ($changedest) {
$productLogger->addLog('', 'Change Destinazione:');
$clientedest = new Clientegmdest();
$clientedest->CodDestInternet = $request->customer_id;
$clientedest->Nominativo = $request->shipping['last_name'] . " " . $request->shipping['first_name'];
@@ -2245,12 +2256,21 @@ Route::post('/updatecreate', function (Request $request) {
$cliente->IdNazione = 227;
$clientedest->IdInternet = $request->id;
$clientedest->save();
$productLogger->addLog('', 'Cliente Dest:' . json_encode($clientedest));
try {
$productLogger->addLog('', 'Cliente Dest:' . json_encode($clientedest));
} catch (Exception $e) {
//
}
}
$productLogger->addLog('', 'Inserito ordine ! ');
try {
$productLogger->addLog('', json_encode($request->all()));
} catch (Exception $e) {
}
$productLogger->addLog('', $request->all());
$productLogger->addLog('', 'Inserito ordine');
$productLogger->setLogandSendEmail('Nuovo Ordine !');
} //end if status
} catch (Exception $e) {
Log::error($e->getMessage());
@@ -2571,6 +2591,10 @@ Route::get('/artlibroondemand', function () {
'key' => 'ristampa',
'value' => $article->Ristampa
],
[
'key' => 'DataPubblicazione',
'value' => $article->DataPubblicazione
],
[
'key' => 'misure',
'value' => $article->Misure
@@ -3054,6 +3078,10 @@ Route::get('/artlibrodvd', function () {
'key' => 'ristampa',
'value' => $article->Ristampa
],
[
'key' => 'DataPubblicazione',
'value' => $article->DataPubblicazione
],
[
'key' => 'misure',
'value' => $article->Misure
@@ -4796,6 +4824,10 @@ Route::get('/prossimauscita', function () {
'key' => 'ristampa',
'value' => $article->Ristampa
],
[
'key' => 'DataPubblicazione',
'value' => $article->DataPubblicazione
],
]
];
@@ -5944,6 +5976,10 @@ Route::get('/aggiornapreorder/{idarticolo}/{aggiornapreordine}', function ($idar
setPreOrder($idarticolo, $aggiornapreordine, true);
});
Route::get('/aggiornadatapubblicazione/{idarticolo}', function ($idarticolo) {
setDataPubblicazione($idarticolo, true);
});
Route::get('/paolibri', function () {
set_time_limit(0);