diff --git a/assets/src/css/style.css b/assets/src/css/style.css index 84a4ad083..4adfde818 100644 --- a/assets/src/css/style.css +++ b/assets/src/css/style.css @@ -526,12 +526,13 @@ span.form-control { .main-header .logo { display: none; } + /* .content-wrapper, .right-side, .left-side, .main-sidebar { padding-top: 50px; - } + }*/ } @media screen and (max-width:1023px) { diff --git a/include/top.php b/include/top.php index 0b66c41b3..b5ba85e63 100644 --- a/include/top.php +++ b/include/top.php @@ -52,9 +52,12 @@ if (Auth::check()) { 'week' => tr('Settimana'), 'month' => tr('Mese'), 'today' => tr('Oggi'), - 'yesterday' => tr('Ieri'), - 'last7Days' => tr('Ultimi 7 giorni'), - 'last30Days' => tr('Ultimi 30 giorni'), + 'firstThreemester' => tr('I trimestre'), + 'secondThreemester' => tr('II trimestre'), + 'thirdThreemester' => tr('III trimestre'), + 'fourthThreemester' => tr('IV trimestre'), + 'firstSemester' => tr('I semestre'), + 'secondSemester' => tr('II semestre'), 'thisMonth' => tr('Questo mese'), 'lastMonth' => tr('Mese scorso'), 'thisYear' => tr("Quest'anno"), @@ -161,8 +164,12 @@ if (Auth::check()) {
- -
+ + + +
'; -// Nelle fatture di acquisto leggo l'iva di acquisto dal fornitore -if ($dir == 'uscita') { - $rsf = $dbo->fetchArray('SELECT idiva FROM an_anagrafiche WHERE idanagrafica='.prepare($idanagrafica)); - $idiva = $rsf[0]['idiva']; -} - -// Leggo l'iva predefinita dall'articolo e se non c'è leggo quella predefinita generica -$idiva = $idiva ?: get_var('Iva predefinita'); +// Leggo l'iva predefinita per l'anagrafica e se non c'è leggo quella predefinita generica +$iva = $dbo->fetchArray('SELECT idiva_'.($dir == 'uscita' ? 'acquisti' : 'vendite').' AS idiva FROM an_anagrafiche WHERE idanagrafica='.prepare($idanagrafica)); +$idiva = $iva[0]['idiva'] ?: get_var('Iva predefinita'); // Iva echo ' diff --git a/modules/fatture/add_riga.php b/modules/fatture/add_riga.php index fcf1fee33..e1e16bb29 100644 --- a/modules/fatture/add_riga.php +++ b/modules/fatture/add_riga.php @@ -63,14 +63,9 @@ if (get_var('Percentuale rivalsa INPS') != '' || get_var("Percentuale ritenuta d '; } -// Nelle fatture di acquisto leggo l'iva di acquisto dal fornitore -if ($dir == 'uscita') { - $rsf = $dbo->fetchArray('SELECT idiva FROM an_anagrafiche WHERE idanagrafica='.prepare($idanagrafica)); - $idiva_predefinita = $rsf[0]['idiva']; -} - -// Leggo l'iva predefinita dall'articolo e se non c'è leggo quella predefinita generica -$idiva = $idiva ?: get_var('Iva predefinita'); +// Leggo l'iva predefinita per l'anagrafica e se non c'è leggo quella predefinita generica +$iva = $dbo->fetchArray('SELECT idiva_'.($dir == 'uscita' ? 'acquisti' : 'vendite').' AS idiva FROM an_anagrafiche WHERE idanagrafica='.prepare($idanagrafica)); +$idiva = $iva[0]['idiva'] ?: get_var('Iva predefinita'); // Iva echo ' diff --git a/modules/interventi/actions.php b/modules/interventi/actions.php index 304d24f27..7db277a92 100644 --- a/modules/interventi/actions.php +++ b/modules/interventi/actions.php @@ -130,7 +130,7 @@ switch (post('op')) { 'km' => $km, 'prezzo_ore_unitario' => $prezzo_ore_unitario, - 'prezzo_km_unitario' => $prezzo_km_unitari, + 'prezzo_km_unitario' => $prezzo_km_unitario, 'prezzo_dirittochiamata' => $prezzo_dirittochiamata, 'prezzo_ore_unitario_tecnico' => $prezzo_ore_unitario_tecnico, 'prezzo_km_unitario_tecnico' => $prezzo_km_unitario_tecnico, diff --git a/modules/interventi/ajax_tecnici.php b/modules/interventi/ajax_tecnici.php index a786273e7..93db8f2c5 100644 --- a/modules/interventi/ajax_tecnici.php +++ b/modules/interventi/ajax_tecnici.php @@ -39,7 +39,7 @@ if ($user['gruppo'] == 'Tecnici') { $rss = $dbo->fetchArray('SELECT idtipointervento FROM in_interventi WHERE id='.prepare($id_record)); $idtipointervento = $rs[0]['idtipointervento']; -$query = 'SELECT * FROM an_anagrafiche JOIN in_interventi_tecnici ON in_interventi_tecnici.idtecnico = an_anagrafiche.idanagrafica WHERE deleted=0 AND idintervento='.prepare($id_record)." AND idanagrafica IN (SELECT idanagrafica FROM an_tipianagrafiche_anagrafiche WHERE idtipoanagrafica = (SELECT idtipoanagrafica FROM an_tipianagrafiche WHERE descrizione = 'Tecnico')) ORDER BY ragione_sociale ASC, in_interventi_tecnici.orario_inizio ASC"; +$query = 'SELECT * FROM an_anagrafiche JOIN in_interventi_tecnici ON in_interventi_tecnici.idtecnico = an_anagrafiche.idanagrafica WHERE deleted=0 AND idintervento='.prepare($id_record)." AND idanagrafica IN (SELECT idanagrafica FROM an_tipianagrafiche_anagrafiche WHERE idtipoanagrafica = (SELECT idtipoanagrafica FROM an_tipianagrafiche WHERE descrizione = 'Tecnico')) ORDER BY ragione_sociale ASC, in_interventi_tecnici.orario_inizio ASC, in_interventi_tecnici.id ASC"; $rs2 = $dbo->fetchArray($query); $prev_tecnico = ''; @@ -49,9 +49,11 @@ if (!empty($rs2)) { // Intestazione tecnico if ($prev_tecnico != $r['ragione_sociale']) { + $prev_tecnico = $r['ragione_sociale']; + echo '
- +
@@ -108,7 +110,7 @@ if (!empty($rs2)) { '; echo ' - + '; @@ -197,9 +197,9 @@ if (!empty($rsi)) { $totale_ore += $int['ore']; $totale_km += $int['km']; - $totale_costo += $int['manodopera_costo']; - $totale_addebito += $int['manodopera_addebito']; - $totale_scontato += $int['manodopera_scontato']; + $totale_costo += $int['manodopera_costo'] + $int['viaggio_costo']; + $totale_addebito += $int['manodopera_addebito'] + $int['viaggio_addebito']; + $totale_scontato += $int['manodopera_scontato'] + $int['viaggio_scontato']; } // Totali diff --git a/modules/stampe_contabili/edit.php b/modules/stampe_contabili/edit.php new file mode 100644 index 000000000..1b5a3cf3c --- /dev/null +++ b/modules/stampe_contabili/edit.php @@ -0,0 +1,26 @@ + +
+

'.tr('Registri iva').'

+
+ +
+ +
+'; diff --git a/templates/registro_iva/logo_azienda.jpg b/templates/registro_iva/logo_azienda.jpg new file mode 100644 index 000000000..3fd391452 Binary files /dev/null and b/templates/registro_iva/logo_azienda.jpg differ diff --git a/templates/registro_iva/pdfgen.registro_iva.php b/templates/registro_iva/pdfgen.registro_iva.php new file mode 100644 index 000000000..78c87ff04 --- /dev/null +++ b/templates/registro_iva/pdfgen.registro_iva.php @@ -0,0 +1,154 @@ +='".$date_start."' AND co_documenti.data<='".$date_end."' GROUP BY co_documenti.id, co_righe_documenti.idiva"; +} elseif ($dir == 'uscita') { + $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='uscita' AND co_documenti.data>='".$date_start."' AND co_documenti.data<='".$date_end."' GROUP BY co_documenti.id, co_righe_documenti.idiva"; +} + +$rs = $dbo->fetchArray($query); + +if ($dir == 'entrata') { + $body .= "REGISTRO IVA VENDITA

"; +} elseif ($dir == 'uscita') { + $body .= "REGISTRO IVA ACQUISTO

"; +} + +$body .= " +
'.$r['ragione_sociale'].' '.tr('Orario inizio').'
'; if ($rs[0]['stato'] != 'Fatturato') { diff --git a/modules/interventi/modutil.php b/modules/interventi/modutil.php index 9e63776c5..ea00bd212 100644 --- a/modules/interventi/modutil.php +++ b/modules/interventi/modutil.php @@ -124,6 +124,13 @@ function add_tecnico($idintervento, $idtecnico, $inizio, $fine, $idcontratto) } } + // Azzeramento forzato del diritto di chiamata nel caso questa non sia la prima sessione dell'intervento per il giorno di inizio [Luca] + $rs = $dbo->fetchArray('SELECT id FROM in_interventi_tecnici WHERE (DATE(orario_inizio)=DATE('.prepare($inizio).') OR DATE(orario_fine)=DATE('.prepare($inizio).')) AND idintervento='.prepare($idintervento)); + if (!empty($rs)) { + $costo_dirittochiamata_tecnico = 0; + $costo_dirittochiamata = 0; + } + // Inserisco le ore dei tecnici nella tabella "in_interventi_tecnici" $dbo->insert('in_interventi_tecnici', [ 'idintervento' => $idintervento, diff --git a/modules/ordini/add_articolo.php b/modules/ordini/add_articolo.php index 03e184b2e..a86ec03c2 100644 --- a/modules/ordini/add_articolo.php +++ b/modules/ordini/add_articolo.php @@ -56,14 +56,9 @@ echo ' '; -// Nelle fatture di acquisto leggo l'iva di acquisto dal fornitore -if ($dir == 'uscita') { - $rsf = $dbo->fetchArray('SELECT idiva FROM an_anagrafiche WHERE idanagrafica='.prepare($idanagrafica)); - $idiva_predefinita = $rsf[0]['idiva']; -} - -// Leggo l'iva predefinita dall'articolo e se non c'è leggo quella predefinita generica -$idiva = $idiva ?: get_var('Iva predefinita'); +// Leggo l'iva predefinita per l'anagrafica e se non c'è leggo quella predefinita generica +$iva = $dbo->fetchArray('SELECT idiva_'.($dir == 'uscita' ? 'acquisti' : 'vendite').' AS idiva FROM an_anagrafiche WHERE idanagrafica='.prepare($idanagrafica)); +$idiva = $iva[0]['idiva'] ?: get_var('Iva predefinita'); // Iva echo ' diff --git a/modules/ordini/add_riga.php b/modules/ordini/add_riga.php index ae9858bc3..fa9232697 100644 --- a/modules/ordini/add_riga.php +++ b/modules/ordini/add_riga.php @@ -29,14 +29,9 @@ if (empty($idriga)) { $prezzo = 0; $sconto = 0; - // Nelle fatture di acquisto leggo l'iva di acquisto dal fornitore - if ($dir == 'uscita') { - $rsf = $dbo->fetchArray('SELECT idiva FROM an_anagrafiche WHERE idanagrafica='.prepare($idanagrafica)); - $idiva = $rsf[0]['idiva']; - } - - // Leggo l'iva predefinita dall'articolo e se non c'è leggo quella predefinita generica - $idiva = $idiva ?: get_var('Iva predefinita'); + // Leggo l'iva predefinita per l'anagrafica e se non c'è leggo quella predefinita generica + $iva = $dbo->fetchArray('SELECT idiva_'.($dir == 'uscita' ? 'acquisti' : 'vendite').' AS idiva FROM an_anagrafiche WHERE idanagrafica='.prepare($idanagrafica)); + $idiva = $iva[0]['idiva'] ?: get_var('Iva predefinita'); } else { $op = 'editriga'; $button = tr('Modifica'); diff --git a/modules/preventivi/plugins/preventivi.consuntivo.php b/modules/preventivi/plugins/preventivi.consuntivo.php index 2b8573d22..1ee5db18b 100644 --- a/modules/preventivi/plugins/preventivi.consuntivo.php +++ b/modules/preventivi/plugins/preventivi.consuntivo.php @@ -64,15 +64,15 @@ if (!empty($rsi)) { - '.Translator::numberToLocale($int['manodopera_costo']).' + '.Translator::numberToLocale($int['manodopera_costo'] + $int['viaggio_costo']).' - '.Translator::numberToLocale($int['manodopera_addebito']).' + '.Translator::numberToLocale($int['manodopera_addebito'] + $int['viaggio_addebito']).' - '.Translator::numberToLocale($int['manodopera_scontato']).' + '.Translator::numberToLocale($int['manodopera_scontato'] + $int['viaggio_scontato']).'
+ + + + + + + + + + + + + "; + +for ($i = 0; $i < sizeof($rs); ++$i) { + $body .= ''; + if ($rs[$i]['numero'] == $rs[$i - 1]['numero']) { + $body .= " "; + $body .= " "; + } else { + $body .= " '; + $body .= " '; + } + $body .= " '; + if ($dir == 'entrata') { + $body .= "'; + } elseif ($dir == 'uscita') { + $body .= "'; + } + $body .= " '; + $body .= " '; + $body .= " '; + $body .= ''; + + $v_iva[$rs[$i]['desc_iva']] += $rs[$i]['iva']; + $v_totale[$rs[$i]['desc_iva']] += $rs[$i]['subtotale']; + + $totale_iva += $rs[$i]['iva']; + $totale_subtotale += $rs[$i]['subtotale']; +} + +$body .= ' +
Prot.DataN° DocumentoCausale
Ragione sociale
AliquotaImponibileImposta
".$rs[$i]['numero'].'".date('d/m/Y', strtotime($rs[$i]['data'])).'".$rs[$i]['numero_esterno'].' + Fattura di vendita
+ ".$rs[$i]['ragione_sociale'].' +
+ Fattura di acquisto
+ ".$rs[$i]['ragione_sociale'].' +
".$rs[$i]['desc_iva'].'".Translator::numberToLocale($rs[$i]['subtotale'], 2).' €".Translator::numberToLocale($rs[$i]['iva'], 2).' €
+ '; + +$body .= "

RIEPILOGO IVA

"; + +$body .= " + + + + + + + + + "; + +foreach ($v_iva as $desc_iva => $tot_iva) { + if ($desc_iva != '') { + $body .= "\n"; + + $body .= "\n"; + + $body .= "\n"; + } +} + +$body .= " + + + + '; + +$body .= ' +
Cod. IVAImponibileImposta
\n"; + $body .= $desc_iva."\n"; + $body .= "\n"; + $body .= Translator::numberToLocale($v_totale[$desc_iva], 2)." €\n"; + $body .= "\n"; + $body .= Translator::numberToLocale($v_iva[$desc_iva], 2)." €\n"; + $body .= "
TOTALE".Translator::numberToLocale($totale_subtotale, 2)." €".Translator::numberToLocale($totale_iva, 2).' €
+ '; + +$orientation = 'L'; +$report_name = 'registro_iva.pdf'; diff --git a/templates/registro_iva/registroiva.html b/templates/registro_iva/registroiva.html new file mode 100644 index 000000000..c311fc99a --- /dev/null +++ b/templates/registro_iva/registroiva.html @@ -0,0 +1,59 @@ + + + + $body$ + diff --git a/templates/registro_iva/registroiva_body.html b/templates/registro_iva/registroiva_body.html new file mode 100644 index 000000000..cf0eca607 --- /dev/null +++ b/templates/registro_iva/registroiva_body.html @@ -0,0 +1,25 @@ + + +
+ + + + + +
+ + $f_ragionesociale$ +

+ $f_indirizzo$ + $f_citta$ + $f_piva$ + $f_codicefiscale$ + $f_capsoc$ + $f_telefono$ +

+
+
+ Logo +
+
+
diff --git a/update/2_3.sql b/update/2_3.sql index 6dd12cea7..acb2fc1b6 100644 --- a/update/2_3.sql +++ b/update/2_3.sql @@ -757,9 +757,6 @@ INSERT INTO `zz_views` (`id_module`, `name`, `query`, `order`, `search`, `slow`, ((SELECT `id` FROM `zz_modules` WHERE `name` = 'Movimenti'), '_link_record_', 'mg_movimenti.idarticolo', 7, 1, 0, 0, 1), ((SELECT `id` FROM `zz_modules` WHERE `name` = 'Movimenti'), '_link_hash_', 'CONCAT(\'tab_\', (SELECT `id` FROM `zz_plugins` WHERE `name` = \'Movimenti\' AND idmodule_to = (SELECT `id` FROM `zz_modules` WHERE `name` = \'Articoli\')))', 7, 1, 0, 0, 1); --- Impostazione dei titoli di default -UPDATE `zz_modules` SET `title` = `name` WHERE `title` = ''; - -- Aggiunta del campo di dicitura fissa per la fatturazione ALTER TABLE `co_iva` ADD `dicitura` varchar(255); @@ -773,6 +770,11 @@ ALTER TABLE `an_anagrafiche` CHANGE `idlistino` `idlistino_vendite` int(11), ADD UPDATE `an_anagrafiche` SET `idlistino_vendite` = NULL WHERE `idlistino_vendite` = 0; UPDATE `an_anagrafiche` SET `idlistino_acquisti` = `idlistino_vendite` WHERE `idlistino_vendite` IS NOT NULL; +-- Miglioramento della gestione dell'iva predefinita +ALTER TABLE `an_anagrafiche` CHANGE `idiva` `idiva_vendite` int(11), ADD `idiva_acquisti` int(11) AFTER `idiva_vendite`; +UPDATE `an_anagrafiche` SET `idiva_vendite` = NULL WHERE `idiva_vendite` = 0; +UPDATE `an_anagrafiche` SET `idiva_acquisti` = `idiva_vendite` WHERE `idiva_vendite` IS NOT NULL; + -- Rimozione data_sla e ora_sla ALTER TABLE `in_interventi` DROP `data_sla`, DROP `ora_sla`; @@ -933,3 +935,10 @@ UPDATE `co_iva` SET `dicitura` = 'Operazione soggetta a reverse charge ex art. 1 -- Aggiunta campi in co_pagamenti per la selezione del conto di default ALTER TABLE `co_pagamenti` ADD `idconto_vendite` int(11), ADD `idconto_acquisti` int(11); + +-- Aggiunta del modulo Stampe contabili +INSERT INTO `zz_modules` (`id`, `name`, `directory`, `options`, `options2`, `icon`, `version`, `compatibility`, `order`, `parent`, `default`, `enabled`) VALUES (NULL, 'Stampe contabili', 'stampe_contabili', 'custom', '', 'fa fa-angle-right', '2.3', '2.3', '1', 1, '1', '1'); +UPDATE `zz_modules` `t1` INNER JOIN `zz_modules` `t2` ON (`t1`.`name` = 'Stampe contabili' AND `t2`.`name` = 'Contabilità') SET `t1`.`parent` = `t2`.`id`; + +-- Impostazione dei titoli di default +UPDATE `zz_modules` SET `title` = `name` WHERE `title` = '';