diff --git a/lib/functions.php b/lib/functions.php index 32d9f5213..69c4b3384 100644 --- a/lib/functions.php +++ b/lib/functions.php @@ -410,6 +410,6 @@ function operationLog($operation, array $ids = [], array $options = []) * * @return string */ -function clean($string, $permitted) { +function clean($string, $permitted = '') { return preg_replace('/[^A-Za-z0-9'.$permitted.']/', '', $string); // Removes special chars. } diff --git a/modules/statistiche/edit.php b/modules/statistiche/edit.php index b5e44f054..38c386dc7 100644 --- a/modules/statistiche/edit.php +++ b/modules/statistiche/edit.php @@ -38,8 +38,8 @@ $d1 = new DateTime($start); $d2 = new DateTime($end); $count = $d1->diff($d2)->m + ($d1->diff($d2)->y * 12) + 1; -$fatturato = $dbo->fetchArray("SELECT SUM(co_righe_documenti.subtotale - co_righe_documenti.sconto) AS totale, YEAR(co_documenti.data) AS year, MONTH(co_documenti.data) AS month FROM co_documenti INNER JOIN co_tipidocumento ON co_documenti.idtipodocumento=co_tipidocumento.id INNER JOIN co_righe_documenti ON co_righe_documenti.iddocumento=co_documenti.id WHERE co_tipidocumento.dir='entrata' AND co_tipidocumento.descrizione!='Bozza' AND co_documenti.data BETWEEN ".prepare($start).' AND '.prepare($end).' GROUP BY YEAR(co_documenti.data), MONTH(co_documenti.data) ORDER BY YEAR(co_documenti.data) ASC, MONTH(co_documenti.data) ASC'); -$acquisti = $dbo->fetchArray("SELECT SUM(co_righe_documenti.subtotale - co_righe_documenti.sconto) AS totale, YEAR(co_documenti.data) AS year, MONTH(co_documenti.data) AS month FROM co_documenti INNER JOIN co_tipidocumento ON co_documenti.idtipodocumento=co_tipidocumento.id INNER JOIN co_righe_documenti ON co_righe_documenti.iddocumento=co_documenti.id WHERE co_tipidocumento.dir='uscita' AND co_tipidocumento.descrizione!='Bozza' AND co_documenti.data BETWEEN ".prepare($start).' AND '.prepare($end).' GROUP BY YEAR(co_documenti.data), MONTH(co_documenti.data) ORDER BY YEAR(co_documenti.data) ASC, MONTH(co_documenti.data) ASC'); +$fatturato = $dbo->fetchArray("SELECT ROUND(SUM(co_righe_documenti.subtotale - co_righe_documenti.sconto), 2) AS totale, YEAR(co_documenti.data) AS year, MONTH(co_documenti.data) AS month FROM co_documenti INNER JOIN co_tipidocumento ON co_documenti.idtipodocumento=co_tipidocumento.id INNER JOIN co_righe_documenti ON co_righe_documenti.iddocumento=co_documenti.id WHERE co_tipidocumento.dir='entrata' AND co_tipidocumento.descrizione!='Bozza' AND co_documenti.data BETWEEN ".prepare($start).' AND '.prepare($end).' GROUP BY YEAR(co_documenti.data), MONTH(co_documenti.data) ORDER BY YEAR(co_documenti.data) ASC, MONTH(co_documenti.data) ASC'); +$acquisti = $dbo->fetchArray("SELECT ROUND(SUM(co_righe_documenti.subtotale - co_righe_documenti.sconto), 2) AS totale, YEAR(co_documenti.data) AS year, MONTH(co_documenti.data) AS month FROM co_documenti INNER JOIN co_tipidocumento ON co_documenti.idtipodocumento=co_tipidocumento.id INNER JOIN co_righe_documenti ON co_righe_documenti.iddocumento=co_documenti.id WHERE co_tipidocumento.dir='uscita' AND co_tipidocumento.descrizione!='Bozza' AND co_documenti.data BETWEEN ".prepare($start).' AND '.prepare($end).' GROUP BY YEAR(co_documenti.data), MONTH(co_documenti.data) ORDER BY YEAR(co_documenti.data) ASC, MONTH(co_documenti.data) ASC'); $month = intval($d1->format('m')) - 1; for ($i = 0; $i < $count; ++$i) { @@ -85,14 +85,14 @@ $(document).ready(function() { labels: months, datasets: [ { - label: "'.tr('Fatturato').'", + label: "'.tr('Fatturato (iva esclusa)').'", backgroundColor: "#63E360", data: [ '.implode(',', array_column($fatturato, 'totale')).' ] }, { - label: "'.tr('Acquisti').'", + label: "'.tr('Acquisti (iva esclusa)').'", backgroundColor: "#EE4B4B", data: [ '.implode(',', array_column($acquisti, 'totale')).' @@ -105,6 +105,16 @@ $(document).ready(function() { legend: { position: "bottom", }, + scales: { + yAxes: [{ + ticks: { + // Include a dollar sign in the ticks + callback: function(value, index, values) { + return \'€ \' + value; + } + } + }] + }, } }); }); diff --git a/plugins/exportFE/src/FatturaElettronica.php b/plugins/exportFE/src/FatturaElettronica.php index 03a66a3a6..f6c57fdc9 100644 --- a/plugins/exportFE/src/FatturaElettronica.php +++ b/plugins/exportFE/src/FatturaElettronica.php @@ -286,8 +286,13 @@ class FatturaElettronica */ public function getFilename($new = false) { - $azienda = static::getAzienda(); - $prefix = 'IT'.(!empty($azienda['codice_fiscale']) ? $azienda['codice_fiscale'] : $azienda['piva']); + + if (!empty(setting('Terzo intermediario'))) + $anagrafica = Anagrafica::find(setting('Terzo intermediario')); + else + $anagrafica = static::getAzienda(); + + $prefix = 'IT'.(!empty($anagrafica['codice_fiscale']) ? $anagrafica['codice_fiscale'] : $anagrafica['piva']); if (empty($this->documento['progressivo_invio']) || !empty($new)) { $database = database(); @@ -354,9 +359,14 @@ class FatturaElettronica * @return array */ protected static function getDatiTrasmissione($fattura) - { - $azienda = static::getAzienda(); - $documento = $fattura->getDocumento(); + { + // Se in impostazioni ho definito un terzo intermediario (es. Aruba, Teamsystem) + if (!empty(setting('Terzo intermediario'))) + $anagrafica = Anagrafica::find(setting('Terzo intermediario')); + else + $anagrafica = static::getAzienda(); + + $documento = $fattura->getDocumento(); $cliente = $fattura->getCliente(); $sede = database()->fetchOne('SELECT `codice_destinatario` FROM `an_sedi` WHERE `id` = '.prepare($documento['idsede'])); @@ -372,25 +382,28 @@ class FatturaElettronica $default_code = ($cliente->nazione->iso2 != 'IT') ? 'XXXXXXX' : $default_code; // Generazione dell'header - // Se all'Anagrafe Tributaria il trasmittente è censito con il codice fiscale - $result = [ - 'IdTrasmittente' => [ - 'IdPaese' => $azienda->nazione->iso2, - 'IdCodice' => (!empty($azienda['codice_fiscale'])) ? $azienda['codice_fiscale'] : $azienda['piva'], - ], + // Se all'Anagrafe Tributaria il trasmittente è censito con il codice fiscale, es. ditte individuali + $result = [ + 'IdTrasmittente' => [ + 'IdPaese' => $anagrafica->nazione->iso2, + 'IdCodice' => (!empty($anagrafica['codice_fiscale'])) ? $anagrafica['codice_fiscale'] : $anagrafica['piva'], + ] + ]; + + $result[] = [ 'ProgressivoInvio' => $documento['progressivo_invio'], 'FormatoTrasmissione' => ($cliente['tipo'] == 'Ente pubblico') ? 'FPA12' : 'FPR12', 'CodiceDestinatario' => !empty($cliente['codice_destinatario']) ? $cliente['codice_destinatario'] : $default_code, ]; // Telefono di contatto - if (!empty($azienda['telefono'])) { - $result['ContattiTrasmittente']['Telefono'] = $azienda['telefono']; + if (!empty($anagrafica['telefono'])) { + $result['ContattiTrasmittente']['Telefono'] = $anagrafica['telefono']; } // Email di contatto - if (!empty($azienda['email'])) { - $result['ContattiTrasmittente']['Email'] = $azienda['email']; + if (!empty($anagrafica['email'])) { + $result['ContattiTrasmittente']['Email'] = $anagrafica['email']; } // Inizializzazione PEC solo se anagrafica azienda e codice destinatario non compilato, per privato e PA la PEC non serve diff --git a/update/2_4_6.sql b/update/2_4_6.sql index 9838eaa38..ab827d49b 100644 --- a/update/2_4_6.sql +++ b/update/2_4_6.sql @@ -77,3 +77,6 @@ CREATE TABLE IF NOT EXISTS `co_ritenuta_contributi` ( UPDATE `zz_views` SET `query` = '(SELECT GROUP_CONCAT(DISTINCT `name` SEPARATOR \'\r\n \') FROM zz_operations INNER JOIN zz_emails ON zz_operations.id_email = zz_emails.id WHERE zz_operations.id_module = (SELECT id FROM zz_modules WHERE `name` = \'Fatture di vendita\') AND op = \'send-email\' AND id_record = co_documenti.id ORDER BY zz_operations.created_at DESC LIMIT 1)' WHERE `zz_views`.`name` = 'icon_title_Inviata' AND id_module = (SELECT id FROM zz_modules WHERE name = 'Fatture di vendita'); UPDATE `zz_views` SET `query` = 'IF((SELECT GROUP_CONCAT(DISTINCT `name` SEPARATOR \'\r\n \') FROM zz_operations INNER JOIN zz_emails ON zz_operations.id_email = zz_emails.id WHERE zz_operations.id_module = (SELECT id FROM zz_modules WHERE `name` = \'Fatture di vendita\') AND op = \'send-email\' AND id_record = co_documenti.id ORDER BY zz_operations.created_at DESC LIMIT 1) IS NOT NULL, \'fa fa-envelope text-success\', \'\') ' WHERE `zz_views`.`name` = 'icon_Inviata' AND id_module = (SELECT id FROM zz_modules WHERE name = 'Fatture di vendita'); + +-- Limitato il controllo numeri fattura duplicati all'anno in corso +UPDATE `zz_views` SET `query` = 'IF((SELECT COUNT(t.numero_esterno) FROM co_documenti AS t WHERE t.numero_esterno = co_documenti.numero_esterno AND t.numero_esterno != '''' AND t.id_segment = co_documenti.id_segment AND idtipodocumento IN (SELECT id FROM co_tipidocumento WHERE dir = ''entrata'') AND t.data >= ''|period_start|'' AND t.data <= ''|period_end|'' AND YEAR(t.data) = YEAR(co_documenti.data) ) > 1, ''red'', '''') ' WHERE `zz_views`.`name` = '_bg_' AND id_module = (SELECT id FROM zz_modules WHERE name = 'Fatture di vendita');