Aggiornamento stampa Fatturato (#537)
This commit is contained in:
parent
bc81339f18
commit
fb43fc8e6c
|
@ -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.
|
||||||
*
|
*
|
||||||
|
|
|
@ -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%;
|
||||||
}
|
}
|
||||||
|
|
|
@ -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>';
|
|
@ -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>
|
|
|
@ -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>
|
|
|
@ -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);
|
|
@ -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";
|
|
|
@ -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);
|
Loading…
Reference in New Issue