Bugfix e miglioramenti del codice

Miglioramento della gestione degli import.
This commit is contained in:
Thomas Zilio 2018-03-15 17:39:19 +01:00
parent 3b07c603bc
commit 2252101200
6 changed files with 83 additions and 62 deletions

View File

@ -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|',
],
];

View File

@ -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']);
}
}

View File

@ -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'];

View File

@ -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]."<br>";
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 '
</div>
</form>';
?>
echo '
<script>
$(document).ready(function(){
<?php if ($first_row){ ?>
$('#first_row').prop('checked', false);
<?php } ?>
$('#save').html( "<i class='fa fa-flag-checkered'></i> <?= 'Avvia importazione' ?> ");
$(document).ready(function(){';
if ($first_row) {
echo '
$("#first_row").prop("checked", false).trigger("change");';
}
echo '
$("#save").html("<i class=\"fa fa-flag-checkered\"></i> '.tr('Avvia importazione').'");
});
</script>
<?php
</script>';
}

View File

@ -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 .= '
<div class="input-group">
<span class="input-group-addon">

View File

@ -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;
}