Skip to content

Commit 316ec3d

Browse files
committed
refactor: miglioria plugins fatturazione
1 parent 92dc58a commit 316ec3d

10 files changed

Lines changed: 1866 additions & 985 deletions

File tree

plugins/exportFE/edit.php

Lines changed: 45 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@
4141
if (!empty($checks)) {
4242
echo '
4343
<div class="alert alert-warning">
44-
<p><i class="fa fa-warning"></i> '.tr('Prima di procedere alla generazione della fattura elettronica completa le seguenti informazioni').':</p>';
44+
<p><i class="fa fa-warning mr-2"></i> '.tr('Prima di procedere alla generazione della fattura elettronica completa le seguenti informazioni').':</p>';
4545

4646
foreach ($checks as $check) {
4747
echo '
@@ -64,12 +64,15 @@
6464
}
6565

6666
echo '
67-
<p>'.tr("Per effettuare la generazione dell'XML della fattura elettronica clicca sul pulsante _BTN_", [
68-
'_BTN_' => '<b>Genera</b>',
69-
]).'. '.tr('Successivamente sarà possibile procedere alla visualizzazione e al download della fattura generata attraverso i pulsanti dedicati').'.</p>
70-
71-
<p>'.tr("Tutti gli allegati inseriti all'interno della categoria \"Allegati Fattura Elettronica\" saranno inclusi nell'XML").'.</p>
72-
<br>';
67+
<div class="alert alert-info">
68+
<i class="fa fa-info-circle mr-2"></i>'.tr("Per effettuare la generazione dell'XML della fattura elettronica clicca sul pulsante _BTN_", [
69+
'_BTN_' => '<b>Genera</b>',
70+
]).'. '.tr('Successivamente sarà possibile procedere alla visualizzazione e al download della fattura generata attraverso i pulsanti dedicati').'
71+
</div>
72+
73+
<div class="alert alert-light border">
74+
<i class="fa fa-paperclip mr-2"></i>'.tr("Tutti gli allegati inseriti all'interno della categoria \"Allegati Fattura Elettronica\" saranno inclusi nell'XML").'
75+
</div>';
7376

7477
echo '
7578
<div class="text-center">
@@ -80,7 +83,7 @@
8083
<input type="hidden" name="op" value="generate">
8184
8285
<button type="button" class="btn btn-primary btn-lg '.(!$abilita_genera ? 'disabled' : '').'" onclick="generaFE(this)">
83-
<i class="fa fa-file"></i> '.tr('Genera').'
86+
<i class="fa fa-file mr-1"></i> '.tr('Genera').'
8487
</button>
8588
</form>';
8689

@@ -91,7 +94,7 @@
9194
<i class="fa fa-arrow-right fa-fw text-muted"></i>
9295
9396
<a href="'.base_path().'/view.php?file_id='.($file ? $file->id : null).'" class="btn btn-info btn-lg '.($generata ? '' : 'disabled').'" target="_blank" '.($generata ? '' : 'disabled').'>
94-
<i class="fa fa-eye"></i> '.tr('Visualizza').'
97+
<i class="fa fa-eye mr-1"></i> '.tr('Visualizza').'
9598
</a>';
9699

97100
// Scelgo quando posso inviarla
@@ -101,23 +104,23 @@
101104
<i class="fa fa-arrow-right fa-fw text-muted"></i>
102105
103106
<a href="'.$structure->fileurl('download.php').'?id_record='.$id_record.'" class="btn btn-primary btn-lg '.($generata ? '' : 'disabled').'" target="_blank" '.($generata ? '' : 'disabled').'>
104-
<i class="fa fa-download"></i> '.tr('Scarica').'
107+
<i class="fa fa-download mr-1"></i> '.tr('Scarica').'
105108
</a>';
106109

107110
echo '
108111
109112
<i class="fa fa-arrow-right fa-fw text-muted"></i>
110113
111114
<button type="button" onclick="inviaFE(this)" class="btn btn-success btn-lg '.($inviabile ? '' : 'disabled').'">
112-
<i class="fa fa-paper-plane"></i> '.tr('Invia').'
115+
<i class="fa fa-paper-plane mr-1"></i> '.tr('Invia').'
113116
</button>';
114117

115118
$verify = Interaction::isEnabled() && $generata;
116119
echo '
117120
<i class="fa fa-arrow-right fa-fw text-muted"></i>
118121
119122
<button type="button" onclick="verificaNotificheFE(this)" class="btn btn-warning btn-lg '.($verify ? '' : 'disabled').'">
120-
<i class="fa fa-question-circle"></i> '.tr('Verifica ricevute').'
123+
<i class="fa fa-question-circle mr-1"></i> '.tr('Verifica ricevute').'
121124
</button>
122125
</div>';
123126

@@ -128,20 +131,20 @@
128131
echo '
129132
<div class="alert alert-'.$stato_fe->tipo.'">
130133
<div class="float-right d-none d-sm-inline">
131-
<i class="fa fa-clock-o tip" title="'.tr('Data e ora').'"></i> '.timestampFormat($record['data_stato_fe']);
134+
<i class="fa fa-clock-o mr-1 tip" title="'.tr('Data e ora').'"></i> '.timestampFormat($record['data_stato_fe']);
132135

133136
if (!empty($ultima_ricevuta)) {
134137
echo '
135138
<a href="'.ROOTDIR.'/view.php?file_id='.$ultima_ricevuta->id.'" target="_blank" class="btn btn-info btn-xs">
136-
<i class="fa fa-external-link"></i> '.tr('Visualizza ricevuta').'
139+
<i class="fa fa-external-link mr-1"></i> '.tr('Visualizza ricevuta').'
137140
</a>';
138141
}
139142

140143
echo '
141144
</div>
142145
143146
<big>
144-
<i class="'.$stato_fe->icon.'" style="color:#fff;"></i>
147+
<i class="'.$stato_fe->icon.' mr-1" style="color:#fff;"></i>
145148
<b>'.$stato_fe->codice.'</b> - '.$stato_fe->name.'
146149
</big>';
147150

@@ -152,7 +155,7 @@
152155

153156
if ($fattura->codice_stato_fe == 'GEN') {
154157
echo '
155-
<br><i class="fa fa-info-circle"></i> '.tr("La fattura è stata generata ed è pronta per l'invio").'.';
158+
<br><i class="fa fa-info-circle mr-1"></i> '.tr("La fattura è stata generata ed è pronta per l'invio").'.';
156159
}
157160

158161
echo '
@@ -194,10 +197,23 @@
194197

195198
echo '
196199
<script>
200+
$(document).ready(function() {
201+
// Personalizzazione animazione di caricamento
202+
$.fn.dataTable.ext.pager.numbers_length = 5;
203+
$.extend(true, $.fn.dataTable.defaults, {
204+
language: {
205+
processing: "<div class=\"text-center\"><i class=\"fa fa-refresh fa-spin fa-2x fa-fw text-primary\"></i><div class=\"mt-2\">"+globals.translations.processing+"</div></div>"
206+
}
207+
});
208+
});
209+
197210
function inviaFE(button) {
198211
if (confirm("'.tr('Inviare la fattura al SDI?').'")) {
199212
let restore = buttonLoading(button);
200213
214+
// Mostra un\'animazione di caricamento
215+
$("#main_loading").show();
216+
201217
$.ajax({
202218
url: globals.rootdir + "/actions.php",
203219
type: "post",
@@ -209,6 +225,7 @@ function inviaFE(button) {
209225
id_record: "'.$id_record.'",
210226
},
211227
success: function(data) {
228+
$("#main_loading").fadeOut();
212229
buttonRestore(button, restore);
213230
214231
if (data.code === 200) {
@@ -227,6 +244,7 @@ function inviaFE(button) {
227244
}
228245
},
229246
error: function() {
247+
$("#main_loading").fadeOut();
230248
swal("'.tr('Errore').'", "'.tr('Errore durante il salvataggio').'", "error");
231249
232250
buttonRestore(button, restore);
@@ -241,6 +259,9 @@ function verificaNotificheFE(button) {
241259
/*
242260
let restore = buttonLoading(button);
243261
262+
// Mostra un\'animazione di caricamento
263+
$("#main_loading").show();
264+
244265
$.ajax({
245266
url: globals.rootdir + "/actions.php",
246267
type: "post",
@@ -251,6 +272,7 @@ function verificaNotificheFE(button) {
251272
id_record: "'.$id_record.'",
252273
},
253274
success: function(data) {
275+
$("#main_loading").fadeOut();
254276
buttonRestore(button, restore);
255277
data = JSON.parse(data);
256278
@@ -263,6 +285,7 @@ function verificaNotificheFE(button) {
263285
}
264286
},
265287
error: function(data) {
288+
$("#main_loading").fadeOut();
266289
swal("'.tr('Errore').'", "'.tr('Errore durante la verifica').'", "error");
267290
268291
buttonRestore(button, restore);
@@ -272,11 +295,12 @@ function verificaNotificheFE(button) {
272295
273296
function generaFE(button) {
274297
salvaForm("#edit-form", {}, button)
275-
.then(function(valid) {';
298+
.then(function(valid) {
299+
// Mostra un\'animazione di caricamento
300+
$("#main_loading").show();';
276301

277302
if ($generata) {
278303
echo '
279-
/*<p class=\"text-danger\">'.tr('Se stai attendendo una ricevuta dal sistema SdI, rigenerando la fattura elettronica non sarà possibile corrispondere la ricevuta una volta emessa').'.</p>*/
280304
swal({
281305
title: "'.tr('Sei sicuro di rigenerare la fattura?').'",
282306
html: "<p>'.tr('Attenzione: sarà generato un nuovo progressivo invio').'.</p>",
@@ -288,15 +312,17 @@ function generaFE(button) {
288312
}).then((result) => {
289313
if (result) {
290314
$("#form-xml").submit();
315+
} else {
316+
$("#main_loading").fadeOut();
291317
}
292318
});';
293319
} else {
294320
echo '
295-
296321
$("#form-xml").submit();';
297322
}
298323
echo '
299324
}).catch(function() {
325+
$("#main_loading").fadeOut();
300326
swal({
301327
type: "error",
302328
title: "'.tr('Errore').'",

plugins/exportFE/notifiche.php

Lines changed: 77 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -13,25 +13,40 @@
1313

1414
if (empty($recepits)) {
1515
echo '
16-
<p>'.tr('Il documento non ha notifiche disponibili').'.</p>
16+
<div class="alert alert-warning py-2">
17+
<i class="fa fa-exclamation-triangle mr-2"></i>'.tr('Il documento non ha notifiche disponibili').'
18+
</div>
1719
18-
<p class="text-small">'.tr("Nota: se la fattura in questione è stata inviata molto tempo fa, il servizio utilizzato non ha reso disponibile l'associazione diretta tra la fattura e le notifiche").'. '.tr("L'importazione delle notifiche in questione procedere comunque regolarmente").'.</p>';
20+
<div class="alert alert-light border">
21+
<i class="fa fa-info-circle mr-2"></i>'.tr("Nota: se la fattura in questione è stata inviata molto tempo fa, il servizio utilizzato non ha reso disponibile l'associazione diretta tra la fattura e le notifiche").'. '.tr("L'importazione delle notifiche in questione procedere comunque regolarmente").'
22+
</div>';
1923

2024
return;
2125
}
2226

2327
echo '
24-
<p>'.tr("Segue l'elenco completo delle notifiche/ricevute relative alla fatture elettronica di questo documento").'.</p>
25-
<p>'.tr('La procedura di importazione prevede di impostare in modo autonomo la notifica più recente come principale, ma si verificano alcune situazioni in cui il comportamento richiesto deve essere distinto').'. '.tr('Qui si può procedere a scaricare una specifica notifica e a impostarla manualmente come principale per il documento').'.</p>
26-
27-
<p class="text-small">'.tr('Nota: in caso di fattura scartata per duplicazione, se non sono disponibili notifiche contattare i fornitori del servizio').'.</p>
28-
29-
<table class="table">
28+
<div class="row">
29+
<div class="col-md-8">
30+
<p>'.tr("Segue l'elenco completo delle notifiche/ricevute relative alla fatture elettronica di questo documento").'.</p>
31+
<p>'.tr('La procedura di importazione prevede di impostare in modo autonomo la notifica più recente come principale, ma si verificano alcune situazioni in cui il comportamento richiesto deve essere distinto').'. '.tr('Qui si può procedere a scaricare una specifica notifica e a impostarla manualmente come principale per il documento').'.</p>
32+
<p class="text-small">'.tr('Nota: in caso di fattura scartata per duplicazione, se non sono disponibili notifiche contattare i fornitori del servizio').'.</p>
33+
</div>
34+
<div class="col-md-4">
35+
<div class="input-group mb-3">
36+
<div class="input-group-prepend">
37+
<span class="input-group-text"><i class="fa fa-search"></i></span>
38+
</div>
39+
<input type="text" class="form-control" id="search_receipt" placeholder="'.tr('Cerca ricevuta').'">
40+
</div>
41+
</div>
42+
</div>
43+
44+
<table class="table table-striped table-hover table-sm table-bordered">
3045
<thead>
3146
<tr>
3247
<th>'.tr('Nome').'</th>
3348
<th class="text-center">'.tr('Scaricata').'</th>
34-
<th class="text-center">'.tr('Opzioni').'</th>
49+
<th width="20%" class="text-center">'.tr('Opzioni').'</th>
3550
</tr>
3651
</thead>
3752
@@ -52,7 +67,7 @@
5267

5368
echo '
5469
<tr data-name="'.$nome.'">
55-
<td>'.$nome.'</td>
70+
<td><i class="fa fa-file-text-o mr-1 text-primary"></i>'.$nome.'</td>
5671
5772
<td class="text-center">';
5873

@@ -61,33 +76,35 @@
6176
} else {
6277
echo '
6378
<a href="'.ROOTDIR.'/view.php?file_id='.$upload->id.'" target="_blank">
64-
<i class="fa fa-external-link"></i> '.tr('Visualizza').'
79+
<i class="fa fa-external-link mr-1"></i> '.tr('Visualizza').'
6580
</a>';
6681
}
6782

6883
echo '
69-
<td class="text-center">';
84+
<td class="text-center">
85+
<div class="btn-group">';
7086

7187
if (empty($upload)) {
7288
echo '
7389
<button type="button" class="btn btn-info btn-sm tip" onclick="scaricaRicevuta(this)" title="'.tr('Scarica la ricevuta e la imposta come principale aggiornando lo stato FE del documento').'">
74-
<i class="fa fa-download"></i>
90+
<i class="fa fa-download mr-1"></i>
7591
</button>';
7692
}
7793

7894
if (empty($upload) || $upload->id != $documento->id_ricevuta_principale) {
7995
echo '
8096
<button type="button" class="btn btn-warning btn-sm tip" onclick="impostaRicevuta(this)" title="'.tr('Imposta la ricevuta come principale aggiornando lo stato FE del documento').'">
81-
<i class="fa fa-check-circle"></i>
97+
<i class="fa fa-check-circle mr-1"></i>
8298
</button>';
8399
} elseif ($upload->id == $documento->id_ricevuta_principale) {
84100
echo '
85101
<button type="button" class="btn btn-success btn-sm disabled">
86-
<i class="fa fa-check-circle"></i>
102+
<i class="fa fa-check-circle mr-1"></i>
87103
</button>';
88104
}
89105

90106
echo '
107+
</div>
91108
</td>
92109
</tr>';
93110
}
@@ -97,6 +114,46 @@
97114
</table>
98115
99116
<script>
117+
$(document).ready(function() {
118+
// Search functionality for receipt list
119+
$("#search_receipt").on("keyup", function() {
120+
applySearchFilter();
121+
});
122+
});
123+
124+
function applySearchFilter() {
125+
var searchValue = $("#search_receipt").val().toLowerCase();
126+
127+
// Mostra tutte le righe se il campo di ricerca è vuoto
128+
if(searchValue.length === 0) {
129+
$("table tbody tr").show();
130+
return;
131+
}
132+
133+
// Aggiungi un effetto di evidenziazione durante la ricerca
134+
$("table tbody tr").each(function() {
135+
var rowText = $(this).text().toLowerCase();
136+
var match = rowText.indexOf(searchValue) > -1;
137+
138+
if(match) {
139+
$(this).show();
140+
} else {
141+
$(this).hide();
142+
}
143+
});
144+
145+
// Mostra un messaggio se non ci sono risultati
146+
if($("table tbody tr:visible").length === 0) {
147+
if($("#no-results-message").length === 0) {
148+
$("table tbody").append("<tr id=\"no-results-message\"><td colspan=\"3\" class=\"text-center text-muted py-3\"><i class=\"fa fa-search mr-2\"></i>"+globals.translations.no_results_found+" \"" + searchValue + "\"</td></tr>");
149+
} else {
150+
$("#no-results-message td").html("<i class=\"fa fa-search mr-2\"></i>"+globals.translations.no_results_found+" \"" + searchValue + "\"");
151+
}
152+
} else {
153+
$("#no-results-message").remove();
154+
}
155+
}
156+
100157
function scaricaRicevuta(button) {
101158
let riga = $(button).closest("tr");
102159
let name = riga.data("name");
@@ -114,6 +171,9 @@ function impostaRicevuta(button) {
114171
function gestioneRicevuta(button, name, type) {
115172
let restore = buttonLoading(button);
116173
174+
// Mostra un\'animazione di caricamento
175+
$("#main_loading").show();
176+
117177
$.ajax({
118178
url: globals.rootdir + "/actions.php",
119179
type: "post",
@@ -127,6 +187,7 @@ function gestioneRicevuta(button, name, type) {
127187
type: type,
128188
},
129189
success: function(response) {
190+
$("#main_loading").fadeOut();
130191
buttonRestore(button, restore);
131192
132193
if (response.fattura) {
@@ -142,6 +203,7 @@ function gestioneRicevuta(button, name, type) {
142203
}
143204
},
144205
error: function() {
206+
$("#main_loading").fadeOut();
145207
buttonRestore(button, restore);
146208
147209
swal("'.tr('Errore').'", "'.tr('Errore durante il salvataggio').'", "error");

0 commit comments

Comments
 (0)