This commit is contained in:
loviuz 2020-02-21 09:42:24 +01:00
commit 9f626a52c4
9 changed files with 51 additions and 7 deletions

View File

@ -214,6 +214,14 @@ gulp.task('password-strength', function () {
.pipe(gulp.dest(config.production + '/password-strength')); .pipe(gulp.dest(config.production + '/password-strength'));
}); });
gulp.task('hotkeys-js', function () {
gulp.src([
config.main.bowerDirectory + '/hotkeys-js/dist/hotkeys.min.js',
])
.pipe(flatten())
.pipe(gulp.dest(config.production + '/' + config.paths.js + '/hotkeys-js'));
});
gulp.task('chartjs', function () { gulp.task('chartjs', function () {
gulp.src([ gulp.src([
config.main.bowerDirectory + '/chart.js/dist/Chart.min.js', config.main.bowerDirectory + '/chart.js/dist/Chart.min.js',
@ -385,6 +393,7 @@ gulp.task('other', ['clean'], function () {
gulp.start('ckeditor'); gulp.start('ckeditor');
gulp.start('colorpicker'); gulp.start('colorpicker');
gulp.start('password-strength'); gulp.start('password-strength');
gulp.start('hotkeys-js');
gulp.start('i18n'); gulp.start('i18n');
gulp.start('pdfjs'); gulp.start('pdfjs');

View File

@ -9,7 +9,7 @@ if (Auth::check()) {
</aside><!-- /.content-wrapper --> </aside><!-- /.content-wrapper -->
<footer class="main-footer"> <footer class="main-footer">
<a class="hidden-xs" href="https://www.openstamanager.com" title="'.tr("Il gestionale open source per l'assistenza tecnica e la fatturazione").'." target="_blank"><strong>'.tr('OpenSTAManager').'</strong></a> <a class="hidden-xs" href="'.tr('https://www.openstamanager.com').'" title="'.tr("Il gestionale open source per l'assistenza tecnica e la fatturazione").'." target="_blank"><strong>'.tr('OpenSTAManager').'</strong></a>
<span class="pull-right hidden-xs"> <span class="pull-right hidden-xs">
<strong>'.tr('Versione').'</strong> '.$version.' <strong>'.tr('Versione').'</strong> '.$version.'
<small class="text-muted">('.(!empty($revision) ? $revision : tr('In sviluppo')).')</small> <small class="text-muted">('.(!empty($revision) ? $revision : tr('In sviluppo')).')</small>

View File

@ -246,6 +246,18 @@ if (Auth::check()) {
<script type="text/javascript" charset="utf-8" src="https://cdnjs.cloudflare.com/ajax/libs/pdfmake/0.1.36/pdfmake.min.js"></script> <script type="text/javascript" charset="utf-8" src="https://cdnjs.cloudflare.com/ajax/libs/pdfmake/0.1.36/pdfmake.min.js"></script>
<script type="text/javascript" charset="utf-8" src="https://cdnjs.cloudflare.com/ajax/libs/pdfmake/0.1.36/vfs_fonts.js"></script>'; <script type="text/javascript" charset="utf-8" src="https://cdnjs.cloudflare.com/ajax/libs/pdfmake/0.1.36/vfs_fonts.js"></script>';
} }
if (setting('Attiva scorciatoie da tastiera')) {
echo '<script type="text/javascript" charset="utf-8" src="'.App::getPaths()['js'].'/hotkeys-js/hotkeys.min.js"></script>';
echo '
<script>
hotkeys(\'ctrl+shift+c\', \'save\', function(event, handler){
event.preventDefault();
$( "button[data-toggle]" ).first().trigger( "click" );
});
hotkeys.setScope(\'save\');
</script>';
}
} }
$hide_sidebar = Auth::check() && setting('Nascondere la barra sinistra di default'); $hide_sidebar = Auth::check() && setting('Nascondere la barra sinistra di default');

View File

@ -268,7 +268,9 @@ switch (post('op')) {
// Se l'anagrafica è collegata ad un utente lo disabilito // Se l'anagrafica è collegata ad un utente lo disabilito
$dbo->query('UPDATE zz_users SET enabled = 0 WHERE idanagrafica = '.prepare($id_record)); $dbo->query('UPDATE zz_users SET enabled = 0 WHERE idanagrafica = '.prepare($id_record));
// Disabilito anche il token
$dbo->query('UPDATE zz_tokens SET enabled = 0 WHERE id_utente = '.prepare($id_utente));
flash()->info(tr('Anagrafica eliminata!')); flash()->info(tr('Anagrafica eliminata!'));
} }

View File

@ -103,10 +103,14 @@ switch (filter('op')) {
break; break;
// Elimina utente // Elimina utente + disattivazione token
case 'delete_user': case 'delete_user':
if ($dbo->query('DELETE FROM zz_users WHERE id='.prepare($id_utente))) { if ($dbo->query('DELETE FROM zz_users WHERE id='.prepare($id_utente))) {
flash()->info(tr('Utente eliminato!')); flash()->info(tr('Utente eliminato!'));
if ($dbo->query('UPDATE zz_tokens SET enabled = 0 WHERE id_utente = '.prepare($id_utente))) {
flash()->info(tr('Token disabilitato!'));
}
} }
break; break;

View File

@ -74,13 +74,16 @@ if (!empty($utenti)) {
<a href="" data-href="'.$structure->fileurl('user.php').'?id_module='.$id_module.'&id_record='.$id_record.'&id_utente='.$utente['id'].'" class="text-warning tip" data-toggle="modal" title="Aggiorna dati utente" data-msg="" data-backto="record-edit" data-title="Aggiorna dati utente"><i class="fa fa-2x fa-unlock-alt"></i></a>'; <a href="" data-href="'.$structure->fileurl('user.php').'?id_module='.$id_module.'&id_record='.$id_record.'&id_utente='.$utente['id'].'" class="text-warning tip" data-toggle="modal" title="Aggiorna dati utente" data-msg="" data-backto="record-edit" data-title="Aggiorna dati utente"><i class="fa fa-2x fa-unlock-alt"></i></a>';
// Disabilitazione token API, se diverso da id_utente #1 (admin) // Disabilitazione token API, se diverso da id_utente #1 (admin)
$token = $dbo->fetchOne('SELECT `enabled` FROM `zz_tokens` WHERE `id_utente` = '.prepare($utente['id'])); $token = $dbo->fetchOne('SELECT `enabled` FROM `zz_tokens` WHERE `id_utente` = '.prepare($utente['id']).'')['enabled'];
if ($utente['id'] == '1') { if ($utente['id'] == '1') {
echo ' echo '
<span title="'.tr("Non è possibile gestire l'accesso API per l'utente admin").'" class="text-muted tip"> <span title="'.tr("Non è possibile gestire l'accesso API per l'utente admin").'" class="text-muted tip">
<i class="fa fa-2x fa-key "></i> <i class="fa fa-2x fa-key "></i>
</span>'; </span>';
} elseif (!empty($token['enabled'])) { } elseif (!empty($token)) {
echo ' echo '
<a title="'.tr('Disabilita API').'" class="text-danger clickable tip ask" data-msg="" data-backto="record-edit" data-title="'.tr("Disabilitare l'accesso API per questo utente?").'" data-op="token_disable" data-id_utente="'.$utente['id'].'" data-button="'.tr('Disabilita').'"> <a title="'.tr('Disabilita API').'" class="text-danger clickable tip ask" data-msg="" data-backto="record-edit" data-title="'.tr("Disabilitare l'accesso API per questo utente?").'" data-op="token_disable" data-id_utente="'.$utente['id'].'" data-button="'.tr('Disabilita').'">
<i class="fa fa-2x fa-key"></i> <i class="fa fa-2x fa-key"></i>

View File

@ -19,6 +19,7 @@
"font-awesome": "^4.7.0", "font-awesome": "^4.7.0",
"fullcalendar": "^3.4.0", "fullcalendar": "^3.4.0",
"geocomplete": "^1.7.0", "geocomplete": "^1.7.0",
"hotkeys-js": "3.7.3",
"inputmask": "3.3.9", "inputmask": "3.3.9",
"jquery": "^3.2.1", "jquery": "^3.2.1",
"jquery-form": "^4.2.1", "jquery-form": "^4.2.1",
@ -81,6 +82,9 @@
"chart.js": { "chart.js": {
"ignore": true "ignore": true
}, },
"hotkeys-js": {
"ignore": true
},
"pwstrength-bootstrap": { "pwstrength-bootstrap": {
"ignore": true "ignore": true
}, },

View File

@ -589,6 +589,7 @@ class FatturaElettronica
} }
//Rimuovo eventuali idicazioni relative alla nazione //Rimuovo eventuali idicazioni relative alla nazione
$result['IdFiscaleIVA']['IdCodice'] = str_replace($anagrafica->nazione->iso2, '', $anagrafica['piva']); $result['IdFiscaleIVA']['IdCodice'] = str_replace($anagrafica->nazione->iso2, '', $anagrafica['piva']);
} }
// Codice fiscale // Codice fiscale
@ -596,8 +597,10 @@ class FatturaElettronica
if (!empty($anagrafica['codice_fiscale'])) { if (!empty($anagrafica['codice_fiscale'])) {
$result['CodiceFiscale'] = preg_replace('/\s+/', '', $anagrafica['codice_fiscale']); $result['CodiceFiscale'] = preg_replace('/\s+/', '', $anagrafica['codice_fiscale']);
//Rimuovo eventuali idicazioni relative alla nazione //$result['CodiceFiscale'] = str_replace($anagrafica->nazione->iso2, '', $result['CodiceFiscale']);
$result['CodiceFiscale'] = str_replace($anagrafica->nazione->iso2, '', $result['CodiceFiscale']);
//Rimuovo eventuali idicazioni relative all'iso2 della nazione, solo se la stringa inizia con quest'ultima.
$result['CodiceFiscale'] = preg_replace('/^' . preg_quote($anagrafica->nazione->iso2, '/') . '/', '', $anagrafica['codice_fiscale']);
} }
if (!empty($anagrafica['nome']) or !empty($anagrafica['cognome'])) { if (!empty($anagrafica['nome']) or !empty($anagrafica['cognome'])) {

View File

@ -167,3 +167,10 @@ DROP TABLE `co_ordiniservizio_vociservizio`;
ALTER TABLE `co_ordiniservizio_pianificazionefatture` RENAME TO `co_fatturazione_contratti`; ALTER TABLE `co_ordiniservizio_pianificazionefatture` RENAME TO `co_fatturazione_contratti`;
UPDATE `zz_widgets` SET `query` = 'SELECT COUNT(id) AS dato FROM co_fatturazione_contratti WHERE idcontratto IN( SELECT id FROM co_contratti WHERE idstato IN(SELECT id FROM co_staticontratti WHERE descrizione IN("Bozza", "Accettato", "In lavorazione", "In attesa di pagamento")) ) AND co_fatturazione_contratti.iddocumento=0' WHERE `name` = 'Rate contrattuali'; UPDATE `zz_widgets` SET `query` = 'SELECT COUNT(id) AS dato FROM co_fatturazione_contratti WHERE idcontratto IN( SELECT id FROM co_contratti WHERE idstato IN(SELECT id FROM co_staticontratti WHERE descrizione IN("Bozza", "Accettato", "In lavorazione", "In attesa di pagamento")) ) AND co_fatturazione_contratti.iddocumento=0' WHERE `name` = 'Rate contrattuali';
-- Introduzione segmento scadenzario completo (su periodo temporale) il quale contempla tutte le scadenze (anche quelle chiuse)
INSERT INTO `zz_segments` (`id`, `id_module`, `name`, `clause`, `position`, `pattern`, `note`, `predefined`, `predefined_accredito`, `predefined_addebito`, `is_fiscale`) VALUES
(NULL, (SELECT `id` FROM `zz_modules` WHERE `name` = 'Scadenzario'), 'Scadenziaro completo', '(`co_scadenziario`.`scadenza` BETWEEN ''|period_start|'' AND ''|period_end|'' )', 'WHR', '####', '', 0, 0, 0, 0);
-- Attiva scrociatoie da tastiera
INSERT INTO `zz_settings` (`id`, `nome`, `valore`, `tipo`, `editable`, `sezione`, `order`, `help`) VALUES (NULL, 'Attiva scorciatoie da tastiera', '1', 'boolean', '1', 'Generali', NULL, NULL);