406 lines
14 KiB
PHP
406 lines
14 KiB
PHP
<?php
|
|
/*
|
|
* OpenSTAManager: il software gestionale open source per l'assistenza tecnica e la fatturazione
|
|
* Copyright (C) DevCode s.r.l.
|
|
*
|
|
* This program is free software: you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License as published by
|
|
* the Free Software Foundation, either version 3 of the License, or
|
|
* (at your option) any later version.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
|
*/
|
|
|
|
include_once __DIR__.'/../../core.php';
|
|
|
|
$totale_iva_vendite = sum(array_column($iva_vendite, 'iva'), null, 2);
|
|
$totale_subtotale_vendite = sum(array_column($iva_vendite, 'subtotale'), null, 2);
|
|
$totale_iva_acquisti = sum(array_column($iva_acquisti, 'iva'), null, 2);
|
|
$totale_subtotale_acquisti = sum(array_column($iva_acquisti, 'subtotale'), null, 2);
|
|
|
|
$totale_iva_esigibile = sum(array_column($iva_vendite_esigibile, 'iva'), null, 2);
|
|
$totale_iva_nonesigibile = sum(array_column($iva_vendite_nonesigibile, 'iva'), null, 2);
|
|
$subtotale_iva_esigibile = sum(array_column($iva_vendite_esigibile, 'subtotale'), null, 2);
|
|
$subtotale_iva_nonesigibile = sum(array_column($iva_vendite_nonesigibile, 'subtotale'), null, 2);
|
|
|
|
$totale_iva_detraibile = sum(array_column($iva_acquisti_detraibile, 'iva'), null, 2);
|
|
$totale_iva_nondetraibile = sum(array_column($iva_acquisti_nondetraibile, 'iva'), null, 2);
|
|
$subtotale_iva_detraibile = sum(array_column($iva_acquisti_detraibile, 'subtotale'), null, 2);
|
|
$subtotale_iva_nondetraibile = sum(array_column($iva_acquisti_nondetraibile, 'subtotale'), null, 2);
|
|
|
|
$totale_iva_vendite_anno_precedente = sum(array_column($iva_vendite_anno_precedente, 'iva'), null, 2);
|
|
$totale_iva_acquisti_anno_precedente = sum(array_column($iva_acquisti_anno_precedente, 'iva'), null, 2);
|
|
$totale_iva_anno_precedente = $totale_iva_vendite_anno_precedente - $totale_iva_acquisti_anno_precedente;
|
|
|
|
$totale_iva_vendite_periodo_precedente = sum(array_column($iva_vendite_periodo_precedente, 'iva'), null, 2);
|
|
$totale_iva_acquisti_periodo_precedente = sum(array_column($iva_acquisti_periodo_precedente, 'iva'), null, 2);
|
|
$totale_iva_periodo_precedente = $totale_iva_vendite_periodo_precedente - $totale_iva_acquisti_periodo_precedente;
|
|
|
|
$totale_iva = $totale_iva_esigibile - $totale_iva_detraibile;
|
|
|
|
if ($periodo['valore'] == 'Trimestrale' && $totale_iva > 25.82) {
|
|
if ($totale_iva_periodo_precedente < 25.82 && $totale_iva_periodo_precedente > 0) {
|
|
$totale_iva += $totale_iva_periodo_precedente;
|
|
}
|
|
$maggiorazione = $totale_iva * 0.01;
|
|
$totale_iva_maggiorata = $totale_iva + $maggiorazione;
|
|
}
|
|
|
|
echo '
|
|
<h5 class="text-center">VENDITE</h5>
|
|
<table class="table table-condensed table-striped table-bordered">
|
|
<thead>
|
|
<tr>
|
|
<th width="15%">Aliquota</th>
|
|
<th width="15%">Natura IVA</th>
|
|
<th width="30%">Descrizione</th>
|
|
<th class="text-right" width="20%">Imponibile</th>
|
|
<th class="text-right" width="20%">Imposta</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<th class="text-center" colspan="5">IVA ESIGIBILE DEL PERIODO</th>
|
|
</tr>';
|
|
|
|
// Somma importi arrotondati per fattura
|
|
$aliquote = [];
|
|
|
|
foreach ($iva_vendite_esigibile as $record) {
|
|
$aliquote[$record['cod_iva']]['aliquota'] = $record['aliquota'];
|
|
$aliquote[$record['cod_iva']]['cod_iva'] = $record['cod_iva'];
|
|
$aliquote[$record['cod_iva']]['descrizione'] = $record['descrizione'];
|
|
$aliquote[$record['cod_iva']]['subtotale'] += sum($record['subtotale'], null, 2);
|
|
$aliquote[$record['cod_iva']]['iva'] += sum($record['iva'], null, 2);
|
|
}
|
|
|
|
foreach ($aliquote as $aliquota => $record) {
|
|
echo '
|
|
<tr>
|
|
<td>'.round($record['aliquota']).'%</td>
|
|
<td>'.$record['cod_iva'].'</td>
|
|
<td>'.$record['descrizione'].'</td>
|
|
<td class=text-right>'.moneyFormat($record['subtotale'], 2).'</td>
|
|
<td class=text-right>'.moneyFormat($record['iva'], 2).'</td>
|
|
</tr>';
|
|
}
|
|
echo '
|
|
<tr>
|
|
<td colspan="2"></td>
|
|
<td>TOTALI</td>
|
|
<td class=text-right>'.moneyFormat($subtotale_iva_esigibile, 2).'</td>
|
|
<td class=text-right>'.moneyFormat($totale_iva_esigibile, 2).'</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<th class="text-center" colspan="5">IVA NON ESIGIBILE DEL PERIODO</th>
|
|
</tr>';
|
|
|
|
// Somma importi arrotondati per fattura
|
|
$aliquote = [];
|
|
|
|
foreach ($iva_vendite_nonesigibile as $record) {
|
|
$aliquote[$record['cod_iva']]['aliquota'] = $record['aliquota'];
|
|
$aliquote[$record['cod_iva']]['cod_iva'] = $record['cod_iva'];
|
|
$aliquote[$record['cod_iva']]['descrizione'] = $record['descrizione'];
|
|
$aliquote[$record['cod_iva']]['subtotale'] += sum($record['subtotale'], null, 2);
|
|
$aliquote[$record['cod_iva']]['iva'] += sum($record['iva'], null, 2);
|
|
}
|
|
|
|
foreach ($aliquote as $aliquota => $record) {
|
|
echo '
|
|
<tr>
|
|
<td>'.round($record['aliquota']).'%</td>
|
|
<td>'.$record['cod_iva'].'</td>
|
|
<td>'.$record['descrizione'].'</td>
|
|
<td class=text-right>'.moneyFormat($record['subtotale'], 2).'</td>
|
|
<td class=text-right>'.moneyFormat($record['iva'], 2).'</td>
|
|
</tr>';
|
|
}
|
|
echo '
|
|
<tr>
|
|
<td colspan="2"></td>
|
|
<td>TOTALI</td>
|
|
<td class=text-right>'.moneyFormat($subtotale_iva_nonesigibile, 2).'</td>
|
|
<td class=text-right>'.moneyFormat($totale_iva_nonesigibile, 2).'</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<th class="text-center" colspan="5">RIEPILOGO GENERALE IVA VENDITE</th>
|
|
</tr>';
|
|
|
|
// Somma importi arrotondati per fattura
|
|
$aliquote = [];
|
|
|
|
foreach ($iva_vendite as $record) {
|
|
$aliquote[$record['cod_iva']]['aliquota'] = $record['aliquota'];
|
|
$aliquote[$record['cod_iva']]['cod_iva'] = $record['cod_iva'];
|
|
$aliquote[$record['cod_iva']]['descrizione'] = $record['descrizione'];
|
|
$aliquote[$record['cod_iva']]['subtotale'] += sum($record['subtotale'], null, 2);
|
|
$aliquote[$record['cod_iva']]['iva'] += sum($record['iva'], null, 2);
|
|
}
|
|
|
|
foreach ($aliquote as $aliquota => $record) {
|
|
echo '
|
|
<tr>
|
|
<td>'.round($record['aliquota']).'%</td>
|
|
<td>'.$record['cod_iva'].'</td>
|
|
<td>'.$record['descrizione'].'</td>
|
|
<td class=text-right>'.moneyFormat($record['subtotale'], 2).'</td>
|
|
<td class=text-right>'.moneyFormat($record['iva'], 2).'</td>
|
|
</tr>';
|
|
}
|
|
echo '
|
|
<tr>
|
|
<th colspan="2"></th>
|
|
<th>TOTALE</th>
|
|
<th class=text-right>'.moneyFormat($totale_subtotale_vendite, 2).'</th>
|
|
<th class=text-right>'.moneyFormat($totale_iva_vendite, 2).'</th>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
|
|
|
|
<h5 class="text-center">ACQUISTI</h5>
|
|
<table class="table table-condensed table-striped table-bordered">
|
|
<thead>
|
|
<tr>
|
|
<th width="15%">Aliquota</th>
|
|
<th width="15%">Natura IVA</th>
|
|
<th width="30%">Descrizione</th>
|
|
<th class="text-right" width="20%">Imponibile</th>
|
|
<th class="text-right" width="20%">Imposta</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<th class="text-center" colspan="5">IVA DETRAIBILE DEL PERIODO</th>
|
|
</tr>';
|
|
|
|
// Somma importi arrotondati per fattura
|
|
$aliquote = [];
|
|
|
|
foreach ($iva_acquisti_detraibile as $record) {
|
|
$aliquote[$record['cod_iva']]['aliquota'] = $record['aliquota'];
|
|
$aliquote[$record['cod_iva']]['cod_iva'] = $record['cod_iva'];
|
|
$aliquote[$record['cod_iva']]['descrizione'] = $record['descrizione'];
|
|
$aliquote[$record['cod_iva']]['subtotale'] += sum($record['subtotale'], null, 2);
|
|
$aliquote[$record['cod_iva']]['iva'] += sum($record['iva'], null, 2);
|
|
}
|
|
|
|
foreach ($aliquote as $aliquota => $record) {
|
|
echo '
|
|
<tr>
|
|
<td>'.round($record['aliquota']).'%</td>
|
|
<td>'.$record['cod_iva'].'</td>
|
|
<td>'.$record['descrizione'].'</td>
|
|
<td class=text-right>'.moneyFormat($record['subtotale'], 2).'</td>
|
|
<td class=text-right>'.moneyFormat($record['iva'], 2).'</td>
|
|
</tr>';
|
|
}
|
|
echo '
|
|
<tr>
|
|
<td colspan="2"></td>
|
|
<td>TOTALI</td>
|
|
<td class=text-right>'.moneyFormat($subtotale_iva_detraibile, 2).'</td>
|
|
<td class=text-right>'.moneyFormat($totale_iva_detraibile, 2).'</td>
|
|
</tr>
|
|
|
|
|
|
<tr>
|
|
<th class="text-center" colspan="5">IVA NON DETRAIBILE DEL PERIODO</th>
|
|
</tr>';
|
|
|
|
// Somma importi arrotondati per fattura
|
|
$aliquote = [];
|
|
|
|
foreach ($iva_acquisti_nondetraibile as $record) {
|
|
$aliquote[$record['cod_iva']]['aliquota'] = $record['aliquota'];
|
|
$aliquote[$record['cod_iva']]['cod_iva'] = $record['cod_iva'];
|
|
$aliquote[$record['cod_iva']]['descrizione'] = $record['descrizione'];
|
|
$aliquote[$record['cod_iva']]['subtotale'] += sum($record['subtotale'], null, 2);
|
|
$aliquote[$record['cod_iva']]['iva'] += sum($record['iva'], null, 2);
|
|
}
|
|
|
|
foreach ($aliquote as $aliquota => $record) {
|
|
echo '
|
|
<tr>
|
|
<td>'.round($record['aliquota']).'%</td>
|
|
<td>'.$record['cod_iva'].'</td>
|
|
<td>'.$record['descrizione'].'</td>
|
|
<td class=text-right>'.moneyFormat($record['subtotale'], 2).'</td>
|
|
<td class=text-right>'.moneyFormat($record['iva'], 2).'</td>
|
|
</tr>';
|
|
}
|
|
echo '
|
|
<tr>
|
|
<td colspan="2"></td>
|
|
<td>TOTALI</td>
|
|
<td class=text-right>'.moneyFormat($subtotale_iva_nondetraibile, 2).'</td>
|
|
<td class=text-right>'.moneyFormat($totale_iva_nondetraibile, 2).'</td>
|
|
</tr>
|
|
|
|
|
|
<tr>
|
|
<th class="text-center" colspan="5">RIEPILOGO GENERALE IVA ACQUISTI</th>
|
|
</tr>';
|
|
|
|
// Somma importi arrotondati per fattura
|
|
$aliquote = [];
|
|
|
|
foreach ($iva_acquisti as $record) {
|
|
$aliquote[$record['cod_iva']]['aliquota'] = $record['aliquota'];
|
|
$aliquote[$record['cod_iva']]['cod_iva'] = $record['cod_iva'];
|
|
$aliquote[$record['cod_iva']]['descrizione'] = $record['descrizione'];
|
|
$aliquote[$record['cod_iva']]['subtotale'] += sum($record['subtotale'], null, 2);
|
|
$aliquote[$record['cod_iva']]['iva'] += sum($record['iva'], null, 2);
|
|
}
|
|
|
|
foreach ($aliquote as $aliquota => $record) {
|
|
echo '
|
|
<tr>
|
|
<td>'.round($record['aliquota']).'%</td>
|
|
<td>'.$record['cod_iva'].'</td>
|
|
<td>'.$record['descrizione'].'</td>
|
|
<td class=text-right>'.moneyFormat($record['subtotale'], 2).'</td>
|
|
<td class=text-right>'.moneyFormat($record['iva'], 2).'</td>
|
|
</tr>';
|
|
}
|
|
|
|
echo '
|
|
<tr>
|
|
<th colspan="2"></th>
|
|
<th>TOTALE</th>
|
|
<th class=text-right>'.moneyFormat($totale_subtotale_acquisti, 2).'</th>
|
|
<th class=text-right>'.moneyFormat($totale_iva_acquisti, 2).'</th>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
|
|
<br>
|
|
<br>
|
|
<table class="table table-condensed table-striped table-bordered">
|
|
<thead>
|
|
<tr>
|
|
<th class="text-center" colspan="2">PROSPETTO RIEPILOGATIVO DI LIQUIDAZIONE IVA</th>
|
|
<tr>
|
|
<th width="70%">DESCRIZIONE</th>
|
|
<th class="text-right" width="30%">IMPORTO</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>';
|
|
if ($totale_iva_anno_precedente >= 0) {
|
|
echo ' <td>DEBITO ANNO PRECEDENTE</td>';
|
|
} else {
|
|
echo ' <td>CREDITO ANNO PRECEDENTE</td>';
|
|
}
|
|
echo '<td class=text-right>'.moneyFormat(abs($totale_iva_anno_precedente), 2).'</td>
|
|
</tr>
|
|
<tr>';
|
|
if ($totale_iva_periodo_precedente >= 0) {
|
|
echo ' <td>DEBITO PERIODO PRECEDENTE</td>';
|
|
} else {
|
|
echo ' <td>CREDITO PERIODO PRECEDENTE</td>';
|
|
}
|
|
echo ' <td class=text-right>'.moneyFormat(abs($totale_iva_periodo_precedente), 2).'</td>
|
|
</tr>
|
|
<tr>
|
|
<td>TOTALE IVA SU VENDITE ESIGIBILE</td>
|
|
<td class=text-right>'.moneyFormat($totale_iva_esigibile, 2).'</td>
|
|
</tr>
|
|
<tr>
|
|
<td>TOTALE IVA OGGETTIVAMENTE NON A DEBITO SU VENDITE</td>
|
|
<td class=text-right>'.moneyFormat($totale_iva_nonesigibile, 2).'</td>
|
|
</tr>
|
|
<tr>
|
|
<td>TOTALE IVA SU ACQUISTI DETRAIBILI</td>
|
|
<td class=text-right>'.moneyFormat($totale_iva_detraibile, 2).'</td>
|
|
</tr>
|
|
<tr>
|
|
<td>TOTALE IVA OGGETTIVAMENTE INDETRAIBILI SU ACQUISTI</td>
|
|
<td class=text-right>'.moneyFormat($totale_iva_nondetraibile, 2).'</td>
|
|
</tr>
|
|
<tr>
|
|
<td>VARIAZIONE DI IMPOSTA RELATIVE A PERIODI PRECEDENTI</td>';
|
|
if ($totale_iva_periodo_precedente < 25.82 && $totale_iva_periodo_precedente > 0) {
|
|
echo '
|
|
<td class=text-right>'.moneyFormat(abs($totale_iva_periodo_precedente), 2).'</td>';
|
|
} else {
|
|
echo '
|
|
<td class=text-right></td>';
|
|
}
|
|
echo '
|
|
</tr>
|
|
<tr>
|
|
<td>DI CUI INTERESSI PER RAVVEDIMENTO</td>
|
|
<td class=text-right></td>
|
|
</tr>
|
|
<tr>
|
|
<td>DI CUI INTERESSI PER MAGGIORAZIONE TRIMESTRALI</td>
|
|
<td class=text-right></td>
|
|
</tr>
|
|
<tr>
|
|
<td>CREDITO IVA COMPENSABILE</td>
|
|
<td class=text-right></td>
|
|
</tr>
|
|
<tr>';
|
|
if ($totale_iva >= 0) {
|
|
echo ' <td>IVA A DEBITO</td>';
|
|
} else {
|
|
echo ' <td>IVA A CREDITO</td>';
|
|
}
|
|
echo ' <td class=text-right>'.moneyFormat(abs($totale_iva), 2).'</td>
|
|
</tr>
|
|
<tr>
|
|
<td>CREDITO SPECIALE DI IMPOSTA</td>
|
|
<td class=text-right></td>
|
|
</tr>
|
|
<tr>
|
|
<td>MAGGIORAZIONE 1,00%</td>
|
|
<td class=text-right>'.($periodo['valore'] == 'Trimestrale' && $totale_iva > 25.82 ? moneyFormat($maggiorazione, 2) : '').'</td>
|
|
</tr>
|
|
<tr>
|
|
<td>IVA A DEBITO CON MAGGIORAZIONE</td>';
|
|
if ($totale_iva > 25.82 && $periodo['valore'] == 'Trimestrale') {
|
|
echo '
|
|
<td class=text-right>'.moneyFormat($totale_iva_maggiorata, 2).'</td>';
|
|
} else {
|
|
echo '
|
|
<td class=text-right></td>';
|
|
}
|
|
echo '
|
|
</tr>
|
|
<tr>
|
|
<td>IMPORTO DA VERSARE</td>';
|
|
if ($totale_iva > 25.82) {
|
|
if ($periodo['valore'] == 'Mensile') {
|
|
echo '
|
|
<td class=text-right>'.moneyFormat($totale_iva, 2).'</td>';
|
|
} else {
|
|
echo '
|
|
<td class=text-right>'.moneyFormat($totale_iva_maggiorata, 2).'</td>';
|
|
}
|
|
} else {
|
|
echo '
|
|
<td class=text-right></td>';
|
|
}
|
|
echo '
|
|
</tr>
|
|
<tr>
|
|
<td>CREDITO INFRANNUALE DI IMPOSTA CHIESTO A RIMBORSO</td>
|
|
<td class=text-right></td>
|
|
</tr>
|
|
<tr>
|
|
<td>CREDITO INFRANNUALE DA UTILIZZARE IN COMPENSAZIONE</td>
|
|
<td class=text-right></td>
|
|
</tr>
|
|
</tbody>
|
|
</table>';
|