|
31 | 31 | $descrizione = post('descrizione'); |
32 | 32 | $lvl = post('lvl'); |
33 | 33 | $percentuale = post('percentuale_deducibile') ?: 0; |
34 | | - $dir = post('dir'); |
35 | 34 |
|
36 | 35 | if (post('id_conto') !== null) { |
37 | 36 | if ($lvl == '2') { |
38 | 37 | // Controllo che non sia stato usato un numero non valido del conto |
39 | | - $query = 'SELECT idpianodeiconti1, numero FROM co_pianodeiconti2 WHERE numero = :numero AND idpianodeiconti1 = :id_conto'; |
40 | | - $params = [ |
41 | | - ':numero' => $numero, |
42 | | - ':id_conto' => $id_conto, |
43 | | - ]; |
44 | | - $rs = $dbo->fetchArray($query, $params); |
| 38 | + $query = 'SELECT idpianodeiconti1, numero FROM co_pianodeiconti2 WHERE numero='.prepare($numero).' AND idpianodeiconti1='.prepare($id_conto); |
| 39 | + $rs = $dbo->fetchArray($query); |
45 | 40 |
|
46 | 41 | if (sizeof($rs) == 0) { |
47 | | - $query = 'INSERT INTO co_pianodeiconti2(numero, descrizione, idpianodeiconti1, dir) VALUES (:numero, :descrizione, :id_conto, :dir)'; |
48 | | - $params = [ |
49 | | - ':numero' => $numero, |
50 | | - ':descrizione' => $descrizione, |
51 | | - ':id_conto' => $id_conto, |
52 | | - ':dir' => $dir, |
53 | | - ]; |
| 42 | + $query = 'INSERT INTO co_pianodeiconti2(numero, descrizione, idpianodeiconti1) VALUES('.prepare($numero).', '.prepare($descrizione).', '.prepare($id_conto).')'; |
54 | 43 | } |
55 | 44 | } else { |
56 | 45 | // Controllo che non sia stato usato un numero non valido del conto |
57 | | - $query = 'SELECT idpianodeiconti2, numero FROM co_pianodeiconti3 WHERE numero = :numero AND idpianodeiconti2 = :id_conto'; |
58 | | - $params = [ |
59 | | - ':numero' => $numero, |
60 | | - ':id_conto' => $id_conto, |
61 | | - ]; |
62 | | - $rs = $dbo->fetchArray($query, $params); |
| 46 | + $query = 'SELECT idpianodeiconti2, numero FROM co_pianodeiconti3 WHERE numero='.prepare($numero).' AND idpianodeiconti2='.prepare($id_conto); |
| 47 | + $rs = $dbo->fetchArray($query); |
63 | 48 |
|
64 | 49 | if (sizeof($rs) == 0) { |
65 | | - $query = 'INSERT INTO co_pianodeiconti3(numero, descrizione, idpianodeiconti2, dir, percentuale_deducibile) VALUES (:numero, :descrizione, :id_conto, (SELECT dir FROM co_pianodeiconti2 WHERE id = :id_conto), :percentuale)'; |
66 | | - $params = [ |
67 | | - ':numero' => $numero, |
68 | | - ':descrizione' => $descrizione, |
69 | | - ':id_conto' => $id_conto, |
70 | | - ':percentuale' => $percentuale, |
71 | | - ]; |
| 50 | + $query = 'INSERT INTO co_pianodeiconti3(numero, descrizione, idpianodeiconti2, dir, percentuale_deducibile) VALUES('.prepare($numero).', '.prepare($descrizione).', '.prepare($id_conto).', (SELECT dir FROM co_pianodeiconti2 WHERE id='.prepare($id_conto).'), '.$percentuale.')'; |
72 | 51 | } |
73 | 52 | } |
74 | 53 |
|
|
95 | 74 |
|
96 | 75 | if ($conto_bloccato) { |
97 | 76 | if ($lvl == 2) { |
98 | | - $original_query = 'SELECT descrizione FROM co_pianodeiconti2 WHERE id = :idconto'; |
99 | | - $params = [ |
100 | | - ':idconto' => $idconto, |
101 | | - ]; |
| 77 | + $original_query = 'SELECT descrizione FROM co_pianodeiconti2 WHERE id='.prepare($idconto); |
102 | 78 | } else { |
103 | | - $original_query = 'SELECT descrizione FROM co_pianodeiconti3 WHERE id = :idconto'; |
104 | | - $params = [ |
105 | | - ':idconto' => $idconto, |
106 | | - ]; |
| 79 | + $original_query = 'SELECT descrizione FROM co_pianodeiconti3 WHERE id='.prepare($idconto); |
107 | 80 | } |
108 | | - $original = $dbo->fetchOne($original_query, $params); |
| 81 | + $original = $dbo->fetchOne($original_query); |
109 | 82 | $descrizione = $original['descrizione']; |
110 | 83 | } |
111 | 84 |
|
112 | 85 | if ($lvl == 2) { |
113 | | - $duplicate_query = 'SELECT numero FROM co_pianodeiconti2 WHERE numero = :numero AND NOT id = :idconto AND idpianodeiconti1 = :idpianodeiconti'; |
114 | | - $params = [ |
115 | | - ':numero' => $numero, |
116 | | - ':idconto' => $idconto, |
117 | | - ':idpianodeiconti' => $idpianodeiconti, |
118 | | - ]; |
| 86 | + $duplicate_query = 'SELECT numero FROM co_pianodeiconti2 WHERE numero='.prepare($numero).' AND NOT id='.prepare($idconto).' AND idpianodeiconti1='.prepare($idpianodeiconti); |
119 | 87 |
|
120 | | - $update_query = 'UPDATE co_pianodeiconti2 SET numero = :numero, descrizione = :descrizione, dir = :dir WHERE id = :idconto'; |
121 | | - $params = [ |
122 | | - ':numero' => $numero, |
123 | | - ':descrizione' => $descrizione, |
124 | | - ':dir' => $dir, |
125 | | - ':idconto' => $idconto, |
126 | | - ]; |
| 88 | + $update_query = 'UPDATE co_pianodeiconti2 SET numero='.prepare($numero).', descrizione='.prepare($descrizione).', dir='.prepare($dir).' WHERE id='.prepare($idconto); |
127 | 89 | } else { |
128 | | - $duplicate_query = 'SELECT idpianodeiconti2, numero FROM co_pianodeiconti3 WHERE numero = :numero AND NOT id = :idconto AND idpianodeiconti2 = :idpianodeiconti'; |
129 | | - $params = [ |
130 | | - ':numero' => $numero, |
131 | | - ':idconto' => $idconto, |
132 | | - ':idpianodeiconti' => $idpianodeiconti, |
133 | | - ]; |
| 90 | + $duplicate_query = 'SELECT idpianodeiconti2, numero FROM co_pianodeiconti3 WHERE numero='.prepare($numero).' AND NOT id='.prepare($idconto).' AND idpianodeiconti2='.prepare($idpianodeiconti); |
134 | 91 |
|
135 | | - $update_query = 'UPDATE co_pianodeiconti3 SET numero = :numero, descrizione = :descrizione, percentuale_deducibile = :percentuale WHERE id = :idconto'; |
136 | | - $params = [ |
137 | | - ':numero' => $numero, |
138 | | - ':descrizione' => $descrizione, |
139 | | - ':percentuale' => $percentuale, |
140 | | - ':idconto' => $idconto, |
141 | | - ]; |
| 92 | + $update_query = 'UPDATE co_pianodeiconti3 SET numero='.prepare($numero).', descrizione='.prepare($descrizione).', percentuale_deducibile='.prepare($percentuale).' WHERE id='.prepare($idconto); |
142 | 93 | } |
143 | 94 |
|
144 | 95 | // Controllo che non sia stato usato un numero non valido del conto |
|
163 | 114 | if ($lvl == 2) { |
164 | 115 | // Eliminazione conto di livello 2 (co_pianodeiconti2) |
165 | 116 | // Controllo che non esistano movimenti associati ai conti di livello 3 collegati |
166 | | - $movimenti = $dbo->table('co_movimenti') |
167 | | - ->join('co_pianodeiconti3', 'co_movimenti.idconto', '=', 'co_pianodeiconti3.id') |
168 | | - ->where('co_pianodeiconti3.idpianodeiconti2', $idconto) |
169 | | - ->count(); |
| 117 | + $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)); |
170 | 118 |
|
171 | 119 | if ($idconto != '' and empty($movimenti)) { |
172 | 120 | // Prima elimino tutti i conti di livello 3 collegati |
173 | | - $conti_livello3 = $dbo->table('co_pianodeiconti3') |
174 | | - ->where('idpianodeiconti2', $idconto) |
175 | | - ->get() |
176 | | - ->toArray(); |
| 121 | + $conti_livello3 = $dbo->fetchArray('SELECT id FROM co_pianodeiconti3 WHERE idpianodeiconti2 = '.prepare($idconto)); |
177 | 122 |
|
178 | 123 | foreach ($conti_livello3 as $conto3) { |
179 | 124 | // Scollego il conto dalle anagrafiche |
180 | | - $dbo->table('an_anagrafiche') |
181 | | - ->where('idconto_cliente', $conto3->id) |
182 | | - ->update(['idconto_cliente' => null]); |
183 | | - $dbo->table('an_anagrafiche') |
184 | | - ->where('idconto_fornitore', $conto3->id) |
185 | | - ->update(['idconto_fornitore' => null]); |
| 125 | + $dbo->query('UPDATE an_anagrafiche SET idconto_cliente = NULL WHERE idconto_cliente = '.prepare($conto3['id'])); |
| 126 | + $dbo->query('UPDATE an_anagrafiche SET idconto_fornitore = NULL WHERE idconto_fornitore = '.prepare($conto3['id'])); |
186 | 127 | } |
187 | 128 |
|
188 | 129 | // Elimino tutti i conti di livello 3 collegati |
189 | | - $deleted_l3 = $dbo->table('co_pianodeiconti3') |
190 | | - ->where('idpianodeiconti2', $idconto) |
191 | | - ->delete(); |
| 130 | + $dbo->query('DELETE FROM co_pianodeiconti3 WHERE idpianodeiconti2 = '.prepare($idconto)); |
192 | 131 |
|
193 | 132 | // Infine elimino il conto di livello 2 |
194 | | - $deleted_l2 = $dbo->table('co_pianodeiconti2') |
195 | | - ->where('id', $idconto) |
196 | | - ->delete(); |
| 133 | + $query = 'DELETE FROM co_pianodeiconti2 WHERE id='.prepare($idconto); |
197 | 134 |
|
198 | | - if ($deleted_l2) { |
| 135 | + if ($dbo->query($query)) { |
199 | 136 | flash()->info(tr('Conto e tutti i suoi sottoconti eliminati!')); |
200 | 137 | } else { |
201 | 138 | flash()->error(tr('Errore durante l\'eliminazione del conto!')); |
|
206 | 143 | } else { |
207 | 144 | // Eliminazione conto di livello 3 (co_pianodeiconti3) - logica esistente |
208 | 145 | // Controllo che non esistano movimenti associati al conto |
209 | | - $movimenti = $dbo->table('co_movimenti') |
210 | | - ->where('idconto', $idconto) |
211 | | - ->count(); |
| 146 | + $movimenti = $dbo->fetchNum('SELECT id FROM co_movimenti WHERE idconto = '.prepare($idconto)); |
212 | 147 |
|
213 | 148 | if ($idconto != '' and empty($movimenti)) { |
214 | 149 | // Se elimino il conto lo scollego anche da eventuali anagrafiche (cliente e fornitore) |
215 | | - $dbo->table('an_anagrafiche') |
216 | | - ->where('idconto_cliente', $idconto) |
217 | | - ->update(['idconto_cliente' => null]); |
218 | | - $dbo->table('an_anagrafiche') |
219 | | - ->where('idconto_fornitore', $idconto) |
220 | | - ->update(['idconto_fornitore' => null]); |
221 | | - |
222 | | - $deleted = $dbo->table('co_pianodeiconti3') |
223 | | - ->where('id', $idconto) |
224 | | - ->delete(); |
225 | | - |
226 | | - if ($deleted) { |
| 150 | + $dbo->query('UPDATE an_anagrafiche SET idconto_cliente = NULL WHERE idconto_cliente = '.prepare($idconto)); |
| 151 | + $dbo->query('UPDATE an_anagrafiche SET idconto_fornitore = NULL WHERE idconto_fornitore = '.prepare($idconto)); |
| 152 | + |
| 153 | + $query = 'DELETE FROM co_pianodeiconti3 WHERE id='.prepare($idconto); |
| 154 | + |
| 155 | + if ($dbo->query($query)) { |
227 | 156 | flash()->info(tr('Conto eliminato!')); |
228 | 157 | } else { |
229 | 158 | flash()->error(tr('Errore durante l\'eliminazione del conto!')); |
|
237 | 166 | // Apertura bilancio |
238 | 167 | case 'apri-bilancio': |
239 | 168 | // Eliminazione eventuali movimenti di apertura fatti finora |
240 | | - $dbo->table('co_movimenti') |
241 | | - ->where('is_apertura', 1) |
242 | | - ->where('data', $_SESSION['period_start']) |
243 | | - ->delete(); |
| 169 | + $dbo->query('DELETE FROM co_movimenti WHERE is_apertura=1 AND data='.prepare($_SESSION['period_start'])); |
244 | 170 |
|
245 | 171 | $idconto_apertura = setting('Conto per Apertura conti patrimoniali'); |
246 | 172 | $idconto_chiusura = setting('Conto per Chiusura conti patrimoniali'); |
247 | 173 | $data_inizio = date('Ymd', strtotime($_SESSION['period_start'].' -1 year')); |
248 | 174 | $data_fine = $_SESSION['period_start']; |
249 | 175 |
|
250 | 176 | // Lettura di tutti i conti dello stato patrimoniale con saldo != 0 |
251 | | - $query = 'SELECT co_pianodeiconti3.id, SUM(co_movimenti.totale) AS totale FROM ((co_pianodeiconti3 INNER JOIN co_pianodeiconti2 ON co_pianodeiconti3.idpianodeiconti2=co_pianodeiconti2.id) INNER JOIN co_pianodeiconti1 ON co_pianodeiconti2.idpianodeiconti1=co_pianodeiconti1.id) INNER JOIN co_movimenti ON co_pianodeiconti3.id=co_movimenti.idconto WHERE co_pianodeiconti1.descrizione="Patrimoniale" AND data >= :data_inizio AND data < :data_fine AND co_pianodeiconti3.id != :idconto_chiusura AND is_chiusura = 0 GROUP BY co_pianodeiconti3.id HAVING totale != 0'; |
252 | | - $params = [ |
253 | | - ':data_inizio' => $data_inizio, |
254 | | - ':data_fine' => $data_fine, |
255 | | - ':idconto_chiusura' => $idconto_chiusura, |
256 | | - ]; |
257 | | - $conti = $dbo->fetchArray($query, $params); |
| 177 | + $conti = $dbo->fetchArray('SELECT co_pianodeiconti3.id, SUM(co_movimenti.totale) AS totale FROM ((co_pianodeiconti3 INNER JOIN co_pianodeiconti2 ON co_pianodeiconti3.idpianodeiconti2=co_pianodeiconti2.id) INNER JOIN co_pianodeiconti1 ON co_pianodeiconti2.idpianodeiconti1=co_pianodeiconti1.id) INNER JOIN co_movimenti ON co_pianodeiconti3.id=co_movimenti.idconto WHERE co_pianodeiconti1.descrizione="Patrimoniale" AND data >= '.prepare($data_inizio).' AND data < '.prepare($data_fine).' AND co_pianodeiconti3.id!='.prepare($idconto_chiusura).' AND is_chiusura=0 GROUP BY co_pianodeiconti3.id HAVING totale != 0'); |
258 | 178 |
|
259 | 179 | $mastrino = Mastrino::build(tr('Apertura conto'), $_SESSION['period_start'], 0, true); |
260 | 180 |
|
|
300 | 220 | // Chiusura bilancio |
301 | 221 | case 'chiudi-bilancio': |
302 | 222 | // Eliminazione eventuali movimenti di chiusura fatti finora |
303 | | - $dbo->table('co_movimenti') |
304 | | - ->where('is_chiusura', 1) |
305 | | - ->where('data', $_SESSION['period_end']) |
306 | | - ->delete(); |
| 223 | + $dbo->query('DELETE FROM co_movimenti WHERE is_chiusura=1 AND data='.prepare($_SESSION['period_end'])); |
307 | 224 |
|
308 | 225 | $idconto_apertura = setting('Conto per Apertura conti patrimoniali'); |
309 | 226 | $idconto_chiusura = setting('Conto per Chiusura conti patrimoniali'); |
|
360 | 277 | $end = post('end'); |
361 | 278 | $id_conto = post('id_conto'); |
362 | 279 |
|
363 | | - $dbo->table('co_movimenti') |
364 | | - ->join('co_pianodeiconti3', 'co_pianodeiconti3.id', '=', 'co_movimenti.idconto') |
365 | | - ->where('co_pianodeiconti3.id', $id_conto) |
366 | | - ->whereBetween('co_movimenti.data', [$start, $end]) |
367 | | - ->update([ |
368 | | - 'co_movimenti.totale_reddito' => $dbo->raw('(co_movimenti.totale * co_pianodeiconti3.percentuale_deducibile / 100)') |
369 | | - ]); |
| 280 | + $dbo->query('UPDATE co_movimenti |
| 281 | + INNER JOIN co_pianodeiconti3 ON co_pianodeiconti3.id = co_movimenti.idconto |
| 282 | + SET co_movimenti.totale_reddito = (co_movimenti.totale * co_pianodeiconti3.percentuale_deducibile / 100) |
| 283 | + WHERE co_pianodeiconti3.id = '.prepare($id_conto).' AND |
| 284 | + co_movimenti.data BETWEEN '.prepare($start).' AND '.prepare($end)); |
370 | 285 |
|
371 | 286 | break; |
372 | 287 |
|
|
376 | 291 | $id_conti3 = 0; |
377 | 292 |
|
378 | 293 | if (!empty($text)) { |
379 | | - $id_conti = $dbo->table('co_pianodeiconti2') |
380 | | - ->select('id AS idpianodeiconti2') |
381 | | - ->where('descrizione', 'like', '%'.$text.'%') |
382 | | - ->orWhere('numero', 'like', '%'.$text.'%') |
383 | | - ->get() |
384 | | - ->toArray(); |
| 294 | + $id_conti = $dbo->fetchArray('SELECT id AS idpianodeiconti2 FROM co_pianodeiconti2 WHERE descrizione LIKE '.prepare('%'.$text.'%').' OR numero LIKE '.prepare('%'.$text.'%')); |
385 | 295 | $id_conti2 = array_column($id_conti, 'idpianodeiconti2'); |
386 | 296 |
|
387 | | - $id_conti = $dbo->table('co_pianodeiconti3') |
388 | | - ->select('id AS idpianodeiconti3', 'idpianodeiconti2') |
389 | | - ->where('descrizione', 'like', '%'.$text.'%') |
390 | | - ->orWhere('numero', 'like', '%'.$text.'%') |
391 | | - ->get() |
392 | | - ->toArray(); |
| 297 | + $id_conti = $dbo->fetchArray('SELECT id AS idpianodeiconti3, idpianodeiconti2 FROM co_pianodeiconti3 WHERE descrizione LIKE '.prepare('%'.$text.'%').' OR numero LIKE '.prepare('%'.$text.'%')); |
393 | 298 |
|
394 | 299 | $id_conti3 = array_column($id_conti, 'idpianodeiconti3'); |
395 | 300 | $id_conti2_3 = array_column($id_conti, 'idpianodeiconti2'); |
|
0 commit comments