Introduzione delle stampe nel database
This commit is contained in:
parent
e970cfc930
commit
8125956d5d
209
pdfgen.php
209
pdfgen.php
|
@ -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> </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);
|
||||
|
|
|
@ -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'));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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];
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -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> </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);
|
||||
}
|
||||
}
|
|
@ -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>
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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');
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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'];
|
||||
|
|
|
@ -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']).' €
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
echo '
|
||||
<table class="table-bordered">';
|
||||
|
||||
if ($mostra_prezzi) {
|
||||
if ($options['pricing']) {
|
||||
// Riga 1
|
||||
echo "
|
||||
<tr>
|
||||
|
|
|
@ -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");
|
||||
|
|
|
@ -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']);
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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';
|
||||
|
||||
|
|
|
@ -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'),
|
||||
]);
|
||||
|
|
|
@ -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']).' €' : '-').'
|
||||
'.($options['pricing'] ? Translator::numberToLocale($r['prezzo_vendita']).' €' : '-').'
|
||||
</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>
|
||||
|
|
|
@ -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'] : ' ',
|
||||
];
|
||||
|
||||
$mostra_prezzi = get_var("Visualizza i costi sulle stampe degli interventi");
|
||||
|
|
|
@ -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';
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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');
|
||||
|
|
|
@ -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> '.$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> '.$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> '.$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;
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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');
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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'];
|
||||
|
|
|
@ -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>
|
|
@ -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 |
|
@ -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 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 inizio\n";
|
||||
$body .= "</th>\n";
|
||||
|
||||
$body .= "<th align=\"center\" style=\"width:30mm;\">\n";
|
||||
$body .= " Data 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']).' €\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)." €</b>\n";
|
||||
$body .= "</td></tr>\n";
|
||||
|
||||
$body .= "</tbody>\n";
|
||||
$body .= "</table>\n";
|
||||
|
||||
$orientation = 'L';
|
||||
$report_name = 'Riepilogo_contratti.pdf';
|
|
@ -4,7 +4,7 @@ include_once __DIR__.'/../../core.php';
|
|||
|
||||
$module_name = 'Interventi';
|
||||
|
||||
$id_module = get('id_module');
|
||||
$id_module = $_GET['id_module'];
|
||||
|
||||
$fields = [];
|
||||
$select = '*';
|
||||
|
|
|
@ -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 {
|
||||
|
|
|
@ -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';
|
Loading…
Reference in New Issue