Aggiornamento stampa Fatturato (#537)

This commit is contained in:
Thomas Zilio 2020-03-14 14:32:47 +01:00
parent bc81339f18
commit fb43fc8e6c
8 changed files with 143 additions and 141 deletions

View File

@ -34,6 +34,10 @@ class Fattura extends Document
'tipo', 'tipo',
]; ];
protected $dates = [
'data',
];
/** /**
* Crea una nuova fattura. * Crea una nuova fattura.
* *
@ -602,7 +606,7 @@ class Fattura extends Document
} }
/** /**
* Scope a query to only include popular users. * Scope per l'inclusione delle sole fatture con valore contabile.
* *
* @param \Illuminate\Database\Eloquent\Builder $query * @param \Illuminate\Database\Eloquent\Builder $query
* *
@ -731,6 +735,34 @@ class Fattura extends Document
return $numero; return $numero;
} }
/**
* Scope per l'inclusione delle fatture di vendita.
*
* @param \Illuminate\Database\Eloquent\Builder $query
*
* @return \Illuminate\Database\Eloquent\Builder
*/
public function scopeVendita($query)
{
return $query->whereHas('tipo', function (Builder $query) {
$query->where('dir', 'entrata');
});
}
/**
* Scope per l'inclusione delle fatture di acquisto.
*
* @param \Illuminate\Database\Eloquent\Builder $query
*
* @return \Illuminate\Database\Eloquent\Builder
*/
public function scopeAcquisto($query)
{
return $query->whereHas('tipo', function (Builder $query) {
$query->where('dir', 'uscita');
});
}
/** /**
* Calcola il nuovo numero secondario di fattura. * Calcola il nuovo numero secondario di fattura.
* *

View File

@ -46,7 +46,6 @@ table.table-bordered thead tr:nth-child(2) th {
small, small,
.small, .small,
.small-bold, .small-bold,
table.table-bordered thead th,
table#contents thead th { table#contents thead th {
font-size: 70%; font-size: 70%;
} }

71
templates/fatturato/body.php Executable file
View File

@ -0,0 +1,71 @@
<?php
include_once __DIR__.'/../../core.php';
if ($dir == 'entrata') {
$title = tr('Fatturato mensile dal _START_ al _END_', [
'_START_' => Translator::dateToLocale($date_start),
'_END_' => Translator::dateToLocale($date_end),
], ['upper' => true]);
} else {
$title = tr('Acquisti mensili dal _START_ al _END_', [
'_START_' => Translator::dateToLocale($date_start),
'_END_' => Translator::dateToLocale($date_end),
], ['upper' => true]);
}
echo '
<h4><strong>'.$title.'</strong></h4>';
// Intestazione tabella per righe
echo '
<table class="table table-bordered">
<thead>
<tr>
<th>'.tr('Mese').'</th>
<th class="text-center" style="width: 15%">'.tr('Imponibile').'</th>
<th class="text-center" style="width: 15%">'.tr('IVA').'</th>
<th class="text-center" style="width: 15%">'.tr('Totale').'</th>
</tr>
</thead>
<tbody>';
echo '
</tbody>';
$totale_imponibile = 0;
$totale_iva = 0;
$totale_finale = 0;
// Nel fatturato totale è corretto NON tenere in considerazione eventuali rivalse, ritenute acconto o contributi.
foreach ($raggruppamenti as $raggruppamento) {
$data = new \Carbon\Carbon($raggruppamento['data']);
$mese = $data->formatLocalized('%B %Y');
$imponibile = $raggruppamento['imponibile'];
$iva = $raggruppamento['iva'];
$totale = $raggruppamento['totale'];
echo '
<tr>
<td>'.$mese.'</td>
<td class="text-right">'.moneyFormat($imponibile).'</td>
<td class="text-right">'.moneyFormat($iva).'</td>
<td class="text-right">'.moneyFormat($totale).'</td>
</tr>';
$totale_imponibile += $imponibile;
$totale_iva += $iva;
$totale_finale += $totale;
}
echo '
<tr>
<td class="text-right text-bold">'.tr('Totale', [], ['upper' => true]).':</td>
<td class="text-right text-bold">'.moneyFormat($totale_imponibile).'</td>
<td class="text-right text-bold">'.moneyFormat($totale_iva).'</td>
<td class="text-right text-bold">'.moneyFormat($totale_finale).'</td>
</tr>
</tbody>
</table>';

View File

@ -1,59 +0,0 @@
<style>
<!--
.table_values td{
border: 1px solid #888;
padding: 4px;
white-space: normal;
}
.table_values th{
background: #abbfcb;
padding: 4px;
}
.first_cell{
border-left: 1px solid #aaa;
border-right: 1px solid #aaa;
border-bottom: 1px solid #aaa;
}
.table_cell{
border-bottom: 1px solid #aaa;
border-right: 1px solid #aaa;
}
.full_cell1{
border: 1px solid #aaa;
}
.full_cell{
border-top: 1px solid #aaa;
border-right: 1px solid #aaa;
border-bottom: 1px solid #aaa;
}
.text-center{
text-align: center;
}
.text-right{
text-align: right;
}
.b-right{
border-right: 1px solid #aaa;
}
.b-bottom{
border-bottom: 1px solid #aaa;
}
.cell-padded{
padding: 4px;
}
-->
</style>
<page backcolor="#ffffff" backtop="35mm" backbottom="10mm" backleft="0mm" backright="0mm" footer="" style="font-size: $font_size$">
$body$
</page>

View File

@ -1,9 +0,0 @@
<page_header>
<table $body_table_params$>
<!-- Intestazione fornitore -->
<tr><td style="width:105mm; font-size:8pt; color:#555;">
<img src="$logo$" alt="Logo" border="0" />
</td></tr>
</table>
<br/>
</page_header>

24
templates/fatturato/init.php Executable file
View File

@ -0,0 +1,24 @@
<?php
include_once __DIR__.'/../../core.php';
$dir = get('dir');
$date_start = $_SESSION['period_start'];
$date_end = $_SESSION['period_end'];
// Raggruppamento
$query = "SELECT data,
DATE_FORMAT(data, '%m-%Y') AS periodo,
SUM(co_righe_documenti.subtotale - co_righe_documenti.sconto) as imponibile,
SUM(iva) as iva,
SUM(co_righe_documenti.subtotale - co_righe_documenti.sconto + iva) as totale
FROM co_documenti
INNER JOIN co_tipidocumento ON co_documenti.idtipodocumento = co_tipidocumento.id
INNER JOIN co_righe_documenti ON co_righe_documenti.iddocumento = co_documenti.id
WHERE
(data >= ".prepare($date_start).' AND data <= '.prepare($date_end).')
AND dir = '.prepare($dir).'
'.$add_where.'
GROUP BY periodo
ORDER BY data ASC';
$raggruppamenti = $dbo->fetchArray($query);

View File

@ -1,71 +0,0 @@
<?php
include_once __DIR__.'/../../core.php';
// carica report html
$report = file_get_contents($docroot.'/templates/fatturato/fatturato.html');
$body = file_get_contents($docroot.'/templates/fatturato/fatturato_body.html');
$mesi = months();
$dir = get('dir');
$date_start = $_SESSION['period_start'];
$date_end = $_SESSION['period_end'];
include_once $docroot.'/templates/pdfgen_variables.php';
$totale_imponibile = 0;
$totale_iva = 0;
$totale = 0;
if ($dir == 'entrata') {
$addwhere = Modules::getAdditionalsQuery('Fatture di vendita');
} else {
$addwhere = Modules::getAdditionalsQuery('Fatture di acquisto');
}
// Ciclo tra le fatture selezionate
$query = "SELECT DATE_FORMAT( data, '%m-%Y' ) AS periodo, data FROM co_documenti INNER JOIN co_tipidocumento ON co_documenti.idtipodocumento=co_tipidocumento.id GROUP BY periodo, dir HAVING (data BETWEEN '".$date_start."' AND '".$date_end."') AND dir='".$dir."' ".$add_where.' ORDER BY data ASC';
$rs = $dbo->fetchArray($query);
$totrows = sizeof($rs);
if ($dir == 'entrata') {
$body .= '<h3>FATTURATO MENSILE DAL '.Translator::dateToLocale($date_start).' AL '.Translator::dateToLocale($date_end)."</h3>\n";
} else {
$body .= '<h3>ACQUISTI MENSILI DAL '.Translator::dateToLocale($date_start).' AL '.Translator::dateToLocale($date_end)."</h3>\n";
}
$body .= "<table cellspacing='0' style='table-layout:fixed;'>\n";
$body .= "<col width='320'><col width='100'><col width='100'><col width='100'>\n";
$body .= "<tr><th bgcolor='#dddddd' class='full_cell1 cell-padded' width='320'>Mese</th>\n";
$body .= "<th bgcolor='#dddddd' class='full_cell cell-padded' width='100'>Imponibile</th>\n";
$body .= "<th bgcolor='#dddddd' class='full_cell cell-padded' width='100'>Iva</th>\n";
$body .= "<th bgcolor='#dddddd' class='full_cell cell-padded' width='100'>Totale</th></tr>\n";
for ($r = 0; $r < sizeof($rs); ++$r) {
// Lettura totali
$rs2 = $dbo->fetchArray("SELECT SUM(subtotale-co_righe_documenti.sconto) AS imponibile, SUM(iva) AS iva FROM co_righe_documenti INNER JOIN co_documenti ON co_righe_documenti.iddocumento=co_documenti.id WHERE DATE_FORMAT(data,'%m-%Y') = \"".$rs[$r]['periodo'].'" AND idtipodocumento IN(SELECT id FROM co_tipidocumento WHERE dir="'.$dir.'")');
$body .= "<tr><td class='first_cell cell-padded'>".$mesi[intval(date('m', strtotime($rs[$r]['data'])))].' '.date('Y', strtotime($rs[$r]['data']))."</td>\n";
$body .= "<td class='table_cell cell-padded text-right'>".moneyFormat($rs2[0]['imponibile'])."</td>\n";
$body .= "<td class='table_cell cell-padded text-right'>".moneyFormat($rs2[0]['iva'])."</td>\n";
$body .= "<td class='table_cell cell-padded text-right'>".moneyFormat($rs2[0]['imponibile'] + $rs2[0]['iva'])."</td></tr>\n";
$totale_imponibile += $rs2[0]['imponibile'];
$totale_iva += $rs2[0]['iva'];
//Nel fatturato totale è corretto NON tenere in considerazione eventuali rivalse, ritenute acconto o contributi.
$totale += $rs2[0]['imponibile'] + $rs2[0]['iva'];
}
// Totali
$body .= "<tr>\n";
$body .= " <td class='first_cell cell-padded text-right'><b>TOTALE:</b></td>\n";
$body .= " <td class='table_cell text-right cell-padded'><b>".moneyFormat($totale_imponibile)."</b></td>\n";
$body .= " <td class='table_cell text-right cell-padded'><b>".moneyFormat($totale_iva)."</b></td>\n";
$body .= " <td class='table_cell text-right cell-padded'><b>".moneyFormat($totale)."</b></td>\n";
$body .= "</tr>\n";
$body .= "</table>\n";

15
update/2_4_14.php Executable file
View File

@ -0,0 +1,15 @@
<?php
// File e cartelle deprecate
$files = [
'templates\fatturato\pdfgen.fatturato.php',
'templates\fatturato\fatturato_body.html',
'templates\fatturato\fatturato.html',
'modules/interventi/widgets/interventi.pianificazionedashboard.interventi.php',
];
foreach ($files as $key => $value) {
$files[$key] = realpath(DOCROOT.'\\'.$value);
}
delete($files);