Introduzione delle stampe nel database

This commit is contained in:
Thomas Zilio 2017-09-21 15:51:39 +02:00
parent e970cfc930
commit 8125956d5d
33 changed files with 509 additions and 488 deletions

View File

@ -2,205 +2,16 @@
include_once __DIR__.'/core.php';
ob_end_clean();
$filename = !empty($filename) ? $filename : null;
$id_print = get('id_print');
// Assegnazione di tutte le variabile GET
foreach ($get as $key => $value) {
${$key} = !empty(${$key}) ? ${$key} : $value;
// Retrocompatibilitaà
$ptype = get('ptype');
if (!empty($ptype)) {
$print = $dbo->fetchArray('SELECT id, previous FROM zz_prints WHERE directory = '.prepare($ptype).' ORDER BY main DESC LIMIT 1');
$id_print = $print[0]['id'];
$id_record = !empty($id_record) ? $id_record : get($print[0]['previous']);
}
// Impostazione automatica della precisione a 2 numeri decimali
Translator::getFormatter()->setPrecision(2);
// Individuazione del formato della stampa
$old_format = file_exists($docroot.'/templates/'.$ptype.'/pdfgen.'.$ptype.'.php') || file_exists($docroot.'/templates/'.$ptype.'/custom/pdfgen.'.$ptype.'.php');
// Nuovo sistema di generazione stampe
if (!$old_format) {
// Impostazioni di default
if (file_exists($docroot.'/templates/base/custom/settings.php')) {
$default = include $docroot.'/templates/base/custom/settings.php';
} else {
$default = include $docroot.'/templates/base/settings.php';
}
// Impostazioni personalizzate della stampa
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';
}
// Individuazione delle impostazioni finali
$settings = array_merge($default, (array) $custom);
// Individuazione delle variabili fondamentali per la sostituzione dei contenuti
if (file_exists($docroot.'/templates/'.$ptype.'/custom/init.php')) {
include $docroot.'/templates/'.$ptype.'/custom/init.php';
} elseif (file_exists($docroot.'/templates/'.$ptype.'/init.php')) {
include $docroot.'/templates/'.$ptype.'/init.php';
}
// Individuazione delle variabili per la sostituzione
include_once __DIR__.'/templates/info.php';
if (!empty($id_module)) {
Permissions::addModule($id_module);
}
Permissions::check();
// Operazioni di sostituzione
include $docroot.'/templates/info.php';
// Generazione dei contenuti della stampa
ob_start();
if (file_exists($docroot.'/templates/'.$ptype.'/custom/body.php')) {
include $docroot.'/templates/'.$ptype.'/custom/body.php';
} else {
include $docroot.'/templates/'.$ptype.'/body.php';
}
$report = ob_get_clean();
if (!empty($autofill)) {
$result = '';
// max($autofill['additional']) = $autofill['rows'] - 1
for ($i = (floor($autofill['count']) % $autofill['rows']); $i < $autofill['additional']; ++$i) {
$result .= '
<tr>';
for ($c = 0; $c < $autofill['columns']; ++$c) {
$result .= '
<td>&nbsp;</td>';
}
$result .= '
</tr>';
}
$report = str_replace('|autofill|', $result, $report);
}
// 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();
// Footer di default
$head = !empty($head) ? $head : '$default_header$';
// 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();
} else {
$orientation = 'P';
$body_table_params = "style='width:210mm;'";
$table = 'margin-left:1.7mm';
$font_size = '10pt';
// Decido se usare la stampa personalizzata (se esiste) oppure quella standard
if (file_exists($ptype.'/custom/pdfgen.'.$ptype.'.php')) {
include $docroot.'/templates/'.$ptype.'/custom/pdfgen.'.$ptype.'.php';
} else {
include $docroot.'/templates/'.$ptype.'/pdfgen.'.$ptype.'.php';
}
// Sostituzione di variabili generiche
$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);
}
// Footer di default
$foot = !empty($foot) ? $foot : '$default_footer$';
// Operazioni di sostituzione
include $docroot.'/templates/replace.php';
// Individuazione dellla configurazione
$directory = dirname($filename);
if (!empty($filename) && !directory($directory)) {
$error = tr('Non hai i permessi per creare directory e files in _DIRECTORY_', [
'_DIRECTORY_' => $directory,
]);
$_SESSION['errors'][] = $error;
echo '
<p align="center">'.$error.'</p>';
exit();
}
$mode = !empty($filename) ? 'F' : 'I';
$filename = !empty($filename) ? $filename : sanitizeFilename($report_name);
$title = basename($filename);
if (!$old_format) {
$styles = [
'templates/base/bootstrap.css',
'templates/base/style.css',
];
$settings['orientation'] = strtoupper($settings['orientation']) == 'L' ? 'L' : 'P';
$settings['format'] = is_string($settings['format']) ? $settings['format'].($settings['orientation'] == 'L' ? '-L' : '') : $settings['format'];
// Instanziamento dell'oggetto mPDF
$mpdf = new mPDF(
'c',
$settings['format'],
$settings['font-size'],
'helvetica',
$settings['margins']['left'],
$settings['margins']['right'],
$settings['margins']['top'] + $settings['header-height'],
$settings['margins']['bottom'] + $settings['footer-height'],
$settings['margins']['top'],
$settings['margins']['bottom'],
$settings['orientation']
);
// Impostazione di header e footer
$mpdf->SetHTMLFooter($foot);
$mpdf->SetHTMLHeader($head);
// Impostazione del titolo del PDF
$mpdf->SetTitle($title);
// Inclusione dei fogli di stile CSS
foreach ($styles as $value) {
$mpdf->WriteHTML(file_get_contents(__DIR__.'/'.$value), 1);
}
// Impostazione del font-size
$mpdf->WriteHTML('body {font-size: '.$settings['font-size'].'pt;}', 1);
$mpdf->shrink_tables_to_fit = 1;
// Aggiunta dei contenuti
$mpdf->WriteHTML($report);
// Creazione effettiva del PDF
$mpdf->Output($filename, $mode);
} else {
if (!str_contains($report, '<page_footer>')) {
$report .= '<page_footer>'.$foot.'</page_footer>';
}
$html2pdf = new Spipu\Html2Pdf\Html2Pdf($orientation, 'A4', 'it', true, 'UTF-8');
$html2pdf->writeHTML($report);
$html2pdf->pdf->setTitle($title);
$html2pdf->output($filename, $mode);
}
Prints::render($id_print, $id_record, $filename);

View File

@ -56,7 +56,7 @@ class Permissions
*
* @return bool
*/
public static function check($permissions = [])
public static function check($permissions = [], $die = true)
{
if (empty($permissions)) {
$permissions = ['r', 'rw'];
@ -80,7 +80,7 @@ class Permissions
}
}
if (!$result) {
if (!$result && $die) {
die(tr('Accesso negato'));
}
}

View File

@ -1,7 +1,7 @@
<?php
/**
* Classe per la gestione delle informazioni relative ai moduli installati.
* Classe per la gestione delle informazioni relative ai plugin installati.
*
* @since 2.3
*/
@ -13,7 +13,7 @@ class Plugins
protected static $queries = [];
/**
* Restituisce tutte le informazioni di tutti i moduli installati.
* Restituisce tutte le informazioni di tutti i plugin installati.
*
* @return array
*/
@ -40,27 +40,17 @@ class Plugins
/**
* Restituisce le informazioni relative a un singolo modulo specificato.
*
* @param int $id
* @param string|int $plugin
*
* @return array
*/
public static function getPlugin($id)
public static function getPlugin($plugin)
{
return self::getPlugins()[$id];
}
/**
* Restituisce le informazioni relative a un singolo modulo specificato, ricercato in base al nome.
*
* @param string $name
*
* @return array
*/
public static function getPluginByName($name)
{
if (!empty(self::getPlugins()[$name])) {
return self::getPlugin(self::getPlugins()[$name]);
if (!is_numeric($plugin) && !empty(self::getModules()[$plugin])) {
$plugin = self::getPlugins()[$plugin];
}
return self::getPlugins()[$plugin];
}
/**

354
src/Prints.php Normal file
View File

@ -0,0 +1,354 @@
<?php
/**
* Classe per la gestione delle informazioni relative alle stampe installate.
*
* @since 2.3
*/
class Prints
{
/** @var array Elenco delle stampe disponibili */
protected static $prints = [];
/** @var array Elenco delle stampe disponibili */
protected static $modules = [];
/**
* Restituisce tutte le informazioni di tutti i moduli installati.
*
* @return array
*/
public static function getPrints()
{
if (empty(self::$prints)) {
$database = Database::getConnection();
$results = $database->fetchArray('SELECT * FROM zz_prints');
$prints = [];
foreach ($results as $result) {
$result['full_directory'] = DOCROOT.'/templates/'.$result['directory'];
$prints[$result['id']] = $result;
$prints[$result['name']] = $result['id'];
if (!isset(self::$modules[$result['id_module']])) {
self::$modules[$result['id_module']] = [];
}
self::$modules[$result['id_module']][] = $result['id'];
}
self::$prints = $prints;
}
return self::$prints;
}
/**
* Restituisce le informazioni relative a un singolo modulo specificato.
*
* @param string|int $print
*
* @return array
*/
public static function getPrint($print)
{
if (!is_numeric($print) && !empty(self::getPrints()[$print])) {
$print = self::getPrints()[$print];
}
return self::getPrints()[$print];
}
/**
* Restituisce le informazioni relative alle stampe di un singolo modulo specificato.
*
* @param string|int $module
*
* @return array
*/
public static function getModulePrints($module)
{
$module_id = Modules::getModule($module)['id'];
$result = [];
foreach ((array) self::$modules[$module_id] as $value) {
$result[] = $value;
}
if (!is_numeric($print) && !empty(self::getPrints()[$print])) {
$print = self::getPrints()[$print];
}
return $result;
}
public static function render($print, $id_record, $filename = null)
{
ob_end_clean();
$infos = self::getPrint($print);
Permissions::addModule($infos['id_module']);
if (empty($infos) || empty($infos['enabled']) || !Permissions::check([], false)) {
return false;
}
// Impostazione automatica della precisione a 2 numeri decimali
Translator::getFormatter()->setPrecision(2);
// Individuazione della configurazione
$directory = dirname($filename);
if (!empty($filename) && !directory($directory)) {
$error = tr('Non hai i permessi per creare directory e files in _DIRECTORY_', [
'_DIRECTORY_' => $directory,
]);
$_SESSION['errors'][] = $error;
echo '
<p align="center">'.$error.'</p>';
exit();
}
if (self::isOldStandard($print)) {
self::oldLoader($infos['id'], $id_record, $filename);
} else {
self::loader($infos['id'], $id_record, $filename);
}
}
protected static function getLink($print, $id_record)
{
$infos = self::getPrint($print);
$link = ROOTDIR.'/pdfgen.php?';
if (self::isOldStandard($infos['id'])) {
$link .= 'ptype='.$infos['directory'].'&'.$infos['previous'].'='.$id_record;
} else {
$link .= 'id_print='.$infos['id'].'&id_record='.$id_record;
}
return $link;
}
protected static function readOptions($string)
{
// Fix per contenuti con newline integrate
$string = str_replace(["\n", "\r"], ['\\n', '\\r'], $string);
$result = (array) json_decode($string, true);
return $result;
}
protected static function isOldStandard($id)
{
$infos = self::getPrint($print);
return file_exists($infos['full_directory'].'/pdfgen.'.$ptype.'.php') || file_exists($infos['full_directory'].'/custom/pdfgen.'.$ptype.'.php');
}
protected static function isNewStandard($id)
{
return !self::isOldStandard($id);
}
protected static function oldLoader($id_print, $id_record, $filename = null)
{
$infos = self::getPrint($id_print);
$options = self::readOptions($infos['options']);
var_dump($infos);exit();
$database = Database::getConnection();
$dbo = $database;
$_GET[$infos['previous']] = $id_record;
${$infos['previous']} = $id_record;
$ptype = $infos['directory'];
$orientation = 'P';
$body_table_params = "style='width:210mm;'";
$table = 'margin-left:1.7mm';
$font_size = '10pt';
// Decido se usare la stampa personalizzata (se esiste) oppure quella standard
if (file_exists($infos['full_directory'].'/custom/pdfgen.'.$ptype.'.php')) {
include $infos['full_directory'].'/custom/pdfgen.'.$ptype.'.php';
} else {
include $infos['full_directory'].'/pdfgen.'.$ptype.'.php';
}
// Sostituzione di variabili generiche
$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);
// Operazioni di sostituzione
include DOCROOT.'/templates/replace.php';
$mode = !empty($filename) ? 'F' : 'I';
$filename = !empty($filename) ? $filename : sanitizeFilename($report_name);
$title = basename($filename);
// Footer di default
if (!str_contains($report, '<page_footer>')) {
$report .= '<page_footer>$default_footer$</page_footer>';
}
$html2pdf = new Spipu\Html2Pdf\Html2Pdf($orientation, 'A4', 'it', true, 'UTF-8');
$html2pdf->writeHTML($report);
$html2pdf->pdf->setTitle($title);
$html2pdf->output($filename, $mode);
}
protected static function loader($id_print, $id_record, $filename = null)
{
$infos = self::getPrint($id_print);
$options = self::readOptions($infos['options']);
$database = Database::getConnection();
$dbo = $database;
// Impostazioni di default
if (file_exists(DOCROOT.'/templates/base/custom/settings.php')) {
$default = include DOCROOT.'/templates/base/custom/settings.php';
} else {
$default = include DOCROOT.'/templates/base/settings.php';
}
// Impostazioni personalizzate della stampa
if (file_exists($infos['full_directory'].'/custom/settings.php')) {
$custom = include $infos['full_directory'].'/custom/settings.php';
} elseif (file_exists($infos['full_directory'].'/settings.php')) {
$custom = include $infos['full_directory'].'/settings.php';
}
// Individuazione delle impostazioni finali
$settings = array_merge($default, (array) $custom);
// Individuazione delle variabili fondamentali per la sostituzione dei contenuti
if (file_exists($infos['full_directory'].'/custom/init.php')) {
include $infos['full_directory'].'/custom/init.php';
} elseif (file_exists($infos['full_directory'].'/init.php')) {
include $infos['full_directory'].'/init.php';
}
// Individuazione delle variabili per la sostituzione
include_once DOCROOT.'/templates/info.php';
// Generazione dei contenuti della stampa
ob_start();
if (file_exists($infos['full_directory'].'/custom/body.php')) {
include $infos['full_directory'].'/custom/body.php';
} else {
include $infos['full_directory'].'/body.php';
}
$report = ob_get_clean();
if (!empty($autofill)) {
$result = '';
// max($autofill['additional']) = $autofill['rows'] - 1
for ($i = (floor($autofill['count']) % $autofill['rows']); $i < $autofill['additional']; ++$i) {
$result .= '
<tr>';
for ($c = 0; $c < $autofill['columns']; ++$c) {
$result .= '
<td>&nbsp;</td>';
}
$result .= '
</tr>';
}
$report = str_replace('|autofill|', $result, $report);
}
// Generazione dei contenuti dell'header
ob_start();
if (file_exists($infos['full_directory'].'/custom/header.php')) {
include $infos['full_directory'].'/custom/header.php';
} elseif (file_exists($infos['full_directory'].'/header.php')) {
include $infos['full_directory'].'/header.php';
}
$head = ob_get_clean();
// Generazione dei contenuti del footer
ob_start();
if (file_exists($infos['full_directory'].'/custom/footer.php')) {
include $infos['full_directory'].'/custom/footer.php';
} elseif (file_exists($infos['full_directory'].'/footer.php')) {
include $infos['full_directory'].'/footer.php';
}
$foot = ob_get_clean();
// Header di default
$head = !empty($head) ? $head : '$default_header$';
// Footer di default
$foot = !empty($foot) ? $foot : '$default_footer$';
// Operazioni di sostituzione
include DOCROOT.'/templates/replace.php';
$mode = !empty($filename) ? 'F' : 'I';
$filename = !empty($filename) ? $filename : sanitizeFilename($report_name);
$title = basename($filename);
$styles = [
'templates/base/bootstrap.css',
'templates/base/style.css',
];
$settings['orientation'] = strtoupper($settings['orientation']) == 'L' ? 'L' : 'P';
$settings['format'] = is_string($settings['format']) ? $settings['format'].($settings['orientation'] == 'L' ? '-L' : '') : $settings['format'];
// Instanziamento dell'oggetto mPDF
$mpdf = new mPDF(
'c',
$settings['format'],
$settings['font-size'],
'helvetica',
$settings['margins']['left'],
$settings['margins']['right'],
$settings['margins']['top'] + $settings['header-height'],
$settings['margins']['bottom'] + $settings['footer-height'],
$settings['margins']['top'],
$settings['margins']['bottom'],
$settings['orientation']
);
// Impostazione di header e footer
$mpdf->SetHTMLFooter($foot);
$mpdf->SetHTMLHeader($head);
// Impostazione del titolo del PDF
$mpdf->SetTitle($title);
// Inclusione dei fogli di stile CSS
foreach ($styles as $value) {
$mpdf->WriteHTML(file_get_contents(DOCROOT.'/'.$value), 1);
}
// Impostazione del font-size
$mpdf->WriteHTML('body {font-size: '.$settings['font-size'].'pt;}', 1);
$mpdf->shrink_tables_to_fit = 1;
// Aggiunta dei contenuti
$mpdf->WriteHTML($report);
// Creazione effettiva del PDF
$mpdf->Output($filename, $mode);
}
}

View File

@ -12,7 +12,7 @@
return '
<div class="row">
<div class="col-xs-6">
<img src="'.DOCROOT.'/templates/'.$ptype.'/logo_azienda.jpg" alt="Logo" border="0"/>
<img src="$directory$/logo_azienda.jpg" alt="Logo" border="0"/>
</div>
<div class="col-xs-6 text-right">
<p><b>'.$f_ragionesociale.'</b></p>

View File

@ -2,7 +2,7 @@
include_once __DIR__.'/../../core.php';
$report_name = 'contratto_'.$idcontratto.'.pdf';
$report_name = 'contratto_'.$id_record.'.pdf';
$autofill = [
'count' => 0, // Conteggio delle righe
@ -80,7 +80,7 @@ echo "
<tbody>';
// RIGHE PREVENTIVO CON ORDINAMENTO UNICO
$righe = $dbo->fetchArray('SELECT * FROM co_righe2_contratti WHERE idcontratto='.prepare($idcontratto).' ORDER BY `order`');
$righe = $dbo->fetchArray('SELECT * FROM co_righe2_contratti WHERE idcontratto='.prepare($id_record).' ORDER BY `order`');
foreach ($righe as $r) {
$count = 0;
$count += ceil(strlen($r['descrizione']) / $autofill['words']);
@ -110,7 +110,7 @@ foreach ($righe as $r) {
".(empty($r['qta']) ? '' : Translator::numberToLocale($r['qta'])).' '.$r['um'].'
</td>';
if ($mostra_prezzi) {
if ($options['pricing']) {
// Prezzo unitario
echo "
<td class='text-right'>
@ -161,7 +161,7 @@ echo '
</tbody>';
// TOTALE COSTI FINALI
if ($mostra_prezzi) {
if ($options['pricing']) {
// Eventuale sconto incondizionato
if (!empty($sconto)) {
// Totale imponibile

View File

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

View File

@ -4,7 +4,7 @@ include_once __DIR__.'/../../core.php';
include_once $docroot.'/modules/interventi/modutil.php';
$report_name = 'contratto_'.$idcontratto.'_cons.pdf';
$report_name = 'contratto_'.$id_record.'_cons.pdf';
echo '
<div class="row">
@ -61,7 +61,7 @@ $totale_ore_impiegate = 0;
$sconto = [];
$imponibile = [];
$interventi = $dbo->fetchArray('SELECT *, in_interventi.id, in_interventi.codice, (SELECT GROUP_CONCAT(DISTINCT ragione_sociale) FROM in_interventi_tecnici JOIN an_anagrafiche ON an_anagrafiche.idanagrafica = in_interventi_tecnici.idtecnico WHERE idintervento=in_interventi.id) AS tecnici, (SELECT MIN(orario_inizio) FROM in_interventi_tecnici WHERE idintervento=in_interventi.id) AS inizio, (SELECT SUM(ore) FROM in_interventi_tecnici WHERE idintervento=in_interventi.id) AS ore, (SELECT SUM(km) FROM in_interventi_tecnici WHERE idintervento=in_interventi.id) AS km FROM co_righe_contratti JOIN in_interventi ON co_righe_contratti.idintervento=in_interventi.id WHERE co_righe_contratti.idcontratto='.prepare($idcontratto).' ORDER BY inizio DESC');
$interventi = $dbo->fetchArray('SELECT *, in_interventi.id, in_interventi.codice, (SELECT GROUP_CONCAT(DISTINCT ragione_sociale) FROM in_interventi_tecnici JOIN an_anagrafiche ON an_anagrafiche.idanagrafica = in_interventi_tecnici.idtecnico WHERE idintervento=in_interventi.id) AS tecnici, (SELECT MIN(orario_inizio) FROM in_interventi_tecnici WHERE idintervento=in_interventi.id) AS inizio, (SELECT SUM(ore) FROM in_interventi_tecnici WHERE idintervento=in_interventi.id) AS ore, (SELECT SUM(km) FROM in_interventi_tecnici WHERE idintervento=in_interventi.id) AS km FROM co_righe_contratti JOIN in_interventi ON co_righe_contratti.idintervento=in_interventi.id WHERE co_righe_contratti.idcontratto='.prepare($id_record).' ORDER BY inizio DESC');
if (!empty($interventi)) {
// Interventi
@ -464,10 +464,10 @@ $imponibile = sum($imponibile);
$totale = $imponibile - $sconto;
$rs = $dbo->fetchArray("SELECT SUM(subtotale) as budget FROM `co_righe2_contratti` WHERE idcontratto = ".prepare($idcontratto));
$rs = $dbo->fetchArray("SELECT SUM(subtotale) as budget FROM `co_righe2_contratti` WHERE idcontratto = ".prepare($id_record));
$budget = $rs[0]['budget'];
$rs = $dbo->fetchArray("SELECT SUM(qta) AS totale_ore FROM `co_righe2_contratti` WHERE um='ore' AND idcontratto = ".prepare($idcontratto));
$rs = $dbo->fetchArray("SELECT SUM(qta) AS totale_ore FROM `co_righe2_contratti` WHERE um='ore' AND idcontratto = ".prepare($id_record));
$totale_ore = $rs[0]['totale_ore'];
$rapporto = $budget - $totale;

View File

@ -5,7 +5,7 @@ include_once __DIR__.'/../../core.php';
$module_name = 'Contratti';
// Lettura info fattura
$records = $dbo->fetchArray('SELECT *, data_bozza AS data FROM co_contratti WHERE id='.prepare($idcontratto));
$records = $dbo->fetchArray('SELECT *, data_bozza AS data FROM co_contratti WHERE id='.prepare($id_record));
$id_cliente = $records[0]['idanagrafica'];
$id_sede = $records[0]['idsede'];

View File

@ -9,7 +9,7 @@ $autofill = [
'words' => 70,
'rows' => 16,
'additional' => 15,
'columns' => $mostra_prezzi ? 5 : 2,
'columns' => $options['pricing'] ? 5 : 2,
];
$imponibile = [];
@ -24,7 +24,7 @@ echo "
<th class='text-center'>".tr('Descrizione', [], ['upper' => true])."</th>
<th class='text-center' style='width:10%'>".tr('Q.tà', [], ['upper' => true]).'</th>';
if ($mostra_prezzi) {
if ($options['pricing']) {
echo "
<th class='text-center' style='width:15%'>".tr('Prezzo unitario', [], ['upper' => true])."</th>
<th class='text-center' style='width:15%'>".tr('Importo', [], ['upper' => true])."</th>
@ -38,7 +38,7 @@ if ($mostra_prezzi) {
<tbody>';
// Righe
$rs_gen = $dbo->fetchArray('SELECT *, (SELECT percentuale FROM co_iva WHERE id=idiva) AS perc_iva, IFNULL((SELECT peso_lordo FROM mg_articoli WHERE id=idarticolo),0) * qta AS peso_lordo, IFNULL((SELECT volume FROM mg_articoli WHERE id=idarticolo),0) * qta AS volume FROM `dt_righe_ddt` WHERE idddt='.prepare($idddt));
$rs_gen = $dbo->fetchArray('SELECT *, (SELECT percentuale FROM co_iva WHERE id=idiva) AS perc_iva, IFNULL((SELECT peso_lordo FROM mg_articoli WHERE id=idarticolo),0) * qta AS peso_lordo, IFNULL((SELECT volume FROM mg_articoli WHERE id=idarticolo),0) * qta AS volume FROM `dt_righe_ddt` WHERE idddt='.prepare($id_record));
foreach ($rs_gen as $r) {
$count = 0;
$count += ceil(strlen($r['descrizione']) / $autofill['words']);
@ -73,7 +73,7 @@ foreach ($rs_gen as $r) {
".Translator::numberToLocale($r['qta']).' '.$r['um'].'
</td>';
if ($mostra_prezzi) {
if ($options['pricing']) {
echo "
<td class='text-right'>
".Translator::numberToLocale($r['subtotale'] / $r['qta']).' &euro;

View File

@ -4,7 +4,7 @@
echo '
<table class="table-bordered">';
if ($mostra_prezzi) {
if ($options['pricing']) {
// Riga 1
echo "
<tr>

View File

@ -3,7 +3,7 @@
include_once __DIR__.'/../../core.php';
// Lettura info ddt
$q = 'SELECT *, (SELECT dir FROM dt_tipiddt WHERE id=idtipoddt) AS dir, (SELECT descrizione FROM dt_tipiddt WHERE id=idtipoddt) AS tipo_doc, (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='.prepare($idddt);
$q = 'SELECT *, (SELECT dir FROM dt_tipiddt WHERE id=idtipoddt) AS dir, (SELECT descrizione FROM dt_tipiddt WHERE id=idtipoddt) AS tipo_doc, (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='.prepare($id_record);
$records = $dbo->fetchArray($q);
$module_name = ($records[0]['dir'] == 'entrata') ? 'Ddt di vendita' : 'Ddt di acquisto';
@ -59,5 +59,3 @@ $custom = [
if ($id_cliente != Auth::user()['idanagrafica'] && !Auth::admin()) {
die(tr('Non hai i permessi per questa stampa!'));
}
$mostra_prezzi = get_var("Stampa i prezzi sui ddt");

View File

@ -35,7 +35,7 @@ echo "
<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`');
$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($id_record).' ORDER BY `order`');
foreach ($righe as $r) {
$count = 0;
$count += ceil(strlen($r['descrizione']) / $autofill['words']);

View File

@ -22,7 +22,7 @@ echo "
</tr>';
// Elenco scadenze
$rs2 = $dbo->fetchArray('SELECT * FROM co_scadenziario WHERE iddocumento='.prepare($iddocumento).' ORDER BY `data_emissione` ASC');
$rs2 = $dbo->fetchArray('SELECT * FROM co_scadenziario WHERE iddocumento='.prepare($id_record).' ORDER BY `data_emissione` ASC');
if (!empty($rs2)) {
for ($i = 0; $i < sizeof($rs2); ++$i) {
echo "
@ -159,7 +159,7 @@ if (!empty($sconto)) {
// Ritenuta d'acconto
if ($records[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)');
$rs2 = $dbo->fetchArray('SELECT percentuale FROM co_ritenutaacconto WHERE id=(SELECT idritenutaacconto FROM co_righe_documenti WHERE iddocumento='.prepare($id_record).' AND idritenutaacconto!=0 LIMIT 0,1)');
echo "
<tr>

View File

@ -8,7 +8,7 @@ $records = $dbo->fetchArray('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='.prepare($iddocumento));
FROM co_documenti WHERE id='.prepare($id_record));
$module_name = ($records[0]['dir'] == 'entrata') ? 'Fatture di vendita' : 'Fatture di acquisto';

View File

@ -85,10 +85,11 @@ foreach ($replace as $prefix => $values) {
// Valori aggiuntivi per la sostituzione
$replaces = array_merge($replaces, [
'docroot' => DOCROOT,
'rootdir' => ROOTDIR,
'footer' => !empty($footer) ? $footer : '',
'dicitura_fissa_fattura' => get_var('Dicitura fissa fattura'),
'default_header' => include DOCROOT.'/templates/base/header.php',
'default_footer' => include DOCROOT.'/templates/base/footer.php',
'docroot' => DOCROOT,
'rootdir' => ROOTDIR,
'directory' => Prints::getPrint($id_print)['full_directory'],
'footer' => !empty($footer) ? $footer : '',
'dicitura_fissa_fattura' => get_var('Dicitura fissa fattura'),
]);

View File

@ -4,7 +4,7 @@ include_once __DIR__.'/../../core.php';
include_once $docroot.'/modules/interventi/modutil.php';
$report_name = 'intervento_'.$idintervento.'.pdf';
$report_name = 'intervento_'.$id_record.'.pdf';
/*
Dati intervento
@ -59,7 +59,7 @@ echo '
// riga 3
// Elenco impianti su cui è stato fatto l'intervento
$rs2 = $dbo->fetchArray('SELECT *, (SELECT nome FROM my_impianti WHERE id=my_impianti_interventi.idimpianto) AS nome, (SELECT matricola FROM my_impianti WHERE id=my_impianti_interventi.idimpianto) AS matricola FROM my_impianti_interventi WHERE idintervento='.prepare($idintervento));
$rs2 = $dbo->fetchArray('SELECT *, (SELECT nome FROM my_impianti WHERE id=my_impianti_interventi.idimpianto) AS nome, (SELECT matricola FROM my_impianti WHERE id=my_impianti_interventi.idimpianto) AS matricola FROM my_impianti_interventi WHERE idintervento='.prepare($id_record));
$impianti = [];
for ($j = 0; $j < sizeof($rs2); ++$j) {
$impianti[] = '<b>'.$rs2[$j]['nome']."</b> <small style='color:#777;'>(".$rs2[$j]['matricola'].')</small>';
@ -95,7 +95,7 @@ echo '
$totale = [];
// MATERIALE UTILIZZATO
$rs2 = $dbo->fetchArray('SELECT *, (SELECT codice FROM mg_articoli WHERE id=idarticolo) AS codice_art FROM `mg_articoli_interventi` WHERE 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 FROM `mg_articoli_interventi` WHERE idintervento='.prepare($id_record)." AND NOT idarticolo='0' ORDER BY idarticolo ASC");
if (!empty($rs2)) {
echo '
<table class="table table-bordered">
@ -153,7 +153,7 @@ if (!empty($rs2)) {
$netto = $r['prezzo_vendita'] * $r['qta'] - $r['sconto'];
echo '
<td class="text-center">
'.($mostra_prezzi ? Translator::numberToLocale($netto) : '-').'
'.($options['pricing'] ? Translator::numberToLocale($netto) : '-').'
</td>
</tr>';
}
@ -162,7 +162,7 @@ if (!empty($rs2)) {
</tbody>';
// Totale spesa articoli
if ($mostra_prezzi) {
if ($options['pricing']) {
echo '
<tr>
<td colspan="2" class="text-right">
@ -182,7 +182,7 @@ if (!empty($rs2)) {
// FINE MATERIALE UTILIZZATO
// 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($id_record).' ORDER BY id ASC');
if (!empty($rs2)) {
echo '
<table class="table table-bordered">
@ -231,21 +231,21 @@ if (!empty($rs2)) {
// Prezzo unitario
echo '
<td class="text-center">
'.($mostra_prezzi ? Translator::numberToLocale($r['prezzo_vendita']).' &euro;' : '-').'
'.($options['pricing'] ? Translator::numberToLocale($r['prezzo_vendita']).' &euro;' : '-').'
</td>';
// Prezzo totale
$netto = $r['prezzo_vendita'] * $r['qta'] - $r['sconto'];
echo '
<td class="text-center">
'.($mostra_prezzi ? Translator::numberToLocale($netto) : '-').'
'.($options['pricing'] ? Translator::numberToLocale($netto) : '-').'
</td>
</tr>';
}
echo '
</tbody>';
if ($mostra_prezzi) {
if ($options['pricing']) {
// Totale spese aggiuntive
echo '
<tr>
@ -300,7 +300,7 @@ echo '
<tbody>';
// Sessioni di lavoro dei tecnici
$rst = $dbo->fetchArray('SELECT an_anagrafiche.*, in_interventi_tecnici.* FROM in_interventi_tecnici JOIN an_anagrafiche ON in_interventi_tecnici.idtecnico=an_anagrafiche.idanagrafica WHERE in_interventi_tecnici.idintervento='.prepare($idintervento).' ORDER BY in_interventi_tecnici.orario_inizio');
$rst = $dbo->fetchArray('SELECT an_anagrafiche.*, in_interventi_tecnici.* FROM in_interventi_tecnici JOIN an_anagrafiche ON in_interventi_tecnici.idtecnico=an_anagrafiche.idanagrafica WHERE in_interventi_tecnici.idintervento='.prepare($id_record).' ORDER BY in_interventi_tecnici.orario_inizio');
foreach ($rst as $i => $r) {
echo '
@ -349,8 +349,8 @@ echo '
<tr>';
// Ore lavorate
if ($mostra_prezzi) {
$ore = get_ore_intervento($idintervento);
if ($options['pricing']) {
$ore = get_ore_intervento($id_record);
$costo_orario = $records[0]['tot_ore_consuntivo'] - $records[0]['tot_dirittochiamata'];
@ -396,7 +396,7 @@ echo '
</tr>';
// TOTALE COSTI FINALI
if ($mostra_prezzi) {
if ($options['pricing']) {
// Totale imponibile
echo '
<tr>

View File

@ -7,10 +7,10 @@ include_once $docroot.'/modules/interventi/modutil.php';
$module_name = 'Interventi';
// carica intervento
$query = 'SELECT in_interventi.*, (SELECT numero FROM co_contratti WHERE id=(SELECT idcontratto FROM co_righe_contratti WHERE idintervento=in_interventi.id)) AS numero_contratto, (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 numero FROM co_contratti WHERE id=(SELECT idcontratto FROM co_righe_contratti WHERE idintervento=in_interventi.id)) AS numero_contratto, (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($id_record).' '.Modules::getAdditionalsQuery('Interventi');
$records = $dbo->fetchArray($query);
$costi_intervento = get_costi_intervento($idintervento);
$costi_intervento = get_costi_intervento($id_record);
$id_cliente = $records[0]['idanagrafica'];
$id_sede = $records[0]['idsede'];
@ -22,5 +22,3 @@ $custom = [
'intervento_data' => Translator::dateToLocale($records[0]['data_richiesta']),
'commessa_numero' => !empty($records[0]['numero_preventivo']) ? $records[0]['codice'] : '&nbsp;',
];
$mostra_prezzi = get_var("Visualizza i costi sulle stampe degli interventi");

View File

@ -6,10 +6,10 @@ include_once __DIR__.'/../../core.php';
$report = file_get_contents($docroot.'/templates/magazzino_inventario/magazzino_inventario.html');
$body = file_get_contents($docroot.'/templates/magazzino_inventario/magazzino_inventario_body.html');
$search_codice = get('search_codice');
$search_descrizione = get('search_descrizione');
$search_categoria = get('search_categoria').' '.get('search_subcategoria');
$search_tipo = get('search_tipo');
$search_codice = $_GET['search_codice'];
$search_descrizione = $_GET['search_descrizione'];
$search_categoria = $_GET['search_categoria'].' '.$_GET['search_subcategoria'];
$search_tipo = $_GET['search_tipo'];
if ($search_tipo == '') {
$search_tipo = 'solo prodotti attivi';

View File

@ -32,7 +32,7 @@ echo "
<tbody>';
// RIGHE PREVENTIVO CON ORDINAMENTO UNICO
$righe = $dbo->fetchArray("SELECT *, IFNULL((SELECT codice FROM mg_articoli WHERE id=idarticolo),'') AS codice_articolo, (SELECT percentuale FROM co_iva WHERE id=idiva) AS perc_iva FROM `or_righe_ordini` WHERE idordine=".prepare($idordine).' ORDER BY `order`');
$righe = $dbo->fetchArray("SELECT *, IFNULL((SELECT codice FROM mg_articoli WHERE id=idarticolo),'') AS codice_articolo, (SELECT percentuale FROM co_iva WHERE id=idiva) AS perc_iva FROM `or_righe_ordini` WHERE idordine=".prepare($id_record).' ORDER BY `order`');
foreach ($righe as $r) {
$count = 0;
$count += ceil(strlen($r['descrizione']) / $autofill['words']);
@ -62,7 +62,7 @@ foreach ($righe as $r) {
".(empty($r['qta']) ? '' : Translator::numberToLocale($r['qta'])).' '.$r['um'].'
</td>';
if ($mostra_prezzi) {
if ($options['pricing']) {
// Prezzo unitario
echo "
<td class='text-right'>
@ -133,7 +133,7 @@ echo '
</tbody>';
// TOTALE COSTI FINALI
if ($mostra_prezzi) {
if ($options['pricing']) {
// Totale imponibile
echo '
<tr>

View File

@ -5,7 +5,7 @@ include_once __DIR__.'/../../core.php';
$module_name = 'Preventivi';
// Lettura info fattura
$records = $dbo->fetchArray('SELECT *, (SELECT descrizione FROM or_tipiordine WHERE or_tipiordine.id=idtipoordine) AS tipo_doc, (SELECT descrizione FROM co_pagamenti WHERE id=idpagamento) AS tipo_pagamento FROM or_ordini WHERE id='.prepare($idordine));
$records = $dbo->fetchArray('SELECT *, (SELECT descrizione FROM or_tipiordine WHERE or_tipiordine.id=idtipoordine) AS tipo_doc, (SELECT descrizione FROM co_pagamenti WHERE id=idpagamento) AS tipo_pagamento FROM or_ordini WHERE id='.prepare($id_record));
$id_cliente = $records[0]['idanagrafica'];
$id_sede = $records[0]['idsede'];
@ -20,5 +20,3 @@ $custom = [
'data' => Translator::dateToLocale($records[0]['data']),
'pagamento' => $records[0]['tipo_pagamento'],
];
$mostra_prezzi = get_var('Stampa i prezzi sugli ordini');

View File

@ -2,7 +2,7 @@
include_once __DIR__.'/../../core.php';
$idconto = get('idconto');
$idconto = $_GET['idconto'];
$module_name = 'Piano dei conti';
// carica report html
@ -11,7 +11,7 @@ $body = file_get_contents($docroot.'/templates/partitario_mastrino/partitario_bo
include_once $docroot.'/templates/pdfgen_variables.php';
// Calcolo il percorso piano dei conti
if (get('lev') == '3') {
if ($_GET['lev'] == '3') {
$rs = $dbo->fetchArray("SELECT idpianodeiconti2, CONCAT_WS(' ', numero, descrizione ) AS descrizione FROM co_pianodeiconti3 WHERE id=\"".$idconto.'"');
$percorso = $rs[0]['descrizione'];
$idpianodeiconti2 = $rs[0]['idpianodeiconti2'];
@ -24,7 +24,7 @@ if (get('lev') == '3') {
($rs[0]['descrizione'] == '01 Patrimoniale') ? $descrizione = 'Stato patrimoniale' : $descrizione = 'Conto economico';
$percorso = $descrizione.'<br>&nbsp;&nbsp;'.$percorso;
} elseif (get('lev') == '2') {
} elseif ($_GET['lev'] == '2') {
$rs = $dbo->fetchArray("SELECT idpianodeiconti1, CONCAT_WS(' ', numero, descrizione ) AS descrizione FROM co_pianodeiconti2 WHERE id=\"".$idconto.'"');
$percorso = $rs[0]['descrizione'].'<br>&nbsp;&nbsp;&nbsp;&nbsp;'.$percorso;
$idpianodeiconti1 = $rs[0]['idpianodeiconti1'];
@ -33,7 +33,7 @@ if (get('lev') == '3') {
($rs[0]['descrizione'] == '01 Patrimoniale') ? $descrizione = 'Stato patrimoniale' : $descrizione = 'Conto economico';
$percorso = $descrizione.'<br>&nbsp;&nbsp;'.$percorso;
} elseif (get('lev') == '1') {
} elseif ($_GET['lev'] == '1') {
$rs = $dbo->fetchArray("SELECT CONCAT_WS(' ', numero, descrizione ) AS descrizione FROM co_pianodeiconti1 WHERE id=\"".$idconto.'"');
($rs[0]['descrizione'] == '01 Patrimoniale') ? $descrizione = 'Stato patrimoniale' : $descrizione = 'Conto economico';
@ -46,7 +46,7 @@ $body = str_replace('|period_start|', Translator::dateToLocale($_SESSION['period
$body = str_replace('|period_end|', Translator::dateToLocale($_SESSION['period_end']), $body);
// Stampa da livello 3
if (get('lev') == '3') {
if ($_GET['lev'] == '3') {
$body .= "<table style='table-layout:fixed; border-bottom:1px solid #777; border-right:1px solid #777; border-left:1px solid #777;' cellpadding='0' cellspacing='0'>
<col width='80'><col width='452'><col width='80'><col width='80'>
<tbody>\n";
@ -101,7 +101,7 @@ if (get('lev') == '3') {
}
// Stampa da livello 2
elseif (get('lev') == '2') {
elseif ($_GET['lev'] == '2') {
$body .= "<table style='table-layout:fixed; border-bottom:1px solid #777; border-right:1px solid #777; border-left:1px solid #777;' cellpadding='0' cellspacing='0'>
<col width='80'><col width='452'><col width='80'><col width='80'>
<tbody>\n";
@ -155,7 +155,7 @@ elseif (get('lev') == '2') {
}
// Stampa completa bilancio
elseif (get('lev') == '1') {
elseif ($_GET['lev'] == '1') {
$ricavi = 0;
$costi = 0;
$totale_attivita = 0;

View File

@ -2,7 +2,7 @@
include_once __DIR__.'/../../core.php';
$report_name = 'preventivo_'.$idpreventivo.'.pdf';
$report_name = 'preventivo_'.$id_record.'.pdf';
$autofill = [
'count' => 0, // Conteggio delle righe
@ -81,7 +81,7 @@ echo "
<tbody>';
// RIGHE PREVENTIVO CON ORDINAMENTO UNICO
$righe = $dbo->fetchArray("SELECT *, IFNULL((SELECT codice FROM mg_articoli WHERE id=idarticolo),'') AS codice, (SELECT percentuale FROM co_iva WHERE id=idiva) AS perc_iva FROM `co_righe_preventivi` WHERE idpreventivo=".prepare($idpreventivo).' ORDER BY `order`');
$righe = $dbo->fetchArray("SELECT *, IFNULL((SELECT codice FROM mg_articoli WHERE id=idarticolo),'') AS codice, (SELECT percentuale FROM co_iva WHERE id=idiva) AS perc_iva FROM `co_righe_preventivi` WHERE idpreventivo=".prepare($id_record).' ORDER BY `order`');
foreach ($righe as $r) {
$count = 0;
$count += ceil(strlen($r['descrizione']) / $autofill['words']);
@ -111,7 +111,7 @@ foreach ($righe as $r) {
".(empty($r['qta']) ? '' : Translator::numberToLocale($r['qta'])).' '.$r['um'].'
</td>';
if ($mostra_prezzi) {
if ($options['pricing']) {
// Prezzo unitario
echo "
<td class='text-right'>
@ -182,7 +182,7 @@ echo '
</tbody>';
// TOTALE COSTI FINALI
if ($mostra_prezzi) {
if ($options['pricing']) {
// Totale imponibile
echo '
<tr>

View File

@ -5,9 +5,7 @@ include_once __DIR__.'/../../core.php';
$module_name = 'Preventivi';
// Lettura info fattura
$records = $dbo->fetchArray('SELECT *, data_bozza AS data FROM co_preventivi WHERE co_preventivi.id='.prepare($idpreventivo));
$records = $dbo->fetchArray('SELECT *, data_bozza AS data FROM co_preventivi WHERE co_preventivi.id='.prepare($id_record));
$id_cliente = $records[0]['idanagrafica'];
$id_sede = $records[0]['idsede'];
$mostra_prezzi = get_var('Stampa i prezzi sui preventivi');

View File

@ -4,7 +4,7 @@ include_once __DIR__.'/../../core.php';
include_once $docroot.'/modules/interventi/modutil.php';
$report_name = 'preventivo_'.$idpreventivo.'_cons.pdf';
$report_name = 'preventivo_'.$id_record.'_cons.pdf';
echo '
<div class="row">
@ -59,7 +59,7 @@ if (!empty($records[0]['descrizione'])) {
$sconto = [];
$imponibile = [];
$interventi = $dbo->fetchArray('SELECT *, in_interventi.id, in_interventi.codice, (SELECT GROUP_CONCAT(DISTINCT ragione_sociale) FROM in_interventi_tecnici JOIN an_anagrafiche ON an_anagrafiche.idanagrafica = in_interventi_tecnici.idtecnico WHERE idintervento=in_interventi.id) AS tecnici, (SELECT MIN(orario_inizio) FROM in_interventi_tecnici WHERE idintervento=in_interventi.id) AS inizio, (SELECT SUM(ore) FROM in_interventi_tecnici WHERE idintervento=in_interventi.id) AS ore, (SELECT SUM(km) FROM in_interventi_tecnici WHERE idintervento=in_interventi.id) AS km FROM co_preventivi_interventi JOIN in_interventi ON co_preventivi_interventi.idintervento=in_interventi.id WHERE co_preventivi_interventi.idpreventivo='.prepare($idpreventivo).' ORDER BY inizio DESC');
$interventi = $dbo->fetchArray('SELECT *, in_interventi.id, in_interventi.codice, (SELECT GROUP_CONCAT(DISTINCT ragione_sociale) FROM in_interventi_tecnici JOIN an_anagrafiche ON an_anagrafiche.idanagrafica = in_interventi_tecnici.idtecnico WHERE idintervento=in_interventi.id) AS tecnici, (SELECT MIN(orario_inizio) FROM in_interventi_tecnici WHERE idintervento=in_interventi.id) AS inizio, (SELECT SUM(ore) FROM in_interventi_tecnici WHERE idintervento=in_interventi.id) AS ore, (SELECT SUM(km) FROM in_interventi_tecnici WHERE idintervento=in_interventi.id) AS km FROM co_preventivi_interventi JOIN in_interventi ON co_preventivi_interventi.idintervento=in_interventi.id WHERE co_preventivi_interventi.idpreventivo='.prepare($id_record).' ORDER BY inizio DESC');
if (!empty($interventi)) {
// Interventi
@ -456,7 +456,7 @@ $imponibile = sum($imponibile);
$totale = $imponibile - $sconto;
$rs = $dbo->fetchArray('SELECT SUM(subtotale) as budget FROM `co_righe_preventivi` WHERE idpreventivo = '.prepare($idpreventivo));
$rs = $dbo->fetchArray('SELECT SUM(subtotale) as budget FROM `co_righe_preventivi` WHERE idpreventivo = '.prepare($id_record));
$budget = $rs[0]['budget'];
$rapporto = $budget - $totale;

View File

@ -5,7 +5,7 @@ include_once __DIR__.'/../../core.php';
$module_name = 'Preventivi';
// Lettura info fattura
$records = $dbo->fetchArray('SELECT *, data_bozza AS data FROM co_preventivi WHERE id='.prepare($idpreventivo));
$records = $dbo->fetchArray('SELECT *, data_bozza AS data FROM co_preventivi WHERE id='.prepare($id_record));
$id_cliente = $records[0]['idanagrafica'];
$id_sede = $records[0]['idsede'];

View File

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

View File

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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.2 KiB

View File

@ -1,148 +0,0 @@
<?php
include_once __DIR__.'/../../core.php';
$module_name = 'Contratti';
$additional_where['Contratti'] = str_replace('|idtecnico|', "'".$user['idanagrafica']."'", $additional_where['Contratti']);
// carica parametri di ricerca
$search_numero = save($_GET['search_numerocontratto']);
($search_numero != '') ? $search_numerocontratto = ' AND numero="'.$search_numero.'"' : $search_numerocontratto = '';
$search_nome = save($_GET['search_nome']);
$search_ragione_sociale = save($_GET['search_ragione_sociale']);
$search_idstato = save($_GET['search_idstato']);
isset($_GET['search_datastart']) ? $search_datastart = save($_GET['search_datastart']) : $search_datastart = '01/'.date('m/Y', strtotime('-6 year'));
isset($_GET['search_dataend']) ? $search_dataend = save($_GET['search_dataend']) : $search_dataend = date('t/m/Y', strtotime('+2 year'));
if ($search_idstato != '') {
$WHERE = " AND idstato='$search_idstato'";
} else {
$WHERE = '';
}
// Lettura contratti che soddisfano la ricerca
$query = 'SELECT *, (SELECT SUM(subtotale) FROM co_righe2_contratti WHERE idcontratto=co_contratti.id) AS budget_totale, co_staticontratti.descrizione AS stato FROM co_staticontratti INNER JOIN (co_contratti INNER JOIN an_anagrafiche ON co_contratti.idanagrafica=an_anagrafiche.idanagrafica) ON co_contratti.idstato=co_staticontratti.id WHERE nome LIKE "%'.$search_nome."%\" AND ( replace(ragione_sociale,'.','') LIKE \"%$search_ragione_sociale%\" OR ragione_sociale LIKE \"%$search_ragione_sociale%\" ) ".$search_numerocontratto." AND ((data_bozza BETWEEN '".Translator::dateToEnglish($search_datastart)."' AND '".Translator::dateToEnglish($search_dataend)."') OR (data_accettazione BETWEEN '".Translator::dateToEnglish($search_datastart)."' AND '".Translator::dateToEnglish($search_dataend)."') OR (data_rifiuto BETWEEN '".Translator::dateToEnglish($search_datastart)."' AND '".Translator::dateToEnglish($search_dataend)."') OR (data_conclusione BETWEEN '".Translator::dateToEnglish($search_datastart)."' AND '".Translator::dateToEnglish($search_dataend)."')) $WHERE ".$additional_where['Contratti'].' ORDER BY data_bozza ASC, co_contratti.id DESC';
$rs = $dbo->fetchArray($query);
// Se il cliente è uno solo carico la sua intestazione, altrimenti la lascio in bianco
$idcliente = $rsi[0]['idanagrafica'];
$singolo_cliente = true;
for ($i = 0; $i < sizeof($rs); ++$i) {
if ($rs[$i]['idanagrafica'] != $idcliente) {
$singolo_cliente = false;
}
}
if (!$singolo_cliente) {
$idcliente = '';
}
// carica report html
$report = file_get_contents($docroot.'/templates/riepilogo_contratti/contratto.html');
$body = file_get_contents($docroot.'/templates/riepilogo_contratti/contratto_body.html');
if (!$singolo_cliente) {
$body = str_replace('Spett.le', '', $body);
}
include_once $docroot.'/templates/pdfgen_variables.php';
$body .= '<big><big><b>RIEPILOGO CONTRATTI DAL '.$search_datastart.' al '.$search_dataend."</b></big></big><br/><br/>\n";
// Sostituisco i valori tra | | con il valore del campo del db
$body .= preg_replace('/|(.+?)|/', $rs[0]['${1}'], $body);
// Tabella con riepilogo contratti
$body .= "<table class=\"table_values\" style=\"table-layout:fixed;\" border=\"0\">\n";
$body .= "<col width='14'><col width='60'><col width='60'><col width='35'><col width='30'><col width='30'><col width='20'>\n";
$body .= "<thead>\n";
$body .= "<tr><th align=\"left\" style=\"width:14mm;\">\n";
$body .= " Numero\n";
$body .= "</th>\n";
$body .= "<th align=\"center\" style=\"width:60mm;\">\n";
$body .= " Ragione&nbsp;sociale\n";
$body .= "</th>\n";
$body .= "<th align=\"center\" style=\"width:60mm;\">\n";
$body .= " Nome\n";
$body .= "</th>\n";
$body .= "<th align=\"center\" style=\"width:35mm;\">\n";
$body .= " Stato\n";
$body .= "</th>\n";
$body .= "<th align=\"center\" style=\"width:30mm;\">\n";
$body .= " Data&nbsp;inizio\n";
$body .= "</th>\n";
$body .= "<th align=\"center\" style=\"width:30mm;\">\n";
$body .= " Data&nbsp;conclusione\n";
$body .= "</th>\n";
$body .= "<th align=\"center\" style=\"width:20mm;\">\n";
$body .= " Budget\n";
$body .= "</th></tr>\n";
$body .= "</thead>\n";
$body .= "<tbody>\n";
// Tabella con i dati
for ($i = 0; $i < sizeof($rs); ++$i) {
$data_accettazione = Translator::dateToLocale($rs[$i]['data_accettazione']);
$data_conclusione = Translator::dateToLocale($rs[$i]['data_conclusione']);
if ($data_accettazione == '01/01/1970') {
$data_accettazione = '';
}
if ($data_conclusione == '01/01/1970') {
$data_conclusione = '';
}
$body .= "<tr><td align=\"center\" style=\"width:14mm;\">\n";
$body .= ' '.$rs[$i]['numero']."\n";
$body .= "</td>\n";
$body .= "<td align=\"left\" style=\"width:60mm;\">\n";
$body .= ' '.str_replace(' ', ' ', $rs[$i]['ragione_sociale'])."\n";
$body .= "</td>\n";
$body .= "<td align=\"left\" style=\"width:60mm;\">\n";
$body .= ' '.str_replace(' ', ' ', $rs[$i]['nome'])."\n";
$body .= "</td>\n";
$body .= "<td align=\"center\" style=\"width:35mm;\">\n";
$body .= ' '.str_replace(' ', ' ', $rs[$i]['stato'])."\n";
$body .= "</td>\n";
$body .= "<td align=\"center\" style=\"width:30mm;\">\n";
$body .= ' '.$data_accettazione."\n";
$body .= "</td>\n";
$body .= "<td align=\"center\" style=\"width:30mm;\">\n";
$body .= ' '.$data_conclusione."\n";
$body .= "</td>\n";
$body .= "<td align=\"right\" style=\"width:20mm;\">\n";
$body .= ' '.Translator::numberToLocale($rs[$i]['budget_totale']).' &euro;\n';
$body .= "</td></tr>\n";
$totale += $rs[$i]['budget_totale'];
}
// Totale
$body .= "<tr><td colspan=\"6\" align=\"right\">\n";
$body .= " <b>TOTALE:</b>\n";
$body .= "</td>\n";
$body .= "<td align=\"right\">\n";
$body .= ' <b>'.Translator::numberToLocale($totale)." &euro;</b>\n";
$body .= "</td></tr>\n";
$body .= "</tbody>\n";
$body .= "</table>\n";
$orientation = 'L';
$report_name = 'Riepilogo_contratti.pdf';

View File

@ -4,7 +4,7 @@ include_once __DIR__.'/../../core.php';
$module_name = 'Interventi';
$id_module = get('id_module');
$id_module = $_GET['id_module'];
$fields = [];
$select = '*';

View File

@ -13,10 +13,10 @@ include_once $docroot.'/templates/pdfgen_variables.php';
/*
Dati scadenzario
*/
if (get('type') == 'clienti') {
if ($_GET['type'] == 'clienti') {
$titolo = 'Scadenzario clienti';
$add_where = "AND co_tipidocumento.dir='entrata'";
} elseif (get('type') == 'fornitori') {
} elseif ($_GET['type'] == 'fornitori') {
$titolo = 'Scadenzario fornitori';
$add_where = "AND co_tipidocumento.dir='uscita'";
} else {

67
update/2_3_1.sql Normal file
View File

@ -0,0 +1,67 @@
--
-- Struttura della tabella `zz_prints`
--
CREATE TABLE IF NOT EXISTS `zz_prints` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`id_module` int(11) NOT NULL,
`name` varchar(255) NOT NULL,
`title` varchar(255) NOT NULL,
`directory` varchar(50) NOT NULL,
`previous` varchar(50) NOT NULL,
`options` text NOT NULL,
`icon` varchar(255) NOT NULL,
`version` varchar(15) NOT NULL,
`compatibility` varchar(1000) NOT NULL,
`order` int(11) NOT NULL,
`main` tinyint(1) NOT NULL,
`default` tinyint(1) NOT NULL,
`enabled` tinyint(1) NOT NULL,
PRIMARY KEY (`id`),
FOREIGN KEY (`id_module`) REFERENCES `zz_modules`(`id`) ON DELETE CASCADE
) ENGINE=InnoDB;
-- Inserimento delle stampe di base
INSERT INTO `zz_prints` (`id_module`, `name`, `directory`, `options`, `previous`, `enabled`, `default`) VALUES
((SELECT `id` FROM `zz_modules` WHERE `name` = 'Fatture di vendita'), 'Fattura di vendita', 'fatture', 'iddocumento', '', 1, 1),
((SELECT `id` FROM `zz_modules` WHERE `name` = 'Interventi'), 'Riepilogo intervento', 'riepilogo_interventi', '', '', 1, 1),
((SELECT `id` FROM `zz_modules` WHERE `name` = 'Articoli'), 'Inventario magazzino', 'magazzino_inventario', '', '', 1, 1),
((SELECT `id` FROM `zz_modules` WHERE `name` = 'Piano dei conti'), 'Mastrino', 'partitario_mastrino', '', 'idconto', 1, 1),
((SELECT `id` FROM `zz_modules` WHERE `name` = 'Scadenzario'), 'Scadenziario', 'scadenzario', '', '', 1, 1),
((SELECT `id` FROM `zz_modules` WHERE `name` = 'Stampe contabili'), 'Registro IVA', 'registro_iva', '', '', 1, 1),
((SELECT `id` FROM `zz_modules` WHERE `name` = 'Stampe contabili'), 'Fatturato', 'fatturato', '', '', 1, 1),
((SELECT `id` FROM `zz_modules` WHERE `name` = 'Stampe contabili'), 'Spesometro', 'spesometro', '', '', 1, 1);
-- Inserimento delle stampe con prezzo disabilitato
INSERT INTO `zz_prints` (`id_module`, `name`, `directory`, `options`, `previous`, `enabled`, `default`) VALUES
((SELECT `id` FROM `zz_modules` WHERE `name` = 'Contratti'), 'Contratto (senza costi)', 'contratti', '{"pricing":false}', 'idcontratto', 1, 1),
((SELECT `id` FROM `zz_modules` WHERE `name` = 'Interventi'), 'Intervento (senza costi)', 'interventi', '{"pricing":false}', 'idintervento', 1, 1),
((SELECT `id` FROM `zz_modules` WHERE `name` = 'Ordini cliente'), 'Ordine clienti (senza costi)', 'ordini', '{"pricing":false}', 'idordine', 1, 1),
((SELECT `id` FROM `zz_modules` WHERE `name` = 'Ddt di vendita'), 'Ddt di vendita (senza costi)', 'ddt', '{"pricing":false}', 'idddt', 1, 1),
((SELECT `id` FROM `zz_modules` WHERE `name` = 'Preventivi'), 'Preventivo (senza costi)', 'preventivi', '{"pricing":false}', 'idpreventivo', 1, 1),
((SELECT `id` FROM `zz_modules` WHERE `name` = 'Contratti'), 'Consuntivo contratto (senza costi)', 'contratti_cons', '{"pricing":false}', 'idcontratto', 1, 1),
((SELECT `id` FROM `zz_modules` WHERE `name` = 'Preventivi'), 'Consuntivo preventivo (senza costi)', 'preventivi_cons', '{"pricing":false}', 'idpreventivo', 1, 1),
((SELECT `id` FROM `zz_modules` WHERE `name` = 'Contratti'), 'Ordini di servizio pianificati (senza costi)', 'interventi_ordiniservizio', '{"pricing":false}', 'idintervento', 1, 1);
-- Inserimento delle stampe con prezzo abilitate
INSERT INTO `zz_prints` (`id_module`, `name`, `directory`, `options`, `main`, `previous`, `enabled`, `default`) VALUES
((SELECT `id` FROM `zz_modules` WHERE `name` = 'Contratti'), 'Contratto', 'contratti', '{"pricing":true}', 1, 'idcontratto', 1, 1),
((SELECT `id` FROM `zz_modules` WHERE `name` = 'Interventi'), 'Intervento', 'interventi', '{"pricing":true}', 1, 'idintervento', 1, 1),
((SELECT `id` FROM `zz_modules` WHERE `name` = 'Ordini cliente'), 'Ordine clienti', 'ordini', '{"pricing":true}', 1, 'idordine', 1, 1),
((SELECT `id` FROM `zz_modules` WHERE `name` = 'Ddt di vendita'), 'Ddt di vendita', 'ddt', '{"pricing":true}', 1, 'idddt', 1, 1),
((SELECT `id` FROM `zz_modules` WHERE `name` = 'Preventivi'), 'Preventivo', 'preventivi', '{"pricing":true}', 1, 'idpreventivo', 1, 1),
((SELECT `id` FROM `zz_modules` WHERE `name` = 'Contratti'), 'Consuntivo contratto', 'contratti_cons', '{"pricing":true}', 1, 'idcontratto', 1, 1),
((SELECT `id` FROM `zz_modules` WHERE `name` = 'Preventivi'), 'Consuntivo preventivo', 'preventivi_cons', '{"pricing":true}', 1, 'idpreventivo', 1, 1),
((SELECT `id` FROM `zz_modules` WHERE `name` = 'Contratti'), 'Ordini di servizio pianificati', 'interventi_ordiniservizio', '{"pricing":true}', 1, 'idintervento', 1, 1);
-- Impostazione dei titoli di default
UPDATE `zz_prints` SET `title` = `name` WHERE `title` = '';
-- Impostazione delle icone di default
UPDATE `zz_prints` SET `icon` = 'fa fa-print' WHERE `icon` = '';
-- DELETE FROM `zz_settings` WHERE `nome` = 'Stampa i prezzi sui contratti';
-- DELETE FROM `zz_settings` WHERE `nome` = 'Stampa i prezzi sui ddt';
-- DELETE FROM `zz_settings` WHERE `nome` = 'Visualizza i costi sulle stampe degli interventi';
-- DELETE FROM `zz_settings` WHERE `nome` = 'Stampa i prezzi sugli ordini';
-- DELETE FROM `zz_settings` WHERE `nome` = 'Stampa i prezzi sui preventivi';