openstamanager/templates/liquidazione_iva/body.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>';