Skip to content

Commit a038f28

Browse files
committed
fix: salvataggio inline nuova scadenza
1 parent 27337be commit a038f28

2 files changed

Lines changed: 123 additions & 17 deletions

File tree

modules/scadenzario/actions.php

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,11 @@
4646
}
4747

4848
flash()->info(tr('Scadenza inserita!'));
49+
50+
// Restituisce l'ID della scadenza appena creata per le chiamate AJAX
51+
if (!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
52+
echo json_encode(['id_record' => $id_record]);
53+
}
4954
break;
5055

5156
case 'update':
@@ -204,5 +209,42 @@
204209
flash()->error(tr('Scadenza non trovata!'));
205210
}
206211

212+
break;
213+
214+
case 'save_new_scadenza':
215+
$index = post('index');
216+
$iddocumento = post('iddocumento');
217+
$idanagrafica = post('idanagrafica');
218+
219+
// Recupera i dati dai campi del form
220+
$id_banca_azienda = post('id_banca_azienda');
221+
$id_banca_controparte = post('id_banca_controparte');
222+
$id_pagamento = post('id_pagamento');
223+
$scadenza = post('scadenza');
224+
$data_concordata = post('data_concordata');
225+
$da_pagare = post('da_pagare');
226+
$pagato = post('pagato');
227+
228+
// Verifica se i campi essenziali sono valorizzati
229+
if (!empty($scadenza) && !empty($da_pagare) && $da_pagare != 0) {
230+
// Crea una nuova scadenza
231+
$descrizione = 'Scadenza documento';
232+
$tipo = 'fattura'; // Tipo di default
233+
$data_emissione = date('Y-m-d');
234+
235+
$dbo->query('INSERT INTO co_scadenziario(idanagrafica, iddocumento, descrizione, tipo, data_emissione, scadenza, da_pagare, pagato, id_pagamento, id_banca_azienda, id_banca_controparte, data_concordata) VALUES('.prepare($idanagrafica).', '.prepare($iddocumento).', '.prepare($descrizione).', '.prepare($tipo).', '.prepare($data_emissione).', '.prepare($scadenza).', '.prepare($da_pagare).', '.prepare($pagato ?: 0).', '.prepare($id_pagamento ?: null).', '.prepare($id_banca_azienda ?: null).', '.prepare($id_banca_controparte ?: null).', '.prepare($data_concordata ?: null).')');
236+
$id_record = $dbo->lastInsertedID();
237+
238+
$assicurazione_crediti = AssicurazioneCrediti::where('id_anagrafica', $idanagrafica)->where('data_inizio', '<=', $scadenza)->where('data_fine', '>=', $scadenza)->first();
239+
if (!empty($assicurazione_crediti)) {
240+
$assicurazione_crediti->fixTotale();
241+
$assicurazione_crediti->save();
242+
}
243+
244+
echo json_encode(['success' => true, 'id_record' => $id_record]);
245+
} else {
246+
echo json_encode(['success' => false, 'message' => 'Dati insufficienti per salvare la scadenza']);
247+
}
248+
207249
break;
208250
}

modules/scadenzario/edit.php

Lines changed: 81 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -225,38 +225,38 @@
225225
<input type="hidden" name="id_scadenza['.$i.']" value="'.$scadenza['id'].'">
226226
<td>
227227
'.($dir == 'entrata' ?
228-
'{[ "type": "select", "name": "id_banca_azienda['.$i.']", "ajax-source": "banche", "select-options": '.json_encode(['id_anagrafica' => $anagrafica_azienda->id]).', "value": "'.$scadenza['id_banca_azienda'].'", "icon-after": "add|'.$id_modulo_banche.'|id_anagrafica='.$anagrafica_azienda->id.'", "onchange": "aggiornaScadenzaInline('.$scadenza['id'].')" ]}'
228+
'{[ "type": "select", "name": "id_banca_azienda['.$i.']", "ajax-source": "banche", "select-options": '.json_encode(['id_anagrafica' => $anagrafica_azienda->id]).', "value": "'.$scadenza['id_banca_azienda'].'", "icon-after": "add|'.$id_modulo_banche.'|id_anagrafica='.$anagrafica_azienda->id.'", "onchange": "aggiornaScadenzaInline('.$scadenza['id'].')", "onblur": "aggiornaScadenzaInline('.$scadenza['id'].')" ]}'
229229
:
230-
'{[ "type": "select", "name": "id_banca_controparte['.$i.']", "ajax-source": "banche", "select-options":'.json_encode(['id_anagrafica' => $scadenza['idanagrafica']]).', "value": "'.$scadenza['id_banca_controparte'].'", "icon-after": "add|'.$id_modulo_banche.'|idanagrafica='.$record['idanagrafica'].'", "onchange": "aggiornaScadenzaInline('.$scadenza['id'].')"]}
230+
'{[ "type": "select", "name": "id_banca_controparte['.$i.']", "ajax-source": "banche", "select-options":'.json_encode(['id_anagrafica' => $scadenza['idanagrafica']]).', "value": "'.$scadenza['id_banca_controparte'].'", "icon-after": "add|'.$id_modulo_banche.'|idanagrafica='.$record['idanagrafica'].'", "onchange": "aggiornaScadenzaInline('.$scadenza['id'].')", "onblur": "aggiornaScadenzaInline('.$scadenza['id'].')"]}
231231
').'
232232
</td>
233233
234234
<td>
235235
'.($dir == 'entrata' ?
236-
'{[ "type": "select", "name": "id_banca_controparte['.$i.']", "ajax-source": "banche", "select-options":'.json_encode(['id_anagrafica' => $scadenza['idanagrafica']]).', "value": "'.$scadenza['id_banca_controparte'].'", "icon-after": "add|'.$id_modulo_banche.'|idanagrafica='.$record['idanagrafica'].'", "onchange": "aggiornaScadenzaInline('.$scadenza['id'].')"]}'
236+
'{[ "type": "select", "name": "id_banca_controparte['.$i.']", "ajax-source": "banche", "select-options":'.json_encode(['id_anagrafica' => $scadenza['idanagrafica']]).', "value": "'.$scadenza['id_banca_controparte'].'", "icon-after": "add|'.$id_modulo_banche.'|idanagrafica='.$record['idanagrafica'].'", "onchange": "aggiornaScadenzaInline('.$scadenza['id'].')", "onblur": "aggiornaScadenzaInline('.$scadenza['id'].')"]}'
237237
:
238-
'{[ "type": "select", "name": "id_banca_azienda['.$i.']", "ajax-source": "banche", "select-options": '.json_encode(['id_anagrafica' => $anagrafica_azienda->id]).', "value": "'.$scadenza['id_banca_azienda'].'", "icon-after": "add|'.$id_modulo_banche.'|id_anagrafica='.$anagrafica_azienda->id.'", "onchange": "aggiornaScadenzaInline('.$scadenza['id'].')" ]}'
238+
'{[ "type": "select", "name": "id_banca_azienda['.$i.']", "ajax-source": "banche", "select-options": '.json_encode(['id_anagrafica' => $anagrafica_azienda->id]).', "value": "'.$scadenza['id_banca_azienda'].'", "icon-after": "add|'.$id_modulo_banche.'|id_anagrafica='.$anagrafica_azienda->id.'", "onchange": "aggiornaScadenzaInline('.$scadenza['id'].')", "onblur": "aggiornaScadenzaInline('.$scadenza['id'].')" ]}'
239239
).'
240240
</td>
241241
242242
<td>
243-
{[ "type": "select", "name": "id_pagamento['.$i.']", "values": "query=SELECT `co_pagamenti`.`id`, `fe_modalita_pagamento_lang`.`title` as descrizione FROM `fe_modalita_pagamento` LEFT JOIN `fe_modalita_pagamento_lang` ON (`fe_modalita_pagamento_lang`.`id_record` = `fe_modalita_pagamento`.`codice` AND `fe_modalita_pagamento_lang`.`id_lang` = '.Models\Locale::getDefault()->id.') INNER JOIN `co_pagamenti` ON `fe_modalita_pagamento`.`codice` = `co_pagamenti`.`codice_modalita_pagamento_fe` GROUP BY title", "value": "'.$pagamento.'", "onchange": "aggiornaScadenzaInline('.$scadenza['id'].')" ]}
243+
{[ "type": "select", "name": "id_pagamento['.$i.']", "values": "query=SELECT `co_pagamenti`.`id`, `fe_modalita_pagamento_lang`.`title` as descrizione FROM `fe_modalita_pagamento` LEFT JOIN `fe_modalita_pagamento_lang` ON (`fe_modalita_pagamento_lang`.`id_record` = `fe_modalita_pagamento`.`codice` AND `fe_modalita_pagamento_lang`.`id_lang` = '.Models\Locale::getDefault()->id.') INNER JOIN `co_pagamenti` ON `fe_modalita_pagamento`.`codice` = `co_pagamenti`.`codice_modalita_pagamento_fe` GROUP BY title", "value": "'.$pagamento.'", "onchange": "aggiornaScadenzaInline('.$scadenza['id'].')", "onblur": "aggiornaScadenzaInline('.$scadenza['id'].')" ]}
244244
</td>
245245
246246
<td>
247247
{[ "type": "date", "name": "scadenza['.$i.']", "value": "'.$scadenza['scadenza'].'", "readonly": 1 ]}
248248
</td>
249249
250250
<td>
251-
{[ "type": "date", "name": "data_concordata['.$i.']", "value": "'.$scadenza['data_concordata'].'", "onchange": "aggiornaScadenzaInline('.$scadenza['id'].')" ]}
251+
{[ "type": "date", "name": "data_concordata['.$i.']", "value": "'.$scadenza['data_concordata'].'", "onchange": "aggiornaScadenzaInline('.$scadenza['id'].')", "onblur": "aggiornaScadenzaInline('.$scadenza['id'].')" ]}
252252
</td>
253253
254254
<td class="text-right">
255-
{[ "type": "number", "name": "da_pagare['.$i.']", "decimals": 2, "value": "'.numberFormat($scadenza['da_pagare'], 2).'", "onchange": "controlloTotale(); aggiornaScadenzaInline('.$scadenza['id'].')" ]}
255+
{[ "type": "number", "name": "da_pagare['.$i.']", "decimals": 2, "value": "'.numberFormat($scadenza['da_pagare'], 2).'", "onchange": "controlloTotale(); aggiornaScadenzaInline('.$scadenza['id'].')", "onblur": "aggiornaScadenzaInline('.$scadenza['id'].')" ]}
256256
</td>
257257
258258
<td class="text-right">
259-
{[ "type": "number", "name": "pagato['.$i.']", "decimals": 2, "value": "'.numberFormat($scadenza['pagato']).'", "onchange": "aggiornaScadenzaInline('.$scadenza['id'].')" ]}
259+
{[ "type": "number", "name": "pagato['.$i.']", "decimals": 2, "value": "'.numberFormat($scadenza['pagato']).'", "onchange": "aggiornaScadenzaInline('.$scadenza['id'].')", "onblur": "aggiornaScadenzaInline('.$scadenza['id'].')" ]}
260260
</td>
261261
262262
<td>
@@ -319,37 +319,37 @@
319319
<input type="hidden" name="id_scadenza[-id-]" value="">
320320
<td>
321321
'.($dir == 'entrata' ?
322-
'{[ "type": "select", "name": "id_banca_azienda[-id-]", "ajax-source": "banche", "select-options": '.json_encode(['id_anagrafica' => $anagrafica_azienda->id]).', "icon-after": "add|'.$id_modulo_banche.'|id_anagrafica='.$anagrafica_azienda->id.'" ]}'
322+
'{[ "type": "select", "name": "id_banca_azienda[-id-]", "ajax-source": "banche", "select-options": '.json_encode(['id_anagrafica' => $anagrafica_azienda->id]).', "icon-after": "add|'.$id_modulo_banche.'|id_anagrafica='.$anagrafica_azienda->id.'", "onchange": "aggiornaScadenzaNuova(-id-)", "onblur": "aggiornaScadenzaNuova(-id-)" ]}'
323323
:
324-
'{[ "type": "select", "name": "id_banca_controparte[-id-]", "ajax-source": "banche", "select-options":'.json_encode(['id_anagrafica' => $scadenza['idanagrafica']]).', "icon-after": "add|'.$id_modulo_banche.'|idanagrafica='.$record['idanagrafica'].'"]}
324+
'{[ "type": "select", "name": "id_banca_controparte[-id-]", "ajax-source": "banche", "select-options":'.json_encode(['id_anagrafica' => $scadenza['idanagrafica']]).', "icon-after": "add|'.$id_modulo_banche.'|idanagrafica='.$record['idanagrafica'].'", "onchange": "aggiornaScadenzaNuova(-id-)", "onblur": "aggiornaScadenzaNuova(-id-)"]}
325325
').'
326326
</td>
327327
<td>
328328
'.($dir == 'entrata' ?
329-
'{[ "type": "select", "name": "id_banca_controparte[-id-]", "ajax-source": "banche", "select-options":'.json_encode(['id_anagrafica' => $scadenza['idanagrafica']]).',"icon-after": "add|'.$id_modulo_banche.'|idanagrafica='.$record['idanagrafica'].'"]}'
329+
'{[ "type": "select", "name": "id_banca_controparte[-id-]", "ajax-source": "banche", "select-options":'.json_encode(['id_anagrafica' => $scadenza['idanagrafica']]).',"icon-after": "add|'.$id_modulo_banche.'|idanagrafica='.$record['idanagrafica'].'", "onchange": "aggiornaScadenzaNuova(-id-)", "onblur": "aggiornaScadenzaNuova(-id-)"]}'
330330
:
331-
'{[ "type": "select", "name": "id_banca_azienda[-id-]", "ajax-source": "banche", "select-options": '.json_encode(['id_anagrafica' => $anagrafica_azienda->id]).', "icon-after": "add|'.$id_modulo_banche.'|id_anagrafica='.$anagrafica_azienda->id.'" ]}'
331+
'{[ "type": "select", "name": "id_banca_azienda[-id-]", "ajax-source": "banche", "select-options": '.json_encode(['id_anagrafica' => $anagrafica_azienda->id]).', "icon-after": "add|'.$id_modulo_banche.'|id_anagrafica='.$anagrafica_azienda->id.'", "onchange": "aggiornaScadenzaNuova(-id-)", "onblur": "aggiornaScadenzaNuova(-id-)" ]}'
332332
).'
333333
</td>
334334
335335
<td>
336-
{[ "type": "select", "name": "id_pagamento[-id-]", "values": "query=SELECT `co_pagamenti`.`id`, `fe_modalita_pagamento_lang`.`title` as descrizione FROM `fe_modalita_pagamento` LEFT JOIN `fe_modalita_pagamento_lang` ON (`fe_modalita_pagamento_lang`.`id_record` = `fe_modalita_pagamento`.`codice` AND `fe_modalita_pagamento_lang`.`id_lang` = '.Models\Locale::getDefault()->id.') INNER JOIN `co_pagamenti` ON `fe_modalita_pagamento`.`codice` = `co_pagamenti`.`codice_modalita_pagamento_fe` GROUP BY title"]}
336+
{[ "type": "select", "name": "id_pagamento[-id-]", "values": "query=SELECT `co_pagamenti`.`id`, `fe_modalita_pagamento_lang`.`title` as descrizione FROM `fe_modalita_pagamento` LEFT JOIN `fe_modalita_pagamento_lang` ON (`fe_modalita_pagamento_lang`.`id_record` = `fe_modalita_pagamento`.`codice` AND `fe_modalita_pagamento_lang`.`id_lang` = '.Models\Locale::getDefault()->id.') INNER JOIN `co_pagamenti` ON `fe_modalita_pagamento`.`codice` = `co_pagamenti`.`codice_modalita_pagamento_fe` GROUP BY title", "onchange": "aggiornaScadenzaNuova(-id-)", "onblur": "aggiornaScadenzaNuova(-id-)"]}
337337
</td>
338338
339339
<td>
340-
{[ "type": "date", "name": "scadenza[-id-]" ]}
340+
{[ "type": "date", "name": "scadenza[-id-]", "onchange": "aggiornaScadenzaNuova(-id-)", "onblur": "aggiornaScadenzaNuova(-id-)" ]}
341341
</td>
342342
343343
<td>
344-
{[ "type": "date", "name": "data_concordata[-id-]" ]}
344+
{[ "type": "date", "name": "data_concordata[-id-]", "onchange": "aggiornaScadenzaNuova(-id-)", "onblur": "aggiornaScadenzaNuova(-id-)" ]}
345345
</td>
346346
347347
<td class="text-right">
348-
{[ "type": "number", "name": "da_pagare[-id-]", "decimals": 2, "onchange": "controlloTotale()" ]}
348+
{[ "type": "number", "name": "da_pagare[-id-]", "decimals": 2, "onchange": "controlloTotale(); aggiornaScadenzaNuova(-id-)", "onblur": "aggiornaScadenzaNuova(-id-)" ]}
349349
</td>
350350
351351
<td class="text-right">
352-
{[ "type": "number", "name": "pagato[-id-]", "decimals": 2 ]}
352+
{[ "type": "number", "name": "pagato[-id-]", "decimals": 2, "onchange": "aggiornaScadenzaNuova(-id-)", "onblur": "aggiornaScadenzaNuova(-id-)" ]}
353353
</td>
354354
355355
<td>
@@ -387,6 +387,10 @@
387387
data_emissione: "'.$documento['data_emissione'].'",
388388
},
389389
success: function(response) {
390+
// Aggiorna l\'ID della scadenza appena creata
391+
if (response && response.id_record) {
392+
$("#scadenze tr:last-child input[name*=\'id_scadenza\']").val(response.id_record);
393+
}
390394
restart_inputs();
391395
},
392396
error: function(xhr, status, error) {
@@ -396,6 +400,66 @@
396400
397401
restart_inputs();
398402
});
403+
404+
// Funzione per aggiornare le nuove scadenze (senza ID scadenza ancora)
405+
function aggiornaScadenzaNuova(index) {
406+
content_was_modified = false;
407+
408+
// Trova la riga della scadenza tramite l\'indice
409+
var $row = $("input[name*=\'id_scadenza\'][name*=\'[" + index + "]\']").closest("tr");
410+
var id_scadenza = $row.find("input[name*=\'id_scadenza\']").val();
411+
412+
// Se ha già un ID scadenza, usa la funzione normale
413+
if (id_scadenza && id_scadenza !== "") {
414+
aggiornaScadenzaInline(id_scadenza);
415+
return;
416+
}
417+
418+
// Altrimenti, salva la nuova scadenza
419+
var id_banca_azienda = input("id_banca_azienda[" + index + "]").get();
420+
var id_banca_controparte = input("id_banca_controparte[" + index + "]").get();
421+
var id_pagamento = input("id_pagamento[" + index + "]").get();
422+
var scadenza = input("scadenza[" + index + "]").get();
423+
var data_concordata = input("data_concordata[" + index + "]").get();
424+
var da_pagare = input("da_pagare[" + index + "]").get();
425+
var pagato = input("pagato[" + index + "]").get();
426+
427+
// Verifica se ci sono dati sufficienti per salvare
428+
if (!scadenza || !da_pagare || da_pagare == 0) {
429+
return; // Non salvare se mancano dati essenziali
430+
}
431+
432+
$.ajax({
433+
url: globals.rootdir + "/actions.php",
434+
type: "POST",
435+
dataType: "json",
436+
data: {
437+
id_module: globals.id_module,
438+
id_record: globals.id_record,
439+
op: "save_new_scadenza",
440+
index: index,
441+
iddocumento: '.$documento['id'].',
442+
idanagrafica: '.$record['idanagrafica'].',
443+
id_banca_azienda: id_banca_azienda,
444+
id_banca_controparte: id_banca_controparte,
445+
id_pagamento: id_pagamento,
446+
scadenza: scadenza,
447+
data_concordata: data_concordata,
448+
da_pagare: da_pagare,
449+
pagato: pagato
450+
},
451+
success: function (response) {
452+
if (response.success && response.id_record) {
453+
// Aggiorna l\'ID della scadenza nella riga
454+
$row.find("input[name*=\'id_scadenza\']").val(response.id_record);
455+
renderMessages();
456+
}
457+
},
458+
error: function() {
459+
console.error("Errore durante il salvataggio della nuova scadenza");
460+
}
461+
});
462+
}
399463
</script>';
400464

401465
// Abilitazione dei controlli solo per Scadenze collegate a documenti

0 commit comments

Comments
 (0)