Skip to content

Commit 152329d

Browse files
committed
fix: aggiunta conti in piano dei conti
1 parent 66f47ae commit 152329d

1 file changed

Lines changed: 37 additions & 132 deletions

File tree

modules/partitario/actions.php

Lines changed: 37 additions & 132 deletions
Original file line numberDiff line numberDiff line change
@@ -31,44 +31,23 @@
3131
$descrizione = post('descrizione');
3232
$lvl = post('lvl');
3333
$percentuale = post('percentuale_deducibile') ?: 0;
34-
$dir = post('dir');
3534

3635
if (post('id_conto') !== null) {
3736
if ($lvl == '2') {
3837
// 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);
4540

4641
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).')';
5443
}
5544
} else {
5645
// 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);
6348

6449
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.')';
7251
}
7352
}
7453

@@ -95,50 +74,22 @@
9574

9675
if ($conto_bloccato) {
9776
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);
10278
} 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);
10780
}
108-
$original = $dbo->fetchOne($original_query, $params);
81+
$original = $dbo->fetchOne($original_query);
10982
$descrizione = $original['descrizione'];
11083
}
11184

11285
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);
11987

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);
12789
} 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);
13491

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);
14293
}
14394

14495
// Controllo che non sia stato usato un numero non valido del conto
@@ -163,39 +114,25 @@
163114
if ($lvl == 2) {
164115
// Eliminazione conto di livello 2 (co_pianodeiconti2)
165116
// 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));
170118

171119
if ($idconto != '' and empty($movimenti)) {
172120
// 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));
177122

178123
foreach ($conti_livello3 as $conto3) {
179124
// 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']));
186127
}
187128

188129
// 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));
192131

193132
// 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);
197134

198-
if ($deleted_l2) {
135+
if ($dbo->query($query)) {
199136
flash()->info(tr('Conto e tutti i suoi sottoconti eliminati!'));
200137
} else {
201138
flash()->error(tr('Errore durante l\'eliminazione del conto!'));
@@ -206,24 +143,16 @@
206143
} else {
207144
// Eliminazione conto di livello 3 (co_pianodeiconti3) - logica esistente
208145
// 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));
212147

213148
if ($idconto != '' and empty($movimenti)) {
214149
// 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)) {
227156
flash()->info(tr('Conto eliminato!'));
228157
} else {
229158
flash()->error(tr('Errore durante l\'eliminazione del conto!'));
@@ -237,24 +166,15 @@
237166
// Apertura bilancio
238167
case 'apri-bilancio':
239168
// 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']));
244170

245171
$idconto_apertura = setting('Conto per Apertura conti patrimoniali');
246172
$idconto_chiusura = setting('Conto per Chiusura conti patrimoniali');
247173
$data_inizio = date('Ymd', strtotime($_SESSION['period_start'].' -1 year'));
248174
$data_fine = $_SESSION['period_start'];
249175

250176
// 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');
258178

259179
$mastrino = Mastrino::build(tr('Apertura conto'), $_SESSION['period_start'], 0, true);
260180

@@ -300,10 +220,7 @@
300220
// Chiusura bilancio
301221
case 'chiudi-bilancio':
302222
// 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']));
307224

308225
$idconto_apertura = setting('Conto per Apertura conti patrimoniali');
309226
$idconto_chiusura = setting('Conto per Chiusura conti patrimoniali');
@@ -360,13 +277,11 @@
360277
$end = post('end');
361278
$id_conto = post('id_conto');
362279

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));
370285

371286
break;
372287

@@ -376,20 +291,10 @@
376291
$id_conti3 = 0;
377292

378293
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.'%'));
385295
$id_conti2 = array_column($id_conti, 'idpianodeiconti2');
386296

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.'%'));
393298

394299
$id_conti3 = array_column($id_conti, 'idpianodeiconti3');
395300
$id_conti2_3 = array_column($id_conti, 'idpianodeiconti2');

0 commit comments

Comments
 (0)