1
0
mirror of https://github.com/devcode-it/openstamanager.git synced 2025-01-30 23:45:07 +01:00

Miglioramenti vari

This commit is contained in:
Thomas Zilio 2017-09-04 17:18:54 +02:00
parent d29c722f0e
commit c56a36340d
3 changed files with 19 additions and 4 deletions

View File

@ -393,12 +393,14 @@ class Database extends Util\Singleton
$array = [$array]; $array = [$array];
} }
// Chiavi dei valori
$keys = []; $keys = [];
$temp = array_keys($array[0]); $temp = array_keys($array[0]);
foreach ($temp as $value) { foreach ($temp as $value) {
$keys[] = $this->quote($value); $keys[] = $this->quote($value);
} }
// Valori da inserire
$inserts = []; $inserts = [];
foreach ($array as $values) { foreach ($array as $values) {
foreach ($values as $key => $value) { foreach ($values as $key => $value) {
@ -408,6 +410,7 @@ class Database extends Util\Singleton
$inserts[] = '('.implode(array_values($values), ', ').')'; $inserts[] = '('.implode(array_values($values), ', ').')';
} }
// Costruzione della query
$query = 'INSERT INTO '.$this->quote($table).' ('.implode(',', $keys).') VALUES '.implode($inserts, ', '); $query = 'INSERT INTO '.$this->quote($table).' ('.implode(',', $keys).') VALUES '.implode($inserts, ', ');
if (!empty($return)) { if (!empty($return)) {
@ -435,16 +438,19 @@ class Database extends Util\Singleton
throw new UnexpectedValueException(); throw new UnexpectedValueException();
} }
// Valori da aggiornare
$update = []; $update = [];
foreach ($array as $key => $value) { foreach ($array as $key => $value) {
$update[] = $this->quote($key).' = '.$this->prepareValue($key, $value); $update[] = $this->quote($key).' = '.$this->prepareValue($key, $value);
} }
// Condizioni di aggiornamento
$where = []; $where = [];
foreach ($conditions as $key => $value) { foreach ($conditions as $key => $value) {
$where[] = $this->quote($key).' = '.$this->prepareValue($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 '); $query = 'UPDATE '.$this->quote($table).' SET '.implode($update, ', ').' WHERE '.implode($where, ' AND ');
if (!empty($return)) { if (!empty($return)) {
@ -478,19 +484,23 @@ class Database extends Util\Singleton
throw new UnexpectedValueException(); throw new UnexpectedValueException();
} }
// Valori da ottenere
$select = []; $select = [];
foreach ((array) $array as $key => $value) { foreach ((array) $array as $key => $value) {
$select[] = $value.(is_numeric($key) ? '' : 'AS '.$this->quote($key)); $select[] = $value.(is_numeric($key) ? '' : 'AS '.$this->quote($key));
} }
$select = !empty($select) ? $select : ['*']; $select = !empty($select) ? $select : ['*'];
// Costruzione della query
$query = 'SELECT '.implode(', ', $select).' FROM '.$this->quote($table); $query = 'SELECT '.implode(', ', $select).' FROM '.$this->quote($table);
// Condizioni di selezione
$where = $this->whereStatement($conditions); $where = $this->whereStatement($conditions);
if (!empty($where)) { if (!empty($where)) {
$query .= ' WHERE '.$where; $query .= ' WHERE '.$where;
} }
// Impostazioni di ordinamento
if (!empty($order)) { if (!empty($order)) {
$list = []; $list = [];
$allow = ['ASC', 'DESC']; $allow = ['ASC', 'DESC'];
@ -507,6 +517,7 @@ class Database extends Util\Singleton
$query .= ' ORDER BY '.implode(', ', $list); $query .= ' ORDER BY '.implode(', ', $list);
} }
// Eventuali limiti
if (!empty($limit)) { if (!empty($limit)) {
$query .= ' LIMIT '.(is_array($limit) ? $limit[0].', '.$limit[1] : $limit); $query .= ' LIMIT '.(is_array($limit) ? $limit[0].', '.$limit[1] : $limit);
} }

View File

@ -8,7 +8,9 @@ switch ($resource) {
$order[] = 'idanagrafica'; $order[] = 'idanagrafica';
} }
if(empty($where['deleted'])){
$where['deleted'] = 0; $where['deleted'] = 0;
}
break; break;
} }

View File

@ -761,6 +761,9 @@ function aggiorna_sconto($tables, $fields, $id_record, $options = [])
$descrizione = strtoupper(tr('Sconto')); $descrizione = strtoupper(tr('Sconto'));
// Opzione per disabilitare l'idgruppo (per preventivi)
$id_gruppo = !isset($options['idgruppo']) || !empty($options['idgruppo']);
// Rimozione dello sconto precedente // Rimozione dello sconto precedente
$dbo->query('DELETE FROM '.$tables['row']." WHERE descrizione LIKE '%".$descrizione."%' AND ".$fields['row'].'='.prepare($id_record)); $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 // Aggiorno l'eventuale sconto gestendolo con le righe in fattura
if (!empty($sconto[0]['sconto_globale'])) { if (!empty($sconto[0]['sconto_globale'])) {
if ($sconto[0]['tipo_sconto_globale'] == 'PRC') { 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']; $subtotale = -$subtotale / 100 * $sconto[0]['sconto_globale'];
$descrizione = $descrizione.' '.Translator::numberToLocale($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).')', '#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 ($id_gruppo) {
if (!isset($options['idgruppo']) || !empty($options['idgruppo'])) {
$values['#idgruppo'] = '(SELECT IFNULL(MAX(`idgruppo`) + 1, 0) FROM '.$tables['row'].' AS t WHERE '.$fields['row'].'='.prepare($id_record).')'; $values['#idgruppo'] = '(SELECT IFNULL(MAX(`idgruppo`) + 1, 0) FROM '.$tables['row'].' AS t WHERE '.$fields['row'].'='.prepare($id_record).')';
} }