1
0
mirror of https://github.com/devcode-it/openstamanager.git synced 2024-12-22 21:28:08 +01:00

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')) { switch (post('op')) {
case 'import': 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 $insert = !in_array($data[$key][$primary_key], $rs[0]);
if (post('primary_key')!=''){ }
$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]]); // Campi extra
if (count($idtipoanagrafica) > 0) {
if (!in_array($data[$key][$primary_key], $rs[0])) { // Aggiornamento della tipologia di anagrafiche
$dbo->sync('an_tipianagrafiche_anagrafiche', [
//insert 'idanagrafica' => $dbo->lastInsertedID(),
$dbo->insert('an_anagrafiche', $data[$key]); ], [
'idtipoanagrafica' => (array) $idtipoanagrafica,
//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]]);
} }
} }
// Update
else {
$dbo->update('an_anagrafiche', $data[$key], [$primary_key => $data[$key][$primary_key]]);
}
unset($data[$key]);
}
}
unset($data[$key]);
}
}
break; break;
} }
return [ return [
[ [
'field' => 'codice', 'field' => 'codice',
'label' => 'Codice', 'label' => 'Codice',
'primary_key' => '1', 'primary_key' => true,
], ],
[ [
'field' => 'ragione_sociale', 'field' => 'ragione_sociale',
@ -119,7 +108,12 @@ return [
[ [
'field' => 'id_nazione', 'field' => 'id_nazione',
'label' => 'Nazione', 'label' => 'Nazione',
'other' => 'nazione', 'names' => [
'Nazione',
'id_nazione',
'idnazione',
'nazione',
],
'query' => 'SELECT id as result FROM an_nazioni WHERE LOWER(nome) = LOWER(|value|)', 'query' => 'SELECT id as result FROM an_nazioni WHERE LOWER(nome) = LOWER(|value|)',
], ],
[ [
@ -129,12 +123,22 @@ return [
[ [
'field' => 'idpagamento_vendite', 'field' => 'idpagamento_vendite',
'label' => 'ID Pagamento', 'label' => 'ID Pagamento',
'other' => 'idpagamento', 'names' => [
'Pagamento',
'ID Pagamento',
'id_pagamento',
'idpagamento_vendite',
'idpagamento',
],
], ],
[ [
'field' => 'tipologia', 'field' => 'tipologia',
'label' => 'Tipologia', 'label' => 'Tipologia',
'other' => 'idtipo', 'names' => [
'Tipologia',
'tipologia',
'idtipo',
],
'query' => 'SELECT idtipoanagrafica as result FROM an_tipianagrafiche WHERE descrizione = |value|', '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)) { 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 = $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']); // Cast per latitudine e longitudine
$records[0]['lng'] = floatval($records[0]['lng']); 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'], [ $csv = Import::getFile($id_record, $records[0]['id'], [
'headers' => $first_row, 'headers' => $first_row,
]); ]);
// Interpretazione dei dati // Interpretazione dei dati
$data = []; $data = [];
foreach ($csv as $row) { foreach ($csv as $row) {
@ -45,6 +45,8 @@ switch (post('op')) {
$data[] = $data_row; $data[] = $data_row;
} }
$primary_key = post('primary_key');
// Richiamo delle operazioni specifiche // Richiamo delle operazioni specifiche
include $imports[$id_record]['import']; include $imports[$id_record]['import'];

View File

@ -5,7 +5,6 @@ include_once __DIR__.'/../../core.php';
if (empty($id_record)) { if (empty($id_record)) {
require $docroot.'/add.php'; require $docroot.'/add.php';
} else { } else {
// Inclusione del file del modulo per eventuale HTML personalizzato // Inclusione del file del modulo per eventuale HTML personalizzato
include $imports[$id_record]['import']; include $imports[$id_record]['import'];
@ -24,7 +23,7 @@ if (empty($id_record)) {
'text' => $value['label'], 'text' => $value['label'],
]; ];
if ($value['primary_key']){ if ($value['primary_key']) {
$primary_key = $value['field']; $primary_key = $value['field'];
} }
} }
@ -66,9 +65,7 @@ if (empty($id_record)) {
// Individuazione delle corrispondenze // Individuazione delle corrispondenze
$selected = null; $selected = null;
foreach ($fields as $key => $value) { foreach ($fields as $key => $value) {
//print_r($value); if (in_array($rows[0][$column], $value['names'])) {
//echo $rows[0][$column]."<br>";
if (in_array($rows[0][$column], $value)) {
$first_row = 1; $first_row = 1;
$selected = $key; $selected = $key;
break; break;
@ -108,14 +105,18 @@ if (empty($id_record)) {
echo ' echo '
</div> </div>
</form>'; </form>';
?>
echo '
<script> <script>
$(document).ready(function(){ $(document).ready(function(){';
<?php if ($first_row){ ?>
$('#first_row').prop('checked', false); if ($first_row) {
<?php } ?> echo '
$('#save').html( "<i class='fa fa-flag-checkered'></i> <?= 'Avvia importazione' ?> "); $("#first_row").prop("checked", false).trigger("change");';
}
echo '
$("#save").html("<i class=\"fa fa-flag-checkered\"></i> '.tr('Avvia importazione').'");
}); });
</script> </script>';
<?php
} }

View File

@ -47,6 +47,7 @@ class ChoicesHandler implements HandlerInterface
$values['placeholder'] = isset($values['placeholder']) ? $values['placeholder'] : $values['label']; $values['placeholder'] = isset($values['placeholder']) ? $values['placeholder'] : $values['label'];
// Generazione del codice HTML // Generazione del codice HTML
// "+ this.checked" rende il valore booleano un numero
$result .= ' $result .= '
<div class="input-group"> <div class="input-group">
<span class="input-group-addon"> <span class="input-group-addon">

View File

@ -76,6 +76,16 @@ class Import
$fields = require $import['import']; $fields = require $import['import'];
ob_end_clean(); 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; return $fields;
} }