added blocco cliente in codice asl
This commit is contained in:
@@ -120,4 +120,4 @@ class VisualLimsApiClient
|
||||
|
||||
return $data;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,68 @@
|
||||
<?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',
|
||||
];
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user