Miglioramento della gestione stampe
Introdotto il framework mPDF per rendere più semplice la gestione delle stampe, con relativo aggiornamento alla nuova versione delle stampe per interventi e fatture. Bugfix e miglioramenti vari distribuiti.
This commit is contained in:
parent
c34d5ec391
commit
c83e841e30
|
@ -29,6 +29,7 @@
|
||||||
"ircmaxell/password-compat": "^1.0",
|
"ircmaxell/password-compat": "^1.0",
|
||||||
"maximebf/debugbar": "^1.13",
|
"maximebf/debugbar": "^1.13",
|
||||||
"monolog/monolog": "^1.22",
|
"monolog/monolog": "^1.22",
|
||||||
|
"mpdf/mpdf": "^6.1",
|
||||||
"paragonie/random_compat": "^2.0",
|
"paragonie/random_compat": "^2.0",
|
||||||
"phpmailer/phpmailer": "^5.2",
|
"phpmailer/phpmailer": "^5.2",
|
||||||
"spipu/html2pdf": "^4.6",
|
"spipu/html2pdf": "^4.6",
|
||||||
|
|
|
@ -81,6 +81,8 @@ echo '
|
||||||
</div>
|
</div>
|
||||||
</div>';
|
</div>';
|
||||||
|
|
||||||
|
redirectOperation();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Widget laterali.
|
* Widget laterali.
|
||||||
*/
|
*/
|
||||||
|
|
12
core.php
12
core.php
|
@ -2,17 +2,7 @@
|
||||||
|
|
||||||
// Impostazioni per la corretta interpretazione di UTF-8
|
// Impostazioni per la corretta interpretazione di UTF-8
|
||||||
header('Content-Type: text/html; charset=UTF-8');
|
header('Content-Type: text/html; charset=UTF-8');
|
||||||
|
ob_start();
|
||||||
$handler = null;
|
|
||||||
if (extension_loaded('mbstring')) {
|
|
||||||
mb_internal_encoding('UTF-8');
|
|
||||||
mb_http_output('UTF-8');
|
|
||||||
mb_http_input('UTF-8');
|
|
||||||
mb_language('uni');
|
|
||||||
mb_regex_encoding('UTF-8');
|
|
||||||
$handler = 'mb_output_handler';
|
|
||||||
}
|
|
||||||
ob_start($handler);
|
|
||||||
|
|
||||||
// Impostazioni di configurazione PHP
|
// Impostazioni di configurazione PHP
|
||||||
date_default_timezone_set('Europe/Rome');
|
date_default_timezone_set('Europe/Rome');
|
||||||
|
|
14
editor.php
14
editor.php
|
@ -118,19 +118,7 @@ if (file_exists($docroot.'/modules/'.$module_dir.'/add.php') && $module['permess
|
||||||
</div>';
|
</div>';
|
||||||
}
|
}
|
||||||
|
|
||||||
$backto = filter('backto');
|
redirectOperation();
|
||||||
// Scelta del redirect dopo un submit
|
|
||||||
if (!empty($backto)) {
|
|
||||||
$hash = filter('hash');
|
|
||||||
$hash = !starts_with($hash, '#') ? '#'.$hash : $hash;
|
|
||||||
if ($backto == 'record-edit') {
|
|
||||||
redirect(ROOTDIR.'/editor.php?id_module='.$id_module.'&id_record='.$id_record.$hash);
|
|
||||||
exit();
|
|
||||||
} elseif ($backto == 'record-list') {
|
|
||||||
redirect(ROOTDIR.'/controller.php?id_module='.$id_module.$hash);
|
|
||||||
exit();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
echo '
|
echo '
|
||||||
<hr>
|
<hr>
|
||||||
|
|
|
@ -150,7 +150,7 @@ if (!empty($module_options) && $module_options != 'menu' && $module_options != '
|
||||||
}
|
}
|
||||||
|
|
||||||
echo '
|
echo '
|
||||||
<li role="presentation"><a class="bulk-action" data-op="'.$key.'" '.implode(' ', $extra).'>'.$text.'</a></li>';
|
<li role="presentation"><a class="bulk-action" data-op="'.$key.'" data-backto="record-list" '.implode(' ', $extra).'>'.$text.'</a></li>';
|
||||||
}
|
}
|
||||||
|
|
||||||
echo '
|
echo '
|
||||||
|
|
|
@ -1219,14 +1219,17 @@ function message(element) {
|
||||||
delete data.method;
|
delete data.method;
|
||||||
}
|
}
|
||||||
|
|
||||||
redirect(href, data, method);
|
blank = data.blank != undefined && data.blank;
|
||||||
|
delete data.blank;
|
||||||
|
|
||||||
|
redirect(href, data, method, blank);
|
||||||
},
|
},
|
||||||
function (dismiss) {}
|
function (dismiss) {}
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
function redirect(href, data, method = "get") {
|
function redirect(href, data, method = "get", blank = false) {
|
||||||
var text = (method == "post") ? '<form action="' + href + window.location.hash + '" method="post">' : [];
|
var text = (method == "post") ? '<form action="' + href + window.location.hash + '" method="post"' + (blank ? ' target="_blank"' : '') + '>' : [];
|
||||||
|
|
||||||
for (var name in data) {
|
for (var name in data) {
|
||||||
if (method == "post") {
|
if (method == "post") {
|
||||||
|
@ -1246,6 +1249,6 @@ function redirect(href, data, method = "get") {
|
||||||
|
|
||||||
form.submit();
|
form.submit();
|
||||||
} else {
|
} else {
|
||||||
location.href = href + (href.indexOf('?') !== -1 ? '&' : '?') + text.join('&') + window.location.hash;
|
window.open(href + (href.indexOf('?') !== -1 ? '&' : '?') + text.join('&') + window.location.hash, blank ? "_blank" : "_self")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -77,14 +77,15 @@ function deltree($path)
|
||||||
* Source path
|
* Source path
|
||||||
* @param string $dest
|
* @param string $dest
|
||||||
* Destination path
|
* Destination path
|
||||||
* @param string $exclude
|
* @param array|string $ignores
|
||||||
* Path to exclude
|
* Paths to ingore
|
||||||
*
|
*
|
||||||
* @return bool Returns TRUE on success, FALSE on failure
|
* @return bool Returns TRUE on success, FALSE on failure
|
||||||
*/
|
*/
|
||||||
function copyr($source, $dest, $ignores = [])
|
function copyr($source, $dest, $ignores = [])
|
||||||
{
|
{
|
||||||
$path = realpath($source);
|
$path = realpath($source);
|
||||||
|
$ignores = (array) $ignores;
|
||||||
$exclude = !empty(array_intersect([slashes($path), slashes($path.'/'), $entry], $ignores));
|
$exclude = !empty(array_intersect([slashes($path), slashes($path.'/'), $entry], $ignores));
|
||||||
|
|
||||||
// Simple copy for a file
|
// Simple copy for a file
|
||||||
|
@ -143,6 +144,8 @@ function create_zip($source, $destination)
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$destination = slashes($destination);
|
||||||
|
|
||||||
$zip = new ZipArchive();
|
$zip = new ZipArchive();
|
||||||
$result = $zip->open($destination, ZIPARCHIVE::CREATE);
|
$result = $zip->open($destination, ZIPARCHIVE::CREATE);
|
||||||
if ($result === true && is_writable(dirname($destination))) {
|
if ($result === true && is_writable(dirname($destination))) {
|
||||||
|
@ -157,11 +160,11 @@ function create_zip($source, $destination)
|
||||||
|
|
||||||
if (is_dir($file) === true) {
|
if (is_dir($file) === true) {
|
||||||
$zip->addEmptyDir($filename);
|
$zip->addEmptyDir($filename);
|
||||||
} elseif (is_file($file) === true) {
|
} elseif (is_file($file) === true && $destination != $file) {
|
||||||
$zip->addFromString($filename, file_get_contents($file));
|
$zip->addFromString($filename, file_get_contents($file));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} elseif (is_file($source) === true) {
|
} elseif (is_file($source) === true && $destination != $source) {
|
||||||
$zip->addFromString(basename($source), file_get_contents($source));
|
$zip->addFromString(basename($source), file_get_contents($source));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -866,3 +869,19 @@ function sum($first, $second = null, $decimals = null)
|
||||||
|
|
||||||
return $result;
|
return $result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function redirectOperation(){
|
||||||
|
$backto = filter('backto');
|
||||||
|
// Scelta del redirect dopo un submit
|
||||||
|
if (!empty($backto)) {
|
||||||
|
$hash = filter('hash');
|
||||||
|
$hash = !starts_with($hash, '#') ? '#'.$hash : $hash;
|
||||||
|
if ($backto == 'record-edit') {
|
||||||
|
redirect(ROOTDIR.'/editor.php?id_module='.$id_module.'&id_record='.$id_record.$hash);
|
||||||
|
exit();
|
||||||
|
} elseif ($backto == 'record-list') {
|
||||||
|
redirect(ROOTDIR.'/controller.php?id_module='.$id_module.$hash);
|
||||||
|
exit();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -226,12 +226,12 @@ if (!function_exists('force_download')) {
|
||||||
header('Content-Type: application/force-download');
|
header('Content-Type: application/force-download');
|
||||||
header('Content-Transfer-Encoding: binary');
|
header('Content-Transfer-Encoding: binary');
|
||||||
|
|
||||||
if ($content) {
|
if (empty($content) && is_file($filename)) {
|
||||||
if (is_file($content)) {
|
$content = $filename;
|
||||||
$content = file_get_contents($content);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
header('Content-Length: '.strlen($content));
|
if (is_file($content)) {
|
||||||
|
$content = file_get_contents($content);
|
||||||
}
|
}
|
||||||
|
|
||||||
ob_clean();
|
ob_clean();
|
||||||
|
|
|
@ -155,7 +155,7 @@ $rs = $dbo->fetchArray('SELECT COUNT(id) AS tot FROM mg_prodotti WHERE id_artico
|
||||||
$tot_prodotti = $rs[0]['tot'];
|
$tot_prodotti = $rs[0]['tot'];
|
||||||
|
|
||||||
// Visualizzazione di tutti i prodotti
|
// Visualizzazione di tutti i prodotti
|
||||||
$query = 'SELECT * FROM mg_prodotti WHERE id_articolo='.prepare($id_record).(!empty($search_serial) ? ' AND serial LIKE '.prepare('%'.$search_serial.'%') : '').' ORDER BY created_at DESC, lotto DESC, serial DESC, altro DESC';
|
$query = 'SELECT serial, created_at FROM mg_prodotti WHERE serial IS NOT NULL AND id_articolo='.prepare($id_record).(!empty($search_serial) ? ' AND serial LIKE '.prepare('%'.$search_serial.'%') : '').' GROUP BY serial ORDER BY created_at DESC, serial DESC, lotto DESC, altro DESC';
|
||||||
$rs2 = $dbo->fetchArray($query);
|
$rs2 = $dbo->fetchArray($query);
|
||||||
|
|
||||||
echo '
|
echo '
|
||||||
|
|
|
@ -6,6 +6,12 @@ switch (post('op')) {
|
||||||
case 'export-bulk':
|
case 'export-bulk':
|
||||||
$dir = DOCROOT.'/files/export_fatture/';
|
$dir = DOCROOT.'/files/export_fatture/';
|
||||||
|
|
||||||
|
// Rimozione dei contenuti precedenti
|
||||||
|
$files = glob($dir.'/*.zip');
|
||||||
|
foreach ($files as $file) {
|
||||||
|
unlink($file);
|
||||||
|
}
|
||||||
|
|
||||||
// Selezione delle fatture da stampare
|
// Selezione delle fatture da stampare
|
||||||
$records = $dbo->fetchArray('SELECT co_documenti.id, numero_esterno, data, ragione_sociale, co_tipidocumento.descrizione FROM co_documenti INNER JOIN an_anagrafiche ON co_documenti.idanagrafica=an_anagrafiche.idanagrafica INNER JOIN co_tipidocumento ON co_documenti.idtipodocumento=co_tipidocumento.id WHERE co_documenti.id IN('.implode(',', $id_records).')');
|
$records = $dbo->fetchArray('SELECT co_documenti.id, numero_esterno, data, ragione_sociale, co_tipidocumento.descrizione FROM co_documenti INNER JOIN an_anagrafiche ON co_documenti.idanagrafica=an_anagrafiche.idanagrafica INNER JOIN co_tipidocumento ON co_documenti.idtipodocumento=co_tipidocumento.id WHERE co_documenti.id IN('.implode(',', $id_records).')');
|
||||||
|
|
||||||
|
@ -15,7 +21,7 @@ switch (post('op')) {
|
||||||
|
|
||||||
// Gestione della stampa
|
// Gestione della stampa
|
||||||
$rapportino_nome = sanitizeFilename($numero.' '.$r['data'].' '.$r['ragione_sociale'].'.pdf');
|
$rapportino_nome = sanitizeFilename($numero.' '.$r['data'].' '.$r['ragione_sociale'].'.pdf');
|
||||||
$filename = slashes($dir.$rapportino_nome);
|
$filename = slashes($dir.'tmp/'.$rapportino_nome);
|
||||||
|
|
||||||
$_GET['iddocumento'] = $r['id']; // Fix temporaneo per la stampa
|
$_GET['iddocumento'] = $r['id']; // Fix temporaneo per la stampa
|
||||||
$iddocumento = $r['id']; // Fix temporaneo per la stampa
|
$iddocumento = $r['id']; // Fix temporaneo per la stampa
|
||||||
|
@ -25,17 +31,17 @@ switch (post('op')) {
|
||||||
}
|
}
|
||||||
|
|
||||||
$dir = slashes($dir);
|
$dir = slashes($dir);
|
||||||
$file = slashes($dir.'fatture.zip');
|
$file = slashes($dir.'fatture_'.time().'.zip');
|
||||||
|
|
||||||
// Creazione zip
|
// Creazione zip
|
||||||
if (extension_loaded('zip')) {
|
if (extension_loaded('zip')) {
|
||||||
create_zip($dir, $file);
|
create_zip($dir.'tmp/', $file);
|
||||||
|
|
||||||
// Invio al browser dello zip
|
// Invio al browser dello zip
|
||||||
force_download($file);
|
force_download($file);
|
||||||
|
|
||||||
// Rimozione dei contenuti
|
// Rimozione dei contenuti
|
||||||
deltree($dir);
|
deltree($dir.'tmp/');
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
@ -48,6 +54,7 @@ return [
|
||||||
'msg' => tr('Vuoi davvero esportare tutte le stampe in un archivio?'),
|
'msg' => tr('Vuoi davvero esportare tutte le stampe in un archivio?'),
|
||||||
'button' => tr('Procedi'),
|
'button' => tr('Procedi'),
|
||||||
'class' => 'btn btn-lg btn-warning',
|
'class' => 'btn btn-lg btn-warning',
|
||||||
|
'blank' => true,
|
||||||
],
|
],
|
||||||
],
|
],
|
||||||
];
|
];
|
||||||
|
|
|
@ -49,6 +49,23 @@ switch (post('op')) {
|
||||||
$dbo->query('INSERT INTO co_preventivi(idanagrafica, nome, numero, idagente, idstato, idtipointervento, data_bozza, data_conclusione, idiva, idpagamento) VALUES ('.prepare($idanagrafica).', '.prepare($nome).', '.prepare($numero).', '.prepare($idagente).", (SELECT `id` FROM `co_statipreventivi` WHERE `descrizione`='Bozza'), ".prepare($idtipointervento).', NOW(), DATE_ADD(NOW(), INTERVAL +1 MONTH), '.prepare($idiva).', '.prepare($idpagamento).')');
|
$dbo->query('INSERT INTO co_preventivi(idanagrafica, nome, numero, idagente, idstato, idtipointervento, data_bozza, data_conclusione, idiva, idpagamento) VALUES ('.prepare($idanagrafica).', '.prepare($nome).', '.prepare($numero).', '.prepare($idagente).", (SELECT `id` FROM `co_statipreventivi` WHERE `descrizione`='Bozza'), ".prepare($idtipointervento).', NOW(), DATE_ADD(NOW(), INTERVAL +1 MONTH), '.prepare($idiva).', '.prepare($idpagamento).')');
|
||||||
$id_record = $dbo->lastInsertedID();
|
$id_record = $dbo->lastInsertedID();
|
||||||
|
|
||||||
|
$listino = $dbo->fetchArray('SELECT prc_guadagno FROM mg_listini WHERE id = (SELECT idlistino FROM an_anagrafiche WHERE idanagrafica = '.prepare($idanagrafica).')');
|
||||||
|
|
||||||
|
if (!empty($listino)) {
|
||||||
|
$dbo->update('co_preventivi', [
|
||||||
|
'tipo_sconto_globale' => 'PRC',
|
||||||
|
'sconto_globale' => abs($listino[0]['prc_guadagno']),
|
||||||
|
], ['id' => $id_record]);
|
||||||
|
|
||||||
|
aggiorna_sconto([
|
||||||
|
'parent' => 'co_preventivi',
|
||||||
|
'row' => 'co_righe_preventivi',
|
||||||
|
], [
|
||||||
|
'parent' => 'id',
|
||||||
|
'row' => 'idpreventivo',
|
||||||
|
], $id_record);
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
// inserisco righe standard preventivo
|
// inserisco righe standard preventivo
|
||||||
// ore lavoro
|
// ore lavoro
|
||||||
|
@ -216,8 +233,6 @@ switch (post('op')) {
|
||||||
|
|
||||||
$subtot = $prezzo * $qta;
|
$subtot = $prezzo * $qta;
|
||||||
|
|
||||||
$prc_guadagno = post('prc_guadagno');
|
|
||||||
|
|
||||||
$um = post('um');
|
$um = post('um');
|
||||||
|
|
||||||
// Lettura iva dell'articolo
|
// Lettura iva dell'articolo
|
||||||
|
@ -225,7 +240,7 @@ switch (post('op')) {
|
||||||
$iva = ($subtot - $sconto) / 100 * $rs2[0]['percentuale'];
|
$iva = ($subtot - $sconto) / 100 * $rs2[0]['percentuale'];
|
||||||
$iva_indetraibile = $iva / 100 * $rs2[0]['indetraibile'];
|
$iva_indetraibile = $iva / 100 * $rs2[0]['indetraibile'];
|
||||||
|
|
||||||
$dbo->query('INSERT INTO co_righe_preventivi(idpreventivo, idarticolo, idiva, desc_iva, iva, iva_indetraibile, descrizione, subtotale, um, qta, sconto, sconto_unitario, tipo_sconto, prc_guadagno, `order`) VALUES ('.prepare($id_record).', '.prepare($idarticolo).', '.prepare($idiva).', '.prepare($rs2[0]['descrizione']).', '.prepare($iva).', '.prepare($iva_indetraibile).', '.prepare($descrizione).', '.prepare($subtot).', '.prepare($um).', '.prepare($qta).', '.prepare($sconto).', '.prepare($sconto_unitario).', '.prepare($tipo_sconto).', '.prepare($prc_guadagno).', (SELECT IFNULL(MAX(`order`) + 1, 0) FROM co_righe_preventivi AS t WHERE idpreventivo='.prepare($id_record).'))');
|
$dbo->query('INSERT INTO co_righe_preventivi(idpreventivo, idarticolo, idiva, desc_iva, iva, iva_indetraibile, descrizione, subtotale, um, qta, sconto, sconto_unitario, tipo_sconto, `order`) VALUES ('.prepare($id_record).', '.prepare($idarticolo).', '.prepare($idiva).', '.prepare($rs2[0]['descrizione']).', '.prepare($iva).', '.prepare($iva_indetraibile).', '.prepare($descrizione).', '.prepare($subtot).', '.prepare($um).', '.prepare($qta).', '.prepare($sconto).', '.prepare($sconto_unitario).', '.prepare($tipo_sconto).', (SELECT IFNULL(MAX(`order`) + 1, 0) FROM co_righe_preventivi AS t WHERE idpreventivo='.prepare($id_record).'))');
|
||||||
|
|
||||||
$_SESSION['infos'][] = tr('Articolo aggiunto!');
|
$_SESSION['infos'][] = tr('Articolo aggiunto!');
|
||||||
|
|
||||||
|
@ -245,8 +260,6 @@ switch (post('op')) {
|
||||||
$sconto = ($tipo_sconto == 'PRC') ? ($prezzo * $sconto_unitario) / 100 : $sconto_unitario;
|
$sconto = ($tipo_sconto == 'PRC') ? ($prezzo * $sconto_unitario) / 100 : $sconto_unitario;
|
||||||
$sconto = $sconto * $qta;
|
$sconto = $sconto * $qta;
|
||||||
|
|
||||||
$prc_guadagno = post('prc_guadagno');
|
|
||||||
|
|
||||||
$idiva = post('idiva');
|
$idiva = post('idiva');
|
||||||
$um = post('um');
|
$um = post('um');
|
||||||
|
|
||||||
|
@ -256,7 +269,7 @@ switch (post('op')) {
|
||||||
$iva_indetraibile = $iva / 100 * $rs2[0]['indetraibile'];
|
$iva_indetraibile = $iva / 100 * $rs2[0]['indetraibile'];
|
||||||
|
|
||||||
// Modifica riga generica sul documento
|
// Modifica riga generica sul documento
|
||||||
$query = 'UPDATE co_righe_preventivi SET idiva='.prepare($idiva).', iva='.prepare($iva).', iva_indetraibile='.prepare($iva_indetraibile).', descrizione='.prepare($descrizione).', subtotale='.prepare($subtot).', sconto='.prepare($sconto).', sconto_unitario='.prepare($sconto_unitario).', tipo_sconto='.prepare($tipo_sconto).', prc_guadagno='.prepare($prc_guadagno).', um='.prepare($um).', qta='.prepare($qta).' WHERE id='.prepare($idriga);
|
$query = 'UPDATE co_righe_preventivi SET idiva='.prepare($idiva).', iva='.prepare($iva).', iva_indetraibile='.prepare($iva_indetraibile).', descrizione='.prepare($descrizione).', subtotale='.prepare($subtot).', sconto='.prepare($sconto).', sconto_unitario='.prepare($sconto_unitario).', tipo_sconto='.prepare($tipo_sconto).', um='.prepare($um).', qta='.prepare($qta).' WHERE id='.prepare($idriga);
|
||||||
$dbo->query($query);
|
$dbo->query($query);
|
||||||
|
|
||||||
$_SESSION['infos'][] = 'Riga modificata!';
|
$_SESSION['infos'][] = 'Riga modificata!';
|
||||||
|
|
|
@ -38,11 +38,6 @@ if (empty($idriga)) {
|
||||||
$subtot = $rsr[0]['subtotale'] / $rsr[0]['qta'];
|
$subtot = $rsr[0]['subtotale'] / $rsr[0]['qta'];
|
||||||
$sconto = $rsr[0]['sconto_unitario'];
|
$sconto = $rsr[0]['sconto_unitario'];
|
||||||
$tipo_sconto = $rsr[0]['tipo_sconto'];
|
$tipo_sconto = $rsr[0]['tipo_sconto'];
|
||||||
|
|
||||||
$prc_guadagno = $rsr[0]['prc_guadagno'];
|
|
||||||
if ($prc_guadagno > 0) {
|
|
||||||
$prc_guadagno = '+'.$prc_guadagno;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -74,20 +69,20 @@ echo '
|
||||||
// Quantità
|
// Quantità
|
||||||
echo '
|
echo '
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-md-3">
|
<div class="col-md-4">
|
||||||
{[ "type": "number", "label": "'.tr('Q.tà').'", "name": "qta", "value": "'.$qta.'", "required": 1, "decimals": "qta" ]}
|
{[ "type": "number", "label": "'.tr('Q.tà').'", "name": "qta", "value": "'.$qta.'", "required": 1, "decimals": "qta" ]}
|
||||||
</div>';
|
</div>';
|
||||||
|
|
||||||
// Unità di misura
|
// Unità di misura
|
||||||
echo '
|
echo '
|
||||||
<div class="col-md-3">
|
<div class="col-md-4">
|
||||||
{[ "type": "select", "label": "'.tr('Unità di misura').'", "icon-after": "add|'.Modules::getModule('Unità di misura')['id'].'", "name": "um", "value": "'.$um.'", "ajax-source": "misure" ]}
|
{[ "type": "select", "label": "'.tr('Unità di misura').'", "icon-after": "add|'.Modules::getModule('Unità di misura')['id'].'", "name": "um", "value": "'.$um.'", "ajax-source": "misure" ]}
|
||||||
</div>';
|
</div>';
|
||||||
|
|
||||||
// Sconto
|
// Iva
|
||||||
echo '
|
echo '
|
||||||
<div class="col-md-6">
|
<div class="col-md-4">
|
||||||
{[ "type": "number", "label": "'.tr('Sconto/rincaro articoli per questo cliente').'", "icon-after": "%", "name": "prc_guadagno", "value": "'.$prc_guadagno.'" ]}
|
{[ "type": "select", "label": "'.tr('Iva').'", "name": "idiva", "required": 1, "value": "'.$idiva.'", "values": "query=SELECT * FROM co_iva ORDER BY descrizione ASC" ]}
|
||||||
</div>
|
</div>
|
||||||
</div>';
|
</div>';
|
||||||
|
|
||||||
|
@ -118,22 +113,16 @@ if (get_var('Percentuale rivalsa INPS') != '' || get_var("Percentuale ritenuta d
|
||||||
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// Iva
|
// Costo unitario
|
||||||
echo '
|
echo '
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
{[ "type": "select", "label": "'.tr('Iva').'", "name": "idiva", "required": 1, "value": "'.$idiva.'", "values": "query=SELECT * FROM co_iva ORDER BY descrizione ASC" ]}
|
|
||||||
</div>';
|
|
||||||
|
|
||||||
// Costo unitario
|
|
||||||
echo '
|
|
||||||
<div class="col-md-3">
|
|
||||||
{[ "type": "number", "label": "'.tr('Costo unitario').'", "name": "prezzo", "required": 1, "value": "'.$subtot.'", "icon-after": "€" ]}
|
{[ "type": "number", "label": "'.tr('Costo unitario').'", "name": "prezzo", "required": 1, "value": "'.$subtot.'", "icon-after": "€" ]}
|
||||||
</div>';
|
</div>';
|
||||||
|
|
||||||
// Sconto unitario
|
// Sconto unitario
|
||||||
echo '
|
echo '
|
||||||
<div class="col-md-3">
|
<div class="col-md-6">
|
||||||
{[ "type": "number", "label": "'.tr('Sconto unitario').'", "name": "sconto", "value": "'.$sconto.'", "icon-after": "choice|untprc|'.$tipo_sconto.'" ]}
|
{[ "type": "number", "label": "'.tr('Sconto unitario').'", "name": "sconto", "value": "'.$sconto.'", "icon-after": "choice|untprc|'.$tipo_sconto.'" ]}
|
||||||
</div>
|
</div>
|
||||||
</div>';
|
</div>';
|
||||||
|
|
99
pdfgen.php
99
pdfgen.php
|
@ -2,8 +2,11 @@
|
||||||
|
|
||||||
include_once __DIR__.'/core.php';
|
include_once __DIR__.'/core.php';
|
||||||
|
|
||||||
|
ob_end_clean();
|
||||||
|
|
||||||
$orientation = 'P';
|
$orientation = 'P';
|
||||||
$body_table_params = "style='width:210mm;'";
|
$body_table_params = "style='width:210mm;'";
|
||||||
|
$table = 'margin-left:1.7mm';
|
||||||
$font_size = '10pt';
|
$font_size = '10pt';
|
||||||
|
|
||||||
// Assegnazione di tutte le variabile GET
|
// Assegnazione di tutte le variabile GET
|
||||||
|
@ -16,13 +19,21 @@ $visualizza_costi = get_var('Visualizza i costi sulle stampe degli interventi');
|
||||||
|
|
||||||
// Nuovo sistema di generazione stampe
|
// Nuovo sistema di generazione stampe
|
||||||
if (file_exists($docroot.'/templates/'.$ptype.'/init.php')) {
|
if (file_exists($docroot.'/templates/'.$ptype.'/init.php')) {
|
||||||
// Impostazione della stampa
|
// Impostazioni della stampa
|
||||||
if (file_exists($docroot.'/templates/'.$ptype.'/custom/layout.html')) {
|
if (file_exists($docroot.'/templates/base/custom/settings.php')) {
|
||||||
$report = file_get_contents($docroot.'/templates/'.$ptype.'/custom/layout.html');
|
$default = include $docroot.'/templates/base/custom/settings.php';
|
||||||
} else {
|
} else {
|
||||||
$report = file_get_contents($docroot.'/templates/'.$ptype.'/layout.html');
|
$default = include $docroot.'/templates/base/settings.php';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (file_exists($docroot.'/templates/'.$ptype.'/custom/settings.php')) {
|
||||||
|
$custom = include $docroot.'/templates/'.$ptype.'/custom/settings.php';
|
||||||
|
} elseif (file_exists($docroot.'/templates/'.$ptype.'/settings.php')) {
|
||||||
|
$custom = include $docroot.'/templates/'.$ptype.'/settings.php';
|
||||||
|
}
|
||||||
|
|
||||||
|
$settings = array_merge($default, (array) $custom);
|
||||||
|
|
||||||
// Individuazione delle variabili fondamentali per la sostituzione dei contenuti
|
// Individuazione delle variabili fondamentali per la sostituzione dei contenuti
|
||||||
if (file_exists($docroot.'/templates/'.$ptype.'/custom/init.php')) {
|
if (file_exists($docroot.'/templates/'.$ptype.'/custom/init.php')) {
|
||||||
include $docroot.'/templates/'.$ptype.'/custom/init.php';
|
include $docroot.'/templates/'.$ptype.'/custom/init.php';
|
||||||
|
@ -35,14 +46,35 @@ if (file_exists($docroot.'/templates/'.$ptype.'/init.php')) {
|
||||||
}
|
}
|
||||||
Permissions::check();
|
Permissions::check();
|
||||||
|
|
||||||
// Operazioni di sostituzione
|
// Generazione dei contenuti della stampa
|
||||||
include $docroot.'/templates/pdfgen_variables.php';
|
ob_start();
|
||||||
|
if (file_exists($docroot.'/templates/'.$ptype.'/custom/body.php')) {
|
||||||
// Azioni sui contenuti della stampa
|
include $docroot.'/templates/'.$ptype.'/custom/body.php';
|
||||||
if (file_exists($docroot.'/templates/'.$ptype.'/custom/actions.php')) {
|
|
||||||
include $docroot.'/templates/'.$ptype.'/custom/actions.php';
|
|
||||||
} else {
|
} else {
|
||||||
include $docroot.'/templates/'.$ptype.'/actions.php';
|
include $docroot.'/templates/'.$ptype.'/body.php';
|
||||||
|
}
|
||||||
|
$report = ob_get_clean();
|
||||||
|
|
||||||
|
// Generazione dei contenuti dell'header
|
||||||
|
ob_start();
|
||||||
|
if (file_exists($docroot.'/templates/'.$ptype.'/custom/header.php')) {
|
||||||
|
include $docroot.'/templates/'.$ptype.'/custom/header.php';
|
||||||
|
} elseif (file_exists($docroot.'/templates/'.$ptype.'/header.php')) {
|
||||||
|
include $docroot.'/templates/'.$ptype.'/header.php';
|
||||||
|
}
|
||||||
|
$head = ob_get_clean();
|
||||||
|
|
||||||
|
// Generazione dei contenuti del footer
|
||||||
|
ob_start();
|
||||||
|
if (file_exists($docroot.'/templates/'.$ptype.'/custom/footer.php')) {
|
||||||
|
include $docroot.'/templates/'.$ptype.'/custom/footer.php';
|
||||||
|
} elseif (file_exists($docroot.'/templates/'.$ptype.'/footer.php')) {
|
||||||
|
include $docroot.'/templates/'.$ptype.'/footer.php';
|
||||||
|
}
|
||||||
|
$foot = ob_get_clean();
|
||||||
|
|
||||||
|
if (empty($foot)) {
|
||||||
|
$foot = '$pagination$';
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// Decido se usare la stampa personalizzata (se esiste) oppure quella standard
|
// Decido se usare la stampa personalizzata (se esiste) oppure quella standard
|
||||||
|
@ -52,16 +84,17 @@ if (file_exists($docroot.'/templates/'.$ptype.'/init.php')) {
|
||||||
include $docroot.'/templates/'.$ptype.'/pdfgen.'.$ptype.'.php';
|
include $docroot.'/templates/'.$ptype.'/pdfgen.'.$ptype.'.php';
|
||||||
}
|
}
|
||||||
|
|
||||||
// Operazioni di sostituzione
|
// Sostituzione di variabili generiche
|
||||||
include $docroot.'/templates/pdfgen_variables.php';
|
$report = str_replace('$body$', $body, $report);
|
||||||
|
$report = str_replace('$footer$', $footer, $report);
|
||||||
|
|
||||||
|
$report = str_replace('$font_size$', $font_size, $report);
|
||||||
|
$report = str_replace('$body_table_params$', $body_table_params, $report);
|
||||||
|
$report = str_replace('$table$', $table, $report);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Sostituzione di variabili generiche
|
// Operazioni di sostituzione
|
||||||
$report = str_replace('$body$', $body, $report);
|
include $docroot.'/templates/pdfgen_variables.php';
|
||||||
$report = str_replace('$footer$', $footer, $report);
|
|
||||||
|
|
||||||
$report = str_replace('$font_size$', $font_size, $report);
|
|
||||||
$report = str_replace('$body_table_params$', $body_table_params, $report);
|
|
||||||
|
|
||||||
$report = str_replace('$docroot$', $docroot, $report);
|
$report = str_replace('$docroot$', $docroot, $report);
|
||||||
$report = str_replace('$rootdir$', $rootdir, $report);
|
$report = str_replace('$rootdir$', $rootdir, $report);
|
||||||
|
@ -84,10 +117,29 @@ $mode = !empty($filename) ? 'F' : 'I';
|
||||||
$filename = !empty($filename) ? $filename : sanitizeFilename($report_name);
|
$filename = !empty($filename) ? $filename : sanitizeFilename($report_name);
|
||||||
$title = basename($filename);
|
$title = basename($filename);
|
||||||
|
|
||||||
// HTML
|
if (file_exists($docroot.'/templates/'.$ptype.'/init.php')) {
|
||||||
$html = (get_var('Formato report') == 'html');
|
$styles = [
|
||||||
|
'templates/base/bootstrap.css',
|
||||||
|
'templates/base/style.css',
|
||||||
|
];
|
||||||
|
|
||||||
try {
|
$mpdf = new mPDF('utf-8', $settings['dimension'], $settings['font-size'], '', 12, 12, $settings['header'], $settings['footer'], 9, 9, $settings['orientation']);
|
||||||
|
$mpdf->SetHTMLFooter($foot);
|
||||||
|
$mpdf->SetHTMLHeader($head);
|
||||||
|
|
||||||
|
$mpdf->SetTitle($title);
|
||||||
|
|
||||||
|
foreach ($styles as $value) {
|
||||||
|
$mpdf->WriteHTML(file_get_contents(__DIR__.'/'.$value), 1);
|
||||||
|
}
|
||||||
|
$mpdf->WriteHTML($report);
|
||||||
|
|
||||||
|
$mpdf->Output($filename, $mode);
|
||||||
|
} else {
|
||||||
|
// HTML
|
||||||
|
$html = (get_var('Formato report') == 'html');
|
||||||
|
|
||||||
|
try {
|
||||||
ob_end_clean();
|
ob_end_clean();
|
||||||
$html2pdf = new HTML2PDF($orientation, 'A4', 'it', true, 'UTF-8');
|
$html2pdf = new HTML2PDF($orientation, 'A4', 'it', true, 'UTF-8');
|
||||||
|
|
||||||
|
@ -95,7 +147,8 @@ try {
|
||||||
$html2pdf->pdf->setTitle($title);
|
$html2pdf->pdf->setTitle($title);
|
||||||
|
|
||||||
$html2pdf->output($filename, $mode);
|
$html2pdf->output($filename, $mode);
|
||||||
} catch (HTML2PDF_exception $e) {
|
} catch (HTML2PDF_exception $e) {
|
||||||
echo $e;
|
echo $e;
|
||||||
exit();
|
exit();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -56,19 +56,7 @@ if (!empty($info['script'])) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$backto = filter('backto');
|
redirectOperation();
|
||||||
// Scelta del redirect dopo un submit
|
|
||||||
if (!empty($backto)) {
|
|
||||||
$hash = filter('hash');
|
|
||||||
$hash = !starts_with($hash, '#') ? '#'.$hash : $hash;
|
|
||||||
if ($backto == 'record-edit') {
|
|
||||||
redirect($rootdir.'/editor.php?id_module='.$id_module.'&id_record='.$id_parent.$hash);
|
|
||||||
exit();
|
|
||||||
} elseif ($backto == 'record-list') {
|
|
||||||
redirect($rootdir.'/controller.php?id_module='.$id_module.$hash);
|
|
||||||
exit();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
$module = Modules::getModule($info['idmodule_to']);
|
$module = Modules::getModule($info['idmodule_to']);
|
||||||
|
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,9 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
return [
|
||||||
|
'orientation' => 'portrait',
|
||||||
|
'dimension' => 'A4',
|
||||||
|
'font-size' => '11pt',
|
||||||
|
'header' => '40',
|
||||||
|
'footer' => '5',
|
||||||
|
];
|
|
@ -0,0 +1,117 @@
|
||||||
|
body {
|
||||||
|
background-color: white;
|
||||||
|
color: black;
|
||||||
|
}
|
||||||
|
|
||||||
|
.small-bold {
|
||||||
|
font-weight: bold;
|
||||||
|
font-size: 70%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.row,
|
||||||
|
.col-xs-1,
|
||||||
|
.col-sm-1,
|
||||||
|
.col-md-1,
|
||||||
|
.col-lg-1,
|
||||||
|
.col-xs-2,
|
||||||
|
.col-sm-2,
|
||||||
|
.col-md-2,
|
||||||
|
.col-lg-2,
|
||||||
|
.col-xs-3,
|
||||||
|
.col-sm-3,
|
||||||
|
.col-md-3,
|
||||||
|
.col-lg-3,
|
||||||
|
.col-xs-4,
|
||||||
|
.col-sm-4,
|
||||||
|
.col-md-4,
|
||||||
|
.col-lg-4,
|
||||||
|
.col-xs-5,
|
||||||
|
.col-sm-5,
|
||||||
|
.col-md-5,
|
||||||
|
.col-lg-5,
|
||||||
|
.col-xs-6,
|
||||||
|
.col-sm-6,
|
||||||
|
.col-md-6,
|
||||||
|
.col-lg-6,
|
||||||
|
.col-xs-7,
|
||||||
|
.col-sm-7,
|
||||||
|
.col-md-7,
|
||||||
|
.col-lg-7,
|
||||||
|
.col-xs-8,
|
||||||
|
.col-sm-8,
|
||||||
|
.col-md-8,
|
||||||
|
.col-lg-8,
|
||||||
|
.col-xs-9,
|
||||||
|
.col-sm-9,
|
||||||
|
.col-md-9,
|
||||||
|
.col-lg-9,
|
||||||
|
.col-xs-10,
|
||||||
|
.col-sm-10,
|
||||||
|
.col-md-10,
|
||||||
|
.col-lg-10,
|
||||||
|
.col-xs-11,
|
||||||
|
.col-sm-11,
|
||||||
|
.col-md-11,
|
||||||
|
.col-lg-11,
|
||||||
|
.col-xs-12,
|
||||||
|
.col-sm-12,
|
||||||
|
.col-md-12,
|
||||||
|
.col-lg-12 {
|
||||||
|
margin: 0px !important;
|
||||||
|
padding: 0px !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
p {
|
||||||
|
padding: 0px;
|
||||||
|
margin: 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.border-left {
|
||||||
|
border-left: 1px solid #aaa;
|
||||||
|
}
|
||||||
|
|
||||||
|
.border-right {
|
||||||
|
border-right: 1px solid #aaa;
|
||||||
|
}
|
||||||
|
|
||||||
|
.border-top {
|
||||||
|
border-top: 1px solid #aaa;
|
||||||
|
}
|
||||||
|
|
||||||
|
.border-bottom {
|
||||||
|
border-bottom: 1px solid #aaa;
|
||||||
|
}
|
||||||
|
|
||||||
|
.border-full {
|
||||||
|
border: 1px solid #aaa;
|
||||||
|
}
|
||||||
|
|
||||||
|
table {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
table td {
|
||||||
|
vertical-align: top;
|
||||||
|
padding: 4px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#contents td {
|
||||||
|
padding: 4px;
|
||||||
|
white-space: normal;
|
||||||
|
}
|
||||||
|
|
||||||
|
#contents th {
|
||||||
|
border-bottom: 1px solid #aaa;
|
||||||
|
border-right: 1px solid #aaa;
|
||||||
|
background: #ddd;
|
||||||
|
padding: 3px;
|
||||||
|
font-size: 90%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cell-padded {
|
||||||
|
padding: 4px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.bg-default{
|
||||||
|
background-color: #eee;
|
||||||
|
}
|
|
@ -162,7 +162,7 @@ if (sizeof($contratti) > 0) {
|
||||||
$body .= "<br/>\n";
|
$body .= "<br/>\n";
|
||||||
|
|
||||||
// Conteggio articoli utilizzati
|
// Conteggio articoli utilizzati
|
||||||
$query = "SELECT *, (SELECT MIN(orario_inizio) FROM in_interventi_tecnici WHERE idintervento=mg_articoli_interventi.idintervento) AS data_intervento, (SELECT percentuale FROM co_iva WHERE id=mg_articoli_interventi.idiva_vendita) AS prciva_vendita, (SELECT codice FROM mg_articoli WHERE id=idarticolo) AS codice_art, GROUP_CONCAT( CONCAT_WS(lotto, 'Lotto: ', ', '), CONCAT_WS(serial, 'SN: ', ', '), CONCAT_WS(altro, 'Altro: ', '') SEPARATOR '<br/>') AS codice, SUM(qta) AS sumqta FROM `mg_articoli_interventi` GROUP BY idarticolo, idintervento, lotto HAVING idintervento IN(".implode(',', $idinterventi).") AND NOT idarticolo='0' ORDER BY idarticolo ASC";
|
$query = "SELECT *, (SELECT MIN(orario_inizio) FROM in_interventi_tecnici WHERE idintervento=mg_articoli_interventi.idintervento) AS data_intervento, (SELECT percentuale FROM co_iva WHERE id=mg_articoli_interventi.idiva_vendita) AS prciva_vendita, (SELECT codice FROM mg_articoli WHERE id=idarticolo) AS codice_art, (SELECT prc_guadagno FROM mg_listini WHERE id=(SELECT idlistino FROM an_anagrafiche WHERE idanagrafica=(SELECT idanagrafica FROM in_interventi WHERE id=mg_articoli_interventi.idintervento) ) ) AS prc_guadagno, CONCAT_WS(serial, 'SN: ', ', ') AS codice, SUM(qta) AS sumqta FROM `mg_articoli_interventi` JOIN mg_prodotti ON mg_articoli_interventi.idarticolo = mg_prodotti.id_articolo GROUP BY idarticolo, idintervento, lotto HAVING idintervento IN(".implode(',', $idinterventi).") AND NOT idarticolo='0' ORDER BY idarticolo ASC";
|
||||||
$rs2 = $dbo->fetchArray($query);
|
$rs2 = $dbo->fetchArray($query);
|
||||||
|
|
||||||
if (sizeof($rs2) > 0) {
|
if (sizeof($rs2) > 0) {
|
||||||
|
|
|
@ -114,7 +114,7 @@ $sconto = 0.00;
|
||||||
/*
|
/*
|
||||||
Articoli
|
Articoli
|
||||||
*/
|
*/
|
||||||
$q_art = "SELECT *, GROUP_CONCAT( CONCAT_WS(lotto, 'Lotto: ', ', '), CONCAT_WS(serial, 'SN: ', ', '), CONCAT_WS(altro, 'Altro: ', '') SEPARATOR '<br/>') AS codice, SUM(qta) AS sumqta FROM `dt_righe_ddt` GROUP BY idarticolo, idddt, lotto HAVING idddt='$idddt' AND NOT idarticolo='0' ORDER BY idarticolo ASC";
|
$q_art = "SELECT *, CONCAT_WS(serial, 'SN: ', ', ') AS codice, SUM(qta) AS sumqta FROM `dt_righe_ddt` JOIN mg_prodotti ON dt_righe_ddt.idarticolo = mg_prodotti.id_articolo GROUP BY idarticolo, idddt, lotto HAVING idddt='$idddt' AND NOT idarticolo='0' ORDER BY idarticolo ASC";
|
||||||
$rs_art = $dbo->fetchArray($q_art);
|
$rs_art = $dbo->fetchArray($q_art);
|
||||||
$tot_art = sizeof($rs_art);
|
$tot_art = sizeof($rs_art);
|
||||||
$imponibile_art = 0.0;
|
$imponibile_art = 0.0;
|
||||||
|
|
Binary file not shown.
After Width: | Height: | Size: 127 KiB |
Binary file not shown.
After Width: | Height: | Size: 119 KiB |
|
@ -0,0 +1,54 @@
|
||||||
|
<style>
|
||||||
|
<!--
|
||||||
|
.table_values td{
|
||||||
|
padding: 4px;
|
||||||
|
white-space: normal;
|
||||||
|
}
|
||||||
|
|
||||||
|
.table_values th{
|
||||||
|
background: #ddd;
|
||||||
|
padding: 3px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.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;
|
||||||
|
}
|
||||||
|
|
||||||
|
.center{
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.b-right{ border-right:1px solid #aaa; }
|
||||||
|
.b-left{ border-left:1px solid #aaa; }
|
||||||
|
.b-top{ border-top:1px solid #aaa; }
|
||||||
|
.b-bottom{ border-bottom:1px solid #aaa; }
|
||||||
|
|
||||||
|
.cell-padded{
|
||||||
|
padding: 4px;
|
||||||
|
}
|
||||||
|
#contents td{
|
||||||
|
font-size: 11px;
|
||||||
|
}
|
||||||
|
-->
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<page backimg="$docroot$/templates/ddt/$img_sfondo$" backtop="90mm" backbottom="75mm" backleft="3mm" backright="5mm" footer="" style="font-size: $font_size$">
|
||||||
|
$body$
|
||||||
|
</page>
|
|
@ -0,0 +1,227 @@
|
||||||
|
<page_header>
|
||||||
|
|
||||||
|
<br/>
|
||||||
|
<table align="left">
|
||||||
|
<tr>
|
||||||
|
<td style="width:110mm;">
|
||||||
|
<img src="$docroot$/templates/ddt/logo_azienda.jpg" alt="Logo" style="width:80mm;" border="0">
|
||||||
|
</td>
|
||||||
|
<td style="width:110mm;">
|
||||||
|
<p align='left' style='margin:15px 9px;'>
|
||||||
|
<b>$f_ragionesociale$</b><br/>
|
||||||
|
$f_indirizzo$
|
||||||
|
$f_citta$
|
||||||
|
$f_piva$
|
||||||
|
$f_codicefiscale$
|
||||||
|
$f_capsoc$
|
||||||
|
$f_telefono$
|
||||||
|
</p>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<br/><br/>
|
||||||
|
|
||||||
|
<table align="center" style="font-size:11px;">
|
||||||
|
<tr>
|
||||||
|
<!-- Dati Fattura -->
|
||||||
|
<td cellspacing="0" cellpadding="0" valign="top">
|
||||||
|
|
||||||
|
<div style="text-align:center; width:105mm; height:5mm; font-size:14px;">
|
||||||
|
<b>$tipo_doc$</b><br>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<table cellspacing="0" style="table-layout:fixed;">
|
||||||
|
<col width="27"><col width="35"><col width="21.3"><col width="12">
|
||||||
|
<tr>
|
||||||
|
<td valign="top" class="full_cell1" align="center" style="width:27mm;">
|
||||||
|
<small><small><b>NR. DOCUMENTO</b></small></small><br>
|
||||||
|
$numero_doc$
|
||||||
|
</td>
|
||||||
|
<td class="full_cell" align="center" style="width:35mm;">
|
||||||
|
<small><small><b>DATA DOCUMENTO</b></small></small><br>
|
||||||
|
$data$
|
||||||
|
</td>
|
||||||
|
<td class="full_cell" align="center" style="width:21.3mm;">
|
||||||
|
<small><small><b>CLIENTE</b></small></small><br>
|
||||||
|
$c_codice$
|
||||||
|
</td>
|
||||||
|
<td class="full_cell" align="center" style="width:12mm;">
|
||||||
|
<small><small><b>FOGLIO</b></small></small><br>
|
||||||
|
[[page_cu]]/[[page_nb]]
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<tr><td class="first_cell" colspan="4">
|
||||||
|
<div style="height:8mm; overflow:hidden;">
|
||||||
|
<table style="width:100%;" cellspacing="0" cellpadding="0">
|
||||||
|
<tr><td style="width:50%;">
|
||||||
|
<small><small><b>PARTITA IVA</b></small></small><br>
|
||||||
|
$c_piva$
|
||||||
|
</td>
|
||||||
|
|
||||||
|
<td style="width:50%;">
|
||||||
|
<small><small><b>CODICE FISCALE</b></small></small><br>
|
||||||
|
$c_codicefiscale$
|
||||||
|
</td></tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</td></tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td class="first_cell" colspan="4">
|
||||||
|
<div style="height:8.5mm; overflow:hidden;">
|
||||||
|
<small><small><b>PAGAMENTO</b></small></small><br>
|
||||||
|
$pagamento$
|
||||||
|
</div>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td class="first_cell" colspan="4">
|
||||||
|
<div style="height:8.5mm; overflow:hidden;">
|
||||||
|
<small><small><b> </b></small></small><br>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
|
||||||
|
<td style="width:2mm;"></td>
|
||||||
|
|
||||||
|
|
||||||
|
<td style="width:83mm;" valign="top">
|
||||||
|
<div style="height:5mm;">
|
||||||
|
<br>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Intestazione cliente -->
|
||||||
|
<table cellspacing="0">
|
||||||
|
<tr>
|
||||||
|
<!-- cliente -->
|
||||||
|
<td style="width:80mm; height:16mm; font-size:9pt; border:1px solid #aaa;" valign="top">
|
||||||
|
<small><small><b>SPETT.LE</b></small></small><br/>
|
||||||
|
<div style="padding:1mm;">
|
||||||
|
$c_ragionesociale$
|
||||||
|
$c_indirizzo$
|
||||||
|
$c_citta$
|
||||||
|
</div>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<!-- Destinazione cliente -->
|
||||||
|
<td style="height:15mm; font-size:9pt; border-left:1px solid #aaa; border-right:1px solid #aaa; border-bottom:1px solid #aaa;" valign="top">
|
||||||
|
<small><small><b>DESTINAZIONE DIVERSA</b></small></small><br/>
|
||||||
|
<div style="padding:1mm;">
|
||||||
|
$c_destinazione$
|
||||||
|
</div>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<br>
|
||||||
|
</page_header>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- Footer -->
|
||||||
|
<page_footer>
|
||||||
|
<table style='margin-left:3mm; border:1px solid #aaa; border-bottom:none;' cellspacing='0'>
|
||||||
|
$footer$
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<table style='margin-left:3mm; border:1px solid #aaa; border-bottom:none;' class='table_values' cellspacing='0'>
|
||||||
|
<col width="227.5"><col width="228"><col width="228">
|
||||||
|
<tr>
|
||||||
|
<th class="b-bottom b-right" valign="top">
|
||||||
|
<small><small><b>ASPETTO BENI</b></small></small>
|
||||||
|
</th>
|
||||||
|
|
||||||
|
<th class="b-bottom b-right" valign="top">
|
||||||
|
<small><small><b>CAUSALE TRASPORTO</b></small></small>
|
||||||
|
</th>
|
||||||
|
|
||||||
|
<th class="b-bottom" valign="top">
|
||||||
|
<small><small><b>PORTO</b></small></small>
|
||||||
|
</th>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td valign="top" class="cell-padded b-right">
|
||||||
|
$aspettobeni$
|
||||||
|
</td>
|
||||||
|
<td valign="top" class="cell-padded b-right">
|
||||||
|
$causalet$
|
||||||
|
</td>
|
||||||
|
<td valign="top" class="cell-padded">
|
||||||
|
$porto$
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
|
||||||
|
<table style='margin-left:3mm; border:1px solid #aaa; border-bottom:none;' class='table_values' cellspacing='0'>
|
||||||
|
<col width="227.5"><col width="228"><col width="228">
|
||||||
|
<tr>
|
||||||
|
<th class="b-bottom b-right" valign="top">
|
||||||
|
<small><small><b>N<sup>o</sup> COLLI</b></small></small>
|
||||||
|
</th>
|
||||||
|
|
||||||
|
<th class="b-bottom b-right" valign="top">
|
||||||
|
<small><small><b>TIPO DI SPEDIZIONE</b></small></small>
|
||||||
|
</th>
|
||||||
|
|
||||||
|
<th class="b-bottom" valign="top">
|
||||||
|
<small><small><b>VETTORE</b></small></small>
|
||||||
|
</th>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td valign="top" class="cell-padded b-right">
|
||||||
|
$n_colli$
|
||||||
|
</td>
|
||||||
|
<td valign="top" class="cell-padded b-right">
|
||||||
|
$spedizione$
|
||||||
|
</td>
|
||||||
|
<td valign="top" class="cell-padded">
|
||||||
|
$vettore$
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<table style='margin-left:3mm; border:1px solid #aaa;' class='table_values' cellspacing='0'>
|
||||||
|
<col width="227.5"><col width="228"><col width="228">
|
||||||
|
<tr>
|
||||||
|
<th class="b-bottom b-right" valign="top">
|
||||||
|
<small><small><b>FIRMA CONDUCENTE</b></small></small>
|
||||||
|
</th>
|
||||||
|
|
||||||
|
<th class="b-bottom b-right" valign="top">
|
||||||
|
<small><small><b>FIRMA VETTORE</b></small></small>
|
||||||
|
</th>
|
||||||
|
|
||||||
|
<th class="b-bottom" valign="top">
|
||||||
|
<small><small><b>FIRMA DESTINATARIO</b></small></small>
|
||||||
|
</th>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td valign="top" class="cell-padded b-right">
|
||||||
|
<br> <br>
|
||||||
|
</td>
|
||||||
|
<td valign="top" class="cell-padded b-right">
|
||||||
|
<br> <br>
|
||||||
|
</td>
|
||||||
|
<td valign="top" class="cell-padded">
|
||||||
|
<br> <br>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</page_footer>
|
Binary file not shown.
After Width: | Height: | Size: 21 KiB |
|
@ -0,0 +1,385 @@
|
||||||
|
<?php
|
||||||
|
$idddt = save($_GET['idddt']);
|
||||||
|
$iva_generica = '';
|
||||||
|
$n_rows = 0;
|
||||||
|
$words4row = 45;
|
||||||
|
|
||||||
|
//Lettura tipo ddt
|
||||||
|
$q = "SELECT n_colli, (SELECT dir FROM dt_tipiddt WHERE id=idtipoddt) AS dir, (SELECT descrizione FROM dt_causalet WHERE id=idcausalet) AS causalet, (SELECT descrizione FROM dt_porto WHERE id=idporto) AS porto, (SELECT descrizione FROM dt_aspettobeni WHERE id=idaspettobeni) AS aspettobeni, (SELECT descrizione FROM dt_spedizione WHERE id=idspedizione) AS spedizione, (SELECT ragione_sociale FROM an_anagrafiche WHERE idanagrafica=idvettore) AS vettore FROM dt_ddt WHERE id=\"".$idddt."\"";
|
||||||
|
$rs = $dbo->fetchArray($q);
|
||||||
|
$aspettobeni = $rs[0]['aspettobeni'];
|
||||||
|
$causalet = $rs[0]['causalet'];
|
||||||
|
$porto = $rs[0]['porto'];
|
||||||
|
$n_colli = $rs[0]['n_colli'];
|
||||||
|
if($n_colli=="0") $n_colli = "";
|
||||||
|
$spedizione = $rs[0]['spedizione'];
|
||||||
|
$vettore = $rs[0]['vettore'];
|
||||||
|
|
||||||
|
if( $rs[0]['dir']=='entrata' )
|
||||||
|
$nome_modulo = "Ddt di vendita";
|
||||||
|
else
|
||||||
|
$nome_modulo = "Ddt di acquisto";
|
||||||
|
include_once( $docroot."/lib/permissions_check.php" );
|
||||||
|
include_once( $docroot."/modules/ddt/modutil.php" );
|
||||||
|
|
||||||
|
$additional_where[$nome_modulo] = str_replace( "|idanagrafica|", "'".$user_idanagrafica."'", $additional_where[$nome_modulo] );
|
||||||
|
|
||||||
|
$mostra_prezzi = get_var("Stampa i prezzi sui ddt");
|
||||||
|
|
||||||
|
|
||||||
|
//Lettura info fattura
|
||||||
|
$q = "SELECT *, (SELECT descrizione FROM dt_tipiddt WHERE id=idtipoddt) AS tipo_doc, (SELECT dir FROM dt_tipiddt WHERE id=idtipoddt) AS dir FROM dt_ddt WHERE id=\"".$idddt."\" ".$additional_where[$nome_modulo];
|
||||||
|
$rs = $dbo->fetchArray($q);
|
||||||
|
$tipo_doc = $rs[0]['tipo_doc'];
|
||||||
|
$idcliente = $rs[0]['idanagrafica'];
|
||||||
|
//$idsede = $rs[0]['idsede'];
|
||||||
|
( $rs[0]['numero_esterno']!='' ) ? $numero=$rs[0]['numero_esterno'] : $numero=$rs[0]['numero'];
|
||||||
|
|
||||||
|
if( $rs[0]['numero_esterno']=='' ){
|
||||||
|
$numero = "pro-forma ".$numero;
|
||||||
|
$tipo_doc = "DDT PRO-FORMA";
|
||||||
|
}
|
||||||
|
|
||||||
|
//Lettura righe ddt
|
||||||
|
$q2 = "SELECT * FROM dt_righe_ddt INNER JOIN dt_ddt ON dt_righe_ddt.idddt=dt_ddt.id WHERE idddt='$idddt' ".$additional_where[$nome_modulo];
|
||||||
|
$righe = $dbo->fetchArray( $q2 );
|
||||||
|
|
||||||
|
//carica report html
|
||||||
|
$report = file_get_contents ($docroot."/templates/ddt/ddt.html");
|
||||||
|
$body = file_get_contents ($docroot."/templates/ddt/ddt_body.html");
|
||||||
|
|
||||||
|
if( !($idcliente == $user_idanagrafica || $_SESSION['is_admin']) )
|
||||||
|
die("Non hai i permessi per questa stampa!");
|
||||||
|
|
||||||
|
include_once( "pdfgen_variables.php" );
|
||||||
|
// $body = str_replace( "P.Iva: ".$c_piva, $c_piva, $body );
|
||||||
|
// $body = str_replace( "P.Iva/C.F.: ".$c_piva, $c_piva, $body );
|
||||||
|
|
||||||
|
$body = str_replace( '$tipo_doc$', strtoupper($tipo_doc), $body );
|
||||||
|
$body = str_replace( '$numero_doc$', $numero, $body );
|
||||||
|
$body = str_replace( '$data$', date( "d/m/Y", strtotime($rs[0]['data']) ), $body );
|
||||||
|
$body = str_replace( '$pagamento$', $rs[0]['tipo_pagamento'], $body );
|
||||||
|
$body = str_replace( '$c_banca_appoggio$', " ", $body );
|
||||||
|
|
||||||
|
if($mostra_prezzi):
|
||||||
|
$report = str_replace( '$img_sfondo$', "bg_ddt.jpg", $report );
|
||||||
|
else:
|
||||||
|
$report = str_replace( '$img_sfondo$', "bg_ddt_noprezzi.jpg", $report );
|
||||||
|
endif;
|
||||||
|
|
||||||
|
//Leggo i dati della destinazione (se 0=sede legale, se!=altra sede da leggere da tabella an_sedi)
|
||||||
|
$destinazione = '';
|
||||||
|
if( $rs[0]['idsede']==0 ){
|
||||||
|
|
||||||
|
$destinazione = '';
|
||||||
|
|
||||||
|
} else {
|
||||||
|
$queryd = "SELECT (SELECT codice FROM an_anagrafiche WHERE idanagrafica=an_sedi.idanagrafica) AS codice, (SELECT ragione_sociale FROM an_anagrafiche WHERE idanagrafica=an_sedi.idanagrafica) AS ragione_sociale, indirizzo, indirizzo2, cap, citta, provincia, piva, codice_fiscale FROM an_sedi WHERE idanagrafica='".$idcliente."' AND id='".$rs[0]['idsede']."'";
|
||||||
|
$rsd = $dbo->fetchArray($queryd);
|
||||||
|
|
||||||
|
if( $rsd[0]['indirizzo']!='' )
|
||||||
|
$destinazione .= $rsd[0]['indirizzo']."<br/>\n";
|
||||||
|
if( $rsd[0]['indirizzo2']!='' )
|
||||||
|
$destinazione .= $rsd[0]['indirizzo2']."<br/>\n";
|
||||||
|
if( $rsd[0]['cap']!='' )
|
||||||
|
$destinazione .= $rsd[0]['cap']." ";
|
||||||
|
if( $rsd[0]['citta']!='' )
|
||||||
|
$destinazione .= $rsd[0]['citta'];
|
||||||
|
if( $rsd[0]['provincia']!='' )
|
||||||
|
$destinazione .= " (".$rsd[0]['provincia'].")\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
$body = str_replace( '$c_destinazione$', $destinazione, $body );
|
||||||
|
|
||||||
|
//Campi finali
|
||||||
|
$body = str_replace( '$aspettobeni$', $aspettobeni, $body );
|
||||||
|
$body = str_replace( '$causalet$', $causalet, $body );
|
||||||
|
$body = str_replace( '$porto$', $porto, $body );
|
||||||
|
$body = str_replace( '$n_colli$', $n_colli, $body );
|
||||||
|
$body = str_replace( '$spedizione$', $spedizione, $body );
|
||||||
|
$body = str_replace( '$vettore$', $vettore, $body );
|
||||||
|
|
||||||
|
$v_iva = '';
|
||||||
|
$v_totale = '';
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//Intestazione tabella per righe
|
||||||
|
$body .= "<table class='table_values' cellspacing='0' style='table-layout:fixed;' id='contents'>\n";
|
||||||
|
|
||||||
|
if($mostra_prezzi):
|
||||||
|
$body .= "<col width='298'><col width='57'><col width='81'><col width='81'><col width='81'><col width='43'>\n";
|
||||||
|
else:
|
||||||
|
$body .= "<col width='635'><col width='70'>\n";
|
||||||
|
endif;
|
||||||
|
|
||||||
|
$body .= "<thead>\n";
|
||||||
|
$body .= "<tr>\n";
|
||||||
|
$body .= "<th class='b-top b-right b-bottom b-left'><small>DESCRIZIONE</small></th>\n";
|
||||||
|
$body .= "<th align='center' class='b-top b-right b-bottom'><small>Q.TÀ</small></th>\n";
|
||||||
|
if($mostra_prezzi):
|
||||||
|
$body .= "<th align='center' class='b-top b-right b-bottom'><small>PREZZO U.</small></th>\n";
|
||||||
|
$body .= "<th align='center' class='b-top b-right b-bottom'><small>IMPORTO</small></th>\n";
|
||||||
|
$body .= "<th align='center' class='b-top b-right b-bottom'><small>SCONTO</small></th>\n";
|
||||||
|
$body .= "<th align='center' class='b-top b-right b-bottom'><small>IVA</small></th>\n";
|
||||||
|
endif;
|
||||||
|
$body .= "</tr>\n";
|
||||||
|
$body .= "</thead>\n";
|
||||||
|
|
||||||
|
$body .= "<tbody>\n";
|
||||||
|
|
||||||
|
//Mostro le righe del ddt
|
||||||
|
$totale_ddt = 0.00;
|
||||||
|
$totale_imponibile = 0.00;
|
||||||
|
$totale_iva = 0.00;
|
||||||
|
$sconto = 0.00;
|
||||||
|
$sconto_generico = 0.00;
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
Righe
|
||||||
|
*/
|
||||||
|
$q_gen = "SELECT *, (SELECT percentuale FROM co_iva WHERE id=idiva) AS perc_iva FROM `dt_righe_ddt` WHERE idddt='$idddt'";
|
||||||
|
$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<sizeof($rs_gen); $i++ ){
|
||||||
|
$descrizione = $rs_gen[$i]['descrizione'];
|
||||||
|
$qta = $rs_gen[$i]['qta'];
|
||||||
|
$subtot = $rs_gen[$i]['subtotale']/$rs_gen[$i]['qta'];
|
||||||
|
$subtotale = $rs_gen[$i]['subtotale'];
|
||||||
|
$sconto = $rs_gen[$i]['sconto'];
|
||||||
|
$iva = $rs_gen[$i]['iva'];
|
||||||
|
|
||||||
|
//Se c'è un barcode provo a proseguire il loop per accorpare eventuali barcode dello stesso articolo
|
||||||
|
if( $rs_gen[$i]['barcode'] != '' ){
|
||||||
|
$descrizione .= "\n".$rs_gen[$i]['barcode'];
|
||||||
|
|
||||||
|
while( $rs_gen[$i+1]['idarticolo'] == $rs_gen[$i]['idarticolo'] && $rs_gen[$i+1]['barcode'] != '' ){
|
||||||
|
$i++;
|
||||||
|
|
||||||
|
if( $rs_gen[$i]['barcode'] != '' ){
|
||||||
|
$descrizione .= ", ".$rs_gen[$i]['barcode'];
|
||||||
|
}
|
||||||
|
|
||||||
|
$qta += $rs_gen[$i]['qta'];
|
||||||
|
$subtot += $rs_gen[$i]['subtotale']/$rs_gen[$i]['qta'];
|
||||||
|
$subtotale += $rs_gen[$i]['subtotale'];
|
||||||
|
$sconto += $rs_gen[$i]['sconto'];
|
||||||
|
$iva += $rs_gen[$i]['iva'];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$descrizione = rtrim( $descrizione, "," );
|
||||||
|
|
||||||
|
|
||||||
|
//Calcolo quanti a capo ci sono
|
||||||
|
$righe = explode( "\n", $descrizione );
|
||||||
|
|
||||||
|
for( $r=0; $r<sizeof($righe); $r++ ){
|
||||||
|
if( $r == 0 ){
|
||||||
|
$n_rows += ceil( ceil( strlen($righe[$r])/$words4row )*4.1 );
|
||||||
|
} else {
|
||||||
|
$n_rows += ceil( ceil( strlen($righe[$r])/$words4row )*2.9 );
|
||||||
|
}
|
||||||
|
|
||||||
|
$n++;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if( $rs_gen[$i]['descrizione'] == 'SCONTO' ){
|
||||||
|
$sconto_generico = $rs_gen[$i]['subtotale'];
|
||||||
|
$iva_gen += $rs_gen[$i]['iva'];
|
||||||
|
}
|
||||||
|
|
||||||
|
else{
|
||||||
|
$body .= "<tr><td class='' valign='top'>\n";
|
||||||
|
$body .= nl2br( $descrizione );
|
||||||
|
|
||||||
|
//Aggiunta riferimento a ordine
|
||||||
|
if( $rs_gen[$i]['idordine']!='0' ){
|
||||||
|
$rso = $dbo->fetchArray("SELECT numero, numero_esterno, data FROM or_ordini WHERE id=\"".$rs_gen[$i]['idordine']."\"");
|
||||||
|
( $rso[0]['numero_esterno']!='' ) ? $numero=$rso[0]['numero_esterno'] : $numero=$rso[0]['numero'];
|
||||||
|
$body .= "<br/><small>Rif. ordine n<sup>o</sup>".$numero." del ".date("d/m/Y", strtotime($rso[0]['data']) )."</small>";
|
||||||
|
}
|
||||||
|
|
||||||
|
$body .= "</td>\n";
|
||||||
|
|
||||||
|
$body .= "<td class='center' valign='top'>\n";
|
||||||
|
$body .= number_format($qta, 2, ",", "")."\n";
|
||||||
|
$body .= "</td>\n";
|
||||||
|
|
||||||
|
/*
|
||||||
|
$body .= "<td class='center b-right' valign='top'>\n";
|
||||||
|
$body .= $rs_gen[$i]['um']."\n";
|
||||||
|
$body .= "</td>\n";
|
||||||
|
*/
|
||||||
|
|
||||||
|
if($mostra_prezzi):
|
||||||
|
$body .= "<td align='right' class='' valign='top'>\n";
|
||||||
|
$body .= number_format( $subtotale/$qta, 2, ",", "" )." €\n";
|
||||||
|
$body .= "</td>\n";
|
||||||
|
|
||||||
|
//Imponibile
|
||||||
|
$body .= "<td align='right' class='' valign='top'>\n";
|
||||||
|
$subtot = $subtotale;
|
||||||
|
$body .= number_format( $subtot, 2, ",", "." )." €\n";
|
||||||
|
|
||||||
|
/*
|
||||||
|
if( $rs_gen[$i]['sconto']>0 ){
|
||||||
|
$body .= "<br/>\n<small style='color:#555;'>- sconto ".number_format( $rs_gen[$i]['sconto'], 2, ",", "." )." €</small>\n";
|
||||||
|
$tot_gen++;
|
||||||
|
}*/
|
||||||
|
|
||||||
|
$body .= "</td>\n";
|
||||||
|
|
||||||
|
|
||||||
|
//Sconto
|
||||||
|
$body .= "<td align='right' class='' valign='top'>\n";
|
||||||
|
if( $rs_gen[$i]['scontoperc'] > 0 ){
|
||||||
|
$body .= "(".$rs_gen[$i]['scontoperc']."%) ";
|
||||||
|
}
|
||||||
|
if( $rs_gen[$i]['sconto'] > 0 ){
|
||||||
|
$body .= " ".number_format( $rs_gen[$i]['sconto'], 2, ",", "." )." €\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
$body .= "</td>\n";
|
||||||
|
|
||||||
|
|
||||||
|
//Iva
|
||||||
|
$body .= "<td align='center' valign='top'>\n";
|
||||||
|
|
||||||
|
if( $rs_gen[$i]['perc_iva'] > 0 ){
|
||||||
|
$body .= " ".intval($rs_gen[$i]['perc_iva'])."%\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
$body .= "</td>\n";
|
||||||
|
endif;
|
||||||
|
$body .= "</tr>\n";
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
$imponibile_gen += $subtotale;
|
||||||
|
$iva_gen += $iva;
|
||||||
|
$sconto += $sconto;
|
||||||
|
|
||||||
|
if( $rs_gen[$i]['perc_iva'] > 0 ){
|
||||||
|
$iva_generica = $rs_gen[$i]['perc_iva'];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$imponibile_ddt += $imponibile_gen;
|
||||||
|
$totale_iva += $iva_gen;
|
||||||
|
$totale_ddt += $imponibile_gen;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
$body .= "</tbody>\n";
|
||||||
|
$body .= "</table><br/>\n";
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
NOTE
|
||||||
|
*/
|
||||||
|
/*
|
||||||
|
$body .= "<table style='margin-left:-0.5mm;'>\n";
|
||||||
|
$body .= " <tr><td style='width:193.5mm; height:20mm; border:1px solid #aaa;' valign='top'>\n";
|
||||||
|
$body .= " <small><b>NOTE</b></small><br/>\n";
|
||||||
|
$body .= " <div style='padding:3mm;'>\n";
|
||||||
|
$body .= " ".nl2br( $rs[0]['note'] )."\n";
|
||||||
|
$body .= " </div>\n";
|
||||||
|
$body .= " </td></tr>\n";
|
||||||
|
$body .= "</table>\n";
|
||||||
|
*/
|
||||||
|
|
||||||
|
$imponibile_ddt -= $sconto;
|
||||||
|
$totale_ddt = $totale_ddt - $sconto + $totale_iva;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
SCADENZE | TOTALI
|
||||||
|
*/
|
||||||
|
//TABELLA PRINCIPALE
|
||||||
|
|
||||||
|
if($mostra_prezzi):
|
||||||
|
//Riga 1
|
||||||
|
$footer = " <tr><td rowspan='7' style='width:159mm;' valign='top' class='b-right'>\n";
|
||||||
|
|
||||||
|
$footer .= " <small><b>NOTE</b></small><br/>\n";
|
||||||
|
$footer .= " ".nl2br( $rs[0]['note'] )."\n";
|
||||||
|
|
||||||
|
$footer .= " </td>\n";
|
||||||
|
$footer .= " <td style='width:33mm;' valign='top' class='b-bottom'>\n";
|
||||||
|
$footer .= " <small><small><b>TOTALE IMPONIBILE</b></small></small>\n";
|
||||||
|
$footer .= " </td></tr>\n";
|
||||||
|
|
||||||
|
//Dati riga 1
|
||||||
|
$footer .= " <tr>\n";
|
||||||
|
|
||||||
|
$footer .= " <td valign='top' style='text-align:right;' class='b-bottom cell-padded'>\n";
|
||||||
|
$footer .= " ".number_format( $imponibile_ddt, 2, ",", "." )." €\n";
|
||||||
|
$footer .= " </td></tr>\n";
|
||||||
|
|
||||||
|
//Riga 2
|
||||||
|
$footer .= " <tr><td style='width:33mm;' valign='top' class='b-bottom'>\n";
|
||||||
|
$footer .= " <small><small><b>TOTALE IMPOSTE</b></small></small>\n";
|
||||||
|
$footer .= " </td></tr>\n";
|
||||||
|
|
||||||
|
$footer .= " <tr><td valign='top' style='text-align:right;' class='b-bottom cell-padded'>\n";
|
||||||
|
$footer .= " ".number_format( $totale_iva, 2, ",", "." )." €\n";
|
||||||
|
$footer .= " </td></tr>\n";
|
||||||
|
|
||||||
|
//Riga 3
|
||||||
|
$footer .= " <tr><td valign='top' class='b-bottom'>\n";
|
||||||
|
$footer .= " <small><small><b>TOTALE DOCUMENTO</b></small></small>\n";
|
||||||
|
$footer .= " </td></tr>\n";
|
||||||
|
|
||||||
|
$footer .= " <tr><td valign='top' class='b-bottom cell-padded' style='border-bottom:none;text-align:right;'>\n";
|
||||||
|
$footer .= " ".number_format( $totale_ddt, 2, ",", "." )." €\n";
|
||||||
|
$footer .= " </td></tr>\n";
|
||||||
|
|
||||||
|
//Riga 4 (opzionale, solo se c'è la ritenuta d'acconto)
|
||||||
|
if( $rs[0]['ritenutaacconto'] > 0 ):
|
||||||
|
$rs2 = $dbo->fetchArray("SELECT percentuale FROM co_ritenutaacconto WHERE id='".$rs[0]['idritenutaacconto']."'");
|
||||||
|
|
||||||
|
$footer .= " <tr><td valign='top' class='b-bottom'>\n";
|
||||||
|
$footer .= " <small><small><b>RITENUTA D'ACCONTO ".intval( $rs2[0]['percentuale'] )."%</b></small></small>\n";
|
||||||
|
$footer .= " </td></tr>\n";
|
||||||
|
|
||||||
|
$footer .= " <tr><td valign='top' style='text-align:right;' class='b-bottom cell-padded'>\n";
|
||||||
|
$footer .= " ".number_format( $rs[0]['ritenutaacconto'], 2, ",", "." )." €\n";
|
||||||
|
$footer .= " </td></tr>\n";
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
$footer .= " <tr><td valign='top' class='b-bottom'>\n";
|
||||||
|
$footer .= " <small><small><b>NETTO A PAGARE</b></small></small>\n";
|
||||||
|
$footer .= " </td></tr>\n";
|
||||||
|
|
||||||
|
$footer .= " <tr><td valign='top' style='text-align:right;' class='cell-padded'>\n";
|
||||||
|
$footer .= " ".number_format( $totale_ddt - $rs[0]['ritenutaacconto'], 2, ",", "." )." €\n";
|
||||||
|
$footer .= " </td></tr>\n";
|
||||||
|
endif;
|
||||||
|
|
||||||
|
else:
|
||||||
|
//Riga 1
|
||||||
|
$footer = " <tr><td style='width:193.5mm;height:30mm;' valign='top' class=''>\n";
|
||||||
|
|
||||||
|
$footer .= " <small><b>NOTE</b></small><br/>\n";
|
||||||
|
$footer .= " ".nl2br( $rs[0]['note'] )."\n";
|
||||||
|
|
||||||
|
$footer .= " </td></tr>\n";
|
||||||
|
|
||||||
|
|
||||||
|
endif;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
$report_name = "ddt_".$numero.".pdf";
|
||||||
|
?>
|
|
@ -0,0 +1,180 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
include_once __DIR__.'/../../core.php';
|
||||||
|
|
||||||
|
$report_name = 'fattura_'.$numero.'.pdf';
|
||||||
|
|
||||||
|
$n_rows = 0;
|
||||||
|
$words4row = 70;
|
||||||
|
|
||||||
|
$v_iva = [];
|
||||||
|
$v_totale = [];
|
||||||
|
|
||||||
|
$totale_documento = 0;
|
||||||
|
$totale_iva = 0;
|
||||||
|
$sconto = 0;
|
||||||
|
$imponibile = 0;
|
||||||
|
$iva = 0;
|
||||||
|
|
||||||
|
// Intestazione tabella per righe
|
||||||
|
echo "
|
||||||
|
<table class='table border-full table-striped' id='contents'>
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th class='text-center' style='width:50%'>".strtoupper(tr('Descrizione'))."</th>
|
||||||
|
<th class='text-center' style='width:10%'>".strtoupper(tr('Q.TÀ'))."</th>
|
||||||
|
<th class='text-center' style='width:7%'>".strtoupper(tr('Um'))."</th>
|
||||||
|
<th class='text-center' style='width:16%'>".strtoupper(tr('Costo unitario'))."</th>
|
||||||
|
<th class='text-center' style='width:20%'>".strtoupper(tr('Importo'))."</th>
|
||||||
|
<th class='text-center' style='width:7%'>".strtoupper(tr('IVA')).'</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
|
||||||
|
<tbody>';
|
||||||
|
|
||||||
|
// RIGHE FATTURA 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 `co_righe_documenti` WHERE iddocumento=".prepare($iddocumento).' ORDER BY `order`');
|
||||||
|
$tot_righe = sizeof($righe);
|
||||||
|
|
||||||
|
foreach ($righe as $i => $riga) {
|
||||||
|
$n_rows += ceil(strlen($riga['descrizione']) / $words4row);
|
||||||
|
|
||||||
|
echo "
|
||||||
|
<tr class='".($i % 2 != 0 ? 'bg-default' : '')."'>
|
||||||
|
<td class='border-right'>
|
||||||
|
".nl2br($riga['descrizione']);
|
||||||
|
|
||||||
|
if (!empty($riga['codice_articolo'])) {
|
||||||
|
echo '
|
||||||
|
<br><small>'.str_replace('_COD_', $riga['codice_articolo'], tr('COD. _COD_')).'</small>';
|
||||||
|
$n_rows += 0.4;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Aggiunta riferimento a ordine
|
||||||
|
if (!empty($riga['idordine'])) {
|
||||||
|
$rso = $dbo->fetchArray('SELECT numero, numero_esterno, data FROM or_ordini WHERE id='.prepare($riga['idordine']));
|
||||||
|
$numero = !empty($rso[0]['numero_esterno']) ? $rso[0]['numero_esterno'] : $rso[0]['numero'];
|
||||||
|
|
||||||
|
echo '
|
||||||
|
<br><small>'.str_replace(['_NUM_', '_DATE_'], [$numero, Translator::dateToLocale($rso[0]['data'])], tr('Rif. ordine n<sup>o</sup>_NUM_ del _DATE_')).'</small>';
|
||||||
|
$n_rows += 0.4;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Aggiunta riferimento a ddt
|
||||||
|
elseif (!empty($riga['idddt'])) {
|
||||||
|
$rso = $dbo->fetchArray('SELECT numero, numero_esterno, data FROM dt_ddt WHERE id='.prepare($riga['idddt']));
|
||||||
|
$numero = !empty($rso[0]['numero_esterno']) ? $rso[0]['numero_esterno'] : $rso[0]['numero'];
|
||||||
|
|
||||||
|
echo '
|
||||||
|
<br><small>'.str_replace(['_NUM_', '_DATE_'], [$numero, Translator::dateToLocale($rso[0]['data'])], tr('Rif. ddt n<sup>o</sup>_NUM_ del _DATE_')).'</small>';
|
||||||
|
$n_rows += 0.4;
|
||||||
|
}
|
||||||
|
echo '
|
||||||
|
</td>';
|
||||||
|
|
||||||
|
echo "
|
||||||
|
<td class='center border-right text-center'>
|
||||||
|
".(empty($riga['qta']) ? '' : Translator::numberToLocale($riga['qta'], 2)).'
|
||||||
|
</td>';
|
||||||
|
|
||||||
|
// Unità di miusura
|
||||||
|
echo "
|
||||||
|
<td class='border-right text-center'>
|
||||||
|
".nl2br(strtoupper($riga['um'])).'
|
||||||
|
</td>';
|
||||||
|
|
||||||
|
// Costo unitario
|
||||||
|
echo "
|
||||||
|
<td class='border-right text-right'>
|
||||||
|
".(empty($riga['qta']) || empty($riga['subtotale']) ? '' : Translator::numberToLocale($riga['subtotale'] / $riga['qta'], 2)).' €
|
||||||
|
</td>';
|
||||||
|
|
||||||
|
// Imponibile
|
||||||
|
echo "
|
||||||
|
<td class='border-right text-right'>
|
||||||
|
".(empty($riga['subtotale']) ? '' : Translator::numberToLocale($riga['subtotale'], 2)).' €';
|
||||||
|
|
||||||
|
if ($riga['sconto'] > 0) {
|
||||||
|
$n_rows += 0.4;
|
||||||
|
echo "
|
||||||
|
<br><small class='help-block'>- sconto ".Translator::numberToLocale($riga['sconto_unitario']).($riga['tipo_sconto'] == 'PRC' ? '%' : ' €').'</small>';
|
||||||
|
}
|
||||||
|
|
||||||
|
echo '
|
||||||
|
</td>';
|
||||||
|
|
||||||
|
// Iva
|
||||||
|
echo "
|
||||||
|
<td class='text-center'>";
|
||||||
|
if (!empty($riga['idiva'])) {
|
||||||
|
echo '
|
||||||
|
'.intval($riga['perc_iva']).'%';
|
||||||
|
}
|
||||||
|
echo '
|
||||||
|
</td>
|
||||||
|
</tr>';
|
||||||
|
|
||||||
|
$imponibile += $riga['subtotale'];
|
||||||
|
$iva += $riga['iva'];
|
||||||
|
$sconto += $riga['sconto'];
|
||||||
|
|
||||||
|
$v_iva[$riga['desc_iva']] += $riga['iva'];
|
||||||
|
$v_totale[$riga['desc_iva']] += $riga['subtotale'] - $riga['sconto'];
|
||||||
|
}
|
||||||
|
|
||||||
|
$imponibile_documento += $imponibile;
|
||||||
|
$totale_iva += $iva;
|
||||||
|
$totale_documento += $imponibile;
|
||||||
|
|
||||||
|
// Aggiungo diciture per condizioni iva particolari
|
||||||
|
if (!empty($v_iva)) {
|
||||||
|
$elenco = [
|
||||||
|
'Reverse charge ex art. 17, comma 6, DPR 633/72' => tr('Operazione soggetta a reverse charge ex art. 17, comma 6, DPR 633/72'),
|
||||||
|
'Esente ex art. 74' => tr('Senza addebito iva ex art. 74 comma 8-9 del DPR 633/72'),
|
||||||
|
];
|
||||||
|
|
||||||
|
$keys = array_keys($v_iva);
|
||||||
|
|
||||||
|
// Controllo se è stata applicata questa tipologia di iva
|
||||||
|
foreach ($elenco as $e => $testo) {
|
||||||
|
if (in_array($e, $keys)) {
|
||||||
|
$n_rows += nl2br($testo) / $words4row;
|
||||||
|
|
||||||
|
echo "
|
||||||
|
<tr>
|
||||||
|
<td class='border-right text-center'>
|
||||||
|
<b>".nl2br($testo)."</b>
|
||||||
|
</td>
|
||||||
|
|
||||||
|
<td class='center border-right'></td>
|
||||||
|
<td class='center border-right'></td>
|
||||||
|
<td class='center border-right'></td>
|
||||||
|
</tr>";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for ($i = (floor($n_rows) % 20); $i < 15; ++$i) {
|
||||||
|
echo '
|
||||||
|
<tr>
|
||||||
|
<td class="border-right"> </td>
|
||||||
|
<td class="border-right"></td>
|
||||||
|
<td class="border-right"></td>
|
||||||
|
<td class="border-right"></td>
|
||||||
|
<td class="border-right"></td>
|
||||||
|
<td class="border-right"></td>
|
||||||
|
</tr>';
|
||||||
|
}
|
||||||
|
echo '
|
||||||
|
</tbody>
|
||||||
|
</table>';
|
||||||
|
|
||||||
|
$imponibile_documento -= $sconto;
|
||||||
|
$totale_documento = $totale_documento - $sconto + $totale_iva;
|
||||||
|
|
||||||
|
if (!empty($rs[0]['note'])) {
|
||||||
|
echo '
|
||||||
|
<br>
|
||||||
|
<p class="small-bold">'.strtoupper(tr('Note')).':</p>
|
||||||
|
<p>'.$rs[0]['note'].'</p>';
|
||||||
|
}
|
|
@ -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>
|
|
|
@ -1,44 +0,0 @@
|
||||||
<page_header>
|
|
||||||
<table $body_table_params$>
|
|
||||||
<!-- Intestazione fornitore -->
|
|
||||||
<tr><td valign="top" style="width:105mm; font-size:8pt; color:#555;">
|
|
||||||
<img src="$docroot$/templates/fatture/logo_azienda.jpg" alt="Logo" border="0" /><br/>
|
|
||||||
$f_ragionesociale$
|
|
||||||
$f_indirizzo$
|
|
||||||
$f_citta$
|
|
||||||
$f_piva$
|
|
||||||
$f_codicefiscale$
|
|
||||||
$f_capsoc$
|
|
||||||
$f_telefono$
|
|
||||||
$f_sitoweb$
|
|
||||||
$f_email$
|
|
||||||
|
|
||||||
</td>
|
|
||||||
|
|
||||||
<!-- Intestazione cliente -->
|
|
||||||
<td valign="top" style="width:95mm; font-size:10pt">
|
|
||||||
Spett.le $c_ragionesociale$
|
|
||||||
$c_indirizzo$
|
|
||||||
$c_citta$
|
|
||||||
$c_piva$
|
|
||||||
$c_codicefiscale$
|
|
||||||
$riferimentosede$
|
|
||||||
</td></tr>
|
|
||||||
|
|
||||||
</table>
|
|
||||||
<br/>
|
|
||||||
</page_header>
|
|
||||||
|
|
||||||
|
|
||||||
<!-- Footer -->
|
|
||||||
<page_footer>
|
|
||||||
<table border="0" style="width:200mm; font-size:7pt; color:#999; border: 0px solid red;">
|
|
||||||
<tr><td style="text-align:center;">
|
|
||||||
$dicitura_fissa_fattura$
|
|
||||||
</td></tr>
|
|
||||||
</table>
|
|
||||||
|
|
||||||
<br>
|
|
||||||
|
|
||||||
$pagination$
|
|
||||||
</page_footer>
|
|
|
@ -0,0 +1,194 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
|
||||||
|
// SCADENZE | TOTALI
|
||||||
|
// TABELLA PRINCIPALE
|
||||||
|
echo "
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<td style='width:158.6mm;' class='border-top border-left'></td>
|
||||||
|
<td style='width:33mm;' class='border-full'>
|
||||||
|
<p class='small-bold'>".strtoupper(tr('Totale imponibile'))."</p>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td rowspan=10 class='border-right border-bottom border-left cell-padded'>";
|
||||||
|
|
||||||
|
// Tabella (scadenze + iva)
|
||||||
|
echo "
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<td style='width:45mm;'>
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<td colspan='2' class='border-bottom'>
|
||||||
|
<p class='small-bold'>".strtoupper(tr('Scadenze pagamenti')).'</p>
|
||||||
|
</td>
|
||||||
|
</tr>';
|
||||||
|
|
||||||
|
// Elenco scadenze
|
||||||
|
$rs2 = $dbo->fetchArray('SELECT * FROM co_scadenziario WHERE iddocumento='.prepare($iddocumento).' ORDER BY `data_emissione` ASC');
|
||||||
|
if (!empty($rs2)) {
|
||||||
|
for ($i = 0; $i < sizeof($rs2); ++$i) {
|
||||||
|
echo "
|
||||||
|
<tr>
|
||||||
|
<td style='width:50%;' class='border-bottom'>
|
||||||
|
<small>".Translator::dateToLocale($rs2[$i]['scadenza'])."</small>
|
||||||
|
</td>
|
||||||
|
<td style='width:50%;' align='right' class='border-bottom'>
|
||||||
|
<small>".Translator::numberToLocale($rs2[$i]['da_pagare'], 2).' €</small>
|
||||||
|
</td>
|
||||||
|
</tr>';
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
echo "
|
||||||
|
<tr>
|
||||||
|
<td style='width:50%;'>
|
||||||
|
|
||||||
|
</td>
|
||||||
|
<td style='width:50%;' align='right'>
|
||||||
|
|
||||||
|
</td>
|
||||||
|
</tr>";
|
||||||
|
}
|
||||||
|
echo '
|
||||||
|
</table>
|
||||||
|
</td>';
|
||||||
|
// Fine elenco scadenze
|
||||||
|
|
||||||
|
// Separatore
|
||||||
|
echo "
|
||||||
|
<td style='width:10mm;'> </td>";
|
||||||
|
|
||||||
|
// Tabella iva
|
||||||
|
echo "
|
||||||
|
<td style='width:75mm;'>";
|
||||||
|
if (!empty($v_iva)) {
|
||||||
|
echo "
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<td style='width:40mm;' class='border-bottom'>
|
||||||
|
<p class='small-bold'>".strtoupper(tr('Aliquota IVA'))."</p>
|
||||||
|
</td>
|
||||||
|
|
||||||
|
<td style='width:20mm;' class='border-bottom text-center'>
|
||||||
|
<p class='small-bold'>".strtoupper(tr('Importo'))."</p>
|
||||||
|
</td>
|
||||||
|
|
||||||
|
<td style='width:20mm;' class='border-bottom text-center'>
|
||||||
|
<p class='small-bold'>".strtoupper(tr('Importo IVA')).'</p>
|
||||||
|
</td>
|
||||||
|
</tr>';
|
||||||
|
|
||||||
|
foreach ($v_iva as $desc_iva => $tot_iva) {
|
||||||
|
if (!empty($desc_iva)) {
|
||||||
|
echo "
|
||||||
|
<tr>
|
||||||
|
<td style='' class='border-bottom'>
|
||||||
|
<small>".$desc_iva."</small>
|
||||||
|
</td>
|
||||||
|
|
||||||
|
<td style='' align='right' class='border-bottom'>
|
||||||
|
<small>".Translator::numberToLocale($v_totale[$desc_iva], 2)." €</small>
|
||||||
|
</td>
|
||||||
|
|
||||||
|
<td style='' align='right' class='border-bottom'>
|
||||||
|
<small>".Translator::numberToLocale($v_iva[$desc_iva], 2).' €</small>
|
||||||
|
</td>
|
||||||
|
</tr>';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
echo '
|
||||||
|
</table>';
|
||||||
|
}
|
||||||
|
|
||||||
|
echo '
|
||||||
|
</td>
|
||||||
|
|
||||||
|
<td style="width:10mm;"> </td>";
|
||||||
|
</tr>';
|
||||||
|
// Fine tabelle iva
|
||||||
|
echo '
|
||||||
|
</table>';
|
||||||
|
// Fine tabella (scadenze + iva)
|
||||||
|
echo '
|
||||||
|
</td>';
|
||||||
|
|
||||||
|
// TOTALE IMPONIBILE
|
||||||
|
echo "
|
||||||
|
<td style='text-align:right;' class='border-bottom border-right cell-padded'>
|
||||||
|
".Translator::numberToLocale($imponibile_documento, 2).' €
|
||||||
|
</td>
|
||||||
|
</tr>';
|
||||||
|
|
||||||
|
// Riga 2
|
||||||
|
echo "
|
||||||
|
<tr>
|
||||||
|
<td style='width:33mm;' class='border-bottom border-right'>
|
||||||
|
<p class='small-bold'>".strtoupper(tr('Totale IVA'))."</p>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td style='text-align:right;' class='border-bottom border-right cell-padded'>
|
||||||
|
".Translator::numberToLocale($totale_iva, 2)." €
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td class='border-bottom border-right'>
|
||||||
|
<p class='small-bold'>".strtoupper(tr('Totale documento'))."</p>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td style='text-align:right;' class='border-bottom border-right cell-padded'>
|
||||||
|
".Translator::numberToLocale($totale_documento, 2).' €
|
||||||
|
</td>
|
||||||
|
</tr>';
|
||||||
|
|
||||||
|
// Riga 4 (opzionale, solo se c'è la ritenuta d'acconto)
|
||||||
|
if ($rs[0]['ritenutaacconto'] != 0) {
|
||||||
|
$rs2 = $dbo->fetchArray('SELECT percentuale FROM co_ritenutaacconto WHERE id=(SELECT idritenutaacconto FROM co_righe_documenti WHERE iddocumento='.prepare($iddocumento).' AND idritenutaacconto!=0 LIMIT 0,1)');
|
||||||
|
|
||||||
|
echo "
|
||||||
|
<tr>
|
||||||
|
<td class='border-bottom b-top'>
|
||||||
|
<p class='small-bold'>".strtoupper(str_replace('_PRC_', $rs2[0]['percentuale'], tr("Ritenuta d'acconto _PRC_%")))."</p>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td style='text-align:right;' class='border-bottom cell-padded'>
|
||||||
|
".Translator::numberToLocale($rs[0]['ritenutaacconto'], 2)." €
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td class='border-bottom'>
|
||||||
|
<p class='small-bold'>".strtoupper(tr('Netto a pagare'))."</p>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td style='text-align:right;' class='cell-padded'>
|
||||||
|
".Translator::numberToLocale($totale_documento - $rs[0]['ritenutaacconto'], 2).' €
|
||||||
|
</td>
|
||||||
|
</tr>';
|
||||||
|
}
|
||||||
|
|
||||||
|
echo '
|
||||||
|
</table>';
|
||||||
|
|
||||||
|
echo '
|
||||||
|
<br>
|
||||||
|
<table style="font-size:7pt; color:#999;">
|
||||||
|
<tr><td style="text-align:center;">
|
||||||
|
$dicitura_fissa_fattura$
|
||||||
|
</td></tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<br>
|
||||||
|
|
||||||
|
$pagination$';
|
|
@ -0,0 +1,92 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
echo '
|
||||||
|
<!-- Intestazione fornitore -->
|
||||||
|
<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$</p>
|
||||||
|
<p>$f_telefono$</p>
|
||||||
|
<p>$f_piva$</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<br>
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
<!-- Dati Fattura -->
|
||||||
|
<div class="col-xs-6">
|
||||||
|
<div class="text-center" style="height:5mm;">
|
||||||
|
<b>$tipo_doc$</b>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<table class="table">
|
||||||
|
<tr>
|
||||||
|
<td valign="top" class="border-full text-center">
|
||||||
|
<p class="small-bold">'.strtoupper(tr('Nr. documento')).'</p>
|
||||||
|
<p>$numero_doc$</p>
|
||||||
|
</td>
|
||||||
|
|
||||||
|
<td class="border-right border-bottom border-top text-center">
|
||||||
|
<p class="small-bold">'.strtoupper(tr('Data documento')).'</p>
|
||||||
|
<p>$data$</p>
|
||||||
|
</td>
|
||||||
|
|
||||||
|
<td class="border-right border-bottom border-top text-center">
|
||||||
|
<p class="small-bold">'.strtoupper(tr('Cliente')).'</p>
|
||||||
|
<p>$c_codice$</p>
|
||||||
|
</td>
|
||||||
|
|
||||||
|
<td class="border-right border-bottom border-top center text-center">
|
||||||
|
<p class="small-bold">'.strtoupper(tr('Foglio')).'</p>
|
||||||
|
<p>{PAGENO}/{nb}</p>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td colspan="2" style="height:10mm;padding-top:2mm;">
|
||||||
|
<p class="small-bold">'.strtoupper(tr('Pagamento')).'</p>
|
||||||
|
<p>$pagamento$</p>
|
||||||
|
|
||||||
|
<br>
|
||||||
|
|
||||||
|
<p class="small-bold">'.tr('IBAN').'</p>
|
||||||
|
<p>$f_codiceiban$</p>
|
||||||
|
</td>
|
||||||
|
<td colspan="2" style="height:10mm;padding-top:2mm;">
|
||||||
|
<p class="small-bold">'.strtoupper(tr('Banca di appoggio')).'</p>
|
||||||
|
<p>$f_appoggiobancario$</p>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-xs-5 col-xs-offset-1">
|
||||||
|
<table class="table" style="width:100%;margin-top:5mm;">
|
||||||
|
<tr>
|
||||||
|
<td class="border-full" style="height:16mm;">
|
||||||
|
<p class="small-bold">'.strtoupper(tr('Spett.le')).'</p>
|
||||||
|
<p>$c_ragionesociale$</p>
|
||||||
|
<p>$c_indirizzo$ $c_citta$</p>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td class="border-right border-bottom border-left">
|
||||||
|
<p class="small-bold">'.strtoupper(tr('Partita IVA')).'</p>
|
||||||
|
<p>$c_piva$</p>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td class="border-right border-bottom border-left">
|
||||||
|
<p class="small-bold">'.strtoupper(tr('Codice fiscale')).'</p>
|
||||||
|
<p>$c_codicefiscale$</p>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</div>';
|
|
@ -0,0 +1,60 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
include_once __DIR__.'/../../core.php';
|
||||||
|
|
||||||
|
// Lettura info fattura
|
||||||
|
$rs = $dbo->fetchArray('SELECT *,
|
||||||
|
(SELECT descrizione FROM co_statidocumento WHERE id=idstatodocumento) AS stato_doc,
|
||||||
|
(SELECT descrizione FROM co_tipidocumento WHERE id=idtipodocumento) AS tipo_doc,
|
||||||
|
(SELECT descrizione FROM co_pagamenti WHERE id=idpagamento) AS tipo_pagamento,
|
||||||
|
(SELECT dir FROM co_tipidocumento WHERE id=idtipodocumento) AS dir
|
||||||
|
FROM co_documenti WHERE id='.prepare($iddocumento));
|
||||||
|
|
||||||
|
$module_name = ($rs[0]['dir'] == 'entrata') ? 'Fatture di vendita' : 'Fatture di acquisto';
|
||||||
|
|
||||||
|
$idcliente = $rs[0]['idanagrafica'];
|
||||||
|
$idsede = $rs[0]['idsede'];
|
||||||
|
|
||||||
|
$tipo_doc = $rs[0]['tipo_doc'];
|
||||||
|
if ($rs[0]['stato_doc'] != 'Bozza') {
|
||||||
|
$numero = !empty($rs[0]['numero_esterno']) ? $rs[0]['numero_esterno'] : $rs[0]['numero'];
|
||||||
|
} else {
|
||||||
|
$tipo_doc = 'Fattura pro forma';
|
||||||
|
$numero = 'PRO-'.$rs[0]['numero'];
|
||||||
|
}
|
||||||
|
|
||||||
|
// Leggo i dati della destinazione (se 0=sede legale, se!=altra sede da leggere da tabella an_sedi)
|
||||||
|
$destinazione = '';
|
||||||
|
if (!empty($rs[0]['idsede'])) {
|
||||||
|
$rsd = $dbo->fetchArray('SELECT (SELECT codice FROM an_anagrafiche WHERE idanagrafica=an_sedi.idanagrafica) AS codice, (SELECT ragione_sociale FROM an_anagrafiche WHERE idanagrafica=an_sedi.idanagrafica) AS ragione_sociale, indirizzo, indirizzo2, cap, citta, provincia, piva, codice_fiscale FROM an_sedi WHERE idanagrafica='.prepare($id_cliente).' AND id='.prepare($rs[0]['idsede']));
|
||||||
|
|
||||||
|
if (!empty($rsd[0]['indirizzo'])) {
|
||||||
|
$destinazione .= $rsd[0]['indirizzo'].'<br/>';
|
||||||
|
}
|
||||||
|
if (!empty($rsd[0]['indirizzo2'])) {
|
||||||
|
$destinazione .= $rsd[0]['indirizzo2'].'<br/>';
|
||||||
|
}
|
||||||
|
if (!empty($rsd[0]['cap'])) {
|
||||||
|
$destinazione .= $rsd[0]['cap'].' ';
|
||||||
|
}
|
||||||
|
if (!empty($rsd[0]['citta'])) {
|
||||||
|
$destinazione .= $rsd[0]['citta'];
|
||||||
|
}
|
||||||
|
if (!empty($rsd[0]['provincia'])) {
|
||||||
|
$destinazione .= ' ('.$rsd[0]['provincia'].')';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Sostituzioni specifiche
|
||||||
|
$replaces = [
|
||||||
|
'tipo_doc' => strtoupper($tipo_doc),
|
||||||
|
'numero_doc' => $numero,
|
||||||
|
'data' => Translator::numberToLocale($rs[0]['data']),
|
||||||
|
'pagamento' => $rs[0]['tipo_pagamento'],
|
||||||
|
'c_destinazione' => $destinazione,
|
||||||
|
];
|
||||||
|
|
||||||
|
// Controllo sui permessi
|
||||||
|
if ($id_cliente != Auth::user()['idanagrafica'] && !Auth::admin()) {
|
||||||
|
die(tr('Non hai i permessi per questa stampa!'));
|
||||||
|
}
|
|
@ -1,466 +0,0 @@
|
||||||
<?php
|
|
||||||
|
|
||||||
include_once __DIR__.'/../../core.php';
|
|
||||||
|
|
||||||
$iddocumento = save($_GET['iddocumento']);
|
|
||||||
|
|
||||||
// Lettura tipo documento
|
|
||||||
$q = 'SELECT (SELECT dir FROM co_tipidocumento WHERE id=idtipodocumento) AS dir FROM co_documenti WHERE id="'.$iddocumento.'"';
|
|
||||||
$rs = $dbo->fetchArray($q);
|
|
||||||
|
|
||||||
if ($rs[0]['dir'] == 'entrata') {
|
|
||||||
$module_name = 'Fatture di vendita';
|
|
||||||
} else {
|
|
||||||
$module_name = 'Fatture di acquisto';
|
|
||||||
}
|
|
||||||
|
|
||||||
$additional_where[$module_name] = str_replace('|idanagrafica|', "'".$user['idanagrafica']."'", $additional_where[$module_name]);
|
|
||||||
|
|
||||||
// Lettura info fattura
|
|
||||||
$q = 'SELECT *, (SELECT descrizione FROM co_tipidocumento WHERE id=idtipodocumento) AS tipo_doc, (SELECT descrizione FROM co_pagamenti WHERE id=idpagamento) AS tipo_pagamento, (SELECT dir FROM co_tipidocumento WHERE id=idtipodocumento) AS dir FROM co_documenti WHERE id="'.$iddocumento.'" '.$additional_where[$module_name];
|
|
||||||
$rs = $dbo->fetchArray($q);
|
|
||||||
$numero_doc = $rs[0]['numero'];
|
|
||||||
$idcliente = $rs[0]['idanagrafica'];
|
|
||||||
(!empty($rs[0]['numero_esterno'])) ? $numero = $rs[0]['numero_esterno'] : $numero = $rs[0]['numero'];
|
|
||||||
|
|
||||||
// Lettura righe documento
|
|
||||||
$q2 = "SELECT * FROM co_righe_documenti INNER JOIN co_documenti ON co_righe_documenti.iddocumento=co_documenti.id WHERE iddocumento='$iddocumento' ".$additional_where[$module_name];
|
|
||||||
$righe = $dbo->fetchArray($q2);
|
|
||||||
|
|
||||||
// carica report html
|
|
||||||
$report = file_get_contents($docroot.'/templates/fatture/fattura.html');
|
|
||||||
$body = file_get_contents($docroot.'/templates/fatture/fattura_body.html');
|
|
||||||
|
|
||||||
include_once $docroot.'/templates/pdfgen_variables.php';
|
|
||||||
|
|
||||||
if (empty($rs[0]['idsede'])) {
|
|
||||||
$body = str_replace('$riferimentosede$', '', $body);
|
|
||||||
} else {
|
|
||||||
$q3 = "SELECT * FROM an_sedi WHERE id='".$rs[0]['idsede']."'";
|
|
||||||
$sede = $dbo->fetchArray($q3);
|
|
||||||
|
|
||||||
$riferimentosede = '<br/>Rif. sede cliente:<br/>'.$sede[0]['nomesede'].'<br/>'.$sede[0]['indirizzo'].'<br/>'.$sede[0]['cap'].' '.$sede[0]['citta'].' ('.$sede[0]['provincia'].')';
|
|
||||||
|
|
||||||
$body = str_replace('$riferimentosede$', $riferimentosede, $body);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Dati generici fattura
|
|
||||||
if ($rs[0]['buono_ordine'] != '') {
|
|
||||||
$width = '165';
|
|
||||||
} else {
|
|
||||||
$width = '228';
|
|
||||||
}
|
|
||||||
|
|
||||||
$body .= "<table class='table_values' border='0' cellspacing='1'>\n";
|
|
||||||
$body .= "<tr>\n";
|
|
||||||
$body .= "<td width='".$width."' class='center'><b>".$rs[0]['tipo_doc']."</b><br/>n<sup>o</sup> $numero</td>\n";
|
|
||||||
$body .= "<td width='".$width."' class='center'><b>Data:</b><br/>".Translator::dateToLocale($rs[0]['data'])."</td>\n";
|
|
||||||
$body .= "<td width='".$width."' class='center'><b>Pagamento:</b><br/>".$rs[0]['tipo_pagamento']."</td>\n";
|
|
||||||
|
|
||||||
if ($rs[0]['buono_ordine']) {
|
|
||||||
$body .= "<td width='".$width."' class='center'><b>Buono d'ordine:</b><br/>".$rs[0]['buono_ordine']."</td>\n";
|
|
||||||
}
|
|
||||||
|
|
||||||
$body .= "</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='280'><col width='50'><col width='40'><col width='90'><col width='60'><col width='98'>\n";
|
|
||||||
$body .= "<thead>\n";
|
|
||||||
$body .= "<tr><th width='280'>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 unitario</th>\n";
|
|
||||||
$body .= "<th width='60' align='center'>Iva</th>\n";
|
|
||||||
$body .= "<th width='98' align='center'>Imponibile</th></tr>\n";
|
|
||||||
$body .= "</thead>\n";
|
|
||||||
|
|
||||||
$body .= "<tbody>\n";
|
|
||||||
|
|
||||||
// Mostro le righe del documento
|
|
||||||
$totale_documento = 0.00;
|
|
||||||
$totale_imponibile = 0.00;
|
|
||||||
$totale_iva = 0.00;
|
|
||||||
$sconto = 0.00;
|
|
||||||
|
|
||||||
/*
|
|
||||||
Righe fattura
|
|
||||||
*/
|
|
||||||
$qr = "SELECT * FROM `co_righe_documenti` WHERE iddocumento='$iddocumento' ORDER BY `order`";
|
|
||||||
$rsr = $dbo->fetchArray($qr);
|
|
||||||
$tot = sizeof($rsr);
|
|
||||||
$imponibile_int = 0.00;
|
|
||||||
$iva_int = 0.00;
|
|
||||||
|
|
||||||
if ($tot > 0) {
|
|
||||||
for ($i = 0; $i < $tot; ++$i) {
|
|
||||||
// Intervento
|
|
||||||
if (!empty($rsr[$i]['idintervento']) && empty($rsr[$i]['idarticolo'])) {
|
|
||||||
$body .= "<tr><td class='first_cell'>\n";
|
|
||||||
$body .= nl2br($rsr[$i]['descrizione'])."\n";
|
|
||||||
$body .= "</td>\n";
|
|
||||||
|
|
||||||
$qta = $rsr[$i]['qta'];
|
|
||||||
($qta == 0) ? $qta = '-' : $qta = Translator::numberToLocale($qta, 2);
|
|
||||||
$body .= "<td class='table_cell center'>\n";
|
|
||||||
$body .= $qta;
|
|
||||||
$body .= "</td>\n";
|
|
||||||
|
|
||||||
($qta == 0) ? $um = '-' : $um = $rsr[$i]['um'];
|
|
||||||
$body .= "<td class='table_cell center'>\n";
|
|
||||||
$body .= $um;
|
|
||||||
$body .= "</td>\n";
|
|
||||||
|
|
||||||
// costo unitario
|
|
||||||
$subtotale = $rsr[$i]['subtotale'] / $rsr[$i]['qta'];
|
|
||||||
($subtotale == 0) ? $subtotale = '-' : $subtotale = Translator::numberToLocale($subtotale, 2).' €';
|
|
||||||
$body .= "<td class='table_cell center'>\n";
|
|
||||||
$body .= $subtotale."\n";
|
|
||||||
$body .= "</td>\n";
|
|
||||||
|
|
||||||
$body .= "<td class='table_cell center'>\n";
|
|
||||||
$iva = $rsr[$i]['iva'];
|
|
||||||
$body .= '<br/>'.Translator::numberToLocale($iva, 2)." €<br/><small style='color:#777;'>".$rsr[$i]['desc_iva']."</small>\n";
|
|
||||||
$body .= "</td>\n";
|
|
||||||
|
|
||||||
$body .= "<td class='table_cell' align='right'>\n";
|
|
||||||
$subtot = $rsr[$i]['subtotale'];
|
|
||||||
$body .= Translator::numberToLocale($subtot, 2)." €\n";
|
|
||||||
if ($rsr[$i]['sconto'] > 0) {
|
|
||||||
$body .= "<br/>\n<small style='color:#555;'>- sconto ".Translator::numberToLocale($rsr[$i]['sconto'], 2)." €</small>\n";
|
|
||||||
}
|
|
||||||
$body .= "</td></tr>\n";
|
|
||||||
|
|
||||||
$imponibile_int += $rsr[$i]['subtotale'];
|
|
||||||
$iva_int += $iva;
|
|
||||||
$sconto += $rsr[$i]['sconto'];
|
|
||||||
}
|
|
||||||
|
|
||||||
// Preventivi
|
|
||||||
elseif ($rsr[$i]['idpreventivo'] != 0) {
|
|
||||||
$body .= "<tr><td class='first_cell'>\n";
|
|
||||||
$body .= nl2br($rsr[$i]['descrizione'])."\n";
|
|
||||||
$body .= "</td>\n";
|
|
||||||
|
|
||||||
$body .= "<td class='table_cell center'>\n";
|
|
||||||
$body .= "1\n";
|
|
||||||
$body .= "</td>\n";
|
|
||||||
|
|
||||||
$body .= "<td class='table_cell center'>\n";
|
|
||||||
$body .= '-';
|
|
||||||
$body .= "</td>\n";
|
|
||||||
|
|
||||||
$body .= "<td class='table_cell center'>\n";
|
|
||||||
$body .= "-\n";
|
|
||||||
$body .= "</td>\n";
|
|
||||||
|
|
||||||
// Iva
|
|
||||||
$body .= "<td class='table_cell center'>\n";
|
|
||||||
$iva = $rsr[$i]['iva'];
|
|
||||||
$body .= '<br/>'.Translator::numberToLocale($iva, 2)." €<br/><small style='color:#777;'>".$rsr[$i]['desc_iva']."</small>\n";
|
|
||||||
$body .= "</td>\n";
|
|
||||||
|
|
||||||
// Imponibile
|
|
||||||
$body .= "<td class='table_cell' align='right'>\n";
|
|
||||||
$subtot = $rsr[$i]['subtotale'];
|
|
||||||
$body .= Translator::numberToLocale($subtot, 2)." €\n";
|
|
||||||
if ($rsr[$i]['sconto'] > 0) {
|
|
||||||
$body .= "<br/>\n<small style='color:#555;'>- sconto ".Translator::numberToLocale($rsr[$i]['sconto'], 2)." €</small>\n";
|
|
||||||
}
|
|
||||||
$body .= "</td></tr>\n";
|
|
||||||
|
|
||||||
$imponibile_pre += $rsr[$i]['subtotale'];
|
|
||||||
$iva_pre += $iva;
|
|
||||||
$sconto += $rsr[$i]['sconto'];
|
|
||||||
}
|
|
||||||
|
|
||||||
// Contratti
|
|
||||||
elseif ($rsr[$i]['idcontratto'] != 0) {
|
|
||||||
$body .= "<tr><td class='first_cell'>\n";
|
|
||||||
$body .= nl2br($rsr[$i]['descrizione'])."\n";
|
|
||||||
$body .= "</td>\n";
|
|
||||||
|
|
||||||
$body .= "<td class='table_cell center'>\n";
|
|
||||||
$body .= "1\n";
|
|
||||||
$body .= "</td>\n";
|
|
||||||
|
|
||||||
$body .= "<td class='table_cell center'>\n";
|
|
||||||
$body .= '-';
|
|
||||||
$body .= "</td>\n";
|
|
||||||
|
|
||||||
$body .= "<td class='table_cell center'>\n";
|
|
||||||
$body .= "-\n";
|
|
||||||
$body .= "</td>\n";
|
|
||||||
|
|
||||||
// Iva
|
|
||||||
$body .= "<td class='table_cell center'>\n";
|
|
||||||
$iva = $rsr[$i]['iva'];
|
|
||||||
$body .= '<br/>'.Translator::numberToLocale($iva, 2)." €<br/><small style='color:#777;'>".$rsr[$i]['desc_iva']."</small>\n";
|
|
||||||
$body .= "</td>\n";
|
|
||||||
|
|
||||||
// Imponibile
|
|
||||||
$body .= "<td class='table_cell' align='right'>\n";
|
|
||||||
$subtot = $rsr[$i]['subtotale'];
|
|
||||||
$body .= Translator::numberToLocale($subtot, 2)." €\n";
|
|
||||||
if ($rsr[$i]['sconto'] > 0) {
|
|
||||||
$body .= "<br/>\n<small style='color:#555;'>- sconto ".Translator::numberToLocale($rsr[$i]['sconto'], 2)." €</small>\n";
|
|
||||||
}
|
|
||||||
$body .= "</td></tr>\n";
|
|
||||||
|
|
||||||
$imponibile_con += $rsr[$i]['subtotale'];
|
|
||||||
$iva_con += $iva;
|
|
||||||
$sconto += $rsr[$i]['sconto'];
|
|
||||||
}
|
|
||||||
|
|
||||||
// Articoli
|
|
||||||
elseif ($rsr[$i]['idarticolo'] != 0) {
|
|
||||||
$body .= "<tr><td class='first_cell'>\n";
|
|
||||||
|
|
||||||
// Immagine articolo
|
|
||||||
$f = pathinfo($rsr[$i]['immagine01']);
|
|
||||||
$img = $docroot.'/modules/magazzino/articoli/images/'.$f['filename'].'_thumb100.'.$f['extension'];
|
|
||||||
if (file_exists($img)) {
|
|
||||||
$body .= '<img src="'.$img."\" alt=\"\" border=\"0\" align=\"left\" style=\"margin:0px 4px 4px 0px; border:1px solid #ccc;\" />\n";
|
|
||||||
}
|
|
||||||
|
|
||||||
$body .= nl2br($rsr[$i]['descrizione']);
|
|
||||||
|
|
||||||
// Aggiunta riferimento a ordine
|
|
||||||
if (!empty($rsr[$i]['idordine'])) {
|
|
||||||
$rso = $dbo->fetchArray('SELECT numero, numero_esterno, data FROM or_ordini WHERE id="'.$rsr[$i]['idordine'].'"');
|
|
||||||
($rso[0]['numero_esterno'] != '') ? $numero = $rso[0]['numero_esterno'] : $numero = $rso[0]['numero'];
|
|
||||||
$body .= '<br/><small>Rif. ordine '.$numero.' del '.Translator::dateToLocale($rso[0]['data']).'</small>';
|
|
||||||
}
|
|
||||||
|
|
||||||
// Aggiunta riferimento a ddt
|
|
||||||
elseif (!empty($rsr[$i]['idddt'])) {
|
|
||||||
$rso = $dbo->fetchArray('SELECT numero, numero_esterno, data FROM dt_ddt WHERE id="'.$rsr[$i]['idddt'].'"');
|
|
||||||
($rso[0]['numero_esterno'] != '') ? $numero = $rso[0]['numero_esterno'] : $numero = $rso[0]['numero'];
|
|
||||||
$body .= '<br/><small>Rif. ddt '.$numero.' del '.Translator::dateToLocale($rso[0]['data']).'</small>';
|
|
||||||
}
|
|
||||||
$body .= "</td>\n";
|
|
||||||
|
|
||||||
$body .= "<td class='table_cell center'>\n";
|
|
||||||
$body .= Translator::numberToLocale($rsr[$i]['qta'], 2);
|
|
||||||
$body .= "</td>\n";
|
|
||||||
|
|
||||||
$body .= "<td class='table_cell center'>\n";
|
|
||||||
$body .= $rsr[$i]['um'];
|
|
||||||
$body .= "</td>\n";
|
|
||||||
|
|
||||||
// costo unitario
|
|
||||||
$body .= "<td class='table_cell center'>\n";
|
|
||||||
$body .= Translator::numberToLocale($rsr[$i]['subtotale'] / $rsr[$i]['qta'], 2)." €\n";
|
|
||||||
$body .= "</td>\n";
|
|
||||||
|
|
||||||
$body .= "<td class='table_cell center'>\n";
|
|
||||||
$iva = $rsr[$i]['iva'];
|
|
||||||
$body .= '<br/>'.Translator::numberToLocale($iva, 2)." €<br/><small style='color:#777;'>".$rsr[$i]['desc_iva']."</small>\n";
|
|
||||||
$body .= "</td>\n";
|
|
||||||
|
|
||||||
$body .= "<td class='table_cell' align='right'>\n";
|
|
||||||
$subtot = $rsr[$i]['subtotale'];
|
|
||||||
$body .= Translator::numberToLocale($subtot, 2)." €\n";
|
|
||||||
if ($rsr[$i]['sconto'] > 0) {
|
|
||||||
$body .= "<br/>\n<small style='color:#555;'>- sconto ".Translator::numberToLocale($rsr[$i]['sconto'], 2)." €</small>\n";
|
|
||||||
}
|
|
||||||
$body .= "</td></tr>\n";
|
|
||||||
|
|
||||||
$imponibile_art += $rsr[$i]['subtotale'];
|
|
||||||
$iva_art += $iva;
|
|
||||||
$sconto += $rsr[$i]['sconto'];
|
|
||||||
}
|
|
||||||
|
|
||||||
// Righe generiche
|
|
||||||
else {
|
|
||||||
$body .= "<tr><td class='first_cell'>\n";
|
|
||||||
$body .= nl2br($rsr[$i]['descrizione']);
|
|
||||||
|
|
||||||
// Aggiunta riferimento a ordine
|
|
||||||
if (!empty($rsr[$i]['idordine'])) {
|
|
||||||
$rso = $dbo->fetchArray('SELECT numero, numero_esterno, data FROM or_ordini WHERE id="'.$rsr[$i]['idordine'].'"');
|
|
||||||
($rso[0]['numero_esterno'] != '') ? $numero = $rso[0]['numero_esterno'] : $numero = $rso[0]['numero'];
|
|
||||||
$body .= '<br/><small>Rif. ordine n<sup>o</sup>'.$numero.' del '.Translator::dateToLocale($rso[0]['data']).'</small>';
|
|
||||||
}
|
|
||||||
|
|
||||||
// Aggiunta riferimento a ddt
|
|
||||||
elseif (!empty($rsr[$i]['idddt'])) {
|
|
||||||
$rso = $dbo->fetchArray('SELECT numero, numero_esterno, data FROM dt_ddt WHERE id="'.$rsr[$i]['idddt'].'"');
|
|
||||||
($rso[0]['numero_esterno'] != '') ? $numero = $rso[0]['numero_esterno'] : $numero = $rso[0]['numero'];
|
|
||||||
$body .= '<br/><small>Rif. ddt n<sup>o</sup>'.$numero.' del '.Translator::dateToLocale($rso[0]['data']).'</small>';
|
|
||||||
}
|
|
||||||
$body .= "</td>\n";
|
|
||||||
|
|
||||||
$body .= "<td class='table_cell center'>\n";
|
|
||||||
$body .= Translator::numberToLocale($rsr[$i]['qta'], 2)."\n";
|
|
||||||
$body .= "</td>\n";
|
|
||||||
|
|
||||||
$body .= "<td class='table_cell center'>\n";
|
|
||||||
$body .= $rsr[$i]['um']."\n";
|
|
||||||
$body .= "</td>\n";
|
|
||||||
|
|
||||||
$body .= "<td class='table_cell center'>\n";
|
|
||||||
$body .= Translator::numberToLocale($rsr[$i]['subtotale'] / $rsr[$i]['qta'], 2)." €\n";
|
|
||||||
$body .= "</td>\n";
|
|
||||||
|
|
||||||
// Iva
|
|
||||||
$body .= "<td class='table_cell center'>\n";
|
|
||||||
$iva = $rsr[$i]['iva'];
|
|
||||||
$body .= '<br/>'.Translator::numberToLocale($iva, 2)." €<br/><small style='color:#777;'>".$rsr[$i]['desc_iva']."</small>\n";
|
|
||||||
$body .= "</td>\n";
|
|
||||||
|
|
||||||
// Imponibile
|
|
||||||
$body .= "<td class='table_cell' align='right'>\n";
|
|
||||||
$subtot = $rsr[$i]['subtotale'];
|
|
||||||
$body .= Translator::numberToLocale($subtot, 2)." €\n";
|
|
||||||
if ($rsr[$i]['sconto'] > 0) {
|
|
||||||
$body .= "<br/>\n<small style='color:#555;'>- sconto ".Translator::numberToLocale($rsr[$i]['sconto'], 2)." €</small>\n";
|
|
||||||
}
|
|
||||||
$body .= "</td></tr>\n";
|
|
||||||
|
|
||||||
$imponibile_gen += $rsr[$i]['subtotale'];
|
|
||||||
$iva_gen += $iva;
|
|
||||||
$sconto += $rsr[$i]['sconto'];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
$imponibile_documento += $imponibile_int;
|
|
||||||
$totale_iva += $iva_int;
|
|
||||||
$totale_documento += $imponibile_int;
|
|
||||||
|
|
||||||
$imponibile_documento += $imponibile_pre;
|
|
||||||
$totale_iva += $iva_pre;
|
|
||||||
$totale_documento += $imponibile_pre;
|
|
||||||
|
|
||||||
$imponibile_documento += $imponibile_con;
|
|
||||||
$totale_iva += $iva_con;
|
|
||||||
$totale_documento += $imponibile_con;
|
|
||||||
|
|
||||||
$imponibile_documento += $imponibile_art;
|
|
||||||
$totale_iva += $iva_art;
|
|
||||||
$totale_documento += $imponibile_art;
|
|
||||||
|
|
||||||
$imponibile_documento += $imponibile_gen;
|
|
||||||
$totale_iva += $iva_gen;
|
|
||||||
$totale_documento += $imponibile_gen;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Totale documento
|
|
||||||
$body .= "<tr><td class='first_cell' colspan='5' align='right'>\n";
|
|
||||||
$body .= '<b>Subtot.:</b>';
|
|
||||||
$body .= "</td>\n";
|
|
||||||
|
|
||||||
// Imponibile
|
|
||||||
$body .= "<td class='table_cell' align='right'>\n";
|
|
||||||
$totale_documento = $imponibile_documento;
|
|
||||||
$body .= Translator::numberToLocale($totale_documento, 2)." €\n";
|
|
||||||
$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' align='right'>\n";
|
|
||||||
$body .= Translator::numberToLocale($sconto, 2)." €\n";
|
|
||||||
$body .= '</td></tr>';
|
|
||||||
|
|
||||||
// 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' align='right'>\n";
|
|
||||||
$totale_documento -= $sconto;
|
|
||||||
$body .= Translator::numberToLocale($totale_documento, 2)." €\n";
|
|
||||||
$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' align='right'>\n";
|
|
||||||
$body .= Translator::numberToLocale($rs[0]['rivalsainps'], 2)." €\n";
|
|
||||||
$body .= "</td></tr>\n";
|
|
||||||
$totale_documento += $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' align='right'>\n";
|
|
||||||
$body .= Translator::numberToLocale($totale_iva, 2)." €\n";
|
|
||||||
$body .= "</td></tr>\n";
|
|
||||||
$totale_documento += $totale_iva;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
Totale documento
|
|
||||||
*/
|
|
||||||
$body .= "<tr><td class='first_cell' colspan='5' align='right'>\n";
|
|
||||||
$body .= '<b>Totale documento:</b>';
|
|
||||||
$body .= "</td>\n";
|
|
||||||
|
|
||||||
$body .= "<td class='table_cell_h' align='right'>\n";
|
|
||||||
$body .= '<b>'.Translator::numberToLocale($totale_documento, 2)." €</b>\n";
|
|
||||||
$body .= "</td></tr>\n";
|
|
||||||
$netto_a_pagare = $totale_documento;
|
|
||||||
|
|
||||||
// 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' align='right'>\n";
|
|
||||||
$marca_da_bollo = str_replace(',', '.', $rs[0]['bollo']);
|
|
||||||
$body .= Translator::numberToLocale($marca_da_bollo, 2).' €';
|
|
||||||
$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' align='right'>\n";
|
|
||||||
$body .= Translator::numberToLocale($rs[0]['ritenutaacconto'], 2).' €';
|
|
||||||
$body .= "</td></tr>\n";
|
|
||||||
$netto_a_pagare -= $rs[0]['ritenutaacconto'];
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
Netto a pagare (se diverso dal totale)
|
|
||||||
*/
|
|
||||||
if ($totale_documento != $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' align='right'>\n";
|
|
||||||
$body .= '<b>'.Translator::numberToLocale($netto_a_pagare, 2)." €</b>\n";
|
|
||||||
$body .= "</td></tr>\n";
|
|
||||||
}
|
|
||||||
$body .= "</tbody>\n";
|
|
||||||
$body .= "</table>\n";
|
|
||||||
|
|
||||||
$body .= '<p>'.nl2br($rs[0]['note'])."</p>\n";
|
|
||||||
|
|
||||||
$report_name = 'fattura_'.$numero_doc.'.pdf';
|
|
|
@ -0,0 +1,6 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
return [
|
||||||
|
'header' => '90',
|
||||||
|
'footer' => '70',
|
||||||
|
];
|
|
@ -4,10 +4,12 @@ include_once __DIR__.'/../../core.php';
|
||||||
|
|
||||||
include_once $docroot.'/modules/interventi/modutil.php';
|
include_once $docroot.'/modules/interventi/modutil.php';
|
||||||
|
|
||||||
|
$report_name = 'intervento_'.$idintervento.'.pdf';
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Dati intervento
|
Dati intervento
|
||||||
*/
|
*/
|
||||||
$body .= '
|
echo '
|
||||||
<table class="table_values" cellspacing="0" cellpadding="0" style="table-layout:fixed;">
|
<table class="table_values" cellspacing="0" cellpadding="0" style="table-layout:fixed;">
|
||||||
<col width="400"><col width="310">
|
<col width="400"><col width="310">
|
||||||
|
|
||||||
|
@ -19,19 +21,19 @@ $body .= '
|
||||||
<td align="left">
|
<td align="left">
|
||||||
'.tr('Referente').': <b>'.$referente.'</b>';
|
'.tr('Referente').': <b>'.$referente.'</b>';
|
||||||
if ($c_telefono != '') {
|
if ($c_telefono != '') {
|
||||||
$body .= '
|
echo '
|
||||||
<br>'.tr('Telefono azienda').': <b>'.$c_telefono.'</b>';
|
<br>'.tr('Telefono azienda').': <b>'.$c_telefono.'</b>';
|
||||||
}
|
}
|
||||||
if ($c_email != '') {
|
if ($c_email != '') {
|
||||||
$body .= '
|
echo '
|
||||||
<br>'.tr('Email').': <b>'.$c_email.'</b>';
|
<br>'.tr('Email').': <b>'.$c_email.'</b>';
|
||||||
}
|
}
|
||||||
$body .= '
|
echo '
|
||||||
</td>
|
</td>
|
||||||
</tr>';
|
</tr>';
|
||||||
|
|
||||||
// Richiesta
|
// Richiesta
|
||||||
$body .= '
|
echo '
|
||||||
<tr>
|
<tr>
|
||||||
<td align="left" colspan="2" valign="top"><b>'.tr('Richiesta').':</b></td>
|
<td align="left" colspan="2" valign="top"><b>'.tr('Richiesta').':</b></td>
|
||||||
</tr>
|
</tr>
|
||||||
|
@ -41,7 +43,7 @@ $body .= '
|
||||||
|
|
||||||
// Descrizione
|
// Descrizione
|
||||||
if ($records[0]['descrizione_intervento'] != '') {
|
if ($records[0]['descrizione_intervento'] != '') {
|
||||||
$body .= '
|
echo '
|
||||||
<tr>
|
<tr>
|
||||||
<td colspan="2" align="left" valign="top"><b>'.tr('Descrizione').':</b></td>
|
<td colspan="2" align="left" valign="top"><b>'.tr('Descrizione').':</b></td>
|
||||||
</tr>
|
</tr>
|
||||||
|
@ -49,7 +51,7 @@ if ($records[0]['descrizione_intervento'] != '') {
|
||||||
<td colspan="2" valign="top" align="left" style="height:5mm;">'.nl2br($records[0]['descrizione_intervento']).'</td>
|
<td colspan="2" valign="top" align="left" style="height:5mm;">'.nl2br($records[0]['descrizione_intervento']).'</td>
|
||||||
</tr>';
|
</tr>';
|
||||||
}
|
}
|
||||||
$body .= '
|
echo '
|
||||||
</table>';
|
</table>';
|
||||||
|
|
||||||
$totale = [];
|
$totale = [];
|
||||||
|
@ -59,7 +61,7 @@ $totale = [];
|
||||||
// Conteggio articoli utilizzati
|
// Conteggio articoli utilizzati
|
||||||
$rs2 = $dbo->fetchArray('SELECT *, (SELECT codice FROM mg_articoli WHERE id=idarticolo) AS codice_art, SUM(qta) AS sumqta FROM `mg_articoli_interventi` HAVING idintervento='.prepare($idintervento)." AND NOT idarticolo='0' ORDER BY idarticolo ASC");
|
$rs2 = $dbo->fetchArray('SELECT *, (SELECT codice FROM mg_articoli WHERE id=idarticolo) AS codice_art, SUM(qta) AS sumqta FROM `mg_articoli_interventi` HAVING idintervento='.prepare($idintervento)." AND NOT idarticolo='0' ORDER BY idarticolo ASC");
|
||||||
if (!empty($rs2)) {
|
if (!empty($rs2)) {
|
||||||
$body .= '
|
echo '
|
||||||
<table class="table_values" cellspacing="0" cellpadding="0" style="font-size:11px; table-layout:fixed; border-color:#aaa;">
|
<table class="table_values" cellspacing="0" cellpadding="0" style="font-size:11px; table-layout:fixed; border-color:#aaa;">
|
||||||
<col width="90"><col width="254"><col width="54"><col width="80"><col width="80"><col width="80">
|
<col width="90"><col width="254"><col width="54"><col width="80"><col width="80"><col width="80">
|
||||||
|
|
||||||
|
@ -98,29 +100,29 @@ if (!empty($rs2)) {
|
||||||
$totale_articoli = [];
|
$totale_articoli = [];
|
||||||
|
|
||||||
foreach ($rs2 as $r) {
|
foreach ($rs2 as $r) {
|
||||||
$body .= '
|
echo '
|
||||||
<tr>';
|
<tr>';
|
||||||
|
|
||||||
// Codice
|
// Codice
|
||||||
$body .= '
|
echo '
|
||||||
<td valign="top">
|
<td valign="top">
|
||||||
'.$r['codice_art'].'
|
'.$r['codice_art'].'
|
||||||
</td>';
|
</td>';
|
||||||
|
|
||||||
// Descrizione
|
// Descrizione
|
||||||
$body .= '
|
echo '
|
||||||
<td valign="top">
|
<td valign="top">
|
||||||
'.$r['descrizione'].'
|
'.$r['descrizione'].'
|
||||||
</td>';
|
</td>';
|
||||||
|
|
||||||
// Quantità
|
// Quantità
|
||||||
$body .= '
|
echo '
|
||||||
<td align="center" valign="top">
|
<td align="center" valign="top">
|
||||||
'.Translator::numberToLocale($r['sumqta'], 2).' '.$r['um'].'
|
'.Translator::numberToLocale($r['sumqta'], 2).' '.$r['um'].'
|
||||||
</td>';
|
</td>';
|
||||||
|
|
||||||
// Prezzo unitario
|
// Prezzo unitario
|
||||||
$body .= '
|
echo '
|
||||||
<td align="right" valign="top">
|
<td align="right" valign="top">
|
||||||
'.($visualizza_costi ? Translator::numberToLocale($r['prezzo_vendita'], 2).' €' : '-').'
|
'.($visualizza_costi ? Translator::numberToLocale($r['prezzo_vendita'], 2).' €' : '-').'
|
||||||
</td>';
|
</td>';
|
||||||
|
@ -132,7 +134,7 @@ if (!empty($rs2)) {
|
||||||
$sconto = '-';
|
$sconto = '-';
|
||||||
}
|
}
|
||||||
|
|
||||||
$body .= '
|
echo '
|
||||||
<td align="center" valign="top">
|
<td align="center" valign="top">
|
||||||
'.($visualizza_costi ? $sconto : '-').'
|
'.($visualizza_costi ? $sconto : '-').'
|
||||||
</td>';
|
</td>';
|
||||||
|
@ -140,7 +142,7 @@ if (!empty($rs2)) {
|
||||||
// Netto
|
// Netto
|
||||||
$netto = ($r['prezzo_vendita'] - $r['sconto']) * $r['sumqta'];
|
$netto = ($r['prezzo_vendita'] - $r['sconto']) * $r['sumqta'];
|
||||||
|
|
||||||
$body .= '
|
echo '
|
||||||
<td align="right" valign="top">
|
<td align="right" valign="top">
|
||||||
'.($visualizza_costi ? Translator::numberToLocale($netto, 2) : '-').'
|
'.($visualizza_costi ? Translator::numberToLocale($netto, 2) : '-').'
|
||||||
</td>
|
</td>
|
||||||
|
@ -155,7 +157,7 @@ if (!empty($rs2)) {
|
||||||
|
|
||||||
// Totale spesa articoli
|
// Totale spesa articoli
|
||||||
if ($visualizza_costi) {
|
if ($visualizza_costi) {
|
||||||
$body .= '
|
echo '
|
||||||
<tr>
|
<tr>
|
||||||
<td colspan="5" align="right">
|
<td colspan="5" align="right">
|
||||||
<b>'.strtoupper(tr('Totale materiale utilizzato')).':</b>
|
<b>'.strtoupper(tr('Totale materiale utilizzato')).':</b>
|
||||||
|
@ -167,7 +169,7 @@ if (!empty($rs2)) {
|
||||||
</tr>';
|
</tr>';
|
||||||
}
|
}
|
||||||
|
|
||||||
$body .= '
|
echo '
|
||||||
</table>';
|
</table>';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -176,7 +178,7 @@ if (!empty($rs2)) {
|
||||||
// Conteggio SPESE AGGIUNTIVE
|
// Conteggio SPESE AGGIUNTIVE
|
||||||
$rs2 = $dbo->fetchArray('SELECT * FROM in_righe_interventi WHERE idintervento='.prepare($idintervento).' ORDER BY id ASC');
|
$rs2 = $dbo->fetchArray('SELECT * FROM in_righe_interventi WHERE idintervento='.prepare($idintervento).' ORDER BY id ASC');
|
||||||
if (!empty($rs2)) {
|
if (!empty($rs2)) {
|
||||||
$body .= '
|
echo '
|
||||||
<table class="table_values" cellspacing="0" cellpadding="0" style="table-layout:fixed; border-color:#aaa; font-size:11px;">
|
<table class="table_values" cellspacing="0" cellpadding="0" style="table-layout:fixed; border-color:#aaa; font-size:11px;">
|
||||||
<col width="90"><col width="254"><col width="54"><col width="80"><col width="80"><col width="80">
|
<col width="90"><col width="254"><col width="54"><col width="80"><col width="80"><col width="80">
|
||||||
|
|
||||||
|
@ -216,7 +218,7 @@ if (!empty($rs2)) {
|
||||||
|
|
||||||
foreach ($rs2 as $r) {
|
foreach ($rs2 as $r) {
|
||||||
// Articolo
|
// Articolo
|
||||||
$body .= '
|
echo '
|
||||||
<tr>
|
<tr>
|
||||||
<td></td>
|
<td></td>
|
||||||
|
|
||||||
|
@ -225,14 +227,14 @@ if (!empty($rs2)) {
|
||||||
</td>';
|
</td>';
|
||||||
|
|
||||||
// Quantità
|
// Quantità
|
||||||
$body .= '
|
echo '
|
||||||
<td align="center">
|
<td align="center">
|
||||||
'.Translator::numberToLocale($r['qta'], 2).'
|
'.Translator::numberToLocale($r['qta'], 2).'
|
||||||
</td>';
|
</td>';
|
||||||
|
|
||||||
// Prezzo unitario
|
// Prezzo unitario
|
||||||
|
|
||||||
$body .= '
|
echo '
|
||||||
<td align="right" valign="top">
|
<td align="right" valign="top">
|
||||||
'.($visualizza_costi ? Translator::numberToLocale($r['prezzo_vendita'], 2).' €' : '-').'
|
'.($visualizza_costi ? Translator::numberToLocale($r['prezzo_vendita'], 2).' €' : '-').'
|
||||||
</td>';
|
</td>';
|
||||||
|
@ -244,7 +246,7 @@ if (!empty($rs2)) {
|
||||||
$sconto = '-';
|
$sconto = '-';
|
||||||
}
|
}
|
||||||
|
|
||||||
$body .= '
|
echo '
|
||||||
<td align="center" valign="top">
|
<td align="center" valign="top">
|
||||||
'.($visualizza_costi ? $sconto : '-').'
|
'.($visualizza_costi ? $sconto : '-').'
|
||||||
</td>';
|
</td>';
|
||||||
|
@ -252,7 +254,7 @@ if (!empty($rs2)) {
|
||||||
// Prezzo totale
|
// Prezzo totale
|
||||||
$netto = ($r['prezzo_vendita'] - $r['sconto']) * $r['qta'];
|
$netto = ($r['prezzo_vendita'] - $r['sconto']) * $r['qta'];
|
||||||
|
|
||||||
$body .= '
|
echo '
|
||||||
<td align="right" valign="top">
|
<td align="right" valign="top">
|
||||||
'.($visualizza_costi ? Translator::numberToLocale($netto, 2) : '-').'
|
'.($visualizza_costi ? Translator::numberToLocale($netto, 2) : '-').'
|
||||||
</td>
|
</td>
|
||||||
|
@ -267,7 +269,7 @@ if (!empty($rs2)) {
|
||||||
|
|
||||||
if ($visualizza_costi) {
|
if ($visualizza_costi) {
|
||||||
// Totale spese aggiuntive
|
// Totale spese aggiuntive
|
||||||
$body .= '
|
echo '
|
||||||
<tr>
|
<tr>
|
||||||
<td colspan="5" align="right">
|
<td colspan="5" align="right">
|
||||||
<b>'.strtoupper(tr('Totale spese aggiuntive')).':</b>
|
<b>'.strtoupper(tr('Totale spese aggiuntive')).':</b>
|
||||||
|
@ -279,14 +281,14 @@ if (!empty($rs2)) {
|
||||||
</tr>';
|
</tr>';
|
||||||
}
|
}
|
||||||
|
|
||||||
$body .= '
|
echo '
|
||||||
</table>';
|
</table>';
|
||||||
}
|
}
|
||||||
|
|
||||||
// FINE SPESE AGGIUNTIVE
|
// FINE SPESE AGGIUNTIVE
|
||||||
|
|
||||||
// ORE TECNICI + FIRMA
|
// ORE TECNICI + FIRMA
|
||||||
$body .= '
|
echo '
|
||||||
<table class="table_values" cellspacing="0" cellpadding="0" style="table-layout:fixed;">
|
<table class="table_values" cellspacing="0" cellpadding="0" style="table-layout:fixed;">
|
||||||
<col width="362"><col width="80"><col width="70"><col width="70"><col width="74">
|
<col width="362"><col width="80"><col width="70"><col width="70"><col width="74">
|
||||||
|
|
||||||
|
@ -297,7 +299,7 @@ $body .= '
|
||||||
</tr>';
|
</tr>';
|
||||||
|
|
||||||
// INTESTAZIONE ELENCO TECNICI
|
// INTESTAZIONE ELENCO TECNICI
|
||||||
$body .= '
|
echo '
|
||||||
<tr>
|
<tr>
|
||||||
<td align="center" style="font-size:8pt;" bgcolor="#dddddd">
|
<td align="center" style="font-size:8pt;" bgcolor="#dddddd">
|
||||||
<b>'.tr('Tecnico').'</b>
|
<b>'.tr('Tecnico').'</b>
|
||||||
|
@ -332,35 +334,35 @@ $totale_manodopera = 0;
|
||||||
$totale_viaggio = 0;
|
$totale_viaggio = 0;
|
||||||
|
|
||||||
foreach ($rst as $r) {
|
foreach ($rst as $r) {
|
||||||
$body .= '
|
echo '
|
||||||
<tr>';
|
<tr>';
|
||||||
|
|
||||||
// nome tecnico
|
// nome tecnico
|
||||||
$body .= '
|
echo '
|
||||||
<td align="left">
|
<td align="left">
|
||||||
'.$r['ragione_sociale'].'
|
'.$r['ragione_sociale'].'
|
||||||
</td>';
|
</td>';
|
||||||
|
|
||||||
// data
|
// data
|
||||||
$body .= '
|
echo '
|
||||||
<td align="center">
|
<td align="center">
|
||||||
'.Translator::dateToLocale($r['orario_inizio'], '-').'
|
'.Translator::dateToLocale($r['orario_inizio'], '-').'
|
||||||
</td>';
|
</td>';
|
||||||
|
|
||||||
// ora inizio
|
// ora inizio
|
||||||
$body .= '
|
echo '
|
||||||
<td align="center">
|
<td align="center">
|
||||||
'.Translator::timeToLocale($r['orario_inizio'], '-').'
|
'.Translator::timeToLocale($r['orario_inizio'], '-').'
|
||||||
</td>';
|
</td>';
|
||||||
|
|
||||||
// ora fine
|
// ora fine
|
||||||
$body .= '
|
echo '
|
||||||
<td align="center">
|
<td align="center">
|
||||||
'.Translator::timeToLocale($r['orario_fine'], '-').'
|
'.Translator::timeToLocale($r['orario_fine'], '-').'
|
||||||
</td>';
|
</td>';
|
||||||
|
|
||||||
// Sconto
|
// Sconto
|
||||||
$body .= '
|
echo '
|
||||||
<td align="center">
|
<td align="center">
|
||||||
'.($r['sconto_unitario'] > 0 ? Translator::numberToLocale($r['sconto_unitario']).($r['tipo_sconto'] == 'PRC' ? '%' : ' €') : '-').'
|
'.($r['sconto_unitario'] > 0 ? Translator::numberToLocale($r['sconto_unitario']).($r['tipo_sconto'] == 'PRC' ? '%' : ' €') : '-').'
|
||||||
</td>
|
</td>
|
||||||
|
@ -383,11 +385,11 @@ $totale_intervento = sum($totale_manodopera, $totale_viaggio);
|
||||||
|
|
||||||
$totale[] = $totale_intervento;
|
$totale[] = $totale_intervento;
|
||||||
|
|
||||||
$body .= '
|
echo '
|
||||||
</table>';
|
</table>';
|
||||||
|
|
||||||
// ore lavorate
|
// ore lavorate
|
||||||
$body .= '
|
echo '
|
||||||
<table class="table_values" cellspacing="0" cellpadding="0" style="table-layout:fixed; font-size:11px;">
|
<table class="table_values" cellspacing="0" cellpadding="0" style="table-layout:fixed; font-size:11px;">
|
||||||
<col width="90"><col width="326"><col width="80"><col width="80"><col width="80">
|
<col width="90"><col width="326"><col width="80"><col width="80"><col width="80">
|
||||||
|
|
||||||
|
@ -412,7 +414,7 @@ $body .= '
|
||||||
</tr>';
|
</tr>';
|
||||||
|
|
||||||
// Ore lavoro
|
// Ore lavoro
|
||||||
$body .= '
|
echo '
|
||||||
<tr>
|
<tr>
|
||||||
<td></td>
|
<td></td>
|
||||||
|
|
||||||
|
@ -425,7 +427,7 @@ $body .= '
|
||||||
</td>';
|
</td>';
|
||||||
|
|
||||||
if ($visualizza_costi) {
|
if ($visualizza_costi) {
|
||||||
$body .= '
|
echo '
|
||||||
<td align="right">
|
<td align="right">
|
||||||
'.Translator::numberToLocale($totale_costo_ore, 2).' €
|
'.Translator::numberToLocale($totale_costo_ore, 2).' €
|
||||||
</td>
|
</td>
|
||||||
|
@ -434,17 +436,17 @@ if ($visualizza_costi) {
|
||||||
'.Translator::numberToLocale($totale_manodopera, 2).' €
|
'.Translator::numberToLocale($totale_manodopera, 2).' €
|
||||||
</td>';
|
</td>';
|
||||||
} else {
|
} else {
|
||||||
$body .= '
|
echo '
|
||||||
<td align="right">-</td>
|
<td align="right">-</td>
|
||||||
<td align="right">-</td>';
|
<td align="right">-</td>';
|
||||||
}
|
}
|
||||||
|
|
||||||
$body .= '
|
echo '
|
||||||
</tr>';
|
</tr>';
|
||||||
|
|
||||||
// Ore di viaggio
|
// Ore di viaggio
|
||||||
if ($totale_km > 0) {
|
if ($totale_km > 0) {
|
||||||
$body .= '
|
echo '
|
||||||
<tr>
|
<tr>
|
||||||
<td></td>
|
<td></td>
|
||||||
|
|
||||||
|
@ -457,7 +459,7 @@ if ($totale_km > 0) {
|
||||||
</td>';
|
</td>';
|
||||||
|
|
||||||
if ($visualizza_costi) {
|
if ($visualizza_costi) {
|
||||||
$body .= '
|
echo '
|
||||||
<td align="right">
|
<td align="right">
|
||||||
'.Translator::numberToLocale($totale_costo_km, 2).' €
|
'.Translator::numberToLocale($totale_costo_km, 2).' €
|
||||||
</td>
|
</td>
|
||||||
|
@ -466,17 +468,17 @@ if ($totale_km > 0) {
|
||||||
'.Translator::numberToLocale($totale_viaggio, 2).' €
|
'.Translator::numberToLocale($totale_viaggio, 2).' €
|
||||||
</td>';
|
</td>';
|
||||||
} else {
|
} else {
|
||||||
$body .= '
|
echo '
|
||||||
<td align="right">-</td>
|
<td align="right">-</td>
|
||||||
<td align="right">-</td>';
|
<td align="right">-</td>';
|
||||||
}
|
}
|
||||||
$body .= '
|
echo '
|
||||||
</tr>';
|
</tr>';
|
||||||
}
|
}
|
||||||
|
|
||||||
// Subtotale manodopera + viaggio
|
// Subtotale manodopera + viaggio
|
||||||
if ($visualizza_costi) {
|
if ($visualizza_costi) {
|
||||||
$body .= '
|
echo '
|
||||||
<tr>
|
<tr>
|
||||||
<td colspan="4" align="right">
|
<td colspan="4" align="right">
|
||||||
<b>'.strtoupper(tr('Totale intervento')).':</b>
|
<b>'.strtoupper(tr('Totale intervento')).':</b>
|
||||||
|
@ -488,14 +490,14 @@ if ($visualizza_costi) {
|
||||||
</tr>';
|
</tr>';
|
||||||
}
|
}
|
||||||
|
|
||||||
$body .= '
|
echo '
|
||||||
</table>';
|
</table>';
|
||||||
|
|
||||||
$totale = sum($totale);
|
$totale = sum($totale);
|
||||||
|
|
||||||
// TOTALE COSTI FINALI
|
// TOTALE COSTI FINALI
|
||||||
if ($visualizza_costi) {
|
if ($visualizza_costi) {
|
||||||
$body .= '
|
echo '
|
||||||
<br>
|
<br>
|
||||||
|
|
||||||
<nobreak>
|
<nobreak>
|
||||||
|
@ -503,7 +505,7 @@ if ($visualizza_costi) {
|
||||||
<col width="630"><col width="80">';
|
<col width="630"><col width="80">';
|
||||||
|
|
||||||
// Totale imponibile
|
// Totale imponibile
|
||||||
$body .= '
|
echo '
|
||||||
<tr>
|
<tr>
|
||||||
<td valign="middle" align="right">
|
<td valign="middle" align="right">
|
||||||
<b>'.strtoupper(tr('Imponibile')).':</b>
|
<b>'.strtoupper(tr('Imponibile')).':</b>
|
||||||
|
@ -523,7 +525,7 @@ if ($visualizza_costi) {
|
||||||
|
|
||||||
$totale = sum($totale, -$records[0]['sconto_globale']);
|
$totale = sum($totale, -$records[0]['sconto_globale']);
|
||||||
|
|
||||||
$body .= '
|
echo '
|
||||||
<tr>
|
<tr>
|
||||||
<td valign="middle" align="right">
|
<td valign="middle" align="right">
|
||||||
<b>'.strtoupper(tr('Sconto incondizionato')).':</b>
|
<b>'.strtoupper(tr('Sconto incondizionato')).':</b>
|
||||||
|
@ -535,7 +537,7 @@ if ($visualizza_costi) {
|
||||||
</tr>';
|
</tr>';
|
||||||
|
|
||||||
// Imponibile scontato
|
// Imponibile scontato
|
||||||
$body .= '
|
echo '
|
||||||
<tr>
|
<tr>
|
||||||
<td valign="middle" align="right">
|
<td valign="middle" align="right">
|
||||||
<b>'.strtoupper(tr('Imponibile scontato')).':</b>
|
<b>'.strtoupper(tr('Imponibile scontato')).':</b>
|
||||||
|
@ -556,7 +558,7 @@ if ($visualizza_costi) {
|
||||||
|
|
||||||
// IVA
|
// IVA
|
||||||
// Totale intervento
|
// Totale intervento
|
||||||
$body .= '
|
echo '
|
||||||
<tr>
|
<tr>
|
||||||
<td valign="middle" align="right">
|
<td valign="middle" align="right">
|
||||||
<b>'.strtoupper(tr('Iva')).' ('.Translator::numberToLocale($percentuale_iva, 0).'%):</b>
|
<b>'.strtoupper(tr('Iva')).' ('.Translator::numberToLocale($percentuale_iva, 0).'%):</b>
|
||||||
|
@ -570,7 +572,7 @@ if ($visualizza_costi) {
|
||||||
$totale = sum($totale, $iva);
|
$totale = sum($totale, $iva);
|
||||||
|
|
||||||
// TOTALE INTERVENTO
|
// TOTALE INTERVENTO
|
||||||
$body .= '
|
echo '
|
||||||
<tr>
|
<tr>
|
||||||
<td valign="middle" align="right">
|
<td valign="middle" align="right">
|
||||||
<b>'.strtoupper(tr('Totale intervento')).':</b>
|
<b>'.strtoupper(tr('Totale intervento')).':</b>
|
||||||
|
@ -590,7 +592,7 @@ if ($records[0]['firma_file'] != '') {
|
||||||
$firma = '';
|
$firma = '';
|
||||||
}
|
}
|
||||||
|
|
||||||
$body .= '
|
echo '
|
||||||
<br>
|
<br>
|
||||||
|
|
||||||
<table border="0" cellspacing="0" cellpadding="0" style="table-layout:fixed;">
|
<table border="0" cellspacing="0" cellpadding="0" style="table-layout:fixed;">
|
||||||
|
@ -606,5 +608,3 @@ $body .= '
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>';
|
</table>';
|
||||||
|
|
||||||
$report_name = 'intervento_'.$idintervento.'.pdf';
|
|
|
@ -0,0 +1,18 @@
|
||||||
|
<?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$</p>
|
||||||
|
<p>$f_piva$</p>
|
||||||
|
<p>$f_codicefiscale$</p>
|
||||||
|
<p>$f_capsoc$</p>
|
||||||
|
<p>$f_telefono$</p>
|
||||||
|
<p>$f_sitoweb$</p>
|
||||||
|
<p>$f_email$</p>
|
||||||
|
</div>
|
||||||
|
</div>';
|
|
@ -10,7 +10,6 @@ $module_name = 'Interventi';
|
||||||
$query = 'SELECT in_interventi.*, (SELECT ragione_sociale FROM an_anagrafiche WHERE idanagrafica=idclientefinale) AS clientefinale, (SELECT numero FROM co_preventivi WHERE id=(SELECT idpreventivo FROM co_preventivi_interventi WHERE idintervento=in_interventi.id ORDER BY idpreventivo DESC LIMIT 0,1)) AS numero_preventivo, (SELECT SUM(prezzo_dirittochiamata) FROM in_interventi_tecnici GROUP BY idintervento HAVING idintervento=in_interventi.id) AS `tot_dirittochiamata`, (SELECT SUM(km) FROM in_interventi_tecnici GROUP BY idintervento HAVING idintervento=in_interventi.id) AS `tot_km`, (SELECT SUM(ore*prezzo_ore_unitario) FROM in_interventi_tecnici GROUP BY idintervento HAVING idintervento=in_interventi.id) AS `tot_ore_consuntivo`, (SELECT SUM(prezzo_km_consuntivo) FROM in_interventi_tecnici GROUP BY idintervento HAVING idintervento=in_interventi.id) AS `tot_km_consuntivo`, in_interventi.descrizione AS `descrizione_intervento`, richiesta FROM in_interventi INNER JOIN in_tipiintervento ON in_interventi.idtipointervento=in_tipiintervento.idtipointervento WHERE id='.prepare($idintervento).' '.Modules::getAdditionalsQuery('Interventi');
|
$query = 'SELECT in_interventi.*, (SELECT ragione_sociale FROM an_anagrafiche WHERE idanagrafica=idclientefinale) AS clientefinale, (SELECT numero FROM co_preventivi WHERE id=(SELECT idpreventivo FROM co_preventivi_interventi WHERE idintervento=in_interventi.id ORDER BY idpreventivo DESC LIMIT 0,1)) AS numero_preventivo, (SELECT SUM(prezzo_dirittochiamata) FROM in_interventi_tecnici GROUP BY idintervento HAVING idintervento=in_interventi.id) AS `tot_dirittochiamata`, (SELECT SUM(km) FROM in_interventi_tecnici GROUP BY idintervento HAVING idintervento=in_interventi.id) AS `tot_km`, (SELECT SUM(ore*prezzo_ore_unitario) FROM in_interventi_tecnici GROUP BY idintervento HAVING idintervento=in_interventi.id) AS `tot_ore_consuntivo`, (SELECT SUM(prezzo_km_consuntivo) FROM in_interventi_tecnici GROUP BY idintervento HAVING idintervento=in_interventi.id) AS `tot_km_consuntivo`, in_interventi.descrizione AS `descrizione_intervento`, richiesta FROM in_interventi INNER JOIN in_tipiintervento ON in_interventi.idtipointervento=in_tipiintervento.idtipointervento WHERE id='.prepare($idintervento).' '.Modules::getAdditionalsQuery('Interventi');
|
||||||
$records = $dbo->fetchArray($query);
|
$records = $dbo->fetchArray($query);
|
||||||
|
|
||||||
$id_anagrafica = $records[0]['idanagrafica'];
|
|
||||||
$id_cliente = $records[0]['idanagrafica'];
|
$id_cliente = $records[0]['idanagrafica'];
|
||||||
$id_sede = $records[0]['idsede'];
|
$id_sede = $records[0]['idsede'];
|
||||||
|
|
||||||
|
@ -24,11 +23,8 @@ if (!empty($records[0]['idreferente'])) {
|
||||||
|
|
||||||
// Sostituzioni specifiche
|
// Sostituzioni specifiche
|
||||||
// Imposta numerointervento-data-numerocommessa su intestazione
|
// Imposta numerointervento-data-numerocommessa su intestazione
|
||||||
$report = str_replace('$intervento_numero$', $records[0]['codice'], $report);
|
$replaces = [
|
||||||
$report = str_replace('$intervento_data$', Translator::dateToLocale($records[0]['data_richiesta']), $report);
|
'intervento_numero' => $records[0]['codice'],
|
||||||
|
'intervento_data' => Translator::dateToLocale($records[0]['data_richiesta']),
|
||||||
if ($records[0]['numero_preventivo']) {
|
'commessa_numero' => !empty($records[0]['numero_preventivo']) ? $records[0]['codice'] : ' ',
|
||||||
$report = str_replace('$commessa_numero$', $records[0]['codice'], $report);
|
];
|
||||||
} else {
|
|
||||||
$report = str_replace('$commessa_numero$', ' ', $report);
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,41 +1,42 @@
|
||||||
<style>
|
<style>
|
||||||
.table_values {
|
.table_values {
|
||||||
border-top: 1px solid #888;
|
border-top: 1px solid #888;
|
||||||
border-left: 1px solid #888;
|
border-left: 1px solid #888;
|
||||||
}
|
}
|
||||||
|
|
||||||
.table_values td{
|
.table_values td {
|
||||||
border-right: 1px solid #888;
|
border-right: 1px solid #888;
|
||||||
border-bottom: 1px solid #888;
|
border-bottom: 1px solid #888;
|
||||||
padding: 4px;
|
padding: 4px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.check{
|
.check {
|
||||||
width: 10px;
|
width: 10px;
|
||||||
height: 14px;
|
height: 14px;
|
||||||
display: inline;
|
display: inline;
|
||||||
background: transparent url($docroot$/templates/interventi/custom/check.png) center center no-repeat;
|
background: transparent url($docroot$/templates/interventi/custom/check.png) center center no-repeat;
|
||||||
margin-right: 6px;
|
margin-right: 6px;
|
||||||
margin-bottom: 4px;
|
margin-bottom: 4px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.checked{
|
.checked {
|
||||||
width: 10px;
|
width: 10px;
|
||||||
height: 14px;
|
height: 14px;
|
||||||
display: inline;
|
display: inline;
|
||||||
background: transparent url($docroot$/templates/interventi/custom/checked.png) center center no-repeat;
|
background: transparent url($docroot$/templates/interventi/custom/checked.png) center center no-repeat;
|
||||||
margin-right: 6px;
|
margin-right: 6px;
|
||||||
margin-bottom: 4px;
|
margin-bottom: 4px;
|
||||||
}
|
}
|
||||||
|
|
||||||
h5{
|
h5 {
|
||||||
margin: 4px 0 2px 0;
|
margin: 4px 0 2px 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
h2{
|
h2 {
|
||||||
font-size: 15pt;
|
font-size: 15pt;
|
||||||
margin: 10px 0 2px 0;
|
margin: 10px 0 2px 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<page backcolor="#ffffff" backtop="30mm" backbottom="3mm" backleft="0mm" backright="0mm" footer="" style="font-size: $font_size$">
|
<page backcolor="#ffffff" backtop="30mm" backbottom="3mm" backleft="0mm" backright="0mm" footer="" style="font-size: $font_size$">
|
||||||
|
@ -50,14 +51,7 @@ h2{
|
||||||
</td>
|
</td>
|
||||||
|
|
||||||
<td style="width:97mm; font-size:10pt;text-align:right;">
|
<td style="width:97mm; font-size:10pt;text-align:right;">
|
||||||
<b>$f_ragionesociale$</b>
|
<b>$f_ragionesociale$</b> $f_indirizzo$ $f_citta$ $f_piva$ $f_codicefiscale$ $f_capsoc$ $f_telefono$ $f_sitoweb$
|
||||||
$f_indirizzo$
|
|
||||||
$f_citta$
|
|
||||||
$f_piva$
|
|
||||||
$f_codicefiscale$
|
|
||||||
$f_capsoc$
|
|
||||||
$f_telefono$
|
|
||||||
$f_sitoweb$
|
|
||||||
$f_email$
|
$f_email$
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
|
@ -53,7 +53,7 @@ $sconto = 0.00;
|
||||||
/*
|
/*
|
||||||
Articoli
|
Articoli
|
||||||
*/
|
*/
|
||||||
$q_art = "SELECT *, GROUP_CONCAT( CONCAT_WS(lotto, 'Lotto: ', ', '), CONCAT_WS(serial, 'SN: ', ', '), CONCAT_WS(altro, 'Altro: ', '') SEPARATOR '<br/>') AS codice, SUM(qta) AS sumqta FROM `or_righe_ordini` GROUP BY idarticolo, idordine, lotto HAVING idordine='$idordine' AND NOT idarticolo='0' ORDER BY idarticolo ASC";
|
$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);
|
$rs_art = $dbo->fetchArray($q_art);
|
||||||
$tot_art = sizeof($rs_art);
|
$tot_art = sizeof($rs_art);
|
||||||
$imponibile_art = 0.0;
|
$imponibile_art = 0.0;
|
||||||
|
|
|
@ -5,6 +5,36 @@
|
||||||
*/
|
*/
|
||||||
include_once __DIR__.'/../core.php';
|
include_once __DIR__.'/../core.php';
|
||||||
|
|
||||||
|
// Valori aggiuntivi per la sostituzione
|
||||||
|
$values = [
|
||||||
|
'footer' => !empty($footer) ? $footer : '',
|
||||||
|
'dicitura_fissa_fattura' => get_var('Dicitura fissa fattura'),
|
||||||
|
'pagination' => '
|
||||||
|
<table style="color:#aaa; font-size:10px;">
|
||||||
|
<tr>
|
||||||
|
<td align="left" style="width:97mm;">
|
||||||
|
'.tr('Stampato con OpenSTAManager').'
|
||||||
|
</td>
|
||||||
|
|
||||||
|
<td align="right" style="width:97mm;">
|
||||||
|
'.str_replace(['_PAGE_', '_TOTAL_'], ['{PAGENO}', '{nb}'], tr('Pagina _PAGE_ di _TOTAL_')).'
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>',
|
||||||
|
];
|
||||||
|
|
||||||
|
$values = array_merge($values, (array) $replaces);
|
||||||
|
|
||||||
|
foreach ($values as $key => $value) {
|
||||||
|
$values['$'.$key.'$'] = $value;
|
||||||
|
unset($values[$key]);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Sostituisce alle variabili del template i valori
|
||||||
|
$head = str_replace(array_keys($values), array_values($values), $head);
|
||||||
|
$foot = str_replace(array_keys($values), array_values($values), $foot);
|
||||||
|
$report = str_replace(array_keys($values), array_values($values), $report);
|
||||||
|
|
||||||
// Retrocompatibilità
|
// Retrocompatibilità
|
||||||
$id_cliente = $id_cliente ?: $idcliente;
|
$id_cliente = $id_cliente ?: $idcliente;
|
||||||
|
|
||||||
|
@ -57,7 +87,6 @@ foreach ($replace as $prefix => $values) {
|
||||||
}
|
}
|
||||||
|
|
||||||
$values['codice'] = !empty($values['codice']) ? $values['codice'].',' : '';
|
$values['codice'] = !empty($values['codice']) ? $values['codice'].',' : '';
|
||||||
$values['ragionesociale'] = !empty($values['ragionesociale']) ? $values['ragionesociale'].',' : '';
|
|
||||||
$values['provincia'] = !empty($values['provincia']) ? '('.$values['provincia'].')' : '';
|
$values['provincia'] = !empty($values['provincia']) ? '('.$values['provincia'].')' : '';
|
||||||
|
|
||||||
$citta = '';
|
$citta = '';
|
||||||
|
@ -71,7 +100,7 @@ foreach ($replace as $prefix => $values) {
|
||||||
if ($values['provincia'] != '') {
|
if ($values['provincia'] != '') {
|
||||||
$citta .= ' '.$values['provincia'];
|
$citta .= ' '.$values['provincia'];
|
||||||
}
|
}
|
||||||
$citta .= '<br/>';
|
//$citta .= '<br/>';
|
||||||
|
|
||||||
$values['citta'] = $citta;
|
$values['citta'] = $citta;
|
||||||
|
|
||||||
|
@ -96,46 +125,12 @@ foreach ($replace as $prefix => $values) {
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach ($values as $key => $value) {
|
foreach ($values as $key => $value) {
|
||||||
$values['$'.$prefix.$key.'$'] = empty($value) ? $value : $value.'<br/>';
|
$values['$'.$prefix.$key.'$'] = empty($value) ? $value : $value; // .'<br/>'
|
||||||
unset($values[$key]);
|
unset($values[$key]);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Sostituisce alle variabili del template i valori
|
// Sostituisce alle variabili del template i valori
|
||||||
$body = str_replace(array_keys($values), array_values($values), $body);
|
$head = str_replace(array_keys($values), array_values($values), $head);
|
||||||
|
$foot = str_replace(array_keys($values), array_values($values), $foot);
|
||||||
$report = str_replace(array_keys($values), array_values($values), $report);
|
$report = str_replace(array_keys($values), array_values($values), $report);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Aggiunta del footer standard
|
|
||||||
if (!str_contains($body, '<page_footer>') && !str_contains($report, '<page_footer>')) {
|
|
||||||
$report .= '
|
|
||||||
<!-- Footer -->
|
|
||||||
<page_footer>
|
|
||||||
$pagination$
|
|
||||||
</page_footer>';
|
|
||||||
}
|
|
||||||
|
|
||||||
// Valori aggiuntivi per la sostituzione
|
|
||||||
$values = [
|
|
||||||
'dicitura_fissa_fattura' => get_var('Dicitura fissa fattura'),
|
|
||||||
'pagination' => '
|
|
||||||
<table style="color:#aaa; font-size:10px;">
|
|
||||||
<tr>
|
|
||||||
<td align="left" style="width:97mm;">
|
|
||||||
'.tr('Stampato con OpenSTAManager').'
|
|
||||||
</td>
|
|
||||||
|
|
||||||
<td align="right" style="width:97mm;">
|
|
||||||
'.str_replace(['_PAGE_', '_TOTAL_'], ['[[page_cu]]', '[[page_nb]]'], tr('Pagina _PAGE_ di _TOTAL_')).'
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</table>',
|
|
||||||
];
|
|
||||||
|
|
||||||
foreach ($values as $key => $value) {
|
|
||||||
$values['$'.$key.'$'] = empty($value) ? $value : $value.'<br/>';
|
|
||||||
unset($values[$key]);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Sostituisce alle variabili del template i valori
|
|
||||||
$body = str_replace(array_keys($values), array_values($values), $body);
|
|
||||||
$report = str_replace(array_keys($values), array_values($values), $report);
|
|
||||||
|
|
|
@ -192,7 +192,7 @@ if (sizeof($preventivi) > 0) {
|
||||||
$body .= "<br/>\n";
|
$body .= "<br/>\n";
|
||||||
|
|
||||||
// Conteggio articoli utilizzati
|
// Conteggio articoli utilizzati
|
||||||
$query = "SELECT *, (SELECT orario_inizio FROM in_interventi_tecnici GROUP BY idintervento HAVING idintervento = mg_articoli_interventi.idintervento) AS data_intervento, (SELECT percentuale FROM co_iva WHERE id=mg_articoli_interventi.idiva_vendita) AS prciva_vendita, (SELECT codice FROM mg_articoli WHERE id=idarticolo) AS codice_art, GROUP_CONCAT( CONCAT_WS(lotto, 'Lotto: ', ', '), CONCAT_WS(serial, 'SN: ', ', '), CONCAT_WS(altro, 'Altro: ', '') SEPARATOR '<br/>') AS codice, SUM(qta) AS sumqta FROM `mg_articoli_interventi` GROUP BY idarticolo, idintervento, lotto HAVING ".(!empty($idinterventi) ? 'idintervento IN('.implode(',', $idinterventi).') AND ' : '')." NOT idarticolo='0' ORDER BY idarticolo ASC";
|
$query = "SELECT *, (SELECT orario_inizio FROM in_interventi_tecnici GROUP BY idintervento HAVING idintervento = mg_articoli_interventi.idintervento) AS data_intervento, (SELECT prc_guadagno FROM mg_listini WHERE id=(SELECT idlistino FROM an_anagrafiche WHERE idanagrafica=(SELECT idanagrafica FROM in_interventi WHERE id=mg_articoli_interventi.idintervento) ) ) AS prc_guadagno,(SELECT percentuale FROM co_iva WHERE id=mg_articoli_interventi.idiva_vendita) AS prciva_vendita, (SELECT codice FROM mg_articoli WHERE id=idarticolo) AS codice_art, CONCAT_WS(serial, 'SN: ', ', ') AS codice, SUM(qta) AS sumqta FROM `mg_articoli_interventi` JOIN mg_prodotti ON mg_articoli_interventi.idarticolo = mg_prodotti.id_articolo GROUP BY idarticolo, idintervento, lotto HAVING ".(!empty($idinterventi) ? 'idintervento IN('.implode(',', $idinterventi).') AND ' : '')." NOT idarticolo='0' ORDER BY idarticolo ASC";
|
||||||
$rs2 = $dbo->fetchArray($query);
|
$rs2 = $dbo->fetchArray($query);
|
||||||
|
|
||||||
if (sizeof($rs2) > 0) {
|
if (sizeof($rs2) > 0) {
|
||||||
|
|
|
@ -275,7 +275,7 @@ if (sizeof($info_intervento) > 0) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Conteggio articoli utilizzati
|
// Conteggio articoli utilizzati
|
||||||
$query = "SELECT *, (SELECT percentuale FROM co_iva WHERE id=(SELECT idiva_vendita FROM mg_articoli WHERE id=idarticolo)) AS prciva_vendita, (SELECT orario_inizio FROM in_interventi_tecnici WHERE idintervento=mg_articoli_interventi.idintervento GROUP BY idintervento HAVING idintervento=mg_articoli_interventi.idintervento) AS data_intervento, (SELECT prc_guadagno FROM mg_listini WHERE id=(SELECT idlistino FROM an_anagrafiche WHERE idanagrafica=(SELECT idanagrafica FROM in_interventi WHERE id=mg_articoli_interventi.idintervento) ) ) AS prc_guadagno, (SELECT codice FROM mg_articoli WHERE id=idarticolo) AS codice_art, GROUP_CONCAT( CONCAT_WS(lotto, 'Lotto: ', ', '), CONCAT_WS(serial, 'SN: ', ', '), CONCAT_WS(altro, 'Altro: ', '') SEPARATOR '<br/>') AS codice, SUM(qta) AS sumqta FROM `mg_articoli_interventi` GROUP BY idarticolo, idintervento, lotto HAVING idintervento IN(".implode(',', $idinterventi).") AND NOT idarticolo='0' ORDER BY idarticolo ASC";
|
$query = "SELECT *, (SELECT percentuale FROM co_iva WHERE id=(SELECT idiva_vendita FROM mg_articoli WHERE id=idarticolo)) AS prciva_vendita, (SELECT orario_inizio FROM in_interventi_tecnici WHERE idintervento=mg_articoli_interventi.idintervento GROUP BY idintervento HAVING idintervento=mg_articoli_interventi.idintervento) AS data_intervento, (SELECT prc_guadagno FROM mg_listini WHERE id=(SELECT idlistino FROM an_anagrafiche WHERE idanagrafica=(SELECT idanagrafica FROM in_interventi WHERE id=mg_articoli_interventi.idintervento) ) ) AS prc_guadagno, (SELECT codice FROM mg_articoli WHERE id=idarticolo) AS codice_art, CONCAT_WS(serial, 'SN: ', ', ') AS codice, SUM(qta) AS sumqta FROM `mg_articoli_interventi` JOIN mg_prodotti ON mg_articoli_interventi.idarticolo = mg_prodotti.id_articolo GROUP BY idarticolo, idintervento, lotto HAVING idintervento IN(".implode(',', $idinterventi).") AND NOT idarticolo='0' ORDER BY idarticolo ASC";
|
||||||
$rs2 = $dbo->fetchArray($query);
|
$rs2 = $dbo->fetchArray($query);
|
||||||
if (sizeof($rs2) > 0) {
|
if (sizeof($rs2) > 0) {
|
||||||
$body .= "<table style=\"width:100%;\" class=\"table_values\" cellspacing=\"2\" cellpadding=\"5\" style=\"border-color:#aaa;\">\n";
|
$body .= "<table style=\"width:100%;\" class=\"table_values\" cellspacing=\"2\" cellpadding=\"5\" style=\"border-color:#aaa;\">\n";
|
||||||
|
|
|
@ -906,3 +906,7 @@ UPDATE `co_righe_documenti` SET `abilita_serial` = 1 WHERE `idarticolo` IN (SELE
|
||||||
UPDATE `dt_righe_ddt` SET `abilita_serial` = 1 WHERE `idarticolo` IN (SELECT `id_articolo` FROM `mg_prodotti`);
|
UPDATE `dt_righe_ddt` SET `abilita_serial` = 1 WHERE `idarticolo` IN (SELECT `id_articolo` FROM `mg_prodotti`);
|
||||||
UPDATE `mg_articoli_interventi` SET `abilita_serial` = 1 WHERE `idarticolo` IN (SELECT `id_articolo` FROM `mg_prodotti`);
|
UPDATE `mg_articoli_interventi` SET `abilita_serial` = 1 WHERE `idarticolo` IN (SELECT `id_articolo` FROM `mg_prodotti`);
|
||||||
UPDATE `or_righe_ordini` SET `abilita_serial` = 1 WHERE `idarticolo` IN (SELECT `id_articolo` FROM `mg_prodotti`);
|
UPDATE `or_righe_ordini` SET `abilita_serial` = 1 WHERE `idarticolo` IN (SELECT `id_articolo` FROM `mg_prodotti`);
|
||||||
|
|
||||||
|
-- Rimozione sconto/rincaro per i preventivi
|
||||||
|
UPDATE `co_righe_preventivi` SET `sconto_unitario` = `prc_guadagno`, `tipo_sconto` = 'PRC', `sconto` = `prc_guadagno` * `qta` WHERE `prc_guadagno` != 0;
|
||||||
|
ALTER TABLE `co_righe_preventivi ` DROP `prc_guadagno `;
|
||||||
|
|
Loading…
Reference in New Issue