From c56a36340d44575176ffb066c683f1e15f0f7517 Mon Sep 17 00:00:00 2001 From: Thomas Zilio Date: Mon, 4 Sep 2017 17:18:54 +0200 Subject: [PATCH] Miglioramenti vari --- lib/classes/Database.php | 11 +++++++++++ modules/anagrafiche/api/retrieve.php | 4 +++- modules/fatture/modutil.php | 8 +++++--- 3 files changed, 19 insertions(+), 4 deletions(-) diff --git a/lib/classes/Database.php b/lib/classes/Database.php index f5611ae1d..f623eed99 100644 --- a/lib/classes/Database.php +++ b/lib/classes/Database.php @@ -393,12 +393,14 @@ class Database extends Util\Singleton $array = [$array]; } + // Chiavi dei valori $keys = []; $temp = array_keys($array[0]); foreach ($temp as $value) { $keys[] = $this->quote($value); } + // Valori da inserire $inserts = []; foreach ($array as $values) { foreach ($values as $key => $value) { @@ -408,6 +410,7 @@ class Database extends Util\Singleton $inserts[] = '('.implode(array_values($values), ', ').')'; } + // Costruzione della query $query = 'INSERT INTO '.$this->quote($table).' ('.implode(',', $keys).') VALUES '.implode($inserts, ', '); if (!empty($return)) { @@ -435,16 +438,19 @@ class Database extends Util\Singleton throw new UnexpectedValueException(); } + // Valori da aggiornare $update = []; foreach ($array as $key => $value) { $update[] = $this->quote($key).' = '.$this->prepareValue($key, $value); } + // Condizioni di aggiornamento $where = []; foreach ($conditions as $key => $value) { $where[] = $this->quote($key).' = '.$this->prepareValue($key, $value); } + // Costruzione della query $query = 'UPDATE '.$this->quote($table).' SET '.implode($update, ', ').' WHERE '.implode($where, ' AND '); if (!empty($return)) { @@ -478,19 +484,23 @@ class Database extends Util\Singleton throw new UnexpectedValueException(); } + // Valori da ottenere $select = []; foreach ((array) $array as $key => $value) { $select[] = $value.(is_numeric($key) ? '' : 'AS '.$this->quote($key)); } $select = !empty($select) ? $select : ['*']; + // Costruzione della query $query = 'SELECT '.implode(', ', $select).' FROM '.$this->quote($table); + // Condizioni di selezione $where = $this->whereStatement($conditions); if (!empty($where)) { $query .= ' WHERE '.$where; } + // Impostazioni di ordinamento if (!empty($order)) { $list = []; $allow = ['ASC', 'DESC']; @@ -507,6 +517,7 @@ class Database extends Util\Singleton $query .= ' ORDER BY '.implode(', ', $list); } + // Eventuali limiti if (!empty($limit)) { $query .= ' LIMIT '.(is_array($limit) ? $limit[0].', '.$limit[1] : $limit); } diff --git a/modules/anagrafiche/api/retrieve.php b/modules/anagrafiche/api/retrieve.php index 8968fade4..00f03f80c 100644 --- a/modules/anagrafiche/api/retrieve.php +++ b/modules/anagrafiche/api/retrieve.php @@ -8,7 +8,9 @@ switch ($resource) { $order[] = 'idanagrafica'; } - $where['deleted'] = 0; + if(empty($where['deleted'])){ + $where['deleted'] = 0; + } break; } diff --git a/modules/fatture/modutil.php b/modules/fatture/modutil.php index ea1a921d3..abc8ac819 100644 --- a/modules/fatture/modutil.php +++ b/modules/fatture/modutil.php @@ -761,6 +761,9 @@ function aggiorna_sconto($tables, $fields, $id_record, $options = []) $descrizione = strtoupper(tr('Sconto')); + // Opzione per disabilitare l'idgruppo (per preventivi) + $id_gruppo = !isset($options['idgruppo']) || !empty($options['idgruppo']); + // Rimozione dello sconto precedente $dbo->query('DELETE FROM '.$tables['row']." WHERE descrizione LIKE '%".$descrizione."%' AND ".$fields['row'].'='.prepare($id_record)); @@ -771,7 +774,7 @@ function aggiorna_sconto($tables, $fields, $id_record, $options = []) // Aggiorno l'eventuale sconto gestendolo con le righe in fattura if (!empty($sconto[0]['sconto_globale'])) { if ($sconto[0]['tipo_sconto_globale'] == 'PRC') { - $subtotale = $dbo->fetchArray('SELECT SUM(subtotale - sconto) AS imponibile FROM (SELECT '.$tables['row'].'.subtotale, '.$tables['row'].'.sconto FROM '.$tables['row'].' WHERE '.$fields['row'].'='.prepare($id_record).((!isset($options['idgruppo']) || !empty($options['idgruppo'])) ? ' GROUP BY idgruppo' : '').') AS t')[0]['imponibile']; + $subtotale = $dbo->fetchArray('SELECT SUM(subtotale - sconto) AS imponibile FROM (SELECT '.$tables['row'].'.subtotale, '.$tables['row'].'.sconto FROM '.$tables['row'].' WHERE '.$fields['row'].'='.prepare($id_record).($id_gruppo ? ' GROUP BY idgruppo' : '').') AS t')[0]['imponibile']; $subtotale = -$subtotale / 100 * $sconto[0]['sconto_globale']; $descrizione = $descrizione.' '.Translator::numberToLocale($sconto[0]['sconto_globale']).'%'; @@ -795,8 +798,7 @@ function aggiorna_sconto($tables, $fields, $id_record, $options = []) '#order' => '(SELECT IFNULL(MAX(`order`) + 1, 0) FROM '.$tables['row'].' AS t WHERE '.$fields['row'].'='.prepare($id_record).')', ]; - // Opzione per disabilitare l'idgruppo (per preventivi) - if (!isset($options['idgruppo']) || !empty($options['idgruppo'])) { + if ($id_gruppo) { $values['#idgruppo'] = '(SELECT IFNULL(MAX(`idgruppo`) + 1, 0) FROM '.$tables['row'].' AS t WHERE '.$fields['row'].'='.prepare($id_record).')'; }