From b36a5f7d91ab7bcbc94912a77c054a35b139eb06 Mon Sep 17 00:00:00 2001 From: lepool Date: Fri, 2 Feb 2024 16:21:55 +0100 Subject: [PATCH 1/9] risolto problema errore notifica lettura email mancante --- src/Notifications/EmailNotification.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/Notifications/EmailNotification.php b/src/Notifications/EmailNotification.php index 6fac86424..fe796f541 100755 --- a/src/Notifications/EmailNotification.php +++ b/src/Notifications/EmailNotification.php @@ -146,10 +146,10 @@ class EmailNotification extends PHPMailer implements NotificationInterface // Conferma di lettura if (!empty($mail->read_notify)) { - $this->ConfirmReadingTo = $mail->From; - $this->AddCustomHeader('X-Confirm-Reading-To: '.$mail->From); - $this->AddCustomHeader('Return-Receipt-To: '.$mail->From); - $this->AddCustomHeader('Disposition-Notification-To: '.$mail->From); + $this->ConfirmReadingTo = $this->From; + $this->AddCustomHeader('X-Confirm-Reading-To: '.$this->From); + $this->AddCustomHeader('Return-Receipt-To: '.$this->From); + $this->AddCustomHeader('Disposition-Notification-To: '.$this->From); } // Reply To From 6722e59de4f003f7e956b1fe978ab1fdc1d4f73f Mon Sep 17 00:00:00 2001 From: Pek5892 Date: Tue, 6 Feb 2024 16:27:00 +0100 Subject: [PATCH 2/9] Fix creazione config --- index.php | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/index.php b/index.php index c6eb83291..0ec516a05 100755 --- a/index.php +++ b/index.php @@ -21,14 +21,17 @@ $skip_permissions = true; include_once __DIR__.'/core.php'; use Carbon\Carbon; +use Illuminate\Database\QueryException; $op = filter('op'); $microsoft = null; -try { - $microsoft = $dbo->selectOne('zz_oauth2', '*', ['nome' => 'Microsoft', 'enabled' => 1, 'is_login' => 1]); -} catch (Exception $e) { +if ($dbo->isConnected()) { + try { + $microsoft = $dbo->selectOne('zz_oauth2', '*', ['nome' => 'Microsoft', 'enabled' => 1, 'is_login' => 1]); + } catch ( QueryException $e) { + } } // LOGIN From 66305b365797c4c2f24a96de06dd3e487070803d Mon Sep 17 00:00:00 2001 From: Pek5892 Date: Tue, 6 Feb 2024 17:25:50 +0100 Subject: [PATCH 3/9] Fix minori --- index.php | 2 +- modules/anagrafiche/src/Anagrafica.php | 3 +-- modules/anagrafiche/src/Import/CSV.php | 6 +++--- modules/articoli/src/Import/CSV.php | 2 +- modules/preventivi/src/Import/CSV.php | 2 +- plugins/importFE/src/FatturaElettronica.php | 4 ++-- plugins/importFE/src/FatturaOrdinaria.php | 4 ++-- plugins/statistiche_anagrafiche/info.php | 2 +- src/API/App/v1/ControlloClienti.php | 2 +- 9 files changed, 13 insertions(+), 14 deletions(-) diff --git a/index.php b/index.php index 0ec516a05..1f3c9a4d5 100755 --- a/index.php +++ b/index.php @@ -30,7 +30,7 @@ $microsoft = null; if ($dbo->isConnected()) { try { $microsoft = $dbo->selectOne('zz_oauth2', '*', ['nome' => 'Microsoft', 'enabled' => 1, 'is_login' => 1]); - } catch ( QueryException $e) { + } catch (QueryException $e) { } } diff --git a/modules/anagrafiche/src/Anagrafica.php b/modules/anagrafiche/src/Anagrafica.php index 4d2b782b2..87e4d0c88 100755 --- a/modules/anagrafiche/src/Anagrafica.php +++ b/modules/anagrafiche/src/Anagrafica.php @@ -193,9 +193,8 @@ class Anagrafica extends Model public function isTipo($type) { return $this->tipi()->get()->search(function ($item, $key) use ($type) { - return (TipoAnagrafica::find($item->id))->name == $type; + return TipoAnagrafica::find($item->id)->name == $type; }) !== false; - } public function delete() diff --git a/modules/anagrafiche/src/Import/CSV.php b/modules/anagrafiche/src/Import/CSV.php index 069d734b7..f20e90b92 100644 --- a/modules/anagrafiche/src/Import/CSV.php +++ b/modules/anagrafiche/src/Import/CSV.php @@ -21,8 +21,8 @@ namespace Modules\Anagrafiche\Import; use Importer\CSVImporter; use Modules\Anagrafiche\Anagrafica; -use Modules\Anagrafiche\Tipo; use Modules\Anagrafiche\Nazione; +use Modules\Anagrafiche\Tipo; /** * Struttura per la gestione delle operazioni di importazione (da CSV) delle Anagrafiche. @@ -253,7 +253,7 @@ class CSV extends CSVImporter $tipi_selezionati = explode(',', $record['tipologia']); foreach ($tipi_selezionati as $tipo) { - $id_tipo = (new Tipo)->getByName($tipo)->id_record; + $id_tipo = (new Tipo())->getByName($tipo)->id_record; // Creo il tipo anagrafica se non esiste if (empty($id_tipo)) { @@ -264,7 +264,7 @@ class CSV extends CSVImporter 'name' => $tipo, ])['id']; - $id_tipo = (new Tipo)->getByName($tipo)->id_record; + $id_tipo = (new Tipo())->getByName($tipo)->id_record; } $tipologie[] = $id_tipo; diff --git a/modules/articoli/src/Import/CSV.php b/modules/articoli/src/Import/CSV.php index 86070f53f..f3ca730c8 100644 --- a/modules/articoli/src/Import/CSV.php +++ b/modules/articoli/src/Import/CSV.php @@ -465,7 +465,7 @@ class CSV extends CSVImporter } if ($dettagli['dir']) { - $tipo = (new Tipo)->getByName($dettagli['dir'])->id_record; + $tipo = (new Tipo())->getByName($dettagli['dir'])->id_record; $tipi = $anagrafica->tipi->pluck('id')->toArray(); $tipi[] = $tipo; diff --git a/modules/preventivi/src/Import/CSV.php b/modules/preventivi/src/Import/CSV.php index 8ffdbb08c..f2076c036 100644 --- a/modules/preventivi/src/Import/CSV.php +++ b/modules/preventivi/src/Import/CSV.php @@ -96,7 +96,7 @@ class CSV extends CSVImporter if (empty($anagrafica)) { $anagrafica = Anagrafica::build($record['ragione_sociale']); - $tipo_cliente = (new TipoAnagrafica)->getByName('Cliente')->id_record; + $tipo_cliente = (new TipoAnagrafica())->getByName('Cliente')->id_record; $anagrafica->tipologie = [$tipo_cliente]; $anagrafica->save(); } diff --git a/plugins/importFE/src/FatturaElettronica.php b/plugins/importFE/src/FatturaElettronica.php index 65f66ebed..519cd47a8 100755 --- a/plugins/importFE/src/FatturaElettronica.php +++ b/plugins/importFE/src/FatturaElettronica.php @@ -223,7 +223,7 @@ class FatturaElettronica // Se non trovo l'anagrafica tra i fornitori, provo a ricercarla anche tra i clienti if (empty($anagrafica)) { $type = 'Cliente'; - + $anagrafica = Anagrafica::where('tipo', $type); if (!empty($info['partita_iva']) && !empty($info['codice_fiscale'])) { @@ -261,7 +261,7 @@ class FatturaElettronica $info = $this->getAnagrafe(); $anagrafica = Anagrafica::build($info['ragione_sociale'], $info['nome'], $info['cognome'], [ - (new TipoAnagrafica)->getByName($type)->id_record + (new TipoAnagrafica())->getByName($type)->id_record, ]); if (!empty($info['partita_iva'])) { diff --git a/plugins/importFE/src/FatturaOrdinaria.php b/plugins/importFE/src/FatturaOrdinaria.php index 634e13f56..6cb293d0b 100755 --- a/plugins/importFE/src/FatturaOrdinaria.php +++ b/plugins/importFE/src/FatturaOrdinaria.php @@ -293,7 +293,7 @@ class FatturaOrdinaria extends FatturaElettronica $obj->ritenuta_contributi = $ritenuta_contributi; // Inserisco la ritenuta se è specificata nella riga o se non è specificata nella riga ma è presente in Dati ritenuta (quindi comprende tutte le righe) - if (!empty($riga['Ritenuta']) || $info['ritenuta_norighe'] == true || $info['rivalsa_norighe'] == true ) { + if (!empty($riga['Ritenuta']) || $info['ritenuta_norighe'] == true || $info['rivalsa_norighe'] == true) { $obj->id_ritenuta_acconto = $id_ritenuta_acconto; $obj->calcolo_ritenuta_acconto = $calcolo_ritenuta_acconto; $obj->id_rivalsa_inps = $id_rivalsa; @@ -453,7 +453,7 @@ class FatturaOrdinaria extends FatturaElettronica $diff = round(abs($fattura->totale_imponibile) - abs($totale_righe + $tot_arr), 2); $diff_tot = round($fattura->totale_imponibile + $fattura->rivalsa_inps - $totale_imp + $tot_arr, 2); - $iva_arrotondamento = database()->fetchOne('SELECT * FROM co_iva WHERE percentuale=0 AND deleted_at IS NULL'); + $iva_arrotondamento = database()->fetchOne('SELECT * FROM `co_iva` LEFT JOIN `co_iva_lang` ON (`co_iva`.`id` = `co_iva_lang`.`id_record` AND `co_iva_lang` = '.prepare(setting('Lingua')).') WHERE `percentuale`=0 AND `deleted_at` IS NULL'); if (($diff != 0 && $diff != $diff_tot) || (($diff_tot != $diff) && !$diff_iva) || $diff_iva) { if ($diff != 0 && $diff != $diff_tot) { diff --git a/plugins/statistiche_anagrafiche/info.php b/plugins/statistiche_anagrafiche/info.php index 541b4d3d7..12f0a392d 100755 --- a/plugins/statistiche_anagrafiche/info.php +++ b/plugins/statistiche_anagrafiche/info.php @@ -74,7 +74,7 @@ elseif ($anagrafica->isTipo('Tecnico')) { $interventi = Intervento::whereIn('id', array_column($interventi, 'id'))->get(); $totale_interventi = $interventi->sum('totale_imponibile'); -if ($sessioni){ +if ($sessioni) { $sessioni = Sessione::whereIn('id', array_column($sessioni, 'id'))->get(); $totale_ore_lavorate = $sessioni->sum('ore'); } diff --git a/src/API/App/v1/ControlloClienti.php b/src/API/App/v1/ControlloClienti.php index e36738a74..dd64840cd 100644 --- a/src/API/App/v1/ControlloClienti.php +++ b/src/API/App/v1/ControlloClienti.php @@ -46,7 +46,7 @@ class ControlloClienti extends Resource implements RetrieveInterface // Aggiunta tipologia Cliente se non presente nell'anagrafica trovata if (!empty($cliente) && !$cliente->isTipo('Cliente')) { - $tipo_cliente = (new Tipo)->getByName('Cliente')->id_record; + $tipo_cliente = (new Tipo())->getByName('Cliente')->id_record; $tipi = $cliente->tipi->pluck('id')->toArray(); $tipi[] = $tipo_cliente; From bb4ba121854f81a42311e5a014f8b0e111ce1447 Mon Sep 17 00:00:00 2001 From: Pek5892 Date: Tue, 6 Feb 2024 17:36:05 +0100 Subject: [PATCH 4/9] Aggiunta tabella co_iva_lang --- modules/articoli/ajax/select.php | 11 +- modules/automezzi/row-list-articoli.php | 21 +- modules/ddt/modutil.php | 3 +- modules/fatture/actions.php | 20 +- modules/fatture/edit.php | 2 +- modules/fatture/modutil.php | 9 +- modules/interventi/modutil.php | 3 +- modules/interventi/src/Import/CSV.php | 4 +- modules/iva/actions.php | 16 +- modules/iva/ajax/select.php | 14 +- modules/iva/bulk.php | 6 +- modules/iva/edit.php | 2 +- modules/iva/init.php | 2 +- modules/iva/src/Aliquota.php | 30 ++ modules/ordini/modutil.php | 3 +- modules/tipi_intervento/ajax_righe.php | 2 +- plugins/exportFE/src/FatturaElettronica.php | 4 +- plugins/importFE/generate.php | 6 +- src/API/App/v1/AliquoteIva.php | 17 +- templates/automezzi_carico/init.php | 49 +- templates/fatturato/init.php | 23 +- templates/fatture/body.php | 4 +- templates/liquidazione_iva/init.php | 534 ++++++++++---------- templates/registro_iva/init.php | 157 +++--- update/2_4_55.sql | 41 +- update/tables.php | 1 + 26 files changed, 554 insertions(+), 430 deletions(-) diff --git a/modules/articoli/ajax/select.php b/modules/articoli/ajax/select.php index 881783f36..1d59a3809 100755 --- a/modules/articoli/ajax/select.php +++ b/modules/articoli/ajax/select.php @@ -69,12 +69,12 @@ switch ($resource) { if ($usare_iva_anagrafica) { $query .= ' IFNULL(`iva_anagrafica`.`id`, IFNULL(`iva_articolo`.`id`, `iva_predefinita`.`id`)) AS idiva_vendita, - IFNULL(`iva_anagrafica`.`descrizione`, IFNULL(`iva_articolo`.`descrizione`, `iva_predefinita`.`descrizione`)) AS iva_vendita, + IFNULL(`iva_anagrafica_lang`.`name`, IFNULL(`iva_articolo_lang`.`name`, `iva_predefinita_lang`.`name`)) AS iva_vendita, IFNULL(`iva_anagrafica`.`percentuale`, IFNULL(`iva_articolo`.`percentuale`, `iva_predefinita`.`percentuale`)) AS percentuale,'; } else { $query .= ' IFNULL(`iva_articolo`.`id`, `iva_predefinita`.`id`) AS idiva_vendita, - IFNULL(`iva_articolo`.`descrizione`, `iva_predefinita`.`descrizione`) AS iva_vendita, + IFNULL(`iva_articolo_lang`.`name`, `iva_predefinita_lang`.`name`) AS iva_vendita, IFNULL(`iva_articolo`.`percentuale`, `iva_predefinita`.`percentuale`) AS percentuale,'; } @@ -113,11 +113,14 @@ switch ($resource) { LEFT JOIN `co_tipidocumento` ON `co_tipidocumento`.`id`=`co_documenti`.`idtipodocumento` WHERE `co_tipidocumento`.`dir`='uscita' GROUP BY `co_righe_documenti`.`idarticolo`) AS righe ON `righe`.`id`=`mg_articoli`.`id` LEFT JOIN `co_iva` AS iva_articolo ON `iva_articolo`.`id` = `mg_articoli`.`idiva_vendita` - LEFT JOIN `co_iva` AS `iva_predefinita` ON `iva_predefinita`.`id` = (SELECT `valore` FROM `zz_settings` WHERE `nome` = 'Iva predefinita')"; + LEFT JOIN `co_iva_lang` AS iva_articolo_lang on (`iva_articolo`.`id` = `iva_articolo_lang`.`id_record` AND `iva_articolo_lang`.`id_lang` = ".prepare(setting('Lingua')).") + LEFT JOIN `co_iva` AS `iva_predefinita` ON `iva_predefinita`.`id` = (SELECT `valore` FROM `zz_settings` WHERE `nome` = 'Iva predefinita') + LEFT JOIN `co_iva_lang` AS iva_predefinita_lang on (`iva_predefinita`.`id` = `iva_predefinita_lang`.`id_record` AND `iva_predefinita_lang`.`id_lang` = ".prepare(setting('Lingua')).')'; if ($usare_iva_anagrafica) { $query .= ' - LEFT JOIN `co_iva` AS iva_anagrafica ON `iva_anagrafica`.`id` = (SELECT `idiva_vendite` FROM `an_anagrafiche` WHERE `idanagrafica` = '.prepare($superselect['idanagrafica']).')'; + LEFT JOIN `co_iva` AS iva_anagrafica ON `iva_anagrafica`.`id` = (SELECT `idiva_vendite` FROM `an_anagrafiche` WHERE `idanagrafica` = '.prepare($superselect['idanagrafica']).') + LEFT JOIN `co_iva_lang` AS iva_anagrafica_lang on (`iva_anagrafica`.`id` = `iva_anagrafica_lang`.`id_record` AND `iva_anagrafica_lang`.`id_lang` = '.prepare(setting('Lingua')).')'; } if ($idagente) { diff --git a/modules/automezzi/row-list-articoli.php b/modules/automezzi/row-list-articoli.php index 946c4b702..5f72a9e3d 100644 --- a/modules/automezzi/row-list-articoli.php +++ b/modules/automezzi/row-list-articoli.php @@ -3,7 +3,26 @@ include_once __DIR__.'/../../core.php'; // Elenco articoli caricati sull'automezzo -$rs2 = $dbo->fetchArray('SELECT mg_movimenti.idsede AS id, mg_articoli.codice AS codice, idarticolo, SUM(mg_movimenti.qta) AS qta_automezzo, mg_articoli.qta AS qta_magazzino, mg_articoli.descrizione, mg_articoli.prezzo_vendita, (SELECT percentuale FROM co_iva WHERE id=mg_articoli.idiva_vendita) AS prciva_vendita FROM mg_movimenti INNER JOIN mg_articoli ON mg_movimenti.idarticolo=mg_articoli.id WHERE mg_movimenti.idsede='.prepare($id_record).' GROUP BY idarticolo HAVING qta_automezzo>0 ORDER BY mg_articoli.descrizione'); +$rs2 = $dbo->fetchArray('SELECT + `mg_movimenti`.`idsede` AS id, + `mg_articoli`.`codice` AS codice, + `idarticolo`, + SUM(`mg_movimenti`.`qta`) AS qta_automezzo, + `mg_articoli`.`qta` AS qta_magazzino, + `mg_articoli`.`descrizione`, + `mg_articoli`.`prezzo_vendita`, + (SELECT `percentuale` FROM `co_iva` LEFT JOIN `co_iva_lang` ON ( `co_iva`.`id` = `co_iva_lang`.`id_record` AND `co_iva_lang`.`id_lang` = "'.prepare(setting('Lingua')).'") WHERE `co_iva`.`id`=`mg_articoli`.`idiva_vendita`) AS prciva_vendita +FROM + `mg_movimenti` + INNER JOIN `mg_articoli` ON `mg_movimenti`.`idarticolo`=`mg_articoli`.`id` +WHERE + `mg_movimenti`.`idsede`='.prepare($id_record).' +GROUP BY + `idarticolo` +HAVING + `qta_automezzo`>0 +ORDER BY + `mg_articoli`.`descrizione`'); if (!empty($rs2)) { echo ' diff --git a/modules/ddt/modutil.php b/modules/ddt/modutil.php index e50dbd780..5c2ccba5e 100644 --- a/modules/ddt/modutil.php +++ b/modules/ddt/modutil.php @@ -20,6 +20,7 @@ include_once __DIR__.'/../../core.php'; use Modules\DDT\DDT; +use Modules\IVA\Aliquota; use Util\Generator; /* @@ -163,7 +164,7 @@ if (!function_exists('ricalcola_costiagg_ddt')) { $rivalsainps = $totale_imponibile / 100 * $rs[0]['percentuale']; // Leggo l'iva predefinita per calcolare l'iva aggiuntiva sulla rivalsa inps - $qi = "SELECT percentuale FROM co_iva WHERE id='".setting('Iva predefinita')."'"; + $qi = Aliquota::find(setting('Iva predefinita'))->percentuale; $rsi = $dbo->fetchArray($qi); $iva_rivalsainps = $rivalsainps / 100 * $rsi[0]['percentuale']; diff --git a/modules/fatture/actions.php b/modules/fatture/actions.php index 47467a0c0..9b1ad590a 100755 --- a/modules/fatture/actions.php +++ b/modules/fatture/actions.php @@ -885,16 +885,16 @@ switch ($op) { $iva = Aliquota::find(setting('Iva predefinita')); $imponibile = $database->table('co_righe_documenti') - ->join('co_iva', 'co_iva.id', '=', 'co_righe_documenti.idiva') - ->where('co_righe_documenti.iddocumento', $fattura->id) - ->whereIn('co_iva.codice_natura_fe', ['N2', 'N2.1', 'N2.2', 'N3', 'N3.1', 'N3.2', 'N3.3', 'N3.4', 'N3.5', 'N3.6', 'N6', 'N6.1', 'N6.2', 'N6.3', 'N6.4', 'N6.5', 'N6.6', 'N6.7', 'N6.8', 'N6.9']) - ->sum('subtotale'); + ->join('`co_iva`', '`co_iva`.`id`', '=', '`co_righe_documenti`.`idiva`') + ->where('`co_righe_documenti`.`iddocumento`', $fattura->id) + ->whereIn('`co_iva`.`codice_natura_fe`', ['N2', 'N2.1', 'N2.2', 'N3', 'N3.1', 'N3.2', 'N3.3', 'N3.4', 'N3.5', 'N3.6', 'N6', 'N6.1', 'N6.2', 'N6.3', 'N6.4', 'N6.5', 'N6.6', 'N6.7', 'N6.8', 'N6.9']) + ->sum('`subtotale`'); $sconto = $database->table('co_righe_documenti') - ->join('co_iva', 'co_iva.id', '=', 'co_righe_documenti.idiva') - ->where('co_righe_documenti.iddocumento', $fattura->id) - ->whereIn('co_iva.codice_natura_fe', ['N2', 'N2.1', 'N2.2', 'N3', 'N3.1', 'N3.2', 'N3.3', 'N3.4', 'N3.5', 'N3.6', 'N6', 'N6.1', 'N6.2', 'N6.3', 'N6.4', 'N6.5', 'N6.6', 'N6.7', 'N6.8', 'N6.9']) - ->sum('sconto'); + ->join('`co_iva`', '`co_iva`.`id`', '=', '`co_righe_documenti`.`idiva`') + ->where('`co_righe_documenti`.`iddocumento`', $fattura->id) + ->whereIn('`co_iva`.`codice_natura_fe`', ['N2', 'N2.1', 'N2.2', 'N3', 'N3.1', 'N3.2', 'N3.3', 'N3.4', 'N3.5', 'N3.6', 'N6', 'N6.1', 'N6.2', 'N6.3', 'N6.4', 'N6.5', 'N6.6', 'N6.7', 'N6.8', 'N6.9']) + ->sum('`sconto`'); $totale_imponibile = setting('Utilizza prezzi di vendita comprensivi di IVA') ? ($imponibile - $sconto) + (($imponibile - $sconto) * $iva->percentuale / 100) : ($imponibile - $sconto); $totale_imponibile = $fattura->tipo->reversed == 1 ? -$totale_imponibile : $totale_imponibile; @@ -916,7 +916,7 @@ switch ($op) { // Aggiunta tipologia cliente se necessario if (!$anagrafica->isTipo('Cliente')) { - $tipo_cliente = (new TipoAnagrafica)->getByName('Cliente')->id_record; + $tipo_cliente = (new TipoAnagrafica())->getByName('Cliente')->id_record; $tipi = $anagrafica->tipi->pluck('id')->toArray(); $tipi[] = $tipo_cliente; @@ -1044,7 +1044,7 @@ switch ($op) { if (in_array($idtipodocumento, $tipologie)) { // Aggiunta tipologia cliente se necessario if (!$azienda->isTipo('Cliente')) { - $tipo_cliente = (new TipoAnagrafica)->getByName('Cliente')->id_record; + $tipo_cliente = (new TipoAnagrafica())->getByName('Cliente')->id_record; $tipi = $azienda->tipi->pluck('id')->toArray(); $tipi[] = $tipo_cliente; diff --git a/modules/fatture/edit.php b/modules/fatture/edit.php index 9068a7c63..0d72537c6 100755 --- a/modules/fatture/edit.php +++ b/modules/fatture/edit.php @@ -706,7 +706,7 @@ echo ' if ($dir == 'entrata' && !empty($fattura->dichiarazione)) { $ive_accettate = $dbo->table('co_iva')->where('codice_natura_fe', 'N3.5')->get(); foreach ($ive_accettate as $iva_accettata) { - $descrizione_iva_accettata .= '
  • '.$iva_accettata->descrizione.'
  • '; + $descrizione_iva_accettata .= '
  • '.Aliquota::find($iva_accettata->id)->name.'
  • '; } if ($fattura->stato->descrizione == 'Bozza') { diff --git a/modules/fatture/modutil.php b/modules/fatture/modutil.php index d287d4e38..bc93536d7 100755 --- a/modules/fatture/modutil.php +++ b/modules/fatture/modutil.php @@ -18,6 +18,7 @@ */ use Modules\Fatture\Fattura; +use Modules\IVA\Aliquota; use Util\Generator; /* @@ -209,21 +210,21 @@ if (!function_exists('aggiungi_movimento')) { // Calcolo l'iva della rivalsa inps $iva_rivalsainps = 0; - $rsr = $dbo->fetchArray('SELECT idiva, rivalsainps FROM co_righe_documenti WHERE iddocumento='.prepare($iddocumento)); + $rsr = $dbo->fetchArray('SELECT `idiva`, `rivalsainps` FROM `co_righe_documenti` WHERE `iddocumento`='.prepare($iddocumento)); for ($r = 0; $r < sizeof($rsr); ++$r) { - $qi = 'SELECT percentuale FROM co_iva WHERE id='.prepare($rsr[$r]['idiva']); + $qi = Aliquota::find(prepare($rsr[$r]['idiva']))->percentuale; $rsi = $dbo->fetchArray($qi); $iva_rivalsainps += $rsr[$r]['rivalsainps'] / 100 * $rsi[0]['percentuale']; } // Lettura iva indetraibile fattura - $query = 'SELECT SUM(iva_indetraibile) AS iva_indetraibile FROM co_righe_documenti GROUP BY iddocumento HAVING iddocumento='.prepare($iddocumento); + $query = 'SELECT SUM(`iva_indetraibile`) AS iva_indetraibile FROM `co_righe_documenti` GROUP BY `iddocumento` HAVING `iddocumento`='.prepare($iddocumento); $rs = $dbo->fetchArray($query); $iva_indetraibile_fattura = $is_nota ? -$rs[0]['iva_indetraibile'] : $rs[0]['iva_indetraibile']; // Lettura iva delle righe in fattura - $query = 'SELECT iva FROM co_righe_documenti WHERE iddocumento='.prepare($iddocumento); + $query = 'SELECT `iva` FROM `co_righe_documenti` WHERE `iddocumento`='.prepare($iddocumento); $rs = $dbo->fetchArray($query); $iva_fattura = sum(array_column($rs, 'iva'), null) + $iva_rivalsainps - $iva_indetraibile_fattura; $iva_fattura = $is_nota ? -$iva_fattura : $iva_fattura; diff --git a/modules/interventi/modutil.php b/modules/interventi/modutil.php index 7bb0d2fe0..9821e3eb4 100755 --- a/modules/interventi/modutil.php +++ b/modules/interventi/modutil.php @@ -29,6 +29,7 @@ use Modules\Fatture\Fattura; use Modules\Interventi\Components\Riga as RigaIntervento; use Modules\Interventi\Components\Sessione; use Modules\Interventi\Intervento; +use Modules\IVA\Aliquota; use Util\Generator; use Util\Ini; @@ -213,7 +214,7 @@ if (!function_exists('aggiungi_intervento_in_fattura')) { $riga->prezzo_unitario = $sessione->prezzo_orario; $riga->costo_unitario = $sessione->prezzo_ore_unitario_tecnico; // Calcolo lo sconto unitario della sessione in base all'impostazione sui prezzi ivati - $iva = $dbo->table('co_iva')->where('id', $id_iva)->first(); + $iva = Aliquota::find($sessione->id_iva); if ($sessione->tipo_sconto == 'UNT' && setting('Utilizza prezzi di vendita comprensivi di IVA')) { $sconto_unitario = $sessione->sconto_unitario + (($sessione->sconto_unitario * $iva->percentuale) / 100); } else { diff --git a/modules/interventi/src/Import/CSV.php b/modules/interventi/src/Import/CSV.php index 69930c525..b13c70b03 100644 --- a/modules/interventi/src/Import/CSV.php +++ b/modules/interventi/src/Import/CSV.php @@ -175,10 +175,10 @@ class CSV extends CSVImporter // Verifica il tecnico e inserisce la sessione $anagrafica_t = Anagrafica::where('ragione_sociale', $record['tecnico'])->first(); $tipo = $database->fetchOne('SELECT `idtipoanagrafica` FROM `an_tipianagrafiche_anagrafiche` WHERE `idanagrafica` = '.prepare($anagrafica_t['idanagrafica'])); - $tecnico = (new TipoAnagrafica)->getByName('Tecnico')->id_record; + $tecnico = (new TipoAnagrafica())->getByName('Tecnico')->id_record; if ($tipo = $tecnico) { - $anagrafica_t['tipo'] = Tipoanagrafica::find($tecnico); + $anagrafica_t['tipo'] = TipoAnagrafica::find($tecnico); } if (!empty($record['data']) && !empty($record['ora_inizio']) && !empty($record['tecnico'])) { diff --git a/modules/iva/actions.php b/modules/iva/actions.php index aec2ae7ab..fadf61a10 100755 --- a/modules/iva/actions.php +++ b/modules/iva/actions.php @@ -27,12 +27,11 @@ switch (filter('op')) { $esente = post('esente'); $percentuale = empty($esente) ? post('percentuale') : 0; - if ($dbo->fetchNum('SELECT * FROM `co_iva` WHERE (`descrizione` = '.prepare($descrizione).' AND `codice` = '.prepare($codice).') AND `id` != '.prepare($id_record)) == 0) { + if ($dbo->fetchNum('SELECT * FROM `co_iva` LEFT JOIN `co_iva_lang` ON (`co_iva`.`id` = `co_iva_lang`.`id_record` AND `co_iva_lang`.`id_lang` = '.prepare(setting('Lingua')).') WHERE (`name` = '.prepare($descrizione).' AND `codice` = '.prepare($codice).') AND `co_iva`.`id` != '.prepare($id_record)) == 0) { $codice_natura = post('codice_natura_fe') ?: null; $esigibilita = post('esigibilita'); $dbo->update('co_iva', [ - 'descrizione' => $descrizione, 'esente' => $esente, 'percentuale' => $percentuale, 'indetraibile' => post('indetraibile'), @@ -42,6 +41,10 @@ switch (filter('op')) { 'esigibilita' => $esigibilita, ], ['id' => $id_record]); + $dbo->update('co_iva_lang', [ + 'name' => $descrizione, + ], ['id_record' => $id_record, 'id_lang' => setting('Lingua')]); + // Messaggio di avvertenza if ((stripos('N6', (string) $codice_natura) === 0) && $esigibilita == 'S') { flash()->warning(tr('Combinazione di natura IVA _TYPE_ ed esigibilità non compatibile', [ @@ -66,9 +69,8 @@ switch (filter('op')) { $esigibilita = post('esigibilita'); $indetraibile = post('indetraibile'); - if ($dbo->fetchNum('SELECT * FROM `co_iva` WHERE `descrizione` = '.prepare($descrizione).' AND `codice` = '.prepare($codice)) == 0) { + if ($dbo->fetchNum('SELECT * FROM `co_iva` LEFT JOIN `co_iva_lang` ON (`co_iva`.`id` = `co_iva_lang`.`id_record` AND `co_iva_lang`.`id_lang` = '.prepare(setting('Lingua')).') WHERE `name` = '.prepare($descrizione).' AND `codice` = '.prepare($codice)) == 0) { $dbo->insert('co_iva', [ - 'descrizione' => $descrizione, 'esente' => $esente, 'codice' => $codice, 'codice_natura_fe' => $codice_natura, @@ -78,6 +80,12 @@ switch (filter('op')) { ]); $id_record = $dbo->lastInsertedID(); + $dbo->insert('co_iva_lang', [ + 'id_record' => $id_record, + 'name' => $descrizione, + 'id_lang' => setting('Lingua'), + ]); + flash()->info(tr('Aggiunta nuova tipologia di _TYPE_', [ '_TYPE_' => 'IVA', ])); diff --git a/modules/iva/ajax/select.php b/modules/iva/ajax/select.php index 6760ccc38..1059cf02a 100755 --- a/modules/iva/ajax/select.php +++ b/modules/iva/ajax/select.php @@ -25,24 +25,24 @@ switch ($resource) { * - split_payment */ case 'iva': - $query = 'SELECT id, IF( codice_natura_fe IS NULL, IF(codice IS NULL, descrizione, CONCAT(codice, " - ", descrizione)), CONCAT( IF(codice IS NULL, descrizione, CONCAT(codice, " - ", descrizione)), " (", codice_natura_fe, ")" ) ) AS descrizione, percentuale FROM co_iva |where| ORDER BY descrizione ASC'; + $query = 'SELECT `co_iva`.`id`, IF( `codice_natura_fe` IS NULL, IF(`codice` IS NULL, `name`, CONCAT(`codice`, " - ", `name`)), CONCAT( IF(`codice` IS NULL, `name`, CONCAT(`codice`, " - ", `name`)), " (", `codice_natura_fe`, ")" ) ) AS descrizione, `percentuale` FROM co_iva LEFT JOIN `co_iva_lang` ON (`co_iva`.`id` = `co_iva_lang`.`id_record` AND `co_iva_lang`.`id_lang` = '.prepare(setting('Lingua')).') |where| ORDER BY `descrizione` ASC'; foreach ($elements as $element) { - $filter[] = 'id='.prepare($element); + $filter[] = '`co_iva`.`id`='.prepare($element); } if (!empty($search)) { - $search_fields[] = 'descrizione LIKE '.prepare('%'.$search.'%'); - $search_fields[] = 'codice LIKE '.prepare('%'.$search.'%'); - $search_fields[] = 'codice_natura_fe LIKE '.prepare('%'.$search.'%'); + $search_fields[] = '`descrizione` LIKE '.prepare('%'.$search.'%'); + $search_fields[] = '`codice` LIKE '.prepare('%'.$search.'%'); + $search_fields[] = '`codice_natura_fe` LIKE '.prepare('%'.$search.'%'); } if (empty($filter)) { - $where[] = 'deleted_at IS NULL'; + $where[] = '`deleted_at` IS NULL'; // se sto valorizzando un documento con lo split payment impedisco la selezione delle aliquote iva con natura N6.X (reverse charge) if (isset($superselect['split_payment']) and !empty($superselect['split_payment'])) { - $where[] = '(codice_natura_fe IS NULL OR codice_natura_fe NOT LIKE "N6%")'; + $where[] = '(`codice_natura_fe` IS NULL OR `codice_natura_fe` NOT LIKE "N6%")'; } } diff --git a/modules/iva/bulk.php b/modules/iva/bulk.php index 961340885..c5afd4c72 100755 --- a/modules/iva/bulk.php +++ b/modules/iva/bulk.php @@ -21,7 +21,7 @@ include_once __DIR__.'/../../core.php'; switch (post('op')) { case 'delete-bulk': - $count_iva = $dbo->fetchNum('SELECT id FROM `co_iva` WHERE deleted_at IS NOT NULL'); + $count_iva = $dbo->fetchNum('SELECT `id` FROM `co_iva` WHERE `deleted_at` IS NOT NULL'); foreach ($id_records as $id) { $res = $dbo->fetchNum('SELECT `co_righe_documenti`.`id` FROM `co_righe_documenti` WHERE `co_righe_documenti`.`idiva`='.prepare($id). ' UNION SELECT `co_righe_preventivi`.`id` FROM `co_righe_preventivi` WHERE `co_righe_preventivi`.`idiva` = '.prepare($id). @@ -32,10 +32,10 @@ switch (post('op')) { ' UNION SELECT `an_anagrafiche`.`idanagrafica` AS `id` FROM `an_anagrafiche` WHERE `an_anagrafiche`.`idiva_vendite` = '.prepare($id).' OR `an_anagrafiche`.`idiva_acquisti` = '.prepare($id)); if (empty($res)) { - $dbo->query('UPDATE `co_iva` SET deleted_at = NOW() WHERE id = '.prepare($id).Modules::getAdditionalsQuery($id_module)); + $dbo->query('UPDATE `co_iva` SET `deleted_at` = NOW() WHERE `id` = '.prepare($id).Modules::getAdditionalsQuery($id_module)); } } - $count_iva = $dbo->fetchNum('SELECT id FROM `co_iva` WHERE deleted_at IS NOT NULL') - $count_iva; + $count_iva = $dbo->fetchNum('SELECT `id` FROM `co_iva` WHERE `deleted_at` IS NOT NULL') - $count_iva; if ($count_iva > 0) { $msg = tr('_NUM_ tipologi_A_ iva eliminat_A_.', [ diff --git a/modules/iva/edit.php b/modules/iva/edit.php index aaa71f117..b2cd18ed1 100755 --- a/modules/iva/edit.php +++ b/modules/iva/edit.php @@ -64,7 +64,7 @@ if ($res) {
    - {[ "type": "text", "label": "", "name": "descrizione", "required": 1, "value": "$descrizione$" ]} + {[ "type": "text", "label": "", "name": "descrizione", "required": 1, "value": "$name$" ]}
    diff --git a/modules/iva/init.php b/modules/iva/init.php index e1b52a7e3..eb71ae76c 100755 --- a/modules/iva/init.php +++ b/modules/iva/init.php @@ -20,5 +20,5 @@ include_once __DIR__.'/../../core.php'; if (isset($id_record)) { - $record = $dbo->fetchOne('SELECT * FROM `co_iva` WHERE id='.prepare($id_record)); + $record = $dbo->fetchOne('SELECT * FROM `co_iva` LEFT JOIN `co_iva_lang` ON (`co_iva`.`id` = `co_iva_lang`.`id_record` AND `co_iva_lang`.`id_lang` = '.prepare(setting('Lingua')).') WHERE `co_iva`.`id`='.prepare($id_record)); } diff --git a/modules/iva/src/Aliquota.php b/modules/iva/src/Aliquota.php index 67e2afcd8..962ae5034 100755 --- a/modules/iva/src/Aliquota.php +++ b/modules/iva/src/Aliquota.php @@ -27,4 +27,34 @@ class Aliquota extends Model use SimpleModelTrait; protected $table = 'co_iva'; + + /** + * Ritorna l'attributo name dell'aliquota IVA. + * + * @return string + */ + public function getNameAttribute() + { + return database()->table($this->table.'_lang') + ->select('name') + ->where('id_record', '=', $this->id) + ->where('id_lang', '=', setting('Lingua')) + ->first()->name; + } + + /** + * Ritorna l'id dell'aliquota IVA. + * + * @param string $name il nome da ricercare + * + * @return \Illuminate\Support\Collection + */ + public function getByName($name) + { + return database()->table($this->table.'_lang') + ->select('id_record') + ->where('name', '=', $name) + ->where('id_lang', '=', setting('Lingua')) + ->first(); + } } diff --git a/modules/ordini/modutil.php b/modules/ordini/modutil.php index 3833e9253..ff34b56b0 100755 --- a/modules/ordini/modutil.php +++ b/modules/ordini/modutil.php @@ -20,6 +20,7 @@ include_once __DIR__.'/../../core.php'; use Modules\Interventi\Intervento; +use Modules\IVA\Aliquota; use Modules\Ordini\Ordine; /* @@ -199,7 +200,7 @@ if (!function_exists('ricalcola_costiagg_ordine')) { } // Leggo l'iva predefinita per calcolare l'iva aggiuntiva sulla rivalsa inps - $qi = 'SELECT percentuale FROM co_iva WHERE id='.prepare(setting('Iva predefinita')); + $qi = Aliquota::find(prepare(setting('Iva predefinita')))->percentuale; $rsi = $dbo->fetchArray($qi); $iva_rivalsainps = $rivalsainps / 100 * $rsi[0]['percentuale']; diff --git a/modules/tipi_intervento/ajax_righe.php b/modules/tipi_intervento/ajax_righe.php index b78fe84b2..e548fe151 100755 --- a/modules/tipi_intervento/ajax_righe.php +++ b/modules/tipi_intervento/ajax_righe.php @@ -21,7 +21,7 @@ echo ' '; foreach ($righe as $riga) { - $rs = $dbo->fetchArray('SELECT percentuale FROM co_iva WHERE id='.$riga['idiva']); + $rs = $dbo->fetchArray('SELECT `percentuale` FROM `co_iva` WHERE `id`='.$riga['idiva']); $iva = ($riga['subtotale'] * $rs[0]['percentuale']) / 100; echo ' diff --git a/plugins/exportFE/src/FatturaElettronica.php b/plugins/exportFE/src/FatturaElettronica.php index 92e936f3c..98e6fcd31 100755 --- a/plugins/exportFE/src/FatturaElettronica.php +++ b/plugins/exportFE/src/FatturaElettronica.php @@ -439,7 +439,7 @@ class FatturaElettronica } // Natura obbligatoria per iva con esenzione - $iva = $database->fetchArray('SELECT * FROM `co_iva` WHERE `id` IN (SELECT idiva FROM co_righe_documenti WHERE iddocumento = '.prepare($fattura->id).') AND esente = 1'); + $iva = $database->fetchArray('SELECT * FROM `co_iva` LEFT JOIN `co_iva_lang` ON (`co_iva`.`id` = `co_iva_lang`.`id_record` AND `co_iva_lang`.`id_lang` = '.prepare(setting('Lingua')).') WHERE `co_iva`.`id` IN (SELECT `idiva` FROM `co_righe_documenti` WHERE `iddocumento` = '.prepare($fattura->id).') AND `esente` = 1'); $fields = [ 'codice_natura_fe' => 'Natura IVA', ]; @@ -973,7 +973,7 @@ class FatturaElettronica // Cassa Previdenziale (Rivalsa) (2.1.1.7) if (!empty($id_rivalsainps)) { $iva = database()->fetchOne('SELECT `percentuale`, `codice_natura_fe` FROM `co_iva` WHERE `id` = '.prepare($aliquota_iva_rivalsainps)); - $percentuale = database()->fetchOne('SELECT percentuale FROM co_rivalse WHERE id = '.prepare($id_rivalsainps))['percentuale']; + $percentuale = database()->fetchOne('SELECT `percentuale` FROM `co_rivalse` WHERE `id` = '.prepare($id_rivalsainps))['percentuale']; $dati_cassa = [ 'TipoCassa' => setting('Tipo Cassa Previdenziale'), diff --git a/plugins/importFE/generate.php b/plugins/importFE/generate.php index 96b9f0890..c0e5cd0ce 100755 --- a/plugins/importFE/generate.php +++ b/plugins/importFE/generate.php @@ -399,11 +399,11 @@ if (!empty($righe)) { } foreach ($righe as $key => $riga) { - $query = "SELECT id, IF(codice IS NULL, descrizione, CONCAT(codice, ' - ', descrizione)) AS descrizione FROM co_iva WHERE deleted_at IS NULL AND percentuale = ".prepare($riga['AliquotaIVA']); + $query = "SELECT `co_iva`.`id`, IF(`codice` IS NULL, `name`, CONCAT(`codice`, ' - ', `name`)) AS descrizione FROM `co_iva` LEFT JOIN `co_iva_lang` ON (`co_iva`.`id` = `co_iva_lang`.`id_record` AND `co_iva_lang`.`id_lang` = ".prepare(setting('Lingua')).') WHERE `deleted_at` IS NULL AND `percentuale` = '.prepare($riga['AliquotaIVA']); $start_query = $query; if (!empty($riga['Natura'])) { - $query .= ' AND codice_natura_fe = '.prepare($riga['Natura']); + $query .= ' AND `codice_natura_fe` = '.prepare($riga['Natura']); // Fallback per natura iva mancante if (empty($dbo->fetchArray($query))) { @@ -411,7 +411,7 @@ if (!empty($righe)) { } } - $query .= ' ORDER BY descrizione ASC'; + $query .= ' ORDER BY `descrizione` ASC'; // Visualizzazione codici articoli $codici = $riga['CodiceArticolo'] ?: []; diff --git a/src/API/App/v1/AliquoteIva.php b/src/API/App/v1/AliquoteIva.php index b3d2c761e..f43a1fc7a 100644 --- a/src/API/App/v1/AliquoteIva.php +++ b/src/API/App/v1/AliquoteIva.php @@ -30,11 +30,11 @@ class AliquoteIva extends AppResource public function getModifiedRecords($last_sync_at) { - $query = 'SELECT co_iva.id, co_iva.updated_at FROM co_iva WHERE deleted_at IS NULL'; + $query = 'SELECT `co_iva`.`id`, `co_iva`.`updated_at` FROM `co_iva` WHERE `deleted_at` IS NULL'; // Filtro per data if ($last_sync_at) { - $query .= ' AND co_iva.updated_at > '.prepare($last_sync_at); + $query .= ' AND `co_iva`.`updated_at` > '.prepare($last_sync_at); } $records = database()->fetchArray($query); @@ -45,11 +45,14 @@ class AliquoteIva extends AppResource public function retrieveRecord($id) { // Gestione della visualizzazione dei dettagli del record - $query = 'SELECT co_iva.id, - co_iva.descrizione, - co_iva.percentuale - FROM co_iva - WHERE co_iva.id = '.prepare($id); + $query = 'SELECT `co_iva`.`id`, + `co_iva_lang`.`name` as descrizione, + `co_iva`.`percentuale` + FROM + `co_iva` + LEFT JOIN `co_iva_lang` ON (`co_iva`.`id` = `co_iva_lang`.`id_record` AND `co_iva_lang`.`id_lang` = '.prepare(setting('Lingua')).') + WHERE + `co_iva`.`id` = '.prepare($id); $record = database()->fetchOne($query); diff --git a/templates/automezzi_carico/init.php b/templates/automezzi_carico/init.php index 2491209d5..6a1363583 100644 --- a/templates/automezzi_carico/init.php +++ b/templates/automezzi_carico/init.php @@ -28,33 +28,34 @@ $endTM = date('Y-m-d', $data_carico).' 23:59:59'; $query = " SELECT - mg_movimenti.data, - an_sedi.targa, - an_sedi.nome, - mg_articoli.codice, - mg_articoli.prezzo_vendita, - co_iva.percentuale AS 'iva', - (SELECT mg_categorie.nome FROM mg_categorie WHERE mg_categorie.id=mg_articoli.id_sottocategoria) AS subcategoria, - (SELECT mg_articoli.descrizione FROM mg_articoli WHERE mg_articoli.id=mg_movimenti.idarticolo) AS 'descrizione', - IF( mg_movimenti.movimento LIKE '%Scarico%', mg_movimenti.qta*(-1), mg_movimenti.qta) AS qta, - mg_movimenti.idutente, - zz_users.username, - mg_articoli.um, - zz_groups.nome as 'gruppo' + `mg_movimenti`.`data`, + `an_sedi`.`targa`, + `an_sedi`.`nome`, + `mg_articoli`.`codice`, + `mg_articoli`.`prezzo_vendita`, + `co_iva`.`percentuale` AS 'iva', + (SELECT `mg_categorie`.`nome` FROM `mg_categorie` WHERE `mg_categorie`.`id`=`mg_articoli`.`id_sottocategoria`) AS subcategoria, + (SELECT `mg_articoli`.`descrizione` FROM `mg_articoli` WHERE `mg_articoli`.`id`=`mg_movimenti`.`idarticolo`) AS 'descrizione', + IF( `mg_movimenti`.`movimento` LIKE '%Scarico%', `mg_movimenti`.`qta`*(-1), `mg_movimenti`.`qta`) AS qta, + `mg_movimenti`.`idutente`, + `zz_users`.`username`, + `mg_articoli`.`um`, + `zz_groups`.`nome` as 'gruppo' FROM - mg_movimenti - INNER JOIN mg_articoli ON mg_movimenti.idarticolo=mg_articoli.id - INNER JOIN co_iva ON mg_articoli.idiva_vendita = co_iva.id - INNER JOIN zz_users ON mg_movimenti.idutente=zz_users.id - INNER JOIN zz_groups ON zz_users.idgruppo=zz_groups.id - INNER JOIN an_sedi ON mg_movimenti.idsede=an_sedi.id + `mg_movimenti` + INNER JOIN `mg_articoli` ON `mg_movimenti`.`idarticolo`=`mg_articoli`.`id` + INNER JOIN `co_iva` ON `mg_articoli`.`idiva_vendita` = `co_iva`.`id` + LEFT JOIN `co_iva_lang` ON (`co_iva`.`id` = `co_iva_lang`.`id_record` AND `co_iva_lang`.`id_lang` = ".prepare(setting('Lingua')).') + INNER JOIN `zz_users` ON `mg_movimenti`.`idutente`=`zz_users`.`id` + INNER JOIN `zz_groups` ON `zz_users`.`idgruppo`=`zz_groups`.`id` + INNER JOIN `an_sedi` ON `mg_movimenti`.`idsede`=`an_sedi`.`id` WHERE - (mg_movimenti.idsede > 0) AND (mg_movimenti.idintervento IS NULL) AND - ((mg_movimenti.data BETWEEN ".prepare($startTM).' AND '.prepare($endTM).") AND (zz_groups.nome IN ('Titolari', 'Amministratori')))"; + (`mg_movimenti`.`idsede` > 0) AND (`mg_movimenti`.`idintervento` IS NULL) AND + ((`mg_movimenti`.`data` BETWEEN '.prepare($startTM).' AND '.prepare($endTM).") AND (`zz_groups`.`nome` IN ('Titolari', 'Amministratori')))"; -$query .= ' AND (an_sedi.targa LIKE '.prepare('%'.$search_targa.'%').') AND (an_sedi.nome LIKE '.prepare('%'.$search_nome.'%').') '; -$query .= ' ORDER BY an_sedi.targa, mg_articoli.descrizione'; +$query .= ' AND (`an_sedi`.`targa` LIKE '.prepare('%'.$search_targa.'%').') AND (`an_sedi`.`nome` LIKE '.prepare('%'.$search_nome.'%').') '; +$query .= ' ORDER BY `an_sedi`.`targa`, `mg_articoli`.`descrizione`'; $rs = $dbo->fetchArray($query); $totrows = sizeof($rs); -$azienda = $dbo->fetchOne('SELECT * FROM an_anagrafiche WHERE idanagrafica='.prepare(setting('Azienda predefinita'))); +$azienda = $dbo->fetchOne('SELECT * FROM `an_anagrafiche` WHERE `idanagrafica`='.prepare(setting('Azienda predefinita'))); diff --git a/templates/fatturato/init.php b/templates/fatturato/init.php index 4a4b0f584..f404331b4 100755 --- a/templates/fatturato/init.php +++ b/templates/fatturato/init.php @@ -27,18 +27,19 @@ $date_end = $_SESSION['period_end']; $raggruppamenti = $dbo->fetchArray(' SELECT - data_competenza, - DATE_FORMAT(data_competenza, \'%m-%Y\') AS periodo, - SUM((subtotale-sconto+co_righe_documenti.rivalsainps) *percentuale/100 *(100-indetraibile)/100 *(IF(co_tipidocumento.reversed = 0, 1,-1 ))) AS iva, - SUM((co_righe_documenti.subtotale - co_righe_documenti.sconto + co_righe_documenti.rivalsainps) *(IF(co_tipidocumento.reversed = 0,1,-1))) AS imponibile + `data_competenza`, + DATE_FORMAT(`data_competenza`, \'%m-%Y\') AS periodo, + SUM((`subtotale`-`sconto`+`co_righe_documenti`.`rivalsainps`) *`percentuale`/100 *(100-`indetraibile`)/100 *(IF(`co_tipidocumento`.`reversed` = 0, 1,-1 ))) AS iva, + SUM((`co_righe_documenti`.`subtotale` - `co_righe_documenti`.`sconto` + `co_righe_documenti`.`rivalsainps`) *(IF(`co_tipidocumento`.`reversed` = 0,1,-1))) AS imponibile FROM - co_iva - INNER JOIN co_righe_documenti ON co_righe_documenti.idiva = co_iva.id - INNER JOIN co_documenti ON co_documenti.id = co_righe_documenti.iddocumento - INNER JOIN co_tipidocumento ON co_tipidocumento.id = co_documenti.idtipodocumento + `co_iva` + LEFT JOIN `co_iva_lang` ON (`co_iva`.`id` = `co_iva_lang`.`id_record` AND `co_iva_lang`.`id_lang` = '.prepare(setting('Lingua')).') + INNER JOIN `co_righe_documenti` ON `co_righe_documenti`.`idiva` = `co_iva`.`id` + INNER JOIN `co_documenti` ON `co_documenti`.`id` = `co_righe_documenti`.`iddocumento` + INNER JOIN `co_tipidocumento` ON `co_tipidocumento`.`id` = `co_documenti`.`idtipodocumento` WHERE - co_tipidocumento.dir = '.prepare($dir).' AND co_righe_documenti.is_descrizione = 0 AND idstatodocumento NOT IN(SELECT id FROM co_statidocumento WHERE descrizione = "Bozza" OR descrizione = "Annullata") AND co_documenti.data_competenza >= '.prepare($date_start).' AND co_documenti.data_competenza <= '.prepare($date_end).' + `co_tipidocumento`.`dir` = '.prepare($dir).' AND `co_righe_documenti`.`is_descrizione` = 0 AND `idstatodocumento` NOT IN(SELECT `id` FROM `co_statidocumento` WHERE `descrizione` = "Bozza" OR `descrizione` = "Annullata") AND `co_documenti`.`data_competenza` >= '.prepare($date_start).' AND `co_documenti`.`data_competenza` <= '.prepare($date_end).' GROUP BY - periodo + `periodo` ORDER BY - periodo ASC'); + `periodo` ASC'); diff --git a/templates/fatture/body.php b/templates/fatture/body.php index adb50467f..683b61458 100755 --- a/templates/fatture/body.php +++ b/templates/fatture/body.php @@ -220,7 +220,7 @@ echo ' '; // Aggiungo diciture particolari per l'anagrafica cliente -$dicitura = $dbo->fetchOne('SELECT diciturafissafattura AS dicitura FROM an_anagrafiche WHERE idanagrafica = '.prepare($id_cliente)); +$dicitura = $dbo->fetchOne('SELECT `diciturafissafattura` AS dicitura FROM `an_anagrafiche` WHERE `idanagrafica` = '.prepare($id_cliente)); if (!empty($dicitura['dicitura'])) { echo ' @@ -231,7 +231,7 @@ if (!empty($dicitura['dicitura'])) { // Aggiungo diciture per condizioni iva particolari foreach ($v_iva as $key => $value) { - $dicitura = $dbo->fetchOne('SELECT dicitura FROM co_iva WHERE descrizione = '.prepare($key)); + $dicitura = $dbo->fetchOne('SELECT `dicitura` FROM `co_iva` LEFT JOIN `co_iva_lang` ON (`co_iva`.`id` = `co_iva_lang`.`id_record` AND `co_iva_lang`.`id_lang` = '.prepare(setting('Lingua')).') WHERE `name` = '.prepare($key)); if (!empty($dicitura['dicitura'])) { echo ' diff --git a/templates/liquidazione_iva/init.php b/templates/liquidazione_iva/init.php index 8720ab768..c583a54d2 100644 --- a/templates/liquidazione_iva/init.php +++ b/templates/liquidazione_iva/init.php @@ -42,392 +42,404 @@ $maggiorazione = 0; if (!empty($vendita_banco)) { $iva_vendite_esigibile = $dbo->fetchArray(' SELECT - id, - cod_iva, - aliquota, - descrizione, - SUM(iva) AS iva, - SUM(subtotale) AS subtotale + `id`, + `cod_iva`, + `aliquota`, + `descrizione`, + SUM(`iva`) AS iva, + SUM(`subtotale`) AS subtotale FROM ( SELECT - co_documenti.id AS id, - co_iva.codice_natura_fe AS cod_iva, - co_iva.percentuale AS aliquota, - co_iva.descrizione AS descrizione, - SUM((subtotale-sconto+co_righe_documenti.rivalsainps) *percentuale/100 *(100-indetraibile)/100 *(IF(co_tipidocumento.reversed = 0, 1,-1 ))) AS iva, - SUM((co_righe_documenti.subtotale - co_righe_documenti.sconto + co_righe_documenti.rivalsainps) *(IF(co_tipidocumento.reversed = 0,1,-1))) AS subtotale + `co_documenti`.`id` AS id, + `co_iva`.`codice_natura_fe` AS cod_iva, + `co_iva`.`percentuale` AS aliquota, + `co_iva_lang`.`name` AS descrizione, + SUM((`subtotale`-`sconto`+`co_righe_documenti`.`rivalsainps`) *`percentuale`/100 *(100-`indetraibile`)/100 *(IF(`co_tipidocumento`.`reversed` = 0, 1,-1 ))) AS iva, + SUM((`co_righe_documenti`.`subtotale` - `co_righe_documenti`.`sconto` + `co_righe_documenti`.`rivalsainps`) *(IF(`co_tipidocumento`.`reversed` = 0,1,-1))) AS subtotale FROM - co_iva - INNER JOIN co_righe_documenti ON co_righe_documenti.idiva = co_iva.id - INNER JOIN co_documenti ON co_documenti.id = co_righe_documenti.iddocumento - INNER JOIN co_tipidocumento ON co_tipidocumento.id = co_documenti.idtipodocumento + `co_iva` + LEFT JOIN `co_iva_lang` ON (`co_iva`.`id` = `co_iva_lang`.`id_record` AND `co_iva_lang`.`id_lang` = '.prepare(setting('Lingua')).') + INNER JOIN `co_righe_documenti` ON `co_righe_documenti`.`idiva` = `co_iva`.`id` + INNER JOIN `co_documenti` ON `co_documenti`.`id` = `co_righe_documenti`.`iddocumento` + INNER JOIN `co_tipidocumento` ON `co_tipidocumento`.`id` = `co_documenti`.`idtipodocumento` WHERE - co_tipidocumento.dir = "entrata" AND co_righe_documenti.is_descrizione = 0 AND co_documenti.split_payment = 0 AND idstatodocumento NOT IN(SELECT id FROM co_statidocumento WHERE descrizione = "Bozza" OR descrizione = "Annullata") AND co_documenti.data_competenza >= '.prepare($date_start).' AND co_documenti.data_competenza <= '.prepare($date_end).' + `co_tipidocumento`.`dir` = "entrata" AND `co_righe_documenti`.`is_descrizione` = 0 AND `co_documenti`.`split_payment` = 0 AND `idstatodocumento` NOT IN(SELECT `id` FROM `co_statidocumento` WHERE `descrizione` = "Bozza" OR `descrizione` = "Annullata") AND `co_documenti`.`data_competenza` >= '.prepare($date_start).' AND `co_documenti`.`data_competenza` <= '.prepare($date_end).' GROUP BY - cod_iva, aliquota, descrizione, co_documenti.id + `cod_iva`, `aliquota`, `descrizione`, `co_documenti`.`id` UNION SELECT - vb_venditabanco.id AS id, - co_iva.codice_natura_fe AS cod_iva, - co_iva.percentuale AS aliquota, - co_iva.descrizione AS descrizione, - SUM(vb_righe_venditabanco.iva) AS iva, + `vb_venditabanco`.`id` AS id, + `co_iva`.`codice_natura_fe` AS cod_iva, + `co_iva`.`percentuale` AS aliquota, + `co_iva_lang`.`name` AS descrizione, + SUM(`vb_righe_venditabanco`.`iva`) AS iva, SUM( - vb_righe_venditabanco.subtotale - vb_righe_venditabanco.sconto + `vb_righe_venditabanco`.`subtotale` - `vb_righe_venditabanco`.`sconto` ) AS subtotale FROM - co_iva - INNER JOIN vb_righe_venditabanco ON vb_righe_venditabanco.idiva = co_iva.id - INNER JOIN vb_venditabanco ON vb_venditabanco.id = vb_righe_venditabanco.idvendita - INNER JOIN vb_stati_vendita ON vb_venditabanco.idstato = vb_stati_vendita.id + `co_iva` + LEFT JOIN `co_iva_lang` ON (`co_iva`.`id` = `co_iva_lang`.`id_record` AND `co_iva_lang`.`id_lang` = '.prepare(setting('Lingua')).') + INNER JOIN `vb_righe_venditabanco` ON `vb_righe_venditabanco`.`idiva` = `co_iva`.`id` + INNER JOIN `vb_venditabanco` ON `vb_venditabanco`.`id` = `vb_righe_venditabanco`.`idvendita` + INNER JOIN `vb_stati_vendita` ON `vb_venditabanco`.`idstato` = `vb_stati_vendita`.`id` WHERE - vb_venditabanco.data >= '.prepare($date_start).' AND vb_venditabanco.data <= '.prepare($date_end).' AND vb_righe_venditabanco.is_descrizione = 0 AND vb_stati_vendita.descrizione = "Pagato" + `vb_venditabanco`.`data` >= '.prepare($date_start).' AND `vb_venditabanco`.`data` <= '.prepare($date_end).' AND `vb_righe_venditabanco`.`is_descrizione` = 0 AND `vb_stati_vendita`.`descrizione` = "Pagato" GROUP BY - cod_iva, aliquota, descrizione, vb_venditabanco.id + `cod_iva`, `aliquota`, `descrizione`, `vb_venditabanco`.`id` ) AS tabella GROUP BY - cod_iva, - aliquota, - descrizione, - id'); + `cod_iva`, + `aliquota`, + `descrizione`, + `id`'); $iva_vendite = $dbo->fetchArray(' SELECT - id, - cod_iva, - aliquota, - descrizione, - SUM(iva) AS iva, - SUM(subtotale) AS subtotale + `id`, + `cod_iva`, + `aliquota`, + `descrizione`, + SUM(`iva`) AS iva, + SUM(`subtotale`) AS subtotale FROM ( SELECT - co_documenti.id AS id, - co_iva.codice_natura_fe AS cod_iva, - co_iva.percentuale AS aliquota, - co_iva.descrizione AS descrizione, - SUM((subtotale-sconto+co_righe_documenti.rivalsainps) *percentuale/100 *(100-indetraibile)/100 *(IF(co_tipidocumento.reversed = 0, 1,-1 ))) AS iva, - SUM((co_righe_documenti.subtotale - co_righe_documenti.sconto + co_righe_documenti.rivalsainps) *(IF(co_tipidocumento.reversed = 0,1,-1))) AS subtotale + `co_documenti`.`id` AS id, + `co_iva`.`codice_natura_fe` AS cod_iva, + `co_iva`.`percentuale` AS aliquota, + `co_iva_lang`.`name` AS descrizione, + SUM((`subtotale`-`sconto`+`co_righe_documenti`.`rivalsainps`) *`percentuale`/100 *(100-`indetraibile`)/100 *(IF(`co_tipidocumento`.`reversed` = 0, 1,-1 ))) AS iva, + SUM((`co_righe_documenti`.`subtotale` - `co_righe_documenti`.`sconto` + `co_righe_documenti`.`rivalsainps`) *(IF(`co_tipidocumento`.`reversed` = 0,1,-1))) AS subtotale FROM - co_iva - INNER JOIN co_righe_documenti ON co_righe_documenti.idiva = co_iva.id - INNER JOIN co_documenti ON co_documenti.id = co_righe_documenti.iddocumento - INNER JOIN co_tipidocumento ON co_tipidocumento.id = co_documenti.idtipodocumento + `co_iva` + LEFT JOIN `co_iva_lang` ON (`co_iva`.`id` = `co_iva_lang`.`id_record` AND `co_iva_lang`.`id_lang` = '.prepare(setting('Lingua')).') + INNER JOIN `co_righe_documenti` ON `co_righe_documenti`.`idiva` = co_iva.id + INNER JOIN `co_documenti` ON `co_documenti`.`id` = `co_righe_documenti`.`iddocumento` + INNER JOIN `co_tipidocumento` ON `co_tipidocumento`.`id` = `co_documenti`.`idtipodocumento` WHERE - co_tipidocumento.dir = "entrata" AND co_righe_documenti.is_descrizione = 0 AND idstatodocumento NOT IN(SELECT id FROM co_statidocumento WHERE descrizione = "Bozza" OR descrizione = "Annullata") AND co_documenti.data_competenza >= '.prepare($date_start).' AND co_documenti.data_competenza <= '.prepare($date_end).' + `co_tipidocumento`.`dir` = "entrata" AND `co_righe_documenti`.`is_descrizione` = 0 AND `idstatodocumento` NOT IN(SELECT `id` FROM `co_statidocumento` WHERE `descrizione` = "Bozza" OR `descrizione` = "Annullata") AND `co_documenti`.`data_competenza` >= '.prepare($date_start).' AND `co_documenti`.`data_competenza` <= '.prepare($date_end).' GROUP BY - cod_iva, aliquota, descrizione, co_documenti.id + `cod_iva`, `aliquota`, `descrizione`, `co_documenti`.`id` UNION SELECT - vb_venditabanco.id AS id, - co_iva.codice_natura_fe AS cod_iva, - co_iva.percentuale AS aliquota, - co_iva.descrizione AS descrizione, - SUM(vb_righe_venditabanco.iva) AS iva, - SUM( - vb_righe_venditabanco.subtotale - vb_righe_venditabanco.sconto - ) AS subtotale + `vb_venditabanco`.`id` AS id, + `co_iva`.`codice_natura_fe` AS cod_iva, + `co_iva`.`percentuale` AS aliquota, + `co_iva_lang`.`name` AS descrizione, + SUM(`vb_righe_venditabanco`.`iva`) AS iva, + SUM(`vb_righe_venditabanco`.`subtotale` - `vb_righe_venditabanco`.`sconto`) AS subtotale FROM - co_iva - INNER JOIN vb_righe_venditabanco ON vb_righe_venditabanco.idiva = co_iva.id - INNER JOIN vb_venditabanco ON vb_venditabanco.id = vb_righe_venditabanco.idvendita - INNER JOIN vb_stati_vendita ON vb_venditabanco.idstato = vb_stati_vendita.id + `co_iva` + LEFT JOIN `co_iva_lang` ON (`co_iva`.`id` = `co_iva_lang`.`id_record` AND `co_iva_lang`.`id_lang` = '.prepare(setting('Lingua')).') + INNER JOIN `vb_righe_venditabanco` ON `vb_righe_venditabanco`.`idiva` = `co_iva`.`id` + INNER JOIN `vb_venditabanco` ON `vb_venditabanco`.`id` = `vb_righe_venditabanco`.`idvendita` + INNER JOIN `vb_stati_vendita` ON `vb_venditabanco`.`idstato` = `vb_stati_vendita`.`id` WHERE - vb_venditabanco.data >= '.prepare($date_start).' AND vb_venditabanco.data <= '.prepare($date_end).' AND vb_righe_venditabanco.is_descrizione = 0 AND vb_stati_vendita.descrizione = "Pagato" + `vb_venditabanco`.`data` >= '.prepare($date_start).' AND `vb_venditabanco`.`data` <= '.prepare($date_end).' AND `vb_righe_venditabanco`.`is_descrizione` = 0 AND `vb_stati_vendita`.`descrizione` = "Pagato" GROUP BY - cod_iva, aliquota, descrizione, vb_venditabanco.id + `cod_iva`, `aliquota`, `descrizione`, `vb_venditabanco`.`id` ) AS tabella GROUP BY - cod_iva, - aliquota, - descrizione, - id'); + `cod_iva`, + `aliquota`, + `descrizione`, + `id`'); $iva_vendite_anno_precedente = $dbo->fetchArray(' SELECT - id, - cod_iva, - aliquota, - descrizione, - SUM(iva) AS iva, - SUM(subtotale) AS subtotale + `id`, + `cod_iva`, + `aliquota`, + `descrizione`, + SUM(`iva`) AS iva, + SUM(`subtotale`) AS subtotale FROM ( SELECT - co_documenti.id AS id, - co_iva.codice_natura_fe AS cod_iva, - co_iva.percentuale AS aliquota, - co_iva.descrizione AS descrizione, - SUM((subtotale-sconto+co_righe_documenti.rivalsainps) *percentuale/100 *(100-indetraibile)/100 *(IF(co_tipidocumento.reversed = 0, 1,-1 ))) AS iva, - SUM((co_righe_documenti.subtotale - co_righe_documenti.sconto + co_righe_documenti.rivalsainps) *(IF(co_tipidocumento.reversed = 0,1,-1))) AS subtotale + `co_documenti`.`id` AS id, + `co_iva`.`codice_natura_fe` AS cod_iva, + `co_iva`.`percentuale` AS aliquota, + `co_iva_lang`.`name` AS descrizione, + SUM((`subtotale`-`sconto`+`co_righe_documenti`.`rivalsainps`) *`percentuale`/100 *(100-`indetraibile`)/100 *(IF(`co_tipidocumento`.`reversed` = 0, 1,-1 ))) AS iva, + SUM((`co_righe_documenti`.`subtotale` - `co_righe_documenti`.`sconto` + `co_righe_documenti`.`rivalsainps`) *(IF(`co_tipidocumento`.`reversed` = 0,1,-1))) AS subtotale FROM - co_iva - INNER JOIN co_righe_documenti ON co_righe_documenti.idiva = co_iva.id - INNER JOIN co_documenti ON co_documenti.id = co_righe_documenti.iddocumento - INNER JOIN co_tipidocumento ON co_tipidocumento.id = co_documenti.idtipodocumento + `co_iva` + LEFT JOIN `co_iva_lang` ON (`co_iva`.`id` = `co_iva_lang`.`id_record` AND `co_iva_lang`.`id_lang` = '.prepare(setting('Lingua')).') + INNER JOIN `co_righe_documenti` ON `co_righe_documenti`.`idiva` = `co_iva`.`id` + INNER JOIN `co_documenti` ON `co_documenti`.`id` = `co_righe_documenti`.`iddocumento` + INNER JOIN `co_tipidocumento` ON `co_tipidocumento`.`id` = `co_documenti`.`idtipodocumento` WHERE - co_tipidocumento.dir = "entrata" AND co_righe_documenti.is_descrizione = 0 AND idstatodocumento NOT IN(SELECT id FROM co_statidocumento WHERE descrizione = "Bozza" OR descrizione = "Annullata") AND co_documenti.data_competenza >= '.prepare($anno_precedente_start).' AND co_documenti.data_competenza <= '.prepare($anno_precedente_end).' + `co_tipidocumento`.`dir` = "entrata" AND `co_righe_documenti`.`is_descrizione` = 0 AND `idstatodocumento` NOT IN(SELECT `id` FROM `co_statidocumento` WHERE `descrizione` = "Bozza" OR `descrizione` = "Annullata") AND `co_documenti`.`data_competenza` >= '.prepare($anno_precedente_start).' AND `co_documenti`.`data_competenza` <= '.prepare($anno_precedente_end).' GROUP BY - cod_iva, aliquota, descrizione, co_documenti.id + `cod_iva`, `aliquota`, `descrizione`, `co_documenti`.`id` UNION SELECT - vb_venditabanco.id AS id, - co_iva.codice_natura_fe AS cod_iva, - co_iva.percentuale AS aliquota, - co_iva.descrizione AS descrizione, - SUM(vb_righe_venditabanco.iva) AS iva, - SUM( - vb_righe_venditabanco.subtotale - vb_righe_venditabanco.sconto - ) AS subtotale + `vb_venditabanco`.`id` AS id, + `co_iva`.`codice_natura_fe` AS cod_iva, + `co_iva`.`percentuale` AS aliquota, + `co_iva_lang`.`name` AS descrizione, + SUM(`vb_righe_venditabanco`.`iva`) AS iva, + SUM(`vb_righe_venditabanco`.`subtotale` - `vb_righe_venditabanco`.`sconto`) AS subtotale FROM - co_iva - INNER JOIN vb_righe_venditabanco ON vb_righe_venditabanco.idiva = co_iva.id - INNER JOIN vb_venditabanco ON vb_venditabanco.id = vb_righe_venditabanco.idvendita - INNER JOIN vb_stati_vendita ON vb_venditabanco.idstato = vb_stati_vendita.id + `co_iva` + LEFT JOIN `co_iva_lang` ON (`co_iva`.`id` = `co_iva_lang`.`id_record` AND `co_iva_lang`.`id_lang` = '.prepare(setting('Lingua')).') + INNER JOIN `vb_righe_venditabanco` ON `vb_righe_venditabanco`.`idiva` = `co_iva`.`id` + INNER JOIN `vb_venditabanco` ON `vb_venditabanco`.`id` = `vb_righe_venditabanco`.`idvendita` + INNER JOIN `vb_stati_vendita` ON `vb_venditabanco`.`idstato` = `vb_stati_vendita`.`id` WHERE - vb_venditabanco.data >= '.prepare($anno_precedente_start).' AND vb_venditabanco.data <= '.prepare($anno_precedente_end).' AND vb_righe_venditabanco.is_descrizione = 0 AND vb_stati_vendita.descrizione = "Pagato" + `vb_venditabanco`.`data` >= '.prepare($anno_precedente_start).' AND `vb_venditabanco`.`data` <= '.prepare($anno_precedente_end).' AND `vb_righe_venditabanco`.`is_descrizione` = 0 AND `vb_stati_vendita`.`descrizione` = "Pagato" GROUP BY - cod_iva, aliquota, descrizione, vb_venditabanco.id + `cod_iva`, `aliquota`, `descrizione`, `vb_venditabanco`.`id` ) AS tabella GROUP BY - cod_iva, - aliquota, - descrizione, - id'); + `cod_iva`, + `aliquota`, + `descrizione`, + `id`'); $iva_vendite_periodo_precedente = $dbo->fetchArray(' SELECT - id, - cod_iva, - aliquota, - descrizione, - SUM(iva) AS iva, - SUM(subtotale) AS subtotale + `id`, + `cod_iva`, + `aliquota`, + `descrizione`, + SUM(`iva`) AS iva, + SUM(`subtotale`) AS subtotale FROM ( SELECT - co_documenti.id AS id, - co_iva.codice_natura_fe AS cod_iva, - co_iva.percentuale AS aliquota, - co_iva.descrizione AS descrizione, - SUM((subtotale-sconto+co_righe_documenti.rivalsainps) *percentuale/100 *(100-indetraibile)/100 *(IF(co_tipidocumento.reversed = 0, 1,-1 ))) AS iva, - SUM((co_righe_documenti.subtotale - co_righe_documenti.sconto + co_righe_documenti.rivalsainps) *(IF(co_tipidocumento.reversed = 0,1,-1))) AS subtotale + `co_documenti`.`id` AS id, + `co_iva`.`codice_natura_fe` AS cod_iva, + `co_iva`.`percentuale` AS aliquota, + `co_iva_lang`.`name` AS descrizione, + SUM((`subtotale`-`sconto`+`co_righe_documenti`.`rivalsainps`) *`percentuale`/100 *(100-`indetraibile`)/100 *(IF(`co_tipidocumento`.`reversed` = 0, 1,-1 ))) AS iva, + SUM((`co_righe_documenti`.`subtotale` - `co_righe_documenti`.`sconto` + `co_righe_documenti`.`rivalsainps`) *(IF(`co_tipidocumento`.`reversed` = 0,1,-1))) AS subtotale FROM - co_iva - INNER JOIN co_righe_documenti ON co_righe_documenti.idiva = co_iva.id - INNER JOIN co_documenti ON co_documenti.id = co_righe_documenti.iddocumento - INNER JOIN co_tipidocumento ON co_tipidocumento.id = co_documenti.idtipodocumento + `co_iva` + LEFT JOIN `co_iva_lang` ON (`co_iva`.`id` = `co_iva_lang`.`id_record` AND `co_iva_lang`.`id_lang` = '.prepare(setting('Lingua')).') + INNER JOIN `co_righe_documenti` ON `co_righe_documenti`.`idiva` = `co_iva`.`id` + INNER JOIN `co_documenti` ON `co_documenti`.`id` = `co_righe_documenti`.`iddocumento` + INNER JOIN `co_tipidocumento` ON `co_tipidocumento`.`id` = `co_documenti`.`idtipodocumento` WHERE - co_tipidocumento.dir = "entrata" AND co_righe_documenti.is_descrizione = 0 AND idstatodocumento NOT IN(SELECT id FROM co_statidocumento WHERE descrizione = "Bozza" OR descrizione = "Annullata") AND co_documenti.data_competenza >= '.prepare($periodo_precedente_start).' AND co_documenti.data_competenza <= '.prepare($periodo_precedente_end).' + `co_tipidocumento`.`dir` = "entrata" AND `co_righe_documenti`.`is_descrizione` = 0 AND `idstatodocumento` NOT IN(SELECT `id` FROM `co_statidocumento` WHERE `descrizione` = "Bozza" OR `descrizione` = "Annullata") AND `co_documenti`.`data_competenza` >= '.prepare($periodo_precedente_start).' AND `co_documenti`.`data_competenza` <= '.prepare($periodo_precedente_end).' GROUP BY - cod_iva, aliquota, descrizione, co_documenti.id + `cod_iva`, `aliquota`, `descrizione`, `co_documenti`.`id` UNION SELECT - vb_venditabanco.id AS id, - co_iva.codice_natura_fe AS cod_iva, - co_iva.percentuale AS aliquota, - co_iva.descrizione AS descrizione, - SUM(vb_righe_venditabanco.iva) AS iva, - SUM( - vb_righe_venditabanco.subtotale - vb_righe_venditabanco.sconto - ) AS subtotale + `vb_venditabanco`.`id` AS id, + `co_iva`.`codice_natura_fe` AS cod_iva, + `co_iva`.`percentuale` AS aliquota, + `co_iva_lang`.`name` AS descrizione, + SUM(`vb_righe_venditabanco`.`iva`) AS iva, + SUM(`vb_righe_venditabanco`.`subtotale` - `vb_righe_venditabanco`.`sconto`) AS subtotale FROM - co_iva - INNER JOIN vb_righe_venditabanco ON vb_righe_venditabanco.idiva = co_iva.id - INNER JOIN vb_venditabanco ON vb_venditabanco.id = vb_righe_venditabanco.idvendita - INNER JOIN vb_stati_vendita ON vb_venditabanco.idstato = vb_stati_vendita.id + `co_iva` + LEFT JOIN `co_iva_lang` ON (`co_iva`.`id` = `co_iva_lang`.`id_record` AND `co_iva_lang`.`id_lang` = '.prepare(setting('Lingua')).') + INNER JOIN `vb_righe_venditabanco` ON `vb_righe_venditabanco`.`idiva` = `co_iva`.`id` + INNER JOIN `vb_venditabanco` ON `vb_venditabanco`.`id` = `vb_righe_venditabanco`.`idvendita` + INNER JOIN `vb_stati_vendita` ON `vb_venditabanco`.`idstato` = `vb_stati_vendita`.`id` WHERE - vb_venditabanco.data >= '.prepare($periodo_precedente_start).' AND vb_venditabanco.data <= '.prepare($periodo_precedente_end).' AND vb_righe_venditabanco.is_descrizione = 0 AND vb_stati_vendita.descrizione = "Pagato" + `vb_venditabanco`.`data` >= '.prepare($periodo_precedente_start).' AND `vb_venditabanco`.`data` <= '.prepare($periodo_precedente_end).' AND `vb_righe_venditabanco`.`is_descrizione` = 0 AND `vb_stati_vendita`.`descrizione` = "Pagato" GROUP BY - cod_iva, aliquota, descrizione, vb_venditabanco.id + `cod_iva`, `aliquota`, `descrizione`, `vb_venditabanco`.`id` ) AS tabella GROUP BY - cod_iva, - aliquota, - descrizione, - id'); + `cod_iva`, + `aliquota`, + `descrizione`, + `id`'); } // calcolo IVA solo su fatture else { $iva_vendite_esigibile = $dbo->fetchArray(' SELECT - co_iva.codice_natura_fe AS cod_iva, - co_iva.percentuale AS aliquota, - co_iva.descrizione AS descrizione, - SUM((subtotale-sconto+co_righe_documenti.rivalsainps) *percentuale/100 *(100-indetraibile)/100 *(IF(co_tipidocumento.reversed = 0, 1,-1 ))) AS iva, - SUM((co_righe_documenti.subtotale - co_righe_documenti.sconto + co_righe_documenti.rivalsainps) *(IF(co_tipidocumento.reversed = 0,1,-1))) AS subtotale + `co_iva`.`codice_natura_fe` AS cod_iva, + `co_iva`.`percentuale` AS aliquota, + `co_iva_lang`.`name` AS descrizione, + SUM((`subtotale`-`sconto`+`co_righe_documenti`.`rivalsainps`) *`percentuale`/100 *(100-`indetraibile`)/100 *(IF(`co_tipidocumento`.`reversed` = 0, 1,-1 ))) AS iva, + SUM((`co_righe_documenti`.`subtotale` - `co_righe_documenti`.`sconto` + `co_righe_documenti`.`rivalsainps`) *(IF(`co_tipidocumento`.`reversed` = 0,1,-1))) AS subtotale FROM - co_iva - INNER JOIN co_righe_documenti ON co_righe_documenti.idiva = co_iva.id - INNER JOIN co_documenti ON co_documenti.id = co_righe_documenti.iddocumento - INNER JOIN co_tipidocumento ON co_tipidocumento.id = co_documenti.idtipodocumento + `co_iva` + LEFT JOIN `co_iva_lang` ON (`co_iva`.`id` = `co_iva_lang`.`id_record` AND `co_iva_lang`.`id_lang` = '.prepare(setting('Lingua')).') + INNER JOIN `co_righe_documenti` ON `co_righe_documenti`.`idiva` = `co_iva`.`id` + INNER JOIN `co_documenti` ON `co_documenti`.`id` = `co_righe_documenti`.`iddocumento` + INNER JOIN `co_tipidocumento` ON `co_tipidocumento`.`id` = `co_documenti`.`idtipodocumento` WHERE - co_tipidocumento.dir = "entrata" AND co_righe_documenti.is_descrizione = 0 AND co_documenti.split_payment = 0 AND idstatodocumento NOT IN(SELECT id FROM co_statidocumento WHERE descrizione = "Bozza" OR descrizione = "Annullata") AND co_documenti.data_competenza >= '.prepare($date_start).' AND co_documenti.data_competenza <= '.prepare($date_end).' + `co_tipidocumento`.`dir` = "entrata" AND `co_righe_documenti`.`is_descrizione` = 0 AND `co_documenti`.`split_payment` = 0 AND `idstatodocumento` NOT IN(SELECT `id` FROM `co_statidocumento` WHERE `descrizione` = "Bozza" OR `descrizione` = "Annullata") AND `co_documenti`.`data_competenza` >= '.prepare($date_start).' AND `co_documenti`.`data_competenza` <= '.prepare($date_end).' GROUP BY - co_iva.id, co_documenti.id - ORDER BY aliquota desc'); + `co_iva`.`id`, `co_documenti`.`id` + ORDER BY `aliquota` desc'); $iva_vendite = $dbo->fetchArray(' SELECT - co_iva.codice_natura_fe AS cod_iva, - co_iva.percentuale AS aliquota, - co_iva.descrizione AS descrizione, - SUM((subtotale-sconto+co_righe_documenti.rivalsainps) *percentuale/100 *(100-indetraibile)/100 *(IF(co_tipidocumento.reversed = 0, 1,-1 ))) AS iva, - SUM((co_righe_documenti.subtotale - co_righe_documenti.sconto + co_righe_documenti.rivalsainps) *(IF(co_tipidocumento.reversed = 0,1,-1))) AS subtotale + `co_iva`.`codice_natura_fe` AS cod_iva, + `co_iva`.`percentuale` AS aliquota, + `co_iva_lang`.`name` AS descrizione, + SUM((`subtotale`-`sconto`+`co_righe_documenti`.`rivalsainps`) *`percentuale`/100 *(100-`indetraibile`)/100 *(IF(`co_tipidocumento`.`reversed` = 0, 1,-1 ))) AS iva, + SUM((`co_righe_documenti`.`subtotale` - `co_righe_documenti`.`sconto` + `co_righe_documenti`.`rivalsainps`) *(IF(`co_tipidocumento`.`reversed` = 0,1,-1))) AS subtotale FROM - co_iva - INNER JOIN co_righe_documenti ON co_righe_documenti.idiva = co_iva.id - INNER JOIN co_documenti ON co_documenti.id = co_righe_documenti.iddocumento - INNER JOIN co_tipidocumento ON co_tipidocumento.id = co_documenti.idtipodocumento + `co_iva` + LEFT JOIN `co_iva_lang` ON (`co_iva`.`id` = `co_iva_lang`.`id_record` AND `co_iva_lang`.`id_lang` = '.prepare(setting('Lingua')).') + INNER JOIN `co_righe_documenti` ON `co_righe_documenti`.`idiva` = `co_iva`.`id` + INNER JOIN `co_documenti` ON `co_documenti`.`id` = `co_righe_documenti`.`iddocumento` + INNER JOIN `co_tipidocumento` ON `co_tipidocumento`.`id` = `co_documenti`.`idtipodocumento` WHERE - co_tipidocumento.dir = "entrata" AND co_righe_documenti.is_descrizione = 0 AND idstatodocumento NOT IN(SELECT id FROM co_statidocumento WHERE descrizione = "Bozza" OR descrizione = "Annullata") AND co_documenti.data_competenza >= '.prepare($date_start).' AND co_documenti.data_competenza <= '.prepare($date_end).' + `co_tipidocumento`.`dir` = "entrata" AND `co_righe_documenti`.`is_descrizione` = 0 AND `idstatodocumento` NOT IN(SELECT `id` FROM `co_statidocumento` WHERE `descrizione` = "Bozza" OR `descrizione` = "Annullata") AND `co_documenti`.`data_competenza` >= '.prepare($date_start).' AND `co_documenti`.`data_competenza` <= '.prepare($date_end).' GROUP BY - co_iva.id, co_documenti.id - ORDER BY aliquota desc'); + `co_iva`.`id`, `co_documenti`.`id` + ORDER BY `aliquota` desc'); $iva_vendite_anno_precedente = $dbo->fetchArray(' SELECT - co_iva.codice_natura_fe AS cod_iva, - co_iva.percentuale AS aliquota, - co_iva.descrizione AS descrizione, - SUM((subtotale-sconto+co_righe_documenti.rivalsainps) *percentuale/100 *(100-indetraibile)/100 *(IF(co_tipidocumento.reversed = 0, 1,-1 ))) AS iva, - SUM((co_righe_documenti.subtotale - co_righe_documenti.sconto + co_righe_documenti.rivalsainps) *(IF(co_tipidocumento.reversed = 0,1,-1))) AS subtotale + `co_iva`.`codice_natura_fe` AS cod_iva, + `co_iva`.`percentuale` AS aliquota, + `co_iva_lang`.`name` AS descrizione, + SUM((`subtotale`-`sconto`+`co_righe_documenti`.`rivalsainps`) *`percentuale`/100 *(100-`indetraibile`)/100 *(IF(`co_tipidocumento`.`reversed` = 0, 1,-1 ))) AS iva, + SUM((`co_righe_documenti`.`subtotale` - `co_righe_documenti`.`sconto` + `co_righe_documenti`.`rivalsainps`) *(IF(`co_tipidocumento`.`reversed` = 0,1,-1))) AS subtotale FROM - co_iva - INNER JOIN co_righe_documenti ON co_righe_documenti.idiva = co_iva.id - INNER JOIN co_documenti ON co_documenti.id = co_righe_documenti.iddocumento - INNER JOIN co_tipidocumento ON co_tipidocumento.id = co_documenti.idtipodocumento + `co_iva` + LEFT JOIN `co_iva_lang` ON (`co_iva`.`id` = `co_iva_lang`.`id_record` AND `co_iva_lang`.`id_lang` = '.prepare(setting('Lingua')).') + INNER JOIN `co_righe_documenti` ON `co_righe_documenti`.`idiva` = `co_iva`.`id` + INNER JOIN `co_documenti` ON `co_documenti`.`id` = `co_righe_documenti`.`iddocumento` + INNER JOIN `co_tipidocumento` ON `co_tipidocumento`.`id` = `co_documenti`.`idtipodocumento` WHERE - co_tipidocumento.dir = "entrata" AND co_righe_documenti.is_descrizione = 0 AND idstatodocumento NOT IN(SELECT id FROM co_statidocumento WHERE descrizione = "Bozza" OR descrizione = "Annullata") AND co_documenti.data_competenza >= '.prepare($anno_precedente_start).' AND co_documenti.data_competenza <= '.prepare($anno_precedente_end).' + `co_tipidocumento`.`dir` = "entrata" AND `co_righe_documenti`.`is_descrizione` = 0 AND `idstatodocumento` NOT IN(SELECT `id` FROM `co_statidocumento` WHERE `descrizione` = "Bozza" OR `descrizione` = "Annullata") AND `co_documenti`.`data_competenza` >= '.prepare($anno_precedente_start).' AND `co_documenti`.`data_competenza` <= '.prepare($anno_precedente_end).' GROUP BY - co_iva.id, co_documenti.id + `co_iva`.`id`, `co_documenti`.`id` ORDER BY aliquota desc'); $iva_vendite_periodo_precedente = $dbo->fetchArray(' SELECT - co_iva.codice_natura_fe AS cod_iva, - co_iva.percentuale AS aliquota, - co_iva.descrizione AS descrizione, - SUM((subtotale-sconto+co_righe_documenti.rivalsainps) *percentuale/100 *(100-indetraibile)/100 *(IF(co_tipidocumento.reversed = 0, 1,-1 ))) AS iva, - SUM((co_righe_documenti.subtotale - co_righe_documenti.sconto + co_righe_documenti.rivalsainps) *(IF(co_tipidocumento.reversed = 0,1,-1))) AS subtotale + `co_iva`.`codice_natura_fe` AS cod_iva, + `co_iva`.`percentuale` AS aliquota, + `co_iva_lang`.`name` AS descrizione, + SUM((`subtotale`-`sconto`+`co_righe_documenti`.`rivalsainps`) *`percentuale`/100 *(100-`indetraibile`)/100 *(IF(`co_tipidocumento`.`reversed` = 0, 1,-1 ))) AS iva, + SUM((`co_righe_documenti`.`subtotale` - `co_righe_documenti`.`sconto` + `co_righe_documenti`.`rivalsainps`) *(IF(`co_tipidocumento`.`reversed` = 0,1,-1))) AS subtotale FROM - co_iva - INNER JOIN co_righe_documenti ON co_righe_documenti.idiva = co_iva.id - INNER JOIN co_documenti ON co_documenti.id = co_righe_documenti.iddocumento - INNER JOIN co_tipidocumento ON co_tipidocumento.id = co_documenti.idtipodocumento + `co_iva` + LEFT JOIN `co_iva_lang` ON (`co_iva`.`id` = `co_iva_lang`.`id_record` AND `co_iva_lang`.`id_lang` = '.prepare(setting('Lingua')).') + INNER JOIN `co_righe_documenti` ON `co_righe_documenti`.`idiva` = `co_iva`.`id` + INNER JOIN `co_documenti` ON `co_documenti`.`id` = `co_righe_documenti`.`iddocumento` + INNER JOIN `co_tipidocumento` ON `co_tipidocumento`.`id` = `co_documenti`.`idtipodocumento` WHERE - co_tipidocumento.dir = "entrata" AND co_righe_documenti.is_descrizione = 0 AND idstatodocumento NOT IN(SELECT id FROM co_statidocumento WHERE descrizione = "Bozza" OR descrizione = "Annullata") AND co_documenti.data_competenza >= '.prepare($periodo_precedente_start).' AND co_documenti.data_competenza <= '.prepare($periodo_precedente_end).' + `co_tipidocumento`.`dir` = "entrata" AND `co_righe_documenti`.`is_descrizione` = 0 AND `idstatodocumento` NOT IN(SELECT `id` FROM `co_statidocumento` WHERE `descrizione` = "Bozza" OR `descrizione` = "Annullata") AND `co_documenti`.`data_competenza` >= '.prepare($periodo_precedente_start).' AND `co_documenti`.`data_competenza` <= '.prepare($periodo_precedente_end).' GROUP BY - co_iva.id, co_documenti.id - ORDER BY aliquota desc'); + `co_iva`.`id`, `co_documenti`.`id` + ORDER BY `aliquota` desc'); } $iva_vendite_nonesigibile = $dbo->fetchArray(' SELECT - co_iva.codice_natura_fe AS cod_iva, - co_iva.percentuale AS aliquota, - co_iva.descrizione AS descrizione, - SUM((subtotale-sconto+co_righe_documenti.rivalsainps) *percentuale/100 *(100-indetraibile)/100 *(IF(co_tipidocumento.reversed = 0, 1,-1 ))) AS iva, - SUM((co_righe_documenti.subtotale - co_righe_documenti.sconto + co_righe_documenti.rivalsainps) *(IF(co_tipidocumento.reversed = 0,1,-1))) AS subtotale + `co_iva`.`codice_natura_fe` AS cod_iva, + `co_iva`.`percentuale` AS aliquota, + `co_iva_lang`.`name` AS descrizione, + SUM((`subtotale`-`sconto`+`co_righe_documenti`.`rivalsainps`) *`percentuale`/100 *(100-`indetraibile`)/100 *(IF(`co_tipidocumento`.`reversed` = 0, 1,-1 ))) AS iva, + SUM((`co_righe_documenti`.`subtotale` - `co_righe_documenti`.`sconto` + `co_righe_documenti`.`rivalsainps`) *(IF(`co_tipidocumento`.`reversed` = 0,1,-1))) AS subtotale FROM - co_iva - INNER JOIN co_righe_documenti ON co_righe_documenti.idiva = co_iva.id - INNER JOIN co_documenti ON co_documenti.id = co_righe_documenti.iddocumento - INNER JOIN co_tipidocumento ON co_tipidocumento.id = co_documenti.idtipodocumento + `co_iva` + LEFT JOIN `co_iva_lang` ON (`co_iva`.`id` = `co_iva_lang`.`id_record` AND `co_iva_lang`.`id_lang` = '.prepare(setting('Lingua')).') + INNER JOIN `co_righe_documenti` ON `co_righe_documenti`.`idiva` = `co_iva`.`id` + INNER JOIN `co_documenti` ON `co_documenti`.`id` = `co_righe_documenti`.`iddocumento` + INNER JOIN `co_tipidocumento` ON `co_tipidocumento`.`id` = `co_documenti`.`idtipodocumento` WHERE - co_tipidocumento.dir = "entrata" AND co_righe_documenti.is_descrizione = 0 AND co_documenti.split_payment = 1 AND idstatodocumento NOT IN(SELECT id FROM co_statidocumento WHERE descrizione = "Bozza" OR descrizione = "Annullata") AND co_documenti.data_competenza >= '.prepare($date_start).' AND co_documenti.data_competenza <= '.prepare($date_end).' + `co_tipidocumento`.`dir` = "entrata" AND `co_righe_documenti`.`is_descrizione` = 0 AND `co_documenti`.`split_payment` = 1 AND `idstatodocumento` NOT IN(SELECT `id` FROM `co_statidocumento` WHERE `descrizione` = "Bozza" OR `descrizione` = "Annullata") AND `co_documenti`.`data_competenza` >= '.prepare($date_start).' AND `co_documenti`.`data_competenza` <= '.prepare($date_end).' GROUP BY - co_iva.id, co_documenti.id - ORDER BY aliquota desc'); + `co_iva`.`id`, `co_documenti`.`id` + ORDER BY `aliquota` desc'); $iva_acquisti_detraibile = $dbo->fetchArray(' SELECT - co_iva.codice_natura_fe AS cod_iva, - co_iva.percentuale AS aliquota, - co_iva.descrizione AS descrizione, - SUM((subtotale-sconto+co_righe_documenti.rivalsainps) *percentuale/100 *(100-indetraibile)/100 *(IF(co_tipidocumento.reversed = 0, 1,-1 ))) AS iva, - SUM((co_righe_documenti.subtotale - co_righe_documenti.sconto + co_righe_documenti.rivalsainps) *(IF(co_tipidocumento.reversed = 0,1,-1))) AS subtotale + `co_iva`.`codice_natura_fe` AS cod_iva, + `co_iva`.`percentuale` AS aliquota, + `co_iva_lang`.`name` AS descrizione, + SUM((`subtotale`-`sconto`+`co_righe_documenti`.`rivalsainps`) *`percentuale`/100 *(100-`indetraibile`)/100 *(IF(`co_tipidocumento`.`reversed` = 0, 1,-1 ))) AS iva, + SUM((`co_righe_documenti`.`subtotale` - `co_righe_documenti`.`sconto` + `co_righe_documenti`.`rivalsainps`) *(IF(`co_tipidocumento`.`reversed` = 0,1,-1))) AS subtotale FROM - co_iva - INNER JOIN co_righe_documenti ON co_righe_documenti.idiva = co_iva.id - INNER JOIN co_documenti ON co_documenti.id = co_righe_documenti.iddocumento - INNER JOIN co_tipidocumento ON co_tipidocumento.id = co_documenti.idtipodocumento + `co_iva` + LEFT JOIN `co_iva_lang` ON (`co_iva`.`id` = `co_iva_lang`.`id_record` AND `co_iva_lang`.`id_lang` = '.prepare(setting('Lingua')).') + INNER JOIN `co_righe_documenti` ON `co_righe_documenti`.`idiva` = `co_iva`.`id` + INNER JOIN `co_documenti` ON `co_documenti`.`id` = `co_righe_documenti`.`iddocumento` + INNER JOIN `co_tipidocumento` ON `co_tipidocumento`.`id` = `co_documenti`.`idtipodocumento` WHERE - co_tipidocumento.dir = "uscita" AND co_righe_documenti.is_descrizione = 0 AND co_documenti.split_payment = 0 AND idstatodocumento NOT IN(SELECT id FROM co_statidocumento WHERE descrizione = "Bozza" OR descrizione = "Annullata") AND co_documenti.data_competenza >= '.prepare($date_start).' AND co_documenti.data_competenza <= '.prepare($date_end).' AND co_iva.indetraibile != 100 + `co_tipidocumento`.`dir` = "uscita" AND `co_righe_documenti`.`is_descrizione` = 0 AND `co_documenti`.`split_payment` = 0 AND `idstatodocumento` NOT IN(SELECT `id` FROM `co_statidocumento` WHERE `descrizione` = "Bozza" OR `descrizione` = "Annullata") AND `co_documenti`.`data_competenza` >= '.prepare($date_start).' AND `co_documenti`.`data_competenza` <= '.prepare($date_end).' AND `co_iva`.`indetraibile` != 100 GROUP BY - co_iva.id, co_documenti.id - ORDER BY aliquota desc'); + `co_iva`.`id`, `co_documenti`.`id` + ORDER BY `aliquota` desc'); $iva_acquisti_nondetraibile = $dbo->fetchArray(' SELECT - co_iva.codice_natura_fe AS cod_iva, - co_iva.percentuale AS aliquota, - co_iva.descrizione AS descrizione, - SUM((subtotale-sconto+co_righe_documenti.rivalsainps) *percentuale/100 *indetraibile/100 *(IF(co_tipidocumento.reversed = 0, 1,-1 ))) AS iva, - SUM((co_righe_documenti.subtotale - co_righe_documenti.sconto + co_righe_documenti.rivalsainps) *(IF(co_tipidocumento.reversed = 0,1,-1))) AS subtotale + `co_iva`.`codice_natura_fe` AS cod_iva, + `co_iva`.`percentuale` AS aliquota, + `co_iva_lang`.`name` AS descrizione, + SUM((`subtotale`-`sconto`+`co_righe_documenti`.`rivalsainps`) *`percentuale`/100 *`indetraibile`/100 *(IF(`co_tipidocumento`.`reversed` = 0, 1,-1 ))) AS iva, + SUM((`co_righe_documenti`.`subtotale` - `co_righe_documenti`.`sconto` + `co_righe_documenti`.`rivalsainps`) *(IF(`co_tipidocumento`.`reversed` = 0,1,-1))) AS subtotale FROM - co_iva - INNER JOIN co_righe_documenti ON co_righe_documenti.idiva = co_iva.id - INNER JOIN co_documenti ON co_documenti.id = co_righe_documenti.iddocumento - INNER JOIN co_tipidocumento ON co_tipidocumento.id = co_documenti.idtipodocumento + `co_iva` + LEFT JOIN `co_iva_lang` ON (`co_iva`.`id` = `co_iva_lang`.`id_record` AND `co_iva_lang`.`id_lang` = '.prepare(setting('Lingua')).') + INNER JOIN `co_righe_documenti` ON `co_righe_documenti`.`idiva` = `co_iva`.`id` + INNER JOIN `co_documenti` ON `co_documenti`.`id` = `co_righe_documenti`.`iddocumento` + INNER JOIN `co_tipidocumento` ON `co_tipidocumento`.`id` = `co_documenti`.`idtipodocumento` WHERE - co_tipidocumento.dir = "uscita" AND co_righe_documenti.is_descrizione = 0 AND idstatodocumento NOT IN(SELECT id FROM co_statidocumento WHERE descrizione = "Bozza" OR descrizione = "Annullata") AND co_documenti.data_competenza >= '.prepare($date_start).' AND co_documenti.data_competenza <= '.prepare($date_end).' AND co_iva.indetraibile != 0 + `co_tipidocumento`.`dir` = "uscita" AND `co_righe_documenti`.`is_descrizione` = 0 AND `idstatodocumento` NOT IN(SELECT `id` FROM `co_statidocumento` WHERE `descrizione` = "Bozza" OR `descrizione` = "Annullata") AND `co_documenti`.`data_competenza` >= '.prepare($date_start).' AND `co_documenti`.`data_competenza` <= '.prepare($date_end).' AND `co_iva`.`indetraibile` != 0 GROUP BY - co_iva.id, co_documenti.id - ORDER BY aliquota desc'); + `co_iva`.`id`, `co_documenti`.`id` + ORDER BY `aliquota` desc'); $iva_acquisti = $dbo->fetchArray(' SELECT - co_iva.codice_natura_fe AS cod_iva, - co_iva.percentuale AS aliquota, - co_iva.descrizione AS descrizione, - SUM((subtotale-sconto+co_righe_documenti.rivalsainps) *percentuale/100 *(100-indetraibile)/100 *(IF(co_tipidocumento.reversed = 0, 1,-1 ))) AS iva, - SUM((co_righe_documenti.subtotale - co_righe_documenti.sconto + co_righe_documenti.rivalsainps) *(IF(co_tipidocumento.reversed = 0,1,-1))) AS subtotale + `co_iva`.`codice_natura_fe` AS cod_iva, + `co_iva`.`percentuale` AS aliquota, + `co_iva_lang`.`name` AS descrizione, + SUM((`subtotale`-`sconto`+`co_righe_documenti`.`rivalsainps`) *`percentuale`/100 *(100-`indetraibile`)/100 *(IF(`co_tipidocumento`.`reversed` = 0, 1,-1 ))) AS iva, + SUM((`co_righe_documenti`.`subtotale` - `co_righe_documenti`.`sconto` + `co_righe_documenti`.`rivalsainps`) *(IF(`co_tipidocumento`.`reversed` = 0,1,-1))) AS subtotale FROM - co_iva - INNER JOIN co_righe_documenti ON co_righe_documenti.idiva = co_iva.id - INNER JOIN co_documenti ON co_documenti.id = co_righe_documenti.iddocumento - INNER JOIN co_tipidocumento ON co_tipidocumento.id = co_documenti.idtipodocumento + `co_iva` + LEFT JOIN `co_iva_lang` ON (`co_iva`.`id` = `co_iva_lang`.`id_record` AND `co_iva_lang`.`id_lang` = '.prepare(setting('Lingua')).') + INNER JOIN `co_righe_documenti` ON `co_righe_documenti`.`idiva` = `co_iva`.`id` + INNER JOIN `co_documenti` ON `co_documenti`.`id` = `co_righe_documenti`.`iddocumento` + INNER JOIN `co_tipidocumento` ON `co_tipidocumento`.`id` = `co_documenti`.`idtipodocumento` WHERE - co_tipidocumento.dir = "uscita" AND co_righe_documenti.is_descrizione = 0 AND idstatodocumento NOT IN(SELECT id FROM co_statidocumento WHERE descrizione = "Bozza" OR descrizione = "Annullata") AND co_documenti.data_competenza >= '.prepare($date_start).' AND co_documenti.data_competenza <= '.prepare($date_end).' + `co_tipidocumento`.`dir` = "uscita" AND `co_righe_documenti`.`is_descrizione` = 0 AND `idstatodocumento` NOT IN(SELECT `id` FROM `co_statidocumento` WHERE `descrizione` = "Bozza" OR `descrizione` = "Annullata") AND `co_documenti`.`data_competenza` >= '.prepare($date_start).' AND `co_documenti`.`data_competenza` <= '.prepare($date_end).' GROUP BY - co_iva.id, co_documenti.id - ORDER BY aliquota desc'); + `co_iva`.`id`, `co_documenti`.`id` + ORDER BY `aliquota` desc'); $iva_acquisti_anno_precedente = $dbo->fetchArray(' SELECT - co_iva.codice_natura_fe AS cod_iva, - co_iva.percentuale AS aliquota, - co_iva.descrizione AS descrizione, - SUM((subtotale-sconto+co_righe_documenti.rivalsainps) *percentuale/100 *(100-indetraibile)/100 *(IF(co_tipidocumento.reversed = 0, 1,-1 ))) AS iva, - SUM((co_righe_documenti.subtotale - co_righe_documenti.sconto + co_righe_documenti.rivalsainps) *(IF(co_tipidocumento.reversed = 0,1,-1))) AS subtotale + `co_iva`.`codice_natura_fe` AS cod_iva, + `co_iva`.`percentuale` AS aliquota, + `co_iva_lang`.`name` AS descrizione, + SUM((`subtotale`-`sconto`+`co_righe_documenti`.`rivalsainps`) *`percentuale`/100 *(100-`indetraibile`)/100 *(IF(`co_tipidocumento`.`reversed` = 0, 1,-1 ))) AS iva, + SUM((`co_righe_documenti`.`subtotale` - `co_righe_documenti`.`sconto` + `co_righe_documenti`.`rivalsainps`) *(IF(`co_tipidocumento`.`reversed` = 0,1,-1))) AS subtotale FROM - co_iva - INNER JOIN co_righe_documenti ON co_righe_documenti.idiva = co_iva.id - INNER JOIN co_documenti ON co_documenti.id = co_righe_documenti.iddocumento - INNER JOIN co_tipidocumento ON co_tipidocumento.id = co_documenti.idtipodocumento + `co_iva` + LEFT JOIN `co_iva_lang` ON (`co_iva`.`id` = `co_iva_lang`.`id_record` AND `co_iva_lang`.`id_lang` = '.prepare(setting('Lingua')).') + INNER JOIN `co_righe_documenti` ON `co_righe_documenti`.`idiva` = `co_iva`.`id` + INNER JOIN `co_documenti` ON `co_documenti`.`id` = `co_righe_documenti`.`iddocumento` + INNER JOIN `co_tipidocumento` ON `co_tipidocumento`.`id` = `co_documenti`.`idtipodocumento` WHERE - co_tipidocumento.dir = "uscita" AND co_righe_documenti.is_descrizione = 0 AND idstatodocumento NOT IN(SELECT id FROM co_statidocumento WHERE descrizione = "Bozza" OR descrizione = "Annullata") AND co_documenti.data_competenza >= '.prepare($anno_precedente_start).' AND co_documenti.data_competenza <= '.prepare($anno_precedente_end).' + `co_tipidocumento`.`dir` = "uscita" AND `co_righe_documenti`.`is_descrizione` = 0 AND `idstatodocumento` NOT IN(SELECT `id` FROM `co_statidocumento` WHERE `descrizione` = "Bozza" OR `descrizione` = "Annullata") AND `co_documenti`.`data_competenza` >= '.prepare($anno_precedente_start).' AND `co_documenti`.`data_competenza` <= '.prepare($anno_precedente_end).' GROUP BY - co_iva.id, co_documenti.id - ORDER BY aliquota desc'); + `co_iva`.`id`, `co_documenti`.`id` + ORDER BY `aliquota` desc'); $iva_acquisti_periodo_precedente = $dbo->fetchArray(' SELECT - co_iva.codice_natura_fe AS cod_iva, - co_iva.percentuale AS aliquota, - co_iva.descrizione AS descrizione, - SUM((subtotale-sconto+co_righe_documenti.rivalsainps) *percentuale/100 *(100-indetraibile)/100 *(IF(co_tipidocumento.reversed = 0, 1,-1 ))) AS iva, - SUM((co_righe_documenti.subtotale - co_righe_documenti.sconto + co_righe_documenti.rivalsainps) *(IF(co_tipidocumento.reversed = 0,1,-1))) AS subtotale + `co_iva`.`codice_natura_fe` AS cod_iva, + `co_iva`.`percentuale` AS aliquota, + `co_iva_lang`.`name` AS descrizione, + SUM((`subtotale`-`sconto`+`co_righe_documenti`.`rivalsainps`) *`percentuale`/100 *(100-`indetraibile`)/100 *(IF(`co_tipidocumento`.`reversed` = 0, 1,-1 ))) AS iva, + SUM((`co_righe_documenti`.`subtotale` - `co_righe_documenti`.`sconto` + `co_righe_documenti`.`rivalsainps`) *(IF(`co_tipidocumento`.`reversed` = 0,1,-1))) AS subtotale FROM - co_iva - INNER JOIN co_righe_documenti ON co_righe_documenti.idiva = co_iva.id - INNER JOIN co_documenti ON co_documenti.id = co_righe_documenti.iddocumento - INNER JOIN co_tipidocumento ON co_tipidocumento.id = co_documenti.idtipodocumento + `co_iva` + LEFT JOIN `co_iva_lang` ON (`co_iva`.`id` = `co_iva_lang`.`id_record` AND `co_iva_lang`.`id_lang` = '.prepare(setting('Lingua')).') + INNER JOIN `co_righe_documenti` ON `co_righe_documenti`.`idiva` = `co_iva`.`id` + INNER JOIN `co_documenti` ON `co_documenti`.`id` = `co_righe_documenti`.`iddocumento` + INNER JOIN `co_tipidocumento` ON `co_tipidocumento`.`id` = `co_documenti`.`idtipodocumento` WHERE - co_tipidocumento.dir = "uscita" AND co_righe_documenti.is_descrizione = 0 AND idstatodocumento NOT IN(SELECT id FROM co_statidocumento WHERE descrizione = "Bozza" OR descrizione = "Annullata") AND co_documenti.data_competenza >= '.prepare($periodo_precedente_start).' AND co_documenti.data_competenza <= '.prepare($periodo_precedente_end).' + `co_tipidocumento`.`dir` = "uscita" AND `co_righe_documenti`.`is_descrizione` = 0 AND `idstatodocumento` NOT IN(SELECT `id` FROM `co_statidocumento` WHERE `descrizione` = "Bozza" OR `descrizione` = "Annullata") AND `co_documenti`.`data_competenza` >= '.prepare($periodo_precedente_start).' AND `co_documenti`.`data_competenza` <= '.prepare($periodo_precedente_end).' GROUP BY - co_iva.id, co_documenti.id - ORDER BY aliquota desc'); + `co_iva`.`id`, `co_documenti`.`id` + ORDER BY `aliquota` desc'); diff --git a/templates/registro_iva/init.php b/templates/registro_iva/init.php index 9a938f50f..d9d043f03 100755 --- a/templates/registro_iva/init.php +++ b/templates/registro_iva/init.php @@ -36,107 +36,110 @@ $v_totale = []; if ((!empty($vendita_banco)) && ($id_sezionale == -1) && ($tipo == 'vendite')) { $query = ' SELECT - data_registrazione, - numero_esterno, - data, - codice_tipo_documento_fe, - percentuale, - descrizione, - id, - numero, - SUM(subtotale) as subtotale, - SUM(totale) as totale, - SUM(iva) AS iva, - ragione_sociale, - codice_anagrafica + `data_registrazione`, + `numero_esterno`, + `data`, + `codice_tipo_documento_fe`, + `percentuale`, + `descrizione`, + `id`, + `numero`, + SUM(`subtotale`) as subtotale, + SUM(`totale`) as totale, + SUM(`iva`) AS iva, + `ragione_sociale`, + `codice_anagrafica` FROM ( SELECT - co_documenti.data_registrazione, - co_documenti.numero_esterno, - co_documenti.data, - co_tipidocumento.codice_tipo_documento_fe, - co_iva.percentuale, - co_iva.descrizione, - co_documenti.id AS id, - IF(numero = "", numero_esterno, numero) AS numero, - SUM((subtotale-sconto+co_righe_documenti.rivalsainps)*(IF(co_tipidocumento.reversed = 0, 1,-1 ))) AS subtotale, - SUM((subtotale-sconto+co_righe_documenti.rivalsainps+iva+co_righe_documenti.rivalsainps * percentuale/100)*(IF(co_tipidocumento.reversed = 0, 1,-1 ))) AS totale, - SUM((subtotale-sconto+co_righe_documenti.rivalsainps) *percentuale/100 *(100-indetraibile)/100 *(IF(co_tipidocumento.reversed = 0, 1,-1 ))) AS iva, - an_anagrafiche.ragione_sociale, - an_anagrafiche.codice AS codice_anagrafica + `co_documenti`.`data_registrazione`, + `co_documenti`.`numero_esterno`, + `co_documenti`.`data`, + `co_tipidocumento`.`codice_tipo_documento_fe`, + `co_iva`.`percentuale`, + `co_iva_lang`.`name` as descrizione, + `co_documenti`.`id` AS id, + IF(`numero` = "", `numero_esterno`, `numero`) AS numero, + SUM((`subtotale`-`sconto`+`co_righe_documenti`.`rivalsainps`)*(IF(`co_tipidocumento`.`reversed` = 0, 1,-1 ))) AS subtotale, + SUM((`subtotale`-`sconto`+`co_righe_documenti`.`rivalsainps`+`iva`+`co_righe_documenti`.`rivalsainps` * `percentuale`/100)*(IF(`co_tipidocumento`.`reversed` = 0, 1,-1 ))) AS totale, + SUM((`subtotale`-`sconto`+`co_righe_documenti`.`rivalsainps`) *`percentuale`/100 *(100-`indetraibile`)/100 *(IF(`co_tipidocumento`.`reversed` = 0, 1,-1 ))) AS iva, + `an_anagrafiche`.`ragione_sociale`, + `an_anagrafiche`.`codice` AS codice_anagrafica FROM - co_iva - INNER JOIN co_righe_documenti ON co_righe_documenti.idiva = co_iva.id - INNER JOIN co_documenti ON co_documenti.id = co_righe_documenti.iddocumento - INNER JOIN co_tipidocumento ON co_tipidocumento.id = co_documenti.idtipodocumento - INNER JOIN an_anagrafiche ON an_anagrafiche.idanagrafica = co_documenti.idanagrafica + `co_iva` + LEFT JOIN `co_iva_lang` ON (`co_iva`.`id` = `co_iva_lang`.`id_record` AND `co_iva_lang`.`id_lang` = '.prepare(setting('Lingua')).') + INNER JOIN `co_righe_documenti` ON `co_righe_documenti`.`idiva` = `co_iva`.`id` + INNER JOIN `co_documenti` ON `co_documenti`.`id` = `co_righe_documenti`.`iddocumento` + INNER JOIN `co_tipidocumento` ON `co_tipidocumento`.`id` = `co_documenti`.`idtipodocumento` + INNER JOIN `an_anagrafiche` ON `an_anagrafiche`.`idanagrafica` = `co_documenti`.`idanagrafica` 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_competenza >= '.prepare($date_start).' AND co_documenti.data_competenza <= '.prepare($date_end).' AND '.(($id_sezionale != -1) ? 'co_documenti.id_segment = '.prepare($id_sezionale).'' : '1=1').' + `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_competenza` >= '.prepare($date_start).' AND `co_documenti`.`data_competenza` <= '.prepare($date_end).' AND '.(($id_sezionale != -1) ? '`co_documenti`.`id_segment` = '.prepare($id_sezionale).'' : '1=1').' GROUP BY - co_iva.id, co_documenti.id + `co_iva`.`id`, `co_documenti`.`id` UNION SELECT - vb_venditabanco.data as data_registrazione, - vb_venditabanco.numero as numero_esterno, - vb_venditabanco.data as data, + `vb_venditabanco`.`data` as data_registrazione, + `vb_venditabanco`.`numero` as numero_esterno, + `vb_venditabanco`.`data` as data, "Vendita al banco" as codice_tipo_documento_fe, - co_iva.percentuale, - co_iva.descrizione, - vb_venditabanco.id AS id, - vb_venditabanco.numero AS numero, - SUM(vb_righe_venditabanco.subtotale) as subtotale, - SUM(subtotale - sconto + iva) as totale, - SUM(iva) as iva, - an_anagrafiche.ragione_sociale, - an_anagrafiche.codice AS codice_anagrafica - FROM co_iva - INNER JOIN vb_righe_venditabanco ON vb_righe_venditabanco.idiva = co_iva.id - INNER JOIN vb_venditabanco ON vb_venditabanco.id = vb_righe_venditabanco.idvendita - INNER JOIN vb_stati_vendita ON vb_venditabanco.idstato = vb_stati_vendita.id - LEFT JOIN in_interventi ON vb_righe_venditabanco.idintervento = in_interventi.id - LEFT JOIN an_anagrafiche ON an_anagrafiche.idanagrafica = in_interventi.idanagrafica + `co_iva`.`percentuale`, + `co_iva_lang`.`name` as descrizione, + `vb_venditabanco`.`id` AS id, + `vb_venditabanco`.`numero` AS numero, + SUM(`vb_righe_venditabanco`.`subtotale`) as subtotale, + SUM(`subtotale`-`sconto` + `iva`) as totale, + SUM(`iva`) as iva, + `an_anagrafiche`.`ragione_sociale`, + `an_anagrafiche`.`codice` AS codice_anagrafica + FROM `co_iva` + LEFT JOIN `co_iva_lang` ON (`co_iva`.`id` = `co_iva_lang`.`id_record` AND `co_iva_lang`.`id_lang` = '.prepare(setting('Lingua')).') + INNER JOIN `vb_righe_venditabanco` ON `vb_righe_venditabanco`.`idiva` = `co_iva`.`id` + INNER JOIN `vb_venditabanco` ON `vb_venditabanco`.`id` = `vb_righe_venditabanco`.`idvendita` + INNER JOIN `vb_stati_vendita` ON `vb_venditabanco`.`idstato` = `vb_stati_vendita`.`id` + LEFT JOIN `in_interventi` ON `vb_righe_venditabanco`.`idintervento` = `in_interventi`.`id` + LEFT JOIN `an_anagrafiche` ON `an_anagrafiche`.`idanagrafica` = `in_interventi`.`idanagrafica` WHERE - vb_venditabanco.data >= '.prepare($date_start).' AND vb_venditabanco.data <= '.prepare($date_end).' AND vb_stati_vendita.descrizione = "Pagato" + `vb_venditabanco`.`data` >= '.prepare($date_start).' AND `vb_venditabanco`.`data` <= '.prepare($date_end).' AND `vb_stati_vendita`.`descrizione` = "Pagato" GROUP BY - co_iva.id, id, an_anagrafiche.idanagrafica + `co_iva`.`id`, `id`, `an_anagrafiche`.`idanagrafica` ) AS tabella GROUP BY - iva, id, data_registrazione, data, numero_esterno, codice_tipo_documento_fe, percentuale, descrizione, numero, ragione_sociale, codice_anagrafica - ORDER BY CAST(numero_esterno AS UNSIGNED)'; + `iva`, `id`, `data_registrazione`, `data`, `numero_esterno`, `codice_tipo_documento_fe`, `percentuale`, `descrizione`, `numero`, `ragione_sociale`, `codice_anagrafica` + ORDER BY CAST(`numero_esterno` AS UNSIGNED)'; } else { $query = ' SELECT - co_documenti.data_registrazione, - co_documenti.numero_esterno, - co_documenti.data, - co_tipidocumento.codice_tipo_documento_fe, - co_iva.percentuale, - co_iva.descrizione, - co_documenti.id AS id, - IF(numero = "", numero_esterno, numero) AS numero, - SUM((subtotale-sconto+co_righe_documenti.rivalsainps)*(IF(co_tipidocumento.reversed = 0, 1,-1 ))) AS subtotale, - SUM((subtotale-sconto+co_righe_documenti.rivalsainps+iva+co_righe_documenti.rivalsainps * percentuale/100)*(IF(co_tipidocumento.reversed = 0, 1,-1 ))) AS totale, - SUM((subtotale-sconto+co_righe_documenti.rivalsainps) *percentuale/100 *(100-indetraibile)/100 *(IF(co_tipidocumento.reversed = 0, 1,-1 ))) AS iva, - an_anagrafiche.ragione_sociale, - an_anagrafiche.codice AS codice_anagrafica + `co_documenti`.`data_registrazione`, + `co_documenti`.`numero_esterno`, + `co_documenti`.`data`, + `co_tipidocumento`.`codice_tipo_documento_fe`, + `co_iva`.`percentuale`, + `co_iva_lang`.`name` as descrizione, + `co_documenti`.`id` AS id, + IF(`numero` = "", `numero_esterno`, `numero`) AS numero, + SUM((`subtotale`-`sconto`+`co_righe_documenti`.`rivalsainps`)*(IF(`co_tipidocumento`.`reversed` = 0, 1,-1 ))) AS subtotale, + SUM((`subtotale`-`sconto`+`co_righe_documenti`.`rivalsainps`+`iva`+`co_righe_documenti`.`rivalsainps` * `percentuale`/100)*(IF(`co_tipidocumento`.`reversed` = 0, 1,-1 ))) AS totale, + SUM((`subtotale`-`sconto`+`co_righe_documenti`.`rivalsainps`) *`percentuale`/100 *(100-`indetraibile`)/100 *(IF(`co_tipidocumento`.`reversed` = 0, 1,-1 ))) AS iva, + `an_anagrafiche`.`ragione_sociale`, + `an_anagrafiche`.`codice` AS codice_anagrafica FROM - co_iva - INNER JOIN co_righe_documenti ON co_righe_documenti.idiva = co_iva.id - INNER JOIN co_documenti ON co_documenti.id = co_righe_documenti.iddocumento - INNER JOIN co_tipidocumento ON co_tipidocumento.id = co_documenti.idtipodocumento - INNER JOIN an_anagrafiche ON an_anagrafiche.idanagrafica = co_documenti.idanagrafica + `co_iva` + LEFT JOIN `co_iva_lang` ON (`co_iva`.`id` = `co_iva_lang`.`id_record` AND `co_iva_lang`.`id_lang` = '.prepare(setting('Lingua')).') + INNER JOIN `co_righe_documenti` ON `co_righe_documenti`.`idiva` = `co_iva`.`id` + INNER JOIN `co_documenti` ON `co_documenti`.`id` = `co_righe_documenti`.`iddocumento` + INNER JOIN `co_tipidocumento` ON `co_tipidocumento`.`id` = `co_documenti`.`idtipodocumento` + INNER JOIN `an_anagrafiche` ON `an_anagrafiche`.`idanagrafica` = `co_documenti`.`idanagrafica` 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_competenza >= '.prepare($date_start).' AND co_documenti.data_competenza <= '.prepare($date_end).' AND '.(($id_sezionale != -1) ? 'co_documenti.id_segment = '.prepare($id_sezionale).'' : '1=1').' + `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_competenza` >= '.prepare($date_start).' AND `co_documenti`.`data_competenza` <= '.prepare($date_end).' AND '.(($id_sezionale != -1) ? '`co_documenti`.`id_segment` = '.prepare($id_sezionale).'' : '1=1').' GROUP BY - co_iva.id, co_documenti.id + `co_iva`.`id`, `co_documenti`.`id` ORDER BY - CAST( IF(dir="entrata", co_documenti.numero_esterno, co_documenti.numero) AS UNSIGNED)'; + CAST( IF(`dir`="entrata", `co_documenti`.`numero_esterno`, `co_documenti`.`numero`) AS UNSIGNED)'; } $records = $dbo->fetchArray($query); if (empty(get('notdefinitiva'))) { - $page = $dbo->fetchOne('SELECT first_page FROM co_stampecontabili WHERE dir='.prepare(filter('dir')).' AND date_start='.prepare(filter('date_start')).' AND date_end='.prepare(filter('date_end')))['first_page']; + $page = $dbo->fetchOne('SELECT `first_page` FROM `co_stampecontabili` WHERE `dir`='.prepare(filter('dir')).' AND `date_start`='.prepare(filter('date_start')).' AND `date_end`='.prepare(filter('date_end')))['first_page']; } // Sostituzioni specifiche diff --git a/update/2_4_55.sql b/update/2_4_55.sql index bf5e9ab5f..083681312 100644 --- a/update/2_4_55.sql +++ b/update/2_4_55.sql @@ -253,4 +253,43 @@ HAVING UPDATE `zz_views` INNER JOIN `zz_modules` ON `zz_views`.`id_module` = `zz_modules`.`id` SET `zz_views`.`query` = '`an_tipianagrafiche_lang`.`name`' WHERE `zz_modules`.`name` = 'Tipi di anagrafiche' AND `zz_views`.`name` = 'Descrizione'; UPDATE `zz_views` INNER JOIN `zz_modules` ON `zz_views`.`id_module` = `zz_modules`.`id` SET `zz_views`.`query` = '`an_tipianagrafiche`.`id`' WHERE `zz_modules`.`name` = 'Tipi di anagrafiche' AND `zz_views`.`name` = 'id'; -UPDATE `zz_settings` SET `tipo` = 'query=SELECT `an_anagrafiche`.`idanagrafica` AS id, `ragione_sociale` AS descrizione FROM `an_anagrafiche` INNER JOIN `an_tipianagrafiche_anagrafiche` ON `an_anagrafiche`.`idanagrafica` = `an_tipianagrafiche_anagrafiche`.`idanagrafica` WHERE `idtipoanagrafica` = (SELECT `an_tipianagrafiche`.`id` FROM `an_tipianagrafiche` LEFT JOIN `an_tipianagrafiche_lang` ON(`an_tipianagrafiche`.`id` = `an_tipianagrafiche_lang`.`id_record`) WHERE `name` = \'Azienda\') AND `deleted_at` IS NULL' WHERE `zz_settings`.`nome` = 'Azienda predefinita'; \ No newline at end of file +UPDATE `zz_settings` SET `tipo` = 'query=SELECT `an_anagrafiche`.`idanagrafica` AS id, `ragione_sociale` AS descrizione FROM `an_anagrafiche` INNER JOIN `an_tipianagrafiche_anagrafiche` ON `an_anagrafiche`.`idanagrafica` = `an_tipianagrafiche_anagrafiche`.`idanagrafica` WHERE `idtipoanagrafica` = (SELECT `an_tipianagrafiche`.`id` FROM `an_tipianagrafiche` LEFT JOIN `an_tipianagrafiche_lang` ON(`an_tipianagrafiche`.`id` = `an_tipianagrafiche_lang`.`id_record`) WHERE `name` = \'Azienda\') AND `deleted_at` IS NULL' WHERE `zz_settings`.`nome` = 'Azienda predefinita'; + +-- Aggiunta tabella co_iva_lang +CREATE TABLE IF NOT EXISTS `co_iva_lang` ( + `id` int NOT NULL, + `id_lang` int NOT NULL, + `id_record` int NOT NULL, + `name` VARCHAR(255) NOT NULL +); +ALTER TABLE `co_iva_lang` + ADD PRIMARY KEY (`id`); + +ALTER TABLE `co_iva_lang` + MODIFY `id` int NOT NULL AUTO_INCREMENT; + +INSERT INTO `co_iva_lang` (`id`, `id_lang`, `id_record`, `name`) SELECT NULL, (SELECT `id` FROM `zz_langs` WHERE `iso_code` = 'it'), `id`, `descrizione` FROM `co_iva`; + +ALTER TABLE `co_iva` + DROP `descrizione`; + +ALTER TABLE `co_iva_lang` ADD CONSTRAINT `co_iva_lang_ibfk_1` FOREIGN KEY (`id_record`) REFERENCES `co_iva`(`id`) ON DELETE CASCADE ON UPDATE RESTRICT; + +-- Allineamento vista Anagrafiche +UPDATE `zz_modules` SET `options` = " +SELECT + |select| +FROM + `co_iva` + LEFT JOIN `co_iva_lang` ON (`co_iva`.`id` = `co_iva_lang`.`id_record` AND |lang|) +WHERE + 1=1 AND `deleted_at` IS NULL +HAVING + 2=2" WHERE `name` = 'IVA'; +UPDATE `zz_views` INNER JOIN `zz_modules` ON `zz_views`.`id_module` = `zz_modules`.`id` SET `zz_views`.`query` = '`co_iva_lang`.`name`' WHERE `zz_modules`.`name` = 'IVA' AND `zz_views`.`name` = 'descrizione'; +UPDATE `zz_views` INNER JOIN `zz_modules` ON `zz_views`.`id_module` = `zz_modules`.`id` SET `zz_views`.`query` = '`co_iva`.`id`' WHERE `zz_modules`.`name` = 'IVA' AND `zz_views`.`name` = 'id'; + +SELECT @codice := MAX(CAST(codice AS UNSIGNED))+1 FROM co_iva WHERE deleted_at IS NULL; +UPDATE co_iva SET codice = @codice WHERE id = (SELECT id_record FROM co_iva_lang WHERE name = 'Art.9 c.1 DPR 633/1972'); +UPDATE co_iva SET codice = @codice+1 WHERE id = (SELECT id_record FROM co_iva_lang WHERE name = 'Non imp. art.72 DPR 633/1972'); +UPDATE co_iva SET codice = @codice+2 WHERE id = (SELECT id_record FROM co_iva_lang WHERE name = 'Art. 71 DPR 633/1972'); \ No newline at end of file diff --git a/update/tables.php b/update/tables.php index 71f8c4878..0e98655de 100755 --- a/update/tables.php +++ b/update/tables.php @@ -28,6 +28,7 @@ return [ 'co_contratti_tipiintervento', 'co_documenti', 'co_iva', + 'co_iva_lang', 'co_movimenti', 'co_movimenti_modelli', 'co_fatturazione_contratti', From b23315f2b23f6809345ecedf6f1c39fc869e1a4c Mon Sep 17 00:00:00 2001 From: MatteoPistorello Date: Wed, 7 Feb 2024 09:42:16 +0100 Subject: [PATCH 5/9] Fix minore importFE --- plugins/importFE/generate.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/importFE/generate.php b/plugins/importFE/generate.php index c0e5cd0ce..d36713d2d 100755 --- a/plugins/importFE/generate.php +++ b/plugins/importFE/generate.php @@ -326,7 +326,7 @@ echo '
    - {[ "type": "checkbox", "label": "'.tr('Creazione seriali').'", "name": "flag_crea_seriali", "value": '.setting('Creazione seriali in import FE').', "help": "'.tr('Nel caso di righe contenenti serial, il gestionale procede alla registrazione del serial').'" ]} + {[ "type": "checkbox", "label": "'.tr('Creazione seriali').'", "name": "flag_crea_seriali", "value": "'.setting('Creazione seriali in import FE').'", "help": "'.tr('Nel caso di righe contenenti serial, il gestionale procede alla registrazione del serial').'" ]}
    '; $ritenuta = $dati_generali['DatiRitenuta']; From b56416712f65d818c0fda291021f1d5b3db60e88 Mon Sep 17 00:00:00 2001 From: MatteoPistorello Date: Wed, 7 Feb 2024 09:52:14 +0100 Subject: [PATCH 6/9] Fix creazione banca in fase di importFE --- plugins/importFE/src/FatturaElettronica.php | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/plugins/importFE/src/FatturaElettronica.php b/plugins/importFE/src/FatturaElettronica.php index 519cd47a8..4d93ba925 100755 --- a/plugins/importFE/src/FatturaElettronica.php +++ b/plugins/importFE/src/FatturaElettronica.php @@ -350,7 +350,11 @@ class FatturaElettronica if (empty($banca_fornitore)) { $anagrafica = $fattura->anagrafica; $nome = $info_pagamento['IstitutoFinanziario'] ?: 'Banca di '.$anagrafica->ragione_sociale; - $banca_fornitore = Banca::build($anagrafica, $nome, $info_pagamento['IBAN'], $info_pagamento['BIC'] ?: ''); + try { + $banca_fornitore = Banca::build($anagrafica, $nome, $info_pagamento['IBAN'], $info_pagamento['BIC'] ?: ''); + } catch (\UnexpectedValueException $e) { + flash()->error(tr("Errore durante la creazione della banca: verificare la correttezza dei dati").'.'); + } } } From 5c38f26f48427ee99bdd713cc484b29ef723663f Mon Sep 17 00:00:00 2001 From: MatteoPistorello Date: Wed, 7 Feb 2024 14:18:13 +0100 Subject: [PATCH 7/9] Fix data inizio e fine intervento --- modules/fatture/edit.php | 2 +- modules/interventi/actions.php | 2 +- modules/interventi/modutil.php | 2 +- modules/interventi/src/Intervento.php | 4 ++-- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/modules/fatture/edit.php b/modules/fatture/edit.php index 0d72537c6..24d45ac7d 100755 --- a/modules/fatture/edit.php +++ b/modules/fatture/edit.php @@ -180,7 +180,7 @@ if ($dir == 'entrata') { $interventi_collegati = $fattura->getDocumentiCollegati()[Intervento::class]; if (!empty($interventi_collegati)) { foreach ($interventi_collegati as $intervento) { - $fine_intervento = $intervento->fine ?: $intervento->data_richiesta; + $fine_intervento = $intervento->fine; $fine_intervento = new Carbon($fine_intervento); if ($fine_intervento->diffInDays($data_fattura, false) < 0) { diff --git a/modules/interventi/actions.php b/modules/interventi/actions.php index f5741494b..f8bb27809 100644 --- a/modules/interventi/actions.php +++ b/modules/interventi/actions.php @@ -515,7 +515,7 @@ switch (post('op')) { $impianto = Impianto::find($id_impianto); if (!empty($impianto)) { // Data di inizio dell'intervento (data_richiesta in caso di assenza di sessioni) - $data_registrazione = $intervento->inizio ?: $intervento->data_richiesta; + $data_registrazione = $intervento->inizio; // Creazione in base alla quantità for ($q = 0; $q < $articolo->qta; ++$q) { diff --git a/modules/interventi/modutil.php b/modules/interventi/modutil.php index 9821e3eb4..24f59e6af 100755 --- a/modules/interventi/modutil.php +++ b/modules/interventi/modutil.php @@ -71,7 +71,7 @@ if (!function_exists('link_componente_to_articolo')) { $intervento = Intervento::find($id_intervento); // Data di inizio dell'intervento (data_richiesta in caso di assenza di sessioni) - $data = $intervento->inizio ?: $intervento->data_richiesta; + $data = $intervento->inizio; // Se l'articolo aggiunto è collegato a un componente, aggiungo il componente all'impianto selezionato $componente_articolo = $dbo->fetchOne('SELECT componente_filename, contenuto FROM mg_articoli WHERE id = '.prepare($id_articolo)); diff --git a/modules/interventi/src/Intervento.php b/modules/interventi/src/Intervento.php index da1356bcc..43681d9de 100755 --- a/modules/interventi/src/Intervento.php +++ b/modules/interventi/src/Intervento.php @@ -102,7 +102,7 @@ class Intervento extends Document $this->info['inizio'] = $sessioni->min('orario_inizio'); } - return $this->info['inizio']; + return $this->info['inizio'] ?: $this->data_richiesta; } public function getFineAttribute() @@ -113,7 +113,7 @@ class Intervento extends Document $this->info['fine'] = $sessioni->max('orario_fine'); } - return $this->info['fine']; + return $this->info['fine'] ?: $this->data_richiesta; } public function getModuleAttribute() From 305c772f808fbb63deaf940f30de9f7b8fb4859e Mon Sep 17 00:00:00 2001 From: Beppe <38595969+CJBeppe@users.noreply.github.com> Date: Wed, 7 Feb 2024 15:57:40 +0100 Subject: [PATCH 8/9] Fix lettura valori da campi personalizzati --- src/HTMLBuilder/Manager/FieldManager.php | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/HTMLBuilder/Manager/FieldManager.php b/src/HTMLBuilder/Manager/FieldManager.php index ac1e29817..7b3fde900 100755 --- a/src/HTMLBuilder/Manager/FieldManager.php +++ b/src/HTMLBuilder/Manager/FieldManager.php @@ -149,8 +149,6 @@ class FieldManager implements ManagerInterface } $query .= ' AND `zz_fields`.`name` = '.prepare($name); - $query .= ' AND `top` = '.((isset($options['position']) && $options['position'] == 'top') ? 1 : 0).' ORDER BY `order`'; - $results = $database->fetchArray($query); return $results[0]['value']; From 0f60108464f6749293f7dc838447904f6cb22a7c Mon Sep 17 00:00:00 2001 From: Pek5892 Date: Wed, 7 Feb 2024 17:11:04 +0100 Subject: [PATCH 9/9] Fix per avviso ckeditor --- assets/src/js/functions/textarea.js | 1 + 1 file changed, 1 insertion(+) diff --git a/assets/src/js/functions/textarea.js b/assets/src/js/functions/textarea.js index 73b067eb0..b1c5bd398 100644 --- a/assets/src/js/functions/textarea.js +++ b/assets/src/js/functions/textarea.js @@ -119,6 +119,7 @@ function initCKEditor(input) { filebrowserUploadMethod: 'form', fullPage: (input.hasAttribute('use_full_ckeditor')) ? true : false, allowedContent: (input.hasAttribute('use_full_ckeditor')) ? true : false, + versionCheck: false, extraPlugins: 'scayt,textwatcher,autocomplete,textmatch,emoji', skin: 'moono-lisa', });