From 217a33c3d5635259c2b8cfbc08486400c330ba8b Mon Sep 17 00:00:00 2001 From: Luca Date: Mon, 30 Jul 2018 13:15:46 +0200 Subject: [PATCH 1/8] Fix parziale sconti non considerati in fattura --- templates/fatture/body.php | 49 ++++++++++++++++++++++++++++++-------- 1 file changed, 39 insertions(+), 10 deletions(-) diff --git a/templates/fatture/body.php b/templates/fatture/body.php index 1a375957c..bd9dce932 100644 --- a/templates/fatture/body.php +++ b/templates/fatture/body.php @@ -183,19 +183,25 @@ foreach ($righe as $r) { echo ' '.Translator::numberToLocale($r['perc_iva']); } + + echo ' '; $autofill['count'] += $count; - $imponibile[] = $r['subtotale']; - $iva[] = $r['iva']; - $sconto[] = $r['sconto']; + + $imponibile = sum(array_column($righe, 'subtotale')); + $sconto = sum(array_column($righe, 'sconto')); + $iva = sum(array_column($righe, 'iva')); + + echo "ciao".$sconto; - $v_iva[$r['desc_iva']] = sum($v_iva[$r['desc_iva']], $r['iva']); + + $v_iva[$r['desc_iva']] = sum($v_iva[$r['desc_iva']], $iva); $v_totale[$r['desc_iva']] = sum($v_totale[$r['desc_iva']], [ - $r['subtotale'], -$r['sconto'], + $imponibile, -$sconto ]); } @@ -272,9 +278,32 @@ echo ' echo ' '; -// Info per il footer -$imponibile = sum($imponibile); -$iva = sum($iva, 0) + $records[0]['iva_rivalsainps']; -$sconto = sum($sconto); -$totale = $imponibile + $iva - $sconto + $records[0]['rivalsainps']; +// Calcoli +//$imponibile = sum(array_column($righe, 'subtotale')); +//$sconto = sum(array_column($righe, 'sconto')); +//$iva = sum(array_column($righe, 'iva')); + +$imponibile_scontato = sum($imponibile, -$sconto); + +$totale_iva = sum($iva, $records[0]['iva_rivalsainps']); + +$totale = sum([ + $imponibile_scontato, + $records[0]['rivalsainps'], + $totale_iva, +]); + +$netto_a_pagare = sum([ + $totale, + $records[0]['bollo'], + -$records[0]['ritenutaacconto'], +]); + +$imponibile = abs($imponibile); +$sconto = abs($sconto); +$iva = abs($iva); +$imponibile_scontato = abs($imponibile_scontato); +$totale_iva = abs($totale_iva); +$totale = abs($totale); +$netto_a_pagare = abs($netto_a_pagare); From fb9a23c97677c226610ceaaff8e5898984b2b769 Mon Sep 17 00:00:00 2001 From: Luca Date: Mon, 30 Jul 2018 15:28:54 +0200 Subject: [PATCH 2/8] Fix sconti non considerati in fattura --- templates/fatture/body.php | 41 ++++++++++++++++-------------------- templates/fatture/footer.php | 2 +- 2 files changed, 19 insertions(+), 24 deletions(-) diff --git a/templates/fatture/body.php b/templates/fatture/body.php index bd9dce932..0642af42a 100644 --- a/templates/fatture/body.php +++ b/templates/fatture/body.php @@ -48,7 +48,7 @@ echo " // RIGHE FATTURA CON ORDINAMENTO UNICO $righe = $dbo->fetchArray("SELECT *, - IFNULL((SELECT `codice` FROM `mg_articoli` WHERE `id` = `co_righe_documenti`.`idarticolo`), '') AS codice_articolo, + IFNULL((SELECT `codice` FROM `mg_articoli` WHERE `id` = `co_righe_documenti`.`idarticolo`), '') AS codice_articolo, (SELECT GROUP_CONCAT(`serial` SEPARATOR ', ') FROM `mg_prodotti` WHERE `id_riga_documento` = `co_righe_documenti`.`id`) AS seriali, (SELECT `percentuale` FROM `co_iva` WHERE `id` = `co_righe_documenti`.`idiva`) AS perc_iva FROM `co_righe_documenti` WHERE `iddocumento` = ".prepare($id_record).' ORDER BY `order`'); @@ -59,10 +59,16 @@ foreach ($righe as $r) { // Valori assoluti $r['qta'] = abs($r['qta']); - $r['subtotale'] = abs($r['subtotale']); + if (empty($r['sconto_globale'])) + $r['subtotale'] = abs($r['subtotale']); + else + $r['subtotale'] = ($r['subtotale']); $r['sconto_unitario'] = abs($r['sconto_unitario']); $r['sconto'] = abs($r['sconto']); - $r['iva'] = abs($r['iva']); + if (empty($r['sconto_globale'])) + $r['iva'] = abs($r['iva']); + else + $r['iva'] = ($r['iva']); echo ' @@ -135,8 +141,8 @@ foreach ($righe as $r) { echo " "; if (empty($r['is_descrizione'])) { - echo ' - '.(empty($r['qta']) || empty($r['subtotale']) ? '' : Translator::numberToLocale($r['subtotale'] / $r['qta'])).' €'; + echo ' + '.(empty($r['qta']) || empty($r['subtotale']) ? '' : Translator::numberToLocale($r['subtotale'] / $r['qta'])).' €'; if ($r['sconto'] > 0) { echo " @@ -158,8 +164,8 @@ foreach ($righe as $r) { echo " "; if (empty($r['is_descrizione'])) { - echo ' - '.(empty($r['subtotale']) ? '' : Translator::numberToLocale($r['subtotale'] - $r['sconto'])).' €'; + echo ' + '.(empty($r['subtotale']) ? '' : Translator::numberToLocale($r['subtotale'] - $r['sconto'])).' €'; if ($r['sconto'] > 0) { echo " @@ -183,25 +189,14 @@ foreach ($righe as $r) { echo ' '.Translator::numberToLocale($r['perc_iva']); } - - echo ' '; $autofill['count'] += $count; - - - $imponibile = sum(array_column($righe, 'subtotale')); - $sconto = sum(array_column($righe, 'sconto')); - $iva = sum(array_column($righe, 'iva')); - - echo "ciao".$sconto; - - - $v_iva[$r['desc_iva']] = sum($v_iva[$r['desc_iva']], $iva); + $v_iva[$r['desc_iva']] = sum($v_iva[$r['desc_iva']], $r['iva']); $v_totale[$r['desc_iva']] = sum($v_totale[$r['desc_iva']], [ - $imponibile, -$sconto + $r['subtotale'], -$r['sconto'], ]); } @@ -280,9 +275,9 @@ echo ' // Calcoli -//$imponibile = sum(array_column($righe, 'subtotale')); -//$sconto = sum(array_column($righe, 'sconto')); -//$iva = sum(array_column($righe, 'iva')); +$imponibile = sum(array_column($righe, 'subtotale')); +$sconto = sum(array_column($righe, 'sconto')); +$iva = sum(array_column($righe, 'iva')); $imponibile_scontato = sum($imponibile, -$sconto); diff --git a/templates/fatture/footer.php b/templates/fatture/footer.php index 793a423a2..9700ba1d8 100644 --- a/templates/fatture/footer.php +++ b/templates/fatture/footer.php @@ -149,7 +149,7 @@ if (!empty($sconto)) { echo " - ".Translator::numberToLocale($iva)." € + ".Translator::numberToLocale($totale_iva)." € From f858514b39399829461822daee0450cffd4b0bd8 Mon Sep 17 00:00:00 2001 From: Luca Date: Tue, 31 Jul 2018 18:54:36 +0200 Subject: [PATCH 3/8] =?UTF-8?q?In=20fase=20di=20pianificazione=20di=20un?= =?UTF-8?q?=20intervento=20a=20contratto=20per=20un=20impianto=20viene=20g?= =?UTF-8?q?i=C3=A0=20selezionato=20il=20tecnico=20responsabile=20dell'impi?= =?UTF-8?q?anto?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Aggiunta colonna 'Sede' per MyImpianti Aggiunta colonna 'Tempo standard' per Tipi di intervento --- .../contratti/plugins/addpianficazione.php | 19 +++++++++++++------ modules/interventi/add.php | 3 +++ modules/my_impianti/ajax/select.php | 3 ++- plugins/sedi/add.php | 4 ++-- update/2_4_1.sql | 10 ++++++++++ 5 files changed, 30 insertions(+), 9 deletions(-) diff --git a/modules/contratti/plugins/addpianficazione.php b/modules/contratti/plugins/addpianficazione.php index e99829608..db563e507 100644 --- a/modules/contratti/plugins/addpianficazione.php +++ b/modules/contratti/plugins/addpianficazione.php @@ -14,6 +14,16 @@ $op = 'edit-pianifica'; $data_conclusione = $dbo->fetchArray('SELECT `data_conclusione` FROM `co_contratti` WHERE `id` = '.prepare($id_record))[0]['data_conclusione']; $idanagrafica = $dbo->fetchArray('SELECT `idanagrafica` FROM `co_contratti` WHERE `id` = '.prepare($id_record))[0]['idanagrafica']; +$idimpianti = $dbo->fetchArray('SELECT GROUP_CONCAT(`idimpianto`) AS idimpianti FROM `my_impianti_contratti` WHERE `idcontratto` = '.prepare($id_record))[0]['idimpianti']; + + +$idimpianto = explode(",", $idimpianti); +//solo se ho selezionato un solo impianto nel contratto, altrimenti non so quale sede e tecnico prendere +if (count($idimpianto)<2){ + $idsede = $dbo->fetchArray('SELECT idsede FROM my_impianti WHERE id = '.prepare($idimpianto[0]))[0]['idsede']; + $idtecnico = $dbo->fetchArray('SELECT idtecnico FROM my_impianti WHERE id = '.prepare($idimpianto[0]))[0]['idtecnico']; +} + $list = '\"1\":\"'.tr('Pianificare a partire da oggi ').date('d/m/Y').'\"'; //promemoria esistente @@ -23,7 +33,7 @@ if (!empty($get['idcontratto_riga'])) { $rsp = $dbo->fetchArray($qp); $data_richiesta = readDate($rsp[0]['data_richiesta']); - $matricoleimpianti = trim($rsp[0]['idimpianti']); + $idimpianti = trim($rsp[0]['idimpianti']); $idsede = $rsp[0]['idsede']; $tempo_standard = $rsp[0]['tempo_standard']; @@ -66,7 +76,7 @@ echo '
- {[ "type": "select", "label": "'.tr('Tipo intervento').'", "name": "idtipointervento", "required": 1, "id": "idtipointervento_", "values": "query=SELECT idtipointervento AS id, descrizione FROM in_tipiintervento ORDER BY descrizione ASC", "value": "'.$rsp[0]['idtipointervento'].'", "extra": "'.$readonly.'" ]} + {[ "type": "select", "label": "'.tr('Tipo intervento').'", "name": "idtipointervento", "required": 1, "id": "idtipointervento_", "values": "query=SELECT idtipointervento AS id, descrizione FROM in_tipiintervento ORDER BY descrizione ASC", "value": "'.$rsp[0]['idtipointervento'].'", "extra": "'.$readonly.'", "ajax-source": "tipiintervento" ]}
@@ -76,7 +86,7 @@ echo '
- {[ "type": "select", "multiple": "1", "label": "'.tr('Impianti a contratto').'", "name": "idimpianti[]", "values": "query=SELECT my_impianti.id AS id, my_impianti.nome AS descrizione FROM my_impianti_contratti INNER JOIN my_impianti ON my_impianti_contratti.idimpianto = my_impianti.id WHERE my_impianti_contratti.idcontratto = '.$id_record.' ORDER BY descrizione", "value": "'.$matricoleimpianti.'", "extra":"'.$readonly.'" ]} + {[ "type": "select", "multiple": "1", "label": "'.tr('Impianti a contratto').'", "name": "idimpianti[]", "values": "query=SELECT my_impianti.id AS id, my_impianti.nome AS descrizione FROM my_impianti_contratti INNER JOIN my_impianti ON my_impianti_contratti.idimpianto = my_impianti.id WHERE my_impianti_contratti.idcontratto = '.$id_record.' ORDER BY descrizione", "value": "'.$idimpianti.'", "extra":"'.$readonly.'" ]}
@@ -115,9 +125,6 @@ echo '
- - -
diff --git a/modules/interventi/add.php b/modules/interventi/add.php index 4eb387753..52832597a 100644 --- a/modules/interventi/add.php +++ b/modules/interventi/add.php @@ -90,6 +90,9 @@ elseif (!empty($idcontratto) && !empty($idcontratto_riga)) { $idimpianto = implode(',', array_column($rs, 'idimpianto')); } else { $idimpianto = $idimpianti; + // Spunto il tecnico di default assegnato all'impianto + $rs = $dbo->fetchArray('SELECT idtecnico FROM my_impianti WHERE id='.prepare($idimpianto)); + $idtecnico = $rs[0]['idtecnico'] ?: ''; } // Seleziono "In programmazione" come stato diff --git a/modules/my_impianti/ajax/select.php b/modules/my_impianti/ajax/select.php index 733f09a05..91ab2ec4e 100644 --- a/modules/my_impianti/ajax/select.php +++ b/modules/my_impianti/ajax/select.php @@ -25,7 +25,8 @@ switch ($resource) { } $where[] = 'idanagrafica='.prepare($superselect['idanagrafica']); - $where[] = 'idsede='.prepare($superselect['idsede']); + if (!empty($superselect['idsede'])) + $where[] = 'idsede='.prepare($superselect['idsede']); if (!empty($search)) { $search_fields[] = 'nome LIKE '.prepare('%'.$search.'%'); diff --git a/plugins/sedi/add.php b/plugins/sedi/add.php index 5b421704b..c8a56bd92 100644 --- a/plugins/sedi/add.php +++ b/plugins/sedi/add.php @@ -13,7 +13,7 @@ echo '
- {[ "type": "text", "label": "'.tr('Indirizzo').'", "name": "indirizzo", "required": 1 ]} + {[ "type": "text", "label": "'.tr('Indirizzo').'", "name": "indirizzo", "required": 0 ]}
@@ -23,7 +23,7 @@ echo '
- {[ "type": "text", "label": "'.tr('Città').'", "name": "citta" ]} + {[ "type": "text", "label": "'.tr('Città').'", "name": "citta", "required": 1 ]}
diff --git a/update/2_4_1.sql b/update/2_4_1.sql index 05a16ec56..21afb84e7 100644 --- a/update/2_4_1.sql +++ b/update/2_4_1.sql @@ -468,3 +468,13 @@ UPDATE `zz_views` SET `enabled` = 0 WHERE `id_module` = (SELECT `id` FROM `zz_mo -- Aggiunta campi per specificare se la riga importata è un import unico di pù righe ALTER TABLE `co_righe_documenti` ADD `is_preventivo` TINYINT(1) NOT NULL AFTER `is_descrizione`, ADD `is_contratto` TINYINT(1) NOT NULL AFTER `is_preventivo`; + +-- Aggiunta colonna 'Sede' per MyImpianti +INSERT INTO `zz_views` (`id`, `id_module`, `name`, `query`, `order`, `search`, `slow`, `format`, `search_inside`, `order_by`, `enabled`, `summable`, `default` ) VALUES +(NULL, (SELECT `id` FROM `zz_modules` WHERE `name` = 'MyImpianti'), 'Sede', 'IF(my_impianti.idsede = 0, \'Sede legale\', (SELECT CONCAT_WS( '' - '', nomesede, citta ) AS descrizione FROM an_sedi WHERE id = my_impianti.idsede))', 4, 1, 0, 0, '', '', 0, 0, 0); + +-- Aggiunta colonna 'Tempo standard' per Tipi di intervento +INSERT INTO `zz_views` (`id`, `id_module`, `name`, `query`, `order`, `search`, `slow`, `format`, `search_inside`, `order_by`, `enabled`, `summable`, `default` ) VALUES +(NULL, (SELECT `id` FROM `zz_modules` WHERE `name` = 'Tipi di intervento'), 'Tempo standard', 'in_tipiintervento.tempo_standard', 10, 1, 0, 1, '', '', 0, 0, 0); + + From ccc7168b4ec7e1238247245a73fe2f67b6f0f519 Mon Sep 17 00:00:00 2001 From: Luca Date: Tue, 31 Jul 2018 19:20:19 +0200 Subject: [PATCH 4/8] Fix minori: pianificazione interventi, rimuovo controllo contenuto modificato quando premo invio --- editor.php | 4 ++++ modules/contratti/plugins/addpianficazione.php | 2 +- .../plugins/contratti.pianificazioneinterventi.php | 6 ++++-- modules/interventi/add.php | 8 ++++---- 4 files changed, 13 insertions(+), 7 deletions(-) diff --git a/editor.php b/editor.php index 12931d703..1899b0594 100755 --- a/editor.php +++ b/editor.php @@ -272,6 +272,10 @@ if ($read_only || !empty($block_edit)) { $(".btn-success, button[type=submit]").bind("click", function() { content_was_modified = false; }); + + $( "form" ).bind( "submit", function() { + 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(e){ diff --git a/modules/contratti/plugins/addpianficazione.php b/modules/contratti/plugins/addpianficazione.php index db563e507..18b62cfcc 100644 --- a/modules/contratti/plugins/addpianficazione.php +++ b/modules/contratti/plugins/addpianficazione.php @@ -246,7 +246,7 @@ echo ' diff --git a/modules/my_impianti/add.php b/modules/my_impianti/add.php index 8419ab0f6..eaa735a71 100644 --- a/modules/my_impianti/add.php +++ b/modules/my_impianti/add.php @@ -2,6 +2,10 @@ include_once __DIR__.'/../../core.php'; +//unset($_SESSION['superselect']['idanagrafica']); +//unset($_SESSION['superselect']['idsede']); + + $source = get('source'); $idanagrafica = null; @@ -23,11 +27,15 @@ if ($source == 'Attività') { {[ "type": "text", "label": "", "name": "nome", "required": 1 ]}
-
+
{[ "type": "select", "label": "", "name": "idanagrafica", "required": 1, "values": "query=SELECT an_anagrafiche.idanagrafica AS id, ragione_sociale AS descrizione FROM an_anagrafiche INNER JOIN (an_tipianagrafiche_anagrafiche INNER JOIN an_tipianagrafiche ON an_tipianagrafiche_anagrafiche.idtipoanagrafica=an_tipianagrafiche.idtipoanagrafica) ON an_anagrafiche.idanagrafica=an_tipianagrafiche_anagrafiche.idanagrafica WHERE descrizione='Cliente' AND deleted_at IS NULL ORDER BY ragione_sociale", "value": "", "ajax-source": "clienti" ]}
+ +
+ {[ "type": "select", "label": "", "name": "idsede", "values": "query=SELECT 0 AS id, 'Sede legale' AS descrizione UNION SELECT id, CONCAT_WS( ' - ', nomesede, citta ) AS descrizione FROM an_sedi WHERE idanagrafica='$idanagrafica$'", "value": "$idsede$", "required": "1", "ajax-source": "sedi" ]} +
-
+
{[ "type": "select", "label": "", "name": "idtecnico", "values": "query=SELECT an_anagrafiche.idanagrafica AS id, ragione_sociale AS descrizione FROM an_anagrafiche INNER JOIN (an_tipianagrafiche_anagrafiche INNER JOIN an_tipianagrafiche ON an_tipianagrafiche_anagrafiche.idtipoanagrafica=an_tipianagrafiche.idtipoanagrafica) ON an_anagrafiche.idanagrafica=an_tipianagrafiche_anagrafiche.idanagrafica WHERE descrizione='Tecnico' AND deleted_at IS NULL ORDER BY ragione_sociale" ]}
@@ -39,3 +47,25 @@ if ($source == 'Attività') {
+ + + \ No newline at end of file diff --git a/modules/my_impianti/edit.php b/modules/my_impianti/edit.php index e28bf2565..6c456957b 100644 --- a/modules/my_impianti/edit.php +++ b/modules/my_impianti/edit.php @@ -2,6 +2,10 @@ include_once __DIR__.'/../../core.php'; +//unset($_SESSION['superselect']['idanagrafica']); +//unset($_SESSION['superselect']['idsede']); + + $img = null; if (!empty($records[0]['immagine'])) { $fileinfo = Uploads::fileInfo($records[0]['immagine']); @@ -40,7 +44,7 @@ if (!empty($records[0]['immagine'])) {
- {[ "type": "select", "label": "", "name": "idanagrafica", "required": 1, "values": "query=SELECT an_anagrafiche.idanagrafica AS id, ragione_sociale AS descrizione FROM an_anagrafiche INNER JOIN (an_tipianagrafiche_anagrafiche INNER JOIN an_tipianagrafiche ON an_tipianagrafiche_anagrafiche.idtipoanagrafica=an_tipianagrafiche.idtipoanagrafica) ON an_anagrafiche.idanagrafica=an_tipianagrafiche_anagrafiche.idanagrafica WHERE descrizione='Cliente' AND deleted_at IS NULL ORDER BY ragione_sociale", "value": "$idanagrafica$", "extra": "onchange=\"load_preventivi( this.value ); load_contratti( this.value ); $('#idsede').load( '/ajax_complete.php?module=Anagrafiche&op=get_sedi_select&idanagrafica='+$('#idanagrafica option:selected').val() ); load_impianti( $('#idanagrafica option:selected').val(), $('#idsede option:selected').val() );\"", "ajax-source": "clienti" ]} + {[ "type": "select", "label": "", "name": "idanagrafica", "required": 1, "values": "query=SELECT an_anagrafiche.idanagrafica AS id, ragione_sociale AS descrizione FROM an_anagrafiche INNER JOIN (an_tipianagrafiche_anagrafiche INNER JOIN an_tipianagrafiche ON an_tipianagrafiche_anagrafiche.idtipoanagrafica=an_tipianagrafiche.idtipoanagrafica) ON an_anagrafiche.idanagrafica=an_tipianagrafiche_anagrafiche.idanagrafica WHERE descrizione='Cliente' AND deleted_at IS NULL ORDER BY ragione_sociale", "value": "$idanagrafica$", "extra": "", "ajax-source": "clienti" ]}
@@ -56,7 +60,7 @@ if (!empty($records[0]['immagine'])) {
- {[ "type": "select", "label": "", "name": "idsede", "values": "query=SELECT 0 AS id, 'Sede legale' AS descrizione UNION SELECT id, CONCAT_WS( ' - ', nomesede, citta ) AS descrizione FROM an_sedi WHERE idanagrafica='$idanagrafica$'", "value": "$idsede$" ]} + {[ "type": "select", "label": "", "name": "idsede", "values": "query=SELECT 0 AS id, 'Sede legale' AS descrizione UNION SELECT id, CONCAT_WS( ' - ', nomesede, citta ) AS descrizione FROM an_sedi WHERE idanagrafica='$idanagrafica$'", "value": "$idsede$", "required": "1", "ajax-source": "sedi" ]}
@@ -110,3 +114,25 @@ if (!empty($records[0]['immagine'])) { + + + \ No newline at end of file From 74c0109175e756caa2901e15f863a4d06e491972 Mon Sep 17 00:00:00 2001 From: Bacca97 Date: Wed, 1 Aug 2018 18:45:32 +0200 Subject: [PATCH 8/8] Fix logica creazione fattura e ddt da ordine --- modules/ordini/buttons.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/modules/ordini/buttons.php b/modules/ordini/buttons.php index e9501d546..b220dbdf6 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'], ['Bozza', 'Evaso', 'Fatturato'])) { +if (!in_array($records[0]['stato'], ['Evaso', 'Fatturato'])) { echo '