probe_matrice.txt 2>&1 */ if (PHP_SAPI !== 'cli') { http_response_code(403); exit('Solo da riga di comando'); } $dirs = [__DIR__, dirname(__DIR__), dirname(__DIR__, 2), dirname(__DIR__, 3)]; foreach ($dirs as $d) { if (file_exists($d . '/vendor/autoload.php')) { require_once $d . '/vendor/autoload.php'; break; } } if (class_exists('Dotenv\Dotenv')) { foreach ($dirs as $d) { if (file_exists($d . '/.env')) { Dotenv\Dotenv::createImmutable($d)->safeLoad(); break; } } } require_once __DIR__ . '/class/MagoClient.php'; $opts = getopt('', ['ord:', 'find::']); $ord = $opts['ord'] ?? ''; $find = $opts['find'] ?? ''; if ($ord === '') { exit("Indica il numero ordine: --ord=26/00680\n"); } $mago = MagoClient::fromEnv(); try { $mago->login(); $r = $mago->getDataTable('MA_SaleOrdDetails', [ 'filters' => [['key' => 'InternalOrdNo', 'value' => $ord, 'operator' => 'like']], 'recordsPerPage' => 50, ]); echo "Righe trovate per l'ordine $ord: " . $r['total'] . PHP_EOL; foreach ($r['records'] as $i => $rec) { echo PHP_EOL . '=== RIGA ' . ($i + 1) . ' (Line ' . ($rec['Line'] ?? '?') . ', articolo ' . ($rec['Item'] ?? '') . ') ===' . PHP_EOL; if ($find !== '') { $hits = []; foreach ($rec as $k => $v) { if (is_scalar($v) && stripos((string)$v, $find) !== false) $hits[] = "$k = $v"; } echo '>>> CAMPI CHE CONTENGONO "' . $find . '": ' . ($hits ? implode(' | ', $hits) : 'nessuno') . PHP_EOL; } // tutti i campi non vuoti foreach ($rec as $k => $v) { if ($v === '' || $v === null || $v === 0 || $v === 0.0 || $v === false || $v === '1799-12-31T00:00:00') continue; echo str_pad($k, 32) . ' ' . (is_scalar($v) ? str_replace(["\r", "\n"], [' ', ' ⏎ '], (string)$v) : json_encode($v)) . PHP_EOL; } } } catch (Throwable $e) { fwrite(STDERR, PHP_EOL . 'ERRORE: ' . $e->getMessage() . PHP_EOL); } finally { $mago->logoff(); echo PHP_EOL . 'Logoff eseguito.' . PHP_EOL; }