Skip to content

Commit 6fb7349

Browse files
feat: gestione risconti
1 parent 25c4e14 commit 6fb7349

8 files changed

Lines changed: 356 additions & 104 deletions

File tree

modules/contratti/bulk.php

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,14 @@
127127
$copia->serials = $riga->serials;
128128
}
129129

130+
if ($documento_import->data_accettazione && $documento_import->data_conclusione) {
131+
$copia->dati_aggiuntivi_fe = [
132+
'id_riga' => $copia->id,
133+
'data_inizio_periodo' => $documento_import->data_accettazione->format('Y-m-d'),
134+
'data_fine_periodo' => $documento_import->data_conclusione->format('Y-m-d'),
135+
];
136+
}
137+
130138
$copia->save();
131139
}
132140
}

modules/fatture/actions.php

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
use Modules\Anagrafiche\Anagrafica;
2626
use Modules\Anagrafiche\Tipo as TipoAnagrafica;
2727
use Modules\Articoli\Articolo as ArticoloOriginale;
28+
use Modules\Contratti\Contratto;
2829
use Modules\Fatture\Components\Articolo;
2930
use Modules\Fatture\Components\Descrizione;
3031
use Modules\Fatture\Components\Riga;
@@ -837,6 +838,16 @@
837838
$copia->serials = $serials;
838839
}
839840

841+
if ($documento instanceof Contratto) {
842+
if ($documento->data_accettazione && $documento->data_conclusione) {
843+
$copia->dati_aggiuntivi_fe = [
844+
'id_riga' => $copia->id,
845+
'data_inizio_periodo' => $documento->data_accettazione->format('Y-m-d'),
846+
'data_fine_periodo' => $documento->data_conclusione->format('Y-m-d'),
847+
];
848+
}
849+
}
850+
840851
$copia->save();
841852
}
842853
}

modules/fatture/src/Gestori/Movimenti.php

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -136,9 +136,13 @@ public function registra()
136136
}
137137

138138
if (!empty($imponibile)) {
139+
$dati_aggiuntivi = $riga->dati_aggiuntivi_fe;
140+
139141
$movimenti[] = [
140142
'id_conto' => $id_conto,
141143
'avere' => $imponibile,
144+
'data_inizio_competenza' => $dati_aggiuntivi['data_inizio_periodo'],
145+
'data_fine_competenza' => $dati_aggiuntivi['data_fine_periodo'],
142146
];
143147
}
144148
}
@@ -254,6 +258,8 @@ public function registra()
254258
$totale_avere += $avere;
255259

256260
$movimento = Movimento::build($mastrino, $element['id_conto'], $this->fattura);
261+
$movimento->data_inizio_competenza = $element['data_inizio_competenza'] ?? null;
262+
$movimento->data_fine_competenza = $element['data_fine_competenza'] ?? null;
257263
$movimento->setTotale($avere, $dare);
258264
$movimento->save();
259265
}

modules/partitario/dettagli_conto2.php

Lines changed: 47 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -37,10 +37,49 @@
3737
LEFT OUTER JOIN (
3838
SELECT COUNT(idconto) AS numero_movimenti,
3939
idconto,
40-
SUM(totale) AS totale,
41-
SUM(totale_reddito) AS totale_reddito
40+
SUM(
41+
CASE
42+
WHEN co_movimenti.data BETWEEN '.prepare($_SESSION['period_start']).' AND '.prepare($_SESSION['period_end']).' THEN
43+
totale
44+
ELSE
45+
0
46+
END
47+
) AS totale,
48+
SUM(
49+
CASE
50+
WHEN data_inizio_competenza IS NULL OR data_fine_competenza IS NULL THEN
51+
totale_reddito
52+
ELSE
53+
totale_reddito * (
54+
DATEDIFF(
55+
LEAST(data_fine_competenza, '.prepare($_SESSION['period_end']).'),
56+
GREATEST(data_inizio_competenza, '.prepare($_SESSION['period_start']).')
57+
) + 1
58+
) / (
59+
DATEDIFF(data_fine_competenza, data_inizio_competenza) + 1
60+
)
61+
END
62+
) AS totale_reddito
4263
FROM co_movimenti
43-
WHERE data BETWEEN '.prepare($_SESSION['period_start']).' AND '.prepare($_SESSION['period_end']).' GROUP BY idconto
64+
WHERE (
65+
(data BETWEEN '.prepare($_SESSION['period_start']).' AND '.prepare($_SESSION['period_end']).')
66+
OR
67+
(data_inizio_competenza IS NOT NULL AND data_fine_competenza IS NOT NULL AND
68+
data_fine_competenza >= '.prepare($_SESSION['period_start']).' AND
69+
data_inizio_competenza <= '.prepare($_SESSION['period_end']).')
70+
OR
71+
(data_inizio_competenza IS NOT NULL AND data_fine_competenza IS NOT NULL AND
72+
data_inizio_competenza < '.prepare($_SESSION['period_start']).' AND
73+
data_fine_competenza > '.prepare($_SESSION['period_end']).')
74+
OR
75+
(data_inizio_competenza IS NOT NULL AND data_fine_competenza IS NOT NULL AND
76+
data_inizio_competenza <= '.prepare($_SESSION['period_end']).' AND
77+
data_inizio_competenza >= '.prepare($_SESSION['period_start']).')
78+
OR
79+
(data_inizio_competenza IS NOT NULL AND data_fine_competenza IS NOT NULL AND
80+
data_fine_competenza >= '.prepare($_SESSION['period_start']).' AND
81+
data_fine_competenza <= '.prepare($_SESSION['period_end']).')
82+
) GROUP BY idconto
4483
) movimenti ON co_pianodeiconti3.id=movimenti.idconto
4584
WHERE `idpianodeiconti2` = '.prepare($conto_secondo['id']).' ORDER BY numero ASC';
4685

@@ -50,17 +89,6 @@
5089
echo '
5190
<div class="table-responsive">
5291
<table class="table table-striped table-hover table-sm">
53-
<thead>
54-
<tr>
55-
<th>'.tr('Descrizione').'</th>
56-
<th style="width: 10%" class="text-center">'.tr('Importo').'</th>';
57-
if ($conto_primo['descrizione'] == 'Economico') {
58-
echo '
59-
<th style="width: 10%" class="text-center">'.tr('Importo reddito').'</th>';
60-
}
61-
echo '
62-
</tr>
63-
</thead>
6492
<tbody>';
6593
foreach ($terzo_livello as $conto_terzo) {
6694
// Se il conto non ha documenti collegati posso eliminarlo
@@ -69,8 +97,8 @@
6997
$totale_conto = $conto_terzo['totale'];
7098
$totale_reddito = $conto_terzo['totale_reddito'];
7199
if ($conto_primo['descrizione'] != 'Patrimoniale') {
72-
$totale_conto = -$totale_conto;
73-
$totale_reddito = -$totale_reddito;
100+
$totale_conto = -$totale_conto ?: 0;
101+
$totale_reddito = -$totale_reddito ?: 0;
74102
}
75103

76104
$totale_conto2 += $totale_conto;
@@ -134,16 +162,17 @@
134162
<div id="conto_'.$conto_terzo['id'].'" style="display:none;"></div>
135163
</td>
136164
137-
<td class="text-right">
165+
<td width="10%" class="text-right">
138166
'.moneyFormat($totale_conto, 2).'
139167
</td>';
140168
if ($conto_primo['descrizione'] == 'Economico') {
141169
echo '
142-
<td class="text-right">
170+
<td width="10%" class="text-right">
143171
'.moneyFormat($totale_reddito, 2).'
144172
</td>';
145173
}
146174
echo '
175+
<td width="5%"></td>
147176
</tr>';
148177
}
149178
} else {

0 commit comments

Comments
 (0)