Skip to content

Commit 15799c8

Browse files
committed
refactor: ottimizzazione query
1 parent 10e09b7 commit 15799c8

11 files changed

Lines changed: 311 additions & 73 deletions

File tree

modules/categorie/actions.php

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -143,7 +143,12 @@
143143
$id = $id_record;
144144
}
145145

146-
if ($dbo->fetchNum('SELECT * FROM `mg_articoli` WHERE (`id_categoria`='.prepare($id).' OR `id_sottocategoria`='.prepare($id).' OR `id_sottocategoria` IN (SELECT `id` FROM `zz_categorie` WHERE `parent`='.prepare($id).')) AND `deleted_at` IS NULL') == 0) {
146+
$query = 'SELECT * FROM `mg_articoli` WHERE (`id_categoria` = :id OR `id_sottocategoria` = :id OR `id_sottocategoria` IN (SELECT `id` FROM `zz_categorie` WHERE `parent` = :id)) AND `deleted_at` IS NULL';
147+
$params = [
148+
':id' => $id,
149+
];
150+
151+
if ($dbo->fetchNum($query, $params) == 0) {
147152
$dbo->delete('zz_categorie', ['id' => $id]);
148153

149154
flash()->info(tr('Tipologia di _TYPE_ eliminata con successo!', [

modules/fatture/modutil.php

Lines changed: 101 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -330,8 +330,18 @@ function aggiungi_movimento($iddocumento, $dir, $primanota = 0)
330330
$idconto_riga = $riga['idconto'];
331331
$riga['imponibile'] = $is_nota ? -$riga['imponibile'] : $riga['imponibile'];
332332

333-
$query2 = 'INSERT INTO co_movimenti(idmastrino, data, iddocumento, id_anagrafica, descrizione, idconto, totale, primanota) VALUES('.prepare($idmastrino).', '.prepare($data).', '.prepare($iddocumento).", '', ".prepare($descrizione.' del '.date('d/m/Y', strtotime((string) $data)).' ('.$ragione_sociale.')').', '.prepare($idconto_riga).', '.prepare($riga['imponibile'] * $segno_mov2_ricavivendite).', '.prepare($primanota).')';
334-
$dbo->query($query2);
333+
$query2 = 'INSERT INTO co_movimenti(idmastrino, data, iddocumento, id_anagrafica, descrizione, idconto, totale, primanota) VALUES(:idmastrino, :data, :iddocumento, :id_anagrafica, :descrizione, :idconto, :totale, :primanota)';
334+
$params = [
335+
':idmastrino' => $idmastrino,
336+
':data' => $data,
337+
':iddocumento' => $iddocumento,
338+
':id_anagrafica' => '',
339+
':descrizione' => $descrizione.' del '.date('d/m/Y', strtotime((string) $data)).' ('.$ragione_sociale.')',
340+
':idconto' => $idconto_riga,
341+
':totale' => $riga['imponibile'] * $segno_mov2_ricavivendite,
342+
':primanota' => $primanota,
343+
];
344+
$dbo->query($query2, $params);
335345
}
336346

337347
// 3) Aggiungo il totale sul conto dell'iva
@@ -340,25 +350,55 @@ function aggiungi_movimento($iddocumento, $dir, $primanota = 0)
340350
$descrizione_conto_iva = ($dir == 'entrata') ? 'Iva su vendite' : 'Iva su acquisti';
341351
$idconto_iva = setting('Conto per '.$descrizione_conto_iva);
342352

343-
$query2 = 'INSERT INTO co_movimenti(idmastrino, data, iddocumento, id_anagrafica, descrizione, idconto, totale, primanota) VALUES('.prepare($idmastrino).', '.prepare($data).', '.prepare($iddocumento).", '', ".prepare($descrizione.' del '.date('d/m/Y', strtotime((string) $data)).' ('.$ragione_sociale.')').', '.prepare($idconto_iva).', '.prepare($iva_fattura * $segno_mov3_iva).', '.prepare($primanota).')';
344-
$dbo->query($query2);
353+
$query2 = 'INSERT INTO co_movimenti(idmastrino, data, iddocumento, id_anagrafica, descrizione, idconto, totale, primanota) VALUES(:idmastrino, :data, :iddocumento, :id_anagrafica, :descrizione, :idconto, :totale, :primanota)';
354+
$params = [
355+
':idmastrino' => $idmastrino,
356+
':data' => $data,
357+
':iddocumento' => $iddocumento,
358+
':id_anagrafica' => '',
359+
':descrizione' => $descrizione.' del '.date('d/m/Y', strtotime((string) $data)).' ('.$ragione_sociale.')',
360+
':idconto' => $idconto_iva,
361+
':totale' => $iva_fattura * $segno_mov3_iva,
362+
':primanota' => $primanota,
363+
];
364+
$dbo->query($query2, $params);
345365
}
346366

347-
// Lettura id conto iva indetraibile
348-
if ($iva_indetraibile_fattura != 0 && !$split_payment) {
349-
$idconto_iva2 = setting('Conto per Iva indetraibile');
350-
351-
$query2 = 'INSERT INTO co_movimenti(idmastrino, data, iddocumento, id_anagrafica, descrizione, idconto, totale, primanota) VALUES('.prepare($idmastrino).', '.prepare($data).', '.prepare($iddocumento).", '', ".prepare($descrizione.' del '.date('d/m/Y', strtotime((string) $data)).' ('.$ragione_sociale.')').', '.prepare($idconto_iva2).', '.prepare($iva_indetraibile_fattura * $segno_mov3_iva).', '.prepare($primanota).')';
352-
$dbo->query($query2);
353-
}
367+
// Lettura id conto iva indetraibile
368+
if ($iva_indetraibile_fattura != 0 && !$split_payment) {
369+
$idconto_iva2 = setting('Conto per Iva indetraibile');
370+
371+
$query2 = 'INSERT INTO co_movimenti(idmastrino, data, iddocumento, id_anagrafica, descrizione, idconto, totale, primanota) VALUES(:idmastrino, :data, :iddocumento, :id_anagrafica, :descrizione, :idconto, :totale, :primanota)';
372+
$params = [
373+
':idmastrino' => $idmastrino,
374+
':data' => $data,
375+
':iddocumento' => $iddocumento,
376+
':id_anagrafica' => '',
377+
':descrizione' => $descrizione.' del '.date('d/m/Y', strtotime((string) $data)).' ('.$ragione_sociale.')',
378+
':idconto' => $idconto_iva2,
379+
':totale' => $iva_indetraibile_fattura * $segno_mov3_iva,
380+
':primanota' => $primanota,
381+
];
382+
$dbo->query($query2, $params);
383+
}
354384

355385
// 4) Aggiungo la rivalsa INPS se c'è
356386
// Lettura id conto inps
357387
if ($totale_rivalsainps != 0) {
358388
$idconto_inps = setting('Conto per Erario c/INPS');
359389

360-
$query2 = 'INSERT INTO co_movimenti(idmastrino, data, iddocumento, id_anagrafica, descrizione, idconto, totale, primanota) VALUES('.prepare($idmastrino).', '.prepare($data).', '.prepare($iddocumento).", '', ".prepare($descrizione.' del '.date('d/m/Y', strtotime((string) $data)).' ('.$ragione_sociale.')').', '.prepare($idconto_inps).', '.prepare($totale_rivalsainps * $segno_mov4_inps).', '.prepare($primanota).')';
361-
$dbo->query($query2);
390+
$query2 = 'INSERT INTO co_movimenti(idmastrino, data, iddocumento, id_anagrafica, descrizione, idconto, totale, primanota) VALUES(:idmastrino, :data, :iddocumento, :id_anagrafica, :descrizione, :idconto, :totale, :primanota)';
391+
$params = [
392+
':idmastrino' => $idmastrino,
393+
':data' => $data,
394+
':iddocumento' => $iddocumento,
395+
':id_anagrafica' => '',
396+
':descrizione' => $descrizione.' del '.date('d/m/Y', strtotime((string) $data)).' ('.$ragione_sociale.')',
397+
':idconto' => $idconto_inps,
398+
':totale' => $totale_rivalsainps * $segno_mov4_inps,
399+
':primanota' => $primanota,
400+
];
401+
$dbo->query($query2, $params);
362402
}
363403

364404
// 5) Aggiungo la ritenuta d'acconto se c'è
@@ -367,12 +407,32 @@ function aggiungi_movimento($iddocumento, $dir, $primanota = 0)
367407
$idconto_ritenutaacconto = setting("Conto per Erario c/ritenute d'acconto");
368408

369409
// DARE nel conto ritenuta
370-
$query2 = 'INSERT INTO co_movimenti(idmastrino, data, iddocumento, id_anagrafica, descrizione, idconto, totale, primanota) VALUES('.prepare($idmastrino).', '.prepare($data).', '.prepare($iddocumento).", '', ".prepare($descrizione.' del '.date('d/m/Y', strtotime((string) $data)).' ('.$ragione_sociale.')').', '.prepare($idconto_ritenutaacconto).', '.prepare($totale_ritenutaacconto * $segno_mov5_ritenutaacconto).', '.prepare($primanota).')';
371-
$dbo->query($query2);
410+
$query2 = 'INSERT INTO co_movimenti(idmastrino, data, iddocumento, id_anagrafica, descrizione, idconto, totale, primanota) VALUES(:idmastrino, :data, :iddocumento, :id_anagrafica, :descrizione, :idconto, :totale, :primanota)';
411+
$params = [
412+
':idmastrino' => $idmastrino,
413+
':data' => $data,
414+
':iddocumento' => $iddocumento,
415+
':id_anagrafica' => '',
416+
':descrizione' => $descrizione.' del '.date('d/m/Y', strtotime((string) $data)).' ('.$ragione_sociale.')',
417+
':idconto' => $idconto_ritenutaacconto,
418+
':totale' => $totale_ritenutaacconto * $segno_mov5_ritenutaacconto,
419+
':primanota' => $primanota,
420+
];
421+
$dbo->query($query2, $params);
372422

373423
// AVERE nel riepilogativo clienti
374-
$query2 = 'INSERT INTO co_movimenti(idmastrino, data, iddocumento, id_anagrafica, descrizione, idconto, totale, primanota) VALUES('.prepare($idmastrino).', '.prepare($data).', '.prepare($iddocumento).", '', ".prepare($descrizione.' del '.date('d/m/Y', strtotime((string) $data)).' ('.$ragione_sociale.')').', '.prepare($idconto_controparte).', '.prepare(($totale_ritenutaacconto * $segno_mov5_ritenutaacconto) * -1).', '.prepare($primanota).')';
375-
$dbo->query($query2);
424+
$query2 = 'INSERT INTO co_movimenti(idmastrino, data, iddocumento, id_anagrafica, descrizione, idconto, totale, primanota) VALUES(:idmastrino, :data, :iddocumento, :id_anagrafica, :descrizione, :idconto, :totale, :primanota)';
425+
$params = [
426+
':idmastrino' => $idmastrino,
427+
':data' => $data,
428+
':iddocumento' => $iddocumento,
429+
':id_anagrafica' => '',
430+
':descrizione' => $descrizione.' del '.date('d/m/Y', strtotime((string) $data)).' ('.$ragione_sociale.')',
431+
':idconto' => $idconto_controparte,
432+
':totale' => ($totale_ritenutaacconto * $segno_mov5_ritenutaacconto) * -1,
433+
':primanota' => $primanota,
434+
];
435+
$dbo->query($query2, $params);
376436
}
377437

378438
// 6) Aggiungo la ritenuta enasarco se c'è
@@ -381,12 +441,32 @@ function aggiungi_movimento($iddocumento, $dir, $primanota = 0)
381441
$idconto_ritenutaenasarco = setting('Conto per Erario c/enasarco');
382442

383443
// DARE nel conto ritenuta
384-
$query2 = 'INSERT INTO co_movimenti(idmastrino, data, iddocumento, id_anagrafica, descrizione, idconto, totale, primanota) VALUES('.prepare($idmastrino).', '.prepare($data).', '.prepare($iddocumento).", '', ".prepare($descrizione.' del '.date('d/m/Y', strtotime((string) $data)).' ('.$ragione_sociale.')').', '.prepare($idconto_ritenutaenasarco).', '.prepare($totale_ritenutacontributi * $segno_mov5_ritenutaacconto).', '.prepare($primanota).')';
385-
$dbo->query($query2);
444+
$query2 = 'INSERT INTO co_movimenti(idmastrino, data, iddocumento, id_anagrafica, descrizione, idconto, totale, primanota) VALUES(:idmastrino, :data, :iddocumento, :id_anagrafica, :descrizione, :idconto, :totale, :primanota)';
445+
$params = [
446+
':idmastrino' => $idmastrino,
447+
':data' => $data,
448+
':iddocumento' => $iddocumento,
449+
':id_anagrafica' => '',
450+
':descrizione' => $descrizione.' del '.date('d/m/Y', strtotime((string) $data)).' ('.$ragione_sociale.')',
451+
':idconto' => $idconto_ritenutaenasarco,
452+
':totale' => $totale_ritenutacontributi * $segno_mov5_ritenutaacconto,
453+
':primanota' => $primanota,
454+
];
455+
$dbo->query($query2, $params);
386456

387457
// AVERE nel riepilogativo clienti
388-
$query2 = 'INSERT INTO co_movimenti(idmastrino, data, iddocumento, id_anagrafica, descrizione, idconto, totale, primanota) VALUES('.prepare($idmastrino).', '.prepare($data).', '.prepare($iddocumento).", '', ".prepare($descrizione.' del '.date('d/m/Y', strtotime((string) $data)).' ('.$ragione_sociale.')').', '.prepare($idconto_controparte).', '.prepare(($totale_ritenutacontributi * $segno_mov5_ritenutaacconto) * -1).', '.prepare($primanota).')';
389-
$dbo->query($query2);
458+
$query2 = 'INSERT INTO co_movimenti(idmastrino, data, iddocumento, id_anagrafica, descrizione, idconto, totale, primanota) VALUES(:idmastrino, :data, :iddocumento, :id_anagrafica, :descrizione, :idconto, :totale, :primanota)';
459+
$params = [
460+
':idmastrino' => $idmastrino,
461+
':data' => $data,
462+
':iddocumento' => $iddocumento,
463+
':id_anagrafica' => '',
464+
':descrizione' => $descrizione.' del '.date('d/m/Y', strtotime((string) $data)).' ('.$ragione_sociale.')',
465+
':idconto' => $idconto_controparte,
466+
':totale' => ($totale_ritenutacontributi * $segno_mov5_ritenutaacconto) * -1,
467+
':primanota' => $primanota,
468+
];
469+
$dbo->query($query2, $params);
390470
}
391471
}
392472
}

modules/iva/bulk.php

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -24,16 +24,20 @@
2424
case 'delete_bulk':
2525
$count_iva = $dbo->fetchNum('SELECT `id` FROM `co_iva` WHERE `deleted_at` IS NOT NULL');
2626
foreach ($id_records as $id) {
27-
$res = $dbo->fetchNum('SELECT `co_righe_documenti`.`id` FROM `co_righe_documenti` WHERE `co_righe_documenti`.`idiva`='.prepare($id).
28-
' UNION SELECT `co_righe_preventivi`.`id` FROM `co_righe_preventivi` WHERE `co_righe_preventivi`.`idiva` = '.prepare($id).
29-
' UNION SELECT `co_righe_contratti`.`id` FROM `co_righe_contratti` WHERE `co_righe_contratti`.`idiva` = '.prepare($id).
30-
' UNION SELECT `dt_righe_ddt`.`id` FROM `dt_righe_ddt` WHERE `dt_righe_ddt`.`idiva` = '.prepare($id).
31-
' UNION SELECT `or_righe_ordini`.`id` FROM `or_righe_ordini` WHERE `or_righe_ordini`.`idiva` = '.prepare($id).
32-
' UNION SELECT `mg_articoli`.`id` FROM `mg_articoli` WHERE `mg_articoli`.`idiva_vendita` = '.prepare($id).
33-
' UNION SELECT `an_anagrafiche`.`idanagrafica` AS `id` FROM `an_anagrafiche` WHERE `an_anagrafiche`.`idiva_vendite` = '.prepare($id).' OR `an_anagrafiche`.`idiva_acquisti` = '.prepare($id));
27+
$query = 'SELECT `co_righe_documenti`.`id` FROM `co_righe_documenti` WHERE `co_righe_documenti`.`idiva` = :id
28+
UNION SELECT `co_righe_preventivi`.`id` FROM `co_righe_preventivi` WHERE `co_righe_preventivi`.`idiva` = :id
29+
UNION SELECT `co_righe_contratti`.`id` FROM `co_righe_contratti` WHERE `co_righe_contratti`.`idiva` = :id
30+
UNION SELECT `dt_righe_ddt`.`id` FROM `dt_righe_ddt` WHERE `dt_righe_ddt`.`idiva` = :id
31+
UNION SELECT `or_righe_ordini`.`id` FROM `or_righe_ordini` WHERE `or_righe_ordini`.`idiva` = :id
32+
UNION SELECT `mg_articoli`.`id` FROM `mg_articoli` WHERE `mg_articoli`.`idiva_vendita` = :id
33+
UNION SELECT `an_anagrafiche`.`idanagrafica` AS `id` FROM `an_anagrafiche` WHERE `an_anagrafiche`.`idiva_vendite` = :id OR `an_anagrafiche`.`idiva_acquisti` = :id';
34+
$params = [':id' => $id];
35+
$res = $dbo->fetchNum($query, $params);
3436

3537
if (empty($res)) {
36-
$dbo->query('UPDATE `co_iva` SET `deleted_at` = NOW() WHERE `id` = '.prepare($id).Modules::getAdditionalsQuery($id_module));
38+
$query_update = 'UPDATE `co_iva` SET `deleted_at` = NOW() WHERE `id` = :id';
39+
$params_update = [':id' => $id];
40+
$dbo->query($query_update, $params_update);
3741
}
3842
}
3943
$count_iva = $dbo->fetchNum('SELECT `id` FROM `co_iva` WHERE `deleted_at` IS NOT NULL') - $count_iva;

modules/iva/edit.php

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -34,13 +34,15 @@
3434
],
3535
];
3636

37-
$res = $dbo->fetchNum('SELECT `co_righe_documenti`.`id` FROM `co_righe_documenti` WHERE `co_righe_documenti`.`idiva`='.prepare($id_record).
38-
' UNION SELECT `co_righe_preventivi`.`id` FROM `co_righe_preventivi` WHERE `co_righe_preventivi`.`idiva` = '.prepare($id_record).
39-
' UNION SELECT `co_righe_contratti`.`id` FROM `co_righe_contratti` WHERE `co_righe_contratti`.`idiva` = '.prepare($id_record).
40-
' UNION SELECT `dt_righe_ddt`.`id` FROM `dt_righe_ddt` WHERE `dt_righe_ddt`.`idiva` = '.prepare($id_record).
41-
' UNION SELECT `or_righe_ordini`.`id` FROM `or_righe_ordini` WHERE `or_righe_ordini`.`idiva` = '.prepare($id_record).
42-
' UNION SELECT `mg_articoli`.`id` FROM `mg_articoli` WHERE `mg_articoli`.`idiva_vendita` = '.prepare($id_record).
43-
' UNION SELECT `an_anagrafiche`.`idanagrafica` AS `id` FROM `an_anagrafiche` WHERE `an_anagrafiche`.`idiva_vendite` = '.prepare($id_record).' OR `an_anagrafiche`.`idiva_acquisti` = '.prepare($id_record));
37+
$query = 'SELECT `co_righe_documenti`.`id` FROM `co_righe_documenti` WHERE `co_righe_documenti`.`idiva` = :id_record
38+
UNION SELECT `co_righe_preventivi`.`id` FROM `co_righe_preventivi` WHERE `co_righe_preventivi`.`idiva` = :id_record
39+
UNION SELECT `co_righe_contratti`.`id` FROM `co_righe_contratti` WHERE `co_righe_contratti`.`idiva` = :id_record
40+
UNION SELECT `dt_righe_ddt`.`id` FROM `dt_righe_ddt` WHERE `dt_righe_ddt`.`idiva` = :id_record
41+
UNION SELECT `or_righe_ordini`.`id` FROM `or_righe_ordini` WHERE `or_righe_ordini`.`idiva` = :id_record
42+
UNION SELECT `mg_articoli`.`id` FROM `mg_articoli` WHERE `mg_articoli`.`idiva_vendita` = :id_record
43+
UNION SELECT `an_anagrafiche`.`idanagrafica` AS `id` FROM `an_anagrafiche` WHERE `an_anagrafiche`.`idiva_vendite` = :id_record OR `an_anagrafiche`.`idiva_acquisti` = :id_record';
44+
$params = [':id_record' => $id_record];
45+
$res = $dbo->fetchNum($query, $params);
4446
$is_readonly = 0;
4547
if ($res) {
4648
$is_readonly = '1';

modules/modelli_primanota/actions.php

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,15 @@
3737
} else {
3838
$totale = -$avere;
3939
}
40-
$query = 'INSERT INTO co_movimenti_modelli(idmastrino, nome, descrizione, idconto, totale) VALUES('.prepare($idmastrino).', '.prepare($nome).', '.prepare($descrizione).', '.prepare($idconto).', '.prepare($totale).')';
41-
if ($dbo->query($query)) {
40+
$query = 'INSERT INTO co_movimenti_modelli(idmastrino, nome, descrizione, idconto, totale) VALUES (:idmastrino, :nome, :descrizione, :idconto, :totale)';
41+
$params = [
42+
':idmastrino' => $idmastrino,
43+
':nome' => $nome,
44+
':descrizione' => $descrizione,
45+
':idconto' => $idconto,
46+
':totale' => $totale,
47+
];
48+
if ($dbo->query($query, $params)) {
4249
$id_record = $idmastrino;
4350
}
4451
}
@@ -65,8 +72,15 @@
6572
} else {
6673
$totale = -$avere;
6774
}
68-
$query = 'INSERT INTO co_movimenti_modelli(idmastrino, nome, descrizione, idconto, totale) VALUES('.prepare($idmastrino).', '.prepare($nome).', '.prepare($descrizione).', '.prepare($idconto).', '.prepare($totale).')';
69-
if ($dbo->query($query)) {
75+
$query = 'INSERT INTO co_movimenti_modelli(idmastrino, nome, descrizione, idconto, totale) VALUES (:idmastrino, :nome, :descrizione, :idconto, :totale)';
76+
$params = [
77+
':idmastrino' => $idmastrino,
78+
':nome' => $nome,
79+
':descrizione' => $descrizione,
80+
':idconto' => $idconto,
81+
':totale' => $totale,
82+
];
83+
if ($dbo->query($query, $params)) {
7084
$id_record = $idmastrino;
7185
}
7286
}

modules/ordini/bulk.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -64,8 +64,8 @@
6464
$id_anagrafica = $anagrafica->id;
6565

6666
// Proseguo solo se i documenti scelti sono fatturabili
67-
$ordine = $dbo->fetchOne('SELECT `or_statiordine_lang`.`title` AS stato FROM `or_ordini` INNER JOIN `or_statiordine` ON `or_ordini`.`idstatoordine`=`or_statiordine`.`id` LEFT JOIN `or_statiordine_lang` ON (`or_statiordine`.`id`=`or_statiordine_lang`.`id_record` AND `or_statiordine_lang`.`id_lang`= '.prepare(Models\Locale::getDefault()->id).') WHERE `or_ordini`.`id`='.prepare($id))['stato'];
68-
if (!in_array($ordine, ['Fatturato', 'Evaso', 'Bozza', 'In attesa di conferma', 'Annullato'])) {
67+
$stato = $documento_import->stato;
68+
if ($stato->is_fatturabile) {
6969
$righe = $documento_import->getRighe();
7070
if (!empty($righe)) {
7171
++$numero_totale;

0 commit comments

Comments
 (0)