lesillaroutine
This commit is contained in:
@@ -0,0 +1,90 @@
|
||||
<?php
|
||||
ini_set('log_errors', 1);
|
||||
ini_set('error_log', __DIR__ . '/routine_debug.log');
|
||||
|
||||
function applyRoutine(&$excelData, $routineData)
|
||||
{
|
||||
try {
|
||||
// Initial log
|
||||
error_log("Inizio esecuzione routine Le Silla: " . date('Y-m-d H:i:s'));
|
||||
error_log("Dati routine: " . print_r($routineData, true));
|
||||
error_log("Dati excel_data: " . print_r($excelData, true));
|
||||
|
||||
// Check if excelData is empty
|
||||
if (empty($excelData)) {
|
||||
throw new Exception("excelData è vuoto o non valido.");
|
||||
}
|
||||
|
||||
// Extract routine settings with default values
|
||||
$articolo_header = trim($routineData['articolo'] ?? 'ARTICOLO');
|
||||
$descrizione_header = trim($routineData['descrizione'] ?? 'DESCRIZIONE');
|
||||
$headers = $routineData['xls_headers'] ?? [];
|
||||
|
||||
if (empty($headers)) {
|
||||
throw new Exception("Nessun header trovato per la routine Le Silla.");
|
||||
}
|
||||
|
||||
// If headers arrive as JSON string, decode them
|
||||
if (!is_array($headers) && is_string($headers)) {
|
||||
$decoded_headers = json_decode($headers, true);
|
||||
if (json_last_error() === JSON_ERROR_NONE && is_array($decoded_headers)) {
|
||||
$headers = $decoded_headers;
|
||||
}
|
||||
}
|
||||
|
||||
if (!is_array($headers) || empty($headers)) {
|
||||
throw new Exception("Gli header della routine non sono validi.");
|
||||
}
|
||||
|
||||
error_log("Header ricevuti: " . print_r($headers, true));
|
||||
|
||||
// Normalize headers
|
||||
$normalized_headers = array_map(function ($header) {
|
||||
return trim((string)$header);
|
||||
}, $headers);
|
||||
|
||||
error_log("Header normalizzati: " . print_r($normalized_headers, true));
|
||||
error_log("Header values - ARTICOLO: '$articolo_header', DESCRIZIONE: '$descrizione_header'");
|
||||
|
||||
// Find column indexes
|
||||
$articolo_index = array_search($articolo_header, $normalized_headers, true);
|
||||
$descrizione_index = array_search($descrizione_header, $normalized_headers, true);
|
||||
|
||||
if ($articolo_index === false) {
|
||||
throw new Exception("Colonna ARTICOLO non trovata.");
|
||||
}
|
||||
if ($descrizione_index === false) {
|
||||
throw new Exception("Colonna DESCRIZIONE non trovata.");
|
||||
}
|
||||
|
||||
error_log("Indici colonne - ARTICOLO: $articolo_index, DESCRIZIONE: $descrizione_index");
|
||||
|
||||
/**
|
||||
* Merge ARTICOLO + DESCRIZIONE into ARTICOLO separated by " - "
|
||||
*/
|
||||
foreach ($excelData as $index => $row) {
|
||||
if (!isset($row['data']) || !is_array($row['data'])) {
|
||||
error_log("Riga non valida, manca 'data' all'indice $index");
|
||||
continue;
|
||||
}
|
||||
|
||||
$value_articolo = trim((string)($row['data'][$articolo_index] ?? ''));
|
||||
$value_descrizione = trim((string)($row['data'][$descrizione_index] ?? ''));
|
||||
|
||||
$parts = [];
|
||||
if ($value_articolo !== '') {
|
||||
$parts[] = $value_articolo;
|
||||
}
|
||||
if ($value_descrizione !== '') {
|
||||
$parts[] = $value_descrizione;
|
||||
}
|
||||
|
||||
$excelData[$index]['data'][$articolo_index] = implode(' - ', $parts);
|
||||
}
|
||||
|
||||
error_log("Routine Le Silla completata con successo - Merge applicato su " . count($excelData) . " righe");
|
||||
} catch (Exception $e) {
|
||||
error_log("Eccezione nella routine Le Silla: " . $e->getMessage());
|
||||
throw $e;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user