Fix minori

This commit is contained in:
pek5892 2024-05-21 16:26:19 +02:00
parent ac25a097da
commit d8cd1ef780
27 changed files with 253 additions and 261 deletions

View File

@ -505,11 +505,11 @@ if ($structure->permission == 'rw') {
} }
} }
//Lista casi in cui creare i campi personalizzati // Lista casi in cui creare i campi personalizzati
$list = ['add', 'add_documento', 'add_preventivo', 'add_ordine_fornitore']; $list = ['add', 'add_documento', 'add_preventivo', 'add_ordine_fornitore'];
// Inserimento iniziale // Inserimento iniziale
if (in_array(post('op'),$list)) { if (in_array(post('op'), $list)) {
// Informazioni di log // Informazioni di log
Filter::set('get', 'id_record', $id_record); Filter::set('get', 'id_record', $id_record);

View File

@ -37,13 +37,13 @@ echo '{( "name": "widgets", "id_module": "'.$id_module.'", "position": "top", "p
$segmenti = $dbo->FetchArray('SELECT `id` FROM `zz_segments` WHERE `id_module` = '.prepare($id_module)); $segmenti = $dbo->FetchArray('SELECT `id` FROM `zz_segments` WHERE `id_module` = '.prepare($id_module));
if ($segmenti) { if ($segmenti) {
$segmenti = Modules::getSegments($id_module); $segmenti = Modules::getSegments($id_module);
if (empty($segmenti)) { if (empty($segmenti)) {
echo ' echo '
<div class="alert alert-warning"> <div class="alert alert-warning">
<i class="fa fa-warning-circle"></i> '.tr("Questo gruppo di utenti non ha i permessi per visualizzare nessun segmento di questo modulo").'. <i class="fa fa-warning-circle"></i> '.tr('Questo gruppo di utenti non ha i permessi per visualizzare nessun segmento di questo modulo').'.
</div>'; </div>';
} }
} }
// Lettura eventuali plugins modulo da inserire come tab // Lettura eventuali plugins modulo da inserire come tab
@ -93,11 +93,11 @@ foreach ($plugins as $plugin) {
echo ' echo '
<div id="tab_'.$plugin->id.'" class="tab-pane">'; <div id="tab_'.$plugin->id.'" class="tab-pane">';
$id_plugin = $plugin->id; $id_plugin = $plugin->id;
include base_dir().'/include/manager.php'; include base_dir().'/include/manager.php';
echo ' echo '
</div>'; </div>';
} }
@ -128,7 +128,7 @@ function modificaColonne(button) {
</script>'; </script>';
} }
echo'</div>'; echo '</div>';
// Widget in basso // Widget in basso
echo '{( "name": "widgets", "id_module": "'.$id_module.'", "position": "right", "place": "controller" )}'; echo '{( "name": "widgets", "id_module": "'.$id_module.'", "position": "right", "place": "controller" )}';

View File

@ -176,7 +176,7 @@ if (empty($record) || !$has_access) {
{( "name": "button", "type": "email", "id_module": "'.$id_module.'", "id_plugin": "'.$id_plugin.'", "id_record": "'.$id_record.'" )}'; {( "name": "button", "type": "email", "id_module": "'.$id_module.'", "id_plugin": "'.$id_plugin.'", "id_record": "'.$id_record.'" )}';
if (Module::find((new Module())->getByField('title', 'Account SMS', Models\Locale::getPredefined()->id))) { if (Module::find((new Module())->getByField('title', 'Account SMS', Models\Locale::getPredefined()->id))) {
echo ' echo '
{( "name": "button", "type": "sms", "id_module": "'.$id_module.'", "id_plugin": "'.$id_plugin.'", "id_record": "'.$id_record.'" )}'; {( "name": "button", "type": "sms", "id_module": "'.$id_module.'", "id_plugin": "'.$id_plugin.'", "id_record": "'.$id_record.'" )}';
} }

View File

@ -38,31 +38,31 @@ if (filter('action') == 'do_update') {
<script> <script>
addVersion("'.$update['name'].'"); addVersion("'.$update['name'].'");
</script>'; </script>';
if (is_array($result)) { if (is_array($result)) {
// Adding a message about the completion of the database update // Adding a message about the completion of the database update
if (!empty($update['sql']) && $result[1] == $result[2]) { if (!empty($update['sql']) && $result[1] == $result[2]) {
echo ' echo '
<script> <script>
$("#progress .info").html($("#progress .info").html() + "<p><i class=\"fa fa-check\"></i> '.tr('Aggiornamento del database (_FILENAME_)', [ $("#progress .info").html($("#progress .info").html() + "<p><i class=\"fa fa-check\"></i> '.tr('Aggiornamento del database (_FILENAME_)', [
'_FILENAME_' => '<i>'.$update['filename'].'.sql</i>', '_FILENAME_' => '<i>'.$update['filename'].'.sql</i>',
]).'</p>"); ]).'</p>");
</script>'; </script>';
} }
$rate = $result[1] - $result[0]; $rate = $result[1] - $result[0];
} elseif (!empty($update['script'])) { } elseif (!empty($update['script'])) {
// Adding a message about the completion of the script // Adding a message about the completion of the script
echo ' echo '
<script> <script>
$("#progress .info").html($("#progress .info").html() + "<p><i class=\"fa fa-check\"></i> '.tr('Esecuzione dello script di aggiornamento (_FILENAME_)', [ $("#progress .info").html($("#progress .info").html() + "<p><i class=\"fa fa-check\"></i> '.tr('Esecuzione dello script di aggiornamento (_FILENAME_)', [
'_FILENAME_' => '<i>'.$update['filename'].'.php</i>', '_FILENAME_' => '<i>'.$update['filename'].'.php</i>',
]).'</p>"); ]).'</p>");
</script>'; </script>';
$rate = $scriptValue; $rate = $scriptValue;
} }
// Increasing the total completion percentage // Increasing the total completion percentage
if (!empty($rate)) { if (!empty($rate)) {
echo ' echo '
@ -70,7 +70,7 @@ if (filter('action') == 'do_update') {
addProgress('.$rate.'); addProgress('.$rate.');
</script>'; </script>';
} }
echo ' echo '
<script> <script>
$("#result").load("index.php?action=do_update&firstuse='.$_GET['firstuse'].'"); $("#result").load("index.php?action=do_update&firstuse='.$_GET['firstuse'].'");
@ -80,29 +80,29 @@ if (filter('action') == 'do_update') {
echo ' echo '
<div class="alert alert-danger"> <div class="alert alert-danger">
<i class="fa fa-times"></i> '.tr("Errore durante l'esecuzione dell'aggiornamento alla versione _VERSION_", [ <i class="fa fa-times"></i> '.tr("Errore durante l'esecuzione dell'aggiornamento alla versione _VERSION_", [
'_VERSION_' => $update['version'], '_VERSION_' => $update['version'],
]).' ]).'
</div>'; </div>';
} }
} }
// Update completed // Update completed
elseif (Update::isUpdateCompleted()) { elseif (Update::isUpdateCompleted()) {
Update::updateCleanup(); Update::updateCleanup();
echo ' echo '
<p><strong>'.tr('Aggiornamento completato').'</strong> 😃</p> <p><strong>'.tr('Aggiornamento completato').'</strong> 😃</p>
<script> <script>
setPercent(100); setPercent(100);
</script>'; </script>';
// Instructions for the first installation // Instructions for the first installation
if ($_GET['firstuse'] == 'true') { if ($_GET['firstuse'] == 'true') {
echo ' echo '
<p class="text-danger">'.tr('Si consiglia di rimuovere i permessi di scrittura dal file _FILE_', [ <p class="text-danger">'.tr('Si consiglia di rimuovere i permessi di scrittura dal file _FILE_', [
'_FILE_' => '<b>config.inc.php</b>', '_FILE_' => '<b>config.inc.php</b>',
]).'.</p>'; ]).'.</p>';
} }
echo ' echo '
<a class="btn btn-success btn-block" href="'.base_path().'"> <a class="btn btn-success btn-block" href="'.base_path().'">
<i class="fa fa-check"></i> '.tr('Continua').' <i class="fa fa-check"></i> '.tr('Continua').'
@ -247,14 +247,14 @@ if (filter('action') == 'do_update') {
current += 1; current += 1;
$("#progress .info").html($("#progress .info").html() + "<p><strong>'.tr('Aggiornamento _DONE_ di _TODO_ (_VERSION_)', [ $("#progress .info").html($("#progress .info").html() + "<p><strong>'.tr('Aggiornamento _DONE_ di _TODO_ (_VERSION_)', [
'_DONE_' => '" + current + "', '_DONE_' => '" + current + "',
'_TODO_' => '" + count + "', '_TODO_' => '" + count + "',
'_VERSION_' => '" + version.trim() + "', '_VERSION_' => '" + version.trim() + "',
]).'</strong></p>"); ]).'</strong></p>");
} }
} }
</script> </script>
</div> </div>
</div>'; </div>';
} }

View File

@ -106,7 +106,7 @@ if (!empty($type) && $type != 'menu' && $type != 'custom') {
<thead> <thead>
<tr> <tr>
<th id="th_selector"></th>'; <th id="th_selector"></th>';
foreach ($total['fields'] as $key => $field) { foreach ($total['fields'] as $key => $field) {
$attr_td = ''; $attr_td = '';
$name = trim($field); $name = trim($field);

View File

@ -20,7 +20,7 @@
use Models\Module; use Models\Module;
use Util\FileSystem; use Util\FileSystem;
include_once __DIR__ . '/../core.php'; include_once __DIR__.'/../core.php';
$paths = App::getPaths(); $paths = App::getPaths();
$user = Auth::user(); $user = Auth::user();
@ -35,31 +35,31 @@ echo '<!DOCTYPE html>
<html> <html>
<head> <head>
<meta charset="UTF-8"> <meta charset="UTF-8">
<title>' . $pageTitle . ' - ' . tr('OpenSTAManager') . '</title> <title>'.$pageTitle.' - '.tr('OpenSTAManager').'</title>
<meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" name="viewport"> <meta content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" name="viewport">
<meta name="robots" content="noindex,nofollow"> <meta name="robots" content="noindex,nofollow">
<meta name="description" content="' . tr('OpenSTAManager, il software gestionale open source per assistenza tecnica e fatturazione elettronica.') . '"> <meta name="description" content="'.tr('OpenSTAManager, il software gestionale open source per assistenza tecnica e fatturazione elettronica.').'">
<meta name="author" content="DevCode s.r.l."> <meta name="author" content="DevCode s.r.l.">
<link href="' . $paths['img'] . '/favicon.png" rel="icon" type="image/x-icon" />'; <link href="'.$paths['img'].'/favicon.png" rel="icon" type="image/x-icon" />';
if (file_exists(base_dir() . '/manifest.json')) { if (file_exists(base_dir().'/manifest.json')) {
echo ' echo '
<link rel="manifest" href="' . base_path() . '/manifest.json?r=' . random_int(0, mt_getrandmax()) . '">'; <link rel="manifest" href="'.base_path().'/manifest.json?r='.random_int(0, mt_getrandmax()).'">';
} }
// CSS // CSS
foreach (App::getAssets()['css'] as $style) { foreach (App::getAssets()['css'] as $style) {
echo ' echo '
<link rel="stylesheet" type="text/css" media="all" href="' . $style . '"/>'; <link rel="stylesheet" type="text/css" media="all" href="'.$style.'"/>';
} }
// Print CSS // Print CSS
foreach (App::getAssets()['print'] as $style) { foreach (App::getAssets()['print'] as $style) {
echo ' echo '
<link rel="stylesheet" type="text/css" media="print" href="' . $style . '"/>'; <link rel="stylesheet" type="text/css" media="print" href="'.$style.'"/>';
} }
if (Auth::check()) { if (Auth::check()) {
@ -67,15 +67,15 @@ if (Auth::check()) {
<script> <script>
search = []'; search = []';
$array = $_SESSION['module_' . $id_module]; $array = $_SESSION['module_'.$id_module];
if (!empty($array)) { if (!empty($array)) {
foreach ($array as $field => $value) { foreach ($array as $field => $value) {
if (!empty($value) && string_starts_with($field, 'search_')) { if (!empty($value) && string_starts_with($field, 'search_')) {
$field_name = str_replace('search_', '', $field); $field_name = str_replace('search_', '', $field);
echo ' echo '
search.push("search_' . $field_name . '"); search.push("search_'.$field_name.'");
search["search_' . $field_name . '"] = "' . addslashes($value) . '";'; search["search_'.$field_name.'"] = "'.addslashes($value).'";';
} }
} }
} }
@ -127,95 +127,95 @@ if (Auth::check()) {
]; ];
foreach ($translations as $key => $value) { foreach ($translations as $key => $value) {
echo ' echo '
' . $key . ': "' . addslashes($value) . '",'; '.$key.': "'.addslashes($value).'",';
} }
echo ' echo '
allegati: { allegati: {
messaggio: "' . tr('Clicca o trascina qui per caricare uno o più file') . '", messaggio: "'.tr('Clicca o trascina qui per caricare uno o più file').'",
maxFilesize: "' . tr('Dimensione massima: _SIZE_ MB') . '", maxFilesize: "'.tr('Dimensione massima: _SIZE_ MB').'",
errore: "' . tr('Errore') . '", errore: "'.tr('Errore').'",
modifica: "' . tr('Modifica allegato') . '", modifica: "'.tr('Modifica allegato').'",
elimina: "' . tr('Vuoi eliminare questo file?') . '", elimina: "'.tr('Vuoi eliminare questo file?').'",
procedi: "' . tr('Procedi') . '", procedi: "'.tr('Procedi').'",
}, },
ajax: { ajax: {
"missing": { "missing": {
"title": "' . tr('Errore') . '", "title": "'.tr('Errore').'",
"text": "' . tr('Alcuni campi obbligatori non sono stati compilati correttamente') . '", "text": "'.tr('Alcuni campi obbligatori non sono stati compilati correttamente').'",
}, },
"error": { "error": {
"title": "' . tr('Errore') . '", "title": "'.tr('Errore').'",
"text": "' . tr('Errore durante il salvataggio del record') . '", "text": "'.tr('Errore durante il salvataggio del record').'",
} }
}, },
password: { password: {
"wordMinLength": "' . tr('La password è troppo corta') . '", "wordMinLength": "'.tr('La password è troppo corta').'",
"wordMaxLength": "' . tr('La password è troppo lunga') . '", "wordMaxLength": "'.tr('La password è troppo lunga').'",
"wordInvalidChar": "' . tr('La password contiene un carattere non valido') . '", "wordInvalidChar": "'.tr('La password contiene un carattere non valido').'",
"wordNotEmail": "' . tr('Non usare la tua e-mail come password') . '", "wordNotEmail": "'.tr('Non usare la tua e-mail come password').'",
"wordSimilarToUsername": "' . tr('La password non può contenere il tuo nome') . '", "wordSimilarToUsername": "'.tr('La password non può contenere il tuo nome').'",
"wordTwoCharacterClasses": "' . tr('Usa classi di caratteri diversi') . '", "wordTwoCharacterClasses": "'.tr('Usa classi di caratteri diversi').'",
"wordRepetitions": "' . tr('La password contiene ripetizioni') . '", "wordRepetitions": "'.tr('La password contiene ripetizioni').'",
"wordSequences": "' . tr('La password contiene sequenze') . '", "wordSequences": "'.tr('La password contiene sequenze').'",
"errorList": "' . tr('Attenzione') . ':", "errorList": "'.tr('Attenzione').':",
"veryWeak": "' . tr('Molto debole') . '", "veryWeak": "'.tr('Molto debole').'",
"weak": "' . tr('Debole') . '", "weak": "'.tr('Debole').'",
"normal": "' . tr('Normale') . '", "normal": "'.tr('Normale').'",
"medium": "' . tr('Media') . '", "medium": "'.tr('Media').'",
"strong": "' . tr('Forte') . '", "strong": "'.tr('Forte').'",
"veryStrong": "' . tr('Molto forte') . '", "veryStrong": "'.tr('Molto forte').'",
}, },
datatables: { datatables: {
"emptyTable": "' . tr('Nessun dato presente nella tabella') . '", "emptyTable": "'.tr('Nessun dato presente nella tabella').'",
"info": "' . tr('Vista da _START_ a _END_ di _TOTAL_ elementi') . '", "info": "'.tr('Vista da _START_ a _END_ di _TOTAL_ elementi').'",
"infoEmpty": "' . tr('Vista da 0 a 0 di 0 elementi') . '", "infoEmpty": "'.tr('Vista da 0 a 0 di 0 elementi').'",
"infoFiltered": "(' . tr('filtrati da _MAX_ elementi totali') . ')", "infoFiltered": "('.tr('filtrati da _MAX_ elementi totali').')",
"infoPostFix": "", "infoPostFix": "",
"lengthMenu": "' . tr('Visualizza _MENU_ elementi') . '", "lengthMenu": "'.tr('Visualizza _MENU_ elementi').'",
"loadingRecords": " ", "loadingRecords": " ",
"processing": "' . tr('Elaborazione') . '...", "processing": "'.tr('Elaborazione').'...",
"search": "' . tr('Cerca') . ':", "search": "'.tr('Cerca').':",
"zeroRecords": "' . tr('La ricerca non ha portato alcun risultato') . '.", "zeroRecords": "'.tr('La ricerca non ha portato alcun risultato').'.",
"paginate": { "paginate": {
"first": "' . tr('Inizio') . '", "first": "'.tr('Inizio').'",
"previous": "' . tr('Precedente') . '", "previous": "'.tr('Precedente').'",
"next": "' . tr('Successivo') . '", "next": "'.tr('Successivo').'",
"last": "' . tr('Fine') . '" "last": "'.tr('Fine').'"
}, },
}, },
}; };
globals = { globals = {
rootdir: "' . base_path() . '", rootdir: "'.base_path().'",
js: "' . $paths['js'] . '", js: "'.$paths['js'].'",
css: "' . $paths['css'] . '", css: "'.$paths['css'].'",
img: "' . $paths['img'] . '", img: "'.$paths['img'].'",
id_module: "' . $id_module . '", id_module: "'.$id_module.'",
id_record: "' . $id_record . '", id_record: "'.$id_record.'",
is_mobile: ' . isMobile() . ', is_mobile: '.isMobile().',
cifre_decimali: ' . setting('Cifre decimali per importi') . ', cifre_decimali: '.setting('Cifre decimali per importi').',
timestamp_format: "' . formatter()->getTimestampPattern() . '", timestamp_format: "'.formatter()->getTimestampPattern().'",
date_format: "' . formatter()->getDatePattern() . '", date_format: "'.formatter()->getDatePattern().'",
time_format: "' . formatter()->getTimePattern() . '", time_format: "'.formatter()->getTimePattern().'",
decimals: "' . formatter()->getNumberSeparators()['decimals'] . '", decimals: "'.formatter()->getNumberSeparators()['decimals'].'",
thousands: "' . formatter()->getNumberSeparators()['thousands'] . '", thousands: "'.formatter()->getNumberSeparators()['thousands'].'",
currency: "' . currency() . '", currency: "'.currency().'",
search: search, search: search,
translations: translations, translations: translations,
locale: "' . explode('_', $lang)[0] . '", locale: "'.explode('_', $lang)[0].'",
full_locale: "' . $lang . '", full_locale: "'.$lang.'",
start_date: "' . $_SESSION['period_start'] . '", start_date: "'.$_SESSION['period_start'].'",
start_date_formatted: "' . Translator::dateToLocale($_SESSION['period_start']) . '", start_date_formatted: "'.Translator::dateToLocale($_SESSION['period_start']).'",
end_date: "' . $_SESSION['period_end'] . '", end_date: "'.$_SESSION['period_end'].'",
end_date_formatted: "' . Translator::dateToLocale($_SESSION['period_end']) . '", end_date_formatted: "'.Translator::dateToLocale($_SESSION['period_end']).'",
minute_stepping: ' . setting('Numero di minuti di avanzamento delle sessioni delle attività') . ', minute_stepping: '.setting('Numero di minuti di avanzamento delle sessioni delle attività').',
collapse_plugin_sidebar: ' . intval(setting('Nascondere la barra dei plugin di default')) . ', collapse_plugin_sidebar: '.intval(setting('Nascondere la barra dei plugin di default')).',
ckeditorToolbar: [ ckeditorToolbar: [
["Undo","Redo","-","Cut","Copy","Paste","PasteText","PasteFromWord","-","SpellChecker", "Scayt", "-","Link","Unlink","-","Bold","Italic","Underline","Superscript","SpecialChar","HorizontalRule","-","JustifyLeft","JustifyCenter","JustifyRight","JustifyBlock","-","NumberedList","BulletedList","Outdent","Indent","Blockquote","-","Styles","Format","Image","Table", "TextColor", "BGColor", "EmojiPanel" ], ["Undo","Redo","-","Cut","Copy","Paste","PasteText","PasteFromWord","-","SpellChecker", "Scayt", "-","Link","Unlink","-","Bold","Italic","Underline","Superscript","SpecialChar","HorizontalRule","-","JustifyLeft","JustifyCenter","JustifyRight","JustifyBlock","-","NumberedList","BulletedList","Outdent","Indent","Blockquote","-","Styles","Format","Image","Table", "TextColor", "BGColor", "EmojiPanel" ],
@ -238,46 +238,46 @@ if (Auth::check()) {
{ name: "tools", items : [ "Maximize", "ShowBlocks" ] }, { name: "tools", items : [ "Maximize", "ShowBlocks" ] },
{ name: "about", items: [ "About" ] } { name: "about", items: [ "About" ] }
], ],
order_manager_id: "' . ($dbo->isInstalled() ? (new Module())->getByField('title', 'Stato dei servizi', Models\Locale::getPredefined()->id) : '') . '", order_manager_id: "'.($dbo->isInstalled() ? (new Module())->getByField('title', 'Stato dei servizi', Models\Locale::getPredefined()->id) : '').'",
dataload_page_buffer: ' . setting('Lunghezza in pagine del buffer Datatables') . ', dataload_page_buffer: '.setting('Lunghezza in pagine del buffer Datatables').',
tempo_attesa_ricerche: ' . setting('Tempo di attesa ricerche in secondi') . ', tempo_attesa_ricerche: '.setting('Tempo di attesa ricerche in secondi').',
restrict_summables_to_selected: ' . setting('Totali delle tabelle ristretti alla selezione') . ', restrict_summables_to_selected: '.setting('Totali delle tabelle ristretti alla selezione').',
snapDuration: "' . setting('Tempo predefinito di snap attività sul calendario') . '" snapDuration: "'.setting('Tempo predefinito di snap attività sul calendario').'"
}; };
</script>'; </script>';
} else { } else {
echo ' echo '
<script> <script>
globals = { globals = {
rootdir: "' . base_path() . '", rootdir: "'.base_path().'",
search: {}, search: {},
translations: { translations: {
password: { password: {
"wordMinLength": "' . tr('La tua password è troppo corta') . '", "wordMinLength": "'.tr('La tua password è troppo corta').'",
"wordMaxLength": "' . tr('La tua password è troppo lunga') . '", "wordMaxLength": "'.tr('La tua password è troppo lunga').'",
"wordInvalidChar": "' . tr('La tua password contiene un carattere non valido') . '", "wordInvalidChar": "'.tr('La tua password contiene un carattere non valido').'",
"wordNotEmail": "' . tr('Non usare la tua e-mail come password') . '", "wordNotEmail": "'.tr('Non usare la tua e-mail come password').'",
"wordSimilarToUsername": "' . tr('La tua password non può contenere il tuo nome') . '", "wordSimilarToUsername": "'.tr('La tua password non può contenere il tuo nome').'",
"wordTwoCharacterClasses": "' . tr('Usa classi di caratteri diversi') . '", "wordTwoCharacterClasses": "'.tr('Usa classi di caratteri diversi').'",
"wordRepetitions": "' . tr('Troppe ripetizioni') . '", "wordRepetitions": "'.tr('Troppe ripetizioni').'",
"wordSequences": "' . tr('La tua password contiene sequenze') . '", "wordSequences": "'.tr('La tua password contiene sequenze').'",
"errorList": "' . tr('Errori') . ':", "errorList": "'.tr('Errori').':",
"veryWeak": "' . tr('Molto debole') . '", "veryWeak": "'.tr('Molto debole').'",
"weak": "' . tr('Debole') . '", "weak": "'.tr('Debole').'",
"normal": "' . tr('Normale') . '", "normal": "'.tr('Normale').'",
"medium": "' . tr('Media') . '", "medium": "'.tr('Media').'",
"strong": "' . tr('Forte') . '", "strong": "'.tr('Forte').'",
"veryStrong": "' . tr('Molto forte') . '", "veryStrong": "'.tr('Molto forte').'",
}, },
}, },
timestamp_format: "' . formatter()->getTimestampPattern() . '", timestamp_format: "'.formatter()->getTimestampPattern().'",
date_format: "' . formatter()->getDatePattern() . '", date_format: "'.formatter()->getDatePattern().'",
time_format: "' . formatter()->getTimePattern() . '", time_format: "'.formatter()->getTimePattern().'",
locale: "' . explode('_', $lang)[0] . '", locale: "'.explode('_', $lang)[0].'",
full_locale: "' . $lang . '", full_locale: "'.$lang.'",
}; };
</script>'; </script>';
} }
@ -285,7 +285,7 @@ if (Auth::check()) {
// JS // JS
foreach (App::getAssets()['js'] as $js) { foreach (App::getAssets()['js'] as $js) {
echo ' echo '
<script type="text/javascript" charset="utf-8" src="' . $js . '"></script>'; <script type="text/javascript" charset="utf-8" src="'.$js.'"></script>';
} }
// Impostazioni di default per gli alert // Impostazioni di default per gli alert
@ -295,7 +295,7 @@ echo '
buttonsStyling: false, buttonsStyling: false,
confirmButtonClass: "btn btn-lg btn-primary", confirmButtonClass: "btn btn-lg btn-primary",
cancelButtonClass: "btn btn-lg", cancelButtonClass: "btn btn-lg",
cancelButtonText: "' . tr('Annulla') . '", cancelButtonText: "'.tr('Annulla').'",
}); });
</script>'; </script>';
@ -308,7 +308,7 @@ if (Auth::check()) {
} }
if (setting('Attiva scorciatoie da tastiera')) { if (setting('Attiva scorciatoie da tastiera')) {
echo '<script type="text/javascript" charset="utf-8" src="' . App::getPaths()['js'] . '/hotkeys-js/hotkeys.min.js?v=' . $version . '"></script>'; echo '<script type="text/javascript" charset="utf-8" src="'.App::getPaths()['js'].'/hotkeys-js/hotkeys.min.js?v='.$version.'"></script>';
echo ' echo '
<script> <script>
@ -356,11 +356,11 @@ $hide_sidebar = Auth::check() && (setting('Nascondere la barra sinistra di defau
echo ' echo '
</head> </head>
<body class="sidebar-mini layout-fixed '. (!empty($hide_sidebar) ? ' sidebar-collapse' : '') . (!Auth::check() ? ' hold-transition login-page' : '') . '"> <body class="sidebar-mini layout-fixed '.(!empty($hide_sidebar) ? ' sidebar-collapse' : '').(!Auth::check() ? ' hold-transition login-page' : '').'">
<div class="' . (!Auth::check() ? '' : 'wrapper') . '">'; <div class="'.(!Auth::check() ? '' : 'wrapper').'">';
if (Auth::check()) { if (Auth::check()) {
$calendar_color_label = ($_SESSION['period_start'] != date('Y') . '-01-01' || $_SESSION['period_end'] != date('Y') . '-12-31') ? 'danger' : 'secondary'; $calendar_color_label = ($_SESSION['period_start'] != date('Y').'-01-01' || $_SESSION['period_end'] != date('Y').'-12-31') ? 'danger' : 'secondary';
echo ' echo '
<!-- Loader principale --> <!-- Loader principale -->
@ -390,8 +390,8 @@ if (Auth::check()) {
</a> </a>
</li> </li>
<li class="nav-item d-none d-sm-inline-block"> <li class="nav-item d-none d-sm-inline-block">
<a class="nav-link text-' . $calendar_color_label . '"> <a class="nav-link text-'.$calendar_color_label.'">
' . Translator::dateToLocale($_SESSION['period_start']) . ' - ' . Translator::dateToLocale($_SESSION['period_end']) . ' '.Translator::dateToLocale($_SESSION['period_start']).' - '.Translator::dateToLocale($_SESSION['period_end']).'
</a> </a>
</li> </li>
</ul> </ul>
@ -423,31 +423,31 @@ if (Auth::check()) {
echo ' echo '
<li class="nav-item"> <li class="nav-item">
<a href="#" onclick="window.print()" class="nav-link" title="' . tr('Stampa') . '"> <a href="#" onclick="window.print()" class="nav-link" title="'.tr('Stampa').'">
<i class="fa fa-print nav-icon"></i> <i class="fa fa-print nav-icon"></i>
</a> </a>
</li> </li>
<li class="nav-item"> <li class="nav-item">
<a href="' . base_path() . '/log.php" class="nav-link" title="' . tr('Log accessi') . '"> <a href="'.base_path().'/log.php" class="nav-link" title="'.tr('Log accessi').'">
<i class="fa fa-book nav-icon"></i> <i class="fa fa-book nav-icon"></i>
</a> </a>
</li> </li>
<li class="nav-item"> <li class="nav-item">
<a href="' . base_path() . '/shortcuts.php" class="nav-link" title="' . tr('Scorciatoie') . '"> <a href="'.base_path().'/shortcuts.php" class="nav-link" title="'.tr('Scorciatoie').'">
<i class="fa fa-keyboard-o nav-icon"></i> <i class="fa fa-keyboard-o nav-icon"></i>
</a> </a>
</li> </li>
<li class="nav-item"> <li class="nav-item">
<a href="' . base_path() . '/info.php" class="nav-link" title="' . tr('Informazioni') . '"> <a href="'.base_path().'/info.php" class="nav-link" title="'.tr('Informazioni').'">
<i class="fa fa-info nav-icon"></i> <i class="fa fa-info nav-icon"></i>
</a> </a>
</li> </li>
<li class="nav-item"> <li class="nav-item">
<a href="' . base_path() . '/index.php?op=logout" onclick="sessionStorage.clear()" class="nav-link bg-danger" title="' . tr('Esci') . '"> <a href="'.base_path().'/index.php?op=logout" onclick="sessionStorage.clear()" class="nav-link bg-danger" title="'.tr('Esci').'">
<i class="fa fa-power-off nav-icon"></i> <i class="fa fa-power-off nav-icon"></i>
</a> </a>
</li> </li>
@ -456,9 +456,9 @@ if (Auth::check()) {
<!-- /.navbar --> <!-- /.navbar -->
<!-- Main Sidebar Container --> <!-- Main Sidebar Container -->
<aside class="main-sidebar ' . $theme .' elevation-4"> <aside class="main-sidebar '.$theme.' elevation-4">
<a href="' . tr('https://www.openstamanager.com') . '" class="brand-link" title="' . tr("Il gestionale open source per l'assistenza tecnica e la fatturazione") . '" target="_blank"> <a href="'.tr('https://www.openstamanager.com').'" class="brand-link" title="'.tr("Il gestionale open source per l'assistenza tecnica e la fatturazione").'" target="_blank">
<img src="' . $rootdir . '/assets/dist/img/logo_completo.png" alt="' . tr("Il gestionale open source per l'assistenza tecnica e la fatturazione") . '" class="img-fluid"> <img src="'.$rootdir.'/assets/dist/img/logo_completo.png" alt="'.tr("Il gestionale open source per l'assistenza tecnica e la fatturazione").'" class="img-fluid">
<span class="brand-text font-weight-light">&nbsp;</span> <span class="brand-text font-weight-light">&nbsp;</span>
</a> </a>
@ -472,17 +472,17 @@ if (Auth::check()) {
$user_photo = $user->photo; $user_photo = $user->photo;
if ($user_photo) { if ($user_photo) {
echo ' echo '
<img src="' . $user_photo . '" class="img-circle elevation-2" alt="' . $user['username'] . '" />'; <img src="'.$user_photo.'" class="img-circle elevation-2" alt="'.$user['username'].'" />';
} else { } else {
echo ' echo '
<i class="fa fa-user-circle-o fa-2x" alt="' . tr('Utente') . '"></i>'; <i class="fa fa-user-circle-o fa-2x" alt="'.tr('Utente').'"></i>';
} }
echo ' echo '
</div> </div>
<div class="info"> <div class="info">
<a href="' . base_path() . '/modules/utenti/info.php" class="d-block"> <a href="'.base_path().'/modules/utenti/info.php" class="d-block">
' . $user['username'] . ' '.$user['username'].'
</a> </a>
</div> </div>
</div> </div>
@ -491,7 +491,7 @@ if (Auth::check()) {
<!-- SidebarSearch Form --> <!-- SidebarSearch Form -->
<div class="form-inline"> <div class="form-inline">
<div class="input-group" data-widget="sidebar-search"> <div class="input-group" data-widget="sidebar-search">
<input class="form-control form-control-sidebar" id="supersearch" type="search" placeholder="' . tr('Cerca') . '" aria-label="' . tr('Cerca') . '"> <input class="form-control form-control-sidebar" id="supersearch" type="search" placeholder="'.tr('Cerca').'" aria-label="'.tr('Cerca').'">
<div class="input-group-append"> <div class="input-group-append">
<button class="btn btn-sidebar"> <button class="btn btn-sidebar">
<i class="fa fa-search fa-fw"></i> <i class="fa fa-search fa-fw"></i>
@ -514,17 +514,17 @@ if (Auth::check()) {
// Menu laterale per la visualizzazione dei plugin // Menu laterale per la visualizzazione dei plugin
echo ' echo '
<aside class="control-sidebar control-sidebar-light"> <aside class="control-sidebar control-sidebar-light">
<h4><i class="fa fa-plug"></i> ' . tr('Plugin') . '</h4> <h4><i class="fa fa-plug"></i> '.tr('Plugin').'</h4>
<ul class="nav nav-tabs nav-pills nav-stacked"> <ul class="nav nav-tabs nav-pills nav-stacked">
<li data-toggle="control-sidebar" class="active btn-default nav-item"> <li data-toggle="control-sidebar" class="active btn-default nav-item">
<a class="nav-link" data-toggle="tab" href="#tab_0"> <a class="nav-link" data-toggle="tab" href="#tab_0">
' . $structure->getTranslation('title') . ' '.$structure->getTranslation('title').'
</a> </a>
</li>'; </li>';
// Tab dei plugin // Tab dei plugin
if (!empty($id_record)) { if (!empty($id_record)) {
$plugins = $dbo->fetchArray('SELECT `zz_plugins`.`id`, `title`, `options`, `options2` FROM `zz_plugins` LEFT JOIN `zz_plugins_lang` ON (`zz_plugins`.`id` = `zz_plugins_lang`.`id_record` AND `zz_plugins_lang`.`id_lang` = ' . prepare(Models\Locale::getDefault()->id) . ') WHERE `idmodule_to`=' . prepare($id_module) . " AND `position`='tab' AND `enabled` = 1 ORDER BY `zz_plugins`.`order` DESC"); $plugins = $dbo->fetchArray('SELECT `zz_plugins`.`id`, `title`, `options`, `options2` FROM `zz_plugins` LEFT JOIN `zz_plugins_lang` ON (`zz_plugins`.`id` = `zz_plugins_lang`.`id_record` AND `zz_plugins_lang`.`id_lang` = '.prepare(Models\Locale::getDefault()->id).') WHERE `idmodule_to`='.prepare($id_module)." AND `position`='tab' AND `enabled` = 1 ORDER BY `zz_plugins`.`order` DESC");
foreach ($plugins as $plugin) { foreach ($plugins as $plugin) {
// Badge count per record plugin // Badge count per record plugin
$count = 0; $count = 0;
@ -542,9 +542,9 @@ if (Auth::check()) {
echo ' echo '
<li data-widget="control-sidebar" class="btn-default nav-item" > <li data-widget="control-sidebar" class="btn-default nav-item" >
<a class="nav-link" data-widget="tab" href="#tab_' . $plugin['id'] . '" id="link-tab_' . $plugin['id'] . '"> <a class="nav-link" data-widget="tab" href="#tab_'.$plugin['id'].'" id="link-tab_'.$plugin['id'].'">
' . $plugin['title'] . ' '.$plugin['title'].'
<span class="right badge badge-danger">' . ($count > 0 ? $count : '') . '</span> <span class="right badge badge-danger">'.($count > 0 ? $count : '').'</span>
</a> </a>
</li>'; </li>';
} }
@ -557,8 +557,8 @@ if (Auth::check()) {
echo ' echo '
<li data-widget="control-sidebar" class="btn-default"> <li data-widget="control-sidebar" class="btn-default">
<a class="bg-info" data-widget="tab" href="#tab_note" id="link-tab_note"> <a class="bg-info" data-widget="tab" href="#tab_note" id="link-tab_note">
<' . tr('Note interne') . ' <'.tr('Note interne').'
<span class="badge pull-right">' . ($notes->count() ?: '') . '</span> <span class="badge pull-right">'.($notes->count() ?: '').'</span>
</a> </a>
</li>'; </li>';
} }
@ -571,8 +571,8 @@ if (Auth::check()) {
echo ' echo '
<li data-widget="control-sidebar" class="btn-default"> <li data-widget="control-sidebar" class="btn-default">
<a class="bg-info" data-widget="tab" href="#tab_checks" id="link-tab_checks"> <a class="bg-info" data-widget="tab" href="#tab_checks" id="link-tab_checks">
<' . tr('Checklist') . ' <'.tr('Checklist').'
<' . ($checklists_total->count() > 0) ? '<span class="badge pull-right">' . $checklists_unchecked->count() . tr(' / ') . $checklists_total->count() . '</span>' : '' . ' <'.($checklists_total->count() > 0) ? '<span class="badge pull-right">'.$checklists_unchecked->count().tr(' / ').$checklists_total->count().'</span>' : ''.'
</a> </a>
</li>'; </li>';
} }
@ -582,7 +582,7 @@ if (Auth::check()) {
echo ' echo '
<li data-widget="control-sidebar" class="btn-default"> <li data-widget="control-sidebar" class="btn-default">
<a class="bg-info" data-widget="tab" href="#tab_info" id="link-tab_info"> <a class="bg-info" data-widget="tab" href="#tab_info" id="link-tab_info">
<' . tr('Info') . ' <'.tr('Info').'
</a> </a>
</li>'; </li>';
} }
@ -620,7 +620,7 @@ if (Auth::check()) {
echo ' echo '
<div class="card card-warning card-center"> <div class="card card-warning card-center">
<div class="card-header with-border text-center"> <div class="card-header with-border text-center">
<h3 class="card-title">' . tr('Informazioni') . '</h3> <h3 class="card-title">'.tr('Informazioni').'</h3>
</div> </div>
<div class="card-body">'; <div class="card-body">';
@ -633,7 +633,7 @@ if (!empty($messages['info'])) {
echo ' echo '
<script> <script>
$(document).ready( function(){ $(document).ready( function(){
window.parent.toastr.success("' . $value . '", toastr.options); window.parent.toastr.success("'.$value.'", toastr.options);
}); });
</script>'; </script>';
} }
@ -644,8 +644,8 @@ if (!empty($messages['error'])) {
foreach ($messages['error'] as $value) { foreach ($messages['error'] as $value) {
echo ' echo '
<div class="alert alert-danger push"> <div class="alert alert-danger push">
<h4><i class="fa fa fa-ban"></i> ' . tr('Errore') . '</h4> <h4><i class="fa fa fa-ban"></i> '.tr('Errore').'</h4>
' . $value . ' '.$value.'
</div>'; </div>';
} }
} }
@ -655,8 +655,8 @@ if (!empty($messages['warning'])) {
foreach ($messages['warning'] as $value) { foreach ($messages['warning'] as $value) {
echo ' echo '
<div class="alert alert-warning push"> <div class="alert alert-warning push">
<h4><i class="fa fa-warning"></i> ' . tr('Attenzione') . '</h4> <h4><i class="fa fa-warning"></i> '.tr('Attenzione').'</h4>
' . $value . ' '.$value.'
</div>'; </div>';
} }
} }
@ -674,12 +674,12 @@ if ($free_space < ($space_limit * (1024 ** 3))) {
echo ' echo '
<div class="callout callout-warning"> <div class="callout callout-warning">
<h4> <h4>
<i class="fa fa-warning"></i> ' . tr('Spazio in esaurimento') . ' <i class="fa fa-warning"></i> '.tr('Spazio in esaurimento').'
</h4> </h4>
<p>' . tr('Lo spazio a disposizione del gestionale è in esaurimento: sono al momento disponibili _TOT_', [ <p>'.tr('Lo spazio a disposizione del gestionale è in esaurimento: sono al momento disponibili _TOT_', [
'_TOT_' => FileSystem::formatBytes($free_space), '_TOT_' => FileSystem::formatBytes($free_space),
]) . '.</p> ]).'.</p>
<p>' . tr('Questo può risultare un serio problema per la continuità di funzionamento del software, poiché le operazioni più espansive che richiedono spazio di archiviazione possono causare malfunzionamenti imprevisti') . '. ' . tr('Ad esempio, le attività di backup, caricamento di allegati o anche l\'utilizzo normale del gestionale potrebbero rendere i dati inaffidabili, provocando pertanto una perdita delle informazioni salvate') . '.</p> <p>'.tr('Questo può risultare un serio problema per la continuità di funzionamento del software, poiché le operazioni più espansive che richiedono spazio di archiviazione possono causare malfunzionamenti imprevisti').'. '.tr('Ad esempio, le attività di backup, caricamento di allegati o anche l\'utilizzo normale del gestionale potrebbero rendere i dati inaffidabili, provocando pertanto una perdita delle informazioni salvate').'.</p>
<p>' . tr('Contatta gli amministratori di sistema per risolvere al più presto il problema') . '.</p> <p>'.tr('Contatta gli amministratori di sistema per risolvere al più presto il problema').'.</p>
</div>'; </div>';
} }

View File

@ -116,14 +116,14 @@ if (Update::isBeta()) {
// Controllo se è una beta e in caso mostro un warning // Controllo se è una beta e in caso mostro un warning
if (Auth::isBrute()) { if (Auth::isBrute()) {
echo' echo '
<div class="box box-danger" id="brute"> <div class="box box-danger" id="brute">
<div class="box-header with-border text-center"> <div class="box-header with-border text-center">
<h3 class="box-title">'.tr('Attenzione').'</h3> <h3 class="box-title">'.tr('Attenzione').'</h3>
</div> </div>
<div class="box-body text-center"> <div class="box-body text-center">
<p>'.tr('Sono stati effettuati troppi tentativi di accesso consecutivi!').'</p> <p>'.tr('Sono stati effettuati troppi tentativi di accesso consecutivi!').'</p>
<p>'. tr('Tempo rimanente (in secondi)').': <span id="brute-timeout">'.(Auth::getBruteTimeout() + 1).'</span></p> <p>'.tr('Tempo rimanente (in secondi)').': <span id="brute-timeout">'.(Auth::getBruteTimeout() + 1).'</span></p>
</div> </div>
</div> </div>

View File

@ -36,4 +36,4 @@ foreach ($subcategorie as $sub) {
</a> </a>
</td> </td>
</tr>'; </tr>';
} }

View File

@ -163,7 +163,7 @@ if (!empty($interventi)) {
</tr>'; </tr>';
// Raggruppamento per articolo con lo stesso prezzo // Raggruppamento per articolo con lo stesso prezzo
$ricavo = ($articolo->imponibile - $articolo->sconto) / ($articolo->qta>0 ? $articolo->qta : 1); $ricavo = ($articolo->imponibile - $articolo->sconto) / ($articolo->qta > 0 ? $articolo->qta : 1);
$costo = $articolo->spesa / ($articolo->qta > 0 ? $articolo->qta : 1); $costo = $articolo->spesa / ($articolo->qta > 0 ? $articolo->qta : 1);
$descrizione = $articolo->articolo->codice.' - '.$articolo->articolo->getTranslation('title'); $descrizione = $articolo->articolo->codice.' - '.$articolo->articolo->getTranslation('title');
@ -344,7 +344,7 @@ foreach ($tipologie as $key => $tipologia) {
$margine = $tipologia['ricavo'] - $tipologia['costo']; $margine = $tipologia['ricavo'] - $tipologia['costo'];
if ($tipologia['ricavo']) { if ($tipologia['ricavo']) {
$margine_prc = (int) (1 - ($tipologia['costo'] / ($tipologia['ricavo'] > 0 ? $tipologia['ricavo'] : 1))) * 100; $margine_prc = (int) (1 - ($tipologia['costo'] / ($tipologia['ricavo'] > 0 ? $tipologia['ricavo'] : 1))) * 100;
$ricarico_prc = ($tipologia['ricavo'] && $tipologia['costo']) ? (int) ((($tipologia['ricavo'] / ($tipologia['costo']> 0 ? $tipologia['costo'] : 1)) - 1) * 100) : 100; $ricarico_prc = ($tipologia['ricavo'] && $tipologia['costo']) ? (int) ((($tipologia['ricavo'] / ($tipologia['costo'] > 0 ? $tipologia['costo'] : 1)) - 1) * 100) : 100;
} }
echo ' echo '
@ -376,7 +376,7 @@ ksort($tecnici);
foreach ($tecnici as $key => $tecnico) { foreach ($tecnici as $key => $tecnico) {
$margine = $tecnico['ricavo'] - $tecnico['costo']; $margine = $tecnico['ricavo'] - $tecnico['costo'];
if ($tecnico['ricavo']) { if ($tecnico['ricavo']) {
$margine_prc = (int) (1 - ($tecnico['costo'] / ($tecnico['ricavo']>0 ? $tecnico['ricavo'] : 1))) * 100; $margine_prc = (int) (1 - ($tecnico['costo'] / ($tecnico['ricavo'] > 0 ? $tecnico['ricavo'] : 1))) * 100;
$ricarico_prc = ($tecnico['ricavo'] && $tecnico['costo']) ? (int) ((($tecnico['ricavo'] / ($tecnico['costo'] > 0 ? $tecnico['costo'] : 1)) - 1) * 100) : 100; $ricarico_prc = ($tecnico['ricavo'] && $tecnico['costo']) ? (int) ((($tecnico['ricavo'] / ($tecnico['costo'] > 0 ? $tecnico['costo'] : 1)) - 1) * 100) : 100;
} }
echo ' echo '
@ -442,7 +442,7 @@ foreach ($materiali_art as $key => $materiali_array1) {
foreach ($materiali_array1 as $materiali_array2) { foreach ($materiali_array1 as $materiali_array2) {
foreach ($materiali_array2 as $materiale) { foreach ($materiali_array2 as $materiale) {
$margine = $materiale['ricavo'] - $materiale['costo']; $margine = $materiale['ricavo'] - $materiale['costo'];
$margine_prc = (int) (1 - ($materiale['costo'] / ($materiale['ricavo']>0 ? $materiale['ricavo'] : 1))) * 100; $margine_prc = (int) (1 - ($materiale['costo'] / ($materiale['ricavo'] > 0 ? $materiale['ricavo'] : 1))) * 100;
$ricarico_prc = ($materiale['ricavo'] && $materiale['costo']) ? (int) ((($materiale['ricavo'] / ($materiale['costo'] > 0 ? $materiale['costo'] : 1)) - 1) * 100) : 100; $ricarico_prc = ($materiale['ricavo'] && $materiale['costo']) ? (int) ((($materiale['ricavo'] / ($materiale['costo'] > 0 ? $materiale['costo'] : 1)) - 1) * 100) : 100;
echo ' echo '
<tr> <tr>
@ -461,7 +461,7 @@ ksort($materiali_righe);
foreach ($materiali_righe as $key => $materiale) { foreach ($materiali_righe as $key => $materiale) {
$margine = $materiale['ricavo'] - $materiale['costo']; $margine = $materiale['ricavo'] - $materiale['costo'];
$margine_prc = (int) (1 - ($materiale['costo'] / ($materiale['ricavo'] > 0 ? $materiale['ricavo'] : 1))) * 100; $margine_prc = (int) (1 - ($materiale['costo'] / ($materiale['ricavo'] > 0 ? $materiale['ricavo'] : 1))) * 100;
$ricarico_prc = ($materiale['ricavo'] && $materiale['costo']) ? (int) ((($materiale['ricavo'] / ($materiale['costo']>0 ? $materiale['costo'] : 1)) - 1) * 100) : 100; $ricarico_prc = ($materiale['ricavo'] && $materiale['costo']) ? (int) ((($materiale['ricavo'] / ($materiale['costo'] > 0 ? $materiale['costo'] : 1)) - 1) * 100) : 100;
echo ' echo '
<tr> <tr>
<td>'.$key.'</td> <td>'.$key.'</td>

View File

@ -109,7 +109,7 @@ foreach ($stati_intervento as $stato) {
<li> <li>
<input type="checkbox" id="stato_'.$stato['id'].'" class="dashboard_stato" value="'.$stato['id'].'" '.$attr.'> <input type="checkbox" id="stato_'.$stato['id'].'" class="dashboard_stato" value="'.$stato['id'].'" '.$attr.'>
<label for="stato_'.$stato['id'].'"> <label for="stato_'.$stato['id'].'">
'.$stato['descrizione']. '&nbsp;<span class="pull-right" style="background-color:'.$stato['colore'].';"></span> '.$stato['descrizione'].'&nbsp;<span class="pull-right" style="background-color:'.$stato['colore'].';"></span>
</label> </label>
</li>'; </li>';
} }
@ -182,7 +182,7 @@ foreach ($tecnici_disponibili as $tecnico) {
<li> <li>
<input type="checkbox" id="tecnico_'.$tecnico['id'].'" class="dashboard_tecnico" value="'.$tecnico['id'].'" '.$attr.'> <input type="checkbox" id="tecnico_'.$tecnico['id'].'" class="dashboard_tecnico" value="'.$tecnico['id'].'" '.$attr.'>
<label for="tecnico_'.$tecnico['id'].'"> <label for="tecnico_'.$tecnico['id'].'">
'.$tecnico['ragione_sociale']. '&nbsp;<span class="pull-right" style="background-color:'.$tecnico['colore'].';"></span> '.$tecnico['ragione_sociale'].'&nbsp;<span class="pull-right" style="background-color:'.$tecnico['colore'].';"></span>
</label> </label>
</li>'; </li>';
} }

View File

@ -27,7 +27,7 @@ $gruppi = Setting::selectRaw('sezione AS nome, COUNT(id) AS numero')
->orderBy('sezione') ->orderBy('sezione')
->get(); ->get();
echo' echo '
<div class="container"> <div class="container">
<div class="row"> <div class="row">
<div class="col-md-6 offset-md-3"> <div class="col-md-6 offset-md-3">

View File

@ -75,4 +75,4 @@ echo '
</li> </li>
</ul> </ul>
</div>'; </div>';
*/ */

View File

@ -362,7 +362,7 @@ if (!empty($record['idcontratto'])) {
?> ?>
<!-- Fatturazione Elettronica PA--> <!-- Fatturazione Elettronica PA-->
<div class="card card-primary collapsable collapsed-card" > <div class="card card-primary collapsable collapsed-card" >
<div class="card-header with-border <?php echo ($record['tipo_anagrafica'] == 'Ente pubblico' || $record['tipo_anagrafica'] == 'Azienda') ? '': 'hidden'; ?>"> <div class="card-header with-border <?php echo ($record['tipo_anagrafica'] == 'Ente pubblico' || $record['tipo_anagrafica'] == 'Azienda') ? '' : 'hidden'; ?>">
<h3 class="card-title"><?php echo tr('Dati appalto'); ?></h3> <h3 class="card-title"><?php echo tr('Dati appalto'); ?></h3>
<div class="card-tools pull-right"> <div class="card-tools pull-right">
<button type="button" class="btn btn-card-tool" data-card-widget="collapse"> <button type="button" class="btn btn-card-tool" data-card-widget="collapse">
@ -404,15 +404,15 @@ if (!empty($record['idcontratto'])) {
<div class="card-body"> <div class="card-body">
<?php <?php
if ($show_prezzi) { if ($show_prezzi) {
echo " echo "
<div class=\"pull-right\"> <div class=\"pull-right\">
<a class='btn btn-default btn-details' onclick=\"$('.extra').removeClass('hide'); $(this).addClass('hide'); $('#dontshowall_dettagli').removeClass('hide');\" id='showall_dettagli'><i class='fa fa-square-o'></i> <?php echo tr('Visualizza dettaglio costi'); ?></a> <a class='btn btn-default btn-details' onclick=\"$('.extra').removeClass('hide'); $(this).addClass('hide'); $('#dontshowall_dettagli').removeClass('hide');\" id='showall_dettagli'><i class='fa fa-square-o'></i> <?php echo tr('Visualizza dettaglio costi'); ?></a>
<a class='btn btn-info btn-details hide' onclick=\"$('.extra').addClass('hide'); $(this).addClass('hide'); $('#showall_dettagli').removeClass('hide');\" id='dontshowall_dettagli'><i class='fa fa-check-square-o'></i> <?php echo tr('Visualizza dettaglio costi'); ?></a> <a class='btn btn-info btn-details hide' onclick=\"$('.extra').addClass('hide'); $(this).addClass('hide'); $('#showall_dettagli').removeClass('hide');\" id='dontshowall_dettagli'><i class='fa fa-check-square-o'></i> <?php echo tr('Visualizza dettaglio costi'); ?></a>
</div> </div>
<div class=\"clearfix\"></div> <div class=\"clearfix\"></div>
<br>"; <br>";
} }
?> ?>
<div class="row"> <div class="row">

View File

@ -160,7 +160,7 @@ if (!empty($interventi)) {
</tr>'; </tr>';
// Raggruppamento per articolo con lo stesso prezzo // Raggruppamento per articolo con lo stesso prezzo
$ricavo = ($articolo->imponibile - $articolo->sconto) / ($articolo->qta>0 ? $articolo->qta : 1); $ricavo = ($articolo->imponibile - $articolo->sconto) / ($articolo->qta > 0 ? $articolo->qta : 1);
$costo = $articolo->spesa / ($articolo->qta > 0 ? $articolo->qta : 1); $costo = $articolo->spesa / ($articolo->qta > 0 ? $articolo->qta : 1);
$descrizione = $articolo->articolo->codice.' - '.$articolo->articolo->getTranslation('title'); $descrizione = $articolo->articolo->codice.' - '.$articolo->articolo->getTranslation('title');
@ -288,7 +288,7 @@ ksort($tipologie);
foreach ($tipologie as $key => $tipologia) { foreach ($tipologie as $key => $tipologia) {
$margine = $tipologia['ricavo'] - $tipologia['costo']; $margine = $tipologia['ricavo'] - $tipologia['costo'];
$margine_prc = (int) (1 - ($tipologia['costo'] / ($tipologia['ricavo'] > 0 ? $tipologia['ricavo'] : 1))) * 100; $margine_prc = (int) (1 - ($tipologia['costo'] / ($tipologia['ricavo'] > 0 ? $tipologia['ricavo'] : 1))) * 100;
$ricarico_prc = ($tipologia['ricavo'] && $tipologia['costo']) ? (int) ((($tipologia['ricavo'] / ($tipologia['costo']>0 ? $tipologia['costo'] : 1)) - 1) * 100) : 100; $ricarico_prc = ($tipologia['ricavo'] && $tipologia['costo']) ? (int) ((($tipologia['ricavo'] / ($tipologia['costo'] > 0 ? $tipologia['costo'] : 1)) - 1) * 100) : 100;
echo ' echo '
<tr> <tr>
<td>'.$key.'</td> <td>'.$key.'</td>
@ -349,8 +349,8 @@ echo '
ksort($stati_intervento); ksort($stati_intervento);
foreach ($stati_intervento as $key => $stato) { foreach ($stati_intervento as $key => $stato) {
$margine = $stato['ricavo'] - $stato['costo']; $margine = $stato['ricavo'] - $stato['costo'];
$margine_prc = (int) (1 - ($stato['costo'] / ($stato['ricavo']>0 ? $stato['ricavo'] : 1))) * 100; $margine_prc = (int) (1 - ($stato['costo'] / ($stato['ricavo'] > 0 ? $stato['ricavo'] : 1))) * 100;
$ricarico_prc = ($stato['ricavo'] && $stato['costo']) ? (int) ((($stato['ricavo'] / ($stato['costo']>0 ? $stato['costo'] : 1)) - 1) * 100) : 100; $ricarico_prc = ($stato['ricavo'] && $stato['costo']) ? (int) ((($stato['ricavo'] / ($stato['costo'] > 0 ? $stato['costo'] : 1)) - 1) * 100) : 100;
echo ' echo '
<tr> <tr>
<td><div class="img-circle" style="width:18px; height:18px; position:relative; bottom:-2px; background:'.$stato['colore'].'; float:left;"></div> '.$key.'</td> <td><div class="img-circle" style="width:18px; height:18px; position:relative; bottom:-2px; background:'.$stato['colore'].'; float:left;"></div> '.$key.'</td>
@ -380,7 +380,7 @@ foreach ($materiali_art as $key => $materiali_array1) {
foreach ($materiali_array1 as $materiali_array2) { foreach ($materiali_array1 as $materiali_array2) {
foreach ($materiali_array2 as $materiale) { foreach ($materiali_array2 as $materiale) {
$margine = $materiale['ricavo'] - $materiale['costo']; $margine = $materiale['ricavo'] - $materiale['costo'];
$margine_prc = (int) (1 - ($materiale['costo'] / ($materiale['ricavo'] ? $materiale['ricavo']: 1))) * 100; $margine_prc = (int) (1 - ($materiale['costo'] / ($materiale['ricavo'] ? $materiale['ricavo'] : 1))) * 100;
$ricarico_prc = ($materiale['ricavo'] && $materiale['costo']) ? (int) ((($materiale['ricavo'] / ($materiale['costo'] ? $materiale['costo'] : 1)) - 1) * 100) : 100; $ricarico_prc = ($materiale['ricavo'] && $materiale['costo']) ? (int) ((($materiale['ricavo'] / ($materiale['costo'] ? $materiale['costo'] : 1)) - 1) * 100) : 100;
echo ' echo '
<tr> <tr>

View File

@ -161,8 +161,8 @@ if (!empty($interventi)) {
// Raggruppamento per articolo con lo stesso prezzo // Raggruppamento per articolo con lo stesso prezzo
if ($riga_articolo->qta) { if ($riga_articolo->qta) {
$ricavo = ($riga_articolo->imponibile - $riga_articolo->sconto) / ($riga_articolo->qta > 0 ? $riga_articolo-> qta : 1); $ricavo = ($riga_articolo->imponibile - $riga_articolo->sconto) / ($riga_articolo->qta > 0 ? $riga_articolo->qta : 1);
$costo = $riga_articolo->spesa / ($riga_articolo->qta > 0 ? $riga_articolo-> qta : 1); $costo = $riga_articolo->spesa / ($riga_articolo->qta > 0 ? $riga_articolo->qta : 1);
} }
$descrizione = $riga_articolo->articolo->codice.' - '.$riga_articolo->articolo->getTranslation('title'); $descrizione = $riga_articolo->articolo->codice.' - '.$riga_articolo->articolo->getTranslation('title');
@ -319,8 +319,8 @@ echo '
ksort($tecnici); ksort($tecnici);
foreach ($tecnici as $key => $tecnico) { foreach ($tecnici as $key => $tecnico) {
$margine = $tecnico['ricavo'] - $tecnico['costo']; $margine = $tecnico['ricavo'] - $tecnico['costo'];
$margine_prc = ($tecnico['ricavo'] && $tecnico['costo']) ? (int) (1 - ($tecnico['costo'] / ($tecnico['ricavo']> 0 ? $tecnico['ricavo']: 1))) * 100 : 100; $margine_prc = ($tecnico['ricavo'] && $tecnico['costo']) ? (int) (1 - ($tecnico['costo'] / ($tecnico['ricavo'] > 0 ? $tecnico['ricavo'] : 1))) * 100 : 100;
$ricarico_prc = ($tecnico['ricavo'] && $tecnico['costo']) ? (int) ((($tecnico['ricavo'] / ($tecnico['costo']>0 ? $tecnico['costo'] : 1)) - 1) * 100) : 100; $ricarico_prc = ($tecnico['ricavo'] && $tecnico['costo']) ? (int) ((($tecnico['ricavo'] / ($tecnico['costo'] > 0 ? $tecnico['costo'] : 1)) - 1) * 100) : 100;
echo ' echo '
<tr> <tr>
<td>'.$key.'</td> <td>'.$key.'</td>
@ -382,7 +382,7 @@ foreach ($materiali_art as $key => $materiali_array1) {
foreach ($materiali_array1 as $materiali_array2) { foreach ($materiali_array1 as $materiali_array2) {
foreach ($materiali_array2 as $materiale) { foreach ($materiali_array2 as $materiale) {
$margine = $materiale['ricavo'] - $materiale['costo']; $margine = $materiale['ricavo'] - $materiale['costo'];
$margine_prc = ($materiale['ricavo'] && $materiale['costo']) ? (int) (1 - ($materiale['costo'] / ($materiale['ricavo']>0 ? $materiale['ricavo'] : 1))) * 100 : 100; $margine_prc = ($materiale['ricavo'] && $materiale['costo']) ? (int) (1 - ($materiale['costo'] / ($materiale['ricavo'] > 0 ? $materiale['ricavo'] : 1))) * 100 : 100;
$ricarico_prc = ($materiale['ricavo'] && $materiale['costo']) ? (int) ((($materiale['ricavo'] / ($materiale['costo'] > 0 ? $materiale['costo'] : 1)) - 1) * 100) : 100; $ricarico_prc = ($materiale['ricavo'] && $materiale['costo']) ? (int) ((($materiale['ricavo'] / ($materiale['costo'] > 0 ? $materiale['costo'] : 1)) - 1) * 100) : 100;
echo ' echo '
<tr> <tr>
@ -401,7 +401,7 @@ ksort($materiali_righe);
foreach ($materiali_righe as $key => $materiale) { foreach ($materiali_righe as $key => $materiale) {
$margine = $materiale['ricavo'] - $materiale['costo']; $margine = $materiale['ricavo'] - $materiale['costo'];
$margine_prc = ($materiale['ricavo']) ? (int) (1 - ($materiale['costo'] / ($materiale['ricavo'] > 0 ? $materiale['ricavo'] : 1))) * 100 : 0; $margine_prc = ($materiale['ricavo']) ? (int) (1 - ($materiale['costo'] / ($materiale['ricavo'] > 0 ? $materiale['ricavo'] : 1))) * 100 : 0;
$ricarico_prc = ($materiale['ricavo'] && $materiale['costo']) ? (int) ((($materiale['ricavo'] / ($materiale['costo']> 0 ? $materiale['costo'] : 1)) - 1) * 100) : 100; $ricarico_prc = ($materiale['ricavo'] && $materiale['costo']) ? (int) ((($materiale['ricavo'] / ($materiale['costo'] > 0 ? $materiale['costo'] : 1)) - 1) * 100) : 100;
echo ' echo '
<tr> <tr>
<td>'.$key.'</td> <td>'.$key.'</td>

View File

@ -4,35 +4,35 @@ echo '
<div class="container"> <div class="container">
<div class="row"> <div class="row">
<div class=col-md-12"> <div class=col-md-12">
<h5>'.tr('Legenda'). ':</h5> <h5>'.tr('Legenda').':</h5>
</div> </div>
</div> </div>
<div class="row"> <div class="row">
<div class="col-md-4"> <div class="col-md-4">
<span class="pull-left icon" style="background-color:#CCFFCC;"></span> <span class="pull-left icon" style="background-color:#CCFFCC;"></span>
<span class="text">&nbsp;'.tr('Scadenza pagata'). '</span> <span class="text">&nbsp;'.tr('Scadenza pagata').'</span>
</div> </div>
<div class="col-md-4"> <div class="col-md-4">
<span class="pull-left icon" style="background-color:#ec5353;"></span> <span class="pull-left icon" style="background-color:#ec5353;"></span>
<span class="text">&nbsp;' . tr('Data concordata superata') . '</span> <span class="text">&nbsp;'.tr('Data concordata superata').'</span>
</div> </div>
<div class="col-md-4"> <div class="col-md-4">
<span class="pull-left icon" style="background-color:#b3d2e3;"></span> <span class="pull-left icon" style="background-color:#b3d2e3;"></span>
<span class="text">&nbsp;' . tr('Data concordata') . '</span> <span class="text">&nbsp;'.tr('Data concordata').'</span>
</div> </div>
</div> </div>
<div class="row"> <div class="row">
<div class="col-md-4"> <div class="col-md-4">
<span class="pull-left icon" style="background-color:#f08080;"></span> <span class="pull-left icon" style="background-color:#f08080;"></span>
<span class="text">&nbsp;' . tr('Scaduta') . '</span> <span class="text">&nbsp;'.tr('Scaduta').'</span>
</div> </div>
<div class="col-md-4"> <div class="col-md-4">
<span class="pull-left icon" style="background-color:#f9f9c6;"></span> <span class="pull-left icon" style="background-color:#f9f9c6;"></span>
<span class="text">&nbsp;' . tr('Scadenza entro 10 giorni') . '</span> <span class="text">&nbsp;'.tr('Scadenza entro 10 giorni').'</span>
</div> </div>
<div class="col-md-4"> <div class="col-md-4">
<span class="pull-left icon" style="background-color:#ffffff;"></span> <span class="pull-left icon" style="background-color:#ffffff;"></span>
<span class="text">&nbsp;Scadenza futura</span> <span class="text">&nbsp;Scadenza futura</span>
</div> </div>
</div> </div>
</div>'; </div>';

View File

@ -185,7 +185,7 @@ foreach ($scadenze as $i => $scadenza) {
$id_pagamento = Pagamento::find($scadenza['id_pagamento']); $id_pagamento = Pagamento::find($scadenza['id_pagamento']);
$pagamento = $dbo->fetchOne('SELECT `co_pagamenti`.`id` FROM `fe_modalita_pagamento` INNER JOIN `fe_modalita_pagamento_lang` ON (`fe_modalita_pagamento_lang`.`id_record` = `fe_modalita_pagamento`.`codice` AND `fe_modalita_pagamento_lang`.`id_lang` = '.\Models\Locale::getDefault()->id.') INNER JOIN `co_pagamenti` ON `fe_modalita_pagamento`.`codice` = `co_pagamenti`.`codice_modalita_pagamento_fe` WHERE `fe_modalita_pagamento`.`codice` LIKE '.prepare($id_pagamento->codice_modalita_pagamento_fe).'')['id']; $pagamento = $dbo->fetchOne('SELECT `co_pagamenti`.`id` FROM `fe_modalita_pagamento` INNER JOIN `fe_modalita_pagamento_lang` ON (`fe_modalita_pagamento_lang`.`id_record` = `fe_modalita_pagamento`.`codice` AND `fe_modalita_pagamento_lang`.`id_lang` = '.Models\Locale::getDefault()->id.') INNER JOIN `co_pagamenti` ON `fe_modalita_pagamento`.`codice` = `co_pagamenti`.`codice_modalita_pagamento_fe` WHERE `fe_modalita_pagamento`.`codice` LIKE '.prepare($id_pagamento->codice_modalita_pagamento_fe).'')['id'];
echo ' echo '
<tr class="'.$class.'"> <tr class="'.$class.'">
<input type="hidden" name="id_scadenza['.$i.']" value="'.$scadenza['id'].'"> <input type="hidden" name="id_scadenza['.$i.']" value="'.$scadenza['id'].'">
@ -206,7 +206,7 @@ foreach ($scadenze as $i => $scadenza) {
</td> </td>
<td> <td>
{[ "type": "select", "name": "id_pagamento['.$i.']", "values": "query=SELECT `co_pagamenti`.`id`, `fe_modalita_pagamento_lang`.`title` as descrizione FROM `fe_modalita_pagamento` LEFT JOIN `fe_modalita_pagamento_lang` ON (`fe_modalita_pagamento_lang`.`id_record` = `fe_modalita_pagamento`.`codice` AND `fe_modalita_pagamento_lang`.`id_lang` = '.\Models\Locale::getDefault()->id.') INNER JOIN `co_pagamenti` ON `fe_modalita_pagamento`.`codice` = `co_pagamenti`.`codice_modalita_pagamento_fe` GROUP BY title", "value": "'.$pagamento.'" ]} {[ "type": "select", "name": "id_pagamento['.$i.']", "values": "query=SELECT `co_pagamenti`.`id`, `fe_modalita_pagamento_lang`.`title` as descrizione FROM `fe_modalita_pagamento` LEFT JOIN `fe_modalita_pagamento_lang` ON (`fe_modalita_pagamento_lang`.`id_record` = `fe_modalita_pagamento`.`codice` AND `fe_modalita_pagamento_lang`.`id_lang` = '.Models\Locale::getDefault()->id.') INNER JOIN `co_pagamenti` ON `fe_modalita_pagamento`.`codice` = `co_pagamenti`.`codice_modalita_pagamento_fe` GROUP BY title", "value": "'.$pagamento.'" ]}
</td> </td>
<td align="center"> <td align="center">
@ -297,7 +297,7 @@ echo '
</td> </td>
<td> <td>
{[ "type": "select", "name": "id_pagamento[-id-]", "values": "query=SELECT `co_pagamenti`.`id`, `fe_modalita_pagamento_lang`.`title` as descrizione FROM `fe_modalita_pagamento` LEFT JOIN `fe_modalita_pagamento_lang` ON (`fe_modalita_pagamento_lang`.`id_record` = `fe_modalita_pagamento`.`codice` AND `fe_modalita_pagamento_lang`.`id_lang` = '.\Models\Locale::getDefault()->id.') INNER JOIN `co_pagamenti` ON `fe_modalita_pagamento`.`codice` = `co_pagamenti`.`codice_modalita_pagamento_fe` GROUP BY title"]} {[ "type": "select", "name": "id_pagamento[-id-]", "values": "query=SELECT `co_pagamenti`.`id`, `fe_modalita_pagamento_lang`.`title` as descrizione FROM `fe_modalita_pagamento` LEFT JOIN `fe_modalita_pagamento_lang` ON (`fe_modalita_pagamento_lang`.`id_record` = `fe_modalita_pagamento`.`codice` AND `fe_modalita_pagamento_lang`.`id_lang` = '.Models\Locale::getDefault()->id.') INNER JOIN `co_pagamenti` ON `fe_modalita_pagamento`.`codice` = `co_pagamenti`.`codice_modalita_pagamento_fe` GROUP BY title"]}
</td> </td>
<td align="center"> <td align="center">

View File

@ -36,7 +36,7 @@ $(document).ready(function() {
url: globals.rootdir + "/actions.php", url: globals.rootdir + "/actions.php",
type: "get", type: "get",
data: { data: {
id_module: '.$id_module. ', id_module: '.$id_module.',
op: "sizes", op: "sizes",
}, },
success: function(data) { success: function(data) {

View File

@ -96,7 +96,7 @@ foreach ($fields as $key => $field) {
</div> </div>
<div class="col-md-4"> <div class="col-md-4">
{[ "type": "select", "label": "'.tr('Calcolo a fine colonna').'", "name": "sum-avg['.$key.']", "values": "list=\"0\":\"'.tr('Nessuno').'\",\"sum\":\"'.tr('Somma').'\",\"avg\":\"'.tr('Media').'\"", "value": "'.( $field->summable ? 'sum' : ($field->avg ? 'avg' : '' )).'", "help": "'.tr('Scegli quale tipo di totale valori vuoi calcolare a fine tabella').'" ]} {[ "type": "select", "label": "'.tr('Calcolo a fine colonna').'", "name": "sum-avg['.$key.']", "values": "list=\"0\":\"'.tr('Nessuno').'\",\"sum\":\"'.tr('Somma').'\",\"avg\":\"'.tr('Media').'\"", "value": "'.($field->summable ? 'sum' : ($field->avg ? 'avg' : '')).'", "help": "'.tr('Scegli quale tipo di totale valori vuoi calcolare a fine tabella').'" ]}
</div> </div>
</div> </div>

View File

@ -521,7 +521,7 @@ class Gestore
->setNumberOfTransactions($this->numero_transazioni_debito_diretto); ->setNumberOfTransactions($this->numero_transazioni_debito_diretto);
$this->debito_diretto->setGroupHeader($groupHeader); $this->debito_diretto->setGroupHeader($groupHeader);
if($groupHeader->getNumberOfTransactions() > 0) { if ($groupHeader->getNumberOfTransactions() > 0) {
$xml = $this->debito_diretto->xml(); $xml = $this->debito_diretto->xml();
// Generazione filename // Generazione filename

View File

@ -23,7 +23,6 @@ $pageTitle = tr('Scorciatoie');
include_once App::filepath('include|custom|', 'top.php'); include_once App::filepath('include|custom|', 'top.php');
echo ' echo '
<div class="card"> <div class="card">
<div class="card-header"> <div class="card-header">
@ -53,5 +52,5 @@ if (setting('Attiva scorciatoie da tastiera')) {
'_LINK_IMPOSTAZIONI_' => Modules::link('Impostazioni', null, tr('Strumenti » Impostazioni » Generali » <b>Abilita scorciatoie da tastiera</b>')), '_LINK_IMPOSTAZIONI_' => Modules::link('Impostazioni', null, tr('Strumenti » Impostazioni » Generali » <b>Abilita scorciatoie da tastiera</b>')),
]).'.</p>'; ]).'.</p>';
} }
echo' echo '
</div>'; </div>';

View File

@ -101,7 +101,6 @@ class DefaultHandler implements HandlerInterface
*/ */
protected function password(&$values, &$extras) protected function password(&$values, &$extras)
{ {
$result = ' $result = '
<script> <script>
const characters ="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!%-()*[]"; const characters ="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!%-()*[]";

View File

@ -62,7 +62,7 @@ class HTMLWrapper implements WrapperInterface
// Se l'elemento da aggiungere prima è un <select>, non uso input-group-text per semplificare lo stile // Se l'elemento da aggiungere prima è un <select>, non uso input-group-text per semplificare lo stile
$input_group_class = ''; $input_group_class = '';
if (!str_contains((string)$values['icon-before'], '<select')) { if (!str_contains((string) $values['icon-before'], '<select')) {
$input_group_class = 'input-group-text'; $input_group_class = 'input-group-text';
} }
@ -87,7 +87,7 @@ class HTMLWrapper implements WrapperInterface
// Se l'elemento da aggiungere prima è un <select>, non uso input-group-text per semplificare lo stile // Se l'elemento da aggiungere prima è un <select>, non uso input-group-text per semplificare lo stile
$input_group_class = ''; $input_group_class = '';
if (!str_contains((string)$values['icon-after'], '<select')) { if (!str_contains((string) $values['icon-after'], '<select')) {
$input_group_class = 'input-group-text'; $input_group_class = 'input-group-text';
} }
@ -132,7 +132,7 @@ class HTMLWrapper implements WrapperInterface
$result .= ' $result .= '
</div>'; </div>';
} }
if (!empty($values['label'])) { if (!empty($values['label'])) {
unset($values['label']); unset($values['label']);
} }

View File

@ -654,8 +654,7 @@ class Prints
// Footer visibile solo sull'ultima pagina, sempre che non abbia deciso di nasconderlo // Footer visibile solo sull'ultima pagina, sempre che non abbia deciso di nasconderlo
if (!empty($options['last-page-footer']) && empty($options['hide-footer'])) { if (!empty($options['last-page-footer']) && empty($options['hide-footer'])) {
// Definisco qual'è l'ultima pagina
//Definisco qual'è l'ultima pagina
$is_last_page = true; $is_last_page = true;
// Generazione dei contenuti del footer // Generazione dei contenuti del footer

View File

@ -136,13 +136,13 @@ echo "
if ($options['pricing']) { if ($options['pricing']) {
echo " echo "
<th class='text-center' style='width:15%'>" . tr('Prezzo unitario', [], ['upper' => true]) . '</th>'; <th class='text-center' style='width:15%'>".tr('Prezzo unitario', [], ['upper' => true]).'</th>';
if (!$options['no-iva']) { if (!$options['no-iva']) {
echo " echo "
<th class='text-center' style='width:10%'>" . tr('IVA', [], ['upper' => true]) . ' (%)</th>'; <th class='text-center' style='width:10%'>".tr('IVA', [], ['upper' => true]).' (%)</th>';
} }
echo " echo "
<th class='text-center' style='width:15%'>" . ($options['hide-total'] ? tr('Importo ivato', [], ['upper' => true]) : tr('Importo', [], ['upper' => true])) . '</th>'; <th class='text-center' style='width:15%'>".($options['hide-total'] ? tr('Importo ivato', [], ['upper' => true]) : tr('Importo', [], ['upper' => true])).'</th>';
} }
echo ' echo '
@ -151,9 +151,6 @@ echo '
<tbody>'; <tbody>';
if (!setting('Visualizza riferimento su ogni riga in stampa')) { if (!setting('Visualizza riferimento su ogni riga in stampa')) {
$riferimenti = []; $riferimenti = [];
$id_rif = []; $id_rif = [];
@ -179,28 +176,27 @@ foreach ($righe as $riga) {
$autofill->count($r['descrizione']); $autofill->count($r['descrizione']);
echo echo '
'
<tr> <tr>
<td class="text-center" nowrap="nowrap" style="vertical-align: middle" width="25"> <td class="text-center" nowrap="nowrap" style="vertical-align: middle" width="25">
' . $num . ' '.$num.'
</td>'; </td>';
if ($has_image) { if ($has_image) {
if ($riga->isArticolo() && !empty($riga->articolo->image)) { if ($riga->isArticolo() && !empty($riga->articolo->image)) {
echo ' echo '
<td align="center"> <td align="center">
<img src="'.$riga->articolo->image.'" style="max-height: 60px; max-width:80px"> <img src="'.$riga->articolo->image.'" style="max-height: 60px; max-width:80px">
</td>'; </td>';
$autofill->set(5); $autofill->set(5);
} else { } else {
echo ' echo '
<td></td>'; <td></td>';
}
} }
}
echo ' echo '
<td>'; <td>';
$text = ''; $text = '';
@ -322,11 +318,11 @@ if (($options['pricing'] && !isset($options['hide-total'])) || $options['show-on
// Totale imponibile // Totale imponibile
echo ' echo '
<tr> <tr>
<td colspan="' . ($options['show-only-total'] ? (($has_image) ? 3 : 2) : 4) . '" class="text-right border-top"> <td colspan="'.($options['show-only-total'] ? (($has_image) ? 3 : 2) : 4).'" class="text-right border-top">
<b>'.tr('Imponibile', [], ['upper' => true]). ':</b> <b>'.tr('Imponibile', [], ['upper' => true]).':</b>
</td> </td>
<th colspan="' . ($options['show-only-total'] ? (($has_image) ? ($options['no-iva'] ? 1 : 2) : 1) : (($has_image) ? 3 : 2)) . '" class="text-right"> <th colspan="'.($options['show-only-total'] ? (($has_image) ? ($options['no-iva'] ? 1 : 2) : 1) : (($has_image) ? 3 : 2)).'" class="text-right">
<b>'.moneyFormat($show_sconto ? $imponibile : $totale_imponibile, $d_totali).'</b> <b>'.moneyFormat($show_sconto ? $imponibile : $totale_imponibile, $d_totali).'</b>
</th> </th>
</tr>'; </tr>';
@ -335,11 +331,11 @@ if (($options['pricing'] && !isset($options['hide-total'])) || $options['show-on
if ($show_sconto) { if ($show_sconto) {
echo ' echo '
<tr> <tr>
<td colspan="' . ($options['show-only-total'] ? 2 : 4) . '" class="text-right border-top"> <td colspan="'.($options['show-only-total'] ? 2 : 4).'" class="text-right border-top">
<b>'.tr('Sconto', [], ['upper' => true]). ':</b> <b>'.tr('Sconto', [], ['upper' => true]).':</b>
</td> </td>
<th colspan="' . ($options['show-only-total'] ? (($has_image) ? 2 : 1) : (($has_image) ? 3 : 2)) . '" class="text-right"> <th colspan="'.($options['show-only-total'] ? (($has_image) ? 2 : 1) : (($has_image) ? 3 : 2)).'" class="text-right">
<b>'.moneyFormat($sconto, $d_totali).'</b> <b>'.moneyFormat($sconto, $d_totali).'</b>
</th> </th>
</tr>'; </tr>';
@ -347,11 +343,11 @@ if (($options['pricing'] && !isset($options['hide-total'])) || $options['show-on
// Totale imponibile // Totale imponibile
echo ' echo '
<tr> <tr>
<td colspan="' . ($options['show-only-total'] ? 2 : 4) . '" class="text-right border-top"> <td colspan="'.($options['show-only-total'] ? 2 : 4).'" class="text-right border-top">
<b>'.tr('Totale imponibile', [], ['upper' => true]). ':</b> <b>'.tr('Totale imponibile', [], ['upper' => true]).':</b>
</td> </td>
<th colspan="' . ($options['show-only-total'] ? (($has_image) ? 2 : 1) : (($has_image) ? 3 : 2)) . '" class="text-right"> <th colspan="'.($options['show-only-total'] ? (($has_image) ? 2 : 1) : (($has_image) ? 3 : 2)).'" class="text-right">
<b>'.moneyFormat($totale_imponibile, $d_totali).'</b> <b>'.moneyFormat($totale_imponibile, $d_totali).'</b>
</th> </th>
</tr>'; </tr>';
@ -360,11 +356,11 @@ if (($options['pricing'] && !isset($options['hide-total'])) || $options['show-on
// IVA // IVA
echo ' echo '
<tr> <tr>
<td colspan="' . ($options['show-only-total'] ? 2 : 4) . '" class="text-right border-top"> <td colspan="'.($options['show-only-total'] ? 2 : 4).'" class="text-right border-top">
<b>'.tr('Totale IVA', [], ['upper' => true]). ':</b> <b>'.tr('Totale IVA', [], ['upper' => true]).':</b>
</td> </td>
<th colspan="' . ($options['show-only-total'] ? (($has_image) ? 2 : 1) : (($has_image) ? 3 : 2)) . '" class="text-right"> <th colspan="'.($options['show-only-total'] ? (($has_image) ? 2 : 1) : (($has_image) ? 3 : 2)).'" class="text-right">
<b>'.moneyFormat($totale_iva, $d_totali).'</b> <b>'.moneyFormat($totale_iva, $d_totali).'</b>
</th> </th>
</tr>'; </tr>';
@ -372,7 +368,7 @@ if (($options['pricing'] && !isset($options['hide-total'])) || $options['show-on
// TOTALE // TOTALE
echo ' echo '
<tr> <tr>
<td colspan="' . ($options['show-only-total'] ? 2 : 4) . '" class="text-right border-top"> <td colspan="'.($options['show-only-total'] ? 2 : 4).'" class="text-right border-top">
<b>'.tr('Totale documento', [], ['upper' => true]).':</b> <b>'.tr('Totale documento', [], ['upper' => true]).':</b>
</td> </td>
@ -385,10 +381,10 @@ if (($options['pricing'] && !isset($options['hide-total'])) || $options['show-on
// SCONTO IN FATTURA // SCONTO IN FATTURA
echo ' echo '
<tr> <tr>
<td colspan="' . ($options['show-only-total'] ? 2 : 4) . '" class="text-right border-top"> <td colspan="'.($options['show-only-total'] ? 2 : 4).'" class="text-right border-top">
<b>'.tr('Sconto in fattura', [], ['upper' => true]). ':</b> <b>'.tr('Sconto in fattura', [], ['upper' => true]).':</b>
</td> </td>
<th colspan="' . ($options['show-only-total'] ? (($has_image) ? 2 : 1) : (($has_image) ? 3 : 2)) . '" class="text-right"> <th colspan="'.($options['show-only-total'] ? (($has_image) ? 2 : 1) : (($has_image) ? 3 : 2)).'" class="text-right">
<b>'.moneyFormat($sconto_finale, $d_totali).'</b> <b>'.moneyFormat($sconto_finale, $d_totali).'</b>
</th> </th>
</tr>'; </tr>';
@ -396,10 +392,10 @@ if (($options['pricing'] && !isset($options['hide-total'])) || $options['show-on
// NETTO A PAGARE // NETTO A PAGARE
echo ' echo '
<tr> <tr>
<td colspan="' . ($options['show-only-total'] ? 2 : 4) . '" class="text-right border-top"> <td colspan="'.($options['show-only-total'] ? 2 : 4).'" class="text-right border-top">
<b>'.tr('Netto a pagare', [], ['upper' => true]). ':</b> <b>'.tr('Netto a pagare', [], ['upper' => true]).':</b>
</td> </td>
<th colspan="' . ($options['show-only-total'] ? (($has_image) ? 2 : 1) : (($has_image) ? 3 : 2)) . '" class="text-right"> <th colspan="'.($options['show-only-total'] ? (($has_image) ? 2 : 1) : (($has_image) ? 3 : 2)).'" class="text-right">
<b>'.moneyFormat($netto_a_pagare, $d_totali).'</b> <b>'.moneyFormat($netto_a_pagare, $d_totali).'</b>
</th> </th>
</tr>'; </tr>';
@ -417,7 +413,6 @@ if ($options['no-iva']) {
'; ';
} }
// CONDIZIONI GENERALI DI FORNITURA // CONDIZIONI GENERALI DI FORNITURA
$pagamento = Pagamento::find($documento['idpagamento']); $pagamento = Pagamento::find($documento['idpagamento']);

View File

@ -17,7 +17,7 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>. * along with this program. If not, see <https://www.gnu.org/licenses/>.
*/ */
//Se non è l'ultima pagina, oppure è l'ultima pagina ma ho scelto di nascondere il footer // Se non è l'ultima pagina, oppure è l'ultima pagina ma ho scelto di nascondere il footer
if (!$is_last_page) { if (!$is_last_page) {
return; return;
} }

View File

@ -23,7 +23,7 @@ $prezzi_ivati = setting('Utilizza prezzi di vendita comprensivi di IVA');
// Creazione righe fantasma // Creazione righe fantasma
$autofill = new Util\Autofill($options['pricing'] ? 6 : 3); $autofill = new Util\Autofill($options['pricing'] ? 6 : 3);
$rows_per_page = $rows_per_page ?:16; $rows_per_page = $rows_per_page ?: 16;
if (!empty($options['last-page-footer'])) { if (!empty($options['last-page-footer'])) {
$rows_per_page += 10; $rows_per_page += 10;
} }