69 lines
2.3 KiB
PHP
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',
|
|
];
|
|
}
|
|
}
|