diff --git a/lib/classes/HTMLBuilder/Manager/FileManager.php b/lib/classes/HTMLBuilder/Manager/FileManager.php index 56e94c8c8..900a6c617 100644 --- a/lib/classes/HTMLBuilder/Manager/FileManager.php +++ b/lib/classes/HTMLBuilder/Manager/FileManager.php @@ -103,6 +103,8 @@ class FileManager implements ManagerInterface form_data.append("id_record","'.$options['id_record'].'"); form_data.append("id_module", "'.$options['id_module'].'"); + $("#main_loading").fadeIn(); + $.ajax({ url: "'.ROOTDIR.'/actions.php", cache: false, diff --git a/lib/functions.js b/lib/functions.js index 039a6c40d..b46f39628 100644 --- a/lib/functions.js +++ b/lib/functions.js @@ -168,6 +168,20 @@ $(document).ready(function () { $('ul.nav a[href="' + hash + '"]').tab('show'); } + // Salvo lo scroll per riportare qui l'utente al reload + $(window).on('scroll', function () { + if (localStorage != undefined) { + localStorage.setItem('scrollTop_' + globals.id_module + '_' + globals.id_record, $(document).scrollTop()); + } + }); + + // Riporto l'utente allo scroll precedente + if (localStorage['scrollTop_' + globals.id_module + '_' + globals.id_record] != undefined) { + setTimeout(function () { + scrollToAndFocus(localStorage['scrollTop_' + globals.id_module + '_' + globals.id_record]); + }, 1); + } + $('.nav-tabs a').click(function (e) { $(this).tab('show'); @@ -941,22 +955,19 @@ function start_inputmask() { } } -/* -/* Funzione per far scrollare la pagina fino a un id + focus e offset -/* es: scrollToAndFocus ('id',0,'','Attenzione'); -*/ -function scrollToAndFocus(id, offset, focus, messaggio) { +/** + * Funzione per far scrollare la pagina fino a un id + focus e offset + * @param integer offset + * @param string id + */ +function scrollToAndFocus(offset, id) { + if (id) { + offset += $('#' + id).offset().top; + } + $('html,body').animate({ - scrollTop: $('#' + id).offset().top + offset - }, 'slow', function () { - if (messaggio != '') { - alert(messaggio); - messaggio = ''; - }; - if (focus != '') { - $('#' + focus).focus(); - } - }); + scrollTop: offset + }, 'slow'); } /** diff --git a/modules/anagrafiche/actions.php b/modules/anagrafiche/actions.php index 271064a6a..ae9d6de6b 100644 --- a/modules/anagrafiche/actions.php +++ b/modules/anagrafiche/actions.php @@ -72,7 +72,7 @@ switch (post('op')) { $dbo->sync('an_anagrafiche_agenti', ['idanagrafica' => $id_record], ['idagente' => (array) $post['idagenti']]); // Se l'agente di default è stato elencato anche tra gli agenti secondari lo rimuovo - if(!empty($post['idagente'])){ + if (!empty($post['idagente'])) { $dbo->query('DELETE FROM an_anagrafiche_agenti WHERE idanagrafica='.prepare($id_record).' AND idagente='.prepare($post['idagente'])); } @@ -85,42 +85,30 @@ switch (post('op')) { $idconto_fornitore = $rs[0]['idconto_fornitore']; // Creo il relativo conto nel partitario se non esiste - if (empty($idconto_cliente)) { - foreach ($post['idtipoanagrafica'] as $idtipoanagrafica) { - $rs = $dbo->fetchArray('SELECT descrizione FROM an_tipianagrafiche WHERE idtipoanagrafica='.prepare($idtipoanagrafica)); + if (empty($idconto_cliente) && in_array($id_cliente, $post['idtipoanagrafica'])) { + // Calcolo prossimo numero cliente + $rs = $dbo->fetchArray("SELECT MAX(CAST(co_pianodeiconti3.numero AS UNSIGNED)) AS max_numero FROM co_pianodeiconti3 INNER JOIN co_pianodeiconti2 ON co_pianodeiconti3.idpianodeiconti2=co_pianodeiconti2.id WHERE co_pianodeiconti2.descrizione='Crediti clienti e crediti diversi'"); + $new_numero = $rs[0]['max_numero'] + 1; + $new_numero = str_pad($new_numero, 6, '0', STR_PAD_LEFT); - if ($rs[0]['descrizione'] == 'Cliente') { - // Calcolo prossimo numero cliente - $rs = $dbo->fetchArray("SELECT MAX(CAST(co_pianodeiconti3.numero AS UNSIGNED)) AS max_numero FROM co_pianodeiconti3 INNER JOIN co_pianodeiconti2 ON co_pianodeiconti3.idpianodeiconti2=co_pianodeiconti2.id WHERE co_pianodeiconti2.descrizione='Crediti clienti e crediti diversi'"); - $new_numero = $rs[0]['max_numero'] + 1; - $new_numero = str_pad($new_numero, 6, '0', STR_PAD_LEFT); + $dbo->query('INSERT INTO co_pianodeiconti3(numero, descrizione, idpianodeiconti2, can_delete, can_edit) VALUES('.prepare($new_numero).', '.prepare($post['ragione_sociale']).", (SELECT id FROM co_pianodeiconti2 WHERE descrizione='Crediti clienti e crediti diversi'), 1, 1)"); + $idconto = $dbo->lastInsertedID(); - $dbo->query('INSERT INTO co_pianodeiconti3(numero, descrizione, idpianodeiconti2, can_delete, can_edit) VALUES('.prepare($new_numero).', '.prepare($post['ragione_sociale']).", (SELECT id FROM co_pianodeiconti2 WHERE descrizione='Crediti clienti e crediti diversi'), 1, 1)"); - $idconto = $dbo->lastInsertedID(); - - // Collegamento conto - $dbo->query('UPDATE an_anagrafiche SET idconto_cliente='.prepare($idconto).' WHERE idanagrafica='.prepare($id_record)); - } - } + // Collegamento conto + $dbo->query('UPDATE an_anagrafiche SET idconto_cliente='.prepare($idconto).' WHERE idanagrafica='.prepare($id_record)); } - if (empty($idconto_fornitore)) { - foreach ($post['idtipoanagrafica'] as $idtipoanagrafica) { - $rs = $dbo->fetchArray('SELECT descrizione FROM an_tipianagrafiche WHERE idtipoanagrafica='.prepare($idtipoanagrafica)); + if (empty($idconto_fornitore) && in_array($id_fornitore, $post['idtipoanagrafica'])) { + // Calcolo prossimo numero cliente + $rs = $dbo->fetchArray("SELECT MAX(CAST(co_pianodeiconti3.numero AS UNSIGNED)) AS max_numero FROM co_pianodeiconti3 INNER JOIN co_pianodeiconti2 ON co_pianodeiconti3.idpianodeiconti2=co_pianodeiconti2.id WHERE co_pianodeiconti2.descrizione='Debiti fornitori e debiti diversi'"); + $new_numero = $rs[0]['max_numero'] + 1; + $new_numero = str_pad($new_numero, 6, '0', STR_PAD_LEFT); - if ($rs[0]['descrizione'] == 'Fornitore') { - // Calcolo prossimo numero cliente - $rs = $dbo->fetchArray("SELECT MAX(CAST(co_pianodeiconti3.numero AS UNSIGNED)) AS max_numero FROM co_pianodeiconti3 INNER JOIN co_pianodeiconti2 ON co_pianodeiconti3.idpianodeiconti2=co_pianodeiconti2.id WHERE co_pianodeiconti2.descrizione='Debiti fornitori e debiti diversi'"); - $new_numero = $rs[0]['max_numero'] + 1; - $new_numero = str_pad($new_numero, 6, '0', STR_PAD_LEFT); + $dbo->query('INSERT INTO co_pianodeiconti3(numero, descrizione, idpianodeiconti2, can_delete, can_edit) VALUES('.prepare($new_numero).', '.prepare($post['ragione_sociale']).", (SELECT id FROM co_pianodeiconti2 WHERE descrizione='Debiti fornitori e debiti diversi'), 1, 1)"); + $idconto = $dbo->lastInsertedID(); - $dbo->query('INSERT INTO co_pianodeiconti3(numero, descrizione, idpianodeiconti2, can_delete, can_edit) VALUES('.prepare($new_numero).', '.prepare($post['ragione_sociale']).", (SELECT id FROM co_pianodeiconti2 WHERE descrizione='Debiti fornitori e debiti diversi'), 1, 1)"); - $idconto = $dbo->lastInsertedID(); - - // Collegamento conto - $dbo->query('UPDATE an_anagrafiche SET idconto_fornitore='.prepare($idconto).' WHERE idanagrafica='.prepare($id_record)); - } - } + // Collegamento conto + $dbo->query('UPDATE an_anagrafiche SET idconto_fornitore='.prepare($idconto).' WHERE idanagrafica='.prepare($id_record)); } break; @@ -130,52 +118,44 @@ switch (post('op')) { $ragione_sociale = post('ragione_sociale'); // Inserimento anagrafica base - if (count($idtipoanagrafica) > 0 && $ragione_sociale != '') { - // Leggo l'ultimo codice anagrafica per calcolare il successivo - $rs = $dbo->fetchArray('SELECT codice FROM an_anagrafiche ORDER BY CAST(codice AS SIGNED) DESC LIMIT 0, 1'); - $codice = get_next_code($rs[0]['codice'], 1, get_var('Formato codice anagrafica')); + // Leggo l'ultimo codice anagrafica per calcolare il successivo + $rs = $dbo->fetchArray('SELECT codice FROM an_anagrafiche ORDER BY CAST(codice AS SIGNED) DESC LIMIT 0, 1'); + $codice = get_next_code($rs[0]['codice'], 1, get_var('Formato codice anagrafica')); - // Se ad aggiungere un cliente è un agente, lo imposto come agente di quel cliente - // Lettura tipologia della nuova anagrafica - for ($t = 0; $t < count($idtipoanagrafica); ++$t) { - $rs = $dbo->fetchArray('SELECT descrizione FROM an_tipianagrafiche WHERE idtipoanagrafica='.prepare($idtipoanagrafica[$t])); - $tipoanagrafica_dst .= $rs[0]['descrizione']; - if ($t < count($idtipoanagrafica) - 1) { - $tipoanagrafica_dst .= ', '; - } + // Se ad aggiungere un cliente è un agente, lo imposto come agente di quel cliente + // Lettura tipologia dell'utente loggato + $agente_is_logged = false; + + $rs = $dbo->fetchArray('SELECT descrizione FROM an_tipianagrafiche INNER JOIN an_tipianagrafiche_anagrafiche ON an_tipianagrafiche.idtipoanagrafica = an_tipianagrafiche_anagrafiche.idtipoanagrafica WHERE idanagrafica = '.prepare($user['idanagrafica'])); + + for ($i = 0; $i < count($rs); ++$i) { + if ($rs[$i]['descrizione'] == 'Agente') { + $agente_is_logged = true; + $i = count($rs); } - - // Lettura tipologia dell'utente loggato - $agente_is_logged = false; - - $rs = $dbo->fetchArray('SELECT descrizione FROM an_tipianagrafiche INNER JOIN an_tipianagrafiche_anagrafiche ON an_tipianagrafiche.idtipoanagrafica = an_tipianagrafiche_anagrafiche.idtipoanagrafica WHERE idanagrafica = '.prepare($user['idanagrafica'])); - - for ($i = 0; $i < count($rs); ++$i) { - if ($rs[$i]['descrizione'] == 'Agente') { - $agente_is_logged = true; - $i = count($rs); - } - } - - $idagente = ($agente_is_logged && str_contains($tipoanagrafica_dst, 'Cliente')) ? $user['idanagrafica'] : 0; - - // Inserisco l'anagrafica - $query = 'INSERT INTO an_anagrafiche(ragione_sociale, codice, idagente) VALUES ('.prepare($ragione_sociale).', '.prepare($codice).', '.prepare($idagente).')'; - $dbo->query($query); - - $new_id = $dbo->lastInsertedID(); } + $idagente = ($agente_is_logged && in_array($id_cliente, $post['idtipoanagrafica'])) ? $user['idanagrafica'] : 0; + + // Inserisco l'anagrafica + $dbo->insert('an_anagrafiche', [ + 'ragione_sociale' => $ragione_sociale, + 'codice' => $codice, + 'idagente' => $idagente, + ]); + + $new_id = $dbo->lastInsertedID(); + // Inserisco il rapporto dell'anagrafica (cliente, tecnico, ecc) $dbo->sync('an_tipianagrafiche_anagrafiche', ['idanagrafica' => $new_id], ['idtipoanagrafica' => (array) $idtipoanagrafica]); - if (str_contains($tipoanagrafica_dst, 'Azienda')) { + if (in_array($id_azienda, $post['idtipoanagrafica'])) { $dbo->query('UPDATE zz_settings SET valore='.prepare($new_id)." WHERE nome='Azienda predefinita'"); $_SESSION['infos'][] = _('Anagrafica Azienda impostata come predefinita. Per ulteriori informazionioni, visitare "Strumenti -> Impostazioni -> Generali".'); } - // Creo il relativo conto nel partitario - if (str_contains($tipoanagrafica_dst, 'Cliente')) { + // Creo il relativo conto nel partitario (cliente) + if (in_array($id_cliente, $post['idtipoanagrafica'])) { // Calcolo prossimo numero cliente $rs = $dbo->fetchArray("SELECT MAX(CAST(co_pianodeiconti3.numero AS UNSIGNED)) AS max_numero FROM co_pianodeiconti3 INNER JOIN co_pianodeiconti2 ON co_pianodeiconti3.idpianodeiconti2=co_pianodeiconti2.id WHERE co_pianodeiconti2.descrizione='Crediti clienti e crediti diversi'"); $new_numero = $rs[0]['max_numero'] + 1; @@ -187,7 +167,10 @@ switch (post('op')) { // Collegamento conto $dbo->query('UPDATE an_anagrafiche SET idconto_cliente='.prepare($idconto).' WHERE idanagrafica='.prepare($new_id)); - } elseif (str_contains($tipoanagrafica_dst, 'Fornitore')) { + } + + // Creo il relativo conto nel partitario (fornitore) + if (in_array($id_fornitore, $post['idtipoanagrafica'])) { // Calcolo prossimo numero cliente $rs = $dbo->fetchArray("SELECT MAX(CAST(co_pianodeiconti3.numero AS UNSIGNED)) AS max_numero FROM co_pianodeiconti3 INNER JOIN co_pianodeiconti2 ON co_pianodeiconti3.idpianodeiconti2=co_pianodeiconti2.id WHERE co_pianodeiconti2.descrizione='Debiti fornitori e debiti diversi'"); $new_numero = $rs[0]['max_numero'] + 1; @@ -203,6 +186,12 @@ switch (post('op')) { $id_record = $new_id; + // Lettura tipologia della nuova anagrafica + if (!empty($idtipoanagrafica)) { + $rs = $dbo->fetchArray('SELECT descrizione FROM an_tipianagrafiche WHERE idtipoanagrafica IN ('.implode(',', $idtipoanagrafica).')'); + $tipoanagrafica_dst = implode(', ', array_column($rs, 'descrizione')); + } + if (isAjaxRequest() && str_contains($tipoanagrafica_dst, post('tipoanagrafica'))) { echo json_encode(['id' => $id_record, 'text' => $ragione_sociale]); } diff --git a/modules/anagrafiche/init.php b/modules/anagrafiche/init.php index 5abad7fa6..f99328297 100644 --- a/modules/anagrafiche/init.php +++ b/modules/anagrafiche/init.php @@ -7,3 +7,5 @@ if (isset($id_record)) { } $id_azienda = $dbo->fetchArray("SELECT idtipoanagrafica FROM an_tipianagrafiche WHERE descrizione='Azienda'")[0]['idtipoanagrafica']; +$id_cliente = $dbo->fetchArray("SELECT descrizione FROM an_tipianagrafiche WHERE descrizione='Cliente'"); +$id_fornitore = $dbo->fetchArray("SELECT descrizione FROM an_tipianagrafiche WHERE descrizione='Fornitore'"); diff --git a/modules/articoli/actions.php b/modules/articoli/actions.php index d0f647dd8..a5f1708d1 100644 --- a/modules/articoli/actions.php +++ b/modules/articoli/actions.php @@ -23,6 +23,9 @@ switch (post('op')) { $gg_garanzia = post('gg_garanzia'); $componente_filename = post('componente_filename'); + $volume = post('volume'); + $peso_lordo = post('peso_lordo'); + $attivo = post('attivo'); $note = post('note'); @@ -39,6 +42,8 @@ switch (post('op')) { ' prezzo_acquisto='.prepare($prezzo_acquisto).','. ' idiva_vendita='.prepare($idiva_vendita).','. ' gg_garanzia='.prepare($gg_garanzia).','. + ' volume='.prepare($idiva_vendita).','. + ' peso_lordo='.prepare($gg_garanzia).','. ' componente_filename='.prepare($componente_filename).','. ' attivo='.prepare($attivo).', '. ' note='.prepare($note). diff --git a/modules/articoli/edit.php b/modules/articoli/edit.php index 792a25a8a..a7a4ad5b1 100644 --- a/modules/articoli/edit.php +++ b/modules/articoli/edit.php @@ -108,6 +108,16 @@ if(empty($records[0]['abilita_serial'])){ +