Files
trf_certest/public/userarea/class/block_alert.php
T

69 lines
2.3 KiB
PHP

<?php
/**
* Controllo blocco cliente.
*
* Il cliente usa il campo CodiceASL dell'anagrafica LIMS come nota di blocco
* (es. "BLOCCO PER PAGAMENTO"), perché i campi nativi del Blocco Accettazione
* non sono esposti dall'API.
*
* Regola: se è indicato il cliente di Fatturazione avanzata si controlla quello,
* altrimenti il Client.
*
* NESSUNA chiamata API: legge solo il file di cache scritto da get_clienti.php
* (cache/clienti.json), con la sua durata già esistente. Se il file non c'è,
* il controllo viene saltato.
*
* Restituisce null se non c'è blocco o se il controllo non è possibile:
* è solo un avviso e non deve mai far fallire l'export o la mail.
*/
if (!function_exists('getClientBlockAlert')) {
function getClientBlockAlert($clienteId, $clienteFatturazione = null): ?array
{
// Mappa IdCliente => [Nominativo, CodiceASL], letta una sola volta per richiesta
static $clienti = null;
$useFatturazione = !empty($clienteFatturazione);
$targetId = $useFatturazione ? (int) $clienteFatturazione : (int) $clienteId;
if ($targetId <= 0) {
return null;
}
if ($clienti === null) {
$clienti = [];
$cacheFile = dirname(__DIR__) . '/cache/clienti.json';
if (!is_file($cacheFile)) {
error_log("getClientBlockAlert: cache clienti non trovata ({$cacheFile}), controllo saltato");
return null;
}
$json = json_decode((string) file_get_contents($cacheFile), true);
foreach (($json['value'] ?? []) as $c) {
$clienti[(int) ($c['IdCliente'] ?? 0)] = [
'nominativo' => trim((string) ($c['Nominativo'] ?? '')),
'codiceASL' => trim((string) ($c['CodiceASL'] ?? '')),
];
}
}
$cliente = $clienti[$targetId] ?? null;
if (!$cliente) {
return null;
}
$motivo = $cliente['codiceASL'];
if ($motivo === '' || stripos($motivo, 'blocco') === false) {
return null;
}
return [
'idCliente' => $targetId,
'nominativo' => $cliente['nominativo'],
'motivo' => $motivo,
'campo' => $useFatturazione ? 'Fatturazione avanzata' : 'Client',
];
}
}