Skip to content

Commit 79f621d

Browse files
committed
fix: compilazione conto e iva in importFE
1 parent 98dd1d7 commit 79f621d

4 files changed

Lines changed: 62 additions & 25 deletions

File tree

plugins/importFE/actions.php

Lines changed: 23 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -303,13 +303,21 @@
303303
$id_tipo = $tipi->sort()->keys()->last();
304304

305305
// Ricerca del conto più utilizzato
306-
$conti = $righe->groupBy(fn ($item, $key) => $item->idconto)->transform(fn ($item, $key) => $item->count());
307-
$id_conto = $conti->sort()->keys()->last();
308-
$conto = $database->fetchOne('SELECT * FROM co_pianodeiconti3 WHERE id = '.prepare($id_conto));
306+
// Filtro le righe che hanno un conto valido (maggiore di 0)
307+
$righe_con_conto = $righe->filter(fn ($item) => !empty($item->idconto) && $item->idconto > 0);
308+
309+
$conto = null;
310+
if ($righe_con_conto->isNotEmpty()) {
311+
$conti = $righe_con_conto->groupBy(fn ($item, $key) => $item->idconto)->transform(fn ($item, $key) => $item->count());
312+
$id_conto = $conti->sort()->keys()->last();
313+
$conto = $database->fetchOne('SELECT * FROM co_pianodeiconti3 WHERE id = '.prepare($id_conto));
314+
}
309315

310316
// Ricerca dell'IVA più utilizzata secondo percentuali
311317
$iva = [];
312-
$percentuali_iva = $righe->groupBy(fn ($item, $key) => $item->aliquota->percentuale);
318+
// Filtro le righe che hanno un'aliquota IVA valida
319+
$righe_con_iva = $righe->filter(fn ($item) => !empty($item->idiva) && $item->idiva > 0 && !empty($item->aliquota));
320+
$percentuali_iva = $righe_con_iva->groupBy(fn ($item, $key) => $item->aliquota->percentuale);
313321
foreach ($percentuali_iva as $key => $values) {
314322
$aliquote = $values->mapToGroups(fn ($item, $key) => [$item->aliquota->id => $item->aliquota]);
315323
$id_aliquota = $aliquote->map(fn ($item, $key) => $item->count())->sort()->keys()->last();
@@ -321,14 +329,20 @@
321329
];
322330
}
323331

324-
echo json_encode([
332+
$response = [
325333
'id_tipo' => $id_tipo,
326-
'conto' => [
334+
'iva' => $iva,
335+
];
336+
337+
// Aggiungo il conto solo se è stato trovato
338+
if (!empty($conto)) {
339+
$response['conto'] = [
327340
'id' => $conto['id'],
328341
'descrizione' => $conto['descrizione'],
329-
],
330-
'iva' => $iva,
331-
]);
342+
];
343+
}
344+
345+
echo json_encode($response);
332346
break;
333347

334348
case 'riferimenti-automatici':

plugins/importFE/buttons.php

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -64,14 +64,19 @@ function compile(btn) {
6464
$("#id_tipo").selectSet(response.id_tipo);
6565
}
6666
67+
// Compila i campi IVA - prova a impostare la prima IVA disponibile per tutti i campi vuoti
6768
$("select[name^=iva]").each(function(){
68-
var aliquota = $(this).closest("tr").find("[id^=aliquota]").text();
69-
if (response.iva[aliquota] !== undefined && !$(this).val()){
70-
$(this).selectSet(response.iva[aliquota].id);
69+
if (!$(this).val() && response.iva){
70+
// Prende la prima aliquota IVA disponibile
71+
var firstIva = Object.values(response.iva)[0];
72+
if (firstIva) {
73+
$(this).selectSetNew(firstIva.id, firstIva.descrizione);
74+
}
7175
}
7276
});
7377
74-
$("select[name^=conto]").each(function(){
78+
// Compila i campi conto - il nome corretto è "conti" non "conto"
79+
$("select[name^=conti]").each(function(){
7580
if (!$(this).val()){
7681
$(this).selectSetNew(response.conto.id, response.conto.descrizione);
7782
}

plugins/importFE_ZIP/actions.php

Lines changed: 23 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -365,13 +365,21 @@
365365
$id_tipo = $tipi->sort()->keys()->last();
366366

367367
// Ricerca del conto più utilizzato
368-
$conti = $righe->groupBy(fn ($item, $key) => $item->idconto)->transform(fn ($item, $key) => $item->count());
369-
$id_conto = $conti->sort()->keys()->last();
370-
$conto = $database->fetchOne('SELECT * FROM co_pianodeiconti3 WHERE id = '.prepare($id_conto));
368+
// Filtro le righe che hanno un conto valido (maggiore di 0)
369+
$righe_con_conto = $righe->filter(fn ($item) => !empty($item->idconto) && $item->idconto > 0);
370+
371+
$conto = null;
372+
if ($righe_con_conto->isNotEmpty()) {
373+
$conti = $righe_con_conto->groupBy(fn ($item, $key) => $item->idconto)->transform(fn ($item, $key) => $item->count());
374+
$id_conto = $conti->sort()->keys()->last();
375+
$conto = $database->fetchOne('SELECT * FROM co_pianodeiconti3 WHERE id = '.prepare($id_conto));
376+
}
371377

372378
// Ricerca dell'IVA più utilizzata secondo percentuali
373379
$iva = [];
374-
$percentuali_iva = $righe->groupBy(fn ($item, $key) => $item->aliquota->percentuale);
380+
// Filtro le righe che hanno un'aliquota IVA valida
381+
$righe_con_iva = $righe->filter(fn ($item) => !empty($item->idiva) && $item->idiva > 0 && !empty($item->aliquota));
382+
$percentuali_iva = $righe_con_iva->groupBy(fn ($item, $key) => $item->aliquota->percentuale);
375383
foreach ($percentuali_iva as $key => $values) {
376384
$aliquote = $values->mapToGroups(fn ($item, $key) => [$item->aliquota->id => $item->aliquota]);
377385
$id_aliquota = $aliquote->map(fn ($item, $key) => $item->count())->sort()->keys()->last();
@@ -383,14 +391,20 @@
383391
];
384392
}
385393

386-
echo json_encode([
394+
$response = [
387395
'id_tipo' => $id_tipo,
388-
'conto' => [
396+
'iva' => $iva,
397+
];
398+
399+
// Aggiungo il conto solo se è stato trovato
400+
if (!empty($conto)) {
401+
$response['conto'] = [
389402
'id' => $conto['id'],
390403
'descrizione' => $conto['descrizione'],
391-
],
392-
'iva' => $iva,
393-
]);
404+
];
405+
}
406+
407+
echo json_encode($response);
394408
break;
395409

396410
case 'riferimenti-automatici':

plugins/importFE_ZIP/buttons.php

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -64,10 +64,14 @@ function compile(btn) {
6464
$("#id_tipo").selectSet(response.id_tipo);
6565
}
6666
67+
// Compila i campi IVA - prova a impostare la prima IVA disponibile per tutti i campi vuoti
6768
$("select[name^=iva]").each(function(){
68-
var aliquota = $(this).closest("tr").find("[id^=aliquota]").text();
69-
if (response.iva[aliquota] !== undefined && !$(this).val()){
70-
$(this).selectSet(response.iva[aliquota].id);
69+
if (!$(this).val() && response.iva){
70+
// Prende la prima aliquota IVA disponibile
71+
var firstIva = Object.values(response.iva)[0];
72+
if (firstIva) {
73+
$(this).selectSetNew(firstIva.id, firstIva.descrizione);
74+
}
7175
}
7276
});
7377

0 commit comments

Comments
 (0)