Skip to content

Commit ea69fa7

Browse files
committed
refactor: ottimizzazione funzione delete()
1 parent 841ddf4 commit ea69fa7

37 files changed

Lines changed: 314 additions & 220 deletions

File tree

modules/anagrafiche/actions.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@
9696
$anagrafica->id_ritenuta_acconto_acquisti = post('id_ritenuta_acconto_acquisti') ?: null;
9797
$anagrafica->id_ritenuta_acconto_vendite = post('id_ritenuta_acconto_vendite') ?: null;
9898
$anagrafica->split_payment = post('split_payment');
99-
$anagrafica->id_listino = post('id_listino');
99+
$anagrafica->id_listino = post('id_listino') ?: null;
100100
$anagrafica->tipologie = (array) post('idtipoanagrafica');
101101

102102
$anagrafica->codice_fiscale = strtoupper(post('codice_fiscale'));

modules/categorie_contratti/actions.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@
9999
}
100100

101101
if ($dbo->fetchNum('SELECT `mg_articoli`.* FROM `mg_articoli` WHERE (`id_categoria`='.prepare($id).' OR `id_sottocategoria`='.prepare($id).' OR `id_sottocategoria` IN (SELECT `id` FROM `co_categorie_contratti` WHERE `parent`='.prepare($id).')) AND `deleted_at` IS NULL') == 0) {
102-
$dbo->query('DELETE FROM `co_categorie_contratti` WHERE `id`='.prepare($id));
102+
$dbo->delete('co_categorie_contratti', ['id' => $id]);
103103

104104
flash()->info(tr('Tipologia di _TYPE_ eliminata con successo!', [
105105
'_TYPE_' => 'categoria',

modules/emails/actions.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,8 @@
8282
break;
8383

8484
case 'delete':
85-
$dbo->query('UPDATE `em_templates` SET `deleted_at` = NOW() WHERE `id`='.prepare($id_record));
85+
$template = Template::find($id_record);
86+
$template->delete();
8687

8788
flash()->info(tr('Template delle email eliminato!'));
8889

modules/fatture/actions.php

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -363,11 +363,12 @@
363363
try {
364364
$fattura->delete();
365365

366-
$dbo->query('DELETE FROM co_scadenziario WHERE iddocumento='.prepare($id_record));
367-
$dbo->query('DELETE FROM co_movimenti WHERE iddocumento='.prepare($id_record));
368-
369-
// Azzeramento collegamento della rata contrattuale alla pianificazione
370-
$dbo->query('UPDATE co_fatturazione_contratti SET iddocumento=0 WHERE iddocumento='.prepare($id_record));
366+
$dbo->table('co_scadenziario')
367+
->where('iddocumento', $id_record)
368+
->delete();
369+
$dbo->table('co_movimenti')
370+
->where('iddocumento', $id_record)
371+
->delete();
371372

372373
flash()->info(tr('Fattura eliminata!'));
373374
} catch (InvalidArgumentException) {

modules/interventi/actions.php

Lines changed: 3 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -609,20 +609,8 @@
609609
// Eliminazione intervento
610610
case 'delete':
611611
try {
612-
// Eliminazione associazioni tra interventi e contratti
613-
$dbo->query('UPDATE co_promemoria SET idintervento = NULL WHERE idintervento='.prepare($id_record));
614-
615612
$intervento->delete();
616613

617-
// Elimino il collegamento al componente
618-
$dbo->query('DELETE FROM my_componenti WHERE id_intervento='.prepare($id_record));
619-
620-
// Eliminazione associazione tecnici collegati all'intervento
621-
$dbo->query('DELETE FROM in_interventi_tecnici WHERE idintervento='.prepare($id_record));
622-
623-
// Eliminazione associazione interventi e my_impianti
624-
$dbo->query('DELETE FROM my_impianti_interventi WHERE idintervento='.prepare($id_record));
625-
626614
flash()->info(tr('Intervento eliminato!'));
627615
} catch (InvalidArgumentException) {
628616
flash()->error(tr('Sono stati utilizzati alcuni serial number nel documento: impossibile procedere!'));
@@ -1195,7 +1183,9 @@
11951183
case 'delete_sessione':
11961184
$id_sessione = post('id_sessione');
11971185

1198-
$dbo->query('DELETE FROM in_interventi_tecnici WHERE id='.prepare($id_sessione));
1186+
$dbo->table('in_interventi_tecnici')
1187+
->where('id', $id_sessione)
1188+
->delete();
11991189

12001190
// Notifica rimozione dell' intervento al tecnico
12011191
if (setting('Notifica al tecnico la rimozione della sessione dall\'attività')) {

modules/listini_cliente/actions.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
use Modules\Articoli\Articolo as ArticoloOriginale;
2424
use Modules\ListiniCliente\Articolo;
2525
use Modules\ListiniCliente\Listino;
26+
use Modules\ListiniCliente\Articolo as ArticoloListino;
2627

2728
switch (filter('op')) {
2829
case 'update':
@@ -157,8 +158,7 @@
157158
case 'delete':
158159
if (!empty($id_record)) {
159160
$listino->delete();
160-
$dbo->query('UPDATE `an_anagrafiche` SET id_listino=0 WHERE id_listino='.prepare($id_record));
161-
$dbo->query('DELETE FROM `mg_listini_articoli` WHERE id_listino='.prepare($id_record));
161+
ArticoloListino::where('id_listino', $id_record)->delete();
162162
flash()->info(tr('Listino eliminato correttamente!'));
163163
}
164164

modules/modelli_primanota/actions.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@
5252
$nome = post('nome');
5353

5454
// Eliminazione prima nota
55-
$dbo->query('DELETE FROM co_movimenti_modelli WHERE idmastrino='.prepare($idmastrino));
55+
$dbo->delete('co_movimenti_modelli', ['idmastrino' => $idmastrino]);
5656

5757
for ($i = 0; $i < sizeof(post('idconto')); ++$i) {
5858
$idconto = post('idconto')[$i];
@@ -79,7 +79,7 @@
7979

8080
if (!empty($idmastrino)) {
8181
// Eliminazione prima nota
82-
$dbo->query('DELETE FROM co_movimenti_modelli WHERE idmastrino='.prepare($idmastrino));
82+
$dbo->delete('co_movimenti_modelli', ['idmastrino' => $idmastrino]);
8383

8484
flash()->info(tr('Movimento eliminato!'));
8585
}

modules/partitario/actions.php

Lines changed: 63 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -115,25 +115,39 @@
115115
if ($lvl == 2) {
116116
// Eliminazione conto di livello 2 (co_pianodeiconti2)
117117
// Controllo che non esistano movimenti associati ai conti di livello 3 collegati
118-
$movimenti = $dbo->fetchNum('SELECT co_movimenti.id FROM co_movimenti INNER JOIN co_pianodeiconti3 ON co_movimenti.idconto = co_pianodeiconti3.id WHERE co_pianodeiconti3.idpianodeiconti2 = '.prepare($idconto));
118+
$movimenti = $dbo->table('co_movimenti')
119+
->join('co_pianodeiconti3', 'co_movimenti.idconto', '=', 'co_pianodeiconti3.id')
120+
->where('co_pianodeiconti3.idpianodeiconti2', $idconto)
121+
->count();
119122

120123
if ($idconto != '' and empty($movimenti)) {
121124
// Prima elimino tutti i conti di livello 3 collegati
122-
$conti_livello3 = $dbo->fetchArray('SELECT id FROM co_pianodeiconti3 WHERE idpianodeiconti2 = '.prepare($idconto));
125+
$conti_livello3 = $dbo->table('co_pianodeiconti3')
126+
->where('idpianodeiconti2', $idconto)
127+
->get()
128+
->toArray();
123129

124130
foreach ($conti_livello3 as $conto3) {
125131
// Scollego il conto dalle anagrafiche
126-
$dbo->query('UPDATE an_anagrafiche SET idconto_cliente = NULL WHERE idconto_cliente = '.prepare($conto3['id']));
127-
$dbo->query('UPDATE an_anagrafiche SET idconto_fornitore = NULL WHERE idconto_fornitore = '.prepare($conto3['id']));
132+
$dbo->table('an_anagrafiche')
133+
->where('idconto_cliente', $conto3->id)
134+
->update(['idconto_cliente' => null]);
135+
$dbo->table('an_anagrafiche')
136+
->where('idconto_fornitore', $conto3->id)
137+
->update(['idconto_fornitore' => null]);
128138
}
129139

130140
// Elimino tutti i conti di livello 3 collegati
131-
$dbo->query('DELETE FROM co_pianodeiconti3 WHERE idpianodeiconti2 = '.prepare($idconto));
141+
$deleted_l3 = $dbo->table('co_pianodeiconti3')
142+
->where('idpianodeiconti2', $idconto)
143+
->delete();
132144

133145
// Infine elimino il conto di livello 2
134-
$query = 'DELETE FROM co_pianodeiconti2 WHERE id='.prepare($idconto);
146+
$deleted_l2 = $dbo->table('co_pianodeiconti2')
147+
->where('id', $idconto)
148+
->delete();
135149

136-
if ($dbo->query($query)) {
150+
if ($deleted_l2) {
137151
flash()->info(tr('Conto e tutti i suoi sottoconti eliminati!'));
138152
} else {
139153
flash()->error(tr('Errore durante l\'eliminazione del conto!'));
@@ -144,16 +158,24 @@
144158
} else {
145159
// Eliminazione conto di livello 3 (co_pianodeiconti3) - logica esistente
146160
// Controllo che non esistano movimenti associati al conto
147-
$movimenti = $dbo->fetchNum('SELECT id FROM co_movimenti WHERE idconto = '.prepare($idconto));
161+
$movimenti = $dbo->table('co_movimenti')
162+
->where('idconto', $idconto)
163+
->count();
148164

149165
if ($idconto != '' and empty($movimenti)) {
150166
// Se elimino il conto lo scollego anche da eventuali anagrafiche (cliente e fornitore)
151-
$dbo->query('UPDATE an_anagrafiche SET idconto_cliente = NULL WHERE idconto_cliente = '.prepare($idconto));
152-
$dbo->query('UPDATE an_anagrafiche SET idconto_fornitore = NULL WHERE idconto_fornitore = '.prepare($idconto));
153-
154-
$query = 'DELETE FROM co_pianodeiconti3 WHERE id='.prepare($idconto);
155-
156-
if ($dbo->query($query)) {
167+
$dbo->table('an_anagrafiche')
168+
->where('idconto_cliente', $idconto)
169+
->update(['idconto_cliente' => null]);
170+
$dbo->table('an_anagrafiche')
171+
->where('idconto_fornitore', $idconto)
172+
->update(['idconto_fornitore' => null]);
173+
174+
$deleted = $dbo->table('co_pianodeiconti3')
175+
->where('id', $idconto)
176+
->delete();
177+
178+
if ($deleted) {
157179
flash()->info(tr('Conto eliminato!'));
158180
} else {
159181
flash()->error(tr('Errore durante l\'eliminazione del conto!'));
@@ -167,7 +189,10 @@
167189
// Apertura bilancio
168190
case 'apri-bilancio':
169191
// Eliminazione eventuali movimenti di apertura fatti finora
170-
$dbo->query('DELETE FROM co_movimenti WHERE is_apertura=1 AND data='.prepare($_SESSION['period_start']));
192+
$dbo->table('co_movimenti')
193+
->where('is_apertura', 1)
194+
->where('data', $_SESSION['period_start'])
195+
->delete();
171196

172197
$idconto_apertura = setting('Conto per Apertura conti patrimoniali');
173198
$idconto_chiusura = setting('Conto per Chiusura conti patrimoniali');
@@ -221,7 +246,10 @@
221246
// Chiusura bilancio
222247
case 'chiudi-bilancio':
223248
// Eliminazione eventuali movimenti di chiusura fatti finora
224-
$dbo->query('DELETE FROM co_movimenti WHERE is_chiusura=1 AND data='.prepare($_SESSION['period_end']));
249+
$dbo->table('co_movimenti')
250+
->where('is_chiusura', 1)
251+
->where('data', $_SESSION['period_end'])
252+
->delete();
225253

226254
$idconto_apertura = setting('Conto per Apertura conti patrimoniali');
227255
$idconto_chiusura = setting('Conto per Chiusura conti patrimoniali');
@@ -278,11 +306,13 @@
278306
$end = post('end');
279307
$id_conto = post('id_conto');
280308

281-
$dbo->query('UPDATE co_movimenti
282-
INNER JOIN co_pianodeiconti3 ON co_pianodeiconti3.id = co_movimenti.idconto
283-
SET co_movimenti.totale_reddito = (co_movimenti.totale * co_pianodeiconti3.percentuale_deducibile / 100)
284-
WHERE co_pianodeiconti3.id = '.prepare($id_conto).' AND
285-
co_movimenti.data BETWEEN '.prepare($start).' AND '.prepare($end));
309+
$dbo->table('co_movimenti')
310+
->join('co_pianodeiconti3', 'co_pianodeiconti3.id', '=', 'co_movimenti.idconto')
311+
->where('co_pianodeiconti3.id', $id_conto)
312+
->whereBetween('co_movimenti.data', [$start, $end])
313+
->update([
314+
'co_movimenti.totale_reddito' => $dbo->raw('(co_movimenti.totale * co_pianodeiconti3.percentuale_deducibile / 100)')
315+
]);
286316

287317
break;
288318

@@ -292,10 +322,20 @@
292322
$id_conti3 = 0;
293323

294324
if (!empty($text)) {
295-
$id_conti = $dbo->fetchArray('SELECT id AS idpianodeiconti2 FROM co_pianodeiconti2 WHERE descrizione LIKE '.prepare('%'.$text.'%').' OR numero LIKE '.prepare('%'.$text.'%'));
325+
$id_conti = $dbo->table('co_pianodeiconti2')
326+
->select('id AS idpianodeiconti2')
327+
->where('descrizione', 'like', '%'.$text.'%')
328+
->orWhere('numero', 'like', '%'.$text.'%')
329+
->get()
330+
->toArray();
296331
$id_conti2 = array_column($id_conti, 'idpianodeiconti2');
297332

298-
$id_conti = $dbo->fetchArray('SELECT id AS idpianodeiconti3, idpianodeiconti2 FROM co_pianodeiconti3 WHERE descrizione LIKE '.prepare('%'.$text.'%').' OR numero LIKE '.prepare('%'.$text.'%'));
333+
$id_conti = $dbo->table('co_pianodeiconti3')
334+
->select('id AS idpianodeiconti3', 'idpianodeiconti2')
335+
->where('descrizione', 'like', '%'.$text.'%')
336+
->orWhere('numero', 'like', '%'.$text.'%')
337+
->get()
338+
->toArray();
299339

300340
$id_conti3 = array_column($id_conti, 'idpianodeiconti3');
301341
$id_conti2_3 = array_column($id_conti, 'idpianodeiconti2');

modules/primanota/actions.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@
8080
if (empty(post('idmastrino'))) {
8181
$idmastrino = get_new_idmastrino('co_movimenti_modelli');
8282
} else {
83-
$dbo->query('DELETE FROM co_movimenti_modelli WHERE idmastrino='.prepare(post('idmastrino')));
83+
$dbo->delete('co_movimenti_modelli', ['idmastrino' => post('idmastrino')]);
8484
$idmastrino = post('idmastrino');
8585
}
8686

modules/rivalse/actions.php

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,14 @@
2727
$indetraibile = filter('indetraibile');
2828

2929
if (isset($descrizione) && isset($percentuale) && isset($indetraibile)) {
30-
if ($dbo->fetchNum('SELECT * FROM `co_rivalse` WHERE `descrizione`='.prepare($descrizione).' AND `id`!='.prepare($id_record)) == 0) {
31-
$dbo->query('UPDATE `co_rivalse` SET `descrizione`='.prepare($descrizione).', `percentuale`='.prepare($percentuale).', `indetraibile`='.prepare($indetraibile).' WHERE `id`='.prepare($id_record));
30+
if ($dbo->table('co_rivalse')->where('descrizione', $descrizione)->where('id', '!=', $id_record)->count() == 0) {
31+
$dbo->table('co_rivalse')
32+
->where('id', $id_record)
33+
->update([
34+
'descrizione' => $descrizione,
35+
'percentuale' => $percentuale,
36+
'indetraibile' => $indetraibile,
37+
]);
3238
flash()->info(tr('Salvataggio completato!'));
3339
} else {
3440
flash()->error(tr("E' già presente una tipologia di _TYPE_ con la stessa descrizione!", [
@@ -47,8 +53,12 @@
4753
$indetraibile = filter('indetraibile');
4854

4955
if (isset($descrizione) && isset($percentuale) && isset($indetraibile)) {
50-
if ($dbo->fetchNum('SELECT * FROM `co_rivalse` WHERE `descrizione`='.prepare($descrizione)) == 0) {
51-
$dbo->query('INSERT INTO `co_rivalse` (`descrizione`, `percentuale`, `indetraibile`) VALUES ('.prepare($descrizione).', '.prepare($percentuale).', '.prepare($indetraibile).')');
56+
if ($dbo->table('co_rivalse')->where('descrizione', $descrizione)->count() == 0) {
57+
$dbo->insert('co_rivalse', [
58+
'descrizione' => $descrizione,
59+
'percentuale' => $percentuale,
60+
'indetraibile' => $indetraibile,
61+
]);
5262
$id_record = $dbo->lastInsertedID();
5363

5464
flash()->info(tr('Aggiunta nuova tipologia di _TYPE_', [
@@ -67,7 +77,9 @@
6777

6878
case 'delete':
6979
if (!empty($id_record)) {
70-
$dbo->query('DELETE FROM `co_rivalse` WHERE `id`='.prepare($id_record));
80+
$dbo->table('co_rivalse')
81+
->where('id', $id_record)
82+
->delete();
7183

7284
flash()->info(tr('Tipologia di _TYPE_ eliminata con successo!', [
7385
'_TYPE_' => "ritenuta d'acconto",

0 commit comments

Comments
 (0)