diff --git a/modules/anagrafiche/ajax/select.php b/modules/anagrafiche/ajax/select.php index 482e4e92b..0ab06a5e1 100755 --- a/modules/anagrafiche/ajax/select.php +++ b/modules/anagrafiche/ajax/select.php @@ -37,7 +37,7 @@ switch ($resource) { `contratto`.`id` AS id_contratto, `contratto`.`descrizione` AS descrizione_contratto, `co_pagamenti`.`id` AS id_pagamento, - `co_pagamenti`.`descrizione` AS desc_pagamento, + `co_pagamenti_lang`.`name` AS desc_pagamento, `banca_vendite`.`id` AS id_banca_vendite, CONCAT(`banca_vendite`.`nome`, ' - ', `banca_vendite`.`iban`) AS descrizione_banca_vendite FROM @@ -51,12 +51,11 @@ switch ($resource) { LEFT JOIN (SELECT `co_contratti`.`id`, `idanagrafica`, CONCAT('Contratto ', `numero`, ' del ', DATE_FORMAT(`data_bozza`, '%d/%m/%Y'), ' - ', `co_contratti`.`nome`, ' [', `co_staticontratti`.`descrizione` , ']') AS descrizione FROM `co_contratti` LEFT JOIN `co_staticontratti` ON `co_contratti`.`idstato`=`co_staticontratti`.`id` WHERE `co_contratti`.`predefined`=1 AND `is_pianificabile`=1) AS contratto ON `an_anagrafiche`.`idanagrafica`=`contratto`.`idanagrafica` - LEFT JOIN - `co_pagamenti` - ON `an_anagrafiche`.`idpagamento_vendite`=`co_pagamenti`.`id` + LEFT JOIN `co_pagamenti` ON `an_anagrafiche`.`idpagamento_vendite`=`co_pagamenti`.`id` + LEFT JOIN `co_pagamenti_lang` ON (`co_pagamenti`.`id`=`co_pagamenti_lang`.`id_record` AND `co_pagamenti_lang`.`id_lang`= ".prepare(setting('Lingua')).') LEFT JOIN `co_banche` banca_vendite - ON `co_pagamenti`.`idconto_vendite` = `banca_vendite`.`id_pianodeiconti3` AND `banca_vendite`.`id_anagrafica` = ".prepare($id_azienda).' AND `banca_vendite`.`deleted_at` IS NULL AND `banca_vendite`.`predefined` = 1 + ON `co_pagamenti`.`idconto_vendite` = `banca_vendite`.`id_pianodeiconti3` AND `banca_vendite`.`id_anagrafica` = '.prepare($id_azienda).' AND `banca_vendite`.`deleted_at` IS NULL AND `banca_vendite`.`predefined` = 1 |where| ORDER BY `ragione_sociale`'; @@ -103,14 +102,33 @@ switch ($resource) { case 'fornitori': $id_azienda = setting('Azienda predefinita'); - $query = "SELECT `an_anagrafiche`.`idanagrafica` AS id, CONCAT(`ragione_sociale`, IF(`citta` IS NULL OR `citta` = '', '', CONCAT(' (', `citta`, ')')), IF(`an_anagrafiche`.`deleted_at` IS NULL, '', ' (".tr('eliminata').")'),' - ', `an_anagrafiche`.`codice`) AS descrizione, `idtipointervento_default` AS `idtipointervento`, `co_pagamenti`.`id` AS id_pagamento, `co_pagamenti`.`descrizione` AS desc_pagamento, `banca_acquisti`.`id` AS id_banca_acquisti, CONCAT(`banca_acquisti`.`nome`, ' - ', `banca_acquisti`.`iban`) AS descrizione_banca_acquisti FROM `an_anagrafiche` INNER JOIN (`an_tipianagrafiche_anagrafiche` INNER JOIN `an_tipianagrafiche` ON `an_tipianagrafiche_anagrafiche`.`idtipoanagrafica`=`an_tipianagrafiche`.`id` LEFT JOIN `an_tipianagrafiche_lang` ON (`an_tipianagrafiche`.`id` = `an_tipianagrafiche_lang`.`id_record` AND `an_tipianagrafiche_lang`.`id_lang` = ".prepare(setting('Lingua')).')) ON `an_anagrafiche`.`idanagrafica`=`an_tipianagrafiche_anagrafiche`.`idanagrafica` LEFT JOIN `co_pagamenti` ON `an_anagrafiche`.`idpagamento_acquisti`=`co_pagamenti`.`id` LEFT JOIN `co_banche` banca_acquisti ON `co_pagamenti`.`idconto_acquisti` = `banca_acquisti`.`id_pianodeiconti3` AND `banca_acquisti`.`id_anagrafica` = '.prepare($id_azienda).' AND `banca_acquisti`.`deleted_at` IS NULL AND `banca_acquisti`.`predefined` = 1 |where| ORDER BY `ragione_sociale`'; + $query = "SELECT + `an_anagrafiche`.`idanagrafica` AS id, + CONCAT(`ragione_sociale`, IF(`citta` IS NULL OR `citta` = '', '', CONCAT(' (', `citta`, ')')), IF(`an_anagrafiche`.`deleted_at` IS NULL, '', ' (".tr('eliminata').")'),' - ', `an_anagrafiche`.`codice`) AS descrizione, + `idtipointervento_default` AS `idtipointervento`, + `co_pagamenti`.`id` AS id_pagamento, + `co_pagamenti_lang`.`name` AS desc_pagamento, + `banca_acquisti`.`id` AS id_banca_acquisti, + CONCAT(`banca_acquisti`.`nome`, ' - ', `banca_acquisti`.`iban`) AS descrizione_banca_acquisti + FROM + `an_anagrafiche` + INNER JOIN ( + `an_tipianagrafiche_anagrafiche` + INNER JOIN `an_tipianagrafiche` ON `an_tipianagrafiche_anagrafiche`.`idtipoanagrafica`=`an_tipianagrafiche`.`id` + LEFT JOIN `an_tipianagrafiche_lang` ON (`an_tipianagrafiche`.`id` = `an_tipianagrafiche_lang`.`id_record` AND `an_tipianagrafiche_lang`.`id_lang` = ".prepare(setting('Lingua')).')) ON `an_anagrafiche`.`idanagrafica`=`an_tipianagrafiche_anagrafiche`.`idanagrafica` + LEFT JOIN `co_pagamenti` ON `an_anagrafiche`.`idpagamento_acquisti`=`co_pagamenti`.`id` + LEFT JOIN `co_pagamenti_lang` co_pagamenti_lang ON (`co_pagamenti`.`id` = `co_pagamenti_lang`.`id_record` AND `co_pagamenti_lang`.`id_lang` = '.prepare(setting('Lingua')).") + LEFT JOIN `co_banche` banca_acquisti ON `co_pagamenti`.`idconto_acquisti` = `banca_acquisti`.`id_pianodeiconti3` AND `banca_acquisti`.`id_anagrafica` = '.prepare($id_azienda).' AND `banca_acquisti`.`deleted_at` IS NULL AND `banca_acquisti`.`predefined` = 1 + |where| + ORDER BY + `ragione_sociale`"; foreach ($elements as $element) { $filter[] = '`an_anagrafiche`.`idanagrafica`='.prepare($element); } if (empty($filter)) { - $where[] = "`name` = 'Fornitore'"; + $where[] = "`an_tipianagrafiche_lang`.`name` = 'Fornitore'"; $where[] = '`an_anagrafiche`.`deleted_at` IS NULL'; } diff --git a/modules/anagrafiche/edit.php b/modules/anagrafiche/edit.php index 0f0326e18..17f8ffda7 100755 --- a/modules/anagrafiche/edit.php +++ b/modules/anagrafiche/edit.php @@ -500,7 +500,7 @@ if ($is_cliente or $is_fornitore or $is_tecnico) {
- {[ "type": "select", "label": "'.tr('Pagamento predefinito').'", "name": "idpagamento_vendite", "values": "query=SELECT id, descrizione FROM co_pagamenti GROUP BY descrizione ORDER BY descrizione ASC", "value": "$idpagamento_vendite$" ]} + {[ "type": "select", "label": "'.tr('Pagamento predefinito').'", "name": "idpagamento_vendite", "values": "query=SELECT `co_pagamenti`.`id`, `co_pagamenti_lang`.`name` AS descrizione FROM `co_pagamenti` LEFT JOIN `co_pagamenti_lang` ON (`co_pagamenti`.`id` = `co_pagamenti_lang`.`id_record` AND `co_pagamenti_lang`.`id_lang` = '.prepare(setting('Lingua')).') GROUP BY `descrizione` ORDER BY `descrizione` ASC", "value": "$idpagamento_vendite$" ]}
@@ -576,7 +576,7 @@ if ($is_cliente or $is_fornitore or $is_tecnico) {
- {[ "type": "select", "label": "'.tr('Pagamento predefinito').'", "name": "idpagamento_acquisti", "values": "query=SELECT id, descrizione FROM co_pagamenti GROUP BY descrizione ORDER BY descrizione ASC", "value": "$idpagamento_acquisti$" ]} + {[ "type": "select", "label": "'.tr('Pagamento predefinito').'", "name": "idpagamento_acquisti", "values": "query=SELECT `co_pagamenti`.`id`, `co_pagamenti_lang`.`name` AS descrizione FROM `co_pagamenti` LEFT JOIN `co_pagamenti_lang` ON (`co_pagamenti`.`id` = `co_pagamenti_lang`.`id_record` AND `co_pagamenti_lang`.`id_lang` = '.prepare(setting('Lingua')).') GROUP BY `descrizione` ORDER BY `descrizione` ASC", "value": "$idpagamento_acquisti$" ]}
diff --git a/modules/contratti/edit.php b/modules/contratti/edit.php index 7b50d504f..c53e5f4ce 100755 --- a/modules/contratti/edit.php +++ b/modules/contratti/edit.php @@ -97,7 +97,7 @@ echo '
- {[ "type": "select", "label": "", "name": "idpagamento", "values": "query=SELECT id, descrizione FROM co_pagamenti GROUP BY descrizione ORDER BY descrizione", "value": "$idpagamento$" ]} + {[ "type": "select", "label": "", "name": "idpagamento", "values": "query=SELECT `co_pagamenti`.`id`, `co_pagamenti_lang`.`name` AS `descrizione` FROM `co_pagamenti` LEFT JOIN `co_pagamenti_lang` ON (`co_pagamenti`.`id` = `co_pagamenti_lang`.`id_record` AND `co_pagamenti_lang`.`id_lang` = ".prepare(setting('Lingua')).") GROUP BY `descrizione` ORDER BY `descrizione`", "value": "$idpagamento$" ]}
diff --git a/modules/contratti/row-list.php b/modules/contratti/row-list.php index d8e2eee32..b833acb40 100755 --- a/modules/contratti/row-list.php +++ b/modules/contratti/row-list.php @@ -199,7 +199,7 @@ foreach ($righe as $riga) { // Iva echo ' -
'.$riga->aliquota->descrizione.(($riga->aliquota->esente) ? ' ('.$riga->aliquota->codice_natura_fe.')' : null).' +
'.$riga->aliquota->name.(($riga->aliquota->esente) ? ' ('.$riga->aliquota->codice_natura_fe.')' : null).' '; } diff --git a/modules/ddt/actions.php b/modules/ddt/actions.php index 868225ceb..b9bf6b3d4 100755 --- a/modules/ddt/actions.php +++ b/modules/ddt/actions.php @@ -30,6 +30,7 @@ use Modules\DDT\DDT; use Modules\DDT\Stato; use Modules\DDT\Tipo; use Modules\Iva\Aliquota; +use Modules\Pagamenti\Pagamento; $module = Modules::get($id_module); @@ -80,9 +81,7 @@ switch (filter('op')) { } // Leggo la descrizione del pagamento - $query = 'SELECT descrizione FROM co_pagamenti WHERE id='.prepare($idpagamento); - $rs = $dbo->fetchArray($query); - $pagamento = $rs[0]['descrizione']; + $pagamento = Pagamento::find($idpagamento)->name; $ddt->data = post('data'); $ddt->numero_esterno = $numero_esterno; diff --git a/modules/ddt/row-list.php b/modules/ddt/row-list.php index 3a58d9045..d91ee686d 100755 --- a/modules/ddt/row-list.php +++ b/modules/ddt/row-list.php @@ -221,7 +221,7 @@ foreach ($righe as $riga) { // Iva echo ' -
'.$riga->aliquota->descrizione.(($riga->aliquota->esente) ? ' ('.$riga->aliquota->codice_natura_fe.')' : null).' +
'.$riga->aliquota->name.(($riga->aliquota->esente) ? ' ('.$riga->aliquota->codice_natura_fe.')' : null).' '; } diff --git a/modules/ddt/src/DDT.php b/modules/ddt/src/DDT.php index f7b9c1489..3cdf5c324 100755 --- a/modules/ddt/src/DDT.php +++ b/modules/ddt/src/DDT.php @@ -23,6 +23,7 @@ use Common\Components\Component; use Common\Document; use Modules\Anagrafiche\Anagrafica; use Modules\Fatture\Fattura; +use Modules\Pagamenti\Pagamento; use Traits\RecordTrait; use Traits\ReferenceTrait; use Util\Generator; @@ -75,9 +76,7 @@ class DDT extends Document } // Tipo di pagamento e banca predefinite dall'anagrafica - $id_pagamento = $database->fetchOne('SELECT id FROM co_pagamenti WHERE id = :id_pagamento', [ - ':id_pagamento' => $anagrafica['idpagamento_'.$conto], - ])['id']; + $id_pagamento = Pagamento::find($anagrafica['idpagamento_'.$conto])->id_record; // Se il ddt è un ddt cliente e non è stato associato un pagamento predefinito al cliente leggo il pagamento dalle impostazioni if ($direzione == 'entrata' && empty($id_pagamento)) { diff --git a/modules/fasce_orarie/edit.php b/modules/fasce_orarie/edit.php index a8d03a66c..0c1c7ff6e 100644 --- a/modules/fasce_orarie/edit.php +++ b/modules/fasce_orarie/edit.php @@ -19,6 +19,8 @@ include_once __DIR__.'/../../core.php'; +use Modules\Pagamenti\Pagamento; + // $block_edit = $record['is_predefined']; ?> @@ -75,7 +77,7 @@ include_once __DIR__.'/../../core.php'; fetchArray('SELECT * FROM `co_pagamenti` WHERE descrizione='.prepare($record['descrizione']).' ORDER BY `num_giorni` ASC'); + $results = (new Pagamento())->getByName(prepare($record['descrizione']))->id_record; $numero_data = 1; foreach ($results as $result) { } diff --git a/modules/fatture/actions.php b/modules/fatture/actions.php index 9b1ad590a..34f8aad84 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; diff --git a/modules/fatture/init.php b/modules/fatture/init.php index 95058a804..2960a820b 100755 --- a/modules/fatture/init.php +++ b/modules/fatture/init.php @@ -36,33 +36,34 @@ if (isset($id_record)) { $is_fiscale = $fattura->isFiscale(); } - $record = $dbo->fetchOne('SELECT co_documenti.*, - co_tipidocumento.reversed AS is_reversed, - co_documenti.idagente AS idagente_fattura, - co_documenti.note, - co_documenti.note_aggiuntive, - co_documenti.idpagamento, - co_documenti.id AS iddocumento, - co_documenti.split_payment AS split_payment, - co_statidocumento.descrizione AS `stato`, - co_tipidocumento.descrizione AS `descrizione_tipo`, - co_tipidocumento.id AS `idtipodocumento`, - (SELECT is_fiscale FROM zz_segments WHERE zz_segments.id = co_documenti.id_segment) AS is_fiscale, - (SELECT descrizione FROM co_ritenutaacconto WHERE id=idritenutaacconto) AS ritenutaacconto_desc, - (SELECT descrizione FROM co_rivalse WHERE id=idrivalsainps) AS rivalsainps_desc, - (SELECT descrizione FROM dt_causalet WHERE id=idcausalet) AS causale_desc - FROM co_documenti - LEFT JOIN co_statidocumento ON co_documenti.idstatodocumento=co_statidocumento.id - INNER JOIN an_anagrafiche ON co_documenti.idanagrafica=an_anagrafiche.idanagrafica - INNER JOIN co_tipidocumento ON co_documenti.idtipodocumento=co_tipidocumento.id - LEFT JOIN co_pagamenti ON co_documenti.idpagamento=co_pagamenti.id - WHERE co_tipidocumento.dir = '.prepare($dir).' AND co_documenti.id='.prepare($id_record)); + $record = $dbo->fetchOne('SELECT `co_documenti`.*, + `co_tipidocumento`.`reversed` AS is_reversed, + `co_documenti`.`idagente` AS idagente_fattura, + `co_documenti`.`note`, + `co_documenti`.`note_aggiuntive`, + `co_documenti`.`idpagamento`, + `co_documenti`.`id` AS iddocumento, + `co_documenti`.`split_payment` AS split_payment, + `co_statidocumento`.`descrizione` AS `stato`, + `co_tipidocumento`.`descrizione` AS `descrizione_tipo`, + `co_tipidocumento`.`id` AS `idtipodocumento`, + (SELECT `is_fiscale` FROM `zz_segments` WHERE `zz_segments`.`id` = `co_documenti`.`id_segment`) AS is_fiscale, + (SELECT `descrizione` FROM `co_ritenutaacconto` WHERE `id`=`idritenutaacconto`) AS ritenutaacconto_desc, + (SELECT `descrizione` FROM `co_rivalse` WHERE `id`=`idrivalsainps`) AS rivalsainps_desc, + (SELECT `descrizione` FROM `dt_causalet` WHERE `id`=`idcausalet`) AS causale_desc + FROM `co_documenti` + LEFT JOIN `co_statidocumento` ON `co_documenti`.`idstatodocumento`=`co_statidocumento`.`id` + INNER JOIN `an_anagrafiche` ON `co_documenti`.`idanagrafica`=`an_anagrafiche`.`idanagrafica` + INNER JOIN `co_tipidocumento` ON `co_documenti`.`idtipodocumento`=`co_tipidocumento`.`id` + LEFT JOIN `co_pagamenti` ON `co_documenti`.`idpagamento`=`co_pagamenti`.`id` + LEFT JOIN `co_pagamenti_lang` ON (`co_pagamenti_lang`.`id_record` = `co_pagamenti`.`id` AND `co_pagamenti_lang`.`id_lang` = '.prepare(setting('Lingua')).') + WHERE `co_tipidocumento`.`dir` = '.prepare($dir).' AND `co_documenti`.`id`='.prepare($id_record)); // Note di credito collegate - $note_accredito = $dbo->fetchArray("SELECT co_documenti.id, IF(numero_esterno != '', numero_esterno, numero) AS numero, data FROM co_documenti JOIN co_tipidocumento ON co_documenti.idtipodocumento=co_tipidocumento.id WHERE reversed = 1 AND ref_documento=".prepare($id_record)); + $note_accredito = $dbo->fetchArray("SELECT `co_documenti`.`id`, IF(`numero_esterno` != '', `numero_esterno`, `numero`) AS numero, data FROM `co_documenti` JOIN `co_tipidocumento` ON `co_documenti`.`idtipodocumento`=`co_tipidocumento`.`id` WHERE `reversed` = 1 AND `ref_documento`=".prepare($id_record)); // Blocco gestito dallo stato della Fattura Elettronica - $stato_fe = $database->fetchOne('SELECT * FROM fe_stati_documento WHERE codice = '.prepare($fattura->codice_stato_fe)); + $stato_fe = $database->fetchOne('SELECT * FROM `fe_stati_documento` WHERE `codice` = '.prepare($fattura->codice_stato_fe)); $abilita_genera = empty($fattura->codice_stato_fe) || intval($stato_fe['is_generabile']); // Controllo autofattura e gestione avvisi diff --git a/modules/fatture/row-list.php b/modules/fatture/row-list.php index 55022af77..00d4c96db 100755 --- a/modules/fatture/row-list.php +++ b/modules/fatture/row-list.php @@ -260,7 +260,7 @@ foreach ($righe as $riga) { echo ' '.moneyFormat($riga->iva_unitaria_scontata).' -
'.$riga->aliquota->descrizione.' ('.$riga->aliquota->esigibilita.') '.(($riga->aliquota->esente) ? ' ('.$riga->aliquota->codice_natura_fe.')' : null).' +
'.$riga->aliquota->name.' ('.$riga->aliquota->esigibilita.') '.(($riga->aliquota->esente) ? ' ('.$riga->aliquota->codice_natura_fe.')' : null).' '; // Importo diff --git a/modules/fatture/src/Fattura.php b/modules/fatture/src/Fattura.php index 44caa6600..7323f2f2b 100755 --- a/modules/fatture/src/Fattura.php +++ b/modules/fatture/src/Fattura.php @@ -145,9 +145,7 @@ class Fattura extends Document // $model->id_banca_controparte = ; // Tipo di pagamento dall'anagrafica controparte - $id_pagamento = $database->fetchOne('SELECT id FROM co_pagamenti WHERE id = :id_pagamento', [ - ':id_pagamento' => $anagrafica->{'idpagamento_'.$conto}, - ])['id']; + $id_pagamento = Pagamento::find($anagrafica['idpagamento_'.$conto])->id_record; // Per Fatture di Vendita senza pagamento predefinito per il Cliente, si utilizza il pagamento predefinito dalle Impostazioni if ($direzione == 'entrata' && empty($id_pagamento)) { @@ -163,12 +161,12 @@ class Fattura extends Document $id_banca_azienda = $anagrafica->{'idbanca_'.$conto}; if (empty($id_banca_azienda)) { $azienda = Anagrafica::find(setting('Azienda predefinita')); - $id_banca_azienda = $database->fetchOne('SELECT id FROM co_banche WHERE deleted_at IS NULL AND predefined=1 AND id_pianodeiconti3 = (SELECT idconto_'.$conto.' FROM co_pagamenti WHERE id = :id_pagamento) AND id_anagrafica = :id_anagrafica', [ + $id_banca_azienda = $database->fetchOne('SELECT `id` FROM `co_banche` WHERE `deleted_at` IS NULL AND `predefined`=1 AND `id_pianodeiconti3` = (SELECT idconto_'.$conto.' FROM `co_pagamenti` WHERE `id` = :id_pagamento) AND `id_anagrafica` = :id_anagrafica', [ ':id_pagamento' => $id_pagamento, ':id_anagrafica' => $azienda->id, ])['id']; if (empty($id_banca_azienda)) { - $id_banca_azienda = $database->fetchOne('SELECT id FROM co_banche WHERE deleted_at IS NULL AND id_pianodeiconti3 = (SELECT idconto_'.$conto.' FROM co_pagamenti WHERE id = :id_pagamento) AND id_anagrafica = :id_anagrafica', [ + $id_banca_azienda = $database->fetchOne('SELECT `id` FROM `co_banche` WHERE `deleted_at` IS NULL AND `id_pianodeiconti3` = (SELECT idconto_'.$conto.' FROM `co_pagamenti` WHERE `id` = :id_pagamento) AND `id_anagrafica` = :id_anagrafica', [ ':id_pagamento' => $id_pagamento, ':id_anagrafica' => $azienda->id, ])['id']; diff --git a/modules/interventi/actions.php b/modules/interventi/actions.php index 7002eabb3..ca6a039f4 100644 --- a/modules/interventi/actions.php +++ b/modules/interventi/actions.php @@ -20,6 +20,7 @@ include_once __DIR__.'/../../core.php'; use Carbon\CarbonPeriod; +use Models\OperationLog; use Models\Plugin; use Modules\Anagrafiche\Anagrafica; use Modules\Articoli\Articolo as ArticoloOriginale; @@ -38,7 +39,6 @@ use Modules\TipiIntervento\Tipo as TipoSessione; use Plugins\ComponentiImpianti\Componente; use Plugins\ListinoClienti\DettaglioPrezzo; use Plugins\PianificazioneInterventi\Promemoria; -use Models\OperationLog; $modulo_impianti = Modules::get('Impianti'); $plugin_impianti = Plugin::pool('Impianti'); diff --git a/modules/interventi/init.php b/modules/interventi/init.php index 5aebcfe74..651ed38fd 100755 --- a/modules/interventi/init.php +++ b/modules/interventi/init.php @@ -25,12 +25,21 @@ if (isset($id_record)) { $intervento = Intervento::find($id_record); $record = $dbo->fetchOne('SELECT *, - (SELECT tipo FROM an_anagrafiche WHERE idanagrafica = in_interventi.idanagrafica) AS tipo_anagrafica, - (SELECT is_completato FROM in_statiintervento WHERE idstatointervento=in_interventi.idstatointervento) AS flag_completato, - IF((in_interventi.idsede_destinazione = 0), (SELECT idzona FROM an_anagrafiche WHERE idanagrafica = in_interventi.idanagrafica), (SELECT idzona FROM an_sedi WHERE id = in_interventi.idsede_destinazione)) AS idzona, - (SELECT colore FROM in_statiintervento WHERE idstatointervento=in_interventi.idstatointervento) AS colore, - in_interventi.id_preventivo as idpreventivo, - in_interventi.id_contratto as idcontratto, - in_interventi.id_ordine as idordine - FROM in_interventi WHERE id='.prepare($id_record)); + `in_interventi`.`descrizione` AS descrizione, + `in_interventi`.`codice` AS codice, + `an_anagrafiche`.`tipo` AS tipo_anagrafica, + `in_statiintervento`.`is_completato` AS flag_completato, + IF((`in_interventi`.`idsede_destinazione` = 0), `an_anagrafiche`.`idzona`, `an_sedi`.`idzona`) AS idzona, + `in_statiintervento`.`colore` AS colore, + `in_interventi`.`idanagrafica` as idanagrafica, + `in_interventi`.`id_preventivo` as idpreventivo, + `in_interventi`.`id_contratto` as idcontratto, + `in_interventi`.`id_ordine` as idordine + FROM + in_interventi + INNER JOIN `an_anagrafiche` ON `in_interventi`.`idanagrafica` = `an_anagrafiche`.`idanagrafica` + LEFT JOIN `an_sedi` ON `in_interventi`.`idsede_destinazione` = `an_sedi`.`id` + INNER JOIN `in_statiintervento` ON `in_interventi`.`idstatointervento` = `in_statiintervento`.`idstatointervento` + WHERE + `in_interventi`.`id`='.prepare($id_record)); } diff --git a/modules/interventi/row-list.php b/modules/interventi/row-list.php index 2d54b9427..492d8adf8 100755 --- a/modules/interventi/row-list.php +++ b/modules/interventi/row-list.php @@ -171,7 +171,7 @@ foreach ($righe as $riga) { // Iva echo ' -
'.$riga->aliquota->descrizione.(($riga->aliquota->esente) ? ' ('.$riga->aliquota->codice_natura_fe.')' : null).' +
'.$riga->aliquota->name.(($riga->aliquota->esente) ? ' ('.$riga->aliquota->codice_natura_fe.')' : null).' '; } diff --git a/modules/ordini/actions.php b/modules/ordini/actions.php index 55965ad8d..4ed059479 100755 --- a/modules/ordini/actions.php +++ b/modules/ordini/actions.php @@ -78,7 +78,7 @@ switch (post('op')) { } // Leggo la descrizione del pagamento - $query = 'SELECT descrizione FROM co_pagamenti WHERE id='.prepare($idpagamento); + $query = 'SELECT `name` AS descrizione FROM `co_pagamenti` LEFT JOIN `co_pagamenti_lang` ON (`co_pagamenti_lang`.`id_record` = `co_pagamenti`.`id` AND `co_pagamenti_lang`.`id_lang` = '.prepare(setting('Lingua')).') WHERE `co_pagamenti`.`id`='.prepare($idpagamento); $rs = $dbo->fetchArray($query); $pagamento = $rs[0]['descrizione']; @@ -113,7 +113,7 @@ switch (post('op')) { $ordine->condizioni_fornitura = post('condizioni_fornitura'); // Verifica la presenza di ordini con lo stesso numero - $ordini = $dbo->fetchArray('SELECT * FROM or_ordini WHERE numero_cliente='.prepare(post('numero_cliente'))."AND numero_cliente IS NOT NULL AND numero_cliente != '' AND id!=".prepare($id_record).' AND idanagrafica='.prepare(post('idanagrafica'))." AND DATE_FORMAT(or_ordini.data, '%Y')=".prepare(Carbon::parse(post('data'))->copy()->format('Y'))); + $ordini = $dbo->fetchArray('SELECT * FROM `or_ordini` WHERE `numero_cliente`='.prepare(post('numero_cliente'))."AND `numero_cliente` IS NOT NULL AND `numero_cliente` != '' AND `id`!=".prepare($id_record).' AND `idanagrafica`='.prepare(post('idanagrafica'))." AND DATE_FORMAT(`or_ordini`.`data`, '%Y')=".prepare(Carbon::parse(post('data'))->copy()->format('Y'))); if (!empty($ordini)) { $documento = ''; @@ -140,7 +140,7 @@ switch (post('op')) { $ordine->save(); if ($dbo->query($query)) { - $query = 'SELECT descrizione FROM or_statiordine WHERE id='.prepare($idstatoordine); + $query = 'SELECT `descrizione` FROM `or_statiordine` WHERE `id`='.prepare($idstatoordine); $rs = $dbo->fetchArray($query); // Ricalcolo inps, ritenuta e bollo (se l'ordine non è stato evaso) diff --git a/modules/ordini/row-list.php b/modules/ordini/row-list.php index becf46268..046cd002e 100755 --- a/modules/ordini/row-list.php +++ b/modules/ordini/row-list.php @@ -275,7 +275,7 @@ foreach ($righe as $riga) { // Iva echo ' -
'.$riga->aliquota->descrizione.(($riga->aliquota->esente) ? ' ('.$riga->aliquota->codice_natura_fe.')' : null).' +
'.$riga->aliquota->name.(($riga->aliquota->esente) ? ' ('.$riga->aliquota->codice_natura_fe.')' : null).' '; } diff --git a/modules/ordini/src/Ordine.php b/modules/ordini/src/Ordine.php index 032d75000..198f92c69 100755 --- a/modules/ordini/src/Ordine.php +++ b/modules/ordini/src/Ordine.php @@ -24,6 +24,7 @@ use Common\Document; use Modules\Anagrafiche\Anagrafica; use Modules\DDT\DDT; use Modules\Interventi\Intervento; +use Modules\Pagamenti\Pagamento; use Traits\RecordTrait; use Traits\ReferenceTrait; use Util\Generator; @@ -69,9 +70,7 @@ class Ordine extends Document } // Tipo di pagamento e banca predefinite dall'anagrafica - $id_pagamento = $database->fetchOne('SELECT id FROM co_pagamenti WHERE id = :id_pagamento', [ - ':id_pagamento' => $anagrafica['idpagamento_'.$conto], - ])['id']; + $id_pagamento = Pagamento::find($anagrafica['idpagamento_'.$conto])->id_record; // Se il ordine è un ordine cliente e non è stato associato un pagamento predefinito al cliente leggo il pagamento dalle impostazioni if ($direzione == 'entrata' && empty($id_pagamento)) { diff --git a/modules/pagamenti/actions.php b/modules/pagamenti/actions.php index 518e022a6..c3ffe2fed 100755 --- a/modules/pagamenti/actions.php +++ b/modules/pagamenti/actions.php @@ -47,7 +47,6 @@ switch (filter('op')) { 'num_giorni' => post('distanza')[$key], 'giorno' => $giorno, 'prc' => post('percentuale')[$key], - 'descrizione' => $descrizione, 'idconto_vendite' => post('idconto_vendite') ?: null, 'idconto_acquisti' => post('idconto_acquisti') ?: null, 'codice_modalita_pagamento_fe' => post('codice_modalita_pagamento_fe'), @@ -55,8 +54,10 @@ switch (filter('op')) { if (!empty($id)) { $dbo->update('co_pagamenti', $array, ['id' => $id]); + $dbo->update('co_pagamenti_lang', ['name' => $descrizione], ['id_record' => $id, 'id_lang' => setting('Lingua')]); } else { $dbo->INSERT('co_pagamenti', $array); + $dbo->INSERT('co_pagamenti_lang', ['name' => $descrizione, 'id_record' => $id, 'id_lang' => setting('Lingua')]); } } flash()->info(tr('Salvataggio completato!')); @@ -71,8 +72,9 @@ switch (filter('op')) { $codice_modalita_pagamento_fe = filter('codice_modalita_pagamento_fe'); if (isset($descrizione)) { - $dbo->query('INSERT INTO `co_pagamenti` (`descrizione`, `codice_modalita_pagamento_fe`, `prc` ) VALUES ('.prepare($descrizione).', '.prepare($codice_modalita_pagamento_fe).', 100 )'); + $dbo->query('INSERT INTO `co_pagamenti` (`codice_modalita_pagamento_fe`, `prc` ) VALUES ('.prepare($codice_modalita_pagamento_fe).', 100 )'); $id_record = $dbo->lastInsertedID(); + $dbo->query('INSERT INTO `co_pagamenti_lang` (`name`, `id_record`, `id_lang`) VALUES ('.prepare($descrizione).'), '.prepare($id_record).', '.prepare(setting('Lingua')).')'); flash()->info(tr('Aggiunta nuova tipologia di _TYPE_', [ '_TYPE_' => 'pagamento', @@ -101,7 +103,7 @@ switch (filter('op')) { flash()->info(tr('Elemento eliminato con successo!')); if ($id_record == $id) { - $res = $dbo->fetchArray('SELECT * FROM `co_pagamenti` WHERE `id`!='.prepare($id).' AND `descrizione`='.prepare($record['descrizione'])); + $res = $dbo->fetchArray('SELECT * FROM `co_pagamenti` LEFT JOIN `co_pagamenti_lang` WHERE `co_pagamenti`.`id`!='.prepare($id).' AND `name`='.prepare($record['descrizione'])); if (count($res) != 0) { redirect(base_path().'/editor.php?id_module='.$id_module.'&id_record='.$res[0]['id']); } else { diff --git a/modules/pagamenti/ajax/select.php b/modules/pagamenti/ajax/select.php index cf981db4b..c852fac85 100755 --- a/modules/pagamenti/ajax/select.php +++ b/modules/pagamenti/ajax/select.php @@ -28,30 +28,34 @@ switch ($resource) { // Filtri per banche dell'Azienda $id_azienda = setting('Azienda predefinita'); - $query = "SELECT co_pagamenti.id, - CONCAT_WS(' - ', codice_modalita_pagamento_fe, descrizione) AS descrizione, - codice_modalita_pagamento_fe, - banca_vendite.id AS id_banca_vendite, - CONCAT(banca_vendite.nome, ' - ', banca_vendite.iban) AS descrizione_banca_vendite, - banca_acquisti.id AS id_banca_acquisti, - CONCAT(banca_acquisti.nome, ' - ', banca_acquisti.iban) AS descrizione_banca_acquisti, - banca_cliente.id AS id_banca_cliente - FROM co_pagamenti - LEFT JOIN co_banche banca_cliente ON banca_cliente.id_anagrafica = ".prepare($superselect['idanagrafica']).' AND banca_cliente.deleted_at IS NULL - LEFT JOIN co_banche banca_vendite ON co_pagamenti.idconto_vendite = banca_vendite.id_pianodeiconti3 AND banca_vendite.id_anagrafica = '.prepare($id_azienda).' AND banca_vendite.deleted_at IS NULL - LEFT JOIN co_banche banca_acquisti ON co_pagamenti.idconto_acquisti = banca_acquisti.id_pianodeiconti3 AND banca_acquisti.id_anagrafica = '.prepare($id_azienda).' AND banca_acquisti.deleted_at IS NULL - |where| GROUP BY co_pagamenti.descrizione ORDER BY co_pagamenti.descrizione ASC'; + $query = "SELECT + `co_pagamenti`.`id`, + CONCAT_WS(' - ', `codice_modalita_pagamento_fe`, `name`) AS descrizione, + `codice_modalita_pagamento_fe`, + `banca_vendite`.`id` AS id_banca_vendite, + CONCAT(`banca_vendite`.`nome`, ' - ', `banca_vendite`.`iban`) AS descrizione_banca_vendite, + `banca_acquisti`.`id` AS id_banca_acquisti, + CONCAT(`banca_acquisti`.`nome`, ' - ', `banca_acquisti`.`iban`) AS descrizione_banca_acquisti, + `banca_cliente`.`id` AS id_banca_cliente + FROM `co_pagamenti` + LEFT JOIN `co_pagamenti_lang` ON (`co_pagamenti_lang`.`id_record` = `co_pagamenti`.`id` AND `co_pagamenti_lang`.`id_lang` = ".prepare(setting('Lingua')).') + LEFT JOIN `co_banche` banca_cliente ON `banca_cliente`.`id_anagrafica` = '.prepare($superselect['idanagrafica']).' AND `banca_cliente`.`deleted_at` IS NULL + LEFT JOIN `co_banche` banca_vendite ON `co_pagamenti`.`idconto_vendite` = `banca_vendite`.`id_pianodeiconti3` AND `banca_vendite`.`id_anagrafica` = '.prepare($id_azienda).' AND `banca_vendite`.`deleted_at` IS NULL + LEFT JOIN `co_banche` banca_acquisti ON `co_pagamenti`.`idconto_acquisti` = `banca_acquisti`.`id_pianodeiconti3` AND `banca_acquisti`.`id_anagrafica` = '.prepare($id_azienda).' AND `banca_acquisti`.`deleted_at` IS NULL + |where| + GROUP BY + `co_pagamenti_lang`.`name` ORDER BY `co_pagamenti_lang`.`name` ASC'; foreach ($elements as $element) { - $filter[] = 'co_pagamenti.id = '.prepare($element); + $filter[] = '`co_pagamenti`.`id` = '.prepare($element); } if (!empty($superselect['codice_modalita_pagamento_fe'])) { - $where[] = 'codice_modalita_pagamento_fe = '.prepare($superselect['codice_modalita_pagamento_fe']); + $where[] = '`codice_modalita_pagamento_fe` = '.prepare($superselect['codice_modalita_pagamento_fe']); } if (!empty($search)) { - $search_fields[] = 'descrizione LIKE '.prepare('%'.$search.'%'); + $search_fields[] = '`descrizione` LIKE '.prepare('%'.$search.'%'); } $data = AJAX::selectResults($query, $where, diff --git a/modules/pagamenti/edit.php b/modules/pagamenti/edit.php index 82f4d56e8..9316e31cd 100755 --- a/modules/pagamenti/edit.php +++ b/modules/pagamenti/edit.php @@ -32,7 +32,7 @@ include_once __DIR__.'/../../core.php';
- {[ "type": "text", "label": "", "name": "descrizione", "value": "$descrizione$", "required": 1 ]} + {[ "type": "text", "label": "", "name": "descrizione", "value": "$name$", "required": 1 ]}
@@ -87,7 +87,7 @@ $tipi_scadenza_pagamento = [ ], ]; -$results = $dbo->fetchArray('SELECT * FROM `co_pagamenti` WHERE descrizione='.prepare($record['descrizione']).' ORDER BY `num_giorni` ASC'); +$results = $dbo->fetchArray('SELECT * FROM `co_pagamenti` LEFT JOIN `co_pagamenti_lang` ON (`co_pagamenti`.`id` = `co_pagamenti_lang`.`id_record` AND `co_pagamenti_lang`.`id_lang` = '.prepare(setting('Lingua')).') WHERE `name`='.prepare($record['descrizione']).' ORDER BY `num_giorni` ASC'); $numero_rata = 1; foreach ($results as $result) { $tipo_scadenza_pagamento = 3; diff --git a/modules/pagamenti/init.php b/modules/pagamenti/init.php index b38b7baef..ede465df4 100755 --- a/modules/pagamenti/init.php +++ b/modules/pagamenti/init.php @@ -20,5 +20,5 @@ include_once __DIR__.'/../../core.php'; if (isset($id_record)) { - $record = $dbo->fetchOne('SELECT * FROM `co_pagamenti` WHERE id='.prepare($id_record)); + $record = $dbo->fetchOne('SELECT * FROM `co_pagamenti` LEFT JOIN `co_pagamenti_lang` ON (`co_pagamenti_lang`.`id_record` = `co_pagamenti`.`id` AND `co_pagamenti_lang`.`id_lang` = '.prepare(setting('Lingua')).') WHERE `co_pagamenti`.`id`='.prepare($id_record)); } diff --git a/modules/pagamenti/src/Pagamento.php b/modules/pagamenti/src/Pagamento.php index e9cf45968..04a5b2aae 100755 --- a/modules/pagamenti/src/Pagamento.php +++ b/modules/pagamenti/src/Pagamento.php @@ -36,7 +36,7 @@ class Pagamento extends Model public function rate() { - return $this->hasMany(Pagamento::class, 'descrizione', 'descrizione'); + return $this->hasMany(Pagamento::class, 'id'); } public function calcola($importo, $data, $id_anagrafica) @@ -139,4 +139,34 @@ class Pagamento extends Model { return $this->codice_modalita_pagamento_fe == 'MP12'; } + + /** + * Ritorna l'attributo name del pagamento. + * + * @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 del pagamento a partire dal nome. + * + * @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/preventivi/edit.php b/modules/preventivi/edit.php index 2b25a3c95..a80630d90 100755 --- a/modules/preventivi/edit.php +++ b/modules/preventivi/edit.php @@ -111,7 +111,7 @@ echo ' } ?> - {[ "type": "select", "label": "", "name": "idpagamento", "values": "query=SELECT id, descrizione FROM co_pagamenti GROUP BY descrizione ORDER BY descrizione", "value": "$idpagamento$" ]} + {[ "type": "select", "label": "", "name": "idpagamento", "values": "query=SELECT `co_pagamenti`.`id`, `name` AS descrizione FROM `co_pagamenti` LEFT JOIN `co_pagamenti_lang` ON (`co_pagamenti`.`id` = `co_pagamenti_lang`.`id_record` AND `co_pagamenti_lang`.`id_lang` = ".prepare(setting('Lingua')).") GROUP BY `descrizione` ORDER BY `descrizione`", "value": "$idpagamento$" ]}
diff --git a/modules/preventivi/row-list.php b/modules/preventivi/row-list.php index 203054fab..9ac7ecfbd 100755 --- a/modules/preventivi/row-list.php +++ b/modules/preventivi/row-list.php @@ -231,7 +231,7 @@ foreach ($righe as $key => $riga) { // Iva echo ' -
'.$riga->aliquota->descrizione.(($riga->aliquota->esente) ? ' ('.$riga->aliquota->codice_natura_fe.')' : null).' +
'.$riga->aliquota->name.(($riga->aliquota->esente) ? ' ('.$riga->aliquota->codice_natura_fe.')' : null).' '; } } diff --git a/modules/scadenzario/variables.php b/modules/scadenzario/variables.php index 606df4731..cc7d6f81b 100755 --- a/modules/scadenzario/variables.php +++ b/modules/scadenzario/variables.php @@ -17,20 +17,24 @@ * along with this program. If not, see . */ -$r = $dbo->fetchOne('SELECT co_scadenziario.*, co_documenti.*, - an_anagrafiche.email, - an_anagrafiche.pec, - an_anagrafiche.ragione_sociale, - an_referenti.nome, - co_scadenziario.da_pagare - co_scadenziario.pagato AS totale, - (SELECT pec FROM em_accounts WHERE em_accounts.id='.prepare($template['id_account']).') AS is_pec, - (SELECT descrizione FROM co_pagamenti WHERE co_pagamenti.id = co_documenti.idpagamento) AS pagamento, - (SELECT GROUP_CONCAT(CONCAT("
  • ",DATE_FORMAT(scadenza,"%d/%m/%Y")," - ",FORMAT(da_pagare,2),"€ - ",descrizione,"
  • ") SEPARATOR "
    ") FROM co_scadenziario LEFT JOIN (SELECT id, ref_documento FROM co_documenti)as nota ON co_scadenziario.iddocumento = nota.ref_documento WHERE scadenza < NOW() AND iddocumento!=0 AND nota.id IS NULL AND da_pagare>pagato AND idanagrafica=co_documenti.idanagrafica ORDER BY scadenza) AS scadenze_fatture_scadute -FROM co_scadenziario - INNER JOIN co_documenti ON co_documenti.id = co_scadenziario.iddocumento - INNER JOIN an_anagrafiche ON co_documenti.idanagrafica = an_anagrafiche.idanagrafica - LEFT JOIN an_referenti ON an_referenti.idanagrafica = an_anagrafiche.idanagrafica -WHERE co_scadenziario.da_pagare > co_scadenziario.pagato AND co_scadenziario.iddocumento = (SELECT iddocumento FROM co_scadenziario s WHERE id='.prepare($id_record).')'); +$r = $dbo->fetchOne('SELECT `co_scadenziario`.*, `co_documenti`.*, + `an_anagrafiche`.`email`, + `an_anagrafiche`.`pec`, + `an_anagrafiche`.`ragione_sociale`, + `an_referenti`.`nome`, + `co_scadenziario`.`da_pagare` - `co_scadenziario`.`pagato` AS totale, + `pec`, + `name` AS pagamento, + (SELECT GROUP_CONCAT(CONCAT("
  • ",DATE_FORMAT(`scadenza`,"%d/%m/%Y")," - ",FORMAT(`da_pagare`,2),"€ - ",`descrizione`,"
  • ") SEPARATOR "
    ") FROM `co_scadenziario` LEFT JOIN (SELECT `id`, `ref_documento` FROM `co_documenti`)as nota ON `co_scadenziario`.`iddocumento` = `nota`.`ref_documento` WHERE `scadenza` < NOW() AND `iddocumento`!=0 AND `nota`.`id` IS NULL AND `da_pagare`>`pagato` AND `idanagrafica`=`co_documenti`.`idanagrafica` ORDER BY `scadenza`) AS scadenze_fatture_scadute +FROM `co_scadenziario` + INNER JOIN `co_documenti` ON `co_documenti`.`id` = `co_scadenziario`.`iddocumento` + LEFT JOIN `co_pagamenti` ON `co_pagamenti`.`id` = `co_documenti`.`idpagamento` + LEFT JOIN `co_pagamenti_lang` ON (`co_pagamenti_lang`.`id_record` = `co_pagamenti`.`id` AND `co_pagamenti_lang`.`id_lang` = '.prepare(setting('Lingua')).') + LEFT JOIN `em_accounts` ON `em_accounts`.`id` = '.prepare($template['id_account']).' + INNER JOIN `an_anagrafiche` ON `co_documenti`.`idanagrafica` = `an_anagrafiche`.`idanagrafica` + LEFT JOIN `an_referenti` ON `an_referenti`.`idanagrafica` = `an_anagrafiche`.`idanagrafica` +WHERE + `co_scadenziario`.`da_pagare` > `co_scadenziario`.`pagato` AND `co_scadenziario`.`iddocumento` = (SELECT `iddocumento` FROM `co_scadenziario` s WHERE `id`='.prepare($id_record).')'); $logo_azienda = str_replace(base_dir(), base_path(), App::filepath('templates/base|custom|/logo_azienda.jpg')); diff --git a/plugins/exportFE/src/FatturaElettronica.php b/plugins/exportFE/src/FatturaElettronica.php index 98e6fcd31..a2f487edc 100755 --- a/plugins/exportFE/src/FatturaElettronica.php +++ b/plugins/exportFE/src/FatturaElettronica.php @@ -28,6 +28,7 @@ use Modules\Banche\Banca; use Modules\Fatture\Fattura; use Modules\Fatture\Gestori\Bollo; use Modules\Iva\Aliquota; +use Modules\Pagamenti\Pagamento; use Uploads; /** @@ -1646,7 +1647,7 @@ class FatturaElettronica $database = database(); - $co_pagamenti = $database->fetchOne('SELECT * FROM `co_pagamenti` WHERE `id` = '.prepare($documento['idpagamento'])); + $co_pagamenti = Pagamento::find($documento['idpagamento']); /** * TP01 - A Rate @@ -1659,7 +1660,7 @@ class FatturaElettronica $co_scadenziario = $database->fetchArray('SELECT * FROM `co_scadenziario` WHERE `iddocumento` = '.prepare($documento['id'])); foreach ($co_scadenziario as $scadenza) { - $co_pagamenti = $database->fetchOne('SELECT * FROM `co_pagamenti` WHERE `id` = '.prepare($scadenza['id_pagamento'])); + $co_pagamenti = Pagamento::find($scadenza['id_pagamento']); $banca = Banca::find($scadenza['id_banca_azienda']); $pagamento = [ diff --git a/plugins/importFE/src/FatturaElettronica.php b/plugins/importFE/src/FatturaElettronica.php index 4d93ba925..e8ea6d84f 100755 --- a/plugins/importFE/src/FatturaElettronica.php +++ b/plugins/importFE/src/FatturaElettronica.php @@ -353,7 +353,7 @@ class FatturaElettronica 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").'.'); + flash()->error(tr('Errore durante la creazione della banca: verificare la correttezza dei dati').'.'); } } } diff --git a/plugins/pianificazione_fatturazione/crea_fattura.php b/plugins/pianificazione_fatturazione/crea_fattura.php index 64dbee79b..373b6e294 100644 --- a/plugins/pianificazione_fatturazione/crea_fattura.php +++ b/plugins/pianificazione_fatturazione/crea_fattura.php @@ -131,7 +131,7 @@ foreach ($righe as $riga) { '.moneyFormat($riga->prezzo_unitario).' '.moneyFormat($riga->iva).'
    - '.$riga->aliquota->descrizione.' + '.$riga->aliquota->name.' '.moneyFormat($riga->totale_imponibile).' '; diff --git a/plugins/pianificazione_interventi/row-list.php b/plugins/pianificazione_interventi/row-list.php index 82a0284cc..65f1f257a 100755 --- a/plugins/pianificazione_interventi/row-list.php +++ b/plugins/pianificazione_interventi/row-list.php @@ -120,7 +120,7 @@ if (!$righe->isEmpty()) { echo ' '.moneyFormat($riga->iva_unitaria_scontata).' -
    '.$riga->aliquota->descrizione.(($riga->aliquota->esente) ? ' ('.$riga->aliquota->codice_natura_fe.')' : null).' +
    '.$riga->aliquota->name.(($riga->aliquota->esente) ? ' ('.$riga->aliquota->codice_natura_fe.')' : null).' '; // Prezzo di vendita diff --git a/plugins/presentazioni_bancarie/generate.php b/plugins/presentazioni_bancarie/generate.php index eca27c5a4..20ee41db7 100644 --- a/plugins/presentazioni_bancarie/generate.php +++ b/plugins/presentazioni_bancarie/generate.php @@ -149,7 +149,7 @@ foreach ($raggruppamento as $id_anagrafica => $scadenze_anagrafica) { if ($is_sepa) { // Prima, successiva, singola - $scadenze_antecedenti = $dbo->fetchArray('SELECT * FROM co_scadenziario INNER JOIN co_documenti ON co_scadenziario.iddocumento=co_documenti.id INNER JOIN co_pagamenti ON co_documenti.idpagamento=co_pagamenti.id WHERE co_documenti.idanagrafica='.prepare($id_anagrafica)." AND codice_modalita_pagamento_fe IN('MP19','MP20','MP21') AND data_emissione<".prepare($scadenza->data_emissione)); + $scadenze_antecedenti = $dbo->fetchArray('SELECT * FROM `co_scadenziario` INNER JOIN `co_documenti` ON `co_scadenziario`.`iddocumento`=`co_documenti`.`id` INNER JOIN `co_pagamenti` ON `co_documenti`.`idpagamento`=`co_pagamenti`.`id` LEFT JOIN `co_pagamenti_lang` ON (`co_pagamenti`.`id` = `co_pagamenti_lang`.`id_record` AND `co_pagamenti_lang`.`id_lang` = '.prepare(setting('Lingua')).') WHERE `co_documenti`.`idanagrafica`='.prepare($id_anagrafica)." AND `codice_modalita_pagamento_fe` IN('MP19','MP20','MP21') AND `data_emissione`<".prepare($scadenza->data_emissione)); $check_successiva = ''; $check_prima = ''; diff --git a/templates/contratti/body.php b/templates/contratti/body.php index d96153932..9733bd263 100755 --- a/templates/contratti/body.php +++ b/templates/contratti/body.php @@ -18,6 +18,7 @@ */ use Carbon\CarbonInterval; +use Modules\Pagamenti\Pagamento; include_once __DIR__.'/../../core.php'; @@ -360,7 +361,7 @@ echo ' '; // CONDIZIONI GENERALI DI FORNITURA -$pagamento = $dbo->fetchOne('SELECT * FROM co_pagamenti WHERE id = '.$documento['idpagamento']); +$pagamento = Pagamento::find($documento['idpagamento']); echo ' @@ -376,7 +377,7 @@ echo ' diff --git a/templates/ddt/init.php b/templates/ddt/init.php index 88120fdd8..ef74b340c 100755 --- a/templates/ddt/init.php +++ b/templates/ddt/init.php @@ -21,6 +21,7 @@ include_once __DIR__.'/../../core.php'; use Modules\Anagrafiche\Nazione; use Modules\DDT\DDT; +use Modules\Pagamenti\Pagamento; $documento = DDT::find($id_record); $d_qta = (int) setting('Cifre decimali per quantità in stampa'); @@ -31,7 +32,7 @@ $id_cliente = $documento['idanagrafica']; $id_sede = $record['idsede_partenza']; $id_azienda = setting('Azienda predefinita'); -$pagamento = $dbo->fetchOne('SELECT * FROM co_pagamenti WHERE id = '.prepare($documento['idpagamento'])); +$pagamento = Pagamento::find($documento['idpagamento']); $causale = $dbo->fetchOne('SELECT * FROM dt_causalet WHERE id = '.prepare($documento['idcausalet'])); $porto = $dbo->fetchOne('SELECT * FROM dt_porto WHERE id = '.prepare($documento['idporto'])); $aspetto_beni = $dbo->fetchOne('SELECT * FROM dt_aspettobeni WHERE id = '.prepare($documento['idaspettobeni'])); @@ -126,7 +127,7 @@ $custom = [ 'tipo_doc' => $tipo_doc, 'numero' => $numero, 'data' => Translator::dateToLocale($documento['data']), - 'pagamento' => $pagamento['descrizione'], + 'pagamento' => $pagamento->name, 'c_destinazione' => $destinazione, 'c_partenza' => $partenza, 'aspettobeni' => $aspetto_beni['descrizione'], diff --git a/templates/fatture/footer.php b/templates/fatture/footer.php index cfc3ccdab..99f31fea5 100755 --- a/templates/fatture/footer.php +++ b/templates/fatture/footer.php @@ -70,10 +70,10 @@ echo " '; // Elenco scadenze -$rs2 = $dbo->fetchArray('SELECT * FROM co_scadenziario WHERE iddocumento='.prepare($id_record).' ORDER BY `scadenza` ASC'); +$rs2 = $dbo->fetchArray('SELECT * FROM `co_scadenziario` WHERE `iddocumento`='.prepare($id_record).' ORDER BY `scadenza` ASC'); if (!empty($rs2)) { for ($i = 0; $i < sizeof($rs2); ++$i) { - $pagamento = $dbo->fetchOne('SELECT fe_modalita_pagamento.descrizione FROM co_pagamenti INNER JOIN fe_modalita_pagamento ON fe_modalita_pagamento.codice = co_pagamenti.codice_modalita_pagamento_fe WHERE co_pagamenti.id='.$rs2[$i]['id_pagamento'])['descrizione']; + $pagamento = $dbo->fetchOne('SELECT `fe_modalita_pagamento`.`descrizione` FROM `co_pagamenti` INNER JOIN `fe_modalita_pagamento` ON `fe_modalita_pagamento`.`codice` = `co_pagamenti`.`codice_modalita_pagamento_fe` WHERE `co_pagamenti`.`id`='.$rs2[$i]['id_pagamento'])['descrizione']; echo '
    - '.$pagamento['descrizione'].' + '.$pagamento->name.'
    diff --git a/templates/fatture/init.php b/templates/fatture/init.php index 3ebe747b5..f7e247fc1 100755 --- a/templates/fatture/init.php +++ b/templates/fatture/init.php @@ -30,19 +30,34 @@ $d_totali = (int) setting('Cifre decimali per totali in stampa'); // Lettura info fattura $record = $dbo->fetchOne('SELECT *, - (SELECT descrizione FROM co_statidocumento WHERE id=idstatodocumento) AS stato_doc, - (SELECT descrizione FROM co_tipidocumento WHERE id=idtipodocumento) AS tipo_doc, - (SELECT descrizione FROM co_pagamenti WHERE id=idpagamento) AS id_pagamento, - (SELECT dir FROM co_tipidocumento WHERE id=idtipodocumento) AS dir, - (SELECT descrizione FROM dt_causalet WHERE id=idcausalet) AS causalet, - (SELECT descrizione FROM dt_porto WHERE id=idporto) AS porto, - (SELECT descrizione FROM dt_aspettobeni WHERE id=idaspettobeni) AS aspettobeni, - (SELECT descrizione FROM dt_spedizione WHERE id=idspedizione) AS spedizione, - (SELECT ragione_sociale FROM an_anagrafiche WHERE idanagrafica=idvettore) AS vettore, - (SELECT id FROM co_banche WHERE id = id_banca_azienda) AS id_banca, - (SELECT is_fiscale FROM zz_segments WHERE id = id_segment) AS is_fiscale, - (SELECT tipo FROM an_anagrafiche WHERE idanagrafica=co_documenti.idanagrafica) AS tipo_cliente -FROM co_documenti WHERE id='.prepare($id_record)); + `co_statidocumenti`.`descrizione` AS stato_doc, + `co_tipidocumenti`.`descrizione` AS tipo_doc, + `co_tipidocumenti`.`dir` AS dir, + `co_pagamenti_lang`.`name` AS pagamento, + `dt_causalet`.`descrizione` AS causalet, + `dt_porto`.`descrizione` AS porto, + `dt_aspettobeni`.`descrizione` AS aspettobeni, + `dt_spedizione`.`descrizione` AS spedizione, + `vettore`.`ragione_sociale` AS vettore, + `co_banche`.`id` AS id_banca, + `zz_segments`.`is_fiscale` AS is_fiscale, + `an_anagrafiche`.`tipo` AS tipo_cliente +FROM + `co_documenti` + INNER JOIN `an_anagrafiche` ON `an_anagrafiche`.`idanagrafica`=`co_documenti`.`idanagrafica` + LEFT JOIN `an_anagrafiche AS vettore ON vettore.idanagrafica = co_documenti.idvettore + INNER JOIN `co_statidocumenti` ON `co_documenti`.`idstatodocumento`=`co_statidocumenti`.`id` + INNER JOIN `co_tipidocumento` ON `co_documenti`.`idtipodocumento`=`co_tipidocumento`.`id` + LEFT JOIN `co_pagamenti` ON `co_documenti`.`idpagamento`=`co_pagamenti`.`id` + LEFT JOIN `co_pagamenti_lang` ON (`co_pagamenti_lang`.`id_record` = `co_pagamenti`.`id` AND `co_pagamenti_lang`.`id_lang` = '.prepare(setting('Lingua')).') + LEFT JOIN `co_banche` ON `co_banche`.`id` = `co_documenti`.`id_banca_azienda` + INNER JOIN `zz_segments` ON `co_documenti`.`id_segment` = `zz_segments`.`id` + LEFT JOIN `dt_causalet` ON `dt_causalet`.`id` = `co_documenti`.`idcausalet` + LEFT JOIN `dt_porto` ON `dt_porto`.`id` = `co_documenti`.`idporto` + LEFT JOIN `dt_aspettobeni` ON `dt_aspettobeni`.`id` = `co_documenti`.`idaspettobeni` + LEFT JOIN `dt_spedizione` ON `dt_spedizione`.`id` = `co_documenti`.`idspedizione` +WHERE + `co_documenti`.`id`='.prepare($id_record)); $record['rivalsainps'] = floatval($record['rivalsainps']); $record['ritenutaacconto'] = floatval($record['ritenutaacconto']); @@ -71,7 +86,7 @@ if (empty($record['is_fiscale'])) { // Leggo i dati della destinazione (se 0=sede legale, se!=altra sede da leggere da tabella an_sedi) $destinazione = ''; if (!empty($record['idsede_destinazione'])) { - $rsd = $dbo->fetchArray('SELECT (SELECT codice FROM an_anagrafiche WHERE idanagrafica=an_sedi.idanagrafica) AS codice, (SELECT ragione_sociale FROM an_anagrafiche WHERE idanagrafica=an_sedi.idanagrafica) AS ragione_sociale, nomesede, indirizzo, indirizzo2, cap, citta, provincia, piva, codice_fiscale, id_nazione FROM an_sedi WHERE idanagrafica='.prepare($id_cliente).' AND id='.prepare($record['idsede_destinazione'])); + $rsd = $dbo->fetchArray('SELECT (SELECT `codice` FROM `an_anagrafiche` WHERE `idanagrafica`=`an_sedi`.`idanagrafica`) AS codice, (SELECT `ragione_sociale` FROM `an_anagrafiche` WHERE `idanagrafica`=`an_sedi`.`idanagrafica`) AS ragione_sociale, `nomesede`, `indirizzo`, `indirizzo2`, `cap`, `citta`, `provincia`, `piva`, `codice_fiscale`, `id_nazione` FROM `an_sedi` WHERE `idanagrafica`='.prepare($id_cliente).' AND id='.prepare($record['idsede_destinazione'])); if (!empty($rsd[0]['nomesede'])) { $destinazione .= $rsd[0]['nomesede'].'
    '; diff --git a/templates/ordini/init.php b/templates/ordini/init.php index 6d36b2e5a..64df2967f 100755 --- a/templates/ordini/init.php +++ b/templates/ordini/init.php @@ -61,7 +61,7 @@ if (!empty($documento->idsede)) { } $numero = !empty($documento['numero_esterno']) ? $documento['numero_esterno'] : $documento['numero']; -$pagamento = $dbo->fetchOne('SELECT * FROM co_pagamenti WHERE id = '.prepare($documento->idpagamento)); +$pagamento = $dbo->fetchOne('SELECT * FROM `co_pagamenti` LEFT JOIN `co_pagamenti_lang` ON (`co_pagamenti`.`id` = `co_pagamenti_lang`.`id_record` AND `co_pagamenti_lang`.`id_lang` = '.prepare(setting('Lingua')).') WHERE `co_pagamenti`.`id` = '.prepare($documento->idpagamento)); // Sostituzioni specifiche $custom = [ diff --git a/templates/scadenzario/init.php b/templates/scadenzario/init.php index 578a72ea9..acaf846cd 100755 --- a/templates/scadenzario/init.php +++ b/templates/scadenzario/init.php @@ -42,7 +42,7 @@ if (!empty(get('date_end'))) { } if (get('id_anagrafica') && get('id_anagrafica') != 'null') { - $module_query = str_replace('1=1', '1=1 AND co_scadenziario.idanagrafica="'.get('id_anagrafica').'"', $module_query); + $module_query = str_replace('1=1', '1=1 AND `co_scadenziario`.`idanagrafica`="'.get('id_anagrafica').'"', $module_query); $id_anagrafica = get('id_anagrafica'); } @@ -51,25 +51,25 @@ if (get('is_pagata') == 'false') { } if (get('is_riba') == 'true') { - $module_query = str_replace('1=1', '1=1 AND co_pagamenti.codice_modalita_pagamento_fe="MP12"', $module_query); + $module_query = str_replace('1=1', '1=1 AND `co_pagamenti`.`codice_modalita_pagamento_fe`="MP12"', $module_query); } if (get('is_cliente') == 'true') { - $module_query = str_replace('1=1', '1=1 AND co_tipidocumento.dir="entrata"', $module_query); + $module_query = str_replace('1=1', '1=1 AND `co_tipidocumento`.`dir`="entrata"', $module_query); } if (get('is_fornitore') == 'true') { - $module_query = str_replace('1=1', '1=1 AND co_tipidocumento.dir="uscita"', $module_query); + $module_query = str_replace('1=1', '1=1 AND `co_tipidocumento`.`dir`="uscita"', $module_query); } // Scelgo la query in base alla scadenza if (isset($id_record)) { - $record = $dbo->fetchOne('SELECT * FROM co_scadenziario WHERE id = '.prepare($id_record)); + $record = $dbo->fetchOne('SELECT * FROM `co_scadenziario` WHERE `id` = '.prepare($id_record)); $documento = Fattura::find($record['iddocumento']); if (!empty($documento)) { - $module_query = str_replace('1=1', '1=1 AND co_scadenziario.iddocumento='.prepare($documento->id), $module_query); + $module_query = str_replace('1=1', '1=1 AND `co_scadenziario`.`iddocumento`='.prepare($documento->id), $module_query); } else { - $module_query = str_replace('1=1', '1=1 AND co_scadenziario.id='.prepare($id_record), $module_query); + $module_query = str_replace('1=1', '1=1 AND `co_scadenziario`.`id`='.prepare($id_record), $module_query); } } diff --git a/update/2_4_55.sql b/update/2_4_55.sql index 0cc6067e7..66385f59d 100644 --- a/update/2_4_55.sql +++ b/update/2_4_55.sql @@ -178,7 +178,7 @@ ALTER TABLE `an_settori` ALTER TABLE `an_settori_lang` ADD CONSTRAINT `an_settori_lang_ibfk_1` FOREIGN KEY (`id_record`) REFERENCES `an_settori`(`id`) ON DELETE CASCADE ON UPDATE RESTRICT; --- Allineamento vista Relazioni +-- Allineamento vista Settori UPDATE `zz_modules` SET `options` = " SELECT |select| @@ -213,29 +213,6 @@ ALTER TABLE `an_tipianagrafiche` ALTER TABLE `an_tipianagrafiche_lang` ADD CONSTRAINT `an_tipianagrafiche_lang_ibfk_1` FOREIGN KEY (`id_record`) REFERENCES `an_tipianagrafiche`(`id`) ON DELETE CASCADE ON UPDATE RESTRICT; --- Allineamento vista Anagrafiche -UPDATE `zz_modules` SET `options` = " -SELECT - |select| -FROM - `an_anagrafiche` - LEFT JOIN `an_relazioni` ON `an_anagrafiche`.`idrelazione` = `an_relazioni`.`id` - LEFT JOIN `an_relazioni_lang` ON (`an_relazioni`.`id` = `an_relazioni_lang`.`id_record` AND `an_relazioni_lang`.|lang|) - LEFT JOIN `an_tipianagrafiche_anagrafiche` ON `an_tipianagrafiche_anagrafiche`.`idanagrafica` = `an_anagrafiche`.`idanagrafica` - LEFT JOIN `an_tipianagrafiche` ON `an_tipianagrafiche`.`id` = `an_tipianagrafiche_anagrafiche`.`idtipoanagrafica` - LEFT JOIN `an_tipianagrafiche_lang` ON (`an_tipianagrafiche`.`id` = `an_tipianagrafiche_lang`.`id_record` AND `an_tipianagrafiche_lang`.|lang|) - LEFT JOIN (SELECT `idanagrafica`, GROUP_CONCAT(`nomesede` SEPARATOR ', ') AS nomi FROM `an_sedi` GROUP BY `idanagrafica`) AS sedi ON `an_anagrafiche`.`idanagrafica`= `sedi`.`idanagrafica` - LEFT JOIN (SELECT `idanagrafica`, GROUP_CONCAT(`nome` SEPARATOR ', ') AS nomi FROM `an_referenti` GROUP BY `idanagrafica`) AS referenti ON `an_anagrafiche`.`idanagrafica` =`referenti`.`idanagrafica` - LEFT JOIN (SELECT `co_pagamenti`.`descrizione`AS nome, `co_pagamenti`.`id` FROM `co_pagamenti`)AS pagvendita ON IF(`an_anagrafiche`.`idpagamento_vendite`>0,`an_anagrafiche`.`idpagamento_vendite`= `pagvendita`.`id`,'') - LEFT JOIN (SELECT `co_pagamenti`.`descrizione`AS nome, `co_pagamenti`.`id` FROM `co_pagamenti`)AS pagacquisto ON IF(`an_anagrafiche`.`idpagamento_acquisti`>0,`an_anagrafiche`.`idpagamento_acquisti`= `pagacquisto`.`id`,'') -WHERE - 1=1 AND `an_anagrafiche`.`deleted_at` IS NULL -GROUP BY - `an_anagrafiche`.`idanagrafica`, `pagvendita`.`nome`, `pagacquisto`.`nome` -HAVING - 2=2 -ORDER BY - TRIM(`ragione_sociale`)" WHERE `name` = 'Anagrafiche'; UPDATE `zz_views` INNER JOIN `zz_modules` ON `zz_views`.`id_module` = `zz_modules`.`id` SET `zz_views`.`query` = 'GROUP_CONCAT(\' \',`an_relazioni_lang`.`name`)' WHERE `zz_modules`.`name` = 'Anagrafiche' AND `zz_views`.`name` = 'color_title_Relazione'; UPDATE `zz_views` INNER JOIN `zz_modules` ON `zz_views`.`id_module` = `zz_modules`.`id` SET `zz_views`.`query` = 'GROUP_CONCAT(\' \',`an_tipianagrafiche_lang`.`name`)' WHERE `zz_modules`.`name` = 'Anagrafiche' AND `zz_views`.`name` = 'Tipo'; @@ -275,7 +252,7 @@ ALTER TABLE `co_iva` 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 +-- Allineamento vista IVA UPDATE `zz_modules` SET `options` = " SELECT |select| @@ -294,6 +271,147 @@ UPDATE co_iva SET codice = @codice WHERE id = (SELECT id_record FROM co_iva_lang 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'); +-- Aggiunta tabella co_movimenti_modelli_lang +CREATE TABLE IF NOT EXISTS `co_pagamenti_lang` ( + `id` int NOT NULL, + `id_lang` int NOT NULL, + `id_record` int NOT NULL, + `name` VARCHAR(255) NOT NULL +); +ALTER TABLE `co_pagamenti_lang` + ADD PRIMARY KEY (`id`); + +ALTER TABLE `co_pagamenti_lang` + MODIFY `id` int NOT NULL AUTO_INCREMENT; + +INSERT INTO `co_pagamenti_lang` (`id`, `id_lang`, `id_record`, `name`) SELECT NULL, (SELECT `id` FROM `zz_langs` WHERE `iso_code` = 'it'), `id`, `descrizione` FROM `co_pagamenti`; + +ALTER TABLE `co_pagamenti` + DROP `descrizione`; + +ALTER TABLE `co_pagamenti_lang` ADD CONSTRAINT `co_pagamenti_lang_ibfk_1` FOREIGN KEY (`id_record`) REFERENCES `co_pagamenti`(`id`) ON DELETE CASCADE ON UPDATE RESTRICT; + +-- Allineamento vista Pagamenti +UPDATE `zz_modules` SET `options` = " +SELECT + |select| +FROM + `co_pagamenti` + LEFT JOIN (SELECT `fe_modalita_pagamento`.`codice`, CONCAT(`fe_modalita_pagamento`.`codice`, ' - ', `fe_modalita_pagamento`.`descrizione`) AS tipo FROM `fe_modalita_pagamento`) AS pagamenti ON `pagamenti`.`codice` = `co_pagamenti`.`codice_modalita_pagamento_fe` + LEFT JOIN `co_pagamenti_lang` ON (`co_pagamenti`.`id` = `co_pagamenti_lang`.`id_record` AND |lang|) +WHERE + 1=1 +GROUP BY + `co_pagamenti`.`id` +HAVING + 2=2" WHERE `name` = 'Pagamenti'; +UPDATE `zz_views` INNER JOIN `zz_modules` ON `zz_views`.`id_module` = `zz_modules`.`id` SET `zz_views`.`query` = '`co_pagamenti_lang`.`name`' WHERE `zz_modules`.`name` = 'Pagamenti' AND `zz_views`.`name` = 'descrizione'; +UPDATE `zz_views` INNER JOIN `zz_modules` ON `zz_views`.`id_module` = `zz_modules`.`id` SET `zz_views`.`query` = 'COUNT(`co_pagamenti_lang`.`name`)' WHERE `zz_modules`.`name` = 'Pagamenti' AND `zz_views`.`name` = 'Rate'; +UPDATE `zz_views` INNER JOIN `zz_modules` ON `zz_views`.`id_module` = `zz_modules`.`id` SET `zz_views`.`query` = '`co_pagamenti_lang`.`id`' WHERE `zz_modules`.`name` = 'Pagamenti' AND `zz_views`.`name` = 'id'; + +-- Allineamento vista Fatture di vendita +UPDATE `zz_modules` SET `options` = " +SELECT + |select| +FROM + `co_documenti` + LEFT JOIN (SELECT SUM(`totale`) AS `totale`, `iddocumento` FROM `co_movimenti` WHERE `totale` > 0 AND `primanota` = 1 GROUP BY `iddocumento`) AS `primanota` ON `primanota`.`iddocumento` = `co_documenti`.`id` + LEFT JOIN `an_anagrafiche` ON `co_documenti`.`idanagrafica` = `an_anagrafiche`.`idanagrafica` + LEFT JOIN `co_tipidocumento` ON `co_documenti`.`idtipodocumento` = `co_tipidocumento`.`id` + LEFT JOIN (SELECT `iddocumento`, SUM(`subtotale` - `sconto`) AS `totale_imponibile`, SUM((`subtotale` - `sconto` + `rivalsainps`) * `co_iva`.`percentuale` / 100) AS `iva` FROM `co_righe_documenti` LEFT JOIN `co_iva` ON `co_iva`.`id` = `co_righe_documenti`.`idiva` GROUP BY `iddocumento`) AS `righe` ON `co_documenti`.`id` = `righe`.`iddocumento` + LEFT JOIN (SELECT `co_banche`.`id`, CONCAT(`co_banche`.`nome`, ' - ', `co_banche`.`iban`) AS `descrizione` FROM `co_banche` GROUP BY `co_banche`.`id`) AS `banche` ON `banche`.`id` =`co_documenti`.`id_banca_azienda` + LEFT JOIN `co_statidocumento` ON `co_documenti`.`idstatodocumento` = `co_statidocumento`.`id` + LEFT JOIN `fe_stati_documento` ON `co_documenti`.`codice_stato_fe` = `fe_stati_documento`.`codice` + LEFT JOIN `co_ritenuta_contributi` ON `co_documenti`.`id_ritenuta_contributi` = `co_ritenuta_contributi`.`id` + LEFT JOIN (SELECT COUNT(id) as `emails`, `em_emails`.`id_record` FROM `em_emails` INNER JOIN `zz_operations` ON `zz_operations`.`id_email` = `em_emails`.`id` WHERE `id_module` IN(SELECT `id` FROM `zz_modules` WHERE name = 'Fatture di vendita') AND `zz_operations`.`op` = 'send-email' GROUP BY `em_emails`.`id_record`) AS `email` ON `email`.`id_record` = `co_documenti`.`id` + LEFT JOIN `co_pagamenti` ON `co_documenti`.`idpagamento` = `co_pagamenti`.`id` + LEFT JOIN `co_pagamenti_lang` ON (`co_pagamenti`.`id` = `co_pagamenti_lang`.`id_record` AND |lang|) + LEFT JOIN (SELECT `numero_esterno`, `id_segment`, `idtipodocumento`, `data` FROM `co_documenti` WHERE `co_documenti`.`idtipodocumento` IN( SELECT `id` FROM `co_tipidocumento` WHERE `dir` = 'entrata') AND `numero_esterno` != '' GROUP BY `id_segment`, `numero_esterno`, `idtipodocumento` HAVING COUNT(`numero_esterno`) > 1 |date_period(`co_documenti`.`data`)| ) dup ON `co_documenti`.`numero_esterno` = `dup`.`numero_esterno` AND `dup`.`id_segment` = `co_documenti`.`id_segment` AND `dup`.`idtipodocumento` = `co_documenti`.`idtipodocumento` +WHERE + 1=1 AND `dir` = 'entrata' |segment(`co_documenti`.`id_segment`)| |date_period(`co_documenti`.`data`)| +HAVING + 2=2 +ORDER BY + `co_documenti`.`data` DESC, + CAST(`co_documenti`.`numero_esterno` AS UNSIGNED) DESC" WHERE `name` = 'Fatture di vendita'; +UPDATE `zz_views` INNER JOIN `zz_modules` ON `zz_views`.`id_module` = `zz_modules`.`id` SET `zz_views`.`query` = '`co_pagamenti_lang`.`name`' WHERE `zz_modules`.`name` = 'Fatture di vendita' AND `zz_views`.`name` = 'Pagamento'; + +-- Allineamento vista Anagrafiche +UPDATE `zz_modules` SET `options` = " +SELECT + |select| +FROM + `an_anagrafiche` + LEFT JOIN `an_relazioni` ON `an_anagrafiche`.`idrelazione` = `an_relazioni`.`id` + LEFT JOIN `an_relazioni_lang` ON (`an_relazioni`.`id` = `an_relazioni_lang`.`id_record` AND `an_relazioni_lang`.|lang|) + LEFT JOIN `an_tipianagrafiche_anagrafiche` ON `an_tipianagrafiche_anagrafiche`.`idanagrafica` = `an_anagrafiche`.`idanagrafica` + LEFT JOIN `an_tipianagrafiche` ON `an_tipianagrafiche`.`id` = `an_tipianagrafiche_anagrafiche`.`idtipoanagrafica` + LEFT JOIN `an_tipianagrafiche_lang` ON (`an_tipianagrafiche`.`id` = `an_tipianagrafiche_lang`.`id_record` AND `an_tipianagrafiche_lang`.|lang|) + LEFT JOIN (SELECT `idanagrafica`, GROUP_CONCAT(`nomesede` SEPARATOR ', ') AS nomi FROM `an_sedi` GROUP BY `idanagrafica`) AS sedi ON `an_anagrafiche`.`idanagrafica`= `sedi`.`idanagrafica` + LEFT JOIN (SELECT `idanagrafica`, GROUP_CONCAT(`nome` SEPARATOR ', ') AS nomi FROM `an_referenti` GROUP BY `idanagrafica`) AS referenti ON `an_anagrafiche`.`idanagrafica` =`referenti`.`idanagrafica` + LEFT JOIN (SELECT `co_pagamenti_lang`.`name`AS nome, `co_pagamenti`.`id` FROM `co_pagamenti` LEFT JOIN `co_pagamenti_lang` ON (`co_pagamenti`.`id` = `co_pagamenti_lang`.`id_record` AND `co_pagamenti_lang`.|lang|))AS pagvendita ON IF(`an_anagrafiche`.`idpagamento_vendite`>0,`an_anagrafiche`.`idpagamento_vendite`= `pagvendita`.`id`,'') + LEFT JOIN (SELECT `co_pagamenti_lang`.`name`AS nome, `co_pagamenti`.`id` FROM `co_pagamenti` LEFT JOIN `co_pagamenti_lang` ON (`co_pagamenti`.`id` = `co_pagamenti_lang`.`id_record` AND `co_pagamenti_lang`.|lang|))AS pagacquisto ON IF(`an_anagrafiche`.`idpagamento_acquisti`>0,`an_anagrafiche`.`idpagamento_acquisti`= `pagacquisto`.`id`,'') +WHERE + 1=1 AND `an_anagrafiche`.`deleted_at` IS NULL +GROUP BY + `an_anagrafiche`.`idanagrafica`, `pagvendita`.`nome`, `pagacquisto`.`nome` +HAVING + 2=2 +ORDER BY + TRIM(`ragione_sociale`)" WHERE `name` = 'Anagrafiche'; + +-- Allineamento vista Fatture di acquisto +UPDATE `zz_modules` SET `options` = " +SELECT + |select| +FROM + `co_documenti` + LEFT JOIN `an_anagrafiche` ON `co_documenti`.`idanagrafica` = `an_anagrafiche`.`idanagrafica` + LEFT JOIN `co_tipidocumento` ON `co_documenti`.`idtipodocumento` = `co_tipidocumento`.`id` + LEFT JOIN `co_statidocumento` ON `co_documenti`.`idstatodocumento` = `co_statidocumento`.`id` + LEFT JOIN `co_ritenuta_contributi` ON `co_documenti`.`id_ritenuta_contributi` = `co_ritenuta_contributi`.`id` + LEFT JOIN `co_pagamenti` ON `co_documenti`.`idpagamento` = `co_pagamenti`.`id` + LEFT JOIN `co_pagamenti_lang` ON (`co_pagamenti`.`id` = `co_pagamenti_lang`.`id_record` AND `co_pagamenti_lang`.|lang|) + LEFT JOIN (SELECT `co_banche`.`id`, CONCAT(`nome`, ' - ', `iban`) AS `descrizione` FROM `co_banche`) AS `banche` ON `banche`.`id` = `co_documenti`.`id_banca_azienda` + LEFT JOIN (SELECT `iddocumento`, GROUP_CONCAT(`co_pianodeiconti3`.`descrizione`) AS `descrizione` FROM `co_righe_documenti` INNER JOIN `co_pianodeiconti3` ON `co_pianodeiconti3`.`id` = `co_righe_documenti`.`idconto` GROUP BY iddocumento) AS `conti` ON `conti`.`iddocumento` = `co_documenti`.`id` + LEFT JOIN (SELECT `iddocumento`, SUM(`subtotale` - `sconto`) AS `totale_imponibile`, SUM(`iva`) AS `iva` FROM `co_righe_documenti` GROUP BY `iddocumento`) AS `righe` ON `co_documenti`.`id` = `righe`.`iddocumento` + LEFT JOIN (SELECT COUNT(`d`.`id`) AS `conteggio`, IF(`d`.`numero_esterno` = '', `d`.`numero`, `d`.`numero_esterno`) AS `numero_documento`, `d`.`idanagrafica` AS `anagrafica`, `d`.`id_segment` FROM `co_documenti` AS `d` + LEFT JOIN `co_tipidocumento` AS `d_tipo` ON `d`.`idtipodocumento` = `d_tipo`.`id` WHERE 1=1 AND `d_tipo`.`dir` = 'uscita' AND('|period_start|' <= `d`.`data` AND '|period_end|' >= `d`.`data` OR '|period_start|' <= `d`.`data_competenza` AND '|period_end|' >= `d`.`data_competenza`) GROUP BY `d`.`id_segment`, `numero_documento`, `d`.`idanagrafica`) AS `d` ON (`d`.`numero_documento` = IF(`co_documenti`.`numero_esterno` = '',`co_documenti`.`numero`,`co_documenti`.`numero_esterno`) AND `d`.`anagrafica` = `co_documenti`.`idanagrafica` AND `d`.`id_segment` = `co_documenti`.`id_segment`) +WHERE + 1=1 +AND + `dir` = 'uscita' |segment(`co_documenti`.`id_segment`)| |date_period(custom, '|period_start|' <= `co_documenti`.`data` AND '|period_end|' >= `co_documenti`.`data`, '|period_start|' <= `co_documenti`.`data_competenza` AND '|period_end|' >= `co_documenti`.`data_competenza` )| +GROUP BY + `co_documenti`.`id`, `d`.`conteggio` +HAVING + 2=2 +ORDER BY + `co_documenti`.`data` DESC, + CAST(IF(`co_documenti`.`numero` = '', `co_documenti`.`numero_esterno`, `co_documenti`.`numero`) AS UNSIGNED) DESC" WHERE `name` = 'Fatture di acquisto'; +UPDATE `zz_views` INNER JOIN `zz_modules` ON `zz_views`.`id_module` = `zz_modules`.`id` SET `zz_views`.`query` = 'CONCAT(`co_pagamenti`.`codice_modalita_pagamento_fe`, " - ", `co_pagamenti_lang`.`name`)' WHERE `zz_modules`.`name` = 'Fatture di acquisto' AND `zz_views`.`name` = 'Pagamento'; + +-- Allineamento vista Scadenzario +UPDATE `zz_modules` SET `options` = " +SELECT + |select| +FROM + `co_scadenziario` + LEFT JOIN `co_documenti` ON `co_scadenziario`.`iddocumento` = `co_documenti`.`id` + LEFT JOIN `co_banche` ON `co_banche`.`id` = `co_documenti`.`id_banca_azienda` + LEFT JOIN `an_anagrafiche` ON `co_scadenziario`.`idanagrafica` = `an_anagrafiche`.`idanagrafica` + LEFT JOIN `co_pagamenti` ON `co_documenti`.`idpagamento` = `co_pagamenti`.`id` + LEFT JOIN `co_pagamenti_lang` ON (`co_pagamenti_lang`.`id_record` = `co_pagamenti`.`id` AND `co_pagamenti_lang`.|lang|) + LEFT JOIN `co_tipidocumento` ON `co_documenti`.`idtipodocumento` = `co_tipidocumento`.`id` + LEFT JOIN `co_statidocumento` ON `co_documenti`.`idstatodocumento` = `co_statidocumento`.`id` + LEFT JOIN (SELECT COUNT(id_email) as emails, zz_operations.id_record FROM zz_operations WHERE id_module IN(SELECT id FROM zz_modules WHERE name = 'Scadenzario') AND `zz_operations`.`op` = 'send-email' GROUP BY zz_operations.id_record) AS `email` ON `email`.`id_record` = `co_scadenziario`.`id` +WHERE + 1=1 AND (`co_statidocumento`.`descrizione` IS NULL OR `co_statidocumento`.`descrizione` IN('Emessa','Parzialmente pagato','Pagato')) +HAVING + 2=2 +ORDER BY + `scadenza` ASC" WHERE `name` = 'Scadenzario'; +UPDATE `zz_views` INNER JOIN `zz_modules` ON `zz_views`.`id_module` = `zz_modules`.`id` SET `zz_views`.`query` = '`co_pagamenti_lang`.`name`' WHERE `zz_modules`.`name` = 'Scadenzario' AND `zz_views`.`name` = 'Tipo di pagamento'; + -- Fix per file sql di update aggiornato dopo rilascio 2.4.35 UPDATE `zz_modules` SET `icon` = 'fa fa-exchange' WHERE `zz_modules`.`name` = 'Causali movimenti'; \ No newline at end of file diff --git a/update/tables.php b/update/tables.php index 0e98655de..ab9d67155 100755 --- a/update/tables.php +++ b/update/tables.php @@ -33,6 +33,7 @@ return [ 'co_movimenti_modelli', 'co_fatturazione_contratti', 'co_pagamenti', + 'co_pagamenti_lang', 'co_pianodeiconti1', 'co_pianodeiconti2', 'co_pianodeiconti3',