Aggiornamento delle stampe

Adeguamento alla nuova versione delle stampe di contratti e ordini.
This commit is contained in:
Thomas Zilio 2017-09-12 17:46:19 +02:00
parent 4242f98213
commit f663758c5f
18 changed files with 586 additions and 610 deletions

View File

@ -42,7 +42,7 @@ if (empty($idriga)) {
$um = $rsr[0]['um'];
$idiva = $rsr[0]['idiva'];
$prezzo = $rsr[0]['subtotale'] / $rsr[0]['qta'];
$sconto = $rsr[0]['sconto'];
$sconto = $rsr[0]['sconto_unitario'];
$tipo_sconto = $rsr[0]['tipo_sconto'];
}

View File

@ -0,0 +1,265 @@
<?php
include_once __DIR__.'/../../core.php';
$report_name = 'contratto_'.$idcontratto.'.pdf';
$autofill = [
'count' => 0, // Conteggio delle righe
'words' => 70, // Numero di parolo dopo cui contare una riga nuova
'rows' => 20, // Numero di righe massimo presente nella pagina
'additional' => 10, // Numero di righe massimo da aggiungere
'columns' => 4, // Numero di colonne della tabella
];
echo '
<div class="row">
<div class="col-xs-6">
<div class="text-center" style="height:5mm;">
<b>'.tr('Contratto N<sup>o</sup> _NUM_ del _DATE_', [
'_NUM_' => $records[0]['numero'],
'_DATE_' => Translator::dateToLocale($records[0]['data_bozza']),
], ['upper' => true]).'</b>
</div>
</div>
<div class="col-xs-5 col-xs-offset-1">
<table class="table" style="width:100%;margin-top:5mm;">
<tr>
<td colspan=2 class="border-full" style="height:16mm;">
<p class="small-bold">'.tr('Spett.le', [], ['upper' => true]).'</p>
<p>$c_ragionesociale$</p>
<p>$c_indirizzo$ $c_citta_full$</p>
</td>
</tr>
<tr>
<td class="border-bottom border-left">
<p class="small-bold">'.tr('Partita IVA', [], ['upper' => true]).'</p>
</td>
<td class="border-right border-bottom text-right">
<small>$c_piva$</small>
</td>
</tr>
<tr>
<td class="border-bottom border-left">
<p class="small-bold">'.tr('Codice fiscale', [], ['upper' => true]).'</p>
</td>
<td class="border-right border-bottom text-right">
<small>$c_codicefiscale$</small>
</td>
</tr>
</table>
</div>
</div>';
// Descrizione
if (!empty($records[0]['descrizione'])) {
echo '
<p>'.nl2br($records[0]['descrizione']).'</p>
<br>';
}
$sconto = [];
$imponibile = [];
$iva = [];
// Intestazione tabella per righe
echo "
<table class='table table-striped table-bordered' id='contents'>
<thead>
<tr>
<th class='text-center' style='width:50%'>".tr('Descrizione', [], ['upper' => true])."</th>
<th class='text-center' style='width:10%'>".tr('Q.tà', [], ['upper' => true])."</th>
<th class='text-center' style='width:20%'>".tr('Prezzo unitario', [], ['upper' => true])."</th>
<th class='text-center' style='width:20%'>".tr('Imponibile', [], ['upper' => true]).'</th>
</tr>
</thead>
<tbody>';
// RIGHE PREVENTIVO CON ORDINAMENTO UNICO
$righe = $dbo->fetchArray('SELECT * FROM co_righe2_contratti WHERE idcontratto='.prepare($idcontratto).' ORDER BY `order`');
foreach ($righe as $r) {
$count = 0;
$count += ceil(strlen($r['descrizione']) / $autofill['words']);
$count += substr_count($r['descrizione'], PHP_EOL);
echo '
<tr>
<td>
'.nl2br($r['descrizione']);
if (!empty($r['codice_articolo'])) {
echo '
<br><small>'.tr('COD. _COD_', [
'_COD_' => $r['codice_articolo'],
]).'</small>';
if ($count <= 1) {
$count += 0.4;
}
}
echo '
</td>';
echo "
<td class='text-center'>
".(empty($r['qta']) ? '' : Translator::numberToLocale($r['qta'], 2)).' '.$r['um'].'
</td>';
if ($mostra_prezzi) {
// Prezzo unitario
echo "
<td class='text-right'>
".(empty($r['qta']) || empty($r['subtotale']) ? '' : Translator::numberToLocale($r['subtotale'] / $r['qta'], 2)).' &euro;
</td>';
// Imponibile
echo "
<td class='text-right'>
".(empty($r['subtotale']) ? '' : Translator::numberToLocale($r['subtotale'], 2)).' &euro;';
if ($r['sconto'] > 0) {
echo "
<br><small class='help-block'>- sconto ".Translator::numberToLocale($r['sconto_unitario']).($r['tipo_sconto'] == 'PRC' ? '%' : ' &euro;').'</small>';
if ($count <= 1) {
$count += 0.4;
}
}
echo '
</td>';
} else {
echo '
<td class="text-center">-</td>
<td class="text-center">-</td>';
}
echo '
</tr>';
$autofill['count'] += $count;
$sconto[] = $r['sconto'];
$imponibile[] = $r['subtotale'];
}
$sconto = sum($sconto);
$imponibile = sum($imponibile);
$totale = $imponibile - $sconto;
echo '
|autofill|
</tbody>';
// TOTALE COSTI FINALI
if ($mostra_prezzi) {
// Eventuale sconto incondizionato
if (!empty($sconto)) {
// Totale imponibile
echo '
<tr>
<td colspan="3" class="text-right border-top">
<b>'.tr('Imponibile', [], ['upper' => true]).':</b>
</td>
<th class="text-center">
<b>'.Translator::numberToLocale($imponibile, 2).' &euro;</b>
</th>
</tr>';
echo '
<tr>
<td colspan="3" class="text-right border-top">
<b>'.tr('Sconto', [], ['upper' => true]).':</b>
</td>
<th class="text-center">
<b>-'.Translator::numberToLocale($sconto, 2).' &euro;</b>
</th>
</tr>';
}
// TOTALE
echo '
<tr>
<td colspan="3" class="text-right border-top">
<b>'.tr('Quotazione totale', [], ['upper' => true]).':</b>
</td>
<th class="text-center">
<b>'.Translator::numberToLocale($totale, 2).' &euro;</b>
</th>
</tr>';
}
echo'
</table>';
// CONDIZIONI GENERALI DI FORNITURA
// Lettura pagamenti
$rs = $dbo->fetchArray('SELECT * FROM co_pagamenti WHERE id = '.$records[0]['idpagamento']);
$pagamento = $rs[0]['descrizione'];
echo '
<table class="table table-bordered">
<tr>
<th colspan="2" class="text-center">
'.tr('Condizioni generali di fornitura', [], ['upper' => true]).'
</th>
</tr>
<tr>
<th style="width:25%">
'.tr('Pagamento', [], ['upper' => true]).'
</th>
<td>
'.$pagamento.'
</td>
</tr>
<tr>
<th>
'.tr('Validità offerta', [], ['upper' => true]).'
</th>
<td>
'.tr('_TOT_ giorni', [
'_TOT_' => $records[0]['validita'],
]).' giorni
</td>
</tr>
<tr>
<th>
'.tr('Validità contratto', [], ['upper' => true]).'
</th>
<td>
'.tr('dal _START_ al _END_', [
'_START_' => Translator::dateToLocale($records[0]['data_accettazione']),
'_END_' => Translator::dateToLocale($records[0]['data_conclusione']),
]).'
</td>
</tr>
<tr>
<th>
'.tr('Esclusioni', [], ['upper' => true]).'
</th>
<td>
'.nl2br($records[0]['esclusioni']).'
</td>
</tr>
</table>';
// Conclusione
echo '
<p class="text-center"><b>'.tr('Il tutto S.E. & O.').'</b></p>
<p class="text-center">'.tr("In attesa di un Vostro Cortese riscontro, colgo l'occasione per porgere Cordiali Saluti").'</p>';

View File

@ -1,18 +0,0 @@
<style>
<!--
.table_values td{
border: 1px solid #888;
padding: 4px;
white-space: normal;
}
.table_values th{
background: #abbfcb;
padding: 4px;
}
-->
</style>
<page backcolor="#ffffff" backtop="45mm" backbottom="10mm" backleft="0mm" backright="0mm" footer="" style="font-size: $font_size$">
$body$
</page>

View File

@ -1,23 +0,0 @@
<page_header>
<table $body_table_params$>
<!-- Intestazione fornitore -->
<tr><td style="width:110mm; font-size:8pt; color:#555;">
<img src="$docroot$/templates/riepilogo_contratti/logo_azienda.jpg" alt="Logo" border="0" /><br/>
</td>
<!-- Intestazione cliente -->
<td style="width:100mm; font-size:8pt">
$f_ragionesociale$
$f_indirizzo$
$f_citta_full$
$f_piva$
$f_codicefiscale$
$f_capsoc$
$f_telefono$
$f_sitoweb$
$f_email$
</td></tr>
</table>
<br/>
</page_header>

View File

@ -0,0 +1,16 @@
<?php
echo '
<div class="row">
<div class="col-xs-6">
<img src="'.__DIR__.'/logo_azienda.jpg" alt="Logo" border="0"/>
</div>
<div class="col-xs-6 text-right">
<p><b>$f_ragionesociale$</b></p>
<p>$f_indirizzo$ $f_citta_full$</p>
<p>'.(!empty($f_piva) ? tr('P.Iva').': ' : '').'$f_piva$</p>
<p>'.(!empty($f_codicefiscale) ? tr('C.F.').': ' : '').'$f_codicefiscale$</p>
<p>'.(!empty($f_capsoc) ? tr('Cap.Soc.').': ' : '').'$f_capsoc$</p>
<p>'.(!empty($f_telefono) ? tr('Tel').': ' : '').'$f_telefono$</p>
</div>
</div>';

View File

@ -0,0 +1,13 @@
<?php
include_once __DIR__.'/../../core.php';
$module_name = 'Contratti';
// Lettura info fattura
$records = $dbo->fetchArray('SELECT *, (SELECT orario_inizio FROM in_interventi_tecnici WHERE idintervento=in_interventi.id LIMIT 0,1) AS data, co_contratti.descrizione AS `cdescrizione`, co_contratti.idanagrafica AS `idanagrafica`, co_contratti.costo_orario AS costo_orario , co_contratti.costo_km AS costo_km FROM co_contratti LEFT OUTER JOIN (co_righe_contratti LEFT OUTER JOIN in_interventi ON co_righe_contratti.idintervento=in_interventi.id) ON co_contratti.id=co_righe_contratti.idcontratto WHERE co_contratti.id='.prepare($idcontratto));
$id_cliente = $records[0]['idanagrafica'];
$id_sede = $records[0]['idsede'];
$mostra_prezzi = get_var('Stampa i prezzi sui contratti');

View File

@ -1,192 +0,0 @@
<?php
include_once __DIR__.'/../../core.php';
// carica intervento
$idcontratto = save($_GET['idcontratto']);
$show_costi = get_var('Stampa i prezzi sui contratti');
// Lettura dati contratto e interventi
$q = "SELECT *, (SELECT orario_inizio FROM in_interventi_tecnici WHERE idintervento=in_interventi.id LIMIT 0,1) AS data, co_contratti.descrizione AS `cdescrizione`, co_contratti.idanagrafica AS `idanagrafica`, co_contratti.costo_orario AS costo_orario , co_contratti.costo_km AS costo_km FROM co_contratti LEFT OUTER JOIN (co_righe_contratti LEFT OUTER JOIN in_interventi ON co_righe_contratti.idintervento=in_interventi.id) ON co_contratti.id=co_righe_contratti.idcontratto WHERE co_contratti.id='".$idcontratto."' ORDER BY data DESC";
$rscontrattii = $dbo->fetchArray($q);
$idcliente = $rscontrattii[0]['idanagrafica'];
// carica report html
$report = file_get_contents($docroot.'/templates/contratti/contratto.html');
$body = file_get_contents($docroot.'/templates/contratti/contratto_body.html');
include_once $docroot.'/templates/pdfgen_variables.php';
$totrows = sizeof($rscontrattii);
$totale_km = 0;
$totale_ore = 0;
$totale = 0;
$contratti = [];
$ore = [];
$km = [];
$ntecnici = [];
$tecnici = [];
$costi_orari = [];
$costi_km = [];
$idinterventi = ['-1'];
// Sostituisco i valori tra | | con il valore del campo del db
$body .= preg_replace('/|(.+?)|/', $rscontrattii[0]['${1}'], $body);
// Lettura nome referenti collegati all'anagrafica
$query = 'SELECT * FROM an_referenti WHERE id = "'.$rscontrattii[0]['idreferente'].'"';
$rs = $dbo->fetchArray($query);
$nome_referente = $rs[0]['nome'];
// Tabella intestazione
$body .= "<table class='table_values' border='0' cellpadding='0'>\n";
$body .= "<tr><td align=\"left\" width='356' style='border:0px;'>\n";
$body .= " \n";
$body .= "</td>\n";
$body .= "<td align=\"left\" width='356' >\n";
if ($c_cap != '') {
$c_cap = $c_cap.' ';
}
if ($c_provincia != '') {
$c_provincia = ' ('.$c_provincia.')';
}
$body .= '<big style="line-height:5mm" >Spettabile<br/><b>'.$c_ragionesociale.'<br>'.$c_indirizzo.'<br>'.$c_cap.$c_citta.$c_provincia.'<br> P.Iva: '.$c_piva."</b></big>\n";
$body .= "</td>\n";
$body .= "</tr>\n";
$body .= "<tr><td align=\"left\" colspan=\"2\" style='border:0px;'>\n";
$body .= '<big><b>'.$f_citta.', '.Translator::dateToLocale($rscontrattii[0]['data_bozza'])."</b></big>\n";
$body .= "</td>\n";
$body .= "</tr>\n";
$body .= "<tr><td align=\"left\" colspan=\"2\" style='border:0px;'>\n";
$body .= '<big><b>OGGETTO: CONTRATTO N<sup>o</sup> '.$rscontrattii[0]['numero'].' DEL '.Translator::dateToLocale($rscontrattii[0]['data_bozza'])."</b></big>\n";
$body .= "</td>\n";
$body .= "</tr>\n";
if ($nome_referente != '') {
$body .= "<tr><td align=\"left\" colspan=\"2\" >\n";
$body .= '<b><u>C.A.</u></b> '.$nome_referente."\n";
$body .= "</td>\n";
$body .= "</tr>\n";
}
$body .= "</table>\n";
/*
TABELLA COSTI
*/
$body .= "<table class='table_values' border='0' cellpadding='0'>\n";
$body .= "<col width='390'><col width='50'><col width='40'><col width='90'><col width='75'><col width='60'><col width='78'>\n";
$body .= "<thead>\n";
$body .= "<tr><th width='390'>Descrizione</th>\n";
$body .= "<th width='50' align='center'>Q.tà</th>\n";
$body .= "<th width='40' align='center'>u.m.</th>\n";
$body .= "<th width='90' align='center'>Costo&nbsp;unitario</th>\n";
$body .= "<th width='75' align='center'>Imponibile</th></tr>\n";
$body .= "</thead>\n";
$body .= "<tbody>\n";
$rs = $dbo->fetchArray('SELECT * FROM co_righe2_contratti WHERE idcontratto="'.$idcontratto.'"');
$totale = 0;
for ($i = 0; $i < sizeof($rs); ++$i) {
// Descrizione
$body .= "<tr><td valign='top'>".nl2br($rs[$i]['descrizione'])."</td>\n";
// Q.tà
$body .= "<td align='center' valign='top'>".Translator::numberToLocale($rs[$i]['qta'], 2)."</td>\n";
// um
$body .= "<td align='center' valign='top'>".$rs[$i]['um']."</td>\n";
// Costo unitario
$body .= "<td align='center' valign='top'>".Translator::numberToLocale($rs[$i]['subtotale'] / $rs[$i]['qta'], 2)." &euro;</td>\n";
// Subtotale
$body .= "<td align='center' valign='top'>".Translator::numberToLocale($rs[$i]['subtotale'], 2)." &euro;</td>\n";
$body .= "</tr>\n";
$totale += $rs[$i]['subtotale'];
}
// Totale complessivo intervento
$body .= "<tr><td align=\"right\" colspan=\"4\">\n";
$body .= "<big><b>QUOTAZIONE TOTALE:</b></big>\n";
$body .= "</td>\n";
$body .= "<td align=\"right\" bgcolor=\"#cccccc\">\n";
$body .= '<big><b>'.Translator::numberToLocale($totale, 2)." &euro;</b></big>\n";
$body .= "</td></tr>\n";
$body .= "</tbody>\n";
$body .= "</table><br/><br/>\n";
// CONDIZIONI GENERALI DI FORNITURA
// Lettura pagamenti
if ($rscontrattii[0]['idpagamento'] != '') {
$query = 'SELECT * FROM co_pagamenti WHERE id = '.$rscontrattii[0]['idpagamento'];
$rs = $dbo->fetchArray($query);
$pagamento = $rs[0]['descrizione'];
} else {
$pagamento = 'N.D.';
}
$rscontrattii[0]['idpagamento'];
$body .= "<table border=\"0\" cellpadding='0' cellspacing='10'>\n";
$body .= "<col width='200'><col width='510'>\n";
$body .= "<tr><td align=\"center\" valign=\"middle\" style=\"height:5mm;font-size:14pt;\" bgcolor=\"#dddddd\" colspan=\"2\">\n";
$body .= "<span><b>CONDIZIONI GENERALI DI FORNITURA</b></span><br/>\n";
$body .= "</td></tr>\n";
// PAGAMENTI
$body .= "<tr><td>\n";
$body .= "<big><b><u>PAGAMENTI:</u></b></big>\n";
$body .= "</td>\n";
$body .= "<td>\n";
$body .= '<span><b>'.$pagamento."</b></span>\n";
$body .= "</td></tr>\n";
// VALIDITA' OFFERTA
$body .= "<tr><td>\n";
$body .= "<big><b><u>VALIDIT&Agrave; OFFERTA:</u></b></big>\n";
$body .= "</td>\n";
$body .= "<td>\n";
$body .= '<span><b>'.$rscontrattii[0]['validita']." giorni</b></span>\n";
$body .= "</td></tr>\n";
// VALIDITA' CONTRATTO
$body .= "<tr><td>\n";
$body .= "<big><b><u>VALIDIT&Agrave; CONTRATTO:</u></b></big>\n";
$body .= "</td>\n";
$body .= "<td>\n";
$body .= '<span><b>dal '.Translator::dateToLocale($rscontrattii[0]['data_accettazione']).' al '.Translator::dateToLocale($rscontrattii[0]['data_conclusione'])."</b></span>\n";
$body .= "</td></tr>\n";
// ESCLUSIONI
$body .= "<tr><td>\n";
$body .= "<big><b><u>ESCLUSIONI:</u></b></big>\n";
$body .= "</td>\n";
$body .= "<td>\n";
$body .= '<span><b>'.$rscontrattii[0]['esclusioni']."</b></span>\n";
$body .= "</td></tr>\n";
$body .= "</table>\n";
$body .= "<br/><br/>\n";
$body .= "<span><b>Il tutto S.E. & O.</b></span><br/><br/>\n";
$body .= "<span>In attesa di un Vostro Cortese riscontro scritto, l&rsquo;occasione mi &egrave; gradita per porgere Cordiali Saluti.</span>\n";
$report_name = 'contratto_'.$idcontratto.'.pdf';

View File

@ -74,7 +74,7 @@ echo '
<td class="border-full" style="height:16mm;">
<p class="small-bold">'.tr('Spett.le', [], ['upper' => true]).'</p>
<p>$c_ragionesociale$</p>
<p>$c_indirizzo$ $c_citta$</p>
<p>$c_indirizzo$ $c_citta_full$</p>
</td>
</tr>

View File

@ -44,7 +44,7 @@ if (!empty($records[0]['idsede'])) {
$custom = [
'tipo_doc' => strtoupper($tipo_doc),
'numero_doc' => $numero,
'data' => Translator::numberToLocale($records[0]['data']),
'data' => Translator::dateToLocale($records[0]['data']),
'pagamento' => $records[0]['tipo_pagamento'],
'c_destinazione' => $destinazione,
'aspettobeni' => $records[0]['aspettobeni'],

View File

@ -78,7 +78,7 @@ echo '
<td colspan=2 class="border-full" style="height:16mm;">
<p class="small-bold">'.tr('Spett.le', [], ['upper' => true]).'</p>
<p>$c_ragionesociale$</p>
<p>$c_indirizzo$ $c_citta$</p>
<p>$c_indirizzo$ $c_citta_full$</p>
</td>
</tr>

192
templates/ordini/body.php Normal file
View File

@ -0,0 +1,192 @@
<?php
include_once __DIR__.'/../../core.php';
$report_name = 'ordine_'.$numero_ord.'.pdf';
$autofill = [
'count' => 0, // Conteggio delle righe
'words' => 70, // Numero di parolo dopo cui contare una riga nuova
'rows' => 20, // Numero di righe massimo presente nella pagina
'additional' => 15, // Numero di righe massimo da aggiungere
'columns' => 5, // Numero di colonne della tabella
];
$sconto = [];
$imponibile = [];
$iva = [];
// Intestazione tabella per righe
echo "
<table class='table table-striped table-bordered' id='contents'>
<thead>
<tr>
<th class='text-center' style='width:50%'>".tr('Descrizione', [], ['upper' => true])."</th>
<th class='text-center' style='width:10%'>".tr('Q.tà', [], ['upper' => true])."</th>
<th class='text-center' style='width:15%'>".tr('Prezzo unitario', [], ['upper' => true])."</th>
<th class='text-center' style='width:15%'>".tr('Imponibile', [], ['upper' => true])."</th>
<th class='text-center' style='width:10%'>".tr('IVA', [], ['upper' => true]).' (%)</th>
</tr>
</thead>
<tbody>';
// RIGHE PREVENTIVO CON ORDINAMENTO UNICO
$righe = $dbo->fetchArray("SELECT *, IFNULL((SELECT codice FROM mg_articoli WHERE id=idarticolo),'') AS codice_articolo, (SELECT percentuale FROM co_iva WHERE id=idiva) AS perc_iva FROM `or_righe_ordini` WHERE idordine=".prepare($idordine).' ORDER BY `order`');
foreach ($righe as $r) {
$count = 0;
$count += ceil(strlen($r['descrizione']) / $autofill['words']);
$count += substr_count($r['descrizione'], PHP_EOL);
echo '
<tr>
<td>
'.nl2br($r['descrizione']);
if (!empty($r['codice_articolo'])) {
echo '
<br><small>'.tr('COD. _COD_', [
'_COD_' => $r['codice_articolo'],
]).'</small>';
if ($count <= 1) {
$count += 0.4;
}
}
echo '
</td>';
echo "
<td class='text-center'>
".(empty($r['qta']) ? '' : Translator::numberToLocale($r['qta'], 2)).' '.$r['um'].'
</td>';
if ($mostra_prezzi) {
// Prezzo unitario
echo "
<td class='text-right'>
".(empty($r['qta']) || empty($r['subtotale']) ? '' : Translator::numberToLocale($r['subtotale'] / $r['qta'], 2)).' &euro;
</td>';
// Imponibile
echo "
<td class='text-right'>
".(empty($r['subtotale']) ? '' : Translator::numberToLocale($r['subtotale'], 2)).' &euro;';
if ($r['sconto'] > 0) {
echo "
<br><small class='help-block'>- sconto ".Translator::numberToLocale($r['sconto_unitario']).($r['tipo_sconto'] == 'PRC' ? '%' : ' &euro;').'</small>';
if ($count <= 1) {
$count += 0.4;
}
}
echo '
</td>';
} else {
echo '
<td class="text-center">-</td>
<td class="text-center">-</td>';
}
// Iva
echo '
<td class="text-center">
'.Translator::numberToLocale($r['perc_iva'], 2).'
</td>
</tr>';
$autofill['count'] += $count;
$sconto[] = $r['sconto'];
$imponibile[] = $r['subtotale'];
$iva[] = $r['iva'];
}
$sconto = sum($sconto);
$imponibile = sum($imponibile);
$iva = sum($iva);
$totale = $imponibile - $sconto;
echo '
|autofill|
</tbody>';
// TOTALE COSTI FINALI
if ($mostra_prezzi) {
// Totale imponibile
echo '
<tr>
<td colspan="3" class="text-right border-top">
<b>'.tr('Imponibile', [], ['upper' => true]).':</b>
</td>
<th colspan="2" class="text-center">
<b>'.Translator::numberToLocale($imponibile, 2).' &euro;</b>
</th>
</tr>';
// Eventuale sconto incondizionato
if (!empty($sconto)) {
echo '
<tr>
<td colspan="3" class="text-right border-top">
<b>'.tr('Sconto', [], ['upper' => true]).':</b>
</td>
<th colspan="2" class="text-center">
<b>-'.Translator::numberToLocale($sconto, 2).' &euro;</b>
</th>
</tr>';
// Imponibile scontato
echo '
<tr>
<td colspan="3" class="text-right border-top">
<b>'.tr('Imponibile scontato', [], ['upper' => true]).':</b>
</td>
<th colspan="2" class="text-center">
<b>'.Translator::numberToLocale($totale, 2).' &euro;</b>
</th>
</tr>';
}
// IVA
echo '
<tr>
<td colspan="3" class="text-right border-top">
<b>'.tr('Totale IVA', [], ['upper' => true]).':</b>
</td>
<th colspan="2" class="text-center">
<b>'.Translator::numberToLocale($iva, 2).' &euro;</b>
</th>
</tr>';
$totale = sum($totale, $iva);
// TOTALE
echo '
<tr>
<td colspan="3" class="text-right border-top">
<b>'.tr('Quotazione totale', [], ['upper' => true]).':</b>
</td>
<th colspan="2" class="text-center">
<b>'.Translator::numberToLocale($totale, 2).' &euro;</b>
</th>
</tr>';
}
echo'
</table>';
if (!empty($records[0]['note'])) {
echo '
<br>
<p class="small-bold">'.tr('Note', [], ['upper' => true]).':</p>
<p>'.nl2br($records[0]['note']).'</p>';
}

View File

@ -0,0 +1,46 @@
<?php
echo '
<div class="row">
<div class="col-xs-6">
<img src="'.__DIR__.'/logo_azienda.jpg" alt="Logo" border="0"/>
</div>
<div class="col-xs-6 text-right">
<p><b>$f_ragionesociale$</b></p>
<p>$f_indirizzo$ $f_citta_full$</p>
<p>'.(!empty($f_piva) ? tr('P.Iva').': ' : '').'$f_piva$</p>
<p>'.(!empty($f_codicefiscale) ? tr('C.F.').': ' : '').'$f_codicefiscale$</p>
<p>'.(!empty($f_capsoc) ? tr('Cap.Soc.').': ' : '').'$f_capsoc$</p>
<p>'.(!empty($f_telefono) ? tr('Tel').': ' : '').'$f_telefono$</p>
</div>
</div>
<br>
<div class="text-center" style="height:5mm;">
<b>$tipo_doc$</b>
</div>
<table class="table table-bordered">
<tr>
<td class="border-full text-center">
<p class="small-bold">'.tr('Nr. documento', [], ['upper' => true]).'</p>
<p>$numero_doc$</p>
</td>
<td class="border-right border-bottom border-top text-center">
<p class="small-bold">'.tr('Data documento', [], ['upper' => true]).'</p>
<p>$data$</p>
</td>
<td class="border-right border-bottom border-top text-center">
<p class="small-bold">'.tr('Pagamanto', [], ['upper' => true]).'</p>
<p>$pagamento$</p>
</td>
<td class="border-right border-bottom border-top center text-center">
<p class="small-bold">'.tr('Foglio', [], ['upper' => true]).'</p>
<p>{PAGENO}/{nb}</p>
</td>
</tr>
</table>';

24
templates/ordini/init.php Normal file
View File

@ -0,0 +1,24 @@
<?php
include_once __DIR__.'/../../core.php';
$module_name = 'Preventivi';
// Lettura info fattura
$records = $dbo->fetchArray('SELECT *, (SELECT descrizione FROM or_tipiordine WHERE or_tipiordine.id=idtipoordine) AS tipo_doc, (SELECT descrizione FROM co_pagamenti WHERE id=idpagamento) AS tipo_pagamento FROM or_ordini WHERE id='.prepare($idordine));
$id_cliente = $records[0]['idanagrafica'];
$id_sede = $records[0]['idsede'];
$numero_ord = $records[0]['numero'];
$numero = !empty($records[0]['numero_esterno']) ?$records[0]['numero_esterno'] : $records[0]['numero'];
// Sostituzioni specifiche
$custom = [
'tipo_doc' => strtoupper($records[0]['tipo_doc']),
'numero_doc' => $numero,
'data' => Translator::dateToLocale($records[0]['data']),
'pagamento' => $records[0]['tipo_pagamento'],
];
$mostra_prezzi = get_var('Stampa i prezzi sugli ordini');

View File

@ -1,22 +0,0 @@
<style>
<!--
.table_values td{
border: 1px solid #888;
padding: 4px;
white-space: normal;
}
.table_values th{
background: #cfe1ec;
padding: 4px;
}
.center{
text-align: center;
}
-->
</style>
<page backcolor="#ffffff" backtop="65mm" backbottom="50mm" backleft="0mm" backright="0mm" footer="" style="font-size: $font_size$">
$body$
</page>

View File

@ -1,27 +0,0 @@
<page_header>
<table $body_table_params$>
<!-- Intestazione fornitore -->
<tr><td style="width:105mm; font-size:8pt; color:#555;">
<img src="$docroot$/templates/ordini/logo_azienda.jpg" alt="Logo" border="0" /><br/>
$f_ragionesociale$
$f_indirizzo$
$f_citta_full$
$f_piva$
$f_codicefiscale$
$f_capsoc$
$f_telefono$
$f_sitoweb$
$f_email$
</td>
<!-- Intestazione cliente -->
<td style="width:95mm; font-size:10pt">
Spett.le $c_ragionesociale$
$c_indirizzo$
$c_citta$
$c_piva$
</td></tr>
</table>
<br/>
</page_header>

View File

@ -1,307 +0,0 @@
<?php
include_once __DIR__.'/../../core.php';
$idordine = save($_GET['idordine']);
$show_costi = get_var('Stampa i prezzi sugli ordini');
// Lettura info ordine
$q = "SELECT *, (SELECT descrizione FROM or_tipiordine WHERE or_tipiordine.id=idtipoordine) AS tipo_doc, (SELECT descrizione FROM co_pagamenti WHERE id=idpagamento) AS tipo_pagamento FROM or_ordini WHERE id='".$idordine."'";
$rs = $dbo->fetchArray($q);
$numero_ord = $rs[0]['numero'];
$idcliente = $rs[0]['idanagrafica'];
(!empty($rs[0]['numero_esterno'])) ? $numero = $rs[0]['numero_esterno'] : $numero = $rs[0]['numero'];
// Lettura righe ordine
$q2 = "SELECT * FROM or_righe_ordini WHERE idordine='".$idordine."'";
$righe = $dbo->fetchArray($q2);
// carica report html
$report = file_get_contents($docroot.'/templates/ordini/ordine.html');
$body = file_get_contents($docroot.'/templates/ordini/ordine_body.html');
include_once $docroot.'/templates/pdfgen_variables.php';
// Dati generici fattura
$body .= "<table style='width:200mm;' class='table_values' border='0' cellspacing='1'>\n";
$body .= "<tr><td width='229' class='center'><b>".$rs[0]['tipo_doc']."</b><br/>n<sup>o</sup> $numero</td>\n";
$body .= "<td width='229' class='center'><b>Data:</b><br/>".Translator::dateToLocale($rs[0]['data'])."</td>\n";
$body .= "<td width='229' class='center'><b>Pagamento:</b><br/>".$rs[0]['tipo_pagamento']."</td></tr>\n";
$body .= "</table><br/><br/>\n";
// Intestazione tabella per righe
$body .= "<table class='table_values' border='0' cellspacing='1' style='table-layout:fixed;'>\n";
$body .= "<col width='300'><col width='50'><col width='40'><col width='90'><col width='75'><col width='60'><col width='78'>\n";
$body .= "<thead>\n";
$body .= "<tr><th width='300'>Descrizione</th>\n";
$body .= "<th width='50' align='center'>Q.tà</th>\n";
$body .= "<th width='40' align='center'>u.m.</th>\n";
$body .= "<th width='90' align='center'>Costo&nbsp;unitario</th>\n";
$body .= "<th width='60' align='center'>Iva</th>\n";
$body .= "<th width='75' align='center'>Imponibile</th></tr>\n";
$body .= "</thead>\n";
$body .= "<tbody>\n";
// Mostro le righe del ordine
$totale_ordine = 0.00;
$totale_imponibile = 0.00;
$totale_iva = 0.00;
$sconto = 0.00;
/*
Articoli
*/
$q_art = "SELECT *, CONCAT_WS(serial, 'SN: ', ', ') AS codice, SUM(qta) AS sumqta FROM `or_righe_ordini` JOIN mg_prodotti ON or_righe_ordini.idarticolo = mg_prodotti.id_articolo GROUP BY idarticolo, idordine, lotto HAVING idordine='$idordine' AND NOT idarticolo='0' ORDER BY idarticolo ASC";
$rs_art = $dbo->fetchArray($q_art);
$tot_art = sizeof($rs_art);
$imponibile_art = 0.0;
$iva_art = 0.0;
if ($tot_art > 0) {
$prec_art = '';
$riga_art = '';
for ($i = 0; $i < $tot_art; ++$i) {
if ($rs_art[$i]['idarticolo'] != $prec_art) {
$q_art = 0;
}
$body .= "<tr><td class='first_cell'>\n";
$body .= nl2br($rs_art[$i]['descrizione']);
if ($rs_art[$i]['codice'] != '') {
$body .= '<br/><small>'.$rs_art[$i]['codice']."</small>\n";
}
$body .= "</td>\n";
$body .= "<td class='table_cell center'>\n";
$body .= Translator::numberToLocale($rs_art[$i]['sumqta'], 2)."\n";
$body .= "</td>\n";
$body .= "<td class='table_cell center'>\n";
$body .= $rs_art[$i]['um']."\n";
$body .= "</td>\n";
$body .= "<td class='table_cell center'>\n";
if ($show_costi) {
$body .= Translator::numberToLocale($rs_art[$i]['subtotale'] / $rs_art[$i]['sumqta'], 2)." &euro;\n";
} else {
$body .= '-';
}
$body .= "</td>\n";
// Iva
$body .= "<td class='table_cell center'>\n";
$iva = $rs_art[$i]['iva'];
if ($show_costi) {
$body .= Translator::numberToLocale($iva, 2)." &euro;\n";
} else {
$body .= '-';
}
$body .= "</td>\n";
// Imponibile
$body .= "<td class='table_cell center'>\n";
if ($show_costi) {
$body .= Translator::numberToLocale($rs_art[$i]['subtotale'], 2)." &euro;\n";
if ($rs_art[$i]['sconto'] > 0) {
$body .= "<br/>\n<small style='color:#555;'>- sconto ".Translator::numberToLocale($rs_art[$i]['sconto'], 2)." &euro;</small>\n";
}
} else {
$body .= '-';
}
$body .= "</td></tr>\n";
$imponibile_art += $rs_art[$i]['subtotale'];
$iva_art += $iva;
$sconto += $rs_art[$i]['sconto'];
}
$imponibile_ordine += $imponibile_art;
$totale_iva += $iva_art;
$totale_ordine += $imponibile_art;
}
/*
Righe generiche
*/
$q_gen = "SELECT * FROM `or_righe_ordini` WHERE idordine='$idordine' AND idarticolo=0";
$rs_gen = $dbo->fetchArray($q_gen);
$tot_gen = sizeof($rs_gen);
$imponibile_gen = 0.0;
$iva_gen = 0.0;
if ($tot_gen > 0) {
for ($i = 0; $i < $tot_gen; ++$i) {
$body .= "<tr><td class='first_cell'>\n";
$body .= nl2br($rs_gen[$i]['descrizione']);
$body .= "</td>\n";
$body .= "<td class='table_cell center'>\n";
$body .= Translator::numberToLocale($rs_gen[$i]['qta'], 2)."\n";
$body .= "</td>\n";
$body .= "<td class='table_cell center'>\n";
$body .= $rs_gen[$i]['um']."\n";
$body .= "</td>\n";
$body .= "<td class='table_cell center'>\n";
if ($show_costi) {
$body .= Translator::numberToLocale($rs_gen[$i]['subtotale'] / $rs_gen[$i]['qta'], 2)." &euro;\n";
} else {
$body .= '-';
}
$body .= "</td>\n";
// Iva
$body .= "<td class='table_cell center'>\n";
$iva = $rs_gen[$i]['iva'];
if ($show_costi) {
$body .= Translator::numberToLocale($iva, 2)." &euro;\n";
} else {
$body .= '-';
}
$body .= "</td>\n";
// Imponibile
$body .= "<td class='table_cell center'>\n";
if ($show_costi) {
$body .= Translator::numberToLocale($rs_gen[$i]['subtotale'], 2)." &euro;\n";
if ($rs_gen[$i]['sconto'] > 0) {
$body .= "<br/>\n<small style='color:#555;'>- sconto ".Translator::numberToLocale($rs_gen[$i]['sconto'], 2)." &euro;</small>\n";
}
} else {
$body .= '-';
}
$body .= "</td></tr>\n";
$imponibile_gen += $rs_gen[$i]['subtotale'];
$iva_gen += $iva;
$sconto += $rs_gen[$i]['sconto'];
}
$imponibile_ordine += $imponibile_gen;
$totale_iva += $iva_gen;
$totale_ordine += $imponibile_gen;
}
// Totale imponibile
if ($show_costi) {
$body .= "<tr><td class='first_cell' colspan='5' align='right'>\n";
$body .= '<b>Totale imponibile:</b>';
$body .= "</td>\n";
$body .= "<td class='table_cell center'>\n";
$body .= Translator::numberToLocale($imponibile_ordine, 2).' &euro;';
$body .= "</td></tr>\n";
// Mostra sconto se c'è
if (abs($sconto) > 0) {
$body .= "<tr><td class='first_cell' colspan='5' align='right'>\n";
$body .= '<b>Sconto:</b>';
$body .= "</td>\n";
// Sconto
$body .= "<td class='table_cell center'>\n";
$body .= Translator::numberToLocale($sconto, 2).' &euro;';
$body .= '</td>';
$body .= "</tr>\n";
// Totale scontato
$body .= "<tr><td class='first_cell' colspan='5' align='right'>\n";
$body .= '<b>Totale scontato:</b>';
$body .= "</td>\n";
// Sconto
$body .= "<td class='table_cell center'>\n";
$totale_ordine = $imponibile_ordine - $sconto;
$body .= Translator::numberToLocale($totale_ordine, 2).' &euro;';
$body .= "</td></tr>\n";
}
// Mostra INPS se c'è
if (abs($rs[0]['rivalsainps']) > 0) {
$body .= "<tr><td class='first_cell' colspan='5' align='right'>\n";
$body .= '<b>Rivalsa INPS:</b>';
$body .= "</td>\n";
// Rivalsa INPS
$body .= "<td class='table_cell center'>\n";
$body .= Translator::numberToLocale($rs[0]['rivalsainps'], 2).' &euro;';
$body .= "</td></tr>\n";
$totale_ordine += $rs[0]['rivalsainps'];
}
// Mostra iva se c'è
$totale_iva += $rs[0]['iva_rivalsainps'];
if (abs($totale_iva) > 0) {
$body .= "<tr><td class='first_cell' colspan='5' align='right'>\n";
$body .= '<b>Iva:</b>';
$body .= "</td>\n";
// Iva
$body .= "<td class='table_cell center'>\n";
$body .= Translator::numberToLocale($totale_iva, 2)." &euro;\n";
$body .= "</td></tr>\n";
$totale_ordine += $totale_iva;
}
/*
Totale ordine
*/
$body .= "<tr><td class='first_cell' colspan='5' align='right'>\n";
$body .= '<b>Totale ordine:</b>';
$body .= "</td>\n";
$body .= "<td class='table_cell_h center'>\n";
$body .= '<b>'.Translator::numberToLocale($totale_ordine, 2)." &euro;</b>\n";
$body .= "</td></tr>\n";
$netto_a_pagare = $totale_ordine;
// Mostra marca da bollo se c'è
if (abs($rs[0]['bollo']) > 0) {
$body .= "<tr><td class='first_cell' colspan='5' align='right'>\n";
$body .= '<b>Marca da bollo:</b>';
$body .= "</td>\n";
// Marca da bollo
$body .= "<td class='table_cell center'>\n";
$marca_da_bollo = str_replace(',', '.', $rs[0]['bollo']);
$body .= Translator::numberToLocale($marca_da_bollo, 2).' &euro;';
$body .= "</td></tr>\n";
$netto_a_pagare += $marca_da_bollo;
}
// Mostra ritenuta d'acconto se c'è
if (abs($rs[0]['ritenutaacconto']) > 0) {
$body .= "<tr><td class='first_cell' colspan='5' align='right'>\n";
$body .= "<b>Ritenuta d'acconto:</b>";
$body .= "</td>\n";
// Ritenuta d'acconto
$body .= "<td class='table_cell center'>\n";
$body .= Translator::numberToLocale($rs[0]['ritenutaacconto'], 2).' &euro;';
$body .= "</td></tr>\n";
$netto_a_pagare -= $rs[0]['ritenutaacconto'];
}
/*
Netto a pagare (se diverso dal totale)
*/
if ($totale_ordine != $netto_a_pagare) {
$body .= "<tr><td class='first_cell' colspan='5' align='right'>\n";
$body .= '<b>Netto a pagare:</b>';
$body .= "</td>\n";
$body .= "<td class='table_cell_h center'>\n";
$body .= '<b>'.Translator::numberToLocale($netto_a_pagare, 2)." &euro;</b>\n";
$body .= "</td></tr>\n";
}
}
$body .= "</tbody>\n";
$body .= "</table>\n";
$body .= '<p>'.nl2br($rs[0]['note'])."</p>\n";
$report_name = 'Ordine_'.$numero_ord.'.pdf';

View File

@ -0,0 +1,5 @@
<?php
return [
'header-height' => 55,
];

View File

@ -29,7 +29,7 @@ echo '
<td colspan=2 class="border-full" style="height:16mm;">
<p class="small-bold">'.tr('Spett.le', [], ['upper' => true]).'</p>
<p>$c_ragionesociale$</p>
<p>$c_indirizzo$ $c_citta$</p>
<p>$c_indirizzo$ $c_citta_full$</p>
</td>
</tr>
@ -111,28 +111,34 @@ foreach ($righe as $r) {
".(empty($r['qta']) ? '' : Translator::numberToLocale($r['qta'], 2)).' '.$r['um'].'
</td>';
// Prezzo unitario
echo "
if ($mostra_prezzi) {
// Prezzo unitario
echo "
<td class='text-right'>
".(empty($r['qta']) || empty($r['subtotale']) ? '' : Translator::numberToLocale($r['subtotale'] / $r['qta'], 2)).' &euro;
</td>';
// Imponibile
echo "
// Imponibile
echo "
<td class='text-right'>
".(empty($r['subtotale']) ? '' : Translator::numberToLocale($r['subtotale'], 2)).' &euro;';
if ($r['sconto'] > 0) {
echo "
if ($r['sconto'] > 0) {
echo "
<br><small class='help-block'>- sconto ".Translator::numberToLocale($r['sconto_unitario']).($r['tipo_sconto'] == 'PRC' ? '%' : ' &euro;').'</small>';
if ($count <= 1) {
$count += 0.4;
if ($count <= 1) {
$count += 0.4;
}
}
}
echo '
echo '
</td>';
} else {
echo '
<td class="text-center">-</td>
<td class="text-center">-</td>';
}
// Iva
echo '
@ -150,9 +156,9 @@ foreach ($righe as $r) {
$sconto = sum($sconto);
$imponibile = sum($imponibile);
$iva = sum($iva);
$totale = $imponibile - $sconto;
$iva = sum($iva);
echo '
|autofill|
@ -212,7 +218,7 @@ if ($mostra_prezzi) {
$totale = sum($totale, $iva);
// TOTALE INTERVENTO
// TOTALE
echo '
<tr>
<td colspan="3" class="text-right border-top">
@ -230,13 +236,11 @@ echo'
// CONDIZIONI GENERALI DI FORNITURA
// Lettura pagamenti
$query = 'SELECT * FROM co_pagamenti WHERE id = '.$records[0]['idpagamento'];
$rs = $dbo->fetchArray($query);
$rs = $dbo->fetchArray('SELECT * FROM co_pagamenti WHERE id = '.$records[0]['idpagamento']);
$pagamento = $rs[0]['descrizione'];
// Lettura resa
$query = 'SELECT * FROM dt_porto WHERE id = '.$records[0]['idporto'];
$rs = $dbo->fetchArray($query);
$rs = $dbo->fetchArray('SELECT * FROM dt_porto WHERE id = '.$records[0]['idporto']);
$resa_materiale = $rs[0]['descrizione'];
echo '