Compare commits

...

11 Commits

Author SHA1 Message Date
Dasc3er 37822a2f74 Merge remote-tracking branch 'origin/master' 2021-08-06 15:27:42 +02:00
Dasc3er 026b517845 Fix selezione Preventivo in Attività 2021-08-06 15:27:36 +02:00
loviuz 4b1bbd7845 Fix eliminazione interventi 2021-08-06 14:48:51 +02:00
Dasc3er f9d002ab1a Aggiunte colonne Sedi e Referenti in tabella Anagrafiche 2021-08-06 12:38:42 +02:00
Dasc3er b6e7530af8 Fix funzione JS per Allegati 2021-08-06 12:29:51 +02:00
Dasc3er 05839837cc Fix minori Componenti 2021-08-06 11:34:30 +02:00
Dasc3er dfff2ec072 Miglioramento grafica ricerca in Impostazioni 2021-08-06 11:21:23 +02:00
Dasc3er d1d3dcd86c Correzioni minori 2021-08-06 11:14:37 +02:00
Dasc3er 833a13b74d Correzioni minori su Componenti Impianti 2021-08-06 11:06:47 +02:00
Dasc3er 1546174bea Fix minore duplicazione righe 2021-08-06 10:54:56 +02:00
Dasc3er 37c6a11ae5 Aggiornamento logo normale e completo 2021-08-06 10:41:53 +02:00
16 changed files with 91 additions and 51 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 64 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

View File

@ -211,7 +211,7 @@ function modificaAllegato(button) {
* Funzione per gestire il download di un allegato. * Funzione per gestire il download di un allegato.
* @param button * @param button
*/ */
function aggiungiAllegato(button) { function scaricaAllegato(button) {
const gestione = $(button).closest(".gestione-allegati"); const gestione = $(button).closest(".gestione-allegati");
const allegato = $(button).closest("tr").data(); const allegato = $(button).closest("tr").data();

View File

@ -195,7 +195,7 @@ if (post('db_host') !== null) {
"generated" : "true", "generated" : "true",
"icons" : [ "icons" : [
{ {
"src": "assets/dist/img/logo.png", "src": "assets/dist/img/logo_completo.png",
"type": "image/png", "type": "image/png",
"sizes": "489x91" "sizes": "489x91"
} }
@ -329,7 +329,7 @@ if (empty($creation) && (!file_exists('config.inc.php') || !$valid_config)) {
echo ' echo '
<div class="box box-center-large box-warning"> <div class="box box-center-large box-warning">
<div class="box-header with-border text-center"> <div class="box-header with-border text-center">
<img src="'.$img.'/logo.png" width="300" alt="'.tr('OSM Logo').'"> <img src="'.$img.'/logo_completo.png" width="300" alt="'.tr('OSM Logo').'">
</div> </div>
<div class="box-body" id="smartwizard"> <div class="box-body" id="smartwizard">

View File

@ -124,7 +124,7 @@ $img = App::getPaths()['img'];
echo ' echo '
<div class="box box-center-large box-warning"> <div class="box box-center-large box-warning">
<div class="box-header with-border text-center"> <div class="box-header with-border text-center">
<img src="'.$img.'/logo.png" class="logo-image" alt="'.tr('OSM Logo').'"> <img src="'.$img.'/logo_completo.png" class="logo-image" alt="'.tr('OSM Logo').'">
</div> </div>
<div class="box-body"> <div class="box-body">

View File

@ -145,7 +145,7 @@ if (!empty(flash()->getMessage('error'))) {
echo ' echo '
<form action="?op=login" method="post" class="login-box box" autocomplete="off" > <form action="?op=login" method="post" class="login-box box" autocomplete="off" >
<div class="box-header with-border text-center"> <div class="box-header with-border text-center">
<img src="'.App::getPaths()['img'].'/logo.png" class="img-responsive" alt="'.tr('OSM Logo').'"> <img src="'.App::getPaths()['img'].'/logo_completo.png" class="img-responsive" alt="'.tr('OSM Logo').'">
</div> </div>
<div class="login-box-body box-body"> <div class="login-box-body box-body">

View File

@ -28,7 +28,7 @@ include_once App::filepath('include|custom|', 'top.php');
echo ' echo '
<div class="box"> <div class="box">
<div class="box-header"> <div class="box-header">
<img src="'.$paths['img'].'/logo.png" class="pull-left img-responsive" width="300" alt="'.tr('OSM Logo').'"> <img src="'.$paths['img'].'/logo_completo.png" class="pull-left img-responsive" width="300" alt="'.tr('OSM Logo').'">
<div class="pull-right"> <div class="pull-right">
<i class="fa fa-info"></i> '.tr('Informazioni').' <i class="fa fa-info"></i> '.tr('Informazioni').'
</div> </div>

View File

@ -99,7 +99,7 @@ switch ($resource) {
]; ];
$impianti = $superselect['matricola']; $impianti = $superselect['matricola'];
if (!empty($impianti)){ if (!empty($impianti)) {
$where[] = 'my_componenti.id_impianto IN ('.$impianti.')'; $where[] = 'my_componenti.id_impianto IN ('.$impianti.')';
} }

View File

@ -70,6 +70,7 @@ echo '
<script> <script>
globals.impostazioni = { globals.impostazioni = {
errors: {}, errors: {},
numero_ricerche: 0,
}; };
$("[id^=impostazioni]").click(function() { $("[id^=impostazioni]").click(function() {
@ -77,11 +78,29 @@ $("[id^=impostazioni]").click(function() {
}); });
$("#ricerca_impostazioni").change(function (){ $("#ricerca_impostazioni").change(function (){
let ricerca = $(this).val(); const ricerca = $(this).val();
const icon = $(this).parent().find("span");
$(".box").removeClass("hidden"); $(".box").removeClass("hidden");
// Segnalazione ricerca in corso
globals.impostazioni.numero_ricerche = globals.impostazioni.numero_ricerche + 1;
// Impostazione icona di caricamento
icon
.addClass("fa-spinner fa-spin")
.removeClass("fa-search")
if (ricerca) { if (ricerca) {
$.get("'.$structure->fileurl('actions.php').'?id_module='.$id_module.'&op=ricerca&search=" + ricerca, function(data) { $.get("'.$structure->fileurl('actions.php').'?id_module='.$id_module.'&op=ricerca&search=" + ricerca, function(data) {
// Segnalazione ricerca completata
globals.impostazioni.numero_ricerche = globals.impostazioni.numero_ricerche - 1;
// Impostazione icona di ricerca
if (globals.impostazioni.numero_ricerche === 0){
icon
.removeClass("fa-spinner fa-spin")
.addClass("fa-search")
}
$(".box").addClass("hidden"); $(".box").addClass("hidden");
let sezioni = JSON.parse(data); let sezioni = JSON.parse(data);

View File

@ -230,7 +230,7 @@ switch (post('op')) {
$intervento->delete(); $intervento->delete();
// Elimino il collegamento al componente // Elimino il collegamento al componente
$dbo->query('DELETE FROM my_componenti WHERE idintervento='.prepare($id_record)); $dbo->query('DELETE FROM my_componenti WHERE id_intervento='.prepare($id_record));
// Eliminazione associazione tecnici collegati all'intervento // Eliminazione associazione tecnici collegati all'intervento
$dbo->query('DELETE FROM in_interventi_tecnici WHERE idintervento='.prepare($id_record)); $dbo->query('DELETE FROM in_interventi_tecnici WHERE idintervento='.prepare($id_record));
@ -336,7 +336,7 @@ switch (post('op')) {
// Collegamento all'Impianto tramite generazione Componente // Collegamento all'Impianto tramite generazione Componente
$id_impianto = post('id_impianto'); $id_impianto = post('id_impianto');
$impianto = Impianto::find($id_impianto); $impianto = Impianto::find($id_impianto);
if (!empty($impianto)){ if (!empty($impianto)) {
// Data di inizio dell'intervento (data_richiesta in caso di assenza di sessioni) // Data di inizio dell'intervento (data_richiesta in caso di assenza di sessioni)
$data_registrazione = $intervento->inizio ?: $intervento->data_richiesta; $data_registrazione = $intervento->inizio ?: $intervento->data_richiesta;

View File

@ -695,7 +695,7 @@ $(document).ready(function() {
ordine.getElement().selectReset(); ordine.getElement().selectReset();
// Impostazione del tipo intervento da preventivo // Impostazione del tipo intervento da preventivo
var data = (this).selectData() var data = $(this).selectData()
if (data.idtipointervento) { if (data.idtipointervento) {
input("idtipointervento").getElement() input("idtipointervento").getElement()
.selectSet(data.idtipointervento); .selectSet(data.idtipointervento);

View File

@ -24,6 +24,14 @@ include_once __DIR__.'/../../core.php';
$compontenti_impianto = Componente::where('id_impianto', '=', $id_record); $compontenti_impianto = Componente::where('id_impianto', '=', $id_record);
// Avviso sul numero di componenti
if ($compontenti_impianto->count() == 0) {
echo '
<div class="alert alert-info">
<i class="fa fa-info-circle"></i> '.tr("Nessun componente disponibile per l'impianto corrente").'
</div>';
}
$componenti_installati = (clone $compontenti_impianto) $componenti_installati = (clone $compontenti_impianto)
->whereNull('data_sostituzione') ->whereNull('data_sostituzione')
->whereNull('data_rimozione') ->whereNull('data_rimozione')
@ -35,40 +43,43 @@ $componenti_rimossi = (clone $compontenti_impianto)
->whereNotNull('data_rimozione') ->whereNotNull('data_rimozione')
->get(); ->get();
echo generaListaComponenti($componenti_installati, [ $elenchi = [
'type' => 'primary', [
'title' => tr('Componenti installati'), 'componenti' => $componenti_installati,
'date' => 'data_installazione', 'type' => 'primary',
'date_name' => tr('Installato'), 'title' => tr('Componenti installati'),
]); 'date' => 'data_installazione',
'date_name' => tr('Installato'),
],
[
'componenti' => $componenti_sostituiti,
'type' => 'warning',
'title' => tr('Componenti sostituiti'),
'date' => 'data_sostituzione',
'date_name' => tr('Sostituzione'),
],
[
'componenti' => $componenti_rimossi,
'type' => 'danger',
'title' => tr('Componenti rimossi'),
'date' => 'data_rimozione',
'date_name' => tr('Rimosso'),
],
];
echo generaListaComponenti($componenti_sostituiti, [ $plugin = Plugin::pool('Componenti');
'type' => 'warning', $module = $plugin->module;
'title' => tr('Componenti sostituiti'),
'date' => 'data_sostituzione',
'date_name' => tr('Sostituzione'),
]);
echo generaListaComponenti($componenti_rimossi, [ // Generazione elenchi HTML
'type' => 'danger', foreach ($elenchi as $elenco) {
'title' => tr('Componenti rimossi'), $componenti = $elenco['componenti'];
'date' => 'data_rimozione', $type = $elenco['type'];
'date_name' => tr('Rimosso'), $title = $elenco['title'];
]); $date = $elenco['date'];
$date_name = $elenco['date_name'];
function generaListaComponenti($componenti, $options)
{
$type = $options['type'];
$title = $options['title'];
$date = $options['date'];
$date_name = $options['date_name'];
$database = database();
$plugin = Plugin::pool('Componenti');
$module = $plugin->module;
if (empty($componenti) || $componenti->isEmpty()) { if (empty($componenti) || $componenti->isEmpty()) {
return; continue;
} }
echo ' echo '
@ -120,7 +131,7 @@ function generaListaComponenti($componenti, $options)
</tr> </tr>
<tr class="dettagli-componente" data-id="'.$componente->id.'" style="display: none"> <tr class="dettagli-componente" data-id="'.$componente->id.'" style="display: none">
<td colspan="4"> <td colspan="5">
<div class="panel panel-'.$type.'"> <div class="panel panel-'.$type.'">
<div class="panel-heading"> <div class="panel-heading">
<h3 class="panel-title">'.tr('Dati').'</h3> <h3 class="panel-title">'.tr('Dati').'</h3>
@ -245,7 +256,7 @@ echo '
const id_componente = tr.data("id"); const id_componente = tr.data("id");
if(confirm("'.tr('Vuoi eliminare questo componente?').'")){ if(confirm("'.tr('Vuoi eliminare questo componente?').'")){
redirect("'.base_path().'/editor.php?id_module='.$id_module.'&id_record='.$id_record.'&op=delete&backto=record-edit&id_plugin='.$id_plugin.'&id=" + id_componente + "&hash=tab_'.$structure->id.'"); redirect("'.base_path().'/editor.php?id_module='.$id_module.'&id_record='.$id_record.'&op=rimuovi&backto=record-edit&id_plugin='.$id_plugin.'&id_componente=" + id_componente + "&hash=tab_'.$structure->id.'");
} }
} }

View File

@ -369,6 +369,8 @@ abstract class Component extends Model
$new->qta_evasa = 0; $new->qta_evasa = 0;
$new->original_type = null; $new->original_type = null;
$new->original_id = null; $new->original_id = null;
$new->original_document_type = null;
$new->original_document_id = null;
return $new; return $new;
} }

View File

@ -147,7 +147,7 @@ class FileManager implements ManagerInterface
<td>'.timestampFormat($file['created_at']).'</td> <td>'.timestampFormat($file['created_at']).'</td>
<td class="text-center"> <td class="text-center">
<button type="button" class="btn btn-xs btn-primary" onclick="aggiungiAllegato(this)"> <button type="button" class="btn btn-xs btn-primary" onclick="scaricaAllegato(this)">
<i class="fa fa-download"></i> <i class="fa fa-download"></i>
</button>'; </button>';

View File

@ -9,19 +9,23 @@ WHERE `id_componente_vecchio` IS NOT NULL');
foreach ($componenti_interessati as $componente) { foreach ($componenti_interessati as $componente) {
$note = ''; $note = '';
// Lettura da impostazioni INI // Lettura da impostazioni INI
$array = Ini::read($componente['contenuto']); $array = Ini::read($componente['contenuto']);
foreach ($array as $nome => $c) { foreach ($array as $nome => $c) {
$note .= $nome.': '.$array[$nome]['valore'].'\\n'; $note .= '<p>'.$nome.': '.$array[$nome]['valore'].'</p>\\n';
} }
// Lettura informazioni interne
$data_installazione = $array['Data di installazione']['valore'] ?: null;
// Aggiornmaneto note // Aggiornmaneto note
$database->update('my_componenti_articoli', [ $database->update('my_componenti', [
'note' => $note, 'note' => $note,
'data_installazione' => $data_installazione,
], ['id' => $componente['id']]); ], ['id' => $componente['id']]);
} }
// Rimozione dati deprecati // Rimozione dati deprecati
$database->query('ALTER TABLE `my_componenti` DROP `pre_id_articolo`, DROP `id_componente_vecchio`'); //$database->query('ALTER TABLE `my_componenti` DROP `pre_id_articolo`, DROP `id_componente_vecchio`');
$database->query('DROP TABLE `my_impianto_componenti`'); //$database->query('DROP TABLE `my_impianto_componenti`');

View File

@ -1,5 +1,5 @@
-- Aggiornato widget Contratti in scadenza (sostituito fatturabile con pianificabile) -- Aggiornato widget Contratti in scadenza (sostituito fatturabile con pianificabile)
UPDATE `zz_widgets` SET `query` = 'SELECT COUNT(dati.id) AS dato FROM(SELECT id, ((SELECT SUM(co_righe_contratti.qta) FROM co_righe_contratti WHERE co_righe_contratti.um=\'ore\' AND co_righe_contratti.idcontratto=co_contratti.id) - IFNULL( (SELECT SUM(in_interventi_tecnici.ore) FROM in_interventi_tecnici INNER JOIN in_interventi ON in_interventi_tecnici.idintervento=in_interventi.id WHERE in_interventi.id_contratto=co_contratti.id AND in_interventi.idstatointervento IN (SELECT in_statiintervento.idstatointervento FROM in_statiintervento WHERE in_statiintervento.is_completato = 1)), 0) ) AS ore_rimanenti, DATEDIFF(data_conclusione, NOW()) AS giorni_rimanenti, data_conclusione, ore_preavviso_rinnovo, giorni_preavviso_rinnovo, (SELECT ragione_sociale FROM an_anagrafiche WHERE idanagrafica=co_contratti.idanagrafica) AS ragione_sociale FROM co_contratti WHERE idstato IN (SELECT id FROM co_staticontratti WHERE is_pianificabile = 1) AND rinnovabile = 1 AND YEAR(data_conclusione) > 1970 AND (SELECT id FROM co_contratti contratti WHERE contratti.idcontratto_prev = co_contratti.id) IS NULL HAVING (ore_rimanenti < ore_preavviso_rinnovo OR DATEDIFF(data_conclusione, NOW()) < ABS(giorni_preavviso_rinnovo)) ORDER BY giorni_rimanenti ASC, ore_rimanenti ASC) dati' WHERE `zz_widgets`.`name` = 'Contratti in scadenza'; UPDATE `zz_widgets` SET `query` = 'SELECT COUNT(dati.id) AS dato FROM(SELECT id, ((SELECT SUM(co_righe_contratti.qta) FROM co_righe_contratti WHERE co_righe_contratti.um=''ore'' AND co_righe_contratti.idcontratto=co_contratti.id) - IFNULL( (SELECT SUM(in_interventi_tecnici.ore) FROM in_interventi_tecnici INNER JOIN in_interventi ON in_interventi_tecnici.idintervento=in_interventi.id WHERE in_interventi.id_contratto=co_contratti.id AND in_interventi.idstatointervento IN (SELECT in_statiintervento.idstatointervento FROM in_statiintervento WHERE in_statiintervento.is_completato = 1)), 0) ) AS ore_rimanenti, DATEDIFF(data_conclusione, NOW()) AS giorni_rimanenti, data_conclusione, ore_preavviso_rinnovo, giorni_preavviso_rinnovo, (SELECT ragione_sociale FROM an_anagrafiche WHERE idanagrafica=co_contratti.idanagrafica) AS ragione_sociale FROM co_contratti WHERE idstato IN (SELECT id FROM co_staticontratti WHERE is_pianificabile = 1) AND rinnovabile = 1 AND YEAR(data_conclusione) > 1970 AND (SELECT id FROM co_contratti contratti WHERE contratti.idcontratto_prev = co_contratti.id) IS NULL HAVING (ore_rimanenti < ore_preavviso_rinnovo OR DATEDIFF(data_conclusione, NOW()) < ABS(giorni_preavviso_rinnovo)) ORDER BY giorni_rimanenti ASC, ore_rimanenti ASC) dati' WHERE `zz_widgets`.`name` = 'Contratti in scadenza';
-- Aggiunto numero di email da inviare in contemporanea -- Aggiunto numero di email da inviare in contemporanea
INSERT INTO `zz_settings` (`id`, `nome`, `valore`, `tipo`, `editable`, `sezione`, `order`, `help`) VALUES INSERT INTO `zz_settings` (`id`, `nome`, `valore`, `tipo`, `editable`, `sezione`, `order`, `help`) VALUES
@ -36,7 +36,7 @@ ALTER TABLE `my_componenti` ADD `id_componente_vecchio` INT(11), ADD `id_interve
-- Introduzione categoria dedicata ai Componenti -- Introduzione categoria dedicata ai Componenti
INSERT INTO `mg_categorie` (`nome`, `colore`, `nota`) VALUES ('Componenti', '#ffffff', ''); INSERT INTO `mg_categorie` (`nome`, `colore`, `nota`) VALUES ('Componenti', '#ffffff', '');
INSERT INTO `mg_articoli` (`codice`, `descrizione`, `id_categoria`) SELECT DISTINCT(`filename`), `nome`, (SELECT `id` FROM `mg_categorie` WHERE `nome` = 'Componenti' LIMIT 1) FROM `my_impianto_componenti`; INSERT INTO `mg_articoli` (`codice`, `descrizione`, `id_categoria`, `attivo`) SELECT DISTINCT(`filename`), `nome`, (SELECT `id` FROM `mg_categorie` WHERE `nome` = 'Componenti' LIMIT 1), 1 FROM `my_impianto_componenti`;
-- Trasposizione componenti esistenti -- Trasposizione componenti esistenti
INSERT INTO `my_componenti` (`id_componente_vecchio`, `id_impianto`, `id_intervento`, `id_articolo`, `data_registrazione`, `data_sostituzione`) SELECT `id`, `idimpianto`, `idintervento`, (SELECT `id` FROM `mg_articoli` WHERE `codice` = `my_impianto_componenti`.`filename` LIMIT 1), `data`, `data_sostituzione` FROM `my_impianto_componenti`; INSERT INTO `my_componenti` (`id_componente_vecchio`, `id_impianto`, `id_intervento`, `id_articolo`, `data_registrazione`, `data_sostituzione`) SELECT `id`, `idimpianto`, `idintervento`, (SELECT `id` FROM `mg_articoli` WHERE `codice` = `my_impianto_componenti`.`filename` LIMIT 1), `data`, `data_sostituzione` FROM `my_impianto_componenti`;
@ -57,3 +57,7 @@ ALTER TABLE `my_componenti` ADD FOREIGN KEY (`id_intervento`) REFERENCES `in_int
ADD FOREIGN KEY (`id_impianto`) REFERENCES `my_impianti`(`id`) ON DELETE CASCADE, ADD FOREIGN KEY (`id_impianto`) REFERENCES `my_impianti`(`id`) ON DELETE CASCADE,
ADD FOREIGN KEY (`id_articolo`) REFERENCES `mg_articoli`(`id`) ON DELETE CASCADE; ADD FOREIGN KEY (`id_articolo`) REFERENCES `mg_articoli`(`id`) ON DELETE CASCADE;
-- Aggiunte colonne Sedi e Referenti in tabella Anagrafiche
INSERT INTO `zz_views` (`id`, `id_module`, `name`, `query`, `order`, `search`, `slow`, `format`, `search_inside`, `order_by`, `visible`, `summable`, `default`) VALUES
(NULL, (SELECT `id` FROM `zz_modules` WHERE name = 'Anagrafiche'), 'Referenti', '(SELECT GROUP_CONCAT(nome SEPARATOR '', '') FROM an_referenti WHERE an_referenti .idanagrafica = an_anagrafiche.idanagrafica)', 11, 0, 0, 0, '', '', 1, 0, 1),
(NULL, (SELECT `id` FROM `zz_modules` WHERE name = 'Anagrafiche'), 'Sedi', '(SELECT GROUP_CONCAT(nomesede SEPARATOR '', '') FROM an_sedi WHERE an_sedi.idanagrafica = an_anagrafiche.idanagrafica)', 10, 0, 0, 0, '', '', 1, 0, 1);