diff --git a/modules/anagrafiche/import.php b/modules/anagrafiche/import.php index 87d314078..50c2da12d 100644 --- a/modules/anagrafiche/import.php +++ b/modules/anagrafiche/import.php @@ -4,65 +4,54 @@ include_once __DIR__.'/../../core.php'; switch (post('op')) { case 'import': - - foreach ($data as $key => $value) { - - if (!empty($value)){ - - (array) $idtipoanagrafica = $data[$key]['tipologia']; - unset($data[$key]['tipologia']); + foreach ($data as $key => $value) { + if (!empty($value)) { + $idtipoanagrafica = (array) $data[$key]['tipologia']; + unset($data[$key]['tipologia']); + // Insert o update + $insert = true; + if (!empty($primary_key)) { + $rs = $dbo->select('an_anagrafiche', $primary_key, [ + $primary_key => $data[$key][$primary_key], + ]); - //update - if (post('primary_key')!=''){ + $insert = !in_array($data[$key][$primary_key], $rs[0]); + } - $primary_key = post('primary_key'); + // Insert + if ($insert) { + $dbo->insert('an_anagrafiche', $data[$key]); - $rs = $dbo->select('an_anagrafiche', $primary_key, [$primary_key => $data[$key][$primary_key]]); - - if (!in_array($data[$key][$primary_key], $rs[0])) { - - //insert - $dbo->insert('an_anagrafiche', $data[$key]); - - //campi extra - if (count($idtipoanagrafica)>0){ - // Aggiornamento della tipologia di anagrafiche - $dbo->sync('an_tipianagrafiche_anagrafiche', [ - 'idanagrafica' => $dbo->lastInsertedID(), - ], [ - 'idtipoanagrafica' => (array) $idtipoanagrafica, - ]); - } - - }else{ - //update - $dbo->update('an_anagrafiche', $data[$key], [$primary_key => $data[$key][$primary_key]]); + // Campi extra + if (count($idtipoanagrafica) > 0) { + // Aggiornamento della tipologia di anagrafiche + $dbo->sync('an_tipianagrafiche_anagrafiche', [ + 'idanagrafica' => $dbo->lastInsertedID(), + ], [ + 'idtipoanagrafica' => (array) $idtipoanagrafica, + ]); } } + // Update + else { + $dbo->update('an_anagrafiche', $data[$key], [$primary_key => $data[$key][$primary_key]]); + } + + unset($data[$key]); + } + } - - unset($data[$key]); - - - - } - - } - - break; - - } return [ [ 'field' => 'codice', 'label' => 'Codice', - 'primary_key' => '1', + 'primary_key' => true, ], [ 'field' => 'ragione_sociale', @@ -119,7 +108,12 @@ return [ [ 'field' => 'id_nazione', 'label' => 'Nazione', - 'other' => 'nazione', + 'names' => [ + 'Nazione', + 'id_nazione', + 'idnazione', + 'nazione', + ], 'query' => 'SELECT id as result FROM an_nazioni WHERE LOWER(nome) = LOWER(|value|)', ], [ @@ -129,12 +123,22 @@ return [ [ 'field' => 'idpagamento_vendite', 'label' => 'ID Pagamento', - 'other' => 'idpagamento', + 'names' => [ + 'Pagamento', + 'ID Pagamento', + 'id_pagamento', + 'idpagamento_vendite', + 'idpagamento', + ], ], [ 'field' => 'tipologia', 'label' => 'Tipologia', - 'other' => 'idtipo', + 'names' => [ + 'Tipologia', + 'tipologia', + 'idtipo', + ], 'query' => 'SELECT idtipoanagrafica as result FROM an_tipianagrafiche WHERE descrizione = |value|', ], ]; diff --git a/modules/anagrafiche/init.php b/modules/anagrafiche/init.php index 2859bf5a6..2ca3722bf 100644 --- a/modules/anagrafiche/init.php +++ b/modules/anagrafiche/init.php @@ -5,6 +5,9 @@ include_once __DIR__.'/../../core.php'; if (isset($id_record)) { $records = $dbo->fetchArray('SELECT *, (SELECT GROUP_CONCAT(an_tipianagrafiche.idtipoanagrafica) FROM an_tipianagrafiche INNER JOIN an_tipianagrafiche_anagrafiche ON an_tipianagrafiche.idtipoanagrafica=an_tipianagrafiche_anagrafiche.idtipoanagrafica WHERE idanagrafica=an_anagrafiche.idanagrafica) AS idtipianagrafica, (SELECT GROUP_CONCAT(idagente) FROM an_anagrafiche_agenti WHERE idanagrafica=an_anagrafiche.idanagrafica) AS idagenti, (SELECT GROUP_CONCAT(descrizione) FROM an_tipianagrafiche INNER JOIN an_tipianagrafiche_anagrafiche ON an_tipianagrafiche.idtipoanagrafica=an_tipianagrafiche_anagrafiche.idtipoanagrafica WHERE idanagrafica=an_anagrafiche.idanagrafica) AS tipianagrafica FROM an_anagrafiche GROUP BY idanagrafica HAVING idanagrafica='.prepare($id_record).' '.Modules::getAdditionalsQuery($id_module)); - $records[0]['lat'] = floatval($records[0]['lat']); - $records[0]['lng'] = floatval($records[0]['lng']); + // Cast per latitudine e longitudine + if (!empty($records)) { + $records[0]['lat'] = floatval($records[0]['lat']); + $records[0]['lng'] = floatval($records[0]['lng']); + } } diff --git a/modules/import/actions.php b/modules/import/actions.php index 064805c4d..3ff03cb6e 100644 --- a/modules/import/actions.php +++ b/modules/import/actions.php @@ -19,7 +19,7 @@ switch (post('op')) { $csv = Import::getFile($id_record, $records[0]['id'], [ 'headers' => $first_row, ]); - + // Interpretazione dei dati $data = []; foreach ($csv as $row) { @@ -45,6 +45,8 @@ switch (post('op')) { $data[] = $data_row; } + $primary_key = post('primary_key'); + // Richiamo delle operazioni specifiche include $imports[$id_record]['import']; diff --git a/modules/import/edit.php b/modules/import/edit.php index a82631b0f..a479a6560 100644 --- a/modules/import/edit.php +++ b/modules/import/edit.php @@ -5,7 +5,6 @@ include_once __DIR__.'/../../core.php'; if (empty($id_record)) { require $docroot.'/add.php'; } else { - // Inclusione del file del modulo per eventuale HTML personalizzato include $imports[$id_record]['import']; @@ -24,7 +23,7 @@ if (empty($id_record)) { 'text' => $value['label'], ]; - if ($value['primary_key']){ + if ($value['primary_key']) { $primary_key = $value['field']; } } @@ -66,9 +65,7 @@ if (empty($id_record)) { // Individuazione delle corrispondenze $selected = null; foreach ($fields as $key => $value) { - //print_r($value); - //echo $rows[0][$column]."
"; - if (in_array($rows[0][$column], $value)) { + if (in_array($rows[0][$column], $value['names'])) { $first_row = 1; $selected = $key; break; @@ -108,14 +105,18 @@ if (empty($id_record)) { echo ' '; -?> + + echo ' -'; } diff --git a/src/HTMLBuilder/Handler/ChoicesHandler.php b/src/HTMLBuilder/Handler/ChoicesHandler.php index 25649b2d8..f0ae1bf2b 100644 --- a/src/HTMLBuilder/Handler/ChoicesHandler.php +++ b/src/HTMLBuilder/Handler/ChoicesHandler.php @@ -47,6 +47,7 @@ class ChoicesHandler implements HandlerInterface $values['placeholder'] = isset($values['placeholder']) ? $values['placeholder'] : $values['label']; // Generazione del codice HTML + // "+ this.checked" rende il valore booleano un numero $result .= '
diff --git a/src/Import.php b/src/Import.php index 3975b2a9d..846becaa6 100644 --- a/src/Import.php +++ b/src/Import.php @@ -76,6 +76,16 @@ class Import $fields = require $import['import']; ob_end_clean(); + // Impostazione automatica dei nomi "ufficiali" dei campi + foreach ($fields as $key => $value) { + if (!isset($value['names'])) { + $fields[$key]['names'] = [ + $value['field'], + $value['label'], + ]; + } + } + return $fields; }