1
0
mirror of https://github.com/devcode-it/openstamanager.git synced 2025-01-18 10:15:05 +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];
}
// 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);
}

View File

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

View File

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