Skip to content

Commit 8026110

Browse files
committed
fix: importazione fatture da zip
1 parent 6e6ecc5 commit 8026110

3 files changed

Lines changed: 200 additions & 24 deletions

File tree

plugins/importFE_ZIP/actions.php

Lines changed: 73 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -221,15 +221,68 @@
221221

222222
break;
223223

224+
case 'prepare':
225+
$name = filter('name');
226+
227+
try {
228+
$file = Interaction::getInvoiceFile($name, 'Fatture di vendita', 'Importazione FE');
229+
230+
if (!FatturaElettronica::isValid($file, 'Fatture di vendita', 'Importazione FE')) {
231+
echo json_encode([
232+
'already' => 0,
233+
'id' => 1,
234+
'message' => tr('Fattura pronta per l\'importazione')
235+
]);
236+
} else {
237+
echo json_encode([
238+
'already' => 1,
239+
'message' => tr('Fattura già importata')
240+
]);
241+
}
242+
} catch (Exception $e) {
243+
echo json_encode([
244+
'error' => tr('Errore durante la preparazione della fattura').': '.$e->getMessage()
245+
]);
246+
}
247+
248+
break;
249+
224250
case 'delete':
225251
$file_id = get('file_id');
226252

227-
$directory = FatturaElettronica::getImportDirectory('Fatture di vendita', 'Importazione FE');
228-
$files = Interaction::getFileList([], 'Fatture di vendita', 'Importazione FE');
229-
$file = $files[$file_id];
253+
try {
254+
$directory = FatturaElettronica::getImportDirectory('Fatture di vendita', 'Importazione FE');
255+
$files = Interaction::getFileList([], 'Fatture di vendita', 'Importazione FE');
230256

231-
if (!empty($file)) {
232-
delete($directory.'/'.$file['name']);
257+
if (!isset($files[$file_id])) {
258+
echo json_encode([
259+
'success' => false,
260+
'message' => tr('File non trovato con ID: ') . $file_id,
261+
'debug' => [
262+
'file_id' => $file_id,
263+
'available_files' => array_keys($files)
264+
]
265+
]);
266+
break;
267+
}
268+
269+
$file = $files[$file_id];
270+
$file_path = $directory.'/'.$file['name'];
271+
272+
if (file_exists($file_path)) {
273+
if (delete($file_path)) {
274+
echo json_encode(['success' => true, 'message' => tr('File eliminato correttamente')]);
275+
} else {
276+
echo json_encode(['success' => false, 'message' => tr('Impossibile eliminare il file')]);
277+
}
278+
} else {
279+
echo json_encode(['success' => false, 'message' => tr('File fisico non trovato: ') . $file['name']]);
280+
}
281+
} catch (Exception $e) {
282+
echo json_encode([
283+
'success' => false,
284+
'message' => tr('Errore durante l\'eliminazione: ') . $e->getMessage()
285+
]);
233286
}
234287

235288
break;
@@ -244,6 +297,9 @@
244297

245298
if (!empty($file)) {
246299
download($directory.'/'.$file['name']);
300+
// Note: download() function handles the response and exits
301+
} else {
302+
echo json_encode(['success' => false, 'message' => tr('File non trovato')]);
247303
}
248304

249305
break;
@@ -349,7 +405,12 @@
349405
$process_result = Interaction::processInvoice($name);
350406
if (!empty($process_result)) {
351407
flash()->error($process_result);
408+
echo json_encode(['success' => false, 'message' => $process_result]);
409+
} else {
410+
echo json_encode(['success' => true, 'message' => tr('File processato correttamente')]);
352411
}
412+
} else {
413+
echo json_encode(['success' => false, 'message' => tr('Interazione non abilitata')]);
353414
}
354415

355416
break;
@@ -783,4 +844,11 @@
783844
echo json_encode($results);
784845

785846
break;
847+
848+
default:
849+
echo json_encode([
850+
'error' => tr('Operazione non riconosciuta'),
851+
'operation' => filter('op')
852+
]);
853+
break;
786854
}

plugins/importFE_ZIP/edit.php

Lines changed: 45 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,15 @@ function upload1(btn) {
3232
$("#main_loading").fadeOut();
3333
3434
try {
35+
// Verifica se la risposta è vuota
36+
if (!data || data.trim() === "") {
37+
console.error("Risposta vuota dal server");
38+
swal("'.tr('Errore').'", "'.tr('Risposta vuota dal server').'", "error");
39+
$("#blob1").val("");
40+
buttonRestore(btn, restore);
41+
return;
42+
}
43+
3544
var response = JSON.parse(data);
3645
if (response.error) {
3746
swal("'.tr('Errore').'", response.error, "error");
@@ -40,7 +49,12 @@ function upload1(btn) {
4049
return;
4150
}
4251
} catch (e) {
43-
// Se non è JSON valido, continua normalmente
52+
console.error("Errore parsing JSON:", e);
53+
console.error("Dati ricevuti:", data);
54+
swal("'.tr('Errore').'", "'.tr('Errore durante l\'elaborazione della risposta del server').'", "error");
55+
$("#blob1").val("");
56+
buttonRestore(btn, restore);
57+
return;
4458
}
4559
4660
swal("Caricamento completato!", "", "success");
@@ -96,6 +110,15 @@ function upload1(btn) {
96110
$("#main_loading").fadeOut();
97111
98112
try {
113+
// Verifica se la risposta è vuota
114+
if (!data || data.trim() === "") {
115+
console.error("Risposta vuota dal server");
116+
swal("'.tr('Errore').'", "'.tr('Risposta vuota dal server').'", "error");
117+
$("#blob1").val("");
118+
buttonRestore(btn, restore);
119+
return;
120+
}
121+
99122
data = JSON.parse(data);
100123
101124
// Controlla se c\'è un messaggio di errore nella risposta
@@ -117,7 +140,8 @@ function upload1(btn) {
117140
$("#blob1").val("");
118141
}
119142
} catch (e) {
120-
// Se non è JSON valido, mostra un errore generico
143+
console.error("Errore parsing JSON:", e);
144+
console.error("Dati ricevuti:", data);
121145
swal("'.tr('Errore').'", "'.tr('Si è verificato un errore durante l\'elaborazione della risposta').'", "error");
122146
$("#blob1").val("");
123147
}
@@ -258,7 +282,25 @@ function importAllZip(btn) {
258282
},
259283
type: "post",
260284
success: function(data){
261-
data = JSON.parse(data);
285+
try {
286+
// Verifica se la risposta è vuota
287+
if (!data || data.trim() === "") {
288+
console.error("Risposta vuota dal server");
289+
swal("'.tr('Errore').'", "'.tr('Risposta vuota dal server').'", "error");
290+
buttonRestore(btn, restore);
291+
$("#main_loading").fadeOut();
292+
return;
293+
}
294+
295+
data = JSON.parse(data);
296+
} catch (e) {
297+
console.error("Errore parsing JSON:", e);
298+
console.error("Dati ricevuti:", data);
299+
swal("'.tr('Errore').'", "'.tr('Errore durante l\'elaborazione della risposta del server').'", "error");
300+
buttonRestore(btn, restore);
301+
$("#main_loading").fadeOut();
302+
return;
303+
}
262304
263305
count = data.length;
264306
counter = 0;

plugins/importFE_ZIP/list.php

Lines changed: 82 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@
5959
<td class="text-center">-</td>
6060
6161
<td class="text-center">
62-
<button type="button" class="btn btn-danger" onclick="delete_fe(this, \''.$element['id'].'\')">
62+
<button type="button" class="btn btn-danger" onclick="delete_fe_vendita(this, \''.$element['id'].'\')">
6363
<i class="fa fa-trash"></i>
6464
</button>';
6565
} else {
@@ -143,20 +143,39 @@ function import_fe_vendita(button, file, data_registrazione) {
143143
name: file,
144144
},
145145
success: function(data) {
146-
data = JSON.parse(data);
146+
try {
147+
if (!data || data.trim() === "") {
148+
swal({
149+
title: "'.tr('Errore').'",
150+
text: "'.tr('Risposta vuota dal server').'",
151+
type: "error",
152+
});
153+
buttonRestore(button, restore);
154+
return;
155+
}
156+
157+
data = JSON.parse(data);
158+
159+
if (!data.already) {
160+
redirect(globals.rootdir + "/editor.php?id_module=" + globals.id_module + "&id_plugin=" + '.$id_plugin.' + "&id_record=" + data.id + "&data_registrazione=" + data_registrazione);
161+
} else {
162+
swal({
163+
title: "'.tr('Fattura già importata.').'",
164+
type: "info",
165+
});
147166
148-
if (!data.already) {
149-
redirect(globals.rootdir + "/editor.php?id_module=" + globals.id_module + "&id_plugin=" + '.$id_plugin.' + "&id_record=" + data.id + "&data_registrazione=" + data_registrazione);
150-
} else {
167+
$(button).prop("disabled", true);
168+
}
169+
170+
buttonRestore(button, restore);
171+
} catch (e) {
151172
swal({
152-
title: "'.tr('Fattura già importata.').'",
153-
type: "info",
173+
title: "'.tr('Errore').'",
174+
text: "'.tr('Errore durante l\'elaborazione della risposta del server').'",
175+
type: "error",
154176
});
155-
156-
$(button).prop("disabled", true);
177+
buttonRestore(button, restore);
157178
}
158-
159-
buttonRestore(button, restore);
160179
},
161180
error: function(xhr) {
162181
alert("'.tr('Errore').': " + xhr.responseJSON.error.message);
@@ -186,9 +205,33 @@ function process_fe_vendita(button, file) {
186205
name: file,
187206
},
188207
success: function(data) {
189-
$("#list").load("'.$structure->fileurl('list.php').'?id_module='.$id_module.'&id_plugin='.$id_plugin.'", function() {
190-
buttonRestore(button, restore);
191-
});
208+
try {
209+
if (!data || data.trim() === "") {
210+
swal("'.tr('Errore').'", "'.tr('Risposta vuota dal server').'", "error");
211+
buttonRestore(button, restore);
212+
return;
213+
}
214+
215+
var response = JSON.parse(data);
216+
217+
if (response.success) {
218+
swal("'.tr('Successo').'", response.message || "'.tr('File processato correttamente').'", "success");
219+
} else if (response.success === false) {
220+
swal("'.tr('Errore').'", response.message || "'.tr('Errore durante l\'elaborazione del file').'", "error");
221+
}
222+
223+
$("#list").load("'.$structure->fileurl('list.php').'?id_module='.$id_module.'&id_plugin='.$id_plugin.'", function() {
224+
buttonRestore(button, restore);
225+
});
226+
} catch (e) {
227+
$("#list").load("'.$structure->fileurl('list.php').'?id_module='.$id_module.'&id_plugin='.$id_plugin.'", function() {
228+
buttonRestore(button, restore);
229+
});
230+
}
231+
},
232+
error: function(xhr, status, error) {
233+
swal("'.tr('Errore').'", "'.tr('Errore di connessione').': " + error, "error");
234+
buttonRestore(button, restore);
192235
}
193236
});
194237
});
@@ -214,9 +257,32 @@ function delete_fe_vendita(button, file_id) {
214257
file_id: file_id,
215258
},
216259
success: function(data) {
217-
$("#list").load("'.$structure->fileurl('list.php').'?id_module='.$id_module.'&id_plugin='.$id_plugin.'", function() {
260+
try {
261+
if (!data || data.trim() === "") {
262+
swal("'.tr('Errore').'", "'.tr('Risposta vuota dal server').'", "error");
263+
buttonRestore(button, restore);
264+
return;
265+
}
266+
267+
var response = JSON.parse(data);
268+
269+
if (response.success) {
270+
swal("'.tr('Successo').'", response.message || "'.tr('File eliminato correttamente').'", "success");
271+
$("#list").load("'.$structure->fileurl('list.php').'?id_module='.$id_module.'&id_plugin='.$id_plugin.'", function() {
272+
buttonRestore(button, restore);
273+
});
274+
} else {
275+
swal("'.tr('Errore').'", response.message || "'.tr('Errore durante l\'eliminazione del file').'", "error");
276+
buttonRestore(button, restore);
277+
}
278+
} catch (e) {
279+
swal("'.tr('Errore').'", "'.tr('Errore durante l\'elaborazione della risposta del server').'", "error");
218280
buttonRestore(button, restore);
219-
});
281+
}
282+
},
283+
error: function(xhr, status, error) {
284+
swal("'.tr('Errore').'", "'.tr('Errore di connessione').': " + error, "error");
285+
buttonRestore(button, restore);
220286
}
221287
});
222288
});

0 commit comments

Comments
 (0)