From e0ec46dda9caf2a18bc0f201e7a73f09c6976c42 Mon Sep 17 00:00:00 2001 From: Luca Date: Thu, 26 Jul 2018 10:35:48 +0200 Subject: [PATCH 1/9] =?UTF-8?q?Aggiunta=20possibilit=C3=A0=20di=20aggiunge?= =?UTF-8?q?re=20ddt=20anche=20per=20fatture=20di=20acquisto?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fix temporaneo per campo "Calcola ritenuta d'acconto su" non gestito correttamente per fornitori. --- include/common/riga.php | 7 +++++-- modules/fatture/add_ddt.php | 6 ++++-- modules/fatture/add_ordine.php | 2 +- modules/fatture/edit.php | 17 ++++++++++------- templates/base/header.php | 1 + 5 files changed, 21 insertions(+), 12 deletions(-) diff --git a/include/common/riga.php b/include/common/riga.php index 422f113da..8d4caff87 100644 --- a/include/common/riga.php +++ b/include/common/riga.php @@ -15,6 +15,7 @@ if ($module['name'] == 'Fatture di acquisto' || $module['name'] == 'Fatture di v // Percentuale rivalsa INPS e Percentuale ritenuta d'acconto if ($options['action'] == 'edit') { if ($options['dir'] == 'uscita') { + //Luca S. questi campi non dovrebbero essere impostati a 1 di default, ma solo se il fornitore ha effettivamente rivalsa inps o ritenuta $show_idrivalsainps = 1; $show_idritenutaacconto = 1; $show_calcolo_ritenutaacconto = 1; @@ -44,9 +45,11 @@ if ($module['name'] == 'Fatture di acquisto' || $module['name'] == 'Fatture di v $show_idrivalsainps = 1; $show_idritenutaacconto = 1; $show_calcolo_ritenutaacconto = 1; - + + //Luca S. questi campi non dovrebbero essere definiti all'interno della scheda fornitore? $idrivalsainps = ''; $idritenutaacconto = ''; + //questo campo non andrebbe letto da impostazioni $calcolo_ritenutaacconto = get_var("Metodologia calcolo ritenuta d'acconto predefinito"); } elseif ($options['dir'] == 'entrata' && $options['op'] == 'addriga' && (get_var('Percentuale rivalsa INPS') != '' || get_var("Percentuale ritenuta d'acconto") != '')) { if (get_var('Percentuale rivalsa INPS') != '') { @@ -117,7 +120,7 @@ if ($module['name'] == 'Fatture di acquisto' || $module['name'] == 'Fatture di v if ($show_calcolo_ritenutaacconto == 1) { echo '
- {[ "type": "select", "label": "'.tr("Calcola ritenuta d'acconto su").'", "name": "calcolo_ritenutaacconto", "value": "'.$calcolo_ritenutaacconto.'", "values": "list=\"Imponibile\":\"Imponibile\", \"Imponibile + rivalsa inps\":\"Imponibile + rivalsa inps\"", "required": "1" ]} + {[ "type": "select", "label": "'.tr("Calcola ritenuta d'acconto su").'", "name": "calcolo_ritenutaacconto", "value": "'.((empty($calcolo_ritenutaacconto))? 'Imponibile' : $calcolo_ritenutaacconto).'", "values": "list=\"Imponibile\":\"Imponibile\", \"Imponibile + rivalsa inps\":\"Imponibile + rivalsa inps\"", "required": "1" ]}
'; } diff --git a/modules/fatture/add_ddt.php b/modules/fatture/add_ddt.php index d4a36ea3b..ec46163b3 100644 --- a/modules/fatture/add_ddt.php +++ b/modules/fatture/add_ddt.php @@ -6,8 +6,10 @@ $module = Modules::get($id_module); if ($module['name'] == 'Fatture di vendita') { $dir = 'entrata'; + $module_origin = 'Ddt di vendita'; } else { $dir = 'uscita'; + $module_origin = 'Ddt di acquisto'; } $record = $dbo->fetchArray('SELECT * FROM co_documenti WHERE id='.prepare($id_record)); @@ -15,7 +17,7 @@ $numero = ($record[0]['numero_esterno'] != '') ? $record[0]['numero_esterno'] : $idconto = $record[0]['idconto']; $idanagrafica = $record[0]['idanagrafica']; -// Preventivo +// Ddt echo '
@@ -37,6 +39,6 @@ echo ' $('#id_ddt').change( function(){ $('#righeddt').html('Caricamento in corso...'); - $('#righeddt').load(globals.rootdir + '/modules/fatture/crea_documento.php?id_module=' + + '&id_record=' + $(this).find('option:selected').val() + '&documento=fattura&op=add_ddt&iddocumento=' + globals.id_record); + $('#righeddt').load(globals.rootdir + '/modules/fatture/crea_documento.php?id_module=' + + '&id_record=' + $(this).find('option:selected').val() + '&documento=fattura&op=add_ddt&iddocumento=' + globals.id_record); }); diff --git a/modules/fatture/add_ordine.php b/modules/fatture/add_ordine.php index 35a0db858..8c9a6e32a 100644 --- a/modules/fatture/add_ordine.php +++ b/modules/fatture/add_ordine.php @@ -17,7 +17,7 @@ $numero = ($record[0]['numero_esterno'] != '') ? $record[0]['numero_esterno'] : $idconto = $record[0]['idconto']; $idanagrafica = $record[0]['idanagrafica']; -// Preventivo +// Ordine echo '
diff --git a/modules/fatture/edit.php b/modules/fatture/edit.php index 3751adbb4..b2cd125e6 100644 --- a/modules/fatture/edit.php +++ b/modules/fatture/edit.php @@ -299,14 +299,17 @@ if ($records[0]['stato'] != 'Pagato' && $records[0]['stato'] != 'Emessa') { Contratto '; - // Lettura ddt - $ddt_query = 'SELECT COUNT(*) AS tot FROM dt_ddt WHERE idanagrafica='.prepare($records[0]['idanagrafica']).' AND idstatoddt IN (SELECT id FROM dt_statiddt WHERE descrizione IN(\'Bozza\', \'Evaso\', \'Parzialmente evaso\', \'Parzialmente fatturato\')) AND idtipoddt IN (SELECT id FROM dt_tipiddt WHERE dir='.prepare($dir).') AND dt_ddt.id IN (SELECT idddt FROM dt_righe_ddt WHERE dt_righe_ddt.idddt = dt_ddt.id AND (qta - qta_evasa) > 0)'; - $ddt = $dbo->fetchArray($ddt_query)[0]['tot']; - echo ' - - Ddt - '; + } + + + // Lettura ddt + $ddt_query = 'SELECT COUNT(*) AS tot FROM dt_ddt WHERE idanagrafica='.prepare($records[0]['idanagrafica']).' AND idstatoddt IN (SELECT id FROM dt_statiddt WHERE descrizione IN(\'Bozza\', \'Evaso\', \'Parzialmente evaso\', \'Parzialmente fatturato\')) AND idtipoddt IN (SELECT id FROM dt_tipiddt WHERE dir='.prepare($dir).') AND dt_ddt.id IN (SELECT idddt FROM dt_righe_ddt WHERE dt_righe_ddt.idddt = dt_ddt.id AND (qta - qta_evasa) > 0)'; + $ddt = $dbo->fetchArray($ddt_query)[0]['tot']; + echo ' + + Ddt + '; // Lettura ordini $ordini_query = 'SELECT COUNT(*) AS tot FROM or_ordini WHERE idanagrafica='.prepare($records[0]['idanagrafica']).' AND idstatoordine IN (SELECT id FROM or_statiordine WHERE descrizione IN(\'Bozza\', \'Evaso\', \'Parzialmente evaso\', \'Parzialmente fatturato\')) AND idtipoordine=(SELECT id FROM or_tipiordine WHERE dir='.prepare($dir).') AND or_ordini.id IN (SELECT idordine FROM or_righe_ordini WHERE or_righe_ordini.idordine = or_ordini.id AND (qta - qta_evasa) > 0)'; diff --git a/templates/base/header.php b/templates/base/header.php index bc088b17b..5c7429c4f 100644 --- a/templates/base/header.php +++ b/templates/base/header.php @@ -23,5 +23,6 @@ return '

'.(!empty($f_capsoc) ? tr('Cap.Soc.').': '.$f_capsoc : '').'

'.(!empty($f_telefono) ? tr('Tel').': '.$f_telefono : '').'

'.(!empty($f_email) ? tr('Email').': '.$f_email : '').'

+

'.(!empty($f_sitoweb) ? tr('Web').': '.$f_sitoweb : '').'

'; From d395b5a4b545d21b6429f44a727ece8f389e0b14 Mon Sep 17 00:00:00 2001 From: Luca Date: Thu, 26 Jul 2018 11:23:52 +0200 Subject: [PATCH 2/9] Rimozione query per arrotondamenti dei totali --- update/2_4_1.sql | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/update/2_4_1.sql b/update/2_4_1.sql index 626c99665..232f5f239 100644 --- a/update/2_4_1.sql +++ b/update/2_4_1.sql @@ -150,10 +150,10 @@ ALTER TABLE `in_tipiintervento` ADD `tempo_standard` DECIMAL(10,2) NULL AFTER ` UPDATE `zz_widgets` SET `text` = 'Promemoria contratti da pianificare' WHERE `zz_widgets`.`name` = 'Interventi da pianificare'; -- Fix arrotondamenti per fatture di vendita -UPDATE `zz_views` SET `query` = '(SELECT SUM(round(subtotale,2) - round(sconto,2) + round(iva,2) + round(rivalsainps,2) - round(ritenutaacconto,2)) FROM co_righe_documenti WHERE co_righe_documenti.iddocumento=co_documenti.id GROUP BY iddocumento) + round(bollo,2) + round(iva_rivalsainps,2)' WHERE `zz_views`.`id_module` = (SELECT `id` FROM `zz_modules` WHERE `name` = 'Fatture di vendita') AND name = 'Totale'; +--UPDATE `zz_views` SET `query` = '(SELECT SUM(round(subtotale,2) - round(sconto,2) + round(iva,2) + round(rivalsainps,2) - round(ritenutaacconto,2)) FROM co_righe_documenti WHERE co_righe_documenti.iddocumento=co_documenti.id GROUP BY iddocumento) + round(bollo,2) + round(iva_rivalsainps,2)' WHERE `zz_views`.`id_module` = (SELECT `id` FROM `zz_modules` WHERE `name` = 'Fatture di vendita') AND name = 'Totale'; -- Fix arrotondamenti per fatture di acquisto -UPDATE `zz_views` SET `query` = '(SELECT SUM(round(subtotale,2) - round(sconto,2) + round(iva,2) + round(rivalsainps,2) - round(ritenutaacconto,2)) FROM co_righe_documenti WHERE co_righe_documenti.iddocumento=co_documenti.id GROUP BY iddocumento ) + round(bollo,2) + round(iva_rivalsainps,2)' WHERE `zz_views`.`id_module` = (SELECT `id` FROM `zz_modules` WHERE `name` = 'Fatture di acquisto') AND name = 'Totale'; +--UPDATE `zz_views` SET `query` = '(SELECT SUM(round(subtotale,2) - round(sconto,2) + round(iva,2) + round(rivalsainps,2) - round(ritenutaacconto,2)) FROM co_righe_documenti WHERE co_righe_documenti.iddocumento=co_documenti.id GROUP BY iddocumento ) + round(bollo,2) + round(iva_rivalsainps,2)' WHERE `zz_views`.`id_module` = (SELECT `id` FROM `zz_modules` WHERE `name` = 'Fatture di acquisto') AND name = 'Totale'; -- Aggiunta impostazioni per cambio stato automatici INSERT INTO `zz_settings` (`idimpostazione`, `nome`, `valore`, `tipo`, `editable`, `sezione`) VALUES (NULL, 'Cambia automaticamente stato ddt fatturati', '1', 'boolean', '1', 'Ddt'); From 73e66a2786779afba004738ec66ccba3a0582bee Mon Sep 17 00:00:00 2001 From: Luca Date: Thu, 26 Jul 2018 13:10:16 +0200 Subject: [PATCH 3/9] Fix window.onbeforeunload, nascondo main loading https://developer.mozilla.org/en-US/docs/Web/API/WindowEventHandlers/onbeforeunload --- editor.php | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/editor.php b/editor.php index 58c2b35be..3ed0f5abb 100755 --- a/editor.php +++ b/editor.php @@ -273,12 +273,19 @@ if ($read_only || !empty($block_edit)) { content_was_modified = false; }); - // questo controllo blocca il modulo vendita al banco, dopo la lettura con barcode, appare il messaggio di conferma - window.onbeforeunload = function(){ + // questo controllo blocca il modulo vendita al banco, dopo la lettura con barcode, appare il messaggio di conferma + window.onbeforeunload = function(e){ if(content_was_modified) { - return 'Uscire senza salvare?'; + var dialogText = "Uscire senza salvare?"; + e.returnValue = dialogText; + $("#main_loading").fadeOut(); + return dialogText; } }; + + + + From d50913f41664ce5438c226ca685c3c84174c8038 Mon Sep 17 00:00:00 2001 From: Luca Date: Thu, 26 Jul 2018 14:54:30 +0200 Subject: [PATCH 4/9] Fix stampa registro iva, escludo fatture in bozza o annullate --- editor.php | 6 ++++++ modules/import/add.php | 2 +- templates/registro_iva/pdfgen.registro_iva.php | 2 +- 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/editor.php b/editor.php index 3ed0f5abb..c3cdee9b3 100755 --- a/editor.php +++ b/editor.php @@ -283,6 +283,12 @@ if ($read_only || !empty($block_edit)) { } }; + window.addEventListener("unload", function(e) { + console.log(e); + $("#main_loading").show(); + }); + + diff --git a/modules/import/add.php b/modules/import/add.php index 844020211..240a09383 100644 --- a/modules/import/add.php +++ b/modules/import/add.php @@ -55,7 +55,7 @@ $( "#example" ).click(function(event) { data: {op: 'example', module: module}, success: function(data){ window.location = file; - $('#main_loading').hide(); + $('#main_loading').fadeOut(); return false; } }); diff --git a/templates/registro_iva/pdfgen.registro_iva.php b/templates/registro_iva/pdfgen.registro_iva.php index 4530d8640..3d10534a8 100644 --- a/templates/registro_iva/pdfgen.registro_iva.php +++ b/templates/registro_iva/pdfgen.registro_iva.php @@ -44,7 +44,7 @@ switch ($periodo[0]) { break; }*/ -$query = 'SELECT *, SUM(subtotale-co_righe_documenti.sconto) AS subtotale, SUM(iva) AS iva, (SELECT ragione_sociale FROM an_anagrafiche WHERE an_anagrafiche.idanagrafica=co_documenti.idanagrafica) AS ragione_sociale FROM co_documenti INNER JOIN co_righe_documenti ON co_documenti.id=co_righe_documenti.iddocumento INNER JOIN co_tipidocumento ON co_documenti.idtipodocumento=co_tipidocumento.id WHERE dir = '.prepare($dir).' AND is_descrizione = 0 AND co_documenti.data >= '.prepare($date_start).' AND co_documenti.data <= '.prepare($date_end).' GROUP BY co_documenti.id, co_righe_documenti.idiva ORDER BY co_documenti.data'; +$query = 'SELECT *, SUM(subtotale-co_righe_documenti.sconto) AS subtotale, SUM(iva) AS iva, (SELECT ragione_sociale FROM an_anagrafiche WHERE an_anagrafiche.idanagrafica=co_documenti.idanagrafica) AS ragione_sociale FROM co_documenti INNER JOIN co_righe_documenti ON co_documenti.id=co_righe_documenti.iddocumento INNER JOIN co_tipidocumento ON co_documenti.idtipodocumento=co_tipidocumento.id WHERE dir = '.prepare($dir).' AND idstatodocumento NOT IN (SELECT id FROM co_statidocumento WHERE descrizione="Bozza" OR descrizione="Annullata") AND is_descrizione = 0 AND co_documenti.data >= '.prepare($date_start).' AND co_documenti.data <= '.prepare($date_end).' GROUP BY co_documenti.id, co_righe_documenti.idiva ORDER BY co_documenti.data'; $rs = $dbo->fetchArray($query); if ('entrata' == $dir) { From b4da7bc278fef1db918646cecff44920dcb003b4 Mon Sep 17 00:00:00 2001 From: Luca Date: Thu, 26 Jul 2018 16:19:34 +0200 Subject: [PATCH 5/9] Salvataggio ajax per pulsanti aggiunta righe in fattura --- editor.php | 2 +- modules/fatture/actions.php | 5 +++- modules/fatture/edit.php | 28 +++++++++++++++++++ .../registro_iva/pdfgen.registro_iva.php | 28 +++++++++---------- 4 files changed, 46 insertions(+), 17 deletions(-) diff --git a/editor.php b/editor.php index c3cdee9b3..12931d703 100755 --- a/editor.php +++ b/editor.php @@ -284,7 +284,7 @@ if ($read_only || !empty($block_edit)) { }; window.addEventListener("unload", function(e) { - console.log(e); + //console.log(e); $("#main_loading").show(); }); diff --git a/modules/fatture/actions.php b/modules/fatture/actions.php index b60750503..93226c310 100644 --- a/modules/fatture/actions.php +++ b/modules/fatture/actions.php @@ -69,9 +69,12 @@ switch (post('op')) { case 'update': if (isset($post['id_record'])) { + + include_once Modules::filepath($module['name'], 'modutil.php'); + $idstatodocumento = post('idstatodocumento'); $idpagamento = post('idpagamento'); - + $totale_imponibile = get_imponibile_fattura($id_record); $totale_fattura = get_totale_fattura($id_record); diff --git a/modules/fatture/edit.php b/modules/fatture/edit.php index b2cd125e6..183f0863e 100644 --- a/modules/fatture/edit.php +++ b/modules/fatture/edit.php @@ -405,3 +405,31 @@ if (!empty($note_accredito)) { + + + +$( ".btn-sm[data-toggle=\"tooltip\"]" ).each(function() { + $(this).on("click", function(){ + content_was_modified = false; + $.ajax({ + url: "'.ROOTDIR.'/modules/fatture/actions.php?id_module=" + globals.id_module , + cache: false, + type: "POST", + processData: false, + dataType : "html", + data: $("#edit-form").serialize(), + success: function(data) { + $("#main_loading").fadeOut(); + }, + error: function(data) { + $("#main_loading").fadeOut(); + swal("'.tr('Errore').'", "'.tr('Errore durante il salvataggio').'", "error"); + session_set ("errors,0", 0, 1); + } + }) + }); +}); +'; +?> \ No newline at end of file diff --git a/templates/registro_iva/pdfgen.registro_iva.php b/templates/registro_iva/pdfgen.registro_iva.php index 3d10534a8..a17f67220 100644 --- a/templates/registro_iva/pdfgen.registro_iva.php +++ b/templates/registro_iva/pdfgen.registro_iva.php @@ -61,12 +61,14 @@ if ('entrata' == $dir) { $body .= " - + - + + - + + @@ -76,25 +78,21 @@ $body .= " for ($i = 0; $i < sizeof($rs); ++$i) { $body .= ''; + if ($rs[$i]['numero'] == $rs[$i - 1]['numero']) { $body .= " "; $body .= " "; + $body .= " "; + } else { - $body .= " '; + $body .= " '; + $body .= " '; $body .= " '; } - if ('entrata' == $dir) { - $body .= "'; - } elseif ('uscita' == $dir) { - $body .= "'; - } + $body .= ""; + + $body .= " '; $body .= " '; $body .= " '; $body .= " '; From dacf81a1abf09129349014b4720f6d3881bca3f1 Mon Sep 17 00:00:00 2001 From: Luca Date: Thu, 26 Jul 2018 17:34:12 +0200 Subject: [PATCH 6/9] Migliorata procedura di salvataggio ajax --- modules/fatture/edit.php | 59 ++++++++++++++++++++++++++++++++++++++-- 1 file changed, 57 insertions(+), 2 deletions(-) diff --git a/modules/fatture/edit.php b/modules/fatture/edit.php index 183f0863e..e7a332d93 100644 --- a/modules/fatture/edit.php +++ b/modules/fatture/edit.php @@ -410,25 +410,80 @@ if (!empty($note_accredito)) { + + + $( ".btn-sm[data-toggle=\"tooltip\"]" ).each(function() { + $(this).on("click", function(){ + + form = $("#edit-form"); + btn = $(this); + + prev_html = btn.html(); + prev_class = btn.attr("class"); + + btn.html(" Attendere..."); + btn.addClass("btn-warning"); + btn.prop("disabled", true); + + function restore_btn(btn, prev_html, prev_class){ + btn.attr("class", ""); + btn.addClass(prev_class); + btn.html(prev_html); + btn.prop("disabled", false); + } + + //Procedo al salvataggio solo se tutti i campi obbligatori sono compilati, altimenti mostro avviso + if (form.parsley().isValid()){ + content_was_modified = false; + + form.find("input:disabled, select:disabled").removeAttr("disabled"); + $.ajax({ url: "'.ROOTDIR.'/modules/fatture/actions.php?id_module=" + globals.id_module , cache: false, type: "POST", processData: false, dataType : "html", - data: $("#edit-form").serialize(), + data: form.serialize(), success: function(data) { $("#main_loading").fadeOut(); + + restore_btn(btn, prev_html, prev_class); }, error: function(data) { $("#main_loading").fadeOut(); + swal("'.tr('Errore').'", "'.tr('Errore durante il salvataggio').'", "error"); session_set ("errors,0", 0, 1); + + restore_btn(btn, prev_html, prev_class); } - }) + }); + + }else{ + + swal({ + type: "error", + text: "'.tr('Alcuni campi obbligatori non sono stati compilati correttamente.').'", + title: "'.tr('Errore').'", + onClose: hide_popup + }).then(function () { + + }); + + function hide_popup(){ + $("#bs-popup").modal("hide"); + + session_set ("errors,0", 0, 1); + form.parsley().validate(); + } + + restore_btn(btn, prev_html, prev_class); + } + }); }); '; From cfd3f21e42292dde99c427a0d642f2bd34a874aa Mon Sep 17 00:00:00 2001 From: Bacca97 Date: Fri, 27 Jul 2018 12:19:42 +0200 Subject: [PATCH 7/9] =?UTF-8?q?Tolto=20il=20bottone=20"crea..."=20se=20l'o?= =?UTF-8?q?rdine=20=C3=A8=20in=20bozza?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- modules/ordini/buttons.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/ordini/buttons.php b/modules/ordini/buttons.php index 416c8d8d9..e9501d546 100644 --- a/modules/ordini/buttons.php +++ b/modules/ordini/buttons.php @@ -2,7 +2,7 @@ include_once __DIR__.'/../../core.php'; -if (!in_array($records[0]['stato'], ['Evaso', 'Fatturato'])) { +if (!in_array($records[0]['stato'], ['Bozza', 'Evaso', 'Fatturato'])) { echo '
N° doc.No prot.No doc. DataCausale
Ragione sociale
".(($dir=='entrata') ? 'Cliente': 'Fornitore')."Causale Aliquota Imponibile Imposta
".(!empty($rs[$i]['numero_esterno']) ? $rs[$i]['numero_esterno'] : $rs[$i]['numero']).'".$rs[$i]['numero'].'".$rs[$i]['numero_esterno'].'".date('d/m/Y', strtotime($rs[$i]['data'])).' - Fattura di vendita
- ".$rs[$i]['ragione_sociale'].' -
- Fattura di acquisto
- ".$rs[$i]['ragione_sociale'].' -
".$rs[$i]['ragione_sociale']."".(($dir=='entrata') ? 'Fattura di vendita': 'Fattura di acquisto').'".$rs[$i]['desc_iva'].'".Translator::numberToLocale($rs[$i]['subtotale']).' €".Translator::numberToLocale($rs[$i]['iva']).' €